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  --  SENSOR SCANS & WEAPON STATUS
110  REM
120  FILES *YTREKL
130  DEF FND()=+((<0)*360)
140  DEF FNV()=FND(ABS(-((>315)*360)-315)-45)
150  DIM D$[20],B$[7]
160  IF A1=22 THEN 850
170  IF A1#16 AND A1#15 THEN 1050
180  D$="0123456789"
190  IF A1#15 THEN 220
200  S=1
210  GOTO 380
220  IF  NOT A[1,4] THEN 250
230  PRINT "SENSORS INOPERABLE"
240  GOTO 820
250  PRINT "SCIENCE:  SCAN [WHOM]";
260  INPUT D$
270  IF LEN(D$)>7 THEN 310
280  FOR C3=2 TO N
290  IF D$=S$[C3*7-6,C3*7-7+LEN(D$)] THEN 330
300  NEXT C3
310  PRINT "SHIP NOT FOUND"
320  GOTO 1320
330  S=C3
340  GOSUB 1550
350  GOSUB 1660
360  PRINT #1;16,F
370  GOTO 400
380  GOSUB 1660
390  PRINT #1;15
400  PRINT '14"DAMAGES TO "S$[S*7-6,S*7]":"
410  C5=0
420  FOR C=1 TO 5
430  READ D$
440  IF  NOT A[S,C] THEN 470
450  C5=1
460  PRINT D$". ";
470  NEXT C
480  IF C5 THEN 500
490  PRINT "NO DAMAGES SUFFRED.";
500  PRINT 
510  PRINT "SURVIVORS:"430-C[S]
520  PRINT '14"SHIELDS:   LEVELS";
530  FOR C=1 TO 4
540  PRINT TAB(12+C*8);INT(Q[S,C*2-1]+.5);
550  NEXT C
560  PRINT 
570  PRINT TAB(11)"EFFNCY";
580  FOR C=1 TO 4
590  PRINT TAB(12+C*8);INT(Q[S,C*2]*100+.5);
600  NEXT C
610  PRINT 
620  PRINT "PHASERS:  CONTROL";
630  MAT H=ZER[3]
640  C2=3
650  GOSUB 1350
660  PRINT TAB(11)"LEVELS";
670  FOR C=1 TO 3
680  PRINT TAB(12+C*8);INT(P[S,C*4-3]+.5);
690  NEXT C
700  PRINT 
710  PRINT "  TRPDS:  CONTROL";
720  MAT H=ZER[6]
730  C2=6
740  GOSUB 1350
750  PRINT TAB(11)"LEVELS";
760  FOR C=1 TO 6
770  PRINT TAB(12+C*8);INT(T[S,C*5-3]+.5);
780  NEXT C
790  PRINT 
800  PRINT '14"DAMAGE FACTOR:"K[S];"POWER FLOW:"O[S]
810  PRINT "FUEL REAMAINING:"INT(E[S]);"FUEL CAPACITY:"W[S]
820  A1=0
830  CHAIN "*YTREKF"
840  REM  ****  COMMAND:  TORPEDOE STATUS  ****
850  PRINT "TORPEDOE STATUS REPORT:"
860  PRINT 
870  PRINT "CONTROL:   ";
880  S=1
890  MAT H=ZER[6]
900  C2=6
910  GOSUB 1350
920  PRINT " LEVELS:   ";
930  FOR C=1 TO 6
940  PRINT TAB(2+C*8);INT(T[1,C*5-3]+.5);
950  NEXT C
960  PRINT 
970  PRINT " SPEEDS:   ";
980  FOR C=1 TO 6
990  PRINT TAB(2+C*8);INT(T[1,C*5-1]+.5);
1000  NEXT C
1010  PRINT 
1020  GOSUB 1660
1030  GOTO 820
1040  REM  ****  COMMAND:  PHASER STATUS  ****
1050  PRINT "PHASER STATUS REPORT:"
1060  PRINT 
1070  PRINT "CONTROL:  ";
1080  S=1
1090  MAT H=ZER[3]
1100  C2=3
1110  GOSUB 1350
1120  PRINT " LEVELS:  ";
1130  FOR C=1 TO 3
1140  PRINT TAB(2+C*8);INT(P[1,C*4-3]+.5);
1150  NEXT C
1160  PRINT 
1170  PRINT "EFFCNCY:  ";
1180  FOR C=1 TO 3
1190  PRINT TAB(2+C*8);INT(P[1,C*4-1]*100+.5);
1200  NEXT C
1210  PRINT 
1220  PRINT "CHG/DSG:  ";
1230  FOR C=2 TO 10 STEP 4
1240  GOTO P[1,C]+1 OF 1270,1290
1250  PRINT " 0      ";
1260  GOTO 1300
1270  PRINT " +      ";
1280  GOTO 1300
1290  PRINT " -      ";
1300  NEXT C
1310  PRINT 
1320  GOSUB 1660
1330  GOTO 820
1340  REM  ****  WEAPON CONTROL SUBROUTINE  ****
1350  FOR C=1 TO C2
1360  IF A1=20 OR A1=22 THEN 1390
1370  PRINT TAB(12+C*8);
1380  GOTO 1400
1390  PRINT TAB(2+C*8);
1400  IF C2=6 THEN 1440
1410  H[C]=P[S,C*4]-(P[S,C*4]>4)*4
1420  IF P[S,C*4-2]#-1 THEN 1480
1430  GOTO 1460
1440  H[C]=T[S,C*5]-(T[S,C*5]>4)*4
1450  IF T[S,C*5-1]>0 THEN 1480
1460  PRINT " DAMAGED";
1470  GOTO 1520
1480  IF H[C]>0 THEN 1510
1490  PRINT ABS(INT(H[C]+.5));
1500  GOTO 1520
1510  PRINT " ";S$[H[C]*7-6,H[C]*7];
1520  NEXT C
1530  PRINT 
1540  RETURN 
1550  IF S <= 0 THEN 1640
1560  FOR F=1 TO N1+1
1570  IF F=Y THEN 1620
1580  READ #1,F;S2
1590  IF S2=-1 THEN 1620
1600  READ #1;C6,C6,C6,C6,B$
1610  IF B$=S$[S*7-6,S*7] THEN 1650
1620  NEXT F
1630  RETURN 
1640  F=S
1650  RETURN 
1660  REM  ****  FILE UPDATE SUBROUTINE  ****
1670  READ #1,Y;S2,O2,T2,T1,T0
1680  T8=T2*1440+T1*60+T0
1690  T9=TIM(2)*1440+TIM(1)*60+TIM(0)
1700  IF T9-T8 <= 3 THEN 1740
1710  PRINT "**DEFAULT**"
1720  PRINT #1,Y;-2,O2,T2,T1,T0,S$[1,7]
1730  CHAIN "*YTREKM"
1740  PRINT #1,Y;2,O,TIM(2),TIM(1),TIM(0),S$[1,7]
1750  IF  NOT H5 THEN 1780
1760  PRINT #1;0,FNV(FND(V[H5,1]-V9*180))
1770  Y[1,2]=FND(V[H5,1]-V9*180)
1780  IF U[1] THEN 1800
1790  PRINT #1;2
1800  RETURN 
1810  DATA "WARP DRIVE DEAD","PHASERS DAMAGED","TORPEDOES DAMAGED"
1820  DATA "SENSORS SMASHED","COMPUTER DISABLED"
1830  END 
