1000  REM COPYRIGHT DAVID SHAYER 1978
1010  REM NO REPRODUCTION OF ANY SORT WITHOUT EXPRESSED PERMISSION
1020  REM *** INITIALAZATION ***
1030  DIM C$[100],A$[100],M$[100],S$[100],R$[100]
1040  DIM W[11],V[5],Z[30,20]
1050  C$="  WRPIMPSENPHATORSHEDAMENMREPCMPDESHEL"
1060  R$=" E+*"
1070  FOR X=1 TO 11
1080  W[X]=0
1090  NEXT X
1100  FOR X=1 TO 5
1110  V[X]=0
1120  NEXT X
1130  E=5000
1140  E1=5000
1150  S=1000
1160  S1=1000
1170  F=10
1180  F1=10
1190  T1=INT(RND(0)*30)+1
1200  T2=INT(RND(0)*20)+1
1210  T3=INT(RND(0)*30)+1
1220  T4=INT(RND(0)*20)+1
1230  MAT Z=ZER
1240  Z[T1,T2]=1
1250  Z[T3,T4]=2
1260  FOR X=1 TO INT(RND(0)*5)+1
1270  Z[INT(RND(0)*30)+1,INT(RND(0)*20)+1]=3
1280  NEXT X
1290  DATA "WARP DRIVE","IMPULSE DRIVE","SENSORS","PHASERS"
1300  DATA "PHOTON TUBES","SHIELD CONTROL","DAMAGE CONTROL REPORT"
1310  DATA "ENEMY DAMAGE REPORT","REPAIRS","COMPUTER","SELF DESTRUCT"
1320  REM *** COMMAND INPUT ***
1330  E=E+250
1340  E1=E1+250
1350  PRINT 
1360  PRINT "COMMAND";
1370  INPUT A$
1380  PRINT 
1390  IF A$="HELP" THEN 1600
1400  IF A$#"COURSE" THEN 1440
1410  GOSUB 6680
1420  PRINT A3
1430  GOTO 1320
1440  FOR X=1 TO 11
1450  IF A$[1,3]=C$[X*3,X*3+2] THEN 1490
1460  NEXT X
1470  PRINT "COMMAND NOT RECOGNIZED"
1480  GOTO 1320
1490  IF W[X]>-5 THEN 1520
1500  PRINT "DEVICE UNDER REPAIR"
1510  GOTO 1320
1520  IF W[X]>-1 THEN 1590
1530  RESTORE 
1540  FOR D=1 TO X
1550  READ M$
1560  NEXT D
1570  PRINT M$" DAMAGED ";
1580  GOTO X OF 1740,2470,2560,2870,3110,3540,3720,3930,4300,4670,5010
1590  GOTO X OF 1790,2530,2680,2910,3150,3420,3560,4160,4330,4710,5060
1600  PRINT 
1610  PRINT "WRP-WARP DRIVE"
1620  PRINT "IMP-IMPULSE DRIVE"
1630  PRINT "SEN-SENSORS"
1640  PRINT "PHA-PHASERS"
1650  PRINT "TOR-PHOTON TORPEDOS"
1660  PRINT "SHE-DEFENSIVE SHIELDS"
1670  PRINT "DAM-DAMAGE CONTROL REPORT"
1680  PRINT "ENM-ENEMY DAMAGE REPORT"
1690  PRINT "REP-REPAIRS"
1700  PRINT "CMP-COMPUTER CONTROLED ATTACK"
1710  PRINT "DES-SELF DESTRUCT"
1720  PRINT "HELP-REVIEW COMMANDS"
1730  GOTO 1320
1740  REM *** WARP DRIVE ***
1750  PRINT "MAXIMUN SPEED";
1760  M=ABS(8+INT(W1*2))
1770  PRINT M
1780  GOTO 1800
1790  M=8
1800  M$="WARP"
1810  REM *** WARP/IMPULSE INPUTS ***
1820  CONVERT A$[4,4] TO B,2005
1830  IF B>8 OR B<1 THEN 1870
1840  CONVERT A$[5,5] TO C,2079
1850  IF C <= M THEN 2050
1860  GOTO 1960
1870  PRINT M$" COURSE";
1880  INPUT B
1890  IF B=0 THEN 1320
1900  IF B<9 AND B>0 THEN 1930
1910  PRINT "A COURSE MUST BE 1-8"
1920  GOTO 1870
1930  IF B=INT(B) THEN 1960
1940  PRINT "INTEGERS ONLY"
1950  GOTO 1870
1960  PRINT M$" FACTOR";
1970  INPUT C
1980  IF C=0 THEN 1870
1990  IF C <= M THEN 2020
2000  PRINT "MAXIMUM SPEED IS"M
2010  GOTO 1960
2020  IF C=INT(C) THEN 2050
2030  PRINT "INTEGERS ONLY"
2040  GOTO 1960
2050  REM *** SET WARP/IMPULSE DIRECTION ***
2060  GOTO B OF 2070,2100,2130,2160,2190,2220,2250,2280
2070  A1=1
2080  A2=0
2090  GOTO 2300
2100  A1=1
2110  A2=1
2120  GOTO 2300
2130  A1=0
2140  A2=1
2150  GOTO 2300
2160  A1=-1
2170  A2=1
2180  GOTO 2300
2190  A1=-1
2200  A2=0
2210  GOTO 2300
2220  A1=-1
2230  A2=-1
2240  GOTO 2300
2250  A1=0
2260  A2=-1
2270  GOTO 2300
2280  A1=1
2290  A2=-1
2300  REM *** EXECUTE WARP/IMPULSE MOVEMENT ***
2310  FOR D=1 TO C
2320  IF T1+A1>0 AND T1+A1<31 AND T2+A2>0 AND T2+A2<21 THEN 2350
2330  PRINT "YOU CAN'T LEAVE THE GALAXY"
2340  GOTO 2460
2350  IF Z[T1+A1,T2+A2]=0 THEN 2410
2360  IF Z[T1+A1,T2+A2] <> 3 THEN 2390
2370  PRINT "YOU HIT A STAR!!!!!"'7'7'7'7'7'7'7'7" YOUR DEAD, SUCKER!!!!!!"'7'7'7'7'7'7
2380  GOTO 6660
2390  PRINT "ENTERPRISE COLLISION WITH KLINGON, NO DAMAGE"
2400  GOTO 2460
2410  Z[T1,T2]=0
2420  T1=T1+A1
2430  T2=T2+A2
2440  Z[T1,T2]=1
2450  NEXT D
2460  GOTO 5150
2470  REM *** IMPULSE DRIVE ***
2480  IF W[2]>-5 THEN 2490
2490  PRINT "MAXIMUN SPEED";
2500  M=ABS(3+INT(W[2]*.5))
2510  PRINT M
2520  GOTO 2540
2530  M=3
2540  M$="IMPULSE"
2550  GOTO 1810
2560  REM *** SENSORS ***
2570  PRINT "MAY GIVE ERRONIOUS RESULTS"
2580  PRINT 
2590  REM *** SENSORS *** PRINT RANDOM NUMBERS ***
2600  FOR D=1 TO 20
2610  FOR D1=1 TO 30
2620  R=INT(SQR((RND(0)*16)+1))
2630  S$[D1,D1]=R$[R,R]
2640  NEXT D1
2650  PRINT S$
2660  NEXT D
2670  GOTO 5150
2680  REM *** SENSORS *** PRINT ARRAY (Z) ***
2690  PRINT 
2700  FOR D=20 TO 1 STEP -1
2710  M=0
2720  FOR D1=1 TO 30
2730  S$[D1,D1]=R$[Z[D1,D]+1,Z[D1,D]+1]
2740  IF Z[D1,D]=0 THEN 2760
2750  M=1
2760  NEXT D1
2770  IF M=0 THEN 2840
2780  FOR X=1 TO 30
2790  PRINT " ";
2800  PRINT S$[X,X];
2810  NEXT X
2820  PRINT 
2830  GOTO 2850
2840  PRINT 
2850  NEXT D
2860  GOTO 5150
2870  REM *** PHASERS ***
2880  PRINT "ACCURACY IS HAMPERED"
2890  M=ABS(W[4])
2900  GOTO 2920
2910  M=1
2920  REM *** PHASER INPUTS ***
2930  IF LEN(A$)=3 THEN 2970
2940  A1=LEN(A$)
2950  CONVERT A$[4,A1] TO B,2950
2960  GOTO 2990
2970  PRINT E"UNITS AVAILIBLE. NO.OF UNITS TO FIRE";
2980  INPUT B
2990  IF B>E OR B<0 THEN 2970
3000  IF B=0 THEN 1320
3010  REM *** FIRE PHASERS ***
3020  E=E-B
3030  REM *** CALCULATE DISTANCE FROM KLINGON ***
3040  A1=ABS(T1-T3)
3050  A2=ABS(T2-T4)
3060  A3=SQR((A1^2)+(A2^2))
3070  H=(B/M)/A3
3080  S1=S1-H
3090  PRINT H"UNIT HIT ON KLINGON",H/B*100"PERCENT EFFICIENT"
3100  GOTO 5150
3110  REM *** PHOTON TORPEDOS ***
3120  PRINT "ACCURACY IS HAMPERED"
3130  M=(RND(0)*(W[5]*-17))-((W[5]*-17)/2)
3140  GOTO 3160
3150  M=0
3160  IF F>0 THEN 3190
3170  PRINT "ALL PHOTON TORPEDOS EXPENDED"
3180  GOTO 1320
3190  REM *** TORPEDO COURSE INPUT ***
3200  IF LEN(A$)=3 THEN 3240
3210  A1=LEN(A$)
3220  CONVERT A$[4,A1] TO B,3272
3230  GOTO 3260
3240  PRINT "TORPEDO COURSE";
3250  INPUT B
3260  IF B=0 THEN 1320
3270  IF B<1 OR B>8.99999 THEN 3240
3280  REM *** FIRE TORPEOD ***
3290  IF F>1 THEN 3310
3300  PRINT "THAT WAS YOUR LAST PHOTON TORPEDO"
3310  F=F-1
3320  GOSUB 6680
3330  REM *** COMPARE HUMAN'S COURSE WITH TRUE COURSE ***
3340  IF ABS(B-A3)>.3 THEN 3400
3350  PRINT "TORPEDO HIT ON KLINGON";
3360  H=500-(ABS(B-A3)*1500)
3370  S1=S1-H
3380  PRINT H"UNITS DAMAGE EQUIVILANT"
3390  GOTO 5150
3400  PRINT "TORPEDO MISSED"
3410  GOTO 5150
3420  REM *** SHIELD CONTROL ***
3430  A1=LEN(A$)
3440  IF A1=3 THEN 3470
3450  CONVERT A$[4,A1] TO B,3515
3460  GOTO 3490
3470  PRINT "SHIELDS AT"S"UNITS",E"UNITS AVAILIBLE. ADD HOW MANY";
3480  INPUT B
3490  IF B>E OR B*-1>S THEN 3470
3500  S=S+B
3510  E=E-B
3520  PRINT "SHIELDS NOW AT"S,E"UNITS AVAILIBLE"
3530  GOTO 5150
3540  PRINT "INOPERABLE"
3550  GOTO 1320
3560  REM *** DAMAGE CONTROL REPORT *** ACCURATE DATA ***
3570  PRINT "DAMAGE CONTROL REPORT"
3580  PRINT 
3590  PRINT E"UNITS OF ENERGY"
3600  PRINT S"UNITS IN SHIELDS"
3610  PRINT F"PHOTON TORPEDOS LEFT"
3620  IF A$[4,4]="S" THEN 5150
3630  PRINT 
3640  RESTORE 
3650  FOR D=1 TO 11
3660  READ M$
3670  PRINT M$;TAB(20);
3680  PRINT W[D]
3690  NEXT D
3700  PRINT 
3710  GOTO 5150
3720  REM *** DAMAGE CONTROL REPORT *** ERRONIOUS DATA ***
3730  PRINT "RESULTS MAY BE ERRONIOUS"
3740  PRINT 
3750  PRINT "DAMAGE CONTROL REPORT"
3760  PRINT 
3770  A1=RND(0)*1000
3780  PRINT A1"UNITS OF ENERGY"
3790  A1=RND(0)*1000
3800  PRINT A1"UNITS IN SHIELDS"
3810  A1=RND(0)*50
3820  PRINT A1"PHOTON TORPEDOS LEFT"
3830  IF A$[4,4]="S" THEN 5150
3840  PRINT 
3850  RESTORE 
3860  FOR X=1 TO 11
3870  READ M$
3880  PRINT M$;TAB(20);
3890  A1=RND(0)*-35
3900  PRINT A1
3910  NEXT X
3920  GOTO 5150
3930  REM *** ENEMY DAMAGE REPORT *** ERRONIOUS DATA ***
3940  PRINT "RESULTS MAY BE ERRONIOUS"
3950  PRINT 
3960  A1=RND(0)*1000
3970  PRINT A1"UNITS OF ENERGY"
3980  A1=RND(0)*1000
3990  PRINT A1"UNITS IN SHIELDS"
4000  A1=RND(0)*50
4010  PRINT A1"PHOTON TORPEDOS LEFT"
4020  IF A$[4,4]="S" THEN 5150
4030  PRINT 
4040  PRINT "DUE TO ENEMY SHIELDS, COMPLETE DATA NOT AVAILIBLE"
4050  A1=RND(0)*-35
4060  PRINT "WARP DRIVE"TAB(20);A1
4070  A1=RND(0)*-35
4080  PRINT "IMPULSE DRIVE"TAB(20);A1
4090  A1=RND(0)*-35
4100  PRINT "PHASERS"TAB(20);A1
4110  A1=RND(0)*-35
4120  PRINT "PHOTON TUBES"TAB(20);A1
4130  A1=RND(0)*-35
4140  PRINT "SHIELD CONTROL"TAB(20);A1
4150  GOTO 5150
4160  REM *** ENEMY DAMAGE REPORT *** ACCURATE DATA ***
4170  PRINT 
4180  PRINT E1"UNITS OF ENERGY"
4190  PRINT S1"UNITS IN SHIELDS"
4200  PRINT F1"PHOTON TORPEDOS LEFT"
4210  IF A$[4,4]="S" THEN 5150
4220  PRINT 
4230  PRINT "DUE TO ENEMY SHIELDS, COMPLETE DATA NOT AVAILIBLE"
4240  PRINT "WARP DRIVE"TAB(20);V[1]
4250  PRINT "IMPULSE DRIVE"TAB(20);V[2]
4260  PRINT "PHASERS"TAB(20);V[3]
4270  PRINT "PHOTON TUBES"TAB(20);V[4]
4280  PRINT "SHIELD CONTROL"TAB(20);V[5]
4290  GOTO 5150
4300  REM *** REPAIRS ***
4310  M=ABS(W[9])
4320  GOTO 4340
4330  M=1
4340  REM *** INPUT DEVICE ***
4350  A1=LEN(A$)
4360  IF A1=3 THEN 4390
4370  M$=A$[4,6]
4380  GOTO 4420
4390  PRINT "REPAIRS"
4400  PRINT "REPAIR WHICH DEVICE?";
4410  LINPUT M$
4420  IF M$="" THEN 1320
4430  IF M$="0" THEN 1320
4440  FOR X=1 TO 10
4450  IF M$=C$[X*3,X*3+2] THEN 4490
4460  NEXT X
4470  PRINT "DEVICE NOT RECOGNIZED"
4480  GOTO 4400
4490  IF W[X]<0 THEN 4520
4500  PRINT "DEVICE NOT DAMAGED"
4510  GOTO 4400
4520  IF A1<7 THEN 4550
4530  CONVERT A$[7,A1] TO C,4712
4540  GOTO 4580
4550  PRINT "300 UNITS OF ENERGY OFFSETS ONE DAMAGE POINT"
4560  PRINT E"UNITS AVAILIBLE. HOW MANY UNITS TO DEVICE";
4570  INPUT C
4580  IF C=0 THEN 4390
4590  IF C>E OR C<0 THEN 4550
4600  W[X]=W[X]+((C/M)/300)
4610  E=E-C
4620  FOR A1=1 TO X
4630  READ M$
4640  NEXT A1
4650  PRINT M$" NOW AT"W[X]
4660  GOTO 5150
4670  REM *** COMPUTER ATTACK ***
4680  PRINT "ACCURACY IS HAMPERED"
4690  M=ABS(W[4])
4700  GOTO 4720
4710  M=0
4720  REM *** SELECT PHASER OR TORPEDO ATTACK ***
4730  IF W[4]>-5 AND W[5]>-5 THEN 4760
4740  PRINT "PHASERS AND PHOTON TUBES ARE UNDER REPAIR"
4750  GOTO 1320
4760  IF F=0 THEN 4840
4770  IF W[4]<-1 AND W[5]<-1 THEN 4790
4780  GOTO 4810
4790  PRINT "PHASERS AND PHOTON TUBES ARE DAMAGED, ACCURACY IS HAMPERED"
4800  GOTO 4830
4810  IF W[4]<-1 THEN 4910
4820  IF W[5]<-1 THEN 4840
4830  IF E/600<F THEN 4910
4840  REM *** PHASER ATTACK ***
4850  R=(RND(0)*E/10)+(E/10)
4860  R=R-(M*75)
4870  PRINT "PHASER FIRING"R"UNITS"
4880  CONVERT R TO A$[4,6]
4890  A$[1,3]="PHA"
4900  GOTO 1440
4910  REM *** TORPEDO ATTACK ***
4920  GOSUB 6680
4930  IF A3=1 THEN 4950
4940  A3=A3-(M/6)
4950  PRINT "TORPEDO ON COURSE"
4960  CONVERT A3 TO M$
4970  A1=LEN(M$)
4980  A$[4,A1+3]=M$[1,A1]
4990  A$[1,3]="TOR"
5000  GOTO 1440
5010  REM *** SELF DESTRUCT ***
5020  PRINT "YOU WILL BE DESTROYED, BUT YOU MAY NOT"
5030  PRINT "TAKE THE KLINGONS WITH YOU"
5040  M=ABS(W[11])
5050  GOTO 5070
5060  M=1
5070  R=(RND(0)*25)+(30/M)
5080  PRINT "BOOM!"
5090  PRINT "THE ENTERPRISE HAS DESTRUCTED"
5100  PRINT "THE RESULTING BLAST HAS DESTROYED ALL LIFE"
5110  IF R<30 THEN 5130
5120  PRINT "(THAT MEANS THE KLINGON SHIP, AND A COUPLE OF STARS, TOO!)"
5130  PRINT "WITHIN A"R"CUBIC PARSEC DISTANCE"
5140  GOTO 6670
5150  IF E <= 0 THEN 6660
5160  REM *** KLINGON DAMAGE? ***
5170  IF S1>400 THEN 5450
5180  IF S1<-600 THEN 6640
5190  IF S1>0 THEN 5340
5200  PRINT "KLINGON SHIELD BREAKDOWN, ";
5210  R=INT(RND(0)*5)+1
5220  V[R]=V[R]+(S1/50)
5230  S1=0
5240  GOTO R OF 5250,5270,5290,5310,5330
5250  PRINT "WARP DRIVE DAMAGED"
5260  GOTO 5340
5270  PRINT "IMPULSE DRIVE DAMAGED"
5280  GOTO 5340
5290  PRINT "PHASERS DAMAGED"
5300  GOTO 5340
5310  PRINT "PHOTON TUBES DAMAGED"
5320  GOTO 5340
5330  PRINT "SHIELD CONTROL DAMAGED"
5340  REM *** RE-ENFORCE KLINGON SHIELDS ***
5350  IF V[5]<-1 THEN 5710
5360  PRINT "KLINGON SHIP RE-ENFORCING THEIR SHIELDS"
5370  IF E1<1000 THEN 5420
5380  A1=500-S1
5390  S1=S1+A1
5400  E1=E1-A1
5410  GOTO 6420
5420  S1=S1+(E1/2)
5430  E1=E1/2
5440  GOTO 6420
5450  REM *** KLINGON ATTACK ***
5460  IF V[3]<-5 AND V[4]<-5 THEN 5710
5470  IF F1=0 THEN 5510
5480  IF V[3]<-1 THEN 5620
5490  IF V[4]<-1 THEN 5510
5500  IF E1/600<F1 THEN 5620
5510  REM *** KLINGON PHASER ATTACK ***
5520  A1=ABS(T1-T3)
5530  A2=ABS(T2-T4)
5540  A3=SQR((A1*A1)+(A2*A2))
5550  IF A3>5 THEN 5770
5560  A1=E1/8
5570  H=(A1-(ABS(V[3])*100))/A3
5580  E1=E1-A1
5590  S=S-H
5600  PRINT H"UNIT PHASER HIT ON ENTERPRISE"
5610  GOTO 6270
5620  REM *** KLINGON TORPEDO ATTACK ***
5630  IF F1=0 THEN 5710
5640  PRINT "TORPEDO HIT ON ENTERPRISE,";
5650  F1=F1-1
5660  H=500-ABS(V[4]*100)
5670  H=H-(RND(0)*250)
5680  S=S-H
5690  PRINT H"UNITS DAMAGE EQUIVILANT"
5700  GOTO 6270
5710  REM *** KLINGON RETREAT ***
5720  IF V[1]<-5 AND V[2]<-5 THEN 6270
5730  GOSUB 6680
5740  PRINT "KLINGON RETREATING AT FACTOR";
5750  A3=INT(A3)
5760  GOTO 5870
5770  REM *** KLINGON MOVE TOWARDS ENTERPRISE ***
5780  IF V[1]<-5 AND V[2]<-5 THEN 6270
5790  PRINT "KLINGON MOVING TOWARDS ENTERPRISE AT FACTOR";
5800  GOSUB 6680
5810  IF A3 >= 5 THEN 5840
5820  A3=A3+4
5830  GOTO 5850
5840  A3=A3-4
5850  A3=INT(A3)
5860  REM *** EXECUTE KLINGON ADVANCE/RETREAT ***
5870  GOTO A3 OF 5880,5910,5940,5970,6000,6030,6060,6090
5880  A1=1
5890  A2=0
5900  GOTO 6110
5910  A1=1
5920  A2=1
5930  GOTO 6110
5940  A1=0
5950  A2=1
5960  GOTO 6110
5970  A1=-1
5980  A2=1
5990  GOTO 6110
6000  A1=-1
6010  A2=0
6020  GOTO 6110
6030  A1=-1
6040  A2=-1
6050  GOTO 6110
6060  A1=0
6070  A2=-1
6080  GOTO 6110
6090  A1=1
6100  A2=-1
6110  FOR X=1 TO INT(((RND(0)*3)+5)-ABS(V[1]))
6120  IF T3+A1<1 OR T3+A1>30 OR T4+A2<1 OR T4+A2>20 THEN 6260
6130  IF Z[T3+A1,T4+A2]=0 THEN 6210
6140  IF Z[T3+A1,T4+A2]=3 THEN 6180
6150  PRINT X
6160  PRINT "KLINGON COLLIDED WITH ENTERPRISE, NO DAMAGE"
6170  GOTO 6270
6180  PRINT X
6190  PRINT "KLINGON RAN INTO A STAR"
6200  GOTO 6640
6210  Z[T3,T4]=0
6220  T3=T3+A1
6230  T4=T4+A2
6240  Z[T3,T4]=2
6250  NEXT X
6260  PRINT X
6270  REM *** ENTERPRISE DAMAGE? ***
6280  IF S<-450 THEN 6660
6290  IF S<0 THEN 6340
6300  IF S>400 THEN 6420
6310  PRINT 
6320  PRINT "YOUR SHIELDS ARE LOW"
6330  GOTO 6420
6340  PRINT "ENTERPRISE SHIELD BREAKDOWN, ";
6350  RESTORE 
6360  FOR X=1 TO INT(RND(0)*11)+1
6370  READ M$
6380  NEXT X
6390  PRINT M$" DAMAGED"
6400  W[X]=W[X]+(S/50)
6410  S=0
6420  REM *** REPAIR ENTERPRISE DEVICES ***
6430  FOR X=1 TO 11
6440  IF W[X] >= 0 THEN 6530
6450  W[X]=W[X]+.5
6460  IF W[X]<0 THEN 6550
6470  RESTORE 
6480  FOR A1=1 TO X
6490  READ M$
6500  NEXT A1
6510  PRINT 
6520  PRINT "REPAIRS ON "M$" FINISHED"
6530  IF W[X] <= 0 THEN 6550
6540  W[X]=0
6550  NEXT X
6560  REM *** REPAIR KLINGON DEVICES ***
6570  FOR X=1 TO 5
6580  IF V[X] >= 0 THEN 6600
6590  V[X]=V[X]+.5
6600  IF V[X] <= 0 THEN 6620
6610  V[X]=0
6620  NEXT X
6630  GOTO 1320
6640  PRINT "KLINGON SHIP HAS BEEN DESTROYED"
6650  GOTO 6670
6660  PRINT "THE ENTERPRISE IS DESTROYED"
6670  GOTO 6890
6680  REM *** CALCULATE COURSE ***
6690  A1=ABS(T1-T3)
6700  A2=ABS(T2-T4)
6710  IF A1 <> 0 THEN 6770
6720  IF T2>T4 THEN 6750
6730  A3=3
6740  RETURN 
6750  A3=7
6760  RETURN 
6770  A3=ATN(A2/A1)
6780  IF T1 >= T3 AND T2<T4 THEN 6820
6790  IF T1>T3 AND T2 >= T4 THEN 6840
6800  IF T1 <= T3 AND T2>T4 THEN 6860
6810  GOTO 6870
6820  A3=A3+90
6830  GOTO 6870
6840  A3=A3+180
6850  GOTO 6870
6860  A3=A3+270
6870  A3=(A3/45)+1
6880  RETURN 
6890  REM THIS PROGRAM IS THE PROPERTY OF DAVID SHAYER
6900  END 
