10  COM D$[11]
20  COM A$[20],B$[20],C$[20],M$[20],N$[20],O$[20],P$[20]
30  COM Q$[20],R$[20],S$[20],V$[20],X$[72],Y$[72],Z$[72]
40  COM A[50],B[50],C[50],D[50],E[50],F[50],G[10],H[10],I[50],J[50]
50  COM K[50],L[50],M[10,6],N[10,4],O[10],P[10,4],Q[10,4],R[10,4]
60  COM S[10,8],T[10,9],U[10,6],V[10,6],W[10],X[50],Y[50],Z[10,10]
70  COM A,D1,D2,I,I1,I2,K1,K2,K3,K4,N,N1,N2,O,O1,O2,P1,P2,P3,P4
80  COM T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,Z9
90  REM
100  REM    TREK73:  AN ADVANCED STAR TREK BATTLE SIMULATION
110  REM  PROGRAMED BY WILLIAM K. CHAR AND ASSOCIATES, WILSON
120  REM  EDP, 400 MANSELL, SAN FRAN, CA 94134, (415) 239-6460
130  REM  26 NOVEMBER 1973 ***FOR AUTHORIZED PERSONNEL ONLY***
140  REM
150  REM        MODIFIED BY DAVID SHAYER - SMHS - 6/04/80
160  REM
170  DEF FNA()=*.0174533
180  DEF FNB()=*57.2958
190  DEF FNC()=-INT(*.00277778)*360
200  DEF FNR()=INT(*RND(1))+1
210  REM
220  GOTO O-30 OF 230,480,610,870,930,1020,1110,1160,1360,1360
230  REM -----(31) LEAD -----
240  IF Z[I,1] THEN 1280
250  PRINT "   LEAD TUBES [1-6] ";
260  GOSUB 1730
270  IF W=0 THEN 1220
280  IF W>10 THEN 1240
290  PRINT "   ON [WHOM] ";
300  GOSUB 1380
310  IF V1>10 THEN 1260
320  L1=0
330  FOR L=1 TO W
340  K=W[L]
350  IF K<1 OR K>K2 THEN 400
360  IF T[I,K]<0 THEN 400
370  T[I,K]=0
380  U[I,K]=-V1
390  GOTO 440
400  IF L1 THEN 420
410  PRINT "COMPUTER:  TUBE(S)  ";
420  L1=1
430  PRINT K;
440  NEXT L
450  IF  NOT L1 THEN 1360
460  PRINT "UNABLE TO LEAD."
470  GOTO 1360
480  REM ----- (32) PHASER HIT FACTOR -----
490  IF Z[I,1] THEN 1280
500  PRINT "   COMPUTE FACTOR ON [WHOM] ";
510  GOSUB 1380
520  IF V1>10 THEN 1260
530  PRINT LIN(1)"PHASER HIT FACTOR FOR: "V$
540  J=V1
550  FOR K=1 TO K1
560  GOSUB 2030
570  PRINT  USING 580;K,F
580  IMAGE "COMPUTER:  PHASER #",D," -- ",3D
590  NEXT K
600  GOTO 1360
610  REM ----- (33) PROBE DETONATION HIT FACTOR -----
620  IF Z[I,1] THEN 1280
630  L1=0
640  FOR J=1 TO I2
650  IF I[J]#I[I]+20 THEN 700
660  IF L1 THEN 680
670  PRINT "COMPUTER:  PROBE(S) ARE ";
680  L1=1
690  PRINT J;
700  NEXT J
710  IF  NOT L1 THEN 1300
720  PRINT "   ANTI-MATTER HIT FACTOR ON PROBE [#] ";
730  ENTER T3,X,K
740  PRINT 
750  IF X<1 THEN 1220
760  IF K<1 OR K>I2 THEN 1260
770  IF I[K]#I[I]+20 THEN 1240
780  FOR J=1 TO I1
790  IF I[J]<1 OR I[J]>10 THEN 850
800  GOSUB 2160
810  IF F=0 THEN 850
820  V=I[J]
830  GOSUB 1510
840  PRINT "COMPUTER:  "V$" -- "F
850  NEXT J
860  GOTO 1360
870  REM ----- (34) ANNIHLATION -----
880  FOR L=2 TO I1
890  K[L]=10000-5*2
900  NEXT L
910  PRINT "COMPUTER:  5 SECONDS TO DESTRUCT."
920  GOTO 1360
930  REM ----- (35) NORMAL SHIELDS AT FULL POWER -----
940  PRINT LIN(1);"SHIELDS NOW ";
950  FOR K=1 TO 4
960  S[1,K]=1
970  S[1,K+4]=100
980  PRINT INT(S[1,K]*S[1,K+4]);
990  NEXT K
1000  PRINT 
1010  GOTO 1360
1020  REM ----- (36) SUPER POWER SHIELDS -----
1030  PRINT LIN(1);"SHIELDS NOW ";
1040  FOR K=1 TO 4
1050  S[1,K+4]=1.E+18
1060  S[1,K]=100
1070  PRINT INT(S[1,K]*S[1,K+4]);
1080  NEXT K
1090  PRINT 
1100  GOTO 1360
1110  REM ----- (37) EXTRA ENERGY -----
1120  F[1]=1.E+20
1130  H[1]=1.E+20
1140  PRINT LIN(1);"EXTRA ENERGY"
1150  GOTO 1360
1160  REM ----- (38) NORMAL ENERGY -----
1170  F[1]=150
1180  H[1]=200
1190  PRINT LIN(1);"NORMAL ENERGY"
1200  GOTO 1360
1210  REM     ----- ERROR MESSAGES -----
1220  PRINT "**TIME**"
1230  GOTO 1360
1240  PRINT "CHEKOV:  WHAT?"
1250  GOTO 1360
1260  PRINT "SPOCK:  BAD PARAMETER(S)."
1270  GOTO 1360
1280  PRINT "SPOCK:  QUITE IMPOSSIBLE, "O$", OUR COMPUTER IS DEAD."
1290  GOTO 1360
1300  PRINT "CHEKOV:  WHAT PROBES?"
1310  GOTO 1360
1320  PRINT "SCOTT:  WE'VE NOT ENOUGH POWER."
1330  REM
1340  REM     ----- EXIT -----
1350  REM
1360  I=0
1370  CHAIN "*TREK07"
1380  REM          ----- NAME COMPARISON SUBROUTINE -----
1390  ENTER T3,T,X$
1400  PRINT 
1410  IF LEN(X$)=0 THEN 1480
1420  FOR V1=2 TO 10
1430  V=I[V1]
1440  IF  NOT V OR V>10 THEN 1470
1450  GOSUB 1500
1460  IF X$[1,1]=V$[1,1] THEN 1490
1470  NEXT V1
1480  V1=11
1490  RETURN 
1500  REM          ----- NAME SELECTION SUBROUTINE -----
1510  RESTORE 1520
1520  DATA "BISMARK","CENTAUR","DRADDOCK","FORBIN","KREIGER","SHLURG"
1530  DATA "TRAKKA","VARNOR","WARRIOR"
1540  IF V>1 THEN 1570
1550  V$=P$
1560  RETURN 
1570  FOR V2=2 TO V
1580  READ V$
1590  NEXT V2
1600  RETURN 
1610  REM          ----- BEARING SUBROUTINE -----
1620  X=X[J]-X[I]
1630  Y=Y[J]-Y[I]
1640  IF X=0 THEN 1670
1650  B=ATN(Y/X)*57.2958
1660  GOTO 1680
1670  B=90
1680  IF X >= 0 AND Y >= 0 THEN 1720
1690  B=B+180
1700  IF X<0 THEN 1720
1710  B=B+180
1720  RETURN 
1730  REM          ----- CONVERSION SUBROUTINE -----
1740  ENTER T3,T,X$
1750  PRINT 
1760  IF LEN(X$)=0 THEN 1920
1770  Y$="0123456789"
1780  MAT W=ZER[10]
1790  W=0
1800  FOR V2=1 TO LEN(X$)
1810  IF X$[V2,V2]=" " THEN 1900
1820  IF X$[V2,V2]="," THEN 1900
1830  FOR V3=1 TO 10
1840  IF X$[V2,V2]=Y$[V3,V3] THEN 1870
1850  NEXT V3
1860  GOTO 1900
1870  W=W+1
1880  IF W>10 THEN 1900
1890  W[W]=V3-1
1900  NEXT V2
1910  RETURN 
1920  W=0
1930  RETURN 
1940  REM          ----- TORPEDO TRAJECTORY PLOTTING SUBROUTINE -----
1950  GOSUB 1610
1960  N3=ABS(A[J])/T[I,K2+1]*SIN(FNA(ABS(A[J])-B))
1970  N4=FNB(ATN(N3/SQR(1-N3^2)))
1980  N5=(B+N4+360)/360
1990  N6=(N5-INT(N5))*360
2000  IF N6<135 OR N6>225 OR Z[I,5] THEN 2020
2010  N6=-1
2020  RETURN 
2030  REM          ----- PHASER HIT FACTOR SUBROUTINE -----
2040  F=0
2050  F1=M[I,K1+2]*Q[I,K]*.01
2060  GOSUB 1610
2070  F2=1000
2080  G2=SQR((X[I]-X[J])^2+(Y[I]-Y[J])^2)
2090  IF G2>F2 THEN 2140
2100  F3=M[I,K1+1]
2110  G3=FNC(C[I]+N[I,K]-B)
2120  IF G3>F3 AND 360-G3>F3 THEN 2140
2130  F=INT(F1*SQR(1-G2/F2)*45/F3)
2140  RETURN 
2150  REM          ----- ANTIMATTER HIT FACTOR SUBROUTINE -----
2160  F=0
2170  F1=F[K]*5
2180  G2=SQR((X[K]-X[J])^2+(Y[K]-Y[J])^2)
2190  F2=F1*10
2200  IF G2>F2 THEN 2220
2210  F=INT(F1*SQR(1-G2/F2))
2220  RETURN 
2230  END 
