10 CLEAR 20 SW=11:SH=3 30 DIM EX(3),EY(3),EC$(3):EM=4 40 DIM ET$(1):ET=2 50 DIM MX(3),MY(3):MM=4 60 SC$=">":TC$="+":FC$=":":MC$="." 70 ET$(0)=CHR$(&HED):ET$(1)=CHR$(&H84) 80 GOSUB630 90 SN=3:SC=0 100 GOSUB1070 110 CLS:GOSUB750:CL=0 120 X=0:Y=2:GOSUB270:FX=0:SF=0 130 EC=0:MC=0 140 FORI=0TOEM-1:EX(I)=0:NEXT 150 FORI=0TOMM-1:MX(I)=0:NEXT 160 CL=CL+1 170 GOSUB300 180 GOSUB370 190 GOSUB460 200 GOSUB570 210 IF SF=0 GOTO160 220 SN=SN-1:IF SN GOTO110 230 GOSUB990 240 GOTO80 250 IF X=SX AND Y=SY THEN RETURN 260 LOCATESX,SY:PRINT" "; 270 SX=X:SY=Y 280 LOCATESX,SY:PRINT SC$;" ";TC$; 290 RETURN 300 K$=INKEY$ 310 IF K$="2" AND SY>0 THEN X=SX:Y=SY-1:GOSUB250:RETURN 320 IF K$="." AND SY<3 THEN X=SX:Y=SY+1:GOSUB250:RETURN 330 IF K$="E" AND SX0 THEN X=SX-1:Y=SY:GOSUB250:RETURN 350 IF K$="Z" AND FX=0 THEN FX=SX+1:FY=SY:GOSUB440:RETURN 360 RETURN 370 IF FX=0 THEN RETURN 380 IF FX<>SX+2 THEN LOCATE FX,FY:PRINT" "; 390 IF FX=SW THEN FX=0:RETURN 400 FX=FX+1 410 I=EM:FORJ=0TOEM-1:IF FX=EX(J) AND FY=EY(J) THEN I=J:J=EM 420 NEXT 430 IF I<>EM THEN GOSUB860:RETURN 440 IF FX<>SX+2 THEN LOCATE FX,FY:PRINT FC$; 450 RETURN 460 X=EX(EC):Y=EY(EC):IF X GOTO490 470 IF RAN#>.2 GOTO520 480 X=SW:Y=FIX(RAN#*4):EC$(EC)=ET$(FIX(RAN#*ET)):GOSUB540 490 IF X=SX AND Y=SY THEN GOSUB840:RETURN 500 IF X=FX AND Y=FY THEN I=EC:GOSUB860:GOTO520 510 X=X-1:Y=ABS(Y+(FIX(RAN#*3)-1)) MOD 4:GOSUB530 520 EC=(EC+1)MOD EM:RETURN 530 LOCATE EX(EC),EY(EC):PRINT" "; 540 EX(EC)=X:EY(EC)=Y 550 IF X THEN LOCATE X,Y:PRINT EC$(EC); 560 RETURN 570 X=MX(MC):Y=MY(MC):IF X GOTO600 580 IF EX(EC)<2 OR RAN#>.3 GOTO620 590 X=EX(EC):Y=EY(EC):GOSUB810 600 IF X=SX AND Y=SY THEN GOSUB840:RETURN 610 X=X-1:GOSUB800 620 MC=(MC+1)MOD MM:RETURN 630 CLS 640 PRINT"2:Up" 650 PRINT".:Down" 660 PRINT"E:Right" 670 PRINT"0:Left"; 680 LOCATE10,0:PRINT"Z:Fire"; 690 LOCATE10,1:PRINT"CLS:Clear high score"; 700 LOCATE10,3:PRINT"Push [EXE]"; 710 K$=INKEY$ 720 IF K$=CHR$(12) THEN HS=0:GOSUB1040:GOTO630 730 IF K$<>CHR$(13) GOTO710 740 RETURN 750 X=SW+2 760 LOCATEX,0:PRINT USING "SC:####";SC; 770 LOCATEX,1:PRINT USING "HS:####";HS; 780 LOCATEX,2:PRINT USING "SHIP:##";SN; 790 RETURN 800 LOCATE MX(MC),MY(MC):PRINT" "; 810 MX(MC)=X:MY(MC)=Y 820 IF X THEN LOCATE X,Y:PRINT MC$; 830 RETURN 840 X=SX:Y=SY:GOSUB910 850 SF=1:RETURN 860 X=EX(I):Y=EY(I):GOSUB910 870 EX(I)=0:FX=0 880 SC=SC+1:IF SC>HS THEN HS=SC:GOSUB1040 890 GOSUB750 900 RETURN 910 FORJ=0TO5 920 LOCATE X,Y:PRINT"+"; 930 FORK=0TO10:NEXT 940 LOCATE X,Y:PRINT CHR$(&HF0); 950 FORK=0TO10:NEXT 960 NEXT 970 LOCATE X,Y:PRINT" "; 980 RETURN 990 X=SW+2 1000 LOCATEX,2:PRINT"GAME OVER"; 1010 LOCATEX,3:PRINT"Push [EXE]"; 1020 IF INKEY$<>CHR$(13) GOTO1020 1030 RETURN 1040 POKE &H19CC,HS MOD 256 1050 POKE &H19CD,HS\256 1060 RETURN 1070 HS=PEEK(&H19CC)+PEEK(&H19CD)*256 1080 RETURN