1000  FILES *
1010  REM BY  JEFF BROWN / ARAGON - SAN MATEO - CALIF. /  11/08/74
1020  REM MODIFIED BY JEFF BROWN FROM BOCES BASIC TO HP BASIC   12/12/75
1030  REM 'TREK'  ** THE STAR TREK GAME **      8075 WORDS = 32 RECORDS.
1040  REM INSTRUCRIONS ARE CHAINED TO THIS PROGRAM IN PROGRAM *TREKB1
1050  DEF FND()=((FNI()-Z1)^2) MAX ((FNJ()-Z2)^2)
1060  DEF FNE()=INT(-*LOG(RND(0))+.5)
1070  DEF FNI()=INT((+7)/8)
1080  DEF FNJ()=-8*FNI()+8
1090  DEF FNL()=INT((+RND(0)*)/((K3 AND D0)*((K3>4)+(K3>6)+(K3>7))+1))
1100  DEF FNR()=INT(RND(0)*64)+1
1110  DEF FNS()=8*+Z2-8
1120  DIM C[9,2],D[8],G[8,8],N[3,3],Q[68,4],Z[8,8],Y[8]
1130  DIM D$[72],E$[20],T$[32],Y$[55],Z$[1],C$[6],P$[19],N$[13],F$[11]
1140  PRINT LIN(4);TAB(26)"STAR TREK"LIN(3)
1150  PRINT "DO YOU WANT INSTRUCTIONS ?  (THEY'RE LONG)  ? ";
1160  LINPUT Z$[1,1]
1170  IF Z$#"Y" THEN 1220
1180  CHAIN B5,"*TREKB1"
1190  PRINT "  SORRY, THE INSTRUCTIONS ARE NOT IN.  THEY ARE NORMALLY"
1200  PRINT "CHAINED TO IN PROGRAM '*TREKB1'. THIS PROGRAM IS MISSING. TELL"
1210  PRINT "YOUR TEACHER OR THE SYSTEM MANAGER TO HAVE THIS CORRECTED."LIN(2)
1220  N$="0123456789., "
1230  P$="    <*>  *  >!< +++"
1240  F8=4
1250  R8=55000.
1260  S7=1000
1270  E0=5000
1280  P0=10
1290  S9=200
1300  C[2,1]=C[3,1]=C[4,1]=C[4,2]=C[5,2]=C[6,2]=-1
1310  C[1,1]=C[3,2]=C[5,1]=C[7,2]=C[9,1]=0
1320  C[1,2]=C[2,2]=C[6,1]=C[7,1]=C[8,1]=C[8,2]=C[9,2]=1
1330  D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL"
1340  D$[49]="PHOTON TUBESSHIELD CNTRL"
1350  E$="DAMAGE CNTRLCOMPUTER"
1360  PRINT "DO YOU WISH TO RETRIEVE A FILE (YES OR NO)  ? ";
1370  LINPUT Z$[1,1]
1380  IF Z$="Y" THEN 7650
1390  E=E0
1400  P=P0
1410  S=P3=N0=T1=0
1420  T0=T=INT(20*RND(0)+20)*100
1430  T9=2
1440  Q2=FNR(0)
1450  Q1=FNI(Q2)
1460  Q2=FNJ(Q2)
1470  S2=FNR(0)
1480  S1=FNI(S2)
1490  S2=FNJ(S2)
1500  MAT D=ZER
1510  K9=K8=B9=0
1520  FOR I=1 TO 8
1530  FOR J=1 TO 8
1540  R1=RND(0)
1550  K3=(R1>.98)+(R1>.96)+(R1>.94)+(R1>.92)+(R1>.9)+(R1>.85)+(R1>.8)+(R1>.75)
1560  K9=K9+K3
1570  T9=T9+(K3>0)
1580  IF RND(1)>.96 THEN 1620
1590  B3=0
1600  K8=K8+K3
1610  GOTO 1650
1620  B3=1
1630  B9=B9+1
1640  T9=T9-1
1650  S3=INT(RND(0)*8)+1
1660  G[I,J]=K3*100+B3*10+S3
1670  Z[I,J]=0
1680  NEXT J
1690  NEXT I
1700  T7=T9+INT(K8/10)-1
1710  T9=T9+INT((K8+5)/10)
1720  T9=20 MAX (T9+INT(4*RND(0)+.5))
1730  IF B9 <= 0 OR K9 <= 0 THEN 1510
1740  K7=K9
1750  PRINT LIN(2)
1760  PRINT  USING 1770;K9,T9,B9
1770  IMAGE"YOU MUST DESTROY",4DX,"KLINGONS IN",4DX,"STARDATES WITH",3DX,"STARBASES."
1780  MAT Q=ZER
1790  FOR I=65 TO 68
1800  Q[I,3]=Q[I,4]=I
1810  NEXT I
1820  K3=B3=G[Q1,Q2]
1830  K3=INT(.01*K3)
1840  B3=S3=(B3-100*K3)
1850  B3=INT(.1*B3)
1860  S3=S3-10*B3
1870  IF  NOT K3 OR S>200 THEN 1900
1880  PRINT "COMBAT AREA     CONDITION RED"
1890  PRINT "    SHIELDS DANGEROUSLY LOW"
1900  IF P3 THEN 2150
1910  Z1=S1
1920  Z2=S2
1930  Q[FNS(Z1),1]=1
1940  Z0=65
1950  FOR I=1 TO K3
1960  GOSUB 6270
1970  Q[Z,1]=4
1980  Q[Z,2]=S9
1990  GOSUB 6300
2000  NEXT I
2010  Z0=66
2020  FOR I=1 TO B3
2030  GOSUB 6270
2040  Q[Z,1]=3
2050  Q[Z,2]=S7
2060  GOSUB 6300
2070  NEXT I
2080  Z0=67
2090  FOR I=1 TO S3
2100  GOSUB 6270
2110  Q[Z,1]=2
2120  Q[Z,2]=S7
2130  GOSUB 6300
2140  NEXT I
2150  GOSUB 5080
2160  P3=0
2170  IF E+(S*(D[6] >= 0))<10 AND (D[5]<0 OR P=0 OR K3=0) THEN 4740
2180  IF N0 THEN 2360
2190  PRINT "COMMAND ";
2200  ENTER FNL(35),H,Y$
2210  PRINT 
2220  IF H#-256 THEN 2360
2230  GOSUB 2250
2240  GOTO 2170
2250  PRINT '10"YOUR INDECISIVENESS IS JEOPARDIZING THE ENTERPRISE!"'7
2260  N0=0
2270  T7=T7-.5
2280  IF  NOT K3 THEN 2340
2290  PRINT LIN(1)"KLINGONS FIRING:"LIN(1)
2300  GOSUB 4550
2310  PRINT LIN(1)
2320  IF S<0 THEN 4950
2330  RETURN 
2340  PRINT "YOU'RE SAFE!"'7"  THERE ARE NO KLINGONS IN THIS QUADRANT."LIN(1)
2350  RETURN 
2360  IF Y$[1,5]="GSCAN" THEN 6660
2370  IF Y$[1,3]="FIX" THEN 7380
2380  IF Y$[1,4]="SAVE" THEN 7810
2390  IF Y$="SELF-DESTRUCT" THEN 8320
2400  GOSUB 6710
2410  IF N4 OR N5 THEN 2190
2420  GOTO N1+1 OF 2540,5330,3460,3630,3910,4290,4430,5730
2430  PRINT 
2440  PRINT "    0 = SET COURSE"
2450  PRINT "    1 = SHORT RANGE SENSOR SCAN"
2460  PRINT "    2 = LONG RANGE SENSOR SCAN"
2470  PRINT "    3 = FIRE PHASERS"
2480  PRINT "    4 = FIRE PHOTON TORPEDOES"
2490  PRINT "    5 = SHIELD CONTROL"
2500  PRINT "    6 = DAMAGE CONTROL REPORT"
2510  PRINT "    7 = CALL ON LIBRARY COMPUTER"
2520  PRINT 
2530  GOTO 2190
2540  GOSUB 7090
2550  IF N4 THEN 2190
2560  IF N0 THEN 2630
2570  PRINT "WARP FACTOR ";
2580  ENTER FNL(15),H,Y$
2590  PRINT 
2600  IF H#-256 THEN 2630
2610  GOSUB 2250
2620  GOTO 2570
2630  GOSUB 6710
2640  GOTO N4 OF 2550,2570
2650  W1=N1
2660  N=INT(8*(W1+N2*N3)+.5)
2670  E3=5*N+5
2680  IF D[1] >= 0 OR N <= 2 THEN 2710
2690  PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2"
2700  GOTO 2540
2710  GOSUB 4550
2720  IF S<0 THEN 4950
2730  IF N <= 97 THEN 2760
2740  PRINT "WARP ENGINE BLOWOUT - DAMAGE CONTROL EFFECTING REPAIR."
2750  D[1]=(D[1] MIN 1)-3*RND(0)
2760  IF E >= E3 THEN 2800
2770  PRINT "YOU HAVE ONLY"E" UNITS OF ENERGY"
2780  PRINT "YOU NEED"E3" FOR THAT MANEUVER"
2790  GOTO 2190
2800  FOR I=1 TO 8
2810  D[I]=D[I]+(D[I]<0)
2820  NEXT I
2830  IF RND(1)>.2 THEN 2980
2840  R9=.5
2850  GOSUB 2870
2860  GOTO 2980
2870  R1=INT(RND(1)*8+1)
2880  PRINT LIN(2);"DAMAGE CONTROL REPORT : ";
2890  IF RND(1) >= R9 THEN 2940
2900  D[R1]=D[R1]-(RND(1)*5+1)
2910  GOSUB 6590
2920  PRINT " DAMAGED"LIN(1)
2930  RETURN 
2940  D[R1]=D[R1]+(RND(1)*5+1)
2950  GOSUB 6590
2960  PRINT " STATE OF REPAIR IMPROVED"LIN(1)
2970  RETURN 
2980  Z1=S1
2990  Z2=S2
3000  Q[FNS(Z1),1]=0
3010  FOR I=1 TO N
3020  Z1=S1+INT(I*X1+.5)
3030  Z2=S2+INT(I*X2+.5)
3040  IF Z1 MIN Z2 <= 0 OR Z1 MAX Z2 >= 9 THEN 3210
3050  IF  NOT Q[FNS(Z1),1] THEN 3110
3060  PRINT  USING 3070;Z1,Z2
3070  IMAGE"WARP ENGINES SHUTDOWN AT SECTOR",2XDX,",",XD
3080  Z1=S1+INT((I-1)*X1+.5)
3090  Z2=S2+INT((I-1)*X2+.5)
3100  GOTO 3120
3110  NEXT I
3120  S1=Z1
3130  S2=Z2
3140  Q[FNS(Z1),1]=1
3150  E=E-E3
3160  GOSUB 5080
3170  IF W1<1 THEN 3190
3180  T=T+1
3190  IF T>T0+T9 THEN 4930
3200  GOTO 2170
3210  Q0=0
3220  Y1=8*Q1+S1-1
3230  Y2=8*Q2+S2-1
3240  X=Y1+N*X1
3250  Y=Y2+N*X2
3260  Q1=INT(X/8)
3270  Q2=INT(Y/8)
3280  S1=INT(X-8*Q1+1.5)
3290  S2=INT(Y-8*Q2+1.5)
3300  IF Q1 MIN Q2 >= 1 AND Q1 MAX Q2 <= 8 THEN 3340
3310  N=N-1
3320  Q0=1
3330  GOTO 3240
3340  IF S1<9 AND S2<9 THEN 3390
3350  S1=S1 MIN 8
3360  S2=S2 MIN 8
3370  PRINT "YOU HAVE ENCOUNTERED THE BARRIER - S.R. SENSORS DAMAGED."
3380  D[2]=(D[2] MIN 1)-RND(0)*5
3390  T=T+1
3400  E=E-E3
3410  IF  NOT Q0 THEN 3440
3420  PRINT "WARP ENGINES SHUTDOWN AT EDGE OF GALAXY"
3430  T=T+1
3440  IF T>T0+T9 THEN 4930
3450  GOTO 1780
3460  IF D[3] >= 0 THEN 3490
3470  PRINT "LONG RANGE SENSORS ARE INOPERABLE"
3480  GOTO 2190
3490  PRINT  USING 3500;Q1,Q2
3500  IMAGE"LONG RANGE SCAN FOR QUADRANT",3XDX,",",XD
3510  MAT N=ZER
3520  FOR I=(Q1-1) MAX 1 TO (Q1+1) MIN 8
3530  I0=I-Q1+2
3540  FOR J=(Q2-1) MAX 1 TO (Q2+1) MIN 8
3550  N[I0,J-Q2+2]=G[I,J]
3560  IF D[8]<0 THEN 3580
3570  Z[I,J]=G[I,J]
3580  NEXT J
3590  NEXT I
3600  MAT  PRINT  USING 3610;N
3610  IMAGE 3(19("-"),":::",3(4D,":"),"::",19("-")/)
3620  GOTO 2170
3630  IF K3 <= 0 THEN 4530
3640  GOTO (D[4] >= 0)*(1+(D[8] >= 0)) OF 3670,3680
3650  PRINT "PHASER CONTROL IS DISABLED"
3660  GOTO 2190
3670  PRINT "COMPUTER FAILURE HAMPERS ACCURACY"
3680  IF E>15 THEN 3710
3690  PRINT "YOUR DILITHIUM CRYSTALS ARE DRAINED.  NO POWER TO FIRE PHASERS."
3700  GOTO 2190
3710  PRINT "PHASERS ENERGIZED"
3720  PRINT "ENERGY AVAILABLE ="E"  NUMBER OF UNITS TO FIRE ? ";
3730  ENTER FNL(12),H,X
3740  PRINT 
3750  GOTO 1+(H<0)+(H=-256) OF 3780,3720,3760
3760  GOSUB 2250
3770  GOTO 3720
3780  IF X <= 0 THEN 2190
3790  IF E-X<0 THEN 3720
3800  E=E-X
3810  GOSUB 4550
3820  IF S<0 THEN 4950
3830  IF D[8] >= 0 THEN 3850
3840  X=X*(1 MIN (2*RND(0)))
3850  Z0=65
3860  Z1=S1
3870  Z2=S2
3880  GOSUB 7240
3890  IF K9 <= 0 THEN 4990
3900  GOTO 2170
3910  IF D[5] >= 0 THEN 3940
3920  PRINT "PHOTON TUBES ARE NOT OPERATIONAL"
3930  GOTO 2190
3940  IF P>0 THEN 3970
3950  PRINT "ALL PHOTON TORPEDOES ARE EXPENDED"
3960  GOTO 2190
3970  GOSUB 7090
3980  IF N4 THEN 2190
3990  P=P-1
4000  I=0
4010  I=I+1
4020  Z1=INT(S1+I*X1+.5)
4030  Z2=INT(S2+I*X2+.5)
4040  IF Z1 MIN Z2 <= 0 OR Z1 MAX Z2 >= 9 THEN 4240
4050  Z=FNS(Z1)
4060  GOTO Q[Z,1]+1 OF 4010,4010,4190,4210,4220
4070  GOSUB 6350
4080  X=.75*S7*(1+RND(0))
4090  Z=Q[68,3]
4100  IF Z=68 THEN 4250
4110  Z1=FNI(Z)
4120  Z2=FNJ(Z)
4130  FOR Z0=65 TO 67
4140  GOSUB 7240
4150  NEXT Z0
4160  Z=FNS(Z1)
4170  GOSUB 6350
4180  GOTO 4090
4190  PRINT "YOU CAN'T DESTROY STARS SILLY"
4200  GOTO 4250
4210  PRINT "NICE GOING --";
4220  GOSUB 6350
4230  GOTO 4250
4240  PRINT "TORPEDO MISSED"
4250  GOSUB 4550
4260  IF S<0 THEN 4950
4270  IF K9 <= 0 THEN 4990
4280  GOTO 2170
4290  IF D[6] >= 0 THEN 4320
4300  PRINT "SHIELD CONTROL IS NON-OPERATIONAL"
4310  GOTO 2190
4320  PRINT "ENERGY AVAILABLE ="E+S"  NUMBER OF UNITS TO SHIELDS  ? ";
4330  ENTER FNL(18),H,X
4340  PRINT 
4350  GOTO 1+(H<0)+(H=-256) OF 4380,4320,4360
4360  GOSUB 2250
4370  GOTO 4320
4380  IF X<0 THEN 4320
4390  IF E+S-X<0 THEN 4320
4400  E=E+S-X
4410  S=X
4420  GOTO 2170
4430  IF D[7] >= 0 THEN 4460
4440  PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE"
4450  GOTO 2190
4460  PRINT LIN(1)"DEVICE       STATE OF REPAIR"
4470  FOR R1=1 TO 8
4480  GOSUB 6590
4490  PRINT TAB(16);D[R1]
4500  NEXT R1
4510  PRINT 
4520  GOTO 2170
4530  PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT"
4540  GOTO 2170
4550  IF  NOT K3 THEN 4730
4560  IF  NOT D0 THEN 4590
4570  PRINT "STARBASE SHIELDS PROTECT THE ENTERPRISE"
4580  RETURN 
4590  Y3=S
4600  Z1=S1
4610  Z2=S2
4620  Z=Z0=65
4630  Z=Q[Z,3]
4640  IF Z=Z0 THEN 4710
4650  H=F8*Q[Z,2]*RND(0)/FND(Z)
4660  S=S-H
4670  IF RND(0)<EXP(-H*H/R8) THEN 4630
4680  R9=1
4690  GOSUB 2870
4700  GOTO 4630
4710  PRINT  USING 4720;Y3-S,S
4720  IMAGE X5DX,"UNIT HIT ON ENTERPRISE",4X5DX,"REMAINING"
4730  RETURN 
4740  PRINT LIN(2)"THE ENTERPRISE IS DEAD IN SPACE.  IF YOU SURVIVE ALL IMPENDING"
4750  PRINT "ATTACKS YOU WILL BE DEMOTED TO THE RANK OF PRIVATE."
4760  IF B3=0 OR (K3>0 AND D0=0) THEN 4890
4770  T7=T7-4
4780  PRINT LIN(1)"STARBASE REPAIR CREW ON THE WAY !"'7
4790  IF D0 THEN 4870
4800  PRINT "THE ENTERPRISE HAS BEEN RESCUED BY THE STARBASE!"'7'7"!"'7"!"LIN(1)
4810  FOR E=1 TO 8
4820  D[E]=D[E] MAX 0
4830  NEXT E
4840  P=P0
4850  E=E0-S
4860  GOTO 2190
4870  GOSUB 5170
4880  GOTO 2190
4890  IF K3 <= 0 THEN 4970
4900  GOSUB 4560
4910  IF S<0 THEN 4950
4920  GOTO 4900
4930  PRINT LIN(2);"IT IS STARDATE"T
4940  GOTO 4970
4950  PRINT 
4960  PRINT "THE ENTERPRISE HAS BEEN DESTROYED.  THE FEDERATION IS SCREWED."
4970  PRINT "THERE ARE STILL"K9" KLINGON CRUISERS."
4980  GOTO 5040
4990  PRINT 
5000  PRINT "THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED."
5010  PRINT "THE FEDERATION HAS BEEN SAVED !!!"LIN(2)
5020  PRINT  USING 5030;((T7/(T1+(T-T0)))*100) MIN 100
5030  IMAGE"YOUR EFFICIENCY RATING = ",3D.2D,"%"
5040  PRINT LIN(2)"ANOTHER GAME  ? ";
5050  LINPUT Z$[1,1]
5060  IF Z$="Y" THEN 1360
5070  STOP 
5080  FOR Z1=(S1-1) MAX 1 TO (S1+1) MIN 8
5090  FOR Z2=(S2-1) MAX 1 TO (S2+1) MIN 8
5100  IF Q[FNS(Z1),1]=3 THEN 5150
5110  NEXT Z2
5120  NEXT Z1
5130  D0=0
5140  RETURN 
5150  D0=1
5160  C$="DOCKED"
5170  FOR E=1 TO 8
5180  D[E]=D[E] MAX 0
5190  NEXT E
5200  E=E0
5210  P=P0
5220  PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES."
5230  S=0
5240  RETURN 
5250  IF K3>0 THEN 5290
5260  IF E<E0*.1 THEN 5310
5270  C$="GREEN "
5280  GOTO 5320
5290  C$="RED   "
5300  GOTO 5320
5310  C$="YELLOW"
5320  RETURN 
5330  IF D0 THEN 5380
5340  IF D[2] >= 0 THEN 5370
5350  PRINT LIN(1)"**** SHORT RANGE SENSORS ARE OUT ****"LIN(1)
5360  GOTO 2190
5370  GOSUB 5250
5380  PRINT  USING 5720
5390  Z0=1
5400  GOSUB 5580
5410  PRINT  USING "32A";T$
5420  GOSUB 5580
5430  PRINT  USING 5650;T$,T
5440  GOSUB 5580
5450  PRINT  USING 5660;T$,C$
5460  GOSUB 5580
5470  PRINT  USING 5670;T$,Q1,Q2
5480  GOSUB 5580
5490  PRINT  USING 5680;T$,S1,S2
5500  GOSUB 5580
5510  PRINT  USING 5690;T$,E
5520  GOSUB 5580
5530  PRINT  USING 5700;T$,P
5540  GOSUB 5580
5550  PRINT  USING 5710;T$,S
5560  PRINT  USING 5720
5570  GOTO 2170
5580  T$=""
5590  Z=Z0
5600  Z0=Z0+8
5610  T$[LEN(T$)+1]=P$[4*Q[Z,1]+1,4*Q[Z,1]+4]
5620  Z=Z+1
5630  IF Z<Z0 THEN 5610
5640  RETURN 
5650  IMAGE32A4X,"STARDATE",5X4D
5660  IMAGE 32A4X,"CONDITION",4X6A
5670  IMAGE 32A4X,"QUADRANT",5XDX,",",XD
5680  IMAGE 32A4X,"SECTOR",7XDX,",",XD
5690  IMAGE 32A4X,"ENERGY",7X4D
5700  IMAGE 32A4X,"TORPEDOES",4X2D
5710  IMAGE 32A4X,"SHIELDS",6X4D
5720  IMAGE 32("-")
5730  IF D[8] >= 0 THEN 5760
5740  PRINT "COMPUTER DISABLED"
5750  GOTO 2190
5760  IF N0 THEN 5830
5770  PRINT "COMPUTER ACTIVE AND AWAITING COMMAND ";
5780  ENTER FNL(30),H,Y$
5790  PRINT 
5800  IF H#-256 THEN 5830
5810  GOSUB 2250
5820  GOTO 5770
5830  GOSUB 6710
5840  IF N4 OR N5 THEN 5770
5850  GOTO N1+1 OF 5910,6050,6100
5860  PRINT "FUNCTIONS AVAILABLE FROM COMPUTER"
5870  PRINT "    0 = CUMULATIVE GALACTIC RECORD"
5880  PRINT "    1 = STATUS REPORT"
5890  PRINT "    2 = KLINGON SHIP LOCATIONS"
5900  GOTO 5770
5910  PRINT  USING 6020;Q1,Q2
5920  PRINT  USING 6030
5930  FOR I=1 TO 8
5940  FOR J=1 TO 8
5950  Y[J]=Z[I,J]
5960  NEXT J
5970  PRINT  USING 6040;I
5980  MAT  PRINT  USING "5X,8(3D3X)/";Y
5990  NEXT I
6000  PRINT  USING 6040
6010  GOTO 2170
6020  IMAGE"COMPUTER RECORD OF GALAXY -- QUADRANT  ",DX,",",XD
6030  IMAGE"      1     2     3     4     5     6     7     8"
6040  IMAGE 5X,8("----- "),2D
6050  PRINT "    STATUS REPORT"
6060  PRINT "NUMBER OF KLINGONS LEFT ="K9
6070  PRINT "NUMBER OF STARDATES LEFT ="(T0+T9)-T
6080  PRINT "NUMBER OF STARBASES LEFT ="B9
6090  GOTO 2170
6100  PRINT 
6110  IF D[2] >= 0 THEN 6140
6120  PRINT "SORRY...SHORT RANGE SENSORS ARE STILL OUT"
6130  GOTO 2190
6140  IF K3>0 THEN 6170
6150  PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT."
6160  GOTO 2170
6170  Z0=65
6180  GOSUB 6200
6190  GOTO 2170
6200  Z=Z0
6210  Z=Q[Z,3]
6220  IF Z=Z0 THEN 6260
6230  PRINT  USING 6240;FNI(Z),FNJ(Z)
6240  IMAGE "KLINGON SHIP AT  ",DX,",",XD
6250  GOTO 6210
6260  RETURN 
6270  Z=FNR(0)
6280  IF Q[Z,1] THEN 6270
6290  RETURN 
6300  Z3=Q[Z0,4]
6310  Q[Z3,3]=Q[Z0,4]=Z
6320  Q[Z,4]=Z3
6330  Q[Z,3]=Z0
6340  RETURN 
6350  GOTO Q[Z,1]+1 OF 6550,6580,6400,6490
6360  PRINT "*** KLINGON DESTROYED ***"
6370  K3=K3-1
6380  K9=K9-1
6390  GOTO 6540
6400  PRINT  USING 6410;FNI(Z),FNJ(Z)
6410  IMAGE"STAR EXPLODES AT  ",DX,",",XD
6420  S3=S3-1
6430  GOSUB 6540
6440  Z9=Z0
6450  Z0=68
6460  GOSUB 6300
6470  Z0=Z9
6480  RETURN 
6490  PRINT  USING 6500;FNI(Z),FNJ(Z)
6500  IMAGE"*** STARBASE DESTROYED AT  ",DX,",",XD3X,"***"
6510  B3=B3-1
6520  B9=B9-1
6530  D0=0
6540  Q[Z,1]=0
6550  Q[Q[Z,3],4]=Q[Z,4]
6560  Q[Q[Z,4],3]=Q[Z,3]
6570  G[Q1,Q2]=100*K3+10*B3+S3
6580  RETURN 
6590  REM *******   PRINTS OUT NAME FROM ARRAY   *******
6600  S8=R1*12-11
6610  IF S8>72 THEN 6640
6620  PRINT D$[S8,S8+11];
6630  GOTO 6650
6640  PRINT E$[S8-72,S8-61];
6650  RETURN 
6660  MAT  PRINT  USING "8(8(5D4X)/)";G
6670  T7=T7-1
6680  IF LEN(Y$)<7 THEN 2190
6690  Y$=Y$[7]
6700  GOTO 2360
6710  REM 
6720  N0=N2=N5=N6=0
6730  N3=1
6740  GOSUB 6930
6750  N1=N8
6760  IF N4 THEN 6870
6770  IF N9 <> 11 THEN 6840
6780  N6=N7
6790  GOSUB 6930
6800  IF N4 THEN 6870
6810  N2=N8
6820  N3=.125^N7
6830  N5=N7
6840  IF N9 <= 10 THEN 6880
6850  IF N6+N7 <= 0 OR N9=11 THEN 6910
6860  N0=N9<14
6870  RETURN 
6880  PRINT "REMEMBER -- THIS IS OCTAL"
6890  N4=2
6900  RETURN 
6910  N4=1
6920  RETURN 
6930  REM 
6940  N4=N7=N8=0
6950  IF LEN(Y$) <= 0 THEN 7070
6960  Z$=Y$[1,1]
6970  Y$=Y$[2]
6980  FOR N9=1 TO 13
6990  IF Z$=N$[N9,N9] THEN 7030
7000  NEXT N9
7010  N4=1
7020  RETURN 
7030  IF N9>8 THEN 7080
7040  N8=8*N8+N9-1
7050  N7=N7+1
7060  IF LEN(Y$)>0 THEN 6960
7070  N9=14
7080  RETURN 
7090  IF N0 THEN 7160
7100  PRINT "COURSE ";
7110  ENTER FNL(12)+((N1=0)*FNL(6)),H,Y$
7120  PRINT 
7130  IF H#-256 THEN 7160
7140  GOSUB 2250
7150  GOTO 7100
7160  GOSUB 6710
7170  GOTO N4 OF 7230,7100
7180  IF N1<8 THEN 7210
7190  N4=1
7200  RETURN 
7210  X1=C[N1+1,1]+(C[N1+2,1]-C[N1+1,1])*N2*N3
7220  X2=C[N1+1,2]+(C[N1+2,2]-C[N1+1,2])*N2*N3
7230  RETURN 
7240  Z=Z0
7250  Z=Q[Z,3]
7260  IF Z=Z0 THEN 7370
7270  H=F8*X*RND(0)/FND(Z)
7280  Q[Z,2]=Q[Z,2]-H
7290  IF Q[Z,1] <> 4 THEN 7320
7300  PRINT  USING 7310;H,FNI(Z),FNJ(Z),Q[Z,2]
7310  IMAGE5DX,"UNIT HIT ON KLINGON AT",XDX,",",XD4X,5DX,"LEFT"
7320  IF Q[Z,2] >= 0 THEN 7250
7330  Z8=Q[Z,3]
7340  GOSUB 6350
7350  Z=Z8
7360  GOTO 7260
7370  RETURN 
7380  B5=POS(Y$,",")
7390  IF B5<4 THEN 7430
7400  Y$=Y$[B5+1]
7410  J5=1
7420  GOTO 1+(LEN(Y$)>0) OF 7440,7470
7430  J5=0
7440  PRINT "WHAT OPERATION  ? ";
7450  ENTER 255,H,Y$
7460  IF H=-256 THEN 7450
7470  GOSUB 6710
7480  IF N4 OR N5 OR N1<0 OR N1>7 THEN 2430
7490  D1=N1+1
7500  IF LEN(Y$)>0 THEN 7530
7510  PRINT TAB(27*(J5=0))"TO WHAT STATUS  ? ";
7520  LINPUT Y$
7530  B5=POS(Y$,",")
7540  IF B5<2 THEN 7590
7550  CONVERT Y$[1,B5-1] TO D[D1],8118
7560  Y$=Y$[B5+1]
7570  T7=T7-2
7580  GOTO 2360
7590  CONVERT Y$ TO D[D1],8118
7600  Y$=""
7610  T7=T7-2
7620  GOTO 2190
7630  PRINT "THE STATUS MUST BE NUMERIC."
7640  GOTO 2190
7650  PRINT "ENTER FILE NAME :  ";
7660  ENTER 255,H,F$
7670  PRINT 
7680  IF H<0 THEN 7650
7690  ASSIGN F$,1,K
7700  IF K <= 2 THEN 7730
7710  PRINT "FILE '"F$"' DOESN'T EXIST OR IS INACCESSIBLE."
7720  GOTO 1360
7730  READ #1,1
7740  IF  END #1 THEN 8280
7750  MAT  READ #1;D,Q,Z,G
7760  READ #1;S,E,P,T0,T,T9,T1,Q1,Q2,S1,S2,K9,B9,T7
7770  P3=1
7780  N0=0
7790  PRINT  USING 1770;K9,T9,B9
7800  GOTO 1820
7810  B5=POS(Y$,"-")
7820  IF B5<5 THEN 7970
7830  IF POS(Y$,",") AND (POS(Y$,",")<B5) THEN 7970
7840  Y$=Y$[B5+1]
7850  B5=POS(Y$,",")
7860  IF B5>1 THEN 7930
7870  IF LEN(Y$)<12 AND LEN(Y$)>0 THEN 7900
7880  PRINT "FILES CAN HAVE 1-6 CHARACTER NAMES PLUS THE '.ID'."
7890  GOTO 8020
7900  F$=Y$
7910  Y$=""
7920  GOTO 8060
7930  IF B5>11 OR B5<1 THEN 7880
7940  F$=Y$[1,B5-1]
7950  Y$=Y$[B5+1]
7960  GOTO 8060
7970  B5=POS(Y$,",")
7980  IF B5<5 THEN 8010
7990  Y$=Y$[B5+1]
8000  GOTO 8020
8010  Y$=""
8020  PRINT LIN(2)"ENTER FILE NAME :  ";
8030  ENTER 255,H,F$
8040  PRINT 
8050  IF H<0 THEN 8020
8060  N0=LEN(Y$)>0
8070  ASSIGN F$,1,K
8080  IF K=0 THEN 8220
8090  IF K=1 OR K=2 THEN 8200
8100  PRINT "FILE '"F$"' DOES NOT EXIST OR IS INACCESSIBLE."
8110  PRINT "DO YOU WISH TO HAVE THE FILE CREATED (Y/N)  ? ";
8120  LINPUT Z$[1,1]
8130  IF Z$#"Y" THEN 2190
8140  CREATE B5,F$,4
8150  GOTO B5+1 OF 8070,8160,8160,8180,8180
8160  PRINT "CREATE ATTEMPT UNSUCESSFUL - FILE NOT SAVED."LIN(1)
8170  GOTO 2190
8180  PRINT "THERE IS NO ROOM ON YOUR ACCOUNT OR SYSTEM OVERLOAD."LIN(1)
8190  GOTO 2190
8200  PRINT "FILE IS READ-ONLY OR INVALID ASSIGNMENT."LIN(1)
8210  GOTO 2190
8220  IF  END #1 THEN 8300
8230  READ #1,1
8240  MAT  PRINT #1;D,Q,Z,G
8250  PRINT #1;S,E,P,T,T,(T0+T9)-T,((T1+(T-T0))),Q1,Q2,S1,S2,K9,B9,T7
8260  PRINT LIN(1)"   ENTERPRISE LOG SAFELY AWAY TO STARFLEET."LIN(1)
8270  GOTO 1+(N0=1) OF 2190,2360
8280  PRINT "NO GAME STORED IN FILE :  "F$;LIN(2)
8290  GOTO 1360
8300  PRINT "THE FILE IS NOT LARGE ENOUGH TO ACCOMODATE THIS GAME."LIN(1)
8310  GOTO 2190
8320  PRINT LIN(2)
8330  PRINT  USING 8340;(250+(RND(0)*100-50))
8340  IMAGE "YOUR SELF-DESTRUCT RESULTED IN A",X3D.2DX,"QUADRATON BLAST DESTROYING"
8350  PRINT "THE "K9"REMAINING KLINGONS, ALL FEDERATION STARBASES AND"
8360  PRINT "OF COURSE, YOURSELF."LIN(2)"YOU LOSE."LIN(3)
8370  GOTO 5040
8380  END 
