1 TRAP 3000:GOSUB 2000:GOTO 200›2 SAVE "D:MAZEDUEL.SAV":STOP ›5 X0=X0+SP:Y0=Y0+SP:RETURN ›6 Y0=Y0-SP:X0=X0+SP:RETURN ›7 X0=X0+SP:RETURN ›9 X0=X0-SP:Y0=Y0+SP:RETURN ›10 X0=X0-SP:Y0=Y0-SP:RETURN ›11 X0=X0-SP:RETURN ›13 Y0=Y0+SP:RETURN ›14 Y0=Y0-SP:RETURN ›15 RETURN :REM POP :PLAYER0$(Y0)=LEGS1$:POKE DV0,0:GOTO 210›16 X1=X1+SP:Y1=Y1+SP:RETURN ›17 Y1=Y1-SP:X1=X1+SP:RETURN ›18 X1=X1+SP:RETURN ›20 X1=X1-SP:Y1=Y1+SP:RETURN ›21 X1=X1-SP:Y1=Y1-SP:RETURN ›22 X1=X1-SP:RETURN ›24 Y1=Y1+SP:RETURN ›25 Y1=Y1-SP:RETURN ›26 RETURN :REM POP :PLAYER0$(Y0)=LEGS1$:POKE DV0,0:GOTO 210›29 REM MOVE LEGS OF PLAYER 0›35 PLAYER0$(Y0)=LEGS1$:RETURN ›36 PLAYER0$(Y0)=LEGS2$:RETURN ›37 PLAYER0$(Y0)=LEGS3$:Z=0:RETURN ›49 REM MOVE LEGS OF PLAYER 1›55 PLAYER1$(Y1)=LEGS1$:RETURN ›56 PLAYER1$(Y1)=LEGS2$:RETURN ›57 PLAYER1$(Y1)=LEGS3$:W=0:RETURN ›65 MX0=MX0+MS0:MY0=MY0+MS0:RETURN ›66 MY0=MY0-MS0:MX0=MX0+MS0:RETURN ›67 MX0=MX0+MS0:RETURN ›69 MX0=MX0-MS0:MY0=MY0+MS0:RETURN ›70 MX0=MX0-MS0:MY0=MY0-MS0:RETURN ›71 MX0=MX0-MS0:RETURN ›73 MY0=MY0+MS0:RETURN ›74 MY0=MY0-MS0:RETURN ›84 REM ADJUST MISSILE 1›85 MX1=MX1+MS0:MY1=MY1+MS0:RETURN ›86 MY1=MY1-MS0:MX1=MX1+MS0:RETURN ›87 MX1=MX1+MS0:RETURN ›89 MX1=MX1-MS0:MY1=MY1+MS0:RETURN ›90 MX1=MX1-MS0:MY1=MY1-MS0:RETURN ›91 MX1=MX1-MS0:RETURN ›93 MY1=MY1+MS0:RETURN ›94 MY1=MY1-MS0:RETURN ›98 REM COLLISIONS›99 REM PLAYER0 TO PLAYFIELD›100 RETURN ›101 S1=S1+1:GOSUB ZAP:PLAYER0$=BUFFER$:PLAYER0$(Y0)=LEGS1$:GOSUB 5500:RETURN ›102 S0=S0+5:GOTO 660:REM PLAYER0 HITS CRYSTAL!›103 S1=S1+1:GOSUB ZAP:PLAYER0$=BUFFER$:PLAYER0$(Y0)=LEGS1$:GOSUB 5500:RETURN ›104 RETURN ›105 RETURN ›106 RETURN ›107 S1=S1+1:GOSUB ZAP:PLAYER0$=BUFFER$:PLAYER0$(Y0)=LEGS1$:GOSUB 5500:RETURN ›108 REM PLAYER1 TO PLAYFIELD›109 RETURN ›110 S0=S0+1:GOSUB ZAP2:PLAYER1$=BUFFER$:PLAYER1$(Y1)=LEGS1$:GOSUB 5500:RETURN ›111 S1=S1+5:GOTO 660:REM PLAYER1 HITS CRYSTAL! ›112 S0=S0+1:GOSUB ZAP2:PLAYER1$=BUFFER$:PLAYER1$(Y1)=P1IMAGE1$:GOSUB 5500:RETURN ›113 RETURN ›114 RETURN ›115 RETURN ›116 S0=S0+1:GOSUB ZAP2:PLAYER1$=BUFFER$:PLAYER1$(Y1)=LEGS1$:GOSUB 5500:RETURN ›117 REM MISSILE 0 TO PLAYFIELD ›118 RETURN ›119 FIRE0=0:GOSUB OFF:MX0=0:RETURN ›120 FIRE0=0:GOSUB OFF:MX0=0:POKE HITCLR,0:S0=S0+1:GOTO 660:REM MISSILE HITS CRYSTAL! ›121 RETURN ›122 RETURN :GOSUB ZAP2:RETURN ›124 REM MISSILE 1 TO PLAYFIELD ›125 RETURN ›126 FIRE1=0:GOSUB OFF:MX1=0:RETURN ›127 FIRE0=0:GOSUB OFF:MX1=0:POKE HITCLR,0:S1=S1+1:GOTO 660:REM MISSILE HITS CRYSTAL! ›128 RETURN ›129 RETURN :GOSUB ZAP:RETURN ›130 REM MISSILE 1 TO PLAYER 0›131 RETURN ›132 GOSUB ZAP:S1=S1+1:FIRE1=0:MX1=0:GOSUB 5500:RETURN ›133 RETURN ›134 RETURN ›135 GOSUB 85:RETURN ›136 REM MISSILE 0 TO PLAYER 1›137 RETURN ›138 RETURN ›139 GOSUB 530:S0=S0+1:FIRE0=0:MX0=0:GOSUB 5500:RETURN :REM NO HITS PLAYER1›140 RETURN ›141 RETURN ›142 RETURN ›170 MISSILES$=BUFFER$:D0=0:D1=0:RETURN :REM ERASE MISSILE AND SOUND›199 REM MAIN LOOP›200 GOSUB PEEK(P0PF)+100:GOSUB PEEK(P1PF)+109:GOSUB PEEK(M0PF)+118:GOSUB PEEK(M1PF)+125›201 GOSUB PEEK(M1PL)+131:GOSUB PEEK(M0PL)+137›202 POKE HITCLR,1:Y1A=Y1:X1A=X1:X0A=X0:Y0A=Y0:REM CLEAR COLLISION REGISTER/SAVE PLAYER COORDINATES›203 GOSUB PEEK(J0):GOSUB PEEK(J1)+11:POKE HPOSP0,X0:POKE HPOSP1,X1:REM . ADJUST COORDINATES/POKE HOR. POSITIONS›204 IF PEEK(J0)<>15 THEN Z=Z+1:GOSUB 34+Z:GOTO 206:REM MOVE LEGS›205 PLAYER0$(Y0)=LEGS1$›206 IF PEEK(J1)<>15 THEN W=W+1:GOSUB 54+W:GOTO 210:REM MOVE LEGS›207 PLAYER1$(Y1)=LEGS1$›210 IF PEEK(RANDOM)>220 THEN IF X0>142 AND Y0<34 OR X1>142 AND Y1<34 THEN GOSUB 450›299 REM MISSILE MOVE ROUTINE›300 POKE SIZEM,PEEK(RANDOM):POKE SD0,P0:POKE DV0,D0:POKE SD1,P1:POKE DV1,D0›301 IF PEEK(BUTTON0)=0 AND PEEK(J0)<>15 THEN MOVE0=PEEK(J0):FIRE0=FIRE0+1›302 IF PEEK(BUTTON1)=0 AND PEEK(J1)<>15 THEN MOVE1=PEEK(J1):FIRE1=FIRE1+1›305 IF FIRE0=0 AND FIRE1=0 THEN 200›307 POKE HPOSM0,MX0:POKE HPOSM1,MX1›315 IF FIRE0=1 THEN MX0=X0+3:MY0=Y0+7:DIR0=MOVE0:FIRE0=FIRE0+1:D0=15:REM SET INITIAL POSITION OF MISSILES›317 IF FIRE1=1 THEN MX1=X1+3:MY1=Y1+7:DIR1=MOVE1:FIRE1=FIRE1+1:D0=15›320 IF FIRE0>1 THEN GOSUB DIR0+60›321 IF FIRE1>1 THEN GOSUB DIR1+80›330 D0=D0-2:IF D0<1 THEN D0=0›335 IF MY0=MY1 THEN 400›340 MISSILES$=BUFFER$:MISSILES$(MY0)=MIMAGE0$:MISSILES$(MY1)=MIMAGE1$›399 GOTO 200›400 MISSILES$=BUFFER$:MISSILES$(MY0)=BMISS$:GOTO 200:REM IMPORTANT: TURN ON BOTH MISSILES›450 FOR I=15 TO 1 STEP -1:VT=PEEK(RANDOM)/2.7:SOUND 3,I,4,15:COLOR 1:PLOT 132,16:DRAWTO 90,VT›455 PLOT 132,16:DRAWTO 159,VT›460 COLOR 0:PLOT 132,16:DRAWTO 90,VT:PLOT 132,16:DRAWTO 159,VT:NEXT I:SOUND 3,0,0,0:GOSUB 700:RETURN ›499 GOTO 200›500 GOSUB OFF:MX1=0:POKE M0PL,1:POKE M1PL,2:FIRE0=0›510 POKE DV0,0:POKE SD1,0:FOR I=2 TO 255 STEP 2:POKE 704,I:SOUND 0,I,14,14:NEXT I:POKE 704,KOLOR0›520 X0=50:Y0=78:POKE 53248,X0:PLAYER0$=BUFFER$:PLAYER0$(Y0)=LEGS1$:RETURN ›530 GOSUB OFF:MX0=0:POKE M1PL,1:POKE M0PL,2:FIRE1=0:FIRE0=0›540 POKE DV0,0:POKE SD1,0:FOR I=2 TO 254 STEP 2:POKE 705,I:SOUND 0,I,14,15:NEXT I:POKE 705,KOLOR1›550 X1=62:Y1=78:PLAYER1$=BUFFER$:PLAYER1$(Y1)=LEGS1$:POKE HPOSP1,X1›560 RETURN ›600 TRAP 610:FOR I=1 TO 128:? I;"= ";ASC(BMISS$(I)):NEXT I:STOP :REM GO HERE TO LOOK AT DATA IN PM MEMORY.›610 END ›660 FOR J=1 TO 20:FOR I=1 TO 5:SETCOLOR 4,J,J+1:SOUND 0,I*10-7,10,I*2:NEXT I:NEXT J:POKE M0PL,2:POKE M1PL,2›661 PLAYER1$=BUFFER$:PLAYER0$(Y0)=LEGS1$:X1=62:Y1=78:POKE 53249,X1:ROUND=ROUND+1›662 X0=50:Y0=78:GOSUB 5500:PLAYER0$=BUFFER$:PLAYER0$(Y0)=LEGS1$:POKE 53248,X0:SETCOLOR 4,HUE,LUM:RETURN ›700 REM CRYSTAL ›710 COLOR 2:PLOT 131,15:DRAWTO 137,15:PLOT 134,12:DRAWTO 134,18›720 PLOT 131,12:DRAWTO 137,18:PLOT 131,18:DRAWTO 137,12:COLOR 1›730 RETURN ›900 REM ›910 REM ›920 REM ›1900 PLAYER0$=BUFFER$:Y0=128:X0=80:X=0:GOTO 190›2000 GOSUB 10000:REM INITIALIZE CONSTANTS ›2005 GRAPHICS 7:REM GR. MODE BEFORE PMG›2007 GOSUB 12000:REM DRAW PLAYFIELD ›2010 GOSUB 11000:REM PGMSETUP›2030 GOSUB 13000:REM SCREEN POSITION›2040 GOSUB 5000:REM SELECT COLOR›2050 RETURN ›2080 IF MY1<1 OR MY1>128 THEN MY1=1:POKE 53253,0:FIRE1=0:SP=3:GOTO 2100›2085 IF MX1<0 OR MX1>150 THEN MX1=10:FIRE1=0:GOTO 2100›2087 IF MX0<0 OR MX0>150 THEN MX0=10:FIRE1=0:GOTO 2100›2090 IF MY0<1 OR MY0>128 THEN MY0=Y0:POKE 53252,0:FIRE0=0:GOTO 2100›2095 IF MY1<1 OR MY1>128 THEN MY1=Y1:POKE 53252,0:FIRE0=0:GOTO 2100›2099 ? "GOOF NO. ";PEEK(195);"SEE LINE NUMBER ";PEEK(186)+256*PEEK(187)›2100 D0=0:TRAP 2080:GOTO 200:REM PEEK(187)*256+PEEK(186) ›3000 IF X0>210 THEN X0=210:REM CORRECT PLAYER COORDINATES ›3010 IF X0<39 THEN X0=39›3020 IF Y0<1 THEN Y0=1›3030 IF Y0>128 THEN Y0=128›3040 MX0=0:MY0=Y0:MX1=0:MY1=Y1›3050 D0=0:D1=0:REM TURN OFF MISSILE SOUND ›3060 FIRE0=0:FIRE1=0:REM TURN OFF FIRE FLAG›3070 Z=0:REM RESET LEG MOVEMENT COUNTER ›3080 TRAP 3000:GOTO 210›4000 RETURN :POKE 20,0›4050 ? CHR$(125):? " ";11-Y:SOUND 0,Y+PEEK(20)+5,14,10:GOTO 4010›5000 ? "PRESS SELECT TO CHANGE SCREEN COLOR, OPTION TO CHANGE PLAYER COLOR, START TO START GAME"›5005 X0=50:X1=62:POKE HPOSP0,X0:POKE HPOSP1,X1›5015 IF PEEK(53279)=5 THEN GOSUB 5200›5020 IF PEEK(53279)=3 THEN GOSUB 5300›5025 IF PEEK(53279)=6 THEN SETK=SETK:RETURN ›5030 GOTO 5015›5199 REM CHANGE SCREEN COLORS›5200 LUM=LUM+1›5210 IF LUM>14 THEN LUM=0:HUE=HUE+1›5220 IF HUE>15 THEN HUE=0:LUM=0›5230 SETCOLOR 4,HUE,LUM›5299 REM CHANGE PLAYER COLOR ›5300 KOLOR0=KOLOR0+2:KOLOR1=KOLOR1+2:IF KOLOR0>254 THEN KOLOR0=0›5305 IF KOLOR1>254 THEN KOLOR1=0›5310 POKE 704,KOLOR0:POKE 705,KOLOR1:RETURN ›5500 ? CHR$(125):? " ROUND #";ROUND:? :? "PLAYER 1 = ";S0;" PLAYER 2 = ";S1:SOUND 0,255,14,15›5510 IF S0>9 THEN ? :? "PLAYER 1 WINS":GOTO 5540›5520 IF S1>9 THEN ? :? "PLAYER 2 WINS":GOTO 5540›5530 RETURN ›5540 POP :? :POKE 82,0:? "PRESS THE FIRE BUTTON FOR ANOTHER GAME";:SOUND 0,0,0,0:SOUND 1,0,0,0›5550 IF PEEK(BUTTON0)=0 THEN 5560›5552 IF PEEK(BUTTON1)=0 THEN 5560›5555 GOTO 5550›5560 POKE 82,2:RUN ›10000 KOLOR0=163:KOLOR1=83›10020 X0=52:Y0=78:SP=3:X1=67:Y1=78:MX0=0:MY0=61:MX1=0:MY1=71:M0PL=53256:SD0=53760:DV0=53761:SD1=53762:DV1=53763›10025 P0=50:P1=53›10030 REM POKE 53248,X0:PLAYER0$(Y0)=LEGS1$:POKE 53249,X1:PLAYER1$(Y1)=LEGS1$›10040 POKE 53252,0:POKE 53253,X1+3›10050 J0=632:J1=633:HPOSP0=53248:HPOSP1=53249:HPOSM0=53252:HPOSM1=53253:BUTTON0=644›10055 BUTTON1=645:MS0=8›10060 RANDOM=53770:SIZEM=53260›10100 HITCLR=53278:POKE 53278,1:P0PF=53252:P1PF=53253:M0PL=53256:M0PF=53248:M1PL=53257:M1PF=53249›10110 PRIOR=623:ROUND=1:DIM STRING$(128):ZAP=500:ZAP2=530:OFF=170›10200 POKE HITCLR,1:REM CLEARS COLLISION REGISTERS›10998 RETURN ›11000 DIM FILLER1$(1),FILLER2$((INT(ADR(FILLER1$)/1024)+1)*1024-ADR(FILLER1$)-1)›11010 DIM BUFFER$(384),MISSILES$(128),PLAYER0$(128),PLAYER1$(128),PLAYER2$(128),PLAYER3$(128)›11020 BUFFER$=CHR$(0)›11030 BUFFER$(384)=CHR$(0)›11040 BUFFER$(2)=BUFFER$›11045 MISSILES$=BUFFER$:PLAYER0$=BUFFER$:PLAYER1$=BUFFER$:PLAYER2$=BUFFER$:PLAYER3$=BUFFER$›11050 DIM LEGS1$(17),LEGS2$(17),LEGS3$(17)›11055 RESTORE 11300›11060 FOR I=1 TO 17:READ A:LEGS1$(I,I)=CHR$(A):NEXT I›11065 FOR I=1 TO 17:READ A:LEGS2$(I,I)=CHR$(A):NEXT I›11067 FOR I=1 TO 17:READ A:LEGS3$(I,I)=CHR$(A):NEXT I›11069 DIM MIMAGE0$(1):MIMAGE0$=CHR$(3)›11070 DIM MIMAGE1$(1):MIMAGE1$=CHR$(12)›11071 DIM BMISS$(1):BMISS$=CHR$(15):REM BOTH MISSILES "ON"›11072 POKE 704,KOLOR0:REM SET COLOR OF PLAYER0›11075 POKE 705,KOLOR1:REM COLOR PLAYER 1›11080 POKE 54279,ADR(BUFFER$)/256:REM SPECIFY START OF PM MEMORY›11085 POKE 559,46:REM DOUBLE LINE RES.›11090 POKE 53277,3:REM TURN ON PMG›11100 POKE 53260,5:REM WIDTH/MISSILES ›11110 POKE PRIOR,2:REM SETS PRIORITY REGISTER›11120 POKE HITCLR,1:REM CLEAR COLLISION REGISTERS›11290 RETURN ›11300 DATA 0,0,0,28,28,8,28,58,89,24,60,36,36,102,0,0,0›11310 DATA 0,0,0,28,28,8,28,58,89,24,40,76,68,68,0,0,0›11320 DATA 0,0,0,28,28,8,28,58,89,24,56,72,132,130,0,0,0›11330 DATA 0,0,0,120,56,16,56,116,176,48,50,60,64,192,0,0,0›11999 REM DRAW PLAYFIELD›12000 POKE 752,1:SETCOLOR 4,7,6›12005 ? " MAZEDUEL"›12010 COLOR 1:PLOT 0,0:DRAWTO 159,0:DRAWTO 159,79:DRAWTO 30,79›12015 COLOR 3:DRAWTO 0,79:DRAWTO 0,60:REM STARTING BOX›12017 COLOR 1:DRAWTO 0,0›12020 PLOT 80,61:DRAWTO 80,79›12025 COLOR 3:PLOT 1,60:DRAWTO 30,60:DRAWTO 30,78:COLOR 1:REM STARTING BOX›12030 PLOT 52,60:DRAWTO 52,45:DRAWTO 110,45:DRAWTO 110,60:DRAWTO 137,60:DRAWTO 137,45:DRAWTO 110,45:PLOT 159,32›12040 DRAWTO 110,32:PLOT 80,45:DRAWTO 80,20›12041 GOSUB 700:REM DRAW CRYSTAL›12050 PLOT 43,0:DRAWTO 43,30:PLOT 52,45:DRAWTO 22,45:DRAWTO 22,13:PLOT 108,0:DRAWTO 108,17:POKE 559,34:RETURN ›13000 X0=0:X1=0:REM HOR1Z.PLAYER POS. ›13010 Y0=78:REM VERTICAL PLAYER POS. ›13015 Y1=78›13020 POKE 704,KOLOR0:POKE 705,KOLOR1:REM INITIAL COLOR ›13025 POKE M0PL,0:POKE M1PL,0:REM SET WIDTH OF PLAYERS ›13030 POKE 53248,X0:POKE 53249,X1:REM SET HORIZONTAL POSITION OF PLAYERS ›13040 PLAYER0$(Y0)=LEGS1$:REM PUT DATA IN PM MEMORY›13045 PLAYER1$(Y1)=LEGS1$:REM PLAYER2›13050 RETURN ›