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  --  ENTRY SUBROUTINE TO PLOT SHIPS
110  REM
120  DEF FNT()=(3.14159*)/180
130  DEF FNN()=FND((ATN()*180)/3.14159)
140  DEF FNR()=(( >= 315)+( <= 45))+(( >= 45)*( <= 135)*2)
150  DEF FNF()=ABS(SIN(FNT(ABS()))*D)+(D/100000.)^2
160  DEF FNA()=(( >= 300)+( <= 60))+(( <= 180)*( >= 60)*2)+(( >= 180)*( <= 300)*3)
170  DEF FNE()=-((>360)*360)
180  DEF FND()=+((<0)*360)
190  DEF FNV()=FND(ABS(-((>315)*360)-315)-45)
200  DEF FNU()=5*(9-ABS())
210  REM  ****  ANY WEAPONS FIRED?  ****
220  C3=0
230  FOR C=1 TO 6
240  FOR S=1 TO N
250  IF C>3 THEN 280
260  IF F[S,C*3-2]=0 THEN 280
270  PRINT S$[S*7-6,S*7]" FIRING PHASERS"
280  IF T[S,C*5-4]<0 THEN 320
290  C3=C3+1
300  T[S,C*5-4]=C3
310  PRINT S$[S*7-6,S*7]" FIRING TORPEDOE"C3
320  NEXT S
330  NEXT C
340  REM  ****  ENTER SUBROUTINE TO PLOT SHIPS  ****
350  FOR S=1 TO N
360  S1=S[S,1]^3
370  S2=S[S,2]^3
380  S3=S1+((ABS(S2-S1) MIN 64)*SGN(S2-S1))
390  S[S,1]=SGN(S3)*ABS(S3)^(1/3)
400  IF S=1 THEN 460
410  IF FND(FNV(Y[S,2])-FNV(Y[S,1]))<180 THEN 440
420  Y[S,1]=FNV(FND(FNV(Y[S,1])-(FNU(S[S,1]) MIN (360-FND(FNV(Y[S,2])-FNV(Y[S,1]))))))
430  GOTO 500
440  Y[S,1]=FNV(FNE(FNV(Y[S,1])+(FNU(S[S,1]) MIN FND(FNV(Y[S,2])-FNV(Y[S,1])))))
450  GOTO 500
460  IF FND(Y[S,2]-Y[S,1])<180 THEN 490
470  Y[S,1]=FND(Y[S,1]-(FNU(S[S,1]) MIN (360-FND(Y[S,2]-Y[S,1]))))
480  GOTO 500
490  Y[S,1]=FNE(Y[S,1]+(FNU(S[S,1]) MIN FND(Y[S,2]-Y[S,1])))
500  S=S-1
510  IF  NOT S THEN 530
520  GOSUB 570
530  S=S+1
540  NEXT S
550  CHAIN "*YTREKH"
560  REM  ****  SUBROUTINE PLOTTING SHIP'S MOVEMENT  ****
570  L[S]=L[S]-((ABS(S[S+1,1]^3)*100)*COS(FNT(FND(Y[S+1,1]-((S[S+1,1]<0)*180)))))
580  L[S]=L[S]-((ABS(S[1,1]^3)*100)*SIN(FNT(FND(Y[1,1]-((S[1,1]<0)*180)))))
590  I[S]=I[S]-((ABS(S[S+1,1]^3)*100)*SIN(FNT(FND(Y[S+1,1]-((S[S+1,1]<0)*180)))))
600  I[S]=I[S]-((ABS(S[1,1]^3)*100)*COS(FNT(FND(Y[1,1]-((S[1,1]<0)*180)))))
610  V[S,1]=FNE(FNN(L[S]/I[S])+((I[S]<0)*180))
620  D[S]=SQR(I[S]^2+L[S]^2)
630  L[S]=D[S]*SIN(FNT(V[S,1]))
640  I[S]=D[S]*COS(FNT(V[S,1]))
650  V[S,2]=FNE(FNN(I[S]/L[S])+((L[S]<0)*180))
660  RETURN 
670  END 
