90 @=1 :: \=2 :: OPTION BASE 1 :: DIM MX(8),MY(8),PT(9)
100 CALL B :: RESTORE 9000 :: FOR ]=@ TO 2 :: READ _,]$ :: DISPLAY AT(_,15-LEN(]$)/\):]$ :: NEXT ] :: CALL CHAR(64,"3C4299A1A199423C")
105 FOR ]=@ TO 8 :: READ MX(]),MY(]),PT(]) :: NEXT ] :: READ PT(9)
110 CALL MAGNIFY(@) :: FOR ]=@ TO 14 :: CALL COLOR(],16,\) :: NEXT ]
115 FOR ]=1 TO 220 :: NEXT ] :: DISPLAY AT(14,12)BEEP:"SELECT"::"         1 JOYSTICK"::"         2 KEYBOARD"
120 J=@ :: FOR ]=@ TO 8 :: CALL KEY(3,K,S) :: IF K=49 THEN J=[ :: GOTO 200 ELSE IF K=50 THEN 200
130 CALL SPRITE(#],46,INT(RND*13+3),98,50,MY(])*5,MX(])*5,#8+],46,INT(RND*13+3),98,195,MY(])*5,MX(])*5) :: NEXT ] :: GOTO 120
200 DATA "aaaaamnopqrstuvaaaaaaajklwxyaahiz{"
205 DATA "aaaaamnopqrstuvaaaaaaajklwxyaahiz{"
210 DATA "aaaaamnopqrstuvaaaaaaajklwxyaahiz{"
215 DATA "aaaaamnopqrstuvaaaaaaajklwxyaahiz{"
220 DATA "aaaaamnopqrstuvaaaaaaajklwxyaahiz{"
225 DATA "aaaaamnopqrstuvaaaaaaajklwxyaahiz{"
230 DATA "aaaaamnopqrstuvaaaaaaajklwxyaahiz{"
235 DATA "aaaaamnopqrstuvaaaaaaajklwxyaahiz{"
500 SP=4 :: SH=6 :: SC=[ :: K@=3 :: K\=32 :: K[=76 :: IF J THEN 700
510 K@=1 :: K[,K\=18 :: CALL HCHAR(14,@,32,192) :: DISPLAY AT(16,8)BEEP:"ALPHA LOCK  UP" :: FOR ]=@ TO 100 :: NEXT ]
700 CALL D :: CALL MAGNIFY(3) :: CALL B :: CALL VCHAR(@,@,96,768) :: RESTORE 7000 :: FOR ]=96 TO 140 STEP 4 :: READ ]$ :: CALL CHAR(],]$)
705 NEXT ] :: CALL CHAR(92,"384482FEFE824438"&RPT$("0",48))
710 CALL CHAR(90,"080808083E080808",33,"F0F0",34,"0",35,"F0F0") :: FOR ]=7 TO 15 :: CALL HCHAR(],11,132,16) :: NEXT ] :: CALL VCHAR(\,3,32,22)
720 CALL VCHAR(\,4,32,22) :: ]$="A L T I T U D E" :: CALL VCHAR(3,4,90,20) :: FOR ]=@ TO 15 :: CALL HCHAR(]+4,3,ASC(SEG$(]$,],@))) :: NEXT ]
730 DISPLAY AT(22,@):" Za SCORE 000000 SHUTTLES     a FUEL (((((((((((((((((()  a VERTICAL LIFT MPS 0    " :: GOSUB 6000 :: GOSUB 6010
735 CALL HCHAR(24,31,32) :: CALL CHAR(46,"0000001818",40,"000000FFFF")
740 CALL CHAR(40,"000000FFFF") :: CALL HCHAR(\,6,104,26) :: CALL HCHAR(20,6,104,26) :: CALL VCHAR(\,6,104,19) :: CALL VCHAR(\,31,104,19) :: FOR ]=3 TO 6
750 CALL HCHAR(],]+4,136) :: CALL HCHAR(],33-],137) :: CALL HCHAR(22-],]+4,138) :: CALL HCHAR(22-],33-],139) :: CALL HCHAR(],]+5,141,24-((]-\)*\))
760 CALL HCHAR(22-],]+5,141,24-((]-\)*\)) :: CALL VCHAR(]+@,]+4,140,17-((]-\)*\)) :: CALL VCHAR(]+@,33-],140,17-((]-\)*\)) :: NEXT ]
765 RESTORE 768 :: FOR ]=6 TO 4+SH :: READ X,Y,_ :: CALL SPRITE(#],_,5,X,Y,[,[) :: NEXT ]
768 DATA 49,97,120,49,81,120,105,117,128,89,81,128,105,99,128
770 CALL SPRITE(#@,128,\,105,81,#\,92,7,169,26,#3,32,\,64,233,#4,96,16,65,233) :: CALL COLOR(12,5,15,@,7,16,\,14,16)
780 CALL COLOR(13,3,15,3,5,16,4,5,16,5,\,16,6,\,16,7,\,16,8,\,16,9,\,\,10,7,7,11,15,15,14,10,9)
850 CALL VCHAR(22,31,32,\) :: HT=20 :: KP=@ :: U2,U,X1,Y1=[ :: FL=30 :: GOSUB 6030
890 P=8 :: CALL CHAR(36,"C0C"&RPT$("0",50)) :: B$="FFFEFCF8F0E0C08000" :: CALL HCHAR(23,12,40,19)
895 U2=-.5 :: U=.2 :: CALL KEY(K@,K,S) :: IF K<>K[ THEN 895 :: GOSUB 6030
896 _=24 :: FOR ]=169 TO 153 STEP -1 :: CALL LOCATE(#\,],26) :: CALL SOUND(-999,111,_,-7,_) :: _=_-1.5 :: CALL W(50) :: NEXT ]
897 U2=-.5 :: CALL SOUND(99,700,15) :: CALL SOUND(99,600,15)
900 GOSUB 6120 :: IF Y>[ THEN CALL SOUND(-99,111,15,-5,15) :: GOTO 917 ELSE P=P+(X<[)-(X>[) :: IF P>8 THEN P=@ ELSE IF P<@ THEN P=8
910 CALL PATTERN(#@,96+4*P) :: GOTO 920
917 Y1=Y1+MY(P) :: X1=X1+MX(P) :: Y1=MIN(ABS(Y1),10)*SGN(Y1) :: X1=MIN(ABS(X1),10)*SGN(X1) :: CALL MOTION(#1,-Y1,X1)
920 CALL KEY(K@,K,S) :: IF K<>K[ THEN U2=U2+.1 :: U1=0 ELSE U2=U2-.1 :: U2=MAX(-.8,U2) :: U1=2 :: CALL SOUND(-999,111,22,-7,22)
930 GOSUB 6030 :: HT=HT+U2 :: CALL LOCATE(#\,HT*8-7,26) :: IF HT>22 OR HT<3 THEN 1000 ELSE IF HT>4 AND HT<6 THEN CALL COLOR(#\,\) ELSE CALL COLOR(#\,7)
940 CALL CHAR(41,"000000"&RPT$(SEG$(B$,KP,\),\)) :: KP=KP+\+U1 :: IF KP<18 THEN 955
950 CALL HCHAR(23,FL,32) :: FL=FL-@ :: IF FL<12 THEN 1030 ELSE CALL CHAR(41,"000000FFFF") :: CALL HCHAR(23,FL,41) :: KP=@
955 CALL POSITION(#@,A,B) :: IF HT>4 AND HT<6 THEN IF B>217 AND A>59 AND A<71 THEN IF B>241 THEN 1490 ELSE 900
960 X=INT(22-HT)*1.7 :: IF A>105+X OR A<41-X OR B>196+X OR B<78-X THEN 1000 ELSE 900
1000 CALL POSITION(#@,X,Y) :: CALL DELSPRITE(#@) :: FOR ]=15 TO 22 :: CALL SPRITE(#],36,\,X,Y,MY(]-14)*5,MX(]-14)*5) :: CALL SOUND(-999,111,25,-7,9)
1010 NEXT ] :: FOR D=@ TO 150 :: NEXT D :: FOR ]=15 TO 22 :: CALL DELSPRITE(#]) :: NEXT ] :: CALL DELSPRITE(#4+SH)
1020 SH=SH-@ :: GOSUB 6010 :: IF SH>[ THEN 770 ELSE 3100
1030 CALL M :: FOR ]=HT TO 23 STEP .5 :: CALL LOCATE(#2,]*8-7,26) :: CALL SOUND(-999,500-]*15,18,-7,]) :: NEXT ] :: GOTO 1000
1490 SC=SC+500 :: CALL D :: CALL B :: RESTORE 8000
1500 FOR ]=100 TO 132 STEP 4 :: READ ]$ :: CALL CHAR(],]$) :: NEXT ] :: CALL HCHAR(23,@,140,64) :: CALL VCHAR(@,32,140,72)
1510 FOR ]=@ TO 22 :: CALL HCHAR(],3,96,29) :: NEXT ] :: CALL HCHAR(24,3,32,29) :: DISPLAY AT(24,@):" BURN((((((((() SCORE " :: GOSUB 6020
1530 CALL SCREEN(\) :: FOR ]=@ TO 8 :: CALL COLOR(],7,16) :: NEXT ] :: CALL COLOR(\,14,16,3,13,16,4,13,16)
1540 CALL SCREEN(6) :: CALL COLOR(9,\,\,10,8,\,11,8,\,12,8,\,13,4,8,14,6,6) :: CALL MAGNIFY(@)
1550 RESTORE 200 :: _=3 :: FOR ]=4 TO 21 :: CALL SPRITE(#],103,6,_,RND*240+@,[,RND*(SP-\)+@) :: _=_+8 :: NEXT ]
1560 CALL SPRITE(#@,101,6,130,33,#\,100,6,INT(RND*57+4),@,[,SP)
1690 CALL HCHAR(22,31,122) :: CALL HCHAR(24,8,40,10) :: CALL HCHAR(24,17,41) :: T,X1=[ :: Y1=-\ :: FL=17 :: KP=@ :: GOTO 1860
1700 FOR F1=@ TO 6 :: GOSUB 6100 :: Y1=Y1-(Y=[) :: X1=X1+SGN(X)*\ :: Y1=Y1-SGN(Y)*\ :: Y1=MIN(ABS(Y1),12)*SGN(Y1)
1710 X1=MIN(ABS(X1),12)*SGN(X1) :: CALL MOTION(#@,Y1,X1) :: CALL POSITION(#@,X,Y,#\,X2,Y2) :: IF T THEN CALL MOTION(#3,-7,X1)
1714 IF Y<17 THEN CALL LOCATE(#@,X,235) :: Y=235 ELSE IF Y>241 THEN CALL LOCATE(#@,X,25) :: Y=25
1715 IF X<8 OR X>173 THEN CALL MOTION(#@,[,X1) :: Y1=[ :: X=4 :: CALL LOCATE(#@,8,Y+X1)
1720 IF X>141 AND X<150 AND Y>51 AND Y<191 OR X>151 AND X<161 AND Y>31 AND Y<226 OR X>160 THEN 1900
1730 CALL COINC(#@,#\,7,H) :: IF H THEN 2000 ELSE IF Y2>243 THEN 1900
1780 CALL CHAR(41,"000000"&RPT$(SEG$(B$,KP,\),\)) :: KP=KP+\+U1 :: IF KP<18 THEN 1800
1790 CALL HCHAR(24,FL,32) :: FL=FL-@ :: IF FL<8 THEN 1930 ELSE CALL CHAR(41,"000000FFFF") :: CALL HCHAR(24,FL,41) :: KP=@
1800 IF T=@ THEN 1810 ELSE IF X>115 THEN 1850 ELSE IF RND<.6 THEN 1850 ELSE CALL POSITION(#@,X,Y) :: CALL SPRITE(#3,102,6,169,Y,-14,X1) :: T=@
1810 CALL POSITION(#3,X,Y) :: IF X<10 OR X>169 THEN CALL DELSPRITE(#3) :: T=[ :: GOTO 1850
1820 CALL COINC(#@,#3,8,H) :: CALL COINC(#3,#\,8,H1) :: IF H THEN 1900 ELSE IF H1 THEN 1950
1850 NEXT F1
1860 READ ]$ :: DISPLAY AT(19,@):]$ :: F=F+@ :: IF F=8 THEN F=@ :: RESTORE 200 :: GOTO 1700 ELSE 1700
1900 CALL POSITION(#@,X,Y) :: FOR ]=@ TO 8 :: CALL SPRITE(#],46,]+3,X,Y,MY(])*5,MX(])*5) :: CALL SOUND(-999,111,25,-7,]*3) :: NEXT ]
1910 FOR ]=@ TO 200 :: NEXT ] :: SH=SH-@ :: IF SH>[ THEN 700 ELSE 3100
1930 CALL MOTION(#@,8,[) :: FOR ]=[ TO 1000 :: CALL POSITION(#1,_,X) :: IF X>140 THEN 1900
1940 NEXT ]
1950 CALL M :: CALL DELSPRITE(#\,#3) :: T=[ :: CALL SPRITE(#\,100,6,RND*98+5,17,[,\) :: GOTO 1700
2000 CALL D :: SC=SC+1000 :: CALL MAGNIFY(3) :: CALL B :: RESTORE 8500 :: FOR ]=96 TO 140 STEP 4 :: READ ]$ :: CALL CHAR(],]$&RPT$("0",64-LEN(]$))) :: NEXT ]
2020 CALL CHAR(33,"FFFFFFFFFFFFFFFF0103070F1F3F7FFFFF7F3F1F0F070301",36,"FFFEFCF8F0E0C08080C0E0F0F8FCFEFF") :: CALL VCHAR(19,27,33,277)
2030 CALL HCHAR(21,25,33,241) :: CALL HCHAR(5,25,33,16) :: CALL HCHAR(6,26,33,13) :: CALL HCHAR(7,27,33) :: CALL HCHAR(19,7,33)
2040 CALL HCHAR(19,27,33,14) :: CALL HCHAR(20,26,33,16) :: CALL HCHAR(21,25,33,3) :: FOR ]=@ TO 4 :: CALL HCHAR(4+],11-],36)
2050 CALL HCHAR(17+],6+],37) :: CALL HCHAR(4+],23+],35) :: CALL HCHAR(17+],28-],34) :: NEXT ] :: DISPLAY AT(21,9)SIZE(13):"FUEL(((((((()"
2060 DISPLAY AT(20,8)SIZE(15):"THRUST - MPS  0" :: DISPLAY AT(5,9)SIZE(13):" RANGE"
2070 CALL CHAR(41,"000000FFFF") :: CALL SCREEN(6) :: FOR ]=[ TO 14 :: CALL COLOR(],7,\,1,6,\,3,11,\,4,11,\) :: NEXT ]
2080 CALL SPRITE(#\,96,10,121,169) :: FOR ]=3 TO 15 :: CALL SPRITE(#],132,6,RND*200+@,RND*240+@) :: NEXT ]
2200 M3(3)=-@ :: M0(4),M3(@)=@ :: M0(@)=\ :: M0(\)=3 :: M0(3)=4 :: M3(\),M3(4)=[ :: M7(@)=43 :: M7(\)=61 :: M7(3)=45 :: M7(4)=61
2210 RANDOMIZE  :: M2=\ :: FL=23 :: R=INT(RND*400+100) :: CALL SPRITE(#@,128,6,RND*120+30,RND*170+40)
2220 D_=INT(RND*3)-@ :: D]=INT(RND*3)-@ :: C,KP=@ :: M6=[
2300 GOSUB 6100 :: FOR ]=3 TO 15 :: CALL MOTION(#],Y1/\,-X1/\) :: NEXT ] :: CALL KEY(K@,K,S) :: IF K=K\ THEN M2=M0(M2) :: M1=M3(M2)
2310 C=C+@+(C+@>\)*\ :: CALL COLOR(14,9+C,\) :: R=R-M6 :: R=MIN(ABS(R),999)*SGN(R) :: IF M6+M1<5 AND M6+M1>-5 THEN M6=M6+M1
2320 DISPLAY AT(5,18)SIZE(4):STR$(R) :: DISPLAY AT(20,15)SIZE(8):CHR$(M7(M2))&" MPS "&STR$(M6) :: P=8
2330 IF R<400 THEN P=7 :: IF R<200 THEN P=6 :: IF R<100 THEN P=5 :: IF R<50 THEN P=4
2340 IF R<25 THEN P=3 :: IF R<15 THEN P=\ :: IF R<4 THEN P=@ :: IF R<[ THEN P=11
2345 IF D1<>P OR P=@ THEN CALL SOUND(30*P,1400+25*P,P*\) :: CALL SOUND(30*P,1500+25*P,P*\) :: D1=P
2347 IF P=@ THEN CALL COINC(#@,#\,8,H) :: IF H THEN 4000
2350 CALL PATTERN(#@,P*4+96) :: IF M2=\ OR M2=4 THEN 2370 :: CALL CHAR(41,"000000"&RPT$(SEG$(B$,KP,\),\)) :: KP=KP+\ :: IF KP<18 THEN 2370
2360 CALL HCHAR(21,FL,32) :: FL=FL-@ :: IF FL=14 THEN 3100 :: CALL CHAR(41,"000000FFFF") :: CALL HCHAR(21,FL,41) :: KP=@
2370 Y1=Y1+Y/\ :: X1=X1+X/\ :: Y1=MIN(ABS(Y1),4)*SGN(Y1) :: X1=MIN(ABS(X1),4)*SGN(X1) :: CALL POSITION(#1,A,B)
2375 IF Y1=0 THEN Y1=D_
2376 IF X1=0 THEN X1=D]
2380 IF A<25 AND SGN(Y1)<[ OR T2>\ AND A<30 THEN 2440 :: IF A>167 AND SGN(Y1)>[ OR A>167 AND T2>\ THEN 2450
2390 IF B>213 AND SGN(X1)<[ OR T>\ AND B>213 THEN 2420 :: IF B<34 AND SGN(X1)>[ OR B<42 AND T>\ THEN 2430
2395 IF D>[ THEN 2460
2400 T2,T=\ :: CALL MOTION(#1,Y1,-X1) :: GOTO 2300
2420 D=\ :: CALL M :: T=T-SGN(X)*\ :: CALL HCHAR(13,27,138) :: IF T<>@ THEN 2300 :: X1=ABS(X1) :: GOTO 2400
2430 D=@ :: CALL M :: T=T+SGN(X)*\ :: CALL HCHAR(13,7,136) :: IF T<>@ THEN 2300 :: X1=-X1 :: GOTO 2300
2440 D=4 :: CALL M :: T2=T2-SGN(Y)*\ :: CALL HCHAR(6,17,137) :: IF T2<>@ THEN 2300 :: Y1=ABS(Y1) :: GOTO 2400
2450 D=3 :: CALL M :: T2=T2+SGN(Y)*\ :: CALL HCHAR(19,17,139) :: IF T2<>@ THEN 2300 :: Y1=-Y1 :: GOTO 2300
2460 D=[ :: CALL HCHAR(13,7,32) :: CALL HCHAR(13,27,32) :: CALL HCHAR(19,17,32) :: CALL HCHAR(6,17,32) :: GOTO 2400
2800 ]$="MISSION "&]$ :: CALL D :: CALL CLEAR :: CALL COLOR([,12,12,@,12,12) :: CALL SCREEN(12) :: CALL HCHAR(17,@,30,19*32)
2809 CALL VCHAR(@,28,30,24*9) :: FOR ]=@ TO 14 :: CALL COLOR([,12,12,],16,5) :: NEXT ]
2810 DISPLAY AT(14,15-LEN(]$)/\)SIZE(LEN(]$))BEEP:]$ :: FOR ]=[ TO 300 :: NEXT ] :: RETURN 
3100 ]$="FAILED" :: GOSUB 2800 :: IF SH>[ THEN 700 ELSE 100
4000 ]$="SUCCESSFUL" :: GOSUB 2800 :: SC=SC+1500 :: CALL M :: SP=SP+@ :: IF SP>8 THEN SP=8 :: GOTO 700 ELSE 700
6000 DISPLAY AT(22,11)SIZE(6):RPT$("0",6-LEN(STR$(SC)))&STR$(SC) :: RETURN 
6010 DISPLAY AT(22,27)SIZE(2):STR$(SH) :: RETURN 
6020 DISPLAY AT(24,23)SIZE(6):RPT$("0",6-LEN(STR$(SC)))&STR$(SC) :: RETURN 
6030 DISPLAY AT(24,23)SIZE(4):STR$(-U2); :: RETURN 
6100 IF J THEN CALL KEY(3,K,S) ELSE CALL JOYST(@,X,Y) :: Y=-Y :: RETURN 
6110 X=4*((K=81)-(K=80)) :: Y=4*((K=65)-(K=76)) :: RETURN 
6120 IF J=[ THEN CALL JOYST(@,X,Y) :: RETURN  ELSE CALL KEY(3,K,S) :: Y=-(K=65) :: X=(K=81)-(K=80) :: RETURN 
7000 DATA 01071F7FFFFFFFFFFFFFFFFF7F1F0701FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF,0101030306040C0F2C3D25392503020000008080C04060E068784838488080
7010 DATA 0000000000133E5FEF39352B560F110100000008B0F02030A0E0C0C0E0408,00001F0A0B17603E60170B0A1F00000000000000C0F09C8F9CF0C
7020 DATA 01110F562B3539EF5F3E130000000000008040E0C0C0E0A03020F0B008,0002034579457D4C0F0C040603030101008080443C447C64E06040C0808
7030 DATA 00010207030307050C040F0D100000008088F06AD4AC9CF7FA7CC8,00000000030F39F1390F0300000000000000F850D0E8067C06E8D050F8
7040 DATA 000000100D0F040C05070303070201000000000000C87CFAF79CACD46AF0888,8822882288228822
7050 DATA 80C0E0F0F8FCFEFF0103070F1F3F7FFFFFFEFCF8F0E0C080FF7F3F1F0F070301,FFFFFFFFFFFFFFFF00
8000 DATA 01020C0C1020000080F8FE000000000010103800000000008,00000001071F3FFF031F7FFFFFFFFFFF0000000000011FFF0000011F7FFFFFFF
8010 DATA 031FFFFFFFFFFFFF000000000000030F00000000001FFFFF0000010FFFFFFFFF,000FFFFFFFFFFFFF1FFFFFFFFFFFFFFFF8FFFFFFFFFFFFFF00F0FFFFFFFFFFFF
8020 DATA 000080F0FFFFFFFF0000000000F8FFFF000000000000C0F0C0F1FFFFFFFFFFFF,000080F8FEFFFFFF000000000080F8FFC0F8FEFFFFFFFFFF00000080E0F8FCFF
8030 DATA 0,FFFFFFFFFFFFFFFFFF7F3F1F0F0703010103070F1F3F7FFFFFFEFCF8F0E0C08,80C0E0F0F8FCFEFF0000081C2800000000
8500 DATA 01010101030109FF090103010101010000000000800020FE20008,1020570E9B513D5591111B3F6ED8B0E0070DD72AD4E8D0D0D8DCAA497F492A1C
8510 DATA 0000081D0508281E1A281D376C587000000E1AB6ECD8F0E0E0E0F8D47CA438,000000000503040C0E0C040F1C1800000000000C94F8F0E0E0E0C0F0A07
8520 DATA 0000000000010304070602070C000000000000000000B0E0C0C080E06,00000000000001030103040000000000000000000000A0C0C0804
8530 DATA 00000000000000000303040000000000000000000000008,00000000000000000102000000000000000000000000008
8540 DATA 00000000000000000100000000000000000000000000008,8,00030F3EFC3E0F03101038387C7CEEC600C0F07C3F7CF0C063773E3E1C1C0808,0
9000 DATA 8,SHUTTLE  ATTAK,24,@ INTRIGUE SOFTWARE 1985
9010 DATA 0,1,6,1,1,5,1,0,4,1,-1,7,0,-1,0,-1,-1,3,-1,0,8,-1,1,1,2
10000 SUB D :: CALL DELSPRITE(ALL) :: SUBEND :: SUB B :: CALL SCREEN(2) :: CALL CLEAR :: FOR ]=1 TO 14 :: CALL COLOR(],2,2) :: NEXT ] :: SUBEND
10010 SUB W(X) :: FOR ]=0 TO X :: NEXT ] :: SUBEND :: SUB M :: CALL MOTION(#1,0,0) :: SUBEND