10  COM S$[28],N$[72],N,Y,D[3],L[3],I[3],Y[4,2],V[3,2],S[4,2],W[4],E[4],K[4]
20  COM P[4,12],F[4,9],C[4],Q[4,8],T[4,30],O[4],A[4,5],A1,H5,U,W0,F3,O,G
30  COM W,V9,N1,U[4],S
40  REM  ****  $TREK4T  FOUR-TERMINAL STAR TREK GAME  ****
50  REM
60  REM  WRITTEN BY WARD RUTH  MONTEREY HIGH SCHOOL  4-24-78
70  REM
80  REM  FORMATTING BASED ON TREK73 BY W.K. CHAR
90  REM  LOOSLY RELATED TO *TREK BY K.A. MASON  MHS
100  REM  --  ENERGY FLOW & DEAD SHIP CLEANUP
110  REM
120  FILES *YTREKL
130  DIM B$[10]
140  REM  ****  ALL SHIPS UPDATED?  ****
150  FOR F=1 TO N1+1
160  IF F=Y THEN 260
170  READ #1,F;S
180  IF S<0 THEN 260
190  READ #1;O2,T2,T1,T0,B$
200  IF O2=O AND S=3 THEN 260
210  T8=T2*1440+T1*60+T0
220  T9=TIM(2)*1440+TIM(1)*60+TIM(0)
230  IF T9-T8>3 THEN 250
240  CHAIN "*YTREKJ"
250  PRINT #1,F;-3,O2,T2,T1,T0,B$
260  NEXT F
270  S=1
280  FOR F=1 TO N1+1
290  IF F=Y THEN 580
300  READ #1,F;S1
310  IF S1>-2 THEN 350
320  S=S+1
330  IF S1#-3 THEN 580
340  PRINT "GREAT BIRD OF THE GALAXY:  "S$[S*7-6,S*7]" HAS DEFAULTED"
350  IF S1<0 THEN 580
360  READ #1;O2,T2,T1,T0,B$
370  S=S+1
380  READ #1;C[S],A[S,1],A[S,2],A[S,3],A[S,4],A[S,5],S[S,1],S[S,2],K[S],E[S]
390  FOR C=1 TO 8
400  READ #1;Q[S,C]
410  NEXT C
420  FOR C=4 TO 12 STEP 4
430  READ #1;P[S,C-3],P[S,C-2],P[S,C-1],P[S,C]
440  NEXT C
450  FOR C=5 TO 30 STEP 5
460  READ #1;T[S,C-1],T[S,C]
470  NEXT C
480  FOR C=4 TO 12 STEP 4
490  C5=P[S,C]
500  GOSUB 1790
510  P[S,C]=S2
520  NEXT C
530  FOR C=5 TO 30 STEP 5
540  C5=T[S,C]
550  GOSUB 1790
560  T[S,C]=S2
570  NEXT C
580  NEXT F
590  REM  ****  ENERGY FLOW MANAGEMENT  ****
600  FOR S=1 TO N
610  D8=(216-ABS(S[S,1])^3*K[S])/10
620  IF D8 <= 0 THEN 720
630  FOR C=4 TO 12 STEP 4
640  IF P[S,C-3] >= 10 OR D8 <= 0 OR P[S,C-2] THEN 710
650  P[S,C-3]=P[S,C-3]+D8
660  IF P[S,C-3] <= 10 THEN 700
670  D8=P[S,C-3]-10
680  P[S,C-3]=10
690  GOTO 710
700  D8=0
710  NEXT C
720  Q=0
730  FOR C=1 TO 7 STEP 2
740  Q=Q+(Q[S,C]^2/Q[S,C+1])/1000
750  NEXT C
760  O[S]=D8-Q-1
770  E[S]=(E[S]+O[S]) MIN W[S]
780  IF E[S]+O[S]>25 OR S#1 THEN 800
790  PRINT "ENGINEERING:  ENERGY CRITICALLY LOW!"
800  NEXT S
810  REM  ****  DESTRUCTION CHECKING & CLEANUP  ****
820  FOR S=N TO 1 STEP -1
830  FOR F=1 TO N1+1
840  READ #1,F;S2
850  IF S2=-1 THEN 880
860  READ #1;C6,C6,C6,C6,B$
870  IF B$=S$[S*7-6,S*7] THEN 890
880  NEXT F
890  READ #1,F;S2
900  IF (Q[S,2] MIN Q[S,4] MIN Q[S,6] MIN Q[S,8]) <= 0 THEN 990
910  IF C[S] <= 215 THEN 940
920  PRINT "OVER HALF OF THE "S$[S*7-6,S*7]"S CREW IS DEAD"
930  GOTO 990
940  IF E[S] >= 0 THEN 970
950  PRINT S$[S*7-6,S*7]"S ENERGY DEPLETED"
960  GOTO 990
970  IF S2<-1 THEN 990
980  IF U[S] THEN 1710
990  PRINT S$[S*7-6,S*7]" DESTROYED"
1000  C[S]=430
1010  N=N-1
1020  IF S=1 THEN 1090
1030  IF N>1 THEN 1160
1040  PRINT "WE COMMEND CAPTAIN "N$" ON HIS DESTRUCTION OF"N1"ENEMY VESSELS."
1050  FOR F=1 TO 4
1060  IF F=Y THEN 1080
1070  PRINT #1,F;0
1080  NEXT F
1090  PRINT 
1100  PRINT "SURVIVORS REPORTED:"
1110  FOR C5=1 TO N+1
1120  PRINT S$[C5*7-6,C5*7]" --"(430-C[C5])*(C[C5]<430)
1130  NEXT C5
1140  GOTO 1770
1150  REM  ****  CLEANUP  ****
1160  IF H5#S-1 THEN 1180
1170  H5=0
1180  FOR C=1 TO 3
1190  IF P[1,C*4]-(P[1,C*4]>4)*4#S THEN 1210
1200  P[1,C*4]=-120*C+120
1210  NEXT C
1220  FOR C=5 TO 30 STEP 5
1230  IF T[1,C]-(T[1,C]>4)*4#S THEN 1250
1240  T[1,C]=0
1250  NEXT C
1260  FOR C=S+1 TO N+1
1270  I[C-2]=I[C-1]
1280  L[C-2]=L[C-1]
1290  D[C-2]=D[C-1]
1300  V[C-2,1]=V[C-1,1]
1310  V[C-2,2]=V[C-1,2]
1320  W[C-1]=W[C]
1330  E[C-1]=E[C]
1340  K[C-1]=K[C]
1350  O[C-1]=O[C]
1360  C[C-1]=C[C]
1370  FOR C2=4 TO 12 STEP 4
1380  P[C-1,C2-3]=P[C,C2-3]
1390  P[C-1,C2-2]=P[C,C2-2]
1400  P[C-1,C2-1]=P[C,C2-1]
1410  IF P[C,C2]#S THEN 1440
1420  P[C-1,C2]=-120*(C2/4)+120
1430  GOTO 1450
1440  P[C-1,C2]=P[C,C2]
1450  NEXT C2
1460  FOR C2=2 TO 8 STEP 2
1470  Q[C-1,C2-1]=Q[C,C2-1]
1480  Q[C-1,C2]=Q[C,C2]
1490  NEXT C2
1500  FOR C2=5 TO 30 STEP 5
1510  T[C-1,C2-4]=T[C,C2-4]
1520  T[C-1,C2-3]=T[C,C2-3]
1530  T[C-1,C2-2]=T[C,C2-2]
1540  T[C-1,C2-1]=T[C,C2-1]
1550  IF T[C,C2]#S THEN 1580
1560  T[C-1,C2]=0
1570  GOTO 1590
1580  T[C-1,C2]=T[C,C2]
1590  NEXT C2
1600  FOR C2=1 TO 5
1610  A[C-1,C2]=A[C,C2]
1620  NEXT C2
1630  S[C-1,1]=S[C,1]
1640  S[C-1,2]=S[C,2]
1650  Y[C-1,1]=Y[C,1]
1660  Y[C-1,2]=Y[C,2]
1670  S$[(C-1)*7-6,(C-1)*7]=S$[C*7-6,C*7]
1680  NEXT C
1690  PRINT #1,F;-1
1700  GOTO 820
1710  NEXT S
1720  READ #1,Y;S,O2
1730  PRINT #1,Y;S,O2,TIM(2),TIM(1),TIM(0),S$[1,7]
1740  FOR C=1 TO 10000
1750  NEXT C
1760  CHAIN "*YTREKB"
1770  CHAIN "*YTREKM"
1780  REM  ****  FILE TO ARRAY SHIP ADRESS SUBROUTINE  ****
1790  IF C5 <= 0 THEN 1850
1800  READ #1,C5;C6,C6,C6,C6,C6,B$
1810  FOR S2=1 TO N
1820  IF S$[S2*7-6,S2*7]=B$ THEN 1840
1830  NEXT S2
1840  RETURN 
1850  S2=C5
1860  RETURN 
1870  END 
