D O O M (version 4) by Dan Edited by Bs0Dd (2023) - [mk.bs0dd.net] Play ONLY IN HIGH SPEED MODE (on with the "+" button) THE VAC COMMAND IS PROHIBITED WITH A PROGRAM ENTERED. Controls: DEL - EXIT 5 - FIRE 8 - FORWARD 2 - BACKWARD 4 - TURN LEFT 6 - TURN RIGHT We need to find a way out (skull on the wall) and kill all the flying heads New game - P1 Continue - P0 Type DEFM 27 Enter registers (CAREFULLY, DO NOT CONFUSE 0 AND O) Z$(7)="000V" Z$(8)="0006E" Z$(9)="00VEE" Z$(10)="0LEL" Z$(11)="0LAL" Z$(12)="03O3O3" Z$(13)="006EPV" Z$(14)="0ERLHE" Z$(15)="0LEVEL" Z$(16)="0LALAL" Z$(17)="0O3O3O" Z$(18)="0FG3P34" Z$(19)="0R0VLHE" Z$(20)="EHHRLAE" Z$(21)="3O3O3O3" Z$(22)="O3O3O3O" Z$(23)="OO33OO3" Z$(24)="0C8F8IK" Z$(25)="1ITD521" Z$(26)="0G973A5" Z$(27)="G9NMK8G" To speed up input, you can use an auxiliary program: 10 DEFM 27:FOR I=7 TO 27:PRINT "Z";I;:INPUT Z$(I):NEXT I After entering the data, the program must be erased (if MK-85 without M) otherwise the game will not fit into memory (occupies 1216 out of 1221). When typing the listing of the program, abbreviations were used (due to their absence on the standard keyboard of the computer) <= in MK85 this is one character >= in MK85 this is one character != not equal (one character) | solid black square (like the cursor that appears when a line overflows) Lines marked !!! you must enter without spaces between operators, otherwise they won? fit. The underlined characters in the lines are explained below File ?0 3 M=SIN O:N=COS O 4 CSR 7:PRINT CHR 1; ----- !!! 5 I=N*3:J=M*3:F=K+I-J:G=L+J+I:FOR H=0 TO 4:GOSUB 95:A(H)=P:NEXT H !!! 6 I=I-N:J=J-M:F=K+I-J:G=L+J+I:FOR H=0 TO 2:GOSUB 95:IF P!=0;A(H*2)=P+5 7 NEXT H:IF A>=8;B=10 8 IF E>=8;D=5 9 IF C>=8;B=C:D=C 10 F=K+N-J:G=L+M+I:FOR H=0 TO 2:GOSUB 95:IF P!=0;A(H*2)=P+10 11 NEXT H:IF A>=13;A=15 12 IF E=13;E=14 13 IF A>=11;IF A<=12;A=8+A 14 IF E>=11;IF E<=12;E=6+E 16 IF C=14;C=16 17 IF C>=13;A=C:B=16:D=B:E=C 19 IF C>=11;IF C<=12;B=6+C:D=8+C !!! 20 CSR 0:PRINT "|";:FOR H=0 TO 4:LETC Z$(7+A(H)):PRINT CHR 96;:NEXT H 22 PRINT "|";INT Q;"%";:$=KEY:IF $="6";O=O-90:GOTO 3 24 IF $="4";O=O+90:GOTO 3 26 IF $="8";IF C<=11;K=K+N:L=L+M:GOTO 4 27 IF $="2";F=K-N:G=L-M:GOSUB 96:IF P<=2;K=F:L=G:GOTO 4 30 IF $!="5" THEN 40:IF C=13 THEN #1:CSR 2:PRINT"|||"; 32 IF FRAC ((C+3)/5)!=0 THEN 20:T=T-1 !!! 34 IF T<=0;$=U$(R):U$(R)=MID(1,S-1)+"1"+MID(S+1,7-S):GOTO 50 !!! 40 IF T<=0 THEN 50:IF ABS(R-K)<=1;IF ABS(S-L)<=1;Q=Q-1:IF Q<=0;END 43 IF $=CHR 8;END !!! 45 IF RAN# <= .8 THEN 20:F=R+SGN(K-R):G=S+SGN(L-S):GOSUB 96 -- 46 IF K=F;IF L=G THEN 20 48 IF P<=2;R=F:S=G:GOTO 5 49 GOTO 20 50 F=INT(RAN# *9):G=INT(RAN# *7)+1:GOSUB 96:IF P>=3 THEN 50 52 T=2:R=F:S=G:GOTO 5 - 95 F=F+M:G=G-N 96 IF F<=11;IF F>=0;IF G>=1;IF G<=7 THEN 98 97 P=4:RETURN 98 IF R=F;IF S=G;P=2:RETURN 99 P=VAL GETC(U$(F),G):RETURN File P1 3 DEFM 6:VAC:DEFM 27:U$="0000000":FOR F=1 TO 11:$="" !!! 5 FOR G=1 TO 7:P=INT(RAN# *5):CSR 3:PRINT CHR G;:IF P<=2;P=0 !!! 7 $=$+CHR(P+48):U$(F)=$:NEXT G:NEXT F:Q=99:L=1:N=1:GOTO#0,50 File P1 is a creator of RND levels, it can be different, or you can create them yourself: Level format : this is a 7 by 12 room surrounded by a wall 0 1 2 3 4 5 6 7 8 9 10 11 _________________________ 7 6 5 4 3 2 1 _________________________ U$(0) ... U$(11) That is, the level is set by variables U$(0)..U$(11) where 0 - empty 1 - enemy 2 - ---- 3 - exit 4 - wall Now the underlined characters in the program are: line 4 - symbol indicating movement line 45 - head speed (lower value - higher speed) from 0 to 1 line 52 - number of shots to kill a head