0 GOSUB700:CLEAR200:DIMAB(90,3),K(255),C$(1),X0,X1,Y0,Y1,X,Y,CH,V1,V2,V3,V4,V5,V6,VI,VC,US,YP,XP,VB,SL$,LL$,BL$,I$,B$,NL$
1 DIMX(1,10),Y(1,10),XT(10),SL(10),NX(10),VR(64),FL(10),EX(10),T,W,E,F,J,U,M,T1,T5,T6,T7,LV,CL,MH,V,P,HS,TH,NM,NS,CY,V7,W1
2 GOTO295
3 POKEVC,CH:RETURN
4 POKEVC,J:RETURN
9 PRINT@W1,CHR$(AB(Z,0));CHR$(AB(Z,1));:PRINT@W1+32,CHR$(AB(Z,2));CHR$(AB(Z,3));:RETURN
13 CT$=CT$+CHR$(V7):FL(J)=-U:GOTO17
14 CT$=CT$+CHR$(US):GOTO17
15 FL(J)=J:TH=J:CT$=NL$:FORT=V5TOV6:US=PEEK(T):ONK(US)GOTO14,13
16 CT$=CT$+B$:TH=TH+U
17 NEXT:RETURN
18 CLS:GOSUB4:PRINT@192,"THE CITY HAS BEEN DESTROYED":GOTO302
19 CLS:GOSUB4:PRINT@192,"MOBILE BASE HAS BEEN DESTROYED":GOTO302
20 Y1=INT(P/TT)*E:X1=(((P/TT)-INT(P/TT))*TT)*W:Y0=YP:X0=XP:US=USR((X0*V3+Y0)*V2+X1*V3+Y1):CN=CN+U:ON(CN>NS)+UGOTO25
22 CN=U
25 EX(CN)=P:RETURN
30 V=-U:GOTO90
40 V=U:GOTO90
50 V=-TT:GOTO90
60 V=TT
90 IFP+V>JANDP+V<V4THENPRINT@P,B$;:P=P+V:PRINT@P,LL$;
95 RETURN
100 DX=X(1,M)-X(0,M):IFDX=JTHENX(1,M)=RND(58)+U:GOTO100
110 DY=Y(1,M)-Y(0,M):SX=SGN(DX):SY=SGN(DY):SL(M)=DY/DX:B(M)=Y(0,M)-SL(M)*X(0,M)
160 T1=SQR(SL(M)*SL(M)+U):NX(M)=U/T1*SX:RETURN
170 SOUNDT6,U:GOSUB4:SC=SC+(LV*F):GOSUB3:MH=MH+U:FL(M)=U:PRINT@(INT(Y0/E)*TT+INT(X0/W))-U,BL$;
175 GOSUB15
192 ONFL(0)+UGOTO19
194 ON(TH<CY)+UGOTO18
196 ON(MH=NM)+UGOTO260
198 GOTO310
200 FORM=UTONM
210 ONK(PEEK(PK)ANDPEEK(W))GOSUB20,30,40,50,60,290
220 ONFL(M)GOTO260
230 XT(M)=XT(M)+NX(M):X0=INT(XT(M)+T5):Y0=INT(SL(M)*XT(M)+B(M)+T5):ONVR(Y0)GOTO170
245 ONK(PEEK(VI+INT(Y0/E)*TT+INT(X0/W)))GOTO170,19
250 US=USR((X0*V3+Y0)*V1)
260 NEXT
270 CLSJ:PRINT@V4,CT$;:PRINT@P,LL$;:FORM=UTONS:PRINT@EX(M),SL$;:NEXT
280 GOTO200
290 CLS:GOSUB4:I$=INKEY$:GOTO302
295 VI=16384:VC=49151:TT=32:CH=4:W=2:E=3:J=0:U=1:F=5:V1=65537:V2=65536:V3=256:V4=481:V7=191:CL=29:NL$="" 
299 GOSUB2018:T5=.5:T6=128:T7=255:PK=17023:NM=10:SL$=CHR$(255):LL$=CHR$(96):HS=0:CY=28:V5=VI+V4:V6=VI+V4+CY
300 K(203)=1:K(234)=1:K(215)=1:K(207)=1:K(255)=1:K(191)=2
301 B$=CHR$(T6):BL$=B$+B$+B$:K(32)=1:K(65)=2:K(83)=3:K(87)=4:K(90)=5:K(13)=6:K(81)=7
302 GOSUB500:LV=0:FL(J)=J:EX(J)=J:NS=11:P=272:FORT=1TO10:EX(T)=P:NEXTT:PRINT"LAST SCORE:";SC:IFSC>HSTHENHS=SC
303 SC=0:PRINT"HIGH SCORE:";HS:PRINT"hit enter to begin or q to quit";
304 I$=INKEY$:X=RND(10):IFI$<>""THENONK(ASC(I$))GOTO304,304,304,304,304,310,3010
305 GOTO304
310 CN=0:MH=0:LV=LV+1:IFLV>UTHENSC=SC+((CL-TH)*(F*LV))
320 GOSUB4:CLS:PRINT@236,"WAVE:";LV;:PRINT@299,"SCORE:";SC;
330 NS=NS-U:IFNS<UTHENNS=U
331 EX(J)=EX(J)+U:IFEX(J)>10THENEX(J)=3
332 IFLV=UTHEN340
333 R=FP-481:C$(1)=LEFT$(CT$,R)+B$+MID$(CT$,R+2,29)
334 R=RND(29):IFMID$(C$(1),R,U)<>B$THEN334
336 FP=R+480:CT$=LEFT$(C$(1),R-1)+CHR$(191)+MID$(C$(1),R+1,29)
340 FORM=UTONM
350 X(0,M)=RND(64)-U:Y(0,M)=RND(EX(J))-U:XT(M)=X(0,M)
360 X(1,M)=RND(58)+U:IFMID$(CT$,X(U,M)/W,U)=B$THEN360
365 Y(1,M)=47
370 GOSUB100
380 FL(M)=0
390 NEXTM
430 FORT=47TO64:VR(T)=1:NEXTT
440 CLS0:GOSUB3
450 IFYP=JTHENGOSUB800
460 YP=INT(FP/32)*3:XP=(((FP/32)-INT(FP/32))*32)*2:PRINT@V4,CT$;:GOSUB15
490 GOTO200
500 C$(1)=""
510 FORT=1TO29
545 R=RND(4):ONRGOTO546,547,548,549
546 C$(1)=C$(1)+CHR$(203):GOTO550
547 C$(1)=C$(1)+CHR$(234):GOTO550
548 C$(1)=C$(1)+CHR$(215):GOTO550
549 C$(1)=C$(1)+CHR$(207):GOTO550
550 NEXTT
551 R=RND(29):CT$=LEFT$(C$(1),R-1)+CHR$(191)+MID$(C$(1),R+1,29)
557 FP=R+480
570 RETURN
700 CLS:PRINT"missile attack":PRINT
710 PRINT"- USE THE ARROW KEYS TO MOVE"
720 PRINT"GREEN TARGETTING SQUARE"
725 PRINT"- HIT SPACE TO FIRE"
730 PRINT"- EACH SHOT CREATES AN ANTI-"
740 PRINT"MISSILE SHIELD"
750 PRINT"- MAX 10 SHIELDS TO START"
760 PRINT"- WATCH FOR STEALTH MISSILES"
770 PRINT"- AVOID HITS ON YOUR BLUE"
780 PRINT"MOBILE BASE"
790 PRINT"- WHEN CITY BUILDINGS ARE"
792 PRINT"DESTROYED--THE WAR IS OVER"
797 RETURN
800 W1=197:Z=66:GOSUB9:W1=W1+3:Z=89:GOSUB9
810 W1=W1+6:Z=74:GOSUB9:W1=W1+3:Z=73:GOSUB9:W1=W1+3:Z=77:GOSUB9
820 W1=W1+6:Z=71:GOSUB9
825 FORT=1TO1000:NEXTT
830 RETURN
2011 DATA128,128,128,128,149,128,132,128,152,128,128,128,128,128,134,128,128,128,132,128
2012 DATA154,138,164,160,149,128,148,128,179,170,172,136,177,170,140,168,171,170,128,168,187,162,140,168,187,162,172,168
2013 DATA176,170,128,168,187,170,172,168,187,170,128,168,177,168,132,128,155,138,168,168,187,136,172,160,186,160,172,136,186,138
2014 DATA172,160,187,160,172,136,187,160,168,128,186,160,172,160,171,170,168,168,149,128,148,128,128,170,172,168,171,168,168,168
2015 DATA170,128,172,136,174,170,168,168,186,138,168,168,154,138,164,160,187,170,168,128,154,138,164,168,187,136,168,168
2016 DATA187,162,140,168,181,160,148,128,170,170,172,168,170,170,148,128,170,170,184,168,169,168,168,168,171,170,148,128
2017 READAB(X,0),AB(X,1),AB(X,2),AB(X,3):RETURN:DATA177,168,172,136
2018 X=32:GOSUB2017:X=33:GOSUB2017:X=39:GOSUB2017:X=44:GOSUB2017:X=46:GOSUB2017
2019 FORX=48TO57:GOSUB2017:NEXTX:X=63:GOSUB2017:FORX=65TO90:GOSUB2017:NEXTX
2020 REM LINE DRAW SUBROUTINE BY GREG DIONNE
2030 REM US=USR((X0*256+Y0)*65537) FOR SINGLE POINT
2040 REM US=USR((X0*256+Y0)*65536+X1*256+Y1) TO DRAW LINE
3000 DATALNPDALMMABABNNLLNMMMJAMKCCAJCFADHPAALLHAAALLEANAMLCCAJCFADHPAALMHAAALMFANNNGBBCDHCEPJHMOJHNLJGNGJHNMINDCJG
3001 DATAMKJBMMCHCIJLLLJHMKJGMOJLNHJHMOBGJANLCKABEANANMCKABFABBCFOANGNMNHNLNLNGNHNMNGMLNLLMNHMLCANAFPHOOMOCNMMKNNNI
3002 DATAJGNJMGKLDNIGIAMAFFEEEEMLFFMBFFCEPIHEAANICEABEEIKIAJHNKIGCADNNLNIIJAAIKEAIEEBNNNINONINGNKOKAAOHAADJEPJHMOJH
3003 DATANLJGNHJHNMINMAJGMLJBMNCHLGJLLMJHMLJGMOJLNGJHMOBGJANLCKABEANANMCKABFABBCFOANGNMNHNLNLNHNHNMNGMKNLLLNHMKCANA
3004 Z=32768:FORX=0TO3:READA$::GOSUB3005:NEXTX:Z=16917:A$="HOIAAA"
3005 FORY=1TOLEN(A$)/2:POKEZ,(ASC(MID$(A$,2*Y-1,1))-65)*16+ASC(MID$(A$,2*Y,1))-65:Z=Z+1:NEXTY:RETURN
3010 END
