10 CLEAR 20 DS=1:DW=7:DE=DS+DW 30 DIM U(3),D(3),FX(9),FY(9):FM=9 40 SC$=CHR$(&HEE):MC$=".":UR$=CHR$(&HE0):UL$=CHR$(&HE1):FC$="*" 50 GOSUB500:GOSUB1090 60 SC=0:SN=3:CL=0:LV=.3 70 GOSUB470 80 SX=DS+DW\2:GOSUB340:MY=0 90 FORI=1TO3:U(I)=0:NEXT 100 FORI=0TOFM:FX(I)=0:FY(I)=0:NEXT 110 UC=1:FC=0:FF=0 120 CL=CL+1 130 GOSUB260 140 GOSUB410 150 GOSUB660 160 GOSUB910 170 IF FF>0 GOTO200 180 UC=UC MOD 3+1 190 GOTO120 200 SN=SN-1:IF SN>0 GOTO70 210 X=DE+3 220 LOCATE X,2:PRINT"Game over"; 230 LOCATE X,3:PRINT"Push [EXE]"; 240 IF INKEY$<>CHR$(13) GOTO240 250 GOTO50 260 K$=INKEY$ 270 IF K$="0" AND SX>DS THEN X=SX-1:GOSUB310:RETURN 280 IF K$="." AND SXCHR$(13) GOTO570 600 RETURN 610 X=DE+3 620 LOCATE X,0:PRINT USING "SC:####";SC; 630 LOCATE X,1:PRINT USING "HS:####";HS; 640 LOCATE X,2:PRINT USING "SHIP:##";SN; 650 RETURN 660 IF U(UC)>0 GOTO700 670 IF RAN#>.3 GOTO760 680 IF RAN#<.5 THEN U(UC)=DS:D(UC)=1 ELSE U(UC)=DE:D(UC)=-1 690 GOTO750 700 LOCATE U(UC),UC:PRINT" "; 710 IF D(UC)>0 GOTO730 720 U(UC)=U(UC)-1:IF U(UC)DE THEN 740 ELSE 750 740 U(UC)=0:GOTO760 750 LOCATE U(UC),UC:IF D(UC)<0 THEN PRINT UL$; ELSE PRINT UR$; 760 RETURN 770 X=MX:Y=MY:GOSUB830 780 SC=SC+MY:IF SC>HS THEN HS=SC:GOSUB1060 790 IF LV<.9 THEN LV=LV+MY/100 800 U(MY)=0:MY=0 810 GOSUB610 820 RETURN 830 FORI=1TO3 840 LOCATE X,Y:PRINT"+"; 850 FORJ=1TO10:NEXT 860 LOCATE X,Y:PRINT CHR$(&HF0); 870 FORJ=1TO10:NEXT 880 NEXT 890 LOCATE X,Y:PRINT" "; 900 RETURN 910 IF FX(FC)>0 GOTO950 920 IF U(UC)=0 GOTO1020 930 IF RAN#>LV GOTO1020 940 FX(FC)=U(UC):FY(FC)=UC:GOTO970 950 LOCATE FX(FC),FY(FC):PRINT" "; 960 FY(FC)=FY(FC)-1 970 LOCATE FX(FC),FY(FC):PRINT FC$; 980 IF FY(FC)>0 GOTO1020 990 LOCATE FX(FC),FY(FC):PRINT" "; 1000 IF SX=FX(FC) THEN GOSUB1030:RETURN 1010 FX(FC)=0 1020 FC=(FC+1) MOD FM:RETURN 1030 X=SX:Y=0:GOSUB830 1040 FF=1 1050 RETURN 1060 POKE &H19CE,HS MOD &HFF 1070 POKE &H19CF,HS\256 1080 RETURN 1090 HS=PEEK(&H19CE)+PEEK(&H19CF)*256:RETURN