10 REM         Program modified by Tom Karlsson in Dec 93.
20 REM (corrections for the Rainbow GW-BASIC compiler and some spell checking)
30 REM
40 REM    Compile with:    GWBASCOM F-16 /E /O,,,
50 REM    and link with:   LINK F-16,,,BCOM20G
60 REM
100 REM ** F-16 INFILTRATOR **
110 REM ** Written by Edward H. Schoenharl II **
120 REM ** For Epoch Hardware and Software Company **
130 REM ** Date : 02-21-84 **
140 REM ** INITALIZATION **
150 ON ERROR GOTO 1600
160 KEY OFF:GOTO 1890
165 DIM R1(3):DIM R2(3):DIM R9(3):DIM PERSON$(10):DIM SCR(10)
170 SCORE=0
180 SHIP=5:SCREEN 1:WIDTH 80
190 RANDOMIZE CINT(TIMER/3)
191 CLS:X=0:Y=0:X1=0:R=0:R1=0:R2=0:R3=0:R4=0:R5=0:R6=0
195 FOR I=1 TO 3:R9(I)=0:R2(I)=0:NEXT I:R10=0:K$=INKEY$
200 LOCATE 1,1:PRINT"*  F - 1 6   E A R L Y   D E P L O Y M E N T   A I R S T R I K E   F O R C E  *"
210 LOCATE 4,4:PRINT"Written by Edward H. Schoenharl II for Epoch Hardware and Software Company"
220 LOCATE 5,22:PRINT"(C) 1984 , ALL RIGHTS RESERVED."
230 F=7:FUEL = 300
240 GOSUB 710
250 GOSUB 790
260 LOCATE 10,1:PRINT"AIR TO GROUND TO MISSILES : 7"
270 LOCATE 10,33:PRINT"FUEL : 300 UNITS"
280 LOCATE 10,54:PRINT"SHIPS :":LOCATE 10,61:PRINT SHIP
290 LOCATE 10,67:PRINT"SCORE :"
300 REM ** GET KEYS **
310 FUEL=FUEL-2:SCORE=SCORE+1
320 GOSUB 670
330 K$=INKEY$
340 IF X=0 THEN FUEL=FUEL+2:SCORE=SCORE-1
350 IF K$="" THEN 540
360 IF K$="A" OR K$="a" THEN Y=Y-5
370 IF K$="Z" OR K$="z" THEN Y=Y+5
380 IF K$="," THEN X1=-40
390 IF K$="." THEN X=-360:FUEL=FUEL-100
400 IF K$=" " AND F>0 THEN FIRE=1 :CIRCLE(500+X,155+Y),2,,,,4:F=F-1:_
   IF SN=0 THEN SOUND 490,.4:IF F = 0 THEN LOCATE 17,28:PRINT"0"
410 IF K$="S" OR K$="s" THEN GOSUB 790
420 IF Y=15 OR Y= -10 THEN 1120
440 IF FIRE<>1 THEN 540
450 FIRE=0
460 IF Y<>10 THEN 530
470 FOR I=1 TO 3
480 IF 500+X=500-R1(I) THEN CIRCLE(500-R1(I),167),5,2,(3.14*.2),3.2:_
   SCORE=SCORE+50
490 NEXT I
500 FOR I=1 TO 3:IF (500+X)=(500-R9(I)) THEN CIRCLE(500-R9(I),165),8,3,,,.3:_
   SCORE=SCORE+90
510 NEXT I
520 IF (500+X)=(500-R10) THEN CIRCLE((500-R10),168),6,2,.7,2.1,.8:_
   SCORE=SCORE+75
530 CIRCLE(500+X,155+Y),2,3,,,4
540 REM
550 IF FUEL<1 THEN Y=Y+5:X=X-40:LOCATE 24,23:PRINT"**  YOU'RE OUT OF FUEL  **";:IF Y=15 THEN 1120
560 X=X+X1
570 IF X= -400 THEN X=0:GOSUB 840
580 FOR I=1 TO 3
590 IF ((100+R2(I)) = (500+X)) AND Y >= 0 THEN 1120
600 NEXT I
610 IF ((500+X) = (100+(R3*40))) AND ((150+Y) = (140+(R4*5))) THEN 1120
620 IF ((500+X) = (100+(R7*40))) AND Y=0 THEN FUEL = 300:F=7
630 REM ** F-16 **
640 CIRCLE(500+X,150+Y),15,2,,,.08
650 LINE(515+X,149+Y)-(520+X,146+Y),2
660 GOTO 300
670 REM ** F-16 **
675 GOSUB 790
680 CIRCLE(500+X,150+Y),15,0,,,.08
690 LINE(515+X,149+Y)-(520+X,146+Y),0
700 RETURN
710 REM ** GROUND **
720 LINE (0,168)-(640,168),3
730 LINE (0,190)-(640,190),3
740 LOCATE 22,21:PRINT"PREPARE TO ENTER ENEMY AIR SPACE"
750 FOR I=1 TO 100:NEXT I
760 FOR I=1 TO 22:LINE(0,168+I)-(640,168+I),3:NEXT I
770 LINE (0,139)-(640,139),3
780 RETURN
790 REM ** STATUS REPORT **
800 LOCATE 10,27:PRINT F
810 LOCATE 10,74:PRINT SCORE
820 LOCATE 10,39:PRINT FUEL
825 REM Delay is a must due to the faster compiled code...
826 FOR DELAY=0 TO 400:NEXT DELAY
830 RETURN
840 REM ** LAND **
850 FOR I=1 TO 3
860 REM
870 NEXT I
880 R10=0:R2=0:R6=0:R7=0:K=0:L=0:FOR I=1 TO 3:R9(I)=0:R1(I)=0:R2(I)=0:NEXT I
890 FOR I=1 TO 3
900 R1(I)=INT(10*RND(1))+1
910 R1(I)=R1(I)*40:CIRCLE (500-R1(I),167),5,2
920 NEXT I
930 K=INT(3*RND(1))+1:IF K=3 THEN K=0
940 FOR I=1 TO K
950 R2(I)=INT(7*RND(1))+1
960 R2(I)=R2(I)*40:CIRCLE(100+R2(I),165),15,2,,,5
970 NEXT I
980 FOR I=1 TO 2
990 R3=INT(7*RND(1))+1:R4=INT(4*RND(1))+1
1000 CIRCLE(100+(R3*40),140+(R4*5)),2,2
1010 NEXT I
1020 R6=INT(5*RND(1))+1:IF R6<>1 THEN 1050
1030 R7=INT(10*RND(1))+1
1040 CIRCLE (100+(R7*40),150),3,2,,,1.5
1050 L=INT(3*RND(1))+1:IF L=3 THEN L=0
1060 FOR I=1 TO L
1070 R9(I)=INT(10*RND(1))+1
1080 R9(I)=R9(I)*40:CIRCLE(500-R9(I),165),8,2,,,.3
1090 NEXT I
1100 R10=INT(10*RND(1))+1:R10=R10*40:CIRCLE((500-R10),168),6,2,,,.8
1110 RETURN
1120 REM ** CRASH **
1130 C=2:SHIP=SHIP-1
1140 FOR I=1 TO 3
1150 IF I=2 THEN C=0
1160 PSET(500+X,150+Y),C :PSET(505+X,150+Y),C:PSET(495+X,150+Y),C
1170 PSET(500+X,155+Y),C :PSET(500+X,145+Y),C:PSET(495+X,155+Y),C
1180 PSET(495+X,145+Y),C :PSET(505+X,145+Y),C:PSET(505+X,155+Y),C
1190 PSET(490+X,140+Y),C :PSET(510+X,140+Y),C:PSET(510+X,160+Y),C
1200 PSET(490+X,160+Y),C :PSET(510+X,150+Y),C:PSET(490+X,150+Y),C
1210 FOR I1=1 TO 300:NEXT I1
1220 IF I=2 OR SN = 1 THEN 1250
1230 FOR I2=1 TO 3:SOUND 40+I2,.1:SOUND 70+I2,.15:SOUND 100+I2,.2:SOUND 120+I2,.3:NEXT I2
1240 FOR I2=1 TO 3 :SOUND 120+I2,.1:SOUND 100+I2,.15:SOUND 70+I2,.2:SOUND 60+I2,.3:SOUND 50+I2,.4:SOUND 40+I2,1:NEXT I2
1250 NEXT I
1260 IF SHIP = 0 THEN 1300
1270 LOCATE 13,21:PRINT"** GET READY FOR YOUR NEXT SHIP **"
1280 FOR I=1 TO 900:NEXT I
1290 GOTO 190
1300 REM ** BEST SCORE **
1310 CLS:LOCATE 3,24:PRINT" Y O U R    S C O R E : ";SCORE
1320 LOCATE 5,6:PRINT"* F - 1 6  I N F I L T R A T O R    H A L L   O F   F A M E *"
1330 OPEN "F-16.SCR" FOR INPUT AS #1
1340 FOR I = 1 TO 8
1350 INPUT#1,PERSON$(I),SCR(I)
1360 NEXT I
1370 CLOSE#1
1380 IF SCR(8) > SCORE THEN Y=1:GOTO 1470
1390 IF SCR(1) < SCORE THEN COUNTER=1:GOTO 1430
1400 FOR I=8 TO 1 STEP -1
1410 IF SCR(I) > SCORE THEN COUNTER=I+1:GOTO 1430
1420 NEXT I
1430 FOR I=8 TO COUNTER-1 STEP -1:SCR(I+1)=SCR(I):PERSON$(I+1)=PERSON$(I):NEXT I
1440 SCR(COUNTER)=SCORE
1450 LOCATE 21,8:PRINT"VERY GOOD, YOUR HAVE RECEIVED ONE OF THE TOP EIGHT SCORES"
1460 LOCATE 23,8:INPUT"PLEASE ENTER YOUR NAME : ",PERSON$(COUNTER)
1470 FOR I=1 TO 8
1480 IF SCR(I) = SCORE THEN LOCATE 7+I,13:PRINT"*"
1490 LOCATE 7+I,16:PRINT I;". ";PERSON$(I);" HAS A HIGH SCORE OF";SCR(I):NEXT I: IF Y=1 THEN 1550
1500 OPEN "F-16.SCR" FOR OUTPUT AS #1
1510 FOR I=1 TO 8
1520 WRITE#1,PERSON$(I),SCR(I)
1530 NEXT I
1540 CLOSE#1
1550 REM ** PLAY AGAIN ? **
1560 Y=0
1570 LOCATE 24,8:INPUT"WOULD YOU LIKE TO PLAY AGAIN? (<y>/n) : ",AG$
1580 IF AG$="n" OR AG$="N" THEN 2020
1590 GOTO 170
1600 IF ERL=1330 THEN RESUME 1370
1610 IF ERL=1350 THEN RESUME 1370
1630 REM ** INSTRUCTIONS **
1640 CLS:LOCATE 1,1:PRINT"*  F - 1 6   E A R L Y   D E P L O Y M E N T   A I R S T R I K E   F O R C E  *"
1650 LOCATE 24,19:PRINT"** PRESS <RETURN> TO START THE GAME **";
1660 LOCATE 1,1:PRINT:PRINT
1670 PRINT"  YOUR MISSION :  Your mission is to fly into hostile enemy airspace trying to "
1680 PRINT"                  knock out as many missile silos, control buildings, and ammo"
1690 PRINT"                  depots that you can. You will have to avoid things such as "
1700 PRINT"                  radio towers, explosive balloons(some are not armed), and a"
1710 PRINT"                  deadly particle beam above you in the air."
1720 PRINT
1730 PRINT"  YOUR PLANE   :  You will be flying an F-16 Infiltrator equiped with seven (7)"
1740 PRINT"                  air to ground missiles, and 300 units of fuel. The missiles"
1750 PRINT"                  may only be fired, with accuracy, directly above their target"
1760 PRINT"                  You will fly the plane by using the <A> key to move upward,"
1770 PRINT"                  the <Z> key to move downward, and the <,> key to move forward"
1780 PRINT"                  The <.> key is a thruster. It will advance you a great speed,"
1790 PRINT"                  allowing you to miss many obsticles, but it uses a large"
1800 PRINT"                  amount of fuel. The <SPACE BAR> will be used for launching"
1810 PRINT"                  air to ground missiles."
1820 PRINT
1830 PRINT"  OTHER        :  To be resupplied you must fly through, what looks like a big"
1840 PRINT"                  sideways floating oval. You must be careful not"
1850 PRINT"                  to get close to the ground or you will crash. "
1860 PRINT"                  You must destroy five ships to complete your task."
1880 INPUT"",DL$ ' IF INKEY$<>"" THEN 1885 ELSE 1880
1885 CLS:GOTO 165
1890 REM ** INTRO **
1900 CLS:LOCATE 1,1:PRINT"*  F - 1 6   E A R L Y   D E P L O Y M E N T   A I R S T R I K E   F O R C E  *"
1910 LOCATE 3,2:PRINT"Written by Edward H. Schoenharl II for Epoch Hardware and Software Company"
1920 LOCATE 4,22:PRINT"(C) 1984 , ALL RIGHTS RESERVED."
1930 LOCATE 6,10:PRINT"Any comments, suggestions, or controbutions may be sent to"
1940 LOCATE 7,2:PRINT"Epoch Hardware and Software Company, 25 Chatham Circle, Wellesley Ma. 02181"
1950 LOCATE 9,2:PRINT"(Modified by Tom Karlsson, to be accepted by the Rainbow GW-BASIC compiler)"
1960 SN = 1   '''''' sound off ''''''''
1970 LOCATE 12,10:INPUT"WOULD YOU LIKE INSTRUCTIONS (y/n) : ",HL$
1980 IF HL$="Y" OR HL$="y" THEN 1630
1990 IF HL$="N" OR HL$="n" THEN 2010 ELSE 1970
2010 GOTO 165
2020 CLS:LOCATE 10,27:PRINT"THANK YOU FOR PLAYING"