0 CLEAR100:DIMLU(1,2),X(1),Y(1):FORX=0TO1:FORY=0TO2:READLU(X,Y):NEXTY,X:DATA32,8,2,16,4,1
1 DIMSP(512),VIDRAM,VND,T,XX,YY,X1,Y1:VIDRAM=16384:VND=16895:VCTRL=49151:CH=16:CLS:GOTO20
2 POKEBYTE,MASK:IFMASK<192THENPOKEBYTE,MASK+64
3 POKEVCTRL,CHOR(PEEK(VCTRL)AND7):RETURN
4 POKEVCTRL,0:RETURN
5 X1=INT(XX/2):Y1=INT(YY/3):BYTE=VIDRAM+(X1+Y1*32):VLU=LU(INT(XX-X1*2),INT(YY-Y1*3))
6 MASK=VLUORPEEK(BYTE):ONPSTGOTO7,2:POKEBYTE,NOT(NOTMASKORVLU):RETURN
7 POKEBYTE,MASK:RETURN
20 DIM HILL(140),SC(2),P$(2),L(12),VNG(12),ABG(13)
25 NAM$="":PST=1:GOTO80
30 XC=0:YC=R:PC=3-2*R 
35 GOSUB70
40 IFPC<0THENPC=PC+4*XC+6:GOTO50
45 PC=PC+4*(XC-YC)+10:YC=YC-1   
50 XC=XC+1 
55 IFXC<YCTHEN35
60 IFXC=YCTHENGOSUB70 
65 RETURN
70 REM XX=CX+XC:YY=CY+YC:GOSUB5
71 REM XX=CX-XC:YY=CY+YC:GOSUB5
72 XX=CX+XC:YY=CY-YC:GOSUB5
73 XX=CX-XC:YY=CY-YC:GOSUB5
74 REM XX=CX+YC:YY=CY+XC:GOSUB5
75 REM XX=CX-YC:YY=CY+XC:GOSUB5 
76 XX=CX+YC:YY=CY-XC:GOSUB5
77 XX=CX-YC:YY=CY-XC:GOSUB5
79 RETURN
80 GOSUB3000:FORI=0TO139:HILL(I)=0:NEXTI
85 FOR I=0 TO 2:SC(I)=0:P$(I)="":NEXT I
90 FOR I=0 TO 11:VNG(I)=0:ABG(I)=0:NEXT I
95 GOTO1320
100 XX=INT(XX/4)
105 YY=INT(YY/4):GOSUB5:RETURN
155 SP(BYTE-VIDRAM)=MASK:RETURN
160 N=158-RND(58)
170 IF N/4-INT(N/4)<>0 THEN N=N+1:GOTO 170
180 RETURN
190 FORXX=0TO63:YY=HILL(XX*2):GOSUB105:GOSUB155:NEXTXX
200 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)/2
330 D1=N-HILL(1)/2
340 D2=N-HILL(139)/2
390 A=180:R=180/(HZ-XC+1):N=HILL(1)+D1
400 FOR I=INT(XC+1) TO INT(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 FOR I=INT(HZ+1) TO INT(HC-1)
425 A=A+R:HILL(I)=COS(A*.0174533)*D2+N:NEXT I
430 GOSUB190
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 PRINT  INT(W); "TO THE EAST."
590 REM
595 PRINT P$(N); 
600 INPUT " CALL YOUR SHOT ";ANG,V
650 GOTO790
740 X=L(N)*2: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=VIDRAMTOVND:POKET,SP(T-VIDRAM):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 IF N=1 THEN X=X+1:GOTO870
865 X=X-6
870 IF N=2 THEN X=X-7*-1:GOTO880
875 X=X-7*0
880 IF V>350 THEN 740
887 OX=0
890 XO=X:YO=Y
900 X=X+V1/10
905 V1=V1+(W-V1)/30:IF X<0 OR X>254 THEN 490
910 Y=Y+V2/10:V2=V2+6
920 IF Y<0 THEN 960
930 IF OX=0 THEN 950
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 IF HILL(X/2)-Y>2 THEN 900
980 Y=HILL(X/2)+2
990 XX=X:YY=Y:GOSUB100
1000 IF ABS(X/2-L(3-N))<3 THEN 1080
1010 IF ABS(X/2-L(N))>3 THEN 490
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)
1127 IF INKEY$<>CHR$(13)THEN1126
1128 GOSUB3000
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 REM 
1690 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 IF X>128 THEN X=L(2)*2:Y=HILL(L(2)):GOTO1730
1725 X=L(1)*2:Y=HILL(L(1))
1730 CX=INT(X/4):CY=INT(Y/4):R=1:PST=2:GOSUB30
1740 R=2:GOSUB30:R=3:GOSUB30
1760 PST=1:RETURN
3000 PRINT:PRINT"PLEASE WAIT..."
3010 FORT=0TO512:SP(T)=128:NEXTT
3020 RETURN
