1  REM ADAPTED FROM INTEREX 2730_L074 FILE TREK8
2  REM MODIFIED FOR PTBASIC BY WTN 1/23 - REPLACED TIM STUFF WITH
3  REM NUMBER PROMPT FOR SEEDING RNG, ADDED NUMBER PRINT CODE AND
4  REM FIXED UP FORMATTING, FIXED COMPUTER VECTORING, OTHER STUFF
5  REM 4/24 CORRECTED LRS
8  PRINT 
9  PRINT "*** TREK8 ***"
10  DIM S[8,8],R[6],D[8,8]
20  DIM J[10],Q[8,8]
30  DEF FNA(X)=INT(RND(0)*X)+1
50  REM LET T=60*TIM(0)+3600*TIM(1)+TIM(-1)
60  REM FOR I=1TO INT(T)/100
61  PRINT "ENTER RANDOM SEED NUMBER ";
62  INPUT T
63  LET T=ABS(T)
65  IF T<20000 THEN 70
66  LET T=T/10
67  GOTO 65
70  FOR I=0 TO T
75  LET K1=RND(0)
80  NEXT I
90  PRINT 
100  REM        INITIALIZE EVERYTHING 
110  LET K1=FNA(20)+10
120  LET K1=INT(K1*1.2)
130  LET S1=FNA(149)+150
140  LET B1=FNA(5)+4
150  LET F1=FNA(4)+5
170  FOR I=1 TO 6
180  LET R[I]=0
190  NEXT I
200  FOR I=1 TO 8
210  FOR J=1 TO 8
220  LET Q[I,J]=0
230  LET S[I,J]=0
240  NEXT J
250  NEXT I
260  LET L1=0
270  LET L2=0
280  LET D1=INT((FNA(1999)+2000)/10)*10
290  LET D3=30
300  LET D2=D3+D1
310  FOR I=1 TO S1
320  LET A1=FNA(8)
330  LET A2=FNA(8)
340  LET S[A1,A2]=S[A1,A2]+1
350  NEXT I
360  FOR I=1 TO B1
370  LET A1=FNA(8)
380  LET A2=FNA(8)
390  LET S[A1,A2]=S[A1,A2]+10
400  NEXT I
410  FOR I=1 TO K1
420  LET A1=FNA(8)
430  LET A2=FNA(8)
440  LET S[A1,A2]=S[A1,A2]+100
450  NEXT I
460  FOR I=1 TO F1
470  LET A1=FNA(8)
480  LET A2=FNA(8)
490  IF INT(S[A1,A2]/1000)#0 THEN 470
500  LET S[A1,A2]=S[A1,A2]+1000
510  NEXT I
520  LET E1=FNA(8)
530  LET E2=FNA(8)
540  LET E7=FNA(8)
550  LET E8=FNA(8)
560  LET P=3000
570  LET C1=0
580  LET T1=10
590  LET P9=0
600  PRINT "ORDERS:  STARDATE =";D1
610  PRINT 
620  PRINT "   AS COMMANDER OF THE UNITED STARSHIP ENTERPRISE,"
630  PRINT "YOUR MISSION IS TO RID THE GALAXY OF THE DEADLY"
640  PRINT "KLINGON MENACE.  TO DO THIS, YOU MUST DESTROY THE"
650  PRINT "KLINGON INVASION FORCE OF ";
651  LET Z9=K1
652  GOSUB 9500
653  PRINT " BATTLE CRUISERS."
660  PRINT "YOU HAVE ";
661  LET Z9=D3
662  GOSUB 9500
663  PRINT " SOLAR DAYS TO COMPLETE YOUR MISSION."
670  PRINT "(I.E., UNTIL STARDATE ";
671  LET Z9=D2
672  GOSUB 9500
673  PRINT ")."
680  PRINT 
690  PRINT "   YOU HAVE ";
691  LET Z9=B1
692  GOSUB 9500
693  PRINT " SUPPORTING STARBASES."
700  PRINT "WHEN THE ENTERPRISE DOCKS AT ONE (IS POSITIONED"
701  PRINT "NEXT TO ONE) IT IS RESUPPLIED WITH ENERGY AND"
702  PRINT "PHOTON TORPEDOES.  THE ENTERPRISE IS"
703  PRINT "CURRENTLY IN QUADRANT ";
710  LET Z9=E1
711  GOSUB 9500
712  PRINT "-";
720  LET Z9=E2
721  GOSUB 9500
722  PRINT " SECTOR ";
723  LET Z9=E7
724  GOSUB 9500
725  PRINT "-";
726  LET Z9=E8
727  GOSUB 9500
728  PRINT "."
732  PRINT 
733  PRINT "THERE ARE 3 OR MORE TIME WARPS IN THE GALAXY AND VISIBLE"
734  PRINT "IN A SHORT RANGE SENSOR SCAN (@). IF THE ENTERPRISE PASSES"
735  PRINT "NEAR A TIME WARP, THE ENTERPRISE WILL BE TRANSPORTED TO A"
736  PRINT "NEW POSITION AND TIME. THE GREATER THE APPROACH WARP TO THE"
737  PRINT "TIME WARP, THE GREATER THE GAIN IN TIME AND ENTERPRISE"
738  PRINT "DAMAGE. TIME WARPS DISAPPEAR AFTER USE."
739  PRINT 
740  PRINT "AT SMALL WARP SPEEDS THE ENTERPRISE GAINS ENERGY FROM STARS"
741  PRINT "THE SMALLER THE WARP AND GREATER THE STARS THE GREATER THE "
742  PRINT "ENERGY GAINED. A DAMAGED ENGINE REDUCES THE ENERGY GAIN."
743  REM ADDED INSTRUCTIONS
744  PRINT 
745  PRINT "COURSE/TORDEDO HEADINGS ARE GIVEN IN DEGREES WHERE 0 IS"
746  PRINT "UP, 90 IS RIGHT, 180 IS DOWN AND 270 IS LEFT. SECTOR AND"
747  PRINT "QUADRANT COORDINATES ARE IN Y-X FORMAT. ENTER '9' AT THE"
748  PRINT "COMMAND PROMPT TO LIST THE AVAILABLE COMMANDS."
750  PRINT 
760  GOSUB 1850
770  GOSUB 3010
780  GOSUB 1170
790  GOSUB 3010
800  PRINT 
810  PRINT "COMMAND ";
820  INPUT C2
830  PRINT 
850  IF C2=0 THEN 2510
860  IF C2=1 THEN 780
870  IF C2=2 THEN 2230
880  IF C2=3 THEN 4140
890  IF C2=4 THEN 6000
900  IF C2=5 THEN 1060
910  IF C2=6 THEN 7000
920  IF C2=7 THEN 8100
930  IF C2=8 THEN 8200
940  PRINT "  YOUR CHOICES OF COMMAND ARE:"
960  PRINT "  0 = SET COURSE"
970  PRINT "  1 = SHORT RANGE SENSOR SCAN"
980  PRINT "  2 = LONG RANGE SENSOR SCAN"
990  PRINT "  3 = FIRE PHASERS"
991  PRINT "  4 = FIRE PHOTON TORPEDOES"
992  PRINT "  5 = DAMAGE CONTROL REPORT"
993  PRINT "  6 = INTELLIGENCE REPORT"
994  PRINT "  7 = COMPUTER VECTORING"
995  PRINT "  8 = FUEL USE PREDICTIONS"
996  GOTO 790
1060  IF R[6]<0 THEN 1130
1070  PRINT "DEVICE         STATE OF REPAIR"
1080  FOR C2=1 TO 6
1090  GOSUB 3700
1100  PRINT "   ";R[C2]
1110  NEXT C2
1120  GOTO 790
1130  PRINT "DAMAGE CONTROL IS NOT AVAILABLE."
1140  GOTO 790
1170  REM        SUBROUTINE TO OUTPUT S.R.SENSOR SCAN 
1180  IF R[2] >= 0 THEN 1210
1190  PRINT " *** S.R. SENSORS ARE OUT ***"
1200  GOTO 1240
1210  GOSUB 1850
1220  LET C2=36
1221  REM WAS 26, NO.OF DASHES
1230  GOSUB 1790
1240  FOR I=1 TO 8
1250  IF R[2]<0 THEN 1440
1260  FOR J=1 TO 8
1270  IF D[I,J]>0 THEN 1300
1280  PRINT " .";
1290  GOTO 1430
1300  IF D[I,J]>1 THEN 1330
1310  PRINT " *";
1320  GOTO 1430
1330  IF D[I,J]>2 THEN 1360
1340  PRINT " K";
1350  GOTO 1430
1360  IF D[I,J]>3 THEN 1390
1370  PRINT " B";
1380  GOTO 1430
1390  IF D[I,J]>4 THEN 1420
1400  PRINT " E";
1410  GOTO 1430
1420  PRINT " @";
1430  NEXT J
1440  IF I>1 THEN 1470
1450  PRINT "   STARDATE  ";D1
1460  GOTO 1740
1470  IF I>2 THEN 1600
1480  PRINT "   CONDITION ";
1490  IF C1>0 THEN 1520
1500  PRINT " GREEN"
1510  GOTO 1740
1520  IF C1>1 THEN 1550
1530  PRINT " YELLOW"
1540  GOTO 1740
1550  IF C1>2 THEN 1580
1560  PRINT " RED"
1570  GOTO 1740
1580  PRINT " DOCKED"
1590  GOTO 1740
1600  IF I>3 THEN 1630
1610  PRINT "   QUADRANT   ";
1611  LET Z9=E1
1612  GOSUB 9500
1613  PRINT "-";
1614  LET Z9=E2
1615  GOSUB 9500
1616  PRINT 
1620  GOTO 1740
1630  IF I>4 THEN 1660
1640  PRINT "   SECTOR     ";
1641  LET Z9=E7
1642  GOSUB 9500
1643  PRINT "-";
1644  LET Z9=E8
1645  GOSUB 9500
1646  PRINT 
1650  GOTO 1740
1660  IF I>5 THEN 1690
1670  PRINT "   ENERGY    ";P
1680  GOTO 1740
1690  IF I>6 THEN 1720
1700  PRINT "   TORPEDOES ";T1
1710  GOTO 1740
1720  IF I>7 THEN 1750
1730  PRINT "   KLINGONS  ";K1
1740  GOTO 1760
1750  PRINT "   DAYS LEFT ";D2-D1
1760  NEXT I
1765  IF R[2]<0 THEN 1780
1770  GOSUB 1790
1780  RETURN 
1790  REM      SUBROUTINE TO OUTPUT A STRING OF DASHES
1800  FOR I1=1 TO C2
1810  PRINT "-";
1820  NEXT I1
1830  PRINT 
1840  RETURN 
1850  REM     SUBROUTINE TO COMPUTE SECTOR LAYOUT 
1860  IF L1#E1 THEN 1890
1870  IF L2#E2 THEN 1890
1880  RETURN 
1890  LET L1=E1
1900  LET L2=E2
1910  FOR I=1 TO 8
1920  FOR J=1 TO 8
1930  LET D[I,J]=0
1940  NEXT J
1950  NEXT I
1960  LET D[E7,E8]=4
1970  FOR I=1 TO S[E1,E2]-INT(S[E1,E2]/10)*10
1980  LET E3=FNA(8)
1990  LET E4=FNA(8)
2000  IF D[E3,E4]#0 THEN 1980
2010  LET D[E3,E4]=1
2020  NEXT I
2030  FOR I=1 TO S[E1,E2]/10-INT(S[E1,E2]/100)*10
2040  LET E3=FNA(8)
2050  LET E4=FNA(8)
2060  IF D[E3,E4]#0 THEN 2040
2070  LET D[E3,E4]=3
2080  NEXT I
2090  FOR I=1 TO S[E1,E2]/100-INT(S[E1,E2]/1000)*10
2100  LET J[I]=300
2110  LET E3=FNA(8)
2120  LET E4=FNA(8)
2130  IF D[E3,E4]#0 THEN 2110
2140  LET D[E3,E4]=2
2150  NEXT I
2160  FOR I=1 TO S[E1,E2]/1000
2170  LET E3=FNA(6)+1
2180  LET E4=FNA(6)+1
2190  IF D[E3,E4]#0 THEN 2170
2200  LET D[E3,E4]=5
2210  NEXT I
2220  RETURN 
2230  IF R[3]=0 THEN 2260
2240  PRINT "*** L.R. SENSORS ARE OUT ***"
2250  GOTO 790
2260  PRINT "LONG RANGE SENSOR SCAN FOR QUADRANT ";
2270  LET Z9=E1
2271  GOSUB 9500
2272  PRINT "-";
2273  LET Z9=E2
2274  GOSUB 9500
2275  PRINT 
2280  LET C2=22
2290  GOSUB 1790
2300  FOR I=E1-1 TO E1+1
2310  FOR J=E2-1 TO E2+1
2320  IF I<1 THEN 2450
2330  IF I>8 THEN 2450
2340  IF J<1 THEN 2430
2350  IF J>8 THEN 2430
2352  LET X1=S[I,J]
2353  IF X1 <= 999 THEN 2360
2354  LET X1=X1-1000
2360  PRINT ":";X1;
2370  LET Q[I,J]=1
2380  NEXT J
2390  PRINT ":"
2400  GOSUB 1790
2410  NEXT I
2420  GOTO 790
2430  PRINT ":";0;
2440  GOTO 2380
2450  PRINT ":";0;":";0;":";0;":"
2460  GOTO 2400
2470  REM                FUEL USEAGE
2480  LET X1=10*C3+5*(C3*C3)+.3*(C3*C3*C3)
2490  RETURN 
2500  REM 
2510  PRINT "COURSE (0-360)    ";
2520  LET P9=0
2530  INPUT C2
2540  PRINT "WARP FACTOR (0-8) ";
2550  INPUT C3
2560  PRINT 
2570  IF C3<0 THEN 800
2580  IF C3>8 THEN 2510
2590  IF R[1]=0 THEN 2630
2592  LET X2=.3
2594  LET X1=S[E1,E2]/100-INT(S[E1,E2]/1000)*10
2595  IF X1 <= .9 THEN 2600
2596  LET X2=.2
2600  IF C3 <= X2 THEN 2630
2610  PRINT "WARP ENGINES ARE DAMAGED; MAXIMUM WARP =";X2
2620  GOTO 2540
2630  IF C3>.515 THEN 2670
2640  LET X1=S[E1,E2]-INT(S[E1,E2]/10)*10
2645  LET X2=150*X1
2650  IF R[1]=0 THEN 2655
2651  LET X2=X1*80
2655  IF X2 <= 400 THEN 2660
2656  LET X2=400
2660  LET P=P+(.8-C3)*X2
2670  GOSUB 2470
2680  LET P=P-X1
2685  IF P <= 3000 THEN 2690
2686  LET P=3000
2690  IF P<0 THEN 9100
2700  LET N1=INT(8*C3)
2710  LET N2=-COS(C2*3.14159/180)
2720  IF ABS(N2)>1.00000E-02 THEN 2740
2730  LET N2=0
2740  LET N3=SIN(C2*3.14159/180)
2750  IF ABS(N3)>1.00000E-02 THEN 2770
2760  LET N3=0
2770  REM 
2780  FOR A1=1 TO N1
2790  LET E3=E7
2800  LET E4=E8
2810  LET P1=E3+N2
2820  LET P2=E4+N3
2830  IF P1<.5 OR P1 >= 8.5 THEN 3410
2840  IF P2<.5 OR P2 >= 8.5 THEN 3500
2850  IF D[P1,P2]#0 AND D[P1,P2]#4 THEN 3590
2860  LET D[E3,E4]=0
2870  LET D[P1,P2]=4
2880  LET E7=P1
2890  LET E8=P2
2891  FOR I=E7-1 TO E7+1
2892  IF I<1 OR I>8 THEN 2899
2894  FOR J=E8-1 TO E8+1
2895  IF J<1 OR J>8 THEN 2898
2896  IF D[I,J]=5 THEN 2980
2898  NEXT J
2899  NEXT I
2900  NEXT A1
2910  LET D1=D1+1
2920  LET E7=INT(E7+.5)
2930  LET E8=INT(E8+.5)
2940  FOR I=1 TO 6
2950  IF R[I]=0 THEN 2970
2960  LET R[I]=R[I]+1
2962  IF R[I]<0 THEN 2970
2964  LET R[I]=0
2970  NEXT I
2971  GOTO 3620
2980  REM          TIME WARP COMPUTATIONS 
2981  PRINT " GOING INTO TIME AND SPACE WARP"
2982  LET S[E1,E2]=S[E1,E2]-1000
2983  LET A1=N1-A1
2984  LET L1=0
2985  LET L2=0
2986  LET E1=FNA(8)
2987  LET E2=FNA(8)
2988  LET E7=FNA(8)
2989  LET E8=FNA(8)
2990  LET X1=INT(A1/10)
2991  FOR I=1 TO INT((A1-X1*10)*10)
2992  IF RND(0)>.9 THEN 2995
2993  NEXT I
2994  GOTO 2996
2995  LET D1=D1-1
2996  LET D1=D1-X1
2997  PRINT " THE STARDATE IS NOW"D1
3004  FOR J=1 TO INT(A1/15)
3005  LET I=FNA(6)
3006  LET R[I]=R[I]-RND(0)/100
3007  NEXT J
3008  GOSUB 1850
3009  GOTO 3620
3010  REM       SCAN FOR DOCKED STARSHIP
3020  FOR I=E7-1 TO E7+1
3030  IF I<1 THEN 3100
3040  IF I>8 THEN 3100
3050  FOR J=E8-1 TO E8+1
3060  IF J<1 THEN 3090
3070  IF J>8 THEN 3090
3080  IF D[I,J]=3 THEN 3120
3090  NEXT J
3100  NEXT I
3101  LET C1=0
3102  IF P >= 500 THEN 3104
3103  LET C1=1
3104  LET X1=S[E1,E2]/100-INT(S[E1,E2]/1000)*10
3105  IF X1 <= .9 THEN 3110
3106  LET C1=2
3110  GOTO 3190
3120  LET C1=3
3130  LET P=3000
3140  LET T1=10
3150  LET P9=0
3160  FOR I=1 TO 6
3170  LET R[I]=0
3180  NEXT I
3190  RETURN 
3200  REM       CHECK FOR SPACE STORM OR TRUCE
3210  LET C2=RND(0)
3220  IF C2<.35 THEN 3290
3230  IF C2<.95 THEN 3400
3240  PRINT "*** SPACE STORM, ";
3250  GOSUB 3680
3260  PRINT "  DAMAGED  ***"
3270  LET R[C2]=R[C2]-5*RND(0)
3280  GOTO 3400
3290  FOR I=1 TO 6
3300  IF R[I]#0 THEN 3330
3310  NEXT I
3320  GOTO 3400
3330  PRINT "*** TRUCE, ";
3340  LET C2=I
3350  GOSUB 3700
3360  PRINT " STATE OF REPAIR IMPROVED ***"
3370  LET R[I]=R[I]+2*RND(0)
3380  IF R[I]<0 THEN 3400
3390  LET R[I]=0
3400  RETURN 
3410  LET S2=SGN(P1-1)
3420  LET S3=E1+S2
3430  LET E7=INT(P1+.5)-8*S2
3440  LET L1=0
3450  IF S3<1 THEN 3480
3460  IF S3>8 THEN 3480
3470  LET E1=E1+S2
3480  IF P2<.5 THEN 3500
3490  IF P2<8.5 THEN 3570
3500  LET S2=SGN(P2-1)
3510  LET S3=E2+S2
3520  LET E8=INT(P2+.5)-8*S2
3530  LET L2=0
3540  IF S3<1 THEN 3570
3550  IF S3>8 THEN 3570
3560  LET E2=S3
3570  GOSUB 1850
3580  GOTO 2900
3590  PRINT "ENTERPRISE BLOCKED AT ";
3600  LET Z9=INT(P1)
3601  GOSUB 9500
3602  PRINT "-";
3603  LET Z9=INT(P2)
3604  GOSUB 9500
3605  PRINT 
3610  GOTO 2910
3620  GOSUB 3010
3630  GOSUB 3200
3640  GOSUB 3870
3650  IF P<0 THEN 9100
3660  IF D1>D2 THEN 9100
3670  GOTO 780
3680  REM      SUBROUTINE TO OUTPUT DAMAGE CONTROL MESSAGE
3690  LET C2=FNA(6)
3700  IF C2>1 THEN 3730
3710  PRINT "WARP ENGINES";
3720  RETURN 
3730  IF C2>2 THEN 3760
3740  PRINT "S.R. SENSORS";
3750  RETURN 
3760  IF C2>3 THEN 3790
3770  PRINT "L.R. SENSORS";
3780  RETURN 
3790  IF C2>4 THEN 3820
3800  PRINT "PHASER CNTRL";
3810  RETURN 
3820  IF C2>5 THEN 3850
3830  PRINT "PHOTON TUBES";
3840  RETURN 
3850  PRINT "DAMAGE CNTRL";
3860  RETURN 
3870  LET X1=S[E1,E2]/100-INT(S[E1,E2]/1000)*10
3875  LET Y1=INT(X1)
3880  IF Y1<1 THEN 4110
3890  LET G=1
3900  LET H=0
3910  FOR I=1 TO Y1
3920  LET H=H+1
3930  IF H <= 8 THEN 3960
3940  LET H=1
3950  LET G=G+1
3960  IF D[G,H]#2 THEN 3920
3970  LET Q1=G-E7
3980  LET Q2=H-E8
3990  LET D4=SQR(Q1*Q1+Q2*Q2)
4000  LET P5=FNA(J[I]-1)
4010  LET J[I]=J[I]-P5
4020  LET P6=P5/D4
4030  LET P=P-P6
4040  PRINT "ENTERPRISE HIT (";
4041  LET Z9=P6
4042  GOSUB 9500
4043  PRINT " UNITS) FROM KLINGON AT ";
4050  PRINT "SECTOR ";
4051  LET Z9=G
4052  GOSUB 9500
4053  PRINT "-";
4054  LET Z9=H
4055  GOSUB 9500
4056  PRINT 
4060  REM...CAUSE SOME DAMAGE TO ENTERPRISE'S SYSTEMS 
4070  LET I9=FNA(6)
4080  LET R[I9]=R[I9]-RND(0)/100
4090  NEXT I
4100  IF P <= 0 THEN 9905
4110  RETURN 
4140  REM       PHASER CONTROL
4150  IF R[4]=0 THEN 4180
4160  PRINT " *** PHASER CONTROL IS DAMAGED ***"
4170  GOTO 790
4180  PRINT "PHASERS LOCKED ON TARGET.  ";
4190  PRINT "ENERGY AVAILABLE =";P
4200  PRINT "NUMBER OF UNITS TO FIRE ";
4210  INPUT C2
4220  IF C2<0 THEN 800
4230  PRINT 
4240  LET P9=P9+1
4250  IF P9>1 AND RND(0)>.9 THEN 4610
4260  IF C2>P THEN 4190
4270  LET P=P-C2
4280  LET X1=S[E1,E2]/100-INT(S[E1,E2]/1000)*10
4290  IF X1<1 THEN 4570
4300  LET P5=C2/X1
4310  LET G=1
4320  LET H=0
4330  FOR I=1 TO X1
4340  LET H=H+1
4350  IF H<9 THEN 4390
4360  LET H=1
4370  LET G=G+1
4380  IF G>8 THEN 4570
4390  IF D[G,H]>2 THEN 4340
4400  LET Q1=G-E7
4410  LET Q2=H-E8
4420  IF D[G,H]<2 THEN 4340
4430  LET D4=SQR(Q1*Q1+Q2*Q2)
4440  LET P6=P5/D4
4450  LET J[I]=J[I]-P6
4460  PRINT "KLINGON AT ";
4461  LET Z9=G
4462  GOSUB 9500
4463  PRINT "-";
4464  LET Z9=H
4465  GOSUB 9500
4466  PRINT " HIT (";
4467  LET Z9=P6
4468  GOSUB 9500
4469  PRINT " UNITS), ENERGY LEFT =";J[I]
4470  IF J[I]>0 THEN 4560
4480  PRINT "***DESTROYED"
4490  FOR I2=I+1 TO X1
4500  LET J[I2-1]=J[I2]
4510  NEXT I2
4520  LET S[E1,E2]=S[E1,E2]-100
4530  LET K1=K1-1
4540  LET D[G,H]=0
4550  LET I=I-1
4560  NEXT I
4570  IF K1=0 THEN 9000
4580  GOSUB 3010
4590  GOSUB 3870
4600  GOTO 790
4610  LET A1=FNA(300)+100
4620  IF A1<C2 THEN 4260
4630  LET C2=A1
4640  PRINT " ***PHASER CONTROL MONTENTARILY OVERLOADED"
4650  PRINT C2;"UNITS INADVERTENTLY FIRED"
4660  IF C2>P THEN 9905
4670  GOTO 4260
6000  REM      PHOTON CONTROL 
6010  IF R[5]=0 THEN 6040
6020  PRINT " ***PHOTON TUBES ARE OUT***"
6030  GOTO 790
6040  IF T1>0 THEN 6045
6041  PRINT "TORPEDO SUPPLY EXHAUSTED!!"
6042  GOTO 790
6045  PRINT "TORPEDO COURSE ";
6050  INPUT C2
6051  IF C2<0 THEN 800
6052  PRINT 
6055  LET T1=T1-1
6060  LET N2=-COS(C2*3.14159/180)
6070  IF ABS(N2)>1.00000E-02 THEN 6090
6080  LET N2=0
6090  LET N3=SIN(C2*3.14159/180)
6100  IF ABS(N3)>1.00000E-02 THEN 6120
6110  LET N3=0
6120  LET P1=INT(E7)
6130  LET P2=INT(E8)
6140  LET P1=P1+N2
6150  LET P2=P2+N3
6151  LET Z9=INT(P1*10)/10
6152  GOSUB 9500
6153  PRINT "-";
6154  LET Z9=INT(P2*10)/10
6155  GOSUB 9500
6156  PRINT 
6160  IF P1<.5 THEN 6350
6165  IF P1>8.5 THEN 6350
6170  IF P2<.5 THEN 6350
6175  IF P2>8.5 THEN 6350
6190  IF D[P1,P2]=0 OR D[P1,P2]=4 OR D[P1,P2]=5 THEN 6140
6200  IF D[P1,P2]>1 THEN 6230
6210  PRINT "STAR DESTROYED"
6215  LET S[E1,E2]=S[E1,E2]-1
6220  GOTO 6300
6230  IF D[P1,P2]>2 THEN 6280
6240  PRINT "***KLINGON DESTROYED***"
6250  LET S[E1,E2]=S[E1,E2]-100
6260  LET K1=K1-1
6265  GOSUB 3010
6270  GOTO 6300
6280  PRINT "STARBASE DESTROYED"
6290  LET S[E1,E2]=S[E1,E2]-10
6300  LET D[P1,P2]=0
6310  IF K1=0 THEN 9000
6320  GOSUB 3010
6330  GOSUB 3870
6340  GOTO 790
6350  PRINT "TORPEDO MISSED"
6360  GOTO 6310
7000  PRINT "INTELLIGENCE REPORT FOR QUADRANT ";
7001  LET Z9=E1
7002  GOSUB 9500
7003  PRINT "-";
7004  LET Z9=E2
7005  GOSUB 9500
7006  PRINT 
7010  LET C2=57
7011  GOSUB 1790
7012  REM ADDED DIVIDER DASHES, CHANGED UP A BIT
7020  FOR I=1 TO 8
7030  FOR J=1 TO 8
7032  LET X1=S[I,J]
7033  IF X1 <= 999 THEN 7035
7034  LET X1=X1-1000
7035  IF I=E1 AND J=E2 THEN 7073
7036  IF I=E1 AND J=E2+1 THEN 7039
7037  PRINT ":";
7038  GOTO 7040
7039  PRINT "<";
7040  IF Q[I,J]=0 THEN 7070
7050  PRINT X1;
7060  GOTO 7080
7070  PRINT "      ";
7072  GOTO 7080
7073  PRINT ">";X1;
7080  NEXT J
7081  IF I=E1 AND J=E2+1 THEN 7085
7082  PRINT ":"
7083  GOTO 7090
7085  PRINT "<"
7090  GOSUB 1790
7100  NEXT I
7102  LET X1=RND(0)
7110  GOTO 790
8100  REM COMPUTER VECTORING
8101  REM ORIGINAL CODE DIDN'T WORK RIGHT, FIXED
8110  PRINT "FROM Y,X COORDINATE ";
8111  INPUT Y1,X1
8120  PRINT "  TO Y,X COORDINATE ";
8121  INPUT Y2,X2
8130  LET X3=X1-X2
8131  IF X3#0 THEN 8140
8132  LET X3=1.00000E-10
8140  LET Y3=Y2-Y1
8141  IF Y3#0 THEN 8150
8142  LET Y3=1.00000E-10
8150  LET C2=57.2958*ATN(X3/Y3)
8151  IF Y2<Y1 THEN 8153
8152  LET C2=C2+180
8153  IF C2>-1.00000E-03 THEN 8160
8154  LET C2=C2+360
8160  PRINT "BEARING IS ";
8161  LET Z9=INT(C2+.5)
8162  GOSUB 9500
8163  PRINT " DEGREES"
8170  LET C2=SQR(X3*X3+Y3*Y3)
8180  PRINT "QUADRANT RANGE IS";C2
8181  PRINT "  SECTOR RANGE IS";C2/8
8189  LET X1=RND(0)
8190  GOTO 800
8200  REM          FUEL PREDICTION
8210  PRINT "INPUT WARP FACTOR"
8220  INPUT C3
8230  IF C3>8 OR C3<0 THEN 8210
8240  GOSUB 2470
8250  PRINT "UNITS REQUIRED "X1
8260  GOTO 800
9000  PRINT "IT IS STARDATE";D1
9010  PRINT "THE KLINGONS HAVE BEEN DESTROYED"
9020  PRINT "THE FEDERATION IS SAFE."
9030  PRINT "CONGRATULATIONS!"
9040  GOTO 9970
9099  REM WAS AT 9900, MOVED TO 9100 
9100  PRINT "IT IS STARDATE";D1
9105  PRINT "THE ENTERPRISE HAS BEEN DESTROYED."
9110  PRINT "THE FEDERATION WILL BE CONQUERED."
9115  PRINT "THERE ARE STILL";K1;"KLINGON BATTLE CRUISERS LEFT."
9120  PRINT 
9125  FOR I=1 TO 8
9130  FOR J=1 TO 8
9132  LET X1=S[I,J]
9134  IF X1 <= 999 THEN 9136
9135  LET X1=X1-1000
9136  PRINT ":";X1;
9140  NEXT J
9145  PRINT ":"
9150  PRINT 
9155  NEXT I
9160  PRINT 
9165  PRINT "YOU ARE DEAD"
9170  PRINT "CAPTAIN KIRK, ANOTHER GAME (1=YES) ";
9175  INPUT Z9
9180  IF Z9=1 THEN 100
9190  STOP 
9495  REM *** INTEGER PRINT SUBROUTINE ***
9496  REM UP TO 6 DIGITS -999999 TO 999999, NO SPACES PRINTED
9497  REM NUMBER TO PRINT IN Z9, Z8 AND Z7 USED FOR TEMPS
9498  REM IF OUT OF RANGE JUST PRINTS
9499  REM IF NOT INTEGER JUST PRINTS
9500  IF ABS(Z9) <= 999999. THEN 9505
9501  IF Z9=INT(Z9) THEN 9505
9502  PRINT Z9;
9503  RETURN 
9505  IF Z9 >= 0 THEN 9520
9510  PRINT "-";
9520  LET Z8=ABS(Z9)
9530  LET Z8=INT(Z8)
9540  IF Z8<10 THEN 9660
9550  IF Z8<100 THEN 9630
9560  IF Z8<1000 THEN 9600
9561  IF Z8<10000 THEN 9570
9562  IF Z8<100000. THEN 9566
9563  LET Z7=INT(Z8/100000.)
9564  LET Z8=Z8-Z7*100000.
9565  GOSUB 9700
9566  LET Z7=INT(Z8/10000)
9567  LET Z8=Z8-Z7*10000
9568  GOSUB 9700
9570  LET Z7=INT(Z8/1000)
9580  LET Z8=Z8-Z7*1000
9590  GOSUB 9700
9600  LET Z7=INT(Z8/100)
9610  LET Z8=Z8-Z7*100
9620  GOSUB 9700
9630  LET Z7=INT(Z8/10)
9640  LET Z8=Z8-Z7*10
9650  GOSUB 9700
9660  LET Z7=Z8
9670  GOSUB 9700
9680  RETURN 
9695  REM DIGIT PRINT SUBROUTINE, DIGIT IN Z7
9700  IF Z7=1 THEN 9810
9710  IF Z7=2 THEN 9830
9720  IF Z7=3 THEN 9850
9730  IF Z7=4 THEN 9870
9740  IF Z7=5 THEN 9890
9750  IF Z7=6 THEN 9910
9760  IF Z7=7 THEN 9930
9770  IF Z7=8 THEN 9950
9780  IF Z7=9 THEN 9970
9790  PRINT "0";
9800  RETURN 
9810  PRINT "1";
9820  RETURN 
9830  PRINT "2";
9840  RETURN 
9850  PRINT "3";
9860  RETURN 
9870  PRINT "4";
9880  RETURN 
9890  PRINT "5";
9900  RETURN 
9910  PRINT "6";
9920  RETURN 
9930  PRINT "7";
9940  RETURN 
9950  PRINT "8";
9960  RETURN 
9970  PRINT "9";
9980  RETURN 
9999  END 

