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(X)=X*1.74533E-02 180 DEF FNB(X)=X*57.2958 190 DEF FNC(X)=X-INT(X*2.77778E-03)*360 200 DEF FNR(X)=INT(X*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