10  COM Z$[72],G[8,8],C[9,2],K[3,3],N[3],Z[8,8],D[8]
20  COM C$[6],D$[72],E$[24],A$[3],Q$[72],R$[72],S$[48],X$[8]
30  COM T,T0,T7,T9,D0,E,E0,P,P0,S,S1,S2,S3,S8,S9,H,H8,Q1,Q2
40  COM Z1,Z2,Z3,R1,R2,C1,C2,W1,X,Y,X1,X2,A,N,B3,B9,K3,K7,K9,O9,O8
50  REM STTR1A
100  GOTO O9 OF 230,1270
110  X$="12345678"
180  PRINT "STAR TREK"
190  PRINT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!)";
200  INPUT A$
210  IF A$ <> "YES" THEN 230
220  O9=1
225  CHAIN "STTR1C"
230  REM
240  Z$="                                                                      "
250  PRINT
290  T0=T=INT(RND(1)*20+20)*100
300  T9=30
310  D0=0
320  E0=E=3000
330  P0=P=10
340  S9=200
350  S=H8=0
360  DEF FND(D)=SQR((K[I,1]-S1)^2+(K[I,2]-S2)^2)
370  Q1=INT(RND(1)*8+1)
380  Q2=INT(RND(1)*8+1)
390  S1=INT(RND(1)*8+1)
400  S2=INT(RND(1)*8+1)
410  T7=TIM(0)+60*TIM(1)
420  C[2,1]=C[3,1]=C[4,1]=C[4,2]=C[5,2]=C[6,2]=-1
430  C[1,1]=C[3,2]=C[5,1]=C[7,2]=C[9,1]=0
440  C[1,2]=C[2,2]=C[6,1]=C[7,1]=C[8,1]=C[8,2]=C[9,2]=1
450  MAT D=ZER
460  D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL"
470  D$[49]="PHOTON TUBESDAMAGE CNTRL"
480  E$="SHIELD CNTRLCOMPUTER"
490  B9=K9=0
500  FOR I=1 TO 8
510  FOR J=1 TO 8
520  R1=RND(1)
530  IF R1>.98 THEN 580
540  IF R1>.95 THEN 610
550  IF R1>.8 THEN 640
560  K3=0
570  GOTO 660
580  K3=3
590  K9=K9+3
600  GOTO 660
610  K3=2
620  K9=K9+2
630  GOTO 660
640  K3=1
650  K9=K9+1
660  R1=RND(1)
670  IF R1>.96 THEN 700
680  B3=0
690  GOTO 720
700  B3=1
710  B9=B9+1
720  S3=INT(RND(1)*8+1)
730  G[I,J]=K3*100+B3*10+S3
740  Z[I,J]=0
750  NEXT J
760  NEXT I
770  K7=K9
775  IF B9 <= 0 OR K9 <= 0 THEN 490
780  PRINT "YOU MUST DESTROY"K9"KLINGONS IN"T9
782  PRINT "STARDATES WITH"B9"STARBASES"
810  K3=B3=S3=0
820  IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 920
830  X=G[Q1,Q2]*.01
840  K3=INT(X)
850  B3=INT((X-K3)*10)
860  S3=G[Q1,Q2]-INT(G[Q1,Q2]*.1)*10
870  IF K3=0 THEN 910
880  IF S>200 THEN 910
890  PRINT "COMBAT AREA      CONDITION RED"
900  PRINT "   SHIELDS DANGEROUSLY LOW"
910  MAT K=ZER
920  FOR I=1 TO 3
930  K[I,3]=0
940  NEXT I
950  Q$=Z$
960  R$=Z$
970  S$=Z$[1,48]
980  A$="<*>"
990  Z1=S1
1000  Z2=S2
1010  GOSUB 5510
1020  FOR I=1 TO K3
1030  GOSUB 5380
1040  A$="+++"
1050  Z1=R1
1060  Z2=R2
1070  GOSUB 5510
1080  K[I,1]=R1
1090  K[I,2]=R2
1100  K[I,3]=S9
1110  NEXT I
1120  FOR I=1 TO B3
1130  GOSUB 5380
1140  A$=">!<"
1150  Z1=R1
1160  Z2=R2
1170  GOSUB 5510
1180  NEXT I
1190  FOR I=1 TO S3
1200  GOSUB 5380
1210  A$=" * "
1220  Z1=R1
1230  Z2=R2
1240  GOSUB 5510
1250  NEXT I
1260  GOSUB 4120
1270  PRINT "COMMAND";
1280  INPUT A
1290  GOTO A+1 OF 1410,1260,2330,2530,2800,3460,3560,4630
1300  PRINT
1310  PRINT "   0 = SET COURSE"
1320  PRINT "   1 = SHORT RANGE SENSOR SCAN"
1330  PRINT "   2 = LONG RANGE SENSOR SCAN"
1340  PRINT "   3 = FIRE PHASERS"
1350  PRINT "   4 = FIRE PHOTON TORPEDOES"
1360  PRINT "   5 = SHIELD CONTROL"
1370  PRINT "   6 = DAMAGE CONTROL REPORT"
1380  PRINT "   7 = CALL ON LIBRARY COMPUTER"
1390  PRINT
1400  GOTO 1270
1410  PRINT "COURSE (1-9)";
1420  INPUT C1
1430  IF C1=0 THEN 1270
1440  IF C1<1 OR C1 >= 9 THEN 1410
1450  PRINT "WARP FACTOR (0-8)";
1460  INPUT W1
1470  IF W1<0 OR W1>8 THEN 1410
1480  IF D[1] >= 0 OR W1 <= .2 THEN 1510
1490  PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2"
1500  GOTO 1410
1510  IF K3 <= 0 THEN 1560
1520  GOSUB 3790
1530  IF K3 <= 0 THEN 1560
1540  IF S<0 THEN 4000
1550  GOTO 1610
1560  IF E>0 THEN 1610
1570  IF S<1 THEN 3920
1580  PRINT "YOU HAVE"INT(E)"UNITS OF ENERGY"
1590  PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS"
1592  PRINT "WHICH HAVE"INT(S)"UNITS LEFT"
1600  GOTO 1270
1610  FOR I=1 TO 8
1620  IF D[I] >= 0 THEN 1640
1630  D[I]=D[I]+1
1640  NEXT I
1650  IF RND(1)>.2 THEN 1810
1660  R1=INT(RND(1)*8+1)
1670  IF RND(1) >= .5 THEN 1750
1680  D[R1]=D[R1]-(RND(1)*5+1)
1690  PRINT
1700  PRINT "DAMAGE CONTROL REPORT: ";
1710  GOSUB 5610
1720  PRINT " DAMAGED"
1730  PRINT
1740  GOTO 1810
1750  D[R1]=D[R1]+(RND(1)*5+1)
1760  PRINT
1770  PRINT "DAMAGE CONTROL REPORT: ";
1780  GOSUB 5610
1790  PRINT " STATE OF REPAIR IMPROVED"
1800  PRINT
1810  N=INT(W1*8)
1820  A$="   "
1830  Z1=S1
1840  Z2=S2
1850  GOSUB 5510
1870  X=S1
1880  Y=S2
1885  C2=INT(C1)
1890  X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2)
1900  X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2)
1910  FOR I=1 TO N
1920  S1=S1+X1
1930  S2=S2+X2
1940  IF S1<.5 OR S1 >= 8.5 OR S2<.5 OR S2 >= 8.5 THEN 2170
1950  A$="   "
1960  Z1=S1
1970  Z2=S2
1980  GOSUB 5680
1990  IF Z3 <> 0 THEN 2070
2030  PRINT "WARP ENGINES SHUTDOWN AT SECTOR";
2031  Z8=S1
2032  Z9=S2
2033  GOSUB 9000
2034  PRINT "DUE TO BAD NAVIGATION"
2040  S1=S1-X1
2050  S2=S2-X2
2060  GOTO 2080
2070  NEXT I
2080  A$="<*>"
2083  S1=INT(S1+.5)
2086  S2=INT(S2+.5)
2090  Z1=S1
2100  Z2=S2
2110  GOSUB 5510
2120  E=E-N+5
2130  IF W1<1 THEN 2150
2140  T=T+1
2150  IF T>T0+T9 THEN 3970
2160  GOTO 1260
2170  X=Q1*8+X+X1*N
2180  Y=Q2*8+Y+X2*N
2190  Q1=INT(X/8)
2200  Q2=INT(Y/8)
2210  S1=INT(X-Q1*8+.5)
2220  S2=INT(Y-Q2*8+.5)
2230  IF S1 <> 0 THEN 2260
2240  Q1=Q1-1
2250  S1=8
2260  IF S2 <> 0 THEN 2290
2270  Q2=Q2-1
2280  S2=8
2290  T=T+1
2300  E=E-N+5
2310  IF T>T0+T9 THEN 3970
2320  GOTO 810
2330  O8=3
2340  GOTO 4010
2530  O8=4
2540  GOTO 4010
2800  O8=5
2810  GOTO 4010
3460  O8=6
3470  GOTO 4010
3560  O8=7
3570  GOTO 4010
3790  IF C$ <> "DOCKED" THEN 3820
3800  PRINT "STAR BASE SHIELDS PROTECT THE ENTERPRISE"
3810  RETURN
3820  IF K3 <= 0 THEN 3910
3830  FOR I=1 TO 3
3840  IF K[I,3] <= 0 THEN 3900
3850  H=(K[I,3]/FND(0))*(2*RND(1))
3860  S=S-H
3870  PRINT INT(H)"UNIT HIT ON ENTERPRISE AT SECTOR";
3871  Z8=K[I,1]
3872  Z9=K[I,2]
3873  GOSUB 9000
3874  PRINT "("INT(S)"LEFT )"
3890  IF S<0 THEN 4000
3900  NEXT I
3910  RETURN
3920  O8=9
3930  GOTO 4010
3970  O8=1
3980  GOTO 4010
4000  O8=2
4010  CHAIN "STTR1B"
4120  FOR I=S1-1 TO S1+1
4130  FOR J=S2-1 TO S2+1
4140  IF I<1 OR I>8 OR J<1 OR J>8 THEN 4200
4150  A$=">!<"
4160  Z1=I
4170  Z2=J
4180  GOSUB 5680
4190  IF Z3=1 THEN 4240
4200  NEXT J
4210  NEXT I
4220  D0=0
4230  GOTO 4310
4240  D0=1
4250  C$="DOCKED"
4260  E=3000
4270  P=10
4280  PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES"
4290  S=0
4300  GOTO 4380
4310  IF K3>0 THEN 4350
4320  IF E<E0*.1 THEN 4370
4330  C$="GREEN"
4340  GOTO 4380
4350  C$="RED"
4360  GOTO 4380
4370  C$="YELLOW"
4380  IF D[2] >= 0 THEN 4430
4390  PRINT
4400  PRINT "*** SHORT RANGE SENSORS ARE OUT ***"
4410  PRINT
4420  GOTO 4530
4430  PRINT "-=--=--=--=--=--=--=--=-"
4440  PRINT Q$[1,24]
4450  PRINT Q$[25,48]" STARDATE"T
4460  PRINT Q$[49,72]" CONDITION ";C$
4470  PRINT R$[1,24]" QUADRANT";
4471  Z8=Q1
4472  Z9=Q2
4473  GOSUB 9000
4474  PRINT
4480  PRINT R$[25,48]" SECTOR  ";
4481  Z8=S1
4482  Z9=S2
4483  GOSUB 9000
4484  PRINT
4490  PRINT R$[49,72]" ENERGY  "INT(E)
4500  PRINT S$[1,24]" PHOTON TORPEDOES"P
4510  PRINT S$[25,48]" SHIELDS "INT(S)
4520  PRINT "-=--=--=--=--=--=--=--=-"
4530  RETURN
4630  O8=8
4640  GOTO 4010
5380  R1=INT(RND(1)*8+1)
5390  R2=INT(RND(1)*8+1)
5400  A$="   "
5410  Z1=R1
5420  Z2=R2
5430  GOSUB 5680
5440  IF Z3=0 THEN 5380
5450  RETURN
5460  FOR I=1 TO 11
5470  PRINT
5480  NEXT I
5490  PRINT
5500  RETURN
5510  REM
5520  S8=Z1*24+Z2*3-26
5530  IF S8>72 THEN 5560
5540  Q$[S8,S8+2]=A$
5550  GOTO 5600
5560  IF S8>144 THEN 5590
5570  R$[S8-72,S8-70]=A$
5580  GOTO 5600
5590  S$[S8-144,S8-142]=A$
5600  RETURN
5610  REM
5620  S8=R1*12-11
5630  IF S8>72 THEN 5660
5640  PRINT D$[S8,S8+11];
5650  GOTO 5670
5660  PRINT E$[S8-72,S8-61];
5670  RETURN
5680  REM
5683  Z1=INT(Z1+.5)
5686  Z2=INT(Z2+.5)
5690  S8=Z1*24+Z2*3-26
5700  Z3=0
5710  IF S8>72 THEN 5750
5720  IF Q$[S8,S8+2] <> A$ THEN 5810
5730  Z3=1
5740  GOTO 5810
5750  IF S8>144 THEN 5790
5760  IF R$[S8-72,S8-70] <> A$ THEN 5810
5770  Z3=1
5780  GOTO 5810
5790  IF S$[S8-144,S8-142] <> A$ THEN 5810
5800  Z3=1
5810  RETURN
9000  REM
9010  IF Z8<1 OR Z8>8 THEN 9040
9020  PRINT " "X$[Z8,Z8]",";
9030  GOTO 9050
9040  PRINT " *,";
9050  IF Z9<1 OR Z9>8 THEN 9080
9060  PRINT X$[Z9,Z9]" ";
9070  GOTO 9090
9080  PRINT "* ";
9090  RETURN
9999  END
