

10 FOR XX=0 TO 1:FOR YY=0 TO 2:READ LU(XX,YY):NEXT YY:NEXT XX
20 DATA 5,3,1,4,2,0
30 VIDRAM=16384:VND=16895:VCTRL=49151:CH=16
40 DIM HILL(140)
45 DIM SC(2)
50 DIM P$(2)
60 DIM L(12)
65 DIM VNG(12)
70 DIM ABG(13)
75 NAM$=""
80 FOR I=0 TO 139:HILL(I)=0:NEXT I
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):X1=INT(XX/2):Y1=INT(YY/3)
110 OF=X1+Y1*32:BYTE=VIDRAM+OF
115 XMOD2=INT(XX-X1*2)
120 YMOD3=INT(YY-Y1*3)
125 BIT=LU(XMOD2,YMOD3)
130 VLU=2^BIT
135 OLD=PEEK(BYTE)
140 MASK=VLU OR OLD
145 POKE BYTE,MASK
150 RETURN
160 N=158-RND(58)
170 IF N/4-INT(N/4)<>0 THEN N=N+1:GOTO 170
180 RETURN
190 FOR XX=0 TO 63:YY=HILL(XX*2):GOSUB105:NEXT XX
200 RETURN
240 N1=2
250 CLS0:GOSUB2750
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 CLS:GOSUB2770: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 GOSUB2770:CLS:PRINT "YOUR BASE BLEW APART FROM THE"
750 PRINT "FORCE OF THE RECOIL "; P$(N); "."
780 GOTO1120
790 GOSUB1220
800 CLS0:GOSUB2750
810 N1=N:N=1:GOSUB1190:N=2:GOSUB1190
820 GOSUB190:N=N1
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>349 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 GOSUB2770:CLS:PRINT"YOU DESTROYED YOURSELF ";P$(N);"."
1040 GOTO1120
1080 GOSUB1720
1085 GOSUB2770:CLS
1090 WIN=N
1110 N=3-N
1120 SC(3-N)=SC(3-N)+1:IF SC(3-N)+SC(N)=GN THEN 1580
1125 PRINT:INPUT"PRESS ENTER FOR NEXT BATTLE";NAM$:CLS0:GOSUB2750
1130 FOR I=1 TO 10:ABG(I)=0:VNG(I)=0:NEXT I:N1=3-N1:GOTO260
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
1210 XX=PA+SGN(W)*4:YY=PY-8:GOSUB100
1215 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 GOSUB2770
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 GOTO 240
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 X(0)=X:Y(0)=Y:X(1)=X+10:Y(1)=Y-10:GOSUB2410
1740 X(0)=X:Y(0)=Y:X(1)=X-10:Y(1)=Y-10:GOSUB2410
1760 RETURN 
2410 DX=X(1)-X(0):DY=Y(1)-Y(0):SX=SGN(DX):SY=SGN(DY)
2440 IF DX=0 THEN 2550
2450 SL=DY/DX:B=Y(0)-SL*X(0)
2460 T1=SQR(SL*SL+1)
2470 NX=1/T1*SX
2480 FOR XT=X(0) TO X(1) STEP NX
2490 XX=INT(XT+.5)
2500 YY=INT(SL*XT+B+.5)
2510 GOSUB100:GOSUB2950
2520 NEXT XT
2530 GOTO2585
2550 XX=X(0)/4
2560 FOR DY=Y(0) TO Y(1) STEP SY
2565 YY=DY/2
2570 GOSUB100:GOSUB2950
2580 NEXT DY
2585 RETURN
2750 POKE VCTRL,CH OR ( PEEK(VCTRL) AND 7)
2760 RETURN
2770 POKE VCTRL,0
2780 RETURN
2950 BIT=6:GOSUB130:BIT=7:GOSUB130:RETURN


