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  --  COMMAND PICK-UP AND RECOGNITION
110  REM
120  FILES *YTREKL
130  DEF FNT()=(3.14159*)/180
140  DEF FNN()=FND((ATN()*180)/3.14159)
150  DEF FNR()=(( >= 315)+( <= 45))+(( >= 45)*( <= 135)*2)
160  DEF FNS()=FNR()+(( >= 135)*( <= 225)*3)+(( >= 225)*(<315)*4)
170  DEF FNF()=ABS(SIN(FNT(ABS()))*D)+(D/100000.)^2
180  DEF FNE()=-((>360)*360)
190  DEF FND()=+((<0)*360)
200  DEF FNV()=FND(ABS(-((>315)*360)-315)-45)
210  DEF FNU()=5*(9-ABS())
220  DIM B$[72],C$[72]
230  REM  ****  ALL SHIPS UPDATED?  ****
240  FOR F=1 TO N1+1
250  IF F=Y THEN 350
260  READ #1,F;S
270  IF S<0 THEN 350
280  READ #1;O2,T2,T1,T0,B$
290  IF O2=O AND S=2 THEN 350
300  T8=T2*1440+T1*60+T0
310  T9=TIM(2)*1440+TIM(1)*60+TIM(0)
320  IF T9-T8>3 THEN 340
330  CHAIN "*YTREKF"
340  PRINT #1,F;-2,O2,T2,T1,T0,B$
350  NEXT F
360  REM  ****  COMMAND RECOGNITION  ****
370  S=1
380  FOR F=1 TO N1+1
390  IF F=Y THEN 1340
400  READ #1,F;S1
410  IF S1#-2 THEN 440
420  S=S+1
430  PRINT "GREAT BIRD OF THE GALAXY:  "S$[S*7-6,S*7]" HAS DEFAULTED"
440  IF S1<0 THEN 1340
450  S=S+1
460  READ #1;O2,T2,T1,T0,B$
470  IF TYP(-1)=4 THEN 1340
480  READ #1;A2
490  GOTO A2 OF 570,610,1340,640,640,740,780,860,910,1010,910
500  GOTO A2-11 OF 1010,1110,1340,1340,1170
510  IF A2=21 THEN 1220
520  IF A2=23 THEN 1300
530  REM  ****  HELM LOCK UPDATE  ****
540  READ #1;Y[S,2]
550  GOTO 470
560  REM  ****  CHANGE COURSE AND SPEED  ****
570  READ #1;Y[S,2],S[S,2]
580  PRINT "HELM:  "S$[S*7-6,S*7]" CHANGING COURSE"
590  GOTO 1340
600  REM  ****  DESTRUCT  ****
610  U[S]=0
620  GOTO 470
630  REM  ****  PURSUE/RUN FROM AN ENEMY VESSEL  ****
640  READ #1;Y[S,2],S[S,2],C5
650  GOSUB 1390
660  PRINT "HELM:  "S$[S*7-6,S*7];
670  IF A2=5 THEN 700
680  PRINT " ATTACKING THE ";
690  GOTO 710
700  PRINT " RETREATING FROM ";
710  PRINT S$[S2*7-6,S2*7]
720  GOTO 1340
730  REM  ****  SURRENDER  ****
740  PRINT "COMMUNICATIONS:  "S$[S*7-6,S*7]" SURRENDERS"
750  PRINT #1,F;-4,O2,T2,T1,T0,S$[S*7-6,S*7]
760  GOTO 1340
770  REM  ****  FIRE PHASERS  ****
780  FOR C=1 TO 9 STEP 4
790  READ #1;P[S,C]
800  NEXT C
810  FOR C=1 TO 9
820  READ #1;F[S,C]
830  NEXT C
840  GOTO 1340
850  REM  ****  FIRE PHOTON TORPEDOES  ****
860  FOR C=3 TO 28 STEP 5
870  READ #1;T[S,C-2],T[S,C]
880  NEXT C
890  GOTO 1340
900  REM  ****  LOCK/MANUALLY ROTATE PHASERS  ****
910  FOR C=4 TO 12 STEP 4
920  READ #1;P[S,C]
930  NEXT C
940  FOR C=4 TO 12 STEP 4
950  C5=P[S,C]
960  GOSUB 1390
970  P[S,C]=S2
980  NEXT C
990  GOTO 1340
1000  REM  ****  LOCK/MANUALLY TARGET TORPEDOES  ****
1010  FOR C=5 TO 30 STEP 5
1020  READ #1;T[S,C]
1030  NEXT C
1040  FOR C=5 TO 30 STEP 5
1050  C5=T[S,C]
1060  GOSUB 1390
1070  T[S,C]=S2
1080  NEXT C
1090  GOTO 1340
1100  REM  ****  CHANGE DEFLECTORS  ****
1110  FOR C=1 TO 7 STEP 2
1120  READ #1;Q[S,C]
1130  NEXT C
1140  PRINT "SCIENCE:  "S$[S*7-6,S*7]" ADJUSTING SHIELDS"
1150  GOTO 1340
1160  REM  ****  SCAN ENEMY  ****
1170  READ #1;C5
1180  GOSUB 1390
1190  PRINT "SCIENCE:  "S$[S*7-6,S*7]" SCANNING "S$[S2*7-6,S2*7]
1200  GOTO 1340
1210  REM  ****  TRANSMIT MESSAGE  ****
1220  READ #1;C5,C$
1230  GOSUB 1390
1240  PRINT "COMMUNICATIONS:  "S$[S*7-6,S*7]" TRANSIMITING TO "S$[S2*7-6,S2*7]
1250  IF Y#C5 THEN 1340
1260  PRINT "RECEIVED:"
1270  PRINT C$
1280  GOTO 1350
1290  REM  ****  LOAD/UNLOAD TORPEDOES  ****
1300  READ #1;W[S]
1310  FOR C=2 TO 27 STEP 5
1320  READ #1;T[S,C]
1330  NEXT C
1340  NEXT F
1350  FOR C=1 TO 10000
1360  NEXT C
1370  CHAIN "*YTREKD"
1380  REM  ****  FILE TO ARRAY SHIP ADRESS SUBROUTINE  ****
1390  IF C5 <= 0 THEN 1450
1400  READ #1,C5;C6,C6,C6,C6,C6,B$
1410  FOR S2=1 TO N
1420  IF S$[S2*7-6,S2*7]=B$ THEN 1440
1430  NEXT S2
1440  RETURN 
1450  S2=-FNV(-C5)
1460  RETURN 
1470  END 
