10 COM Z$[72],G[8,8],C[9,2],K[3,3],N[3],Z[8,8],D[8] 20 COM C$[6],D$[72],E$[24],A$[3],Q$[72],R$[72],S$[48],X$[8] 30 COM T,T0,T7,T9,D0,E,E0,P,P0,S,S1,S2,S3,S8,S9,H,H8,Q1,Q2 40 COM Z1,Z2,Z3,R1,R2,C1,C2,W1,X,Y,X1,X2,A,N,B3,B9,K3,K7,K9,O9,O8 50 REM STTR1A 100 GOTO O9 OF 230,1270 110 X$="12345678" 180 PRINT "STAR TREK" 190 PRINT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!)"; 200 INPUT A$ 210 IF A$ <> "YES" THEN 230 220 O9=1 225 CHAIN "STTR1C" 230 REM 240 Z$=" " 250 PRINT 290 T0=T=INT(RND(1)*20+20)*100 300 T9=30 310 D0=0 320 E0=E=3000 330 P0=P=10 340 S9=200 350 S=H8=0 360 DEF FND(D)=SQR((K[I,1]-S1)^2+(K[I,2]-S2)^2) 370 Q1=INT(RND(1)*8+1) 380 Q2=INT(RND(1)*8+1) 390 S1=INT(RND(1)*8+1) 400 S2=INT(RND(1)*8+1) 410 T7=TIM(0)+60*TIM(1) 420 C[2,1]=C[3,1]=C[4,1]=C[4,2]=C[5,2]=C[6,2]=-1 430 C[1,1]=C[3,2]=C[5,1]=C[7,2]=C[9,1]=0 440 C[1,2]=C[2,2]=C[6,1]=C[7,1]=C[8,1]=C[8,2]=C[9,2]=1 450 MAT D=ZER 460 D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL" 470 D$[49]="PHOTON TUBESDAMAGE CNTRL" 480 E$="SHIELD CNTRLCOMPUTER" 490 B9=K9=0 500 FOR I=1 TO 8 510 FOR J=1 TO 8 520 R1=RND(1) 530 IF R1>.98 THEN 580 540 IF R1>.95 THEN 610 550 IF R1>.8 THEN 640 560 K3=0 570 GOTO 660 580 K3=3 590 K9=K9+3 600 GOTO 660 610 K3=2 620 K9=K9+2 630 GOTO 660 640 K3=1 650 K9=K9+1 660 R1=RND(1) 670 IF R1>.96 THEN 700 680 B3=0 690 GOTO 720 700 B3=1 710 B9=B9+1 720 S3=INT(RND(1)*8+1) 730 G[I,J]=K3*100+B3*10+S3 740 Z[I,J]=0 750 NEXT J 760 NEXT I 770 K7=K9 775 IF B9 <= 0 OR K9 <= 0 THEN 490 780 PRINT "YOU MUST DESTROY"K9"KLINGONS IN"T9 782 PRINT "STARDATES WITH"B9"STARBASES" 810 K3=B3=S3=0 820 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 920 830 X=G[Q1,Q2]*.01 840 K3=INT(X) 850 B3=INT((X-K3)*10) 860 S3=G[Q1,Q2]-INT(G[Q1,Q2]*.1)*10 870 IF K3=0 THEN 910 880 IF S>200 THEN 910 890 PRINT "COMBAT AREA CONDITION RED" 900 PRINT " SHIELDS DANGEROUSLY LOW" 910 MAT K=ZER 920 FOR I=1 TO 3 930 K[I,3]=0 940 NEXT I 950 Q$=Z$ 960 R$=Z$ 970 S$=Z$[1,48] 980 A$="<*>" 990 Z1=S1 1000 Z2=S2 1010 GOSUB 5510 1020 FOR I=1 TO K3 1030 GOSUB 5380 1040 A$="+++" 1050 Z1=R1 1060 Z2=R2 1070 GOSUB 5510 1080 K[I,1]=R1 1090 K[I,2]=R2 1100 K[I,3]=S9 1110 NEXT I 1120 FOR I=1 TO B3 1130 GOSUB 5380 1140 A$=">!<" 1150 Z1=R1 1160 Z2=R2 1170 GOSUB 5510 1180 NEXT I 1190 FOR I=1 TO S3 1200 GOSUB 5380 1210 A$=" * " 1220 Z1=R1 1230 Z2=R2 1240 GOSUB 5510 1250 NEXT I 1260 GOSUB 4120 1270 PRINT "COMMAND"; 1280 INPUT A 1290 GOTO A+1 OF 1410,1260,2330,2530,2800,3460,3560,4630 1300 PRINT 1310 PRINT " 0 = SET COURSE" 1320 PRINT " 1 = SHORT RANGE SENSOR SCAN" 1330 PRINT " 2 = LONG RANGE SENSOR SCAN" 1340 PRINT " 3 = FIRE PHASERS" 1350 PRINT " 4 = FIRE PHOTON TORPEDOES" 1360 PRINT " 5 = SHIELD CONTROL" 1370 PRINT " 6 = DAMAGE CONTROL REPORT" 1380 PRINT " 7 = CALL ON LIBRARY COMPUTER" 1390 PRINT 1400 GOTO 1270 1410 PRINT "COURSE (1-9)"; 1420 INPUT C1 1430 IF C1=0 THEN 1270 1440 IF C1<1 OR C1 >= 9 THEN 1410 1450 PRINT "WARP FACTOR (0-8)"; 1460 INPUT W1 1470 IF W1<0 OR W1>8 THEN 1410 1480 IF D[1] >= 0 OR W1 <= .2 THEN 1510 1490 PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2" 1500 GOTO 1410 1510 IF K3 <= 0 THEN 1560 1520 GOSUB 3790 1530 IF K3 <= 0 THEN 1560 1540 IF S<0 THEN 4000 1550 GOTO 1610 1560 IF E>0 THEN 1610 1570 IF S<1 THEN 3920 1580 PRINT "YOU HAVE"INT(E)"UNITS OF ENERGY" 1590 PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS" 1592 PRINT "WHICH HAVE"INT(S)"UNITS LEFT" 1600 GOTO 1270 1610 FOR I=1 TO 8 1620 IF D[I] >= 0 THEN 1640 1630 D[I]=D[I]+1 1640 NEXT I 1650 IF RND(1)>.2 THEN 1810 1660 R1=INT(RND(1)*8+1) 1670 IF RND(1) >= .5 THEN 1750 1680 D[R1]=D[R1]-(RND(1)*5+1) 1690 PRINT 1700 PRINT "DAMAGE CONTROL REPORT: "; 1710 GOSUB 5610 1720 PRINT " DAMAGED" 1730 PRINT 1740 GOTO 1810 1750 D[R1]=D[R1]+(RND(1)*5+1) 1760 PRINT 1770 PRINT "DAMAGE CONTROL REPORT: "; 1780 GOSUB 5610 1790 PRINT " STATE OF REPAIR IMPROVED" 1800 PRINT 1810 N=INT(W1*8) 1820 A$=" " 1830 Z1=S1 1840 Z2=S2 1850 GOSUB 5510 1870 X=S1 1880 Y=S2 1885 C2=INT(C1) 1890 X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2) 1900 X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2) 1910 FOR I=1 TO N 1920 S1=S1+X1 1930 S2=S2+X2 1940 IF S1<.5 OR S1 >= 8.5 OR S2<.5 OR S2 >= 8.5 THEN 2170 1950 A$=" " 1960 Z1=S1 1970 Z2=S2 1980 GOSUB 5680 1990 IF Z3 <> 0 THEN 2070 2030 PRINT "WARP ENGINES SHUTDOWN AT SECTOR"; 2031 Z8=S1 2032 Z9=S2 2033 GOSUB 9000 2034 PRINT "DUE TO BAD NAVIGATION" 2040 S1=S1-X1 2050 S2=S2-X2 2060 GOTO 2080 2070 NEXT I 2080 A$="<*>" 2083 S1=INT(S1+.5) 2086 S2=INT(S2+.5) 2090 Z1=S1 2100 Z2=S2 2110 GOSUB 5510 2120 E=E-N+5 2130 IF W1<1 THEN 2150 2140 T=T+1 2150 IF T>T0+T9 THEN 3970 2160 GOTO 1260 2170 X=Q1*8+X+X1*N 2180 Y=Q2*8+Y+X2*N 2190 Q1=INT(X/8) 2200 Q2=INT(Y/8) 2210 S1=INT(X-Q1*8+.5) 2220 S2=INT(Y-Q2*8+.5) 2230 IF S1 <> 0 THEN 2260 2240 Q1=Q1-1 2250 S1=8 2260 IF S2 <> 0 THEN 2290 2270 Q2=Q2-1 2280 S2=8 2290 T=T+1 2300 E=E-N+5 2310 IF T>T0+T9 THEN 3970 2320 GOTO 810 2330 O8=3 2340 GOTO 4010 2530 O8=4 2540 GOTO 4010 2800 O8=5 2810 GOTO 4010 3460 O8=6 3470 GOTO 4010 3560 O8=7 3570 GOTO 4010 3790 IF C$ <> "DOCKED" THEN 3820 3800 PRINT "STAR BASE SHIELDS PROTECT THE ENTERPRISE" 3810 RETURN 3820 IF K3 <= 0 THEN 3910 3830 FOR I=1 TO 3 3840 IF K[I,3] <= 0 THEN 3900 3850 H=(K[I,3]/FND(0))*(2*RND(1)) 3860 S=S-H 3870 PRINT INT(H)"UNIT HIT ON ENTERPRISE AT SECTOR"; 3871 Z8=K[I,1] 3872 Z9=K[I,2] 3873 GOSUB 9000 3874 PRINT "("INT(S)"LEFT )" 3890 IF S<0 THEN 4000 3900 NEXT I 3910 RETURN 3920 O8=9 3930 GOTO 4010 3970 O8=1 3980 GOTO 4010 4000 O8=2 4010 CHAIN "STTR1B" 4120 FOR I=S1-1 TO S1+1 4130 FOR J=S2-1 TO S2+1 4140 IF I<1 OR I>8 OR J<1 OR J>8 THEN 4200 4150 A$=">!<" 4160 Z1=I 4170 Z2=J 4180 GOSUB 5680 4190 IF Z3=1 THEN 4240 4200 NEXT J 4210 NEXT I 4220 D0=0 4230 GOTO 4310 4240 D0=1 4250 C$="DOCKED" 4260 E=3000 4270 P=10 4280 PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES" 4290 S=0 4300 GOTO 4380 4310 IF K3>0 THEN 4350 4320 IF E= 0 THEN 4430 4390 PRINT 4400 PRINT "*** SHORT RANGE SENSORS ARE OUT ***" 4410 PRINT 4420 GOTO 4530 4430 PRINT "-=--=--=--=--=--=--=--=-" 4440 PRINT Q$[1,24] 4450 PRINT Q$[25,48]" STARDATE"T 4460 PRINT Q$[49,72]" CONDITION ";C$ 4470 PRINT R$[1,24]" QUADRANT"; 4471 Z8=Q1 4472 Z9=Q2 4473 GOSUB 9000 4474 PRINT 4480 PRINT R$[25,48]" SECTOR "; 4481 Z8=S1 4482 Z9=S2 4483 GOSUB 9000 4484 PRINT 4490 PRINT R$[49,72]" ENERGY "INT(E) 4500 PRINT S$[1,24]" PHOTON TORPEDOES"P 4510 PRINT S$[25,48]" SHIELDS "INT(S) 4520 PRINT "-=--=--=--=--=--=--=--=-" 4530 RETURN 4630 O8=8 4640 GOTO 4010 5380 R1=INT(RND(1)*8+1) 5390 R2=INT(RND(1)*8+1) 5400 A$=" " 5410 Z1=R1 5420 Z2=R2 5430 GOSUB 5680 5440 IF Z3=0 THEN 5380 5450 RETURN 5460 FOR I=1 TO 11 5470 PRINT 5480 NEXT I 5490 PRINT 5500 RETURN 5510 REM 5520 S8=Z1*24+Z2*3-26 5530 IF S8>72 THEN 5560 5540 Q$[S8,S8+2]=A$ 5550 GOTO 5600 5560 IF S8>144 THEN 5590 5570 R$[S8-72,S8-70]=A$ 5580 GOTO 5600 5590 S$[S8-144,S8-142]=A$ 5600 RETURN 5610 REM 5620 S8=R1*12-11 5630 IF S8>72 THEN 5660 5640 PRINT D$[S8,S8+11]; 5650 GOTO 5670 5660 PRINT E$[S8-72,S8-61]; 5670 RETURN 5680 REM 5683 Z1=INT(Z1+.5) 5686 Z2=INT(Z2+.5) 5690 S8=Z1*24+Z2*3-26 5700 Z3=0 5710 IF S8>72 THEN 5750 5720 IF Q$[S8,S8+2] <> A$ THEN 5810 5730 Z3=1 5740 GOTO 5810 5750 IF S8>144 THEN 5790 5760 IF R$[S8-72,S8-70] <> A$ THEN 5810 5770 Z3=1 5780 GOTO 5810 5790 IF S$[S8-144,S8-142] <> A$ THEN 5810 5800 Z3=1 5810 RETURN 9000 REM 9010 IF Z8<1 OR Z8>8 THEN 9040 9020 PRINT " "X$[Z8,Z8]","; 9030 GOTO 9050 9040 PRINT " *,"; 9050 IF Z9<1 OR Z9>8 THEN 9080 9060 PRINT X$[Z9,Z9]" "; 9070 GOTO 9090 9080 PRINT "* "; 9090 RETURN 9999 END