0 GOSUB8:CLEAR100:DIMLU(1,2),X(1),Y(1),X1(63),Y1(47),X2(63),Y2(47):FORX=0TO1:FORY=0TO2:READLU(X,Y):NEXTY,X:DATA32,8,2,16,4,1
1 DIMSP(512),HILL(140),SC(2),P$(2),L(12),VNG(12),ABG(13),VI,VND,T,XX,YY,X1,Y1,TT,PST,BY,VI,VL,MA,ZE,TW,T3,F4,F7,BE,US:GOTO20
2 POKEBY,MA:IFMA<192THENPOKEBY,MA+64
3 POKEVCTRL,CHOR(PEEK(VCTRL)AND7):RETURN
4 POKEVCTRL,ZE:RETURN
5 BY=X1(XX)+Y1(YY):VL=LU(X2(XX),Y2(YY))
6 MA=VLORPEEK(BY):ONPSTGOTO7,2:POKEBY,NOT(NOTMAORVL):RETURN
7 POKEBY,MA:RETURN
8 CLS:PRINT"HIT A KEY"
9 I$=INKEY$:T=RND(10):IFI$=""THEN9
10 PRINT:PRINT"PLEASE WAIT...":RETURN
15 FORXX=ZETOT3:BE=INT(HILL(XX*TW)/F4):DV=USR((XX*256+BE)*65536+XX*256+F7):NEXTXX
17 FORT=VITOVND:SP(T-VI)=PEEK(T):NEXTT:RETURN
20 VI=16384:VND=16895:VCTRL=49151:CH=16:TT=32:ZE=0:TW=2:T3=63:F4=4:F7=47:GOSUB3000
21 FORX=0TO63:X1(X)=INT(X/2):X2(X)=INT(X-X1(X)*2):X1(X)=X1(X)+VI:NEXTX
22 FORY=0TO47:Y1(Y)=INT(Y/3):Y2(Y)=INT(Y-Y1(Y)*3):Y1(Y)=Y1(Y)*TT:NEXTY
25 NAM$="":PST=1:GOTO80
30 XC=0:YC=R:PC=3-2*R 
35 GOSUB72
40 IFPC<0THENPC=PC+F4*XC+6:GOTO50
45 PC=PC+F4*(XC-YC)+10:YC=YC-1   
50 XC=XC+1 
55 IFXC<YCTHEN35
60 IFXC=YCTHENGOSUB72 
65 RETURN
72 XX=CX+XC:YY=CY-YC:GOSUB5
73 XX=CX-XC:YY=CY-YC:GOSUB5
76 XX=CX+YC:YY=CY-XC:GOSUB5
77 XX=CX-YC:YY=CY-XC:GOSUB5
79 RETURN
80 FORI=0TO139:HILL(I)=0:NEXTI
85 FORI=0TOTW:SC(I)=0:P$(I)="":NEXTI
90 FORI=0TO11:VNG(I)=0:ABG(I)=0:NEXTI
95 GOTO1320
100 XX=INT(XX/F4)
105 YY=INT(YY/F4):GOSUB5:RETURN
155 SP(BY-VI)=MA:RETURN
160 N=158-RND(58)
170 IFN/F4-INT(N/F4)<>0THENN=N+1:GOTO170
180 RETURN
240 N1=RND(2)
250 CLS0:GOSUB3
260 XC=20+RND(30):HC=80+RND(40):L(1)=10+RND(XC-10):L(2)=HC+RND(120-HC)
265 W=RND(100)-50
270 GOSUB160:FOR I=0 TO XC:HILL(I)=N:NEXT I:N=1:GOSUB1190
280 GOSUB160:FOR I=HC TO 139:HILL(I)=N:NEXT I:N=2:GOSUB1190
300 HZ=XC+RND(HC-XC-20)+10
310 HILL(HZ)=50+RND(100)
320 N=HILL(HZ)/TW
330 D1=N-HILL(1)/TW
340 D2=N-HILL(139)/TW
390 A=180:R=180/(HZ-XC+1):N=HILL(1)+D1
400 FOR I=INT(XC+1)TOINT(HZ-1)
405 A=A-R:HILL(I)=COS(A*.0174533)*D1+N:NEXT I
410 A=0:R=180/(HC-HZ+1):N=HILL(139)+D2
420 FORI=INT(HZ+1)TOINT(HC-1)
425 A=A+R:HILL(I)=COS(A*.0174533)*D2+N:NEXT I
430 GOSUB15
470 N=N1
490 N=3-N:S=5*N-4
530 GOSUB4:CLS:PRINT"LAST SHOTS:":FOR I=0 TO 3:PRINT TAB(I*8);ABG(S+4-I);:NEXT I
540 PRINT:FOR I=0 TO 3:PRINTTAB(I*8);VNG(S+4-I);:NEXT I
545 PRINT
550 PRINT "SIDE FIRING: "; 
560 IF N=1 THEN PRINT "LEFT TO RIGHT":GOTO570
565 PRINT "RIGHT TO LEFT"
570 PRINT "WIND FACTOR"; 
580 IF W<=0 THEN PRINT INT(W+W*-2); "TO THE WEST.":GOTO590
585 PRINTINT(W); "TO THE EAST."
590 PRINT P$(N); 
600 INPUT " CALL YOUR SHOT ";ANG,V
650 GOTO790
740 X=L(N)*TW:GOSUB1720
745 GOSUB4:CLS:PRINT "YOUR BASE BLEW APART FROM THE"
750 PRINT "FORCE OF THE RECOIL "; P$(N); "."
780 GOTO1120
790 N1=N:GOSUB1220
800 CLS0:GOSUB3
810 FORT=VITOVND:POKET,SP(T-VI):NEXTT
830 IF N=2 THEN ANG=180-ANG
840 V1=COS(ANG*.0174533)*V
845 V2=-(SIN(ANG*.0174533))*V
850 MN=L(N):X=L(N)*2:Y=HILL(MN)
860 IFN=1THENX=X+1:GOTO870
865 X=X-6
870 IFN=TWTHENX=X-7*-1:GOTO880
875 X=X-7*0
880 IFV>350THEN740
887 OX=0
890 XO=X:YO=Y
900 X=X+V1/10
905 V1=V1+(W-V1)/30:IFX<0ORX>254THEN490
910 Y=Y+V2/10:V2=V2+6
920 IFY<0THEN960
930 IFOX=0THEN950
935 XX=OX:YY=0:GOSUB100
940 YO=1:XO=OX:OX=0
950 XX=X:YY=Y:GOSUB100
955 XO=X:YO=Y:GOTO970
960 OX=X
970 IFHILL(X/TW)-Y>TWTHEN900
980 Y=HILL(X/TW)+TW
990 XX=X:YY=Y:GOSUB100
1000 IFABS(X/TW-L(3-N))<3THEN1080
1010 IFABS(X/TW-L(N))>3THEN490
1020 GOSUB1720
1030 GOSUB4:CLS:PRINT"YOU DESTROYED YOURSELF ";P$(N);"."
1040 N1=N:GOTO1120
1080 GOSUB1720
1085 GOSUB4:CLS
1090 WIN=N
1110 N=3-N:N1=3-N
1120 SC(3-N)=SC(3-N)+1:IF SC(3-N)+SC(N)=GN THEN 1580
1125 PRINT:PRINT"PRESS enter FOR NEXT BATTLE"
1126 T=RND(100):IFINKEY$<>CHR$(13)THEN1126
1130 FORI=1TO10:ABG(I)=0:VNG(I)=0:NEXTI:GOTO250
1190 PA=(L(N)*2):PY=(HILL(L(N))-1)
1200 XX=PA:YY=PY:GOSUB100:XX=PA:YY=PY-4:GOSUB100:XX=PA:YY=PY-8:GOSUB100
1205 GOSUB155
1210 XX=PA+SGN(W)*4:YY=PY-8:GOSUB100
1215 GOSUB155:RETURN
1220 NN=5*N:FOR J=1 TO 4:K=NN-5+J:ABG(K)=ABG(K+1):VNG(K)=VNG(K+1):NEXT J
1225 VNG(NN)=V:ABG(NN)=ANG:RETURN 
1320 GOSUB4
1330 CLS
1370 PRINT TAB(8); "** BOMBS AWAY **"
1372 PRINT 
1374 PRINT "GAME RULES ARE SIMPLE:":PRINT
1390 PRINT "BLOW UP YOUR OPPONENT BY FIRING"
1400 PRINT "AT THE RIGHT ANGLE AND VELOCITY"
1410 PRINT "WHILE COMPENSATING FOR WIND AND"
1415 PRINT "TERRAIN.  EACH GUNNER MUST"
1420 PRINT "ENTER THE ANGLE (0-90) AND THE"
1440 PRINT "VELOCITY (MAX. 350) SEPARATED"
1445 PRINT "BY A COMMA."
1450 PRINT 
1460 PRINT "PLAYERS' NAMES:"
1470 FOR I=1 TO 2
1480 PRINT"PLAYER";I;:INPUT P$(I)
1490 NEXT I
1510 INPUT "HOW MANY BATTLES TO PLAY ";GN
1520 IF GN<1 OR GN>100 THEN PRINT "PLEASE, DON'T JOKE AROUND!":GOTO 1510
1530 GOTO240
1580 CLS:SOUND130,3
1620 PRINT "THE SCORE:  ":PRINT P$(1);
1625 PRINT "="; SC(1):PRINT P$(2);:PRINT "="; SC(2)
1630 IF SC(1)>SC(2) THEN WI=1
1640 IF SC(1)<SC(2) THEN WI=2
1650 IF SC(1)=SC(2) THEN 1680
1660 PRINT P$(WI); " IS THE WINNER!"
1670 GOTO1700
1680 PRINT "A TIE!"
1700 INPUT "PLAY AGAIN (Y/N)";NAM$:IF NAM$="" THEN 1700
1705 NAM$=LEFT$(NAM$,1):IF NAM$="Y" OR NAM$="y" THEN 80
1710 END 
1720 IFX>128THEN X=L(2)*2:Y=HILL(L(2)):GOTO1730
1725 X=L(1)*2:Y=HILL(L(1))
1730 CX=INT(X/F4):CY=INT(Y/F4):R=1:PST=2:GOSUB30
1740 R=2:GOSUB30:R=3:GOSUB30
1760 PST=1:RETURN
2000 REM GRAPHICS M.L. ROUTINE BY GREG DIONNE
2010 REM <dummyvar>=USR( (X0*256+Y0)*65536 + X1*256+Y1) DRAW LINE
2020 REM <dummyvar>=USR( (X0*256+Y0)*65537) SINGLE POINT
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
