10 GOSUB 300:HI=100
20 GOSUB 240:LOCATE#1,1,2:PRINT#1,"DAMAGE:":ENV 1,15,1,3,15,-1,2:ENV 2,5,1,1,15,-1,15:LEVEL=5:DA=0:SC=0:WINDOW #3,1,40,4,21
30 ORIGIN 0,0:X=312:Y=368:FUEL=100:TAG:POKE 33793,LEVEL:IY=4:GOSUB 290:CLS#3
40 CHR=239:XP=X:YP=Y:Y=Y-IY:IF INKEY(18)=0 THEN IF FUEL>0 THEN SOUND 129,0,30,7,0,0,3:FUEL=FUEL-1:Y=Y+4:MOVE 528+FUEL,399:DRAWR 0,-14,0:CHR=241 ELSE SOUND 130,100,0,0,1
50 IF Y<44 THEN 200
60 IF INKEY(8)=0 THEN X=X-2
70 IF INKEY(1)=0 THEN X=X+2
80 TAGOFF:PEN 3:CALL 33792:PEN 1:TAG:TL=TEST(X,Y):TR=TEST(X+16,Y):BL=TEST(X,Y-16):BR=TEST(X+16,Y-16):IF (TR OR BR OR TL OR BL)>1 THEN 140
90 MOVE XP,YP:PRINT" ";:PLOT -10,-10,1:MOVE X,Y:PRINT CHR$(CHR);
100 IF Y>368 THEN IF X<300 OR X>330 THEN 200 ELSE 120
110 GOTO 40
120 FOR O=1 TO 5:SOUND 1,12*O:NEXT:SC=SC+50
130 LEVEL=LEVEL-(LEVEL<26):MOVE X,Y:TAG:PRINT" ";:GOTO 30
140 MOVE XP,YP:IF BR=2 AND BL=2 THEN 160
150 PRINT CHR$(238);:DA=DA+1:IF DA=17 GOTO 200 ELSE LOCATE#1,1,3:PRINT#1,STRING$(DA,233):SOUND 129,800,0,0,1:GOTO 40
160 PRINT CHR$(241);:IF Y=60 THEN SC=SC+50 ELSE IF Y=64 THEN SC=SC+100 ELSE IF Y=76 THEN SC=SC+200
170 TAGOFF:LOCATE 13,19:PRINT"CONGRATULATIONS!"
180 SC=SC+FUEL:PRINT CHR$(23)CHR$(1):TAG:FOR T=0 TO X STEP 4:MOVE T,16:PRINT CHR$(248);:MOVE T,16:SOUND 1,0,1,7,1,0,15:FOR K=1 TO 5:NEXT:PRINT CHR$(248);:NEXT:TAGOFF:PRINT CHR$(23)CHR$(0);
190 LOCATE 13,10:PRINT SPACE$(20):IY=-2:Y=Y+4:GOTO 40
200 SOUND 135,1,0,0,2,0,14
210 FOR R=20 TO 160 STEP 20:FOR U=1 TO 360 STEP 60:MOVE X,Y:PLOTR R*COS(U),R*SIN(U),1:MOVE X,Y:PLOTR (R-20)*COS(U),(R-20)*SIN(U),0:NEXT:NEXT
220 T=TIME:WHILE TIME-T<300:A$=INKEY$:WEND:CLS#3:PRINT#3,TAB(13)CHR$(24)"ASTEROID LANDER"CHR$(24):LOCATE#3,5,5:IF SC>HI THEN HI=SC
230 PRINT#3,"SCORE"SC;TAB(23)"HI-SCORE"HI:LOCATE#3,10,15:PRINT#3, "PRESS A KEY TO PLAY":WHILE INKEY$="":WEND:SOUND 7,30:GOTO 20
240 MODE 1:BORDER 13:INK 0,0:INK 1,24:INK 2,12
250 DEG:ORIGIN 320,366:FOR T=270 TO 450 STEP 10:MOVE 30+30*COS(T),15*SIN(T):DRAW 30,15*SIN(T),1:MOVE -30-30*COS(T),15*SIN(T):DRAW -30,15*SIN(T):NEXT:ORIGIN 0,0:MOVE 290,382:DRAW 350,382
260 ORIGIN 0,16:RESTORE 270:FOR Z=1 TO 3:READ A,B,C:FOR T=A-4 TO A+2:MOVE T,-16:DRAW T,B,2:NEXT:FOR T=B-4 TO B:MOVE A-C-2,T:DRAW A+C,T:NEXT:NEXT
270 DATA 96,46,8,320,30,12,512,34,14
280 FOR T=1 TO 640 STEP 2:MOVE T,-16:DRAW T,10*COS(PI*T*3)*SIN(2*T),1:DRAWR 0,8, 3:NEXT:RETURN
290 PEN 1:LOCATE#1,1,1:PRINT#1,STRING$(LEVEL-5,248):LOCATE#1,29,1:PRINT#1,"FUEL:"STRING$(6,233):LOCATE#1,29,2:PRINT#1,"SCORE";SC:RETURN
300 RANDOMIZE TIME:RESTORE 300
310 MEMORY 32767
320 FOR ROCK=0 TO 28:S=32768+ROCK*5:POKE S,240:POKE S+1,INT(RND*39)+1:POKE S+2,(RND*16)+5
330 POKE S+3,1:IF RND>0.5 THEN POKE S+3,255
340 POKE S+4,0:NEXT
350 FOR T=33536 TO 33553:READ A:POKE T,A:NEXT
360 FOR T=33280 TO 33326:READ A:POKE T,A:NEXT
370 FOR T=33792 TO 33809:READ A:POKE T,A:NEXT
380 SYMBOL 240,56,126,127,127,255,254,124,16:SYMBOL 241,8,20,119,85,119,28,62,107
390 RETURN
400 DATA &3E,31,&CD,&5A,&BB,&DD,&7E,1,&CD,&5A,&BB,&DD,&7E,2,&CD,&5A,&BB,&C9
410 DATA &DD,&7E,0,&FE,0,&20,1,&C9,&CD,0,131,&3E,32,&CD,&5A,&BB,&DD,&7E,1,&DD,&86,3,&FE,41,&20,2,&3E,1,&FE,0,&20,2,&3E,40,&DD,&77,1
420 DATA &CD,0,131,&DD,&7E,0,&CD,&5A,&BB,&C9
430 DATA &0E,28,&DD,&21,0,128,&CD,0,130,&11,5,0,&DD,&19,&D,&20,245,&C9