10 GOTO 9000
100 A=STICK(0)ORSTICK(1):IFY<12ANDR=1THEN2000
120 Q=VPEEK(6144+((Y+12)\8)*32+((X+8)\8)):IFQ=132ORQ=133THENGOSUB500
150 X=X+2*((X>2AND(A>5ANDA<9))-(X<232AND(A>1ANDA<5))):Y=Y+(R=0AND(A=1ORA=2ORA=8))-(R=1AND(A>3ANDA<7))+2*((R=1)-(R=0)):IFY>172THEN5100
180 FORI=6917TO6937STEP4:Q=VPEEK(I):Q=Q+C:IFQ>236THENQ=2:GOTO200
195 IFQ<2THENQ=236
200 VPOKEI,Q:NEXT
210 FORI=6941TO6953STEP4:Q=VPEEK(I):Q=Q-C:IFQ>236THENQ=2:GOTO230
225 IFQ<2THENQ=236
230 VPOKEI,Q:NEXT:VPOKE6912,Y:VPOKE6913,X:GOTO100
300 R=0:IF INT(RND(1)*10)<5 THEN D=2 ELSE D=-2
310 X=X+D
320 IF X=8 OR X=236 THEN D=-D
330 VPOKE6912,Y:VPOKE6913,X
340 FOR I=6917 TO 6937 STEP 4
350 Q=VPEEK(I):Q=Q+C
360 IF Q>236 THEN Q=2:GOTO 380
370 IF Q<2 THEN Q=236
380 VPOKE I,Q
390 NEXT
400 FOR I=6941 TO 6953 STEP 4
410 Q=VPEEK(I):Q=Q-C
420 IF Q>236 THEN Q=2:GOTO 440
430 IF Q<2 THEN Q=236
440 VPOKE I,Q
450 NEXT
460 A=STICK(0)ORSTICK(1):IF A>3 AND A<8 THEN RETURN
480 FOR I=1 TO 50:NEXT
490 GOTO 310
500 R=1:A=STICK(0)ORSTICK(1):IF A=1 OR A=2 OR A=8 THEN 640
510 FOR I=6917 TO 6937 STEP 4
520 Q=VPEEK(I):Q=Q+C
530 IF Q>236 THEN Q=2:GOTO 550
540 IF Q<2 THEN Q=236
550 VPOKE I,Q
560 NEXT
570 FOR I=6941 TO 6953 STEP 4
580 Q=VPEEK(I):Q=Q-C
590 IF Q>236 THEN Q=2:GOTO 610
600 IF Q<2 THEN Q=236
610 VPOKE I,Q
620 NEXT
630 FOR I=1 TO 70:NEXT:GOTO 500
640 SC=SC+10*P:IF SC>50000! THEN SC=0
650 IF SC>HI THEN HI=SC
660 LOCATE 0,0:PRINT"Sc-":LOCATE 3,0:PRINT USING"#####";SC
670 LOCATE 12,0:PRINT"Hi-":LOCATE 15,0:PRINT USING"#####";SC
680 RETURN
2000 GOSUB 6600:LOCATE 11,11:PRINT"Well done!"
2005 I=USR3(0):FORI=0TO255:SOUND8,15:SOUND0,I:NEXT:I=USR3(0)
2010 FOR I=1 TO 3000:NEXT
2020 P=P+1
2030 SC=SC+20*P:IF SC>30000! THEN SC=0
2040 IF SC>HI THEN HI=SC
2050 LOCATE 0,0:PRINT"Sc-":LOCATE 3,0:PRINT USING"#####";SC
2060 GOTO 3000
3000 I=USR1(0):GOSUB 6500:GOSUB 6000
3010 I=INT(RND(1)*112)+8:C=INT(RND(1)*12)+2:Q=INT(RND(1)*112):IF((Q+128)-I)<40THEN3010
3020 PUT SPRITE 1,(I,40),C,1
3030 PUT SPRITE 2,(Q+128,40),C,1
3040 I=INT(RND(1)*112)+8:C=INT(RND(1)*12)+2:Q=INT(RND(1)*112):IF((Q+128)-I)<40THEN3040
3050 PUT SPRITE 3,(I,88),C,1
3060 PUT SPRITE 4,(Q+128,88),C,1
3070 I=INT(RND(1)*112)+8:C=INT(RND(1)*12)+2:Q=INT(RND(1)*112):IF((Q+128)-I)<40THEN3070
3080 PUT SPRITE 5,(I,136),C,1
3090 PUT SPRITE 6,(Q+128,136),C,1
3100 I=INT(RND(1)*112)+8:C=INT(RND(1)*12)+2:Q=INT(RND(1)*112):IF((Q+128)-I)<40THEN3100
3110 PUT SPRITE 7,(I,64),C,1
3120 PUT SPRITE 8,(Q+128,64),C,1
3130 I=INT(RND(1)*112)+8:C=INT(RND(1)*12)+2:Q=INT(RND(1)*112):IF((Q+128)-I)<40THEN3130
3140 PUT SPRITE 9,(I,112),C,1
3150 PUT SPRITE 10,(Q+128,112),C,1
3190 I=INT(RND(1)*3)+1
3200 IF I=1 THEN C=6144+(22*32)+4:VPOKE C,132:VPOKE C+1,133:VPOKE C+32,134:VPOKE C+33,135
3210 IF I=2 THEN C=6144+(22*32)+14:VPOKE C,132:VPOKE C+1,133:VPOKE C+32,134:VPOKE C+33,135
3220 IF I=3 THEN C=6144+(22*32)+25:VPOKE C,132:VPOKE C+1,133:VPOKE C+32,134:VPOKE C+33,135
3230 I=INT(RND(1)*10)+1:IF I<6 THEN C=1 ELSE C=-1
3240 IF P<4 THEN C=C*P ELSE C=C*3
3250 X=128:Y=10
3260 VPOKE6912,Y:VPOKE6913,X:SPRITEON:I=USR2(0)
3265 I=USR3(0):SOUND7,62:SOUND8,15:FORI=48TO112:SOUND0,I:NEXT:I=USR3(0)
3270 GOSUB 300
3280 GOTO 100
4000 I=USR1(0):GOSUB 6500:SC=0:P=1:CLS
4010 LOCATE 0,2:PRINT"         "
4020 LOCATE 0,3:PRINT"                 "
4030 LOCATE 0,4:PRINT"        "
4040 LOCATE 0,5:PRINT"                   "
4050 LOCATE 0,6:PRINT"              "
4060 LOCATE 1,8:PRINT"        "
4070 LOCATE 1,9:PRINT"                   "
4080 LOCATE1,10:PRINT"           "
4090 LOCATE1,11:PRINT"                   "
4100 LOCATE1,12:PRINT"        "
4110 LOCATE 6,16:PRINT"Press FIRE to start"
4120 LOCATE 3,21:PRINT"Made by Crappysoft for the":LOCATE 8,22:PRINT"MSX BASIC contest"
4130 I=USR2(0):I=13:TIME=0
4200 IF STRIG(0)=-1 OR STRIG(1)=-1 THEN 4300
4205 IF TIME>15 THEN TIME=0:I=I+1:IF I=15 THEN I=2 ELSE VPOKE 8213,I*8+1
4210 A=RND(-TIME):GOTO 4200
4300 I=USR1(0):CLS
4310 LOCATE 0,2:PRINT"Your mission:recollect data fromthe surface of Mars. An asteroidwith valuable  resources crashedon it."
4320 LOCATE 0,7:PRINT"Please choose your civilization:";
4330 LOCATE 4,10:PRINT"Second hand human landing":LOCATE 4,11:PRINT"module"
4340 LOCATE 4,14:PRINT"Venusian interstellar":LOCATE 4,15:PRINT"garbage collector"
4350 LOCATE 4,18:PRINT"Ganimedian state-of-the-art":LOCATE 4,19:PRINT"interceptor"
4360 PUT SPRITE 0,(8,10*8),14,0
4370 PUT SPRITE 1,(8,14*8),14,5
4380 PUT SPRITE 2,(8,18*8),14,6
4390 I=USR2(0)
4400 I=1:A=1
4410 X=STICK(0):Y=STRIG(0)ORSTRIG(1)
4415 IF Y<>0 THEN 4480
4420 IF X=1 THEN I=I-1:IF I=0 THEN I=3
4430 IF X=5 THEN I=I+1:IF I=4 THEN I=1
4435 FOR C=1 TO 50:NEXT
4440 ON I GOTO 4450,4460,4470
4450 VPOKE 6915,10:VPOKE 6919,14:VPOKE 6923,14:A=1:GOTO 4410
4460 VPOKE 6915,14:VPOKE 6919,10:VPOKE 6923,14:A=2:GOTO 4410
4470 VPOKE 6915,14:VPOKE 6919,14:VPOKE 6923,10:A=3:GOTO 4410
4480 I=USR1(0):GOSUB 6600:VPOKE 6914,0*(A=1)-20*(A=2)-24*(A=3):VPOKE 6915,-14*(A=1)-2*(A=2)-7*(A=3):GOTO 3000
4500 IF STRIG(0)=0 THEN 4500 ELSE 3000
5000 RETURN 5100
5100 SPRITE OFF
5105 I=USR3(0):SOUND6,0:SOUND7,7:SOUND8,16:SOUND9,16:SOUND10,16:SOUND12,56:SOUND13,0
5110 FOR I=1 TO 12
5120 PUT SPRITE 0,(X,Y),11,3
5130 FOR R=1 TO 50:NEXT
5140 PUT SPRITE 0,(X,Y),8,2
5150 FOR R=1 TO 50:NEXT
5160 NEXT
5170 GOSUB 6600:LOCATE 12,11:PRINT"Game Over"
5180 FOR I=1 TO 3000:NEXT:GOTO 4000
6000 CLS
6010 RESTORE 6100
6020 FOR I=6144+(21*32) TO 6144+(23*32)+31:READ X:VPOKE I,X:NEXT
6030 LOCATE 0,0:PRINT"Sc-":LOCATE 3,0:PRINT USING"#####";SC
6040 LOCATE 12,0:PRINT"Hi-":LOCATE 15,0:PRINT USING"#####";SC
6050 LOCATE 24,0:PRINT"Stage-":LOCATE 30,0:PRINT USING"##";P;
6060 VPOKE 6144+(10*32)+5,144:VPOKE 6144+(14*32)+20,144:VPOKE 6144+(4*32)+12,144:VPOKE 6144+(20*32)+29,144
6070 VPOKE 6144+(11*32)+1,152:VPOKE 6144+(17*32)+23,152:VPOKE 6144+(7*32)+16,152:VPOKE 6144+(19*32)+24,152
6080 VPOKE 6144+(3*32)+30,160:VPOKE 6144+(3*32)+31,161:VPOKE 6144+(4*32)+30,162:VPOKE 6144+(4*32)+31,163:PUT SPRITE 13,(30*8,3*8-1),2,4
6090 RETURN
6100 DATA 136,140,141,137,0,0,0,0,0,136,137,0,0,0,0,0,0,0,0,0,0,136,137,0,0,0,0,0,136,140,141,137
6110 DATA 138,142,143,139,128,129,128,129,128,138,139,128,129,128,129,128,129,128,129,128,129,138,139,128,129,128,129,128,138,142,143,139
6120 DATA 130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131,130,131
6500 FOR I=6912 TO 6912+(13*4) STEP 4:VPOKE I,209:NEXT:RETURN
6600 SPRITEOFF:FOR I=6916 TO 6952 STEP 4:VPOKE I,209:NEXT:RETURN
7000 RESTORE 7100:FOR I=14336 TO 14336+31:READ A:VPOKE I,A:NEXT
7010 FOR I=14336+32 TO 14336+63:READ A$:VPOKE I,VAL("&H"+A$):NEXT
7020 FOR I=14336+(32*2) TO 14336+(32*5)-1:READ A:VPOKE I,A:NEXT
7030 FOR I=14336+(32*5) TO 14336+(32*7)-1:READ A$:VPOKE I,VAL("&H"+A$):NEXT
7090 RETURN
7095 ' ovni
7100 DATA 0,0,1,26,123,252,127,159
7110 DATA 224,255,117,31,32,64,224,0
7120 DATA 0,0,128,88,222,63,254,249
7130 DATA 7,255,174,248,4,2,7,0
7135 ' asteroide
7140 DATA 00,00,00,05,3e,77,ab,f7
7150 DATA b9,c6,a9,46,38,07,00,00
7160 DATA 00,00,a0,b4,76,cb,b4,7b
7170 DATA 85,49,32,1c,e0,00,00,00
7175 ' explosion grande
7180 DATA 4,6,5,4,248,64,34,17
7190 DATA 8,16,32,124,2,1,0,0
7200 DATA 0,0,64,160,32,30,132,8
7210 DATA 144,16,72,168,144,128,128,0
7215 ' explosion chica
7220 DATA 0,0,0,0,1,14,4,2
7230 DATA 4,14,1,0,0,0,0,0
7240 DATA 0,0,0,128,64,64,32,16
7250 DATA 56,64,64,192,64,0,0,0
7255 ' tierra
7260 DATA 0,3,3,24,60,60,113,65
7270 DATA 72,97,51,51,17,8,0,0
7280 DATA 0,128,48,120,252,124,206,162
7290 DATA 14,238,252,240,240,240,192,0
7295 ' alien 1
7300 DATA 07,18,20,4b,45,8d,b7,c1
7310 DATA 83,ec,f3,6c,13,2d,40,e0
7320 DATA e0,18,04,d2,a2,b1,ed,83
7330 DATA c1,37,cf,36,c8,b4,02,07
7335 ' alien 2
7340 DATA 00,00,00,03,8c,53,25,43
7350 DATA 9c,a3,dc,6f,16,21,40,e0
7360 DATA 00,00,00,c0,31,ca,a4,c2
7370 DATA 39,c5,3b,f6,68,84,02,07
8000 RESTORE 8200
8010 FOR I=168*8 TO 168*8+7:READ A:VPOKE I,A:NEXT
8020 FOR I=144*8 TO 144*8+7:READ A:VPOKE I,A:NEXT:' estrella blanca
8030 FOR I=152*8 TO 152*8+7:READ A:VPOKE I,A:NEXT:' estrella negra
8040 FOR I=160*8 TO 163*8+7:READ A:VPOKE I,A:NEXT:' tierra
8080 VPOKE 8208,&H81:VPOKE 8209,&H81:VPOKE 8210,&HF1:VPOKE 8211,&HE1:VPOKE 8212,&H41:VPOKE 8213,&HD1
8090 RETURN
8195 ' logo
8200 DATA 0,126,126,126,126,126,126,0
8205 ' estrella blanca
8210 DATA 0,0,0,16,0,0,0,0
8215 ' estrella negra
8220 DATA 0,8,0,0,0,0,0,0
8225 ' tierra
8230 DATA 0,3,15,31,63,63,127,127
8240 DATA 0,192,240,248,252,252,254,254
8250 DATA 127,127,63,63,31,15,3,0
8260 DATA 254,254,252,252,248,240,192,0
8500 RESTORE 8500:FOR I=128*8 TO 143*8+7:READ A$:VPOKE I,VAL("&H"+A$):NEXT:RETURN
8510 DATA 00,0c,9b,cf,b4,7b,fe,fd
8520 DATA 00,30,7b,b5,ce,75,bb,df
8530 DATA aa,55,aa,55,eb,94,08,30
8540 DATA aa,55,aa,5d,a2,41,20,10
8545 '
8550 DATA 0f,10,24,47,64,30,df,ef
8560 DATA f0,08,24,e2,26,0c,fb,f7
8570 DATA a0,55,aa,55,eb,94,08,30
8580 DATA 0a,55,aa,5d,a2,41,20,10
8585 '
8590 DATA 00,00,00,00,01,03,03,07
8600 DATA 00,00,00,00,80,40,40,20
8610 DATA 07,0f,9f,de,bd,73,eb,dd
8620 DATA 20,10,8b,85,82,c1,dc,e7
8625 '
8630 DATA 01,07,0f,1f,be,59,57,2f
8640 DATA 80,40,20,18,05,0b,0b,97
8650 DATA 2e,15,8b,85,82,c1,dc,e7
8660 DATA d7,ef,df,de,bd,73,eb,dd
9000 DEFUSR1=&H41:DEFUSR2=&H44:I=USR1(0):DEFUSR3=&H90:SCREEN 1,2,0:WIDTH 32:KEY OFF:COLOR 15,1,1:DEFINT A-Z
9010 GOSUB 7000:GOSUB 8000:GOSUB 8500
9020 HI=3000
9030 ON SPRITE GOSUB 5000
9090 GOTO 4000
