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 INPUT & VARIOUS OTHER COMMANDS
110  REM
120  FILES *YTREKL
130  DEF FNT()=(3.14159*)/180
140  DEF FND()=+((<0)*360)
150  DEF FNV()=FND(ABS(-((>315)*360)-315)-45)
160  DIM D$[10],B$[72]
170  IF A1 THEN 330
180  GOTO 210
190  A1=C
200  CHAIN "*YTREKG"
210  MAT F=ZER
220  IF U[1]<0 THEN 250
230  PRINT U[1]"SECONDS TO SELF DESTRUCT"
240  U[1]=U[1]-1
250  O=O+1
260  REM  ****  HOW LONG HAVE YOU BEEN AT W/F 8?  ****
270  IF ABS(S[1,1])#8 THEN 330
280  IF ABS(S[1,1])#8 OR G<4 THEN 310
290  C=1
300  GOTO 980
310  G=G+1
320  REM  ****  COMMAND INPUT  ****
330  PRINT '14"COMMAND [1-25]";
340  A1=0
350  INPUT C
360  GOTO C OF 750,1350,1560,810,810,630,1580,1580,720,720,720
370  GOTO C-11 OF 720,720,720,190,190,1600,1600,1600,190,1200,190,720
380  IF C=24 THEN 1580
390  IF C#25 THEN 1560
400  PRINT '14"LEGAL COMMANDS ARE:"
405  RESTORE 520
410  PRINT 
420  FOR C=1 TO 25
430  READ B$
440  PRINT C;B$
450  IF C-INT(C/10)*10 THEN 470
460  PRINT 
470  NEXT C
480  PRINT 
490  PRINT "* DOES NOT USE A TURN"
500  PRINT 
510  GOTO 330
520  DATA "CHANGE COURSE AND SPEED","INITIALIZE/ABORT SEFL DESTRUCT"
530  DATA "PROCEED","PURSUE AN ENEMY VESSEL","RUN FROM AN ENEMY VESSEL"
540  DATA "SURRENDER","FIRE PHASERS","FIRE PHOTON TORPEDOES"
550  DATA "LOCK PHASERS ONTO TARGET","LOCK TORPEDOES ONTO TARGET"
560  DATA "MANUALLY ROTATE PHASERS","MANUALLY TARGET TORPEDOES"
570  DATA "CHANGE DEFLECTORS","MODIFY ENERGY FLOW","STATUS REPORT"
580  DATA "SCAN ENEMY","* SURVIVORS REPORT","* POSITION REPORT"
590  DATA "* POSITION DISPLAY","PHASER STATUS","TRANSMIT MESSAGE"
600  DATA "TORPEDOE STATUS","LOAD/UNLOAD TORPEDOES"
610  DATA "* REQUEST COMPUTER ASSISTED TARGETING","* REPRINTS ABOVE LIST"
620  REM  ****  COMMAND:  SURRENDER  ****
630  IF RND(0)<.75 THEN 670
640  PRINT "COMMUNICATIONS:  THE ENEMY ACCEPTS OUR UNCONDITIONAL SURRENDER"
650  PRINT "AND COMMENDS US ON OUR WISE DECISION."
660  GOTO 690
670  PRINT "THE ENEMY HAS DECIDED TO TAKE NO PRISONERS -- THE "S$[1,7]" IS NOW"
680  PRINT "A PILE OF RADIOACTIVE DEBRIS."
690  GOSUB 1750
700  PRINT #1;6
710  CHAIN "*YTREKM"
720  A1=C
730  CHAIN "*YTREKI"
740  REM  ****  COMMAND:  CHANGE COURSE AND SPEED  ****
750  H5=0
760  PRINT "HELM:  CHANGE COURSE TO [0-360]";
770  INPUT D
780  IF D>360 OR D<0 THEN 1530
790  GOTO 990
800  REM  ****  COMMAND:  PURSUE/RUN FROM AN ENEMY VESSEL  ****
810  IF A[1,5] THEN 1550
820  IF C=5 THEN 850
830  B$="PURSUE"
840  GOTO 860
850  B$="RUN FROM"
860  PRINT "HELM:  "B$" [WHOM]";
870  INPUT B$
880  IF LEN(B$)>7 THEN 920
890  FOR C5=2 TO N
900  IF B$=S$[C5*7-6,C5*7-7+LEN(B$)] THEN 940
910  NEXT C5
920  PRINT "SHIP NOT FOUND"
930  GOTO 1560
940  H5=C5-1
950  S=C5
960  V9=(C=5)
970  GOTO 990
980  PRINT "ENGINEERING:  I'M SORRY CAPTAIN, WE CAN'T MAINTAIN THIS SPEED."
990  PRINT "WARP FACTOR [-8 TO 8]";
1000  INPUT D1
1010  IF ABS(D1)>8 THEN 1530
1020  IF  NOT A[1,1] OR ABS(D1)<1 THEN 1050
1030  PRINT "MAX WARP IS .99"
1040  GOTO 990
1050  IF G >= 4 AND ABS(D1)=8 THEN 980
1060  IF C#1 THEN 1080
1070  Y[1,2]=D
1080  S[1,2]=D1
1090  IF C=1 THEN 1160
1100  Y[1,2]=FND(V[H5,1]-V9*180)
1110  PRINT "HELM:  AYE, SIR, COMING TO COURSE"INT(Y[1,2])
1120  GOSUB 1630
1130  GOSUB 1750
1140  PRINT #1;C,FNV(Y[1,2]),S[1,2],F
1150  GOTO 1570
1160  GOSUB 1750
1170  PRINT #1;1,FNV(Y[1,2]),S[1,2]
1180  GOTO 1570
1190  REM  ****  COMMAND:  TRANSMIT MESSAGE  ****
1200  PRINT "COMMUNICATIONS:  TRANSMIT TO [WHOM]";
1210  INPUT B$
1220  IF LEN(B$)>7 THEN 1260
1230  FOR S=2 TO N
1240  IF B$=S$[S*7-6,S*7-7+LEN(B$)] THEN 1280
1250  NEXT S
1260  PRINT "SHIP NOT FOUND"
1270  GOTO 1560
1280  GOSUB 1630
1290  PRINT "MESSAGE:"
1300  INPUT B$
1310  GOSUB 1750
1320  PRINT #1;21,F,B$
1330  GOTO 1570
1340  REM  ****  COMMAND:  DESTRUCT  ****
1350  IF A[1,5] THEN 1550
1360  IF U[1]>0 THEN 1440
1370  PRINT "WORKING.  INITIALIZE DESTRUCT SEQUENCE";
1380  INPUT B$
1390  IF B$[1,1]#"Y" THEN 1560
1400  PRINT "DESTRUCT SEQUENCE COMPLETED AND ENGAGED.  PROCEEDING WITH 20"
1410  PRINT "SECOND COUNTDOWN."
1420  U[1]=20
1430  GOTO 1560
1440  IF U[1]>5 THEN 1470
1450  PRINT "UNABLE TO ABORT SELF-DESTRUCT"
1460  GOTO 1560
1470  PRINT "WORKING.  ABORT DESTRUCT ORDER";
1480  INPUT B$
1490  IF B$[1,1]#"Y" THEN 1560
1500  PRINT "DESTRUCT ORDER ABORTED"
1510  U[1]=-10
1520  GOTO 1560
1530  PRINT "BAD PARAMETERS"
1540  GOTO 1560
1550  PRINT "COMPUTER BANKS PIERCED"
1560  GOSUB 1750
1570  CHAIN "*YTREKF"
1580  A1=C
1590  CHAIN "*YTREKC"
1600  A1=C
1610  CHAIN "*YTREKK"
1620  REM  ****  FILE ADRESS SUBROUTINE  ****
1630  IF S <= 0 THEN 1720
1640  FOR F=1 TO N1+1
1650  IF F=Y THEN 1700
1660  READ #1,F;S2
1670  IF S2=-1 THEN 1700
1680  READ #1;C6,C6,C6,C6,B$
1690  IF B$=S$[S*7-6,S*7] THEN 1730
1700  NEXT F
1710  RETURN 
1720  F=S
1730  RETURN 
1740  REM  ****  FILE UPDATE SUBROUTINE  ****
1750  READ #1,Y;S,O2,T2,T1,T0
1760  T8=T2*1440+T1*60+T0
1770  T9=TIM(2)*1440+TIM(1)*60+TIM(0)
1780  IF T9-T8 <= 3 THEN 1820
1790  PRINT "**DEFAULT**"
1800  PRINT #1,Y;-2,O2,T2,T1,T0,S$[1,7]
1810  CHAIN "*YTREKM"
1820  PRINT #1,Y;2,O,TIM(2),TIM(1),TIM(0),S$[1,7]
1830  IF  NOT H5 THEN 1860
1840  PRINT #1;0,FNV(FND(V[H5,1]-V9*180))
1850  Y[1,2]=FND(V[H5,1]-V9*180)
1860  IF U[1] THEN 1880
1870  PRINT #1;2
1880  RETURN 
1890  END 
