10 'BASED ON BIGTREK GAME / SHORTENED BY EDISON DOGGE. 20 WIDTH90:LQ=1000'REM NO SCORE - NO VISUALS 30 INPUT"CLEARANCE NUMBER (1 TO 25000)...";I 40 IFI<1ORI>25000ORI<>INT(I)THEN30 50 I1=IMOD97:IFI1=0THENI=I+199:GOTO50 60 I=RND(-I1):FORI1=1TOI:X=RND(1):NEXT 70 DIM G1$(16),V$(5,5),C$(20),G(8,8),D$(12),Q$(10,10),D4(12),D9(106) 80 DIM S2(8,8):Q$="?" 90 DATA S.R. SENSORS,L.R. SENSORS,PHASERS,PHOTON TUBES,LIFE SUPPORT 100 DATA WARP ENGINES,IMPULSE ENGINES,SHIELDS,SUBSPACE RADIO 110 DATA SHUTTLE CRAFT,COMPUTER,TRANSFER PANEL,ABANDON,CHART,COMPUTER 120 DATA DAMAGES,DESTRUCT,DOCK,IDLE,IMPULSE,LRSCAN,NAVIGATE,PHASERS,QUIT 130 DATA SHIELDS,SOS,SRSCAN,STATUS,TORPEDO,TRANSFER,VISUAL,WARP,SHORT 140 DATA MEDIUM,LONG,BEGINNER,NOVICE,SENIOR,EXPERT,COURSE,WCOST,ICOST 150 DATA PEFFECT,OUT,ANTARES,SIRIUS,RIGEL,MERAK,PROCYON,CAPELLA 160 DATA VEGA,DENEB,CANOPUS,ALDEBARAN,ALTAIR,REGULUS,BELLATRIX,ARCTURUS 170 DATA POLLUX,SPICA,10.5,12,1.5,9,0,3,7.5,6,4.5 180 DEF FNA(X)=INT(8*RND(X))+1:DEF FNB(X)=INT(10*RND(X))+1 190 DEF FND(X)=X/60 200 DEFFNR(X)=INT(X*10+.5)/10:DEFFNS(X)=INT(X*100+.5)/100 210 FORI=1TO12:READD$(I):NEXT:FORI=1TO20:READC$(I):NEXT 220 FORI=1TO3:READT$(I):NEXT:FORI=1TO4:READS$(I):NEXT:FORI=1TO5 230 READC2$(I):NEXT:FORI=1TO16:READG1$(I):NEXT:FORI=1TO9:READC5(I):NEXT 240 GOSUB9760:S7$(1)="":S7$(2)=" ":S7$(3)=" ":S7$(4)="" 250 IFA2<>0THEN760 260 J4=0:T1=0:INPUT"COMMAND";A$:IFLEN(A$)>1THEN280 270 PRINT"2 LETTERS, PLEASE.":GOTO260 280 FORI=1TO20 290 IFA$=LEFT$(C$(I),LEN(A$))THEN350 300 NEXT 310 PRINT"ILLEGAL !! - USE THIS LIST" 320 PRINT:FORI=1TO20STEP4 330 PRINTC$(I);TAB(12);C$(I+1);TAB(22);C$(I+2);TAB(32);C$(I+3) 340 NEXT:PRINT:GOTO250 350 ONIGOTO370,380,390,400,410,420,430,470,490,500 360 ONI-10GOTO530,760,550,580,590,600,610,620,660,670 370 GOSUB 12310:GOTO250 380 GOSUB 2020:GOTO250 390 GOSUB2540:GOTO250 400 GOSUB3540:GOTO250 410 GOSUB12550:GOTO250 420 GOSUB3430:GOTO250 430 GOSUB11700:IFJ3=0THEN250 440 IFA2<>0THEN760 450 IFG(Q1,Q2)=1000THEN720 460 GOSUB790:GOTO250 470 GOSUB5390:IFJ3=0THEN250 480 GOTO680 490 GOSUB5650:GOTO250 500 GOSUB11830 510 IFJ3=0THEN250 520 GOTO680 530 GOSUB8270:IFJ3=0THEN250 540 GOSUB790:GOTO250 550 GOSUB10370:IFJ3=0THEN250 560 IFA2<>0THEN760 570 GOSUB790:S9=0:GOTO250 580 GOSUB4720:GOTO250 590 GOSUB11090:GOSUB5650:GOTO250 600 PRINT:GOSUB12770:GOTO250 610 GOSUB8660:IFJ3=0THEN250ELSE680 620 GOSUB11560:IFJ3=0THEN250 630 IFA2<>0THEN760 640 IFG(Q1,Q2)<>LQTHEN250 650 GOTO720 660 PRINT:PRINT"VISUAL INOPERATIVE !":RETURN 670 GOSUB10210:GOTO250 680 IFA2<>0THEN760 690 IFT1<>0THENGOSUB3640 700 IFA2<>0THEN760 710 IFG(Q1,Q2)0THEN760 730 IFA2<>0THEN760 740 GOTO710 750 GOSUB790:GOTO250 760 PRINT:PRINT:INPUT"ANOTHER GAME ";A$ 770 IFLEFT$(A$,1)="Y"THEN240 780 PRINTCHR$(26):END 790 IF(C3<>0)AND(J4=0)THENGOSUB6620 800 IFK3=0THENRETURN 810 IFA2<>0THENRETURN 820 P2=1/I8 830 J5=0 840 PRINT 850 IFC5$="DOCKED"THEN1530 860 H2=0:H3=0:C6=1 870 IFS9=1THENC6=.5+.5*RND(1) 880 A3=0 890 FORL=1TOK3 900 IFK6(L)<0THEN1320 910 A3=1 920 D6=.8+.05*RND(1) 930 H4=K6(L)*D6^K8(L) 940 IF(S4=0)AND(S9=0)THEN1000 950 P3=.1:IFP2*S3>P3THENP3=P2*S3 960 H5=P3*C6*H4+1 970 IFH5>S3THENH5=S3 980 S3=S3-H5:H4=H4-H5 990 IF(P3>.1)AND(H4<5E-03*E1)THEN1320 1000 J5=1 1010 PRINTFNR(H4);"UNIT HIT ON THE ";S5$;" FROM "; 1020 J6=K4(L):J7=K5(L) 1030 IFQ$(J6,J7)="K"THENPRINT"KLINGON AT"; 1040 IFQ$(J6,J7)="C"THENPRINT"COMMANDER AT"; 1050 PRINTJ6;"-";J7 1060 IFH4>H2THENH2=H4 1070 H3=H3+H4 1080 IFH4<(275-25*S8)*(1+.5*RND(1))THEN1310 1090 N4=1+INT(H4/(500+100*RND(1))) 1100 PRINT"*** CRITICAL HIT--"; 1110 K9=1 1120 FORW4=1TON4 1130 J9=INT(12*RND(1))+1 1140 C5(W4)=J9 1150 E3=(H4*D5)/(N4*(75+25*RND(1))) 1160 IFJ9=6THENE3=E3/3 1170 D4(J9)=D4(J9)+E3 1180 IFW4=1THEN1250 1190 FORV=1TOW4 1200 IFJ9=C5(V-1)THEN1260 1210 NEXTV 1220 K9=K9+1 1230 IFK9=3THENPRINT 1240 PRINT " AND "; 1250 PRINTD$(J9); 1260 NEXTW4 1270 PRINT " DAMAGED." 1280 IFD4(8)=0THEN1310 1290 IFS4<>0THENPRINT"*** SHIELDS KNOCKED DOWN." 1300 S4=0 1310 E1=E1-H4 1320 NEXTL 1330 IFA3=0THENRETURN 1340 IFE1<=0THEN1510 1350 P4=100*P2*S3+.5 1360 IFJ5<>0THEN1390 1370 PRINT"ENEMY ATTACK--SHIELDS REDUCED TO "; 1380 GOTO1430 1390 PRINT"ENERGY LEFT:";FNS(E1);" SHIELDS "; 1400 IFS4<>0THENPRINT"UP,"; 1410 IF(S4=0)AND(D4(8)=0)THENPRINT"DOWN, "; 1420 IFD4(8)>0THENPRINT"DAM˙GED, "; 1430 PRINTINT(P4);"%" 1440 IF(H2<200)AND(H3<500)THEN1540 1450 J8=INT(H3*RND(1)*.015) 1460 IFJ8<2THEN1540 1470 PRINT 1480 PRINT"---> 'SICKBAY TO BRIDGE. WE SUFFERED ";J8;"CASUALTIES IN THAT ATTACK" 1490 C4=C4+J8 1500 GOTO1540 1510 F9=5 1520 GOSUB4710:RETURN 1530 PRINT"*** KLINGONS ATTACK-- STARBASE SHIELDS PROTECT THE ";S5$ 1540 FORW4=1TOK3 1550 K8(W4)=K7(W4) 1560 NEXTW4 1570 GOSUB10980:RETURN 1580 PRINT:IFJ4=0THEN1610 1590 PRINT"*** RED ALERT! RED ALERT!" 1600 PRINT"*** THE ";S5$;" HAS STOPPED IN QUADRANT CONTAINING SUPERNOVA" 1610 PRINT "*** AUTO-OVERRIDE ATTEMPTS TO HURL ";S5$;" TO OTHER QUADRANT" 1620 S2(Q1,Q2)=1 1630 GOSUB7260 1640 IFD4(6)=0THEN1830 1650 PRINT 1660 PRINT"WARP ENGINES DAMAGED." 1670 PRINT:PRINT"TRYING TO ENGAGE IMPULSE ENGINES..." 1680 IFD4(7)=0THEN1730 1690 PRINT"IMPULSE ENGINES DAMAGED." 1700 F9=8 1710 GOSUB4710 1720 RETURN 1730 P2=.75*E1 1740 D6=4E-03*(P2-50) 1750 D7=1.4142+1.2*RND(1) 1760 D1=D6 1770 IFD6>D7THEND1=D7 1780 T1=D1/.4 1790 D2=12*RND(1) 1800 J4=0 1810 GOSUB5590 1820 GOTO1940 1830 W1=6+2*RND(1) 1840 W2=W1*W1 1850 P2=.75*E1 1860 D6=P2/(W1*W1*W1*(S4+1)) 1870 D7=1.4142+2*RND(1) 1880 D1=D6 1890 IFD6>D7THEND1=D7 1900 T1=10*D1/W2 1910 D2=12*RND(1) 1920 J4=0 1930 GOSUB12040 1940 IFJ4<>0THEN1980 1950 F9=8 1960 GOSUB4710 1970 RETURN 1980 IFR1<>0THENRETURN 1990 F9=1 2000 GOSUB4710 2010 RETURN 2020 PRINT:PRINT" 1 2 3 4 5 6 7 8" 2030 PRINT" --- --- --- --- --- --- --- ---" 2040 FORI=1TO8 2050 PRINTI;" "; 2060 FORJ=1TO8 2070 ONSGN(S2(I,J))+2GOTO2080,2100,2120 2080 PRINT" .1."; 2090 GOTO 2170 2100 PRINT" ..."; 2110 GOTO2170 2120 IFS2(I,J)>LQTHEN2160 2130 IFG(I,J)5THENI2=5 2420 R3=I2 2430 I5=7*L2 2440 R5=I5 2450 R7=(S8-2*RND(1)+1)*S8*.1+.1 2460 IFR7<.2THENR7=R7+.1 2470 I1=INT(2*R7*I5) 2480 R1=I1 2490 I4=INT(S8+.0625*I1*RND(1)) 2500 R2=I4 2510 I3=(I1+4*I4)*I5 2520 R4=I3 2530 RETURN 2540 IFD4(11)=0THEN2570 2550 PRINT" COMPUTER DISABLED" 2560 RETURN 2570 PRINT"----COMPUTER ACTIVE----" 2580 INPUT"PROGRAM NAME";B$ 2590 FORI=1TO6 2600 IFB$=LEFT$(C2$(I),LEN(B$))THEN2660 2610 NEXT 2620 PRINT"VALID PROGRAMS ARE:" 2630 PRINT" COURSE WCOST OUT" 2640 PRINT" PEFFECT ICOST" 2650 GOTO2580 2660 ON IGOTO2670,2910,2980,3040,2580,3110 2670 INPUT "ENTER QUADRANT AND SECTOR - ";A3,A4 2680 IF(A3<>INT(A3))OR(A4<>INT(A4))THEN3120 2690 IFA3<0THEN2580 2700 IFA3=0THENA3=10*Q1+Q2 2710 A3=A3+.5 2720 K=INT(A3/10) 2730 IF(K<1)OR(K>8)THEN3120 2740 C6(1)=K:K=INT(A3-C6(1)*10) 2750 IF(K<1)OR(K>8)THEN3120 2760 C6(2)=K:A4=A4+.5 2770 K=INT(A4/100) 2780 IF(K<1)OR(K>10)THEN3120 2790 C6(1)=C6(1)+(K-1)/10:K=INT(A4-K*100) 2800 IF(K<1)OR(K>10)THEN3120 2810 C6(2)=C6(2)+(K-1)/10 2820 X=Q1+((S6-1)/10)-C6(1):Y=Q2+((S7-1)/10)-C6(2) 2830 D1=0:D2=0:IF(X=0)AND(Y=0)THEN2890 2840 D1=SQR(X*X+Y*Y) 2850 IFX<0THENZ7=SGN(Y)*(3.1416-ATN(ABS(Y/X))) 2860 IFX=0THENZ7=SGN(Y)*1.5708 2870 IFX>0THENZ7=ATN(Y/X) 2880 D2=12-Z7*1.9098593#:IFD2>12THEND2=D2-12 2890 PRINT"COURSE IS";FNS(D2);" FOR A DISTANCE OF"; 2900 PRINTFNS(D1);"QUADRANTS.":GOTO2580 2910 INPUT"ENTER DISTANCE AND WARP FACTOR";D1,A4 2920 IF(D1<0)THEN2580 2930 C7=D1*A4*A4*A4 2940 T1=(10*D1)/((A4*A4)+1E-05) 2950 PRINT"IT WOULD TAKE";FNS(T1);"STARDATES AND USE" 2960 PRINTFNR(C7);"UNITS OF ENERGY (";FNR(C7+C7);"IF SHIELDS ARE UP)" 2970 GOTO2580 2980 INPUT"ENTER DISTANCE...";D1 2990 IFD1<0THEN2580 3000 C7=250*D1+50:T1=D1/.4 3010 PRINT"IT WOULD TAKE";FNR(T1);"STARDATES AND USE" 3020 PRINTC7;"UNITS OF ENERGY" 3030 GOTO2580 3040 INPUT"ENTER PHASER RANGE IN QUADRANTS";A3 3050 IFA3<0THEN2580 3060 A3=A3*10:C7=(.9^A3)*100 3070 PRINT"PHASERS ARE ";LEFT$(STR$(C7),5);"% EFFECTIVE AT THAT RANGE" 3080 GOTO2580 3090 GOSUB9750 3100 GOTO2580 3110 RETURN 3120 PRINT"FORMAT IS MN,XXYY...WHERE MN IS THE QUADRANT" 3130 PRINT"AND XXYY IS THE SECTOR...E.G. 64,0307 REFERS" 3140 PRINT"TO QUADRANT 6-4, SECTOR 3-7." 3150 GOTO 2580 3160 IFT2$<>"C"THEN3250 3170 C3=0:PRINT"*** COMMANDER AT"; 3180 FORF=1TOR2:IF(C1(F)=Q1)AND(C2(F)=Q2)THEN3200 3190 NEXTF 3200 C1(F)=C1(R2):C2(F)=C2(R2):C1(R2)=0:C2(R2)=0 3210 R2=R2-1:F1(2)=1E+30 3220 IFR2<>0THENF1(2)=D0-(I4/R2)*LOG(RND(1)) 3230 K2=K2+1 3240 GOTO3270 3250 PRINT"*** KLINGON AT"; 3260 K1=K1+1 3270 PRINTA5;"-";A6;"DESTROYED." 3280 Q$(A5,A6)=".":R1=R1-1 3290 IFR1=0THENRETURN 3300 R5=R4/(R1+4*R2) 3310 G(Q1,Q2)=G(Q1,Q2)-100 3320 FORF=1TOK3 3330 IF(K4(F)=A5)AND(K5(F)=A6)THEN3350 3340 NEXTF 3350 K3=K3-1 3360 IFF>K3THEN3410 3370 FORG=FTOK3 3380 K4(G)=K4(G+1):K5(G)=K5(G+1):K6(G)=K6(G+1) 3390 K7(G)=K7(G+1):K8(G)=K7(G) 3400 NEXTG 3410 K4(K3+1)=0:K5(K3+1)=0:K7(K3+1)=0:K8(K3+1)=0:K6(K3+1)=0 3420 RETURN 3430 IFC5$="DOCKED"THEN3520 3440 IFB6=0THEN3460 3450 IF(ABS(S6-B6)<=1)AND(ABS(S7-B7)<=1)THEN3480 3460 PRINTS5$;" NOT ADJACENT TO A BASE." 3470 RETURN 3480 C5$="DOCKED" 3490 PRINT"---> DOCKING COMPLETED" 3500 E1=I7:S3=I8:T4[9:L1=J1 3510 RETURN 3520 PRINT"CAPTAIN, WE'RE ALREADY DOCKED!" 3530 RETURN 3540 J=0:PRINT:FORI=1TO12 3550 IFD4(I)<=0THEN3600 3560 IFJ<>0THEN3590 3570 PRINT" DEVICE";SPC(12);"-REPAIR TIMES-" 3580 PRINTSPC(21);"IN FLIGHT DOCKED":J=1 3590 PRINT" ";D$(I);TAB(23);FNS(D4(I));TAB(33);FNS(D3*D4(I)) 3600 NEXTI 3610 PRINT"TAB(23);"VISUAL SENSORS PERMANENTLY DAMAGED" 3620 IFJ=0THENPRINT" - ALL DEVICES (EXCEPT VISUAL) FUNCTIONAL -" 3630 RETURN 3640 M=0:D7=D0+T1:FORL=1TO5 3650 IFF1(L)>D7THEN3670 3660 M=L:D7=F1(L) 3670 NEXTL 3680 X6=D7-D0:D0=D7 3690 R4=R4-(R1+4*R2)*X6 3700 R5=R4/(R1+4*R2) 3710 IFR5>0THEN3750 3720 F9=2 3730 GOSUB4710 3740 RETURN 3750 IF(D4(5)=0)OR(C5$="DOCKED")THEN3810 3760 IF(L1>=X6)OR(D4(5)<=L1)THEN3790 3770 F9=3:GOSUB4710 3780 RETURN 3790 L1=L1-X6 3800 IFD4(5)<=X6THENL1=J1 3810 R=X6 3820 IFC5$="DOCKED"THENR=X6/D3 3830 FORL=1TO12 3840 IFD4(L)<=0THEN3890 3850 D4(L)=D4(L)-R 3860 IFD4(L)<0THEND4(L)=0 3870 IFD4(L)<>0THEN3890 3880 PRINT:PRINT"DAMAGE CONTROL- ";D$(L);" NOW OPERATIONAL." 3890 NEXTL 3900 IFM=0THENRETURN 3910 T1=T1-X6 3920 ONMGOTO3930,3970,4190,4280,4450 3930 X2=0:Y2=0:GOSUB10520 3940 F1(1)=D0-.5*I5*LOG(RND(1)) 3950 IFG(Q1,Q2)=LQTHENRETURN 3960 GOTO3640 3970 IFR2=0THEN4180 3980 IFC5$="DOCKED"THEN4160 3990 I=INT(RND(1)*R2)+1 4000 Y6=(C1(I)-Q1)^2+(C2(I)-Q2)^2 4010 IFY6=0THEN4160 4020 Y6=SQR(Y6):T1=.17778*Y6 4030 PRINT:PRINT"*** ";S5$;" CAUGHT IN LONG-RANGE TRACTOR BEAM--" 4040 Q1=C1(I):Q2=C2(I) 4050 S6=FNB(1):S7=FNB(1) 4060 PRINT"PULLED TO QUADRANT";Q1;"-";Q2;", SECTOR";S6;"-";S7 4070 IFR6<>0THENPRINT"(IDLE PERIOD CANCELLED)" 4080 R6=0 4090 IFS4<>0THEN4150 4100 IF(D4(8)=0)AND(S3>0)THEN4130 4110 PRINT"(SHIELDS NOT CURRENTLY USABLE.)" 4120 GOTO4150 4130 GOSUB10390 4140 S9=0 4150 GOSUB7260 4160 F1(2)=D0+T1-1.5*(I5/R2)*LOG(RND(1)) 4170 GOTO3640 4180 F1(2)=1E+30:GOTO3640 4190 D9(1)=D0:D9(2)=R1:D9(3)=R2:D9(4)=R3:D9(5)=R4:D9(6)=R5 4200 D9(7)=S1:D9(8)=B1:D9(9)=K1:D9(10)=K2 4210 FORI=1TO8:FORJ=1TO8:D9(I-1+8*(J-1)+11)=G(I,J):NEXTJ:NEXTI 4220 FORI=75TO84:D9(I)=C1(I-74):NEXT 4230 FORI=85TO94:D9(I)=C2(I-84):NEXT 4240 FORI=95TO99:D9(I)=B2(I-94):NEXT 4250 FORI=100TO104:D9(I)=B3(I-99):NEXT 4260 D9(105)=B4:D9(106)=B5 4270 S0=1:F1(3)=D0-.3*I5*LOG(RND(1)):GOTO3640 4280 IF(R2=0)OR(R3=0)THEN4330 4290 FORI=1TOR3:FORJ=1TOR2:IF(B2(I)=C1(J))AND(B3(I)=C2(J))THEN4340 4300 NEXTJ:NEXTI 4310 F1(4)=D0+.5+3*RND(1) 4320 F1(5)=1E+30:GOTO3640 4330 F1(4)=1E+30:F1(5)=1E+30:GOTO3640 4340 B4=B2(I):B5=B3(I) 4350 IF(B4=Q1)AND(B5=Q2)THEN4310 4360 F1(5)=D0+.5+3*RND(1) 4370 F1(4)=F1(5)-.3*I5*LOG(RND(1)) 4380 IFD4(9)>0THEN3640 4390 PRINT:PRINT" CAPTAIN, THE STARBASE IN";B4;"-";B5;"IS UNDER ATTACK-" 4400 PRINT" AND CAN ONLY RESIST UNTIL STARDATE";FNR(F1(5));"!!!" 4410 IFR6=0THEN3640 4420 INPUT" SHALL WE CANCEL IDLE PERIOD";B$ 4430 IFLEFT$(B$,1)="Y"THENR6=0 4440 GOTO3640 4450 F1(5)=1E+30:IF(R2=0)OR(R3=0)THEN3640 4460 K=INT(G(B4,B5)/100):IFG(B4,B5)-K*100<10THEN3640 4470 FORI=1TOR2:IF(C1(I)=B4)AND(C2(I)=B5)THEN4490 4480 NEXT:GOTO3640 4490 IFS2(B4,B5)=-1THENS2(B4,B5)=0 4500 IFS2(B4,B5)>999THENS2(B4,B5)=S2(B4,B5)-10 4510 IF(B4<>Q1)OR(B5<>Q2)THEN4600 4520 FORI=1TOK3:K=K4(I):L=K5(I) 4530 IFQ$(K,L)="C"THEN4550 4540 NEXT 4550 IFK6(I)<25+50*RND(1)THEN3640 4560 Q$(B6,B7)=".":B6=0:B7=0 4570 GOSUB7230 4580 PRINT:PRINT"CAPTAIN, I BELIEVE THE STARBASE HAS BEEN DESTROYED" 4590 GOTO4640 4600 IF(R3=1)OR(D4(9)>0)THEN4640 4610 PRINT 4620 PRINT"--> STARFLEET COMMAND REPORTS THAT STARBASE IN QUADRANT";B4;"-";B5 4630 PRINT"HAS BEEN DESTROYED BY ENEMY COMMANDER !!" 4640 G(B4,B5)=G(B4,B5)-10 4650 IFR3<=1THEN4690 4660 FORI=1TOR3:IF(B2(I)=B4)AND(B3(I)=B5)THEN4680 4670 NEXT 4680 B2(I)=B2(R3):B3(I)=B3(R3) 4690 R3=R3-1 4700 GOTO3640 4710 PRINT:PRINT:PRINT:PRINT"CONFLICT RESOLVED -GAME OVER":GOTO760 4720 IFC5$<>"DOCKED"THEN4750 4730 PRINT"--> CAPTAIN, WE'RE ALREADY DOCKED!" 4740 RETURN 4750 IFD4(9)=0THEN4770 4760 PRINT"SUBSPACE RADIO DAMAGED...CANNOT TRANSMIT.":RETURN 4770 IFR3<>0THEN4790 4780 PRINT"CAPTAIN, NO RESPONSE FROM STARBASE !":RETURN 4790 N1=N1+1:IFB6=0THEN4810 4800 GOTO4870 4810 D1=1E+30 4820 FORL=1TOR3:X=10*SQR((B2(L)-Q1)^2+(B3(L)-Q2)^2) 4830 IFX>D1THEN4850 4840 D1=X:K=L 4850 NEXTL 4860 Q1=B2(K):Q2=B3(K):GOSUB7260 4870 Q$(S6,S7)="." 4880 PRINT 4890 PRINT"STARBASE IN QUADRANT";Q1;"-";Q2;"RESPONDS --"; 4900 PRINT" ";S5$;" DEMATERIALIZES." 4910 P2=(1-.98^D1)^.333333 4920 FORL=1TO3 4930 IFL=1THENPRINT"1ST "; 4940 IFL=2THENPRINT"2ND "; 4950 IFL=3THENPRINT"3RD "; 4960 PRINT"ATTEMPT TO RE-MATERIALIZE THE ";S5$;". . . . ."; 4970 IFRND(1)>P2THEN5000 4980 PRINT"FAILS.":NEXTL 4990 F9=11:GOSUB4710:RETURN 5000 FORL=1TO5:I=B6+INT(3*RND(1))-1 5010 IF(I<1)OR(I>10)THEN5050 5020 J=B7+INT(3*RND(1))-1 5030 IF(J<1)OR(J>10)THEN5050 5040 IFQ$(I,J)="."THEN5060 5050 NEXTL:PRINT"FAILS.":GOTO4990 5060 PRINT"SUCCEEDS.":S6=I:S7=J:Q$(I,J)=LEFT$(S5$,1) 5070 GOSUB3430:PRINT"CAPTAIN, WE MADE IT!":RETURN 5080 P4=2:L5=K3:N=1 5090 FORK=1TOL5 5100 IFH3(K)=0THEN5360 5110 D6=.9+.01*RND(1):H2=H3(K)*D6^K7(N) 5120 P3=K6(N) 5130 P=ABS(P3):IFP4*H24.99THEN5180 5170 PRINT"MINOR HIT ON ":GOTO5190 5180 PRINTFNR(H2);"UNIT HIT ON "; 5190 M$=Q$(X8,Y8) 5200 IF M$="K"THENPRINT"KLINGON AT"; 5210 IFM$="C"THENPRINT"COMMANDER AT"; 5220 PRINTX8;"-";Y8 5230 IFK6(N)<>0THEN5270 5240 A5=X8:A6=Y8:T2$=Q$(X8,Y8):GOSUB3160 5250 IFR1<>0THEN5370 5260 F9=1:GOSUB4710:GOTO5370 5270 IFK6(N)<0THEN5360 5280 IFRND(1)<.9THEN5360 5290 IFK6(N)>(.4+.4*RND(1))*P3THEN5360 5300 PRINT 5310 PRINT"*** CAPTAIN, THE VESSEL AT SECTOR"; 5320 PRINTX8;"-";Y8 5330 PRINT" HAS JUST LOST ITS FIREPOWER !!!" 5340 PRINT 5350 K6(N)=-K6(N) 5360 N=N+1 5370 NEXTK 5380 RETURN 5390 J3=0 5400 IFD4(7)<>0THEN5640 5410 IFE1<=75THEN5470 5420 INPUT"ENTER COURSE....";D2 5430 IFD2<.01ORD2>12THENGOSUB12780ELSE5450 5440 RETURN 5450 P3=50+250*D1 5460 IFP375THEN5520 5510 PRINT"QUADRANT. THEY ARE USELESS NOW.'":RETURN 5520 PRINT"QUADRANT. WE CAN GO A MAXIMUM OF "; 5530 PRINTFNR(4E-03*(E1-50)-.05);"QUADRANTS.'":RETURN 5540 T1=D1/.4 5550 IFT1"Y"THENRETURN 5590 GOSUB5850:J3=1 5600 IFA2<>0THENRETURN 5610 E1=E1-P3 5620 IFE1>0THENRETURN 5630 F9=4:GOSUB4710:RETURN 5640 PRINT"IMPULSE ENGINES DAMAGED.":RETURN 5650 N$=" #" 5660 PRINT 5670 IFD4(2)<>0THEN5840 5680 PRINT"L.R. SCAN FOR QUADRANT";Q1;"-";Q2:PRINT 5690 I=Q1-1:J=Q1+1:K=Q2-1:L=Q2+1 5700 FORM=ITOJ:FORN=KTOL 5710 IF(M<=0)OR(M>8)THEN5770 5720 IF(N<=0)OR(N>8)THEN5770 5730 IFD4(11)=0THENS2(M,N)=1 5740 IFG(M,N)>=LQTHEN PRINT" ***";" "; 5750 IFG(M,N)B8THENB8=ABS(D6) 5870 D4=D4/B8:D6=D6/B8:T5=0:T6=0 5880 IFD0+T110)THEN6190 5960 IF(Y1<1)OR(Y1>10)THEN6190 5970 IFQ$(X1,Y1)="O"THEN6000 5980 IFQ$(X1,Y1)<>"."THEN6070 5990 NEXTL 6000 D1=.1*SQR((S6-X1)^2+(S7-Y1)^2) 6010 S6=X1:S7=Y1 6020 F4=S6:F5=S7 6030 IFQ$(X1,Y1)<>"O"THEN6520 6040 T2=FNA(1):T3=FNA(1) 6050 Q1=FNA(1):Q2=FNA(1):S6=FNB(1):S7=FNB(1):PRINT 6060 PRINT"*** SPACE PORTAL ENTERED ***":GOTO6490 6070 T6=1:K=50*D1/T1+1E-03:D1=.1*SQR((S6-X1)^2+(S7-Y1)^2) 6080 IF(Q$(X1,Y1)="K")OR(Q$(X1,Y1)="C")THEN6180 6090 PRINT:PRINTS5$;" BLOCKED BY "; 6100 IFQ$(X1,Y1)="*"THENPRINT"STAR AT"; 6110 IFQ$(X1,Y1)="B"THENPRINT"STARBASE AT"; 6120 PRINT" SECTOR";X1;"-";Y1;"...." 6130 PRINT"EMERGENCY STOP REQUIRED";FNR(K);"UNITS OF ENERGY." 6140 E1=E1-K 6150 S6=INT(X7-D4+.5):F4=S6:S7=INT(Y7-D6+.5):F5=S7 6160 IFE1>0THEN6520 6170 F9=4:GOSUB4710:RETURN 6180 S6=X1:S7=Y1:GOSUB9600:F4=S6:F5=S7:GOTO6520 6190 IFK3=0THEN6250 6200 FORL=1TOK3 6210 F3=SQR((X1-K4(L))^2+(Y1-K5(L))^2) 6220 K8(L)=.5*(F3+K7(L)):NEXTL 6230 IFG(Q1,Q2)<>LQTHENGOSUB790 6240 IFA2<>0THENRETURN 6250 X7=10*(Q1-1)+S6:Y7=10*(Q2-1)+S7 6260 X1=INT(X7+10*D1*B8*D4+.5) 6270 Y1=INT(Y7+10*D1*B8*D6+.5):L6=0 6280 L5=0 6290 IFX1>0THEN6310 6300 X1=-X1+1:L5=1 6310 IFY1>0THEN6330 6320 Y1=-Y1+1:L5=1 6330 IFX1<=80THEN6350 6340 X1=161-X1:L5=1 6350 IFY1<=80THEN6370 6360 Y1=161-Y1:L5=1 6370 IFL5=0THEN6390 6380 L6=1:GOTO6280 6390 IFL6=0THEN6460 6400 PRINT:PRINT"*** MESSAGE FROM STARFLEET COMMAND.....STARDATE";FNR(DO) 6410 PRINT"PERMISSION TO EXIT GALAXY - DENIED -" 6420 PRINT"'ENGINES SHUT DOWN AT "; 6430 Z1=INT((X1+9)/10):Z2=INT((Y1+9)/10) 6440 PRINT"QUADRANT";Z1;"-";Z2;", "; 6450 PRINT"SECTOR";X1-10*(Z1-1);"-";Y1-10*(Z2-1);"'" 6460 IFT5<>0THENRETURN 6470 Q1=INT((X1+9)/10):Q2=INT((Y1+9)/10) 6480 S6=X1-10*(Q1-1):S7=Y1-10*(Q2-1) 6490 GOSUB7550:PRINT:GOTO6510 6500 PRINTCHR$(26):PRINT"ENTERING THE ";G2$;" QUADRANT (";Q1;"-";Q2;")" 6510 Q$(S6,S7)=LEFT$(S5$,1):GOSUB7260:GOSUB11090:GOSUB5650:RETURN 6520 Q$(S6,S7)=LEFT$(S5$,1) 6530 IFL6=1THENRETURN 6540 IFK3=0THEN6610 6550 FORL=1TOK3 6560 F3=SQR((F4-K4(L))^2+(F5-K5(L))^2) 6570 K8(L)=.5*(K7(L)+F3) 6580 K7(L)=F3 6590 NEXTL 6600 GOSUB10980 6610 GOSUB7230:RETURN 6620 A=1:B=1 6630 FORK=1TOK3 6640 C=K4(K):D=K5(K) 6650 IFQ$(C,D)="C"THEN6670 6660 NEXTK 6670 N=0:F=K6(K)+100*K3 6680 IFF>LQTHENN=INT(RND(1)*K7(K)+1) 6690 IF((C5$="DOCKED")AND((B4<>Q1)OR(B5<>Q2)))THENN=-S8 6700 IFN=0THENN=INT(((F+200*RND(1))/150)-5) 6710 IFN=0THENRETURN 6720 IF(N>0)AND(K7(K)<1.5)THENRETURN 6730 IFABS(N)>S8THENN=SGN(N)*ABS(S8) 6740 T=ABS(N):P=S6-C:Q=S7-D 6750 IF2*ABS(P)0THENP=SGN(P*N) 6780 IFQ<>0THENQ=SGN(Q*N) 6790 R=C:S=D:Q$(C,D)="." 6800 FORL2=1TOT:L=R+P:M=S+Q 6810 IF(L>0)AND(L<=10)THEN6830 6820 ONSGN(N)+2GOTO7060,6920,6920 6830 IF(M>0)AND(M<=10)THEN6850 6840 ONSGN(N)+2GOTO7060,6860,6860 6850 IFQ$(L,M)="."THEN6980 6860 IF(Q=B)OR(P=0)THEN6920 6870 M=S+B 6880 IF(M>0)AND(M<=10)THEN6900 6890 ONSGN(N)+2GOTO7060,6910,6910 6900 IFQ$(L,M)="."THEN6980 6910 B=-B 6920 IF(P=A)OR(Q=0)THEN6990 6930 L=R+A 6940 IF(L>0)AND(L<=10)THEN6960 6950 ONSGN(N)+2GOTO7060,6970,6970 6960 IFQ$(L,M)="."THEN6980 6970 A=-A:GOTO6990 6980 R=L:S=M 6990 NEXTL2 7000 Q$(R,S)="C" 7010 IF(R=C)AND(S=D)THENRETURN 7020 K4(K)=R:K5(K)=S:K7(K)=SQR((S6-R)^2+(S7-S)^2) 7030 K8(K)=K7(K):IFN>0THENPRINT"*** COMMANDER ADVANCES TO"; 7040 IFN<0THENPRINT"*** COMMANDER RETREATS TO"; 7050 PRINT" SECTOR";R;"-";S:GOSUB10980:RETURN 7060 I=Q1+INT((L+9)/10)-1:J=Q2+INT((M+9)/10)-1 7070 IF(I<1)OR(I>8)THEN7220 7080 IF(J<1)OR(J>8)THEN7220 7090 FORL3=1TOR2 7100 IF(C1(L3)=I)AND(C2(L3)=J)THEN7220 7110 NEXTL3:PRINT"*** COMMANDER ESCAPES TO "; 7120 PRINT"QUADRANT";I;"-";J;" (AND REGAINS STRENGTH)" 7130 K4(K)=K4(K3):K5(K)=K5(K3):K7(K)=K7(K3):K8(K)=K8(K3) 7140 K6(K)=K6(K3):K3=K3-1:C3=0 7150 IFC5$<>"DOCKED"THENGOSUB7230 7160 GOSUB10980 7170 G(Q1,Q2)=G(Q1,Q2)-100:G(I,J)=G(I,J)+100 7180 FORL3=1TOR2 7190 IF(C1(L3)=Q1)AND(C2(L3)=Q2)THEN7210 7200 NEXTL3 7210 C1(L3)=I:C2(L3)=J:RETURN 7220 A=-A:B=-B:GOTO6990 7230 C5$="GREEN":IFE199THENC5$="RED" 7250 RETURN 7260 J4=1:B6=0:B7=0:K3=0:C3=0:U=G(Q1,Q2):IFU>999THEN7530 7270 K3=INT(.01*U):FORA=1TO10:FORB=1TO10:Q$(A,B)=".":NEXTB:NEXTA 7280 Q$(S6,S7)=LEFT$(S5$,1):U=G(Q1,Q2):IFU<100THEN7400 7290 U=U-100*K3:FORA=1TOK3 7300 S=FNB(1):K4(A)=S:T=FNB(1):K5(A)=T 7310 IFQ$(S,T)<>"."THEN7300 7320 Q$(S,T)="K":K7(A)=SQR((S6-S)^2+(S7-T)^2):K8(A)=K7(A) 7330 K6(A)=RND(1)*150+325:NEXTA 7340 IFR2=0THEN7390 7350 FORA=1TOR2 7360 IF(C1(A)=Q1)AND(C2(A)=Q2)THEN7380 7370 NEXTA:GOTO7390 7380 Q$(S,T)="C":K6(K3)=LQ+400*RND(1):C3=1 7390 GOSUB10980 7400 IFU<10THEN7440 7410 U=U-10 7420 B6=FNB(1):B7=FNB(1):IFQ$(B6,B7)<>"."THEN7420 7430 Q$(B6,B7)="B" 7440 GOSUB7230:IFU<1THENRETURN 7450 FORA=1TOU 7460 S=FNB(1):T=FNB(1):IFQ$(S,T)<>"."THEN7460 7470 Q$(S,T)="*":NEXTA 7480 IF(T2<>Q1)OR(T3<>Q2)THENRETURN 7490 S=FNB(1):T=FNB(1):IFQ$(S,T)<>"."THEN7490 7500 Q$(S,T)="O":PRINT 7510 PRINT"*** SHORT-RANGE SENSORS DETECT A SPACE-WARP IN THIS QUADRANT" 7520 RETURN 7530 FORA=1TO10:FORB=1TO10:Q$(A,B)=".":NEXTB:NEXTA 7540 Q$(S6,S7)=LEFT$(S5$,1):RETURN 7550 G4$="III":L=2:IFQ2>=5THEN7570 7560 L=1 7570 G2$=G1$(2*(Q1-1)+L):L=Q2 7580 IFL<=4THEN7600 7590 L=Q2-4 7600 G3$="IV":IFL=4THEN7620 7610 G3$=LEFT$(G4$,L) 7620 G2$=G2$+" "+G3$:RETURN 7630 IFRND(1)>.1THEN7650 7640 GOSUB10520:RETURN 7650 Q$(A5,A6)=".":PRINT"*** STAR AT SECTOR";A5;"-";A6;"NOVAS." 7660 G(Q1,Q2)=G(Q1,Q2)-1:S1=S1+1 7670 B9=1:T6=1:T7=1:K=0:X1=0:Y1=0 7680 H4(B9,1)=A5:H4(B9,2)=A6 7690 FORM=B9TOT6:FORQ=1TO3:FORJ=1TO3 7700 IFJ*Q=4THEN8140 7710 J5=H4(M,1)+Q-2:J6=H4(M,2)+J-2 7720 IF(J5<1)OR(J5>10)THEN8140 7730 IF(J6<1)OR(J6>10)THEN8140 7740 IFQ$(J5,J6)="."THEN8140 7750 IFQ$(J5,J6)="O"THEN8140 7760 IFQ$(J5,J6)<>"*"THEN7820 7770 IFRND(1)>=.1THEN7790 7780 X2=J5:Y2=J6:GOSUB10520:RETURN 7790 T7=T7+1:H4(T7,1)=J5:H4(T7,2)=J6:G(Q1,Q2)=G(Q1,Q2)-1 7800 S1=S1+1:PRINT"*** STAR AT SECTOR";J5;"-";J6;"NOVAS." 7810 GOTO8130 7820 IFQ$(J5,J6)<>"B"THEN7890 7830 G(Q1,Q2)=G(Q1,Q2)-10:FORV=1TOR3 7840 IF(B2(V)<>Q1)OR(B3(V)<>Q2)THEN7860 7850 B2(V)=B2(R3):B3(V)=B3(R3) 7860 NEXTV:R3=R3-1:B6=0:B7=0:B1=B1+1:GOSUB7230 7870 PRINT"*** STARBASE AT SECTOR";J5;"-";J6;"DESTROYED." 7880 GOTO8130 7890 IF(S6<>J5)OR(S7<>J6)THEN7990 7900 PRINT"*** STARSHIP BUFFETED BY NOVA.":IFS4<>0THEN7920 7910 E1=E1-LQ:GOTO7950 7920 IFS3>=LQTHEN7970 7930 D6=LQ-S3:E1=E1-D6:GOSUB7230:S3=0:S4=0 7940 PRINT"*** STARSHIP SHIELDS KNOCKED OUT.":D4(8)=5E-03*D5*RND(1))*D6 7950 IFE1>0THEN7980 7960 F9=7:GOSUB4710:RETURN 7970 S3=S3-LQ 7980 X1=X1+S6-H4(M,1):Y1=Y1+S7-H4(M,2):K=K+1:GOTO8140 7990 IFQ$(J5,J6)<>"C"THEN8120 8000 FORV=1TOK3 8010 IF(K4(V)=J5)AND(K5(V)=J6)THEN8030 8020 NEXTV 8030 K6(V)=K6(V)-800:IFK6(V)<=0THEN8120 8040 N5=J5+J5-H4(M,1):N6=J6+J6-H4(M,2) 8050 PRINT"*** COMMANDER AT SECTOR";J5;"-";J6;"DAMAGED"; 8060 IF(N5<1)OR(N5>10)OR(N6<1)OR(N6>10)THEN8110 8070 PRINT" AND BUFFETED TO SECTOR";N5;"-";N6 8080 Q$(N5,N6)="C":K4(V)=N5:K5(V)=N6 8090 K7(V)=SQR((S6-N5)^2+(S7-N6)^2):K8(V)=K7(V) 8100 Q$(J5,J6)="." 8110 PRINT:GOTO8140 8120 A5=J5:A6=J6:T2$=Q$(J5,J6):GOSUB3160:GOTO8140 8130 PRINT:Q$(J5,J6)="." 8140 NEXTJ:NEXTQ:NEXTM 8150 IFT6=T7THEN8170 8160 B9=T6+1:T6=T7:GOTO7690 8170 IFK=0THENRETURN 8180 D1=K*.1 8190 IFX1<>0THENX1=SGN(X1) 8200 IFY1<>0THENY1=SGN(Y1) 8210 I=3*(X1+1)+Y1+2 8220 D2=C5(I) 8230 IFD2=0THEND1=0 8240 IFD1=0THENRETURN 8250 PRINT:PRINT"FORCE OF NOVA DISPLACES STARSHIP." 8260 GOSUB5850:RETURN 8270 P=2:J3=1 8280 IFC5$<>"DOCKED"THEN8300 8290 PRINT"PHASERS CAN'T BE FIRED THRU BASE SHIELDS.":GOTO8370 8300 IFD4(3)=0THEN8320 8310 PRINT"PHASER BANKS DAMAGED.":GOTO8370 8320 IFS4=0THEN8340 8330 PRINT"SHIELDS MUST BE DOWN TO FIRE PHASERS.":GOTO8370 8340 IFK3>0THEN8380 8350 PRINT 8360 PRINT"THE SHORT-RANGE SENSORS DETECT NO ENEMY IN THIS QUADRANT." 8370 J3=0:RETURN 8380 PRINT"PHASERS LOCKED ON TARGET. ENERGY AVAILABLE="; 8390 PRINT.01*INT(100*E1) 8400 INPUT"UNITS TO FIRE";P1:IFP1=ETHEN8610 8590 H3(I)=H5(I):E=E-R7 8600 NEXTI:GOTO8620 8610 H3(I)=H3(I)+E:E=0 8620 GOSUB5080 8630 IF(E<>0)AND(A2=0)THEN8650 8640 J3=1:RETURN 8650 PRINTFNR(E);"EXPENDED ON EMPTY SPACE.":J3=1:RETURN 8660 J3=1:IFD4(4)=0THEN8680 8670 PRINT"PHOTON TUBES DAMAGED.":GOTO8720 8680 IFT4<>0THEN8700 8690 PRINT"NO TORPEDOS LEFT.":GOTO8720 8700 INPUT"TORPEDO COURSE";C6 8710 IFC6<.01ORC6>12THENGOSUB12780ELSE8730 8720 J3=0:RETURN 8730 INPUT"BURST OF 3";B$:N=1 8740 IFLEFT$(B$,1)="N"THEN8830 8750 IFLEFT$(B$,1)<>"Y"THEN8730 8760 IFT4>2THEN8780 8770 PRINT"NO BURST. ONLY";T4;"TORPEDOS LEFT.":GOTO8720 8780 INPUT"SPREAD ANGLE (3 - 30 DEG)";G2 8790 IFG2<0THEN8720 8800 IF(G2<3)OR(G2>30)THEN8780 8810 G2=FND(G2) 8820 N=3 8830 FORZ6=1TON 8840 IFC5$<>"DOCKED"THENT4=T4-1 8850 Z7=Z6:R=RND(1) 8860 R=(R+RND(1))*.5-.5 8870 IF(R>=-.4)AND(R<=.4)THEN8940 8880 R=(RND(1)+1.2)*R:IFN=3THEN8900 8890 PRINT"*** TORPEDO MISFIRES...":GOTO8910 8900 PRINT"*** TORPEDO NUMBER";Z6;"MISFIRES..." 8910 IF RND(1)>.2THEN8940 8920 PRINT"*** PHOTON TUBES DAMAGED BY MISFIRE." 8930 D4(4)=D5*(1+2*RND(1)):GOTO9580 8940 IF(S4<>0)OR(C5$="DOCKED")THENR=R+1E-03*S3*R 8950 A3=C6+.25*R:IFN=1THEN8980 8960 A8=(15-A3+(2-Z6)*G2)*.523599:PRINT 8970 PRINT"TRACK FOR TORPEDO NUMBER";Z7;"--":GOTO8990 8980 PRINT:PRINT"TORPEDO TRACK --":A8=(15-A3)*.523599 8990 X4=-SIN(A8):Y4=COS(A8):B8=ABS(X4) 9000 IFABS(Y4)>ABS(X4)THENB8=ABS(Y4) 9010 X4=X4/B8:Y4=Y4/B8:X5=S6:Y5=S7 9020 FORL9=1TO15:X5=X5+X4:A5=INT(X5+.5) 9030 IF(A5<1)OR(A5>10)THEN9560 9040 Y5=Y5+Y4:A6=INT(Y5+.5) 9050 IF(A6<1)OR(A6>10)THEN9560 9060 IF(L9=5)OR(L9=9)THENPRINT 9070 PRINTFNR(X5);"-";FNR(Y5);", "; 9080 IFQ$(A5,A6)<>"."THEN9100 9090 GOTO9550 9100 PRINT:IFQ$(A5,A6)="K"THEN9150 9110 IFQ$(A5,A6)<>"C"THEN9370 9120 IFRND(1)>.1THEN9150 9130 PRINT"*** COMMANDER AT SECTOR";A5;"-";A6;"USES ANTI-PHOTON DEVICE !" 9140 PRINT"-- TORPEDO NEUTRALIZED.":GOTO9570 9150 FORV=1TOK3 9160 IF(A5=K4(V))AND(A6=K5(V))THEN9180 9170 NEXTV 9180 K=K6(V):W3=200+800*RND(1) 9190 IFABS(K)0THEN9220 9210 T2$=Q$(A5,A6):GOSUB3160:GOTO9570 9220 IFQ$(A5,A6)="K"THENPRINT"*** KLINGON AT"; 9230 IFQ$(A5,A6)="C"THENPRINT"*** COMMANDER AT"; 9240 PRINTA5;"-";A6; 9250 A7=A8+2.5*(RND(1)-.5) 9260 W3=ABS(-SIN(A7)):IFABS(COS(A7))>W3THENW3=ABS(COS(A7)) 9270 X7=-SIN(A7)/W3:Y7=COS(A7)/W3 9280 P=INT(A5+X7+.5):Q=INT(A6+Y7+.5) 9290 IF(P<1)OR(P>10)OR(Q<1)OR(Q>10)THEN9360 9300 IFQ$(P,Q)<>"."THEN9360 9310 Q$(P,Q)=Q$(A5,A6):Q$(A5,A6)=".":PRINT"DAMAGED--" 9320 PRINT" DISPLACED BY BLAST TO SECTOR";P;"-";Q 9330 K4(V)=P:K5(V)=Q:K7(V)=SQR((S6-P)^2+(S7-Q)^2) 9340 K8(V)=K7(V) 9350 GOSUB10980:GOTO9570 9360 PRINT"DAMAGED, BUT NOT DESTROYED.":GOTO9570 9370 IFQ$(A5,A6)<>"B"THEN9450 9380 PRINT"*** STARBASE DESTROYED...!!!" 9390 IFS2(Q1,Q2)<0THENS2(Q1,Q2)=0 9400 FORW=1TOR3 9410 IF(B2(W)<>Q1)OR(B3(W)<>Q2)THEN9430 9420 B2(W)=B2(R3):B3(W)=B3(R3) 9430 NEXTW:Q$(A5,A6)=".":R3=R3-1:B6=0:B7=0 9440 G(Q1,Q2)=G(Q1,Q2)-10:B1=B1+1:GOSUB7230:GOTO9570 9450 IFQ$(A5,A6)<>"*"THEN9530 9460 IFRND(1)>.15THEN9490 9470 PRINT"*** STAR AT SECTOR";A5;"-";A6;"UNAFFECTED BY PHOTON BLAST" 9480 GOTO9570 9490 X2=A5:Y2=A6:GOSUB7630:A5=X2:A6=Y2 9500 IFG(Q1,Q2)=LQTHENRETURN 9510 IFA2<>0THENRETURN 9520 GOTO9570 9530 PRINT:PRINT" >>> ORGANIAN TRUCE-MONITOR DESTROYED <<<":Q$(A5,A6)=".":PRINT 9540 T2=0:T3=0:GOTO9570 9550 NEXTL9 9560 PRINT:PRINT"TORPEDO MISSED!" 9570 NEXTZ6 9580 IFR1<>0THENRETURN 9590 F9=1:GOSUB4710:RETURN 9600 PRINT:PRINT"*** RED ALERT!! RED ALERT!! ***":PRINT 9610 PRINT"*** COLLISION IMMINENT!!":PRINT 9620 PRINT"*** ";S5$;" RAMS ";:W7=1:IFQ$(S6,S7)="C"THENW7=2 9630 IFW7=1THENPRINT"KLINGON AT "; 9640 IFW7=2THENPRINT"COMMANDER AT "; 9650 PRINT"SECTOR";S6;"-";S7:A5=S6:A6=S7:T2$=Q$(S6,S7) 9660 GOSUB3160:PRINT"*** ";S5$;" HEAVILY DAMAGED." 9670 K=INT(5+RND(1)*20):PRINT"***SICKBAY REPORTS";K;"CASUALTIES!" 9680 C4=C4+K:FORL=1TO12:I=RND(1) 9690 J=(3.5*W7*(RND(1)+I)+1)*D5 9700 IFL=6THENJ=J/3 9710 D4(L)=D4(L)+T1+J:NEXTL:D4(6)=D4(6)-3 9720 IFD4(6)<0THEND4(6)=0 9730 S4=0:IFR1<>0THENRETURN 9740 F9=1:GOSUB4710:RETURN 9750 RETURN 9760 A2=0:G1=0:GOSUB2200:S5$="ENTERPRISE" 9770 I7=5000:E1=I7:I8=2500:S3=I8:S4=0:S9=S4:J1=4:L1=J1 9780 Q1=FNA(1):Q2=FNA(1):S6=FNB(1):S7=FNB(1):I9=10:T4=I9 9790 W1=5:W2=25:FORI=1TO12:D4(I)=0:NEXT 9800 J2=100*INT(31*RND(1)+20):D0=J2:K1=0:K2=0:N1=0:N2=0:R6=0:C4=0 9810 A1=1:D3=.25:FORI=1TO8:FORJ=1TO8:S2(I,J)=0:NEXTJ:NEXTI 9820 F1(1)=D0-.5*I5*LOG(RND(1)):F1(5)=1E+30 9830 F1(2)=D0-1.5*(I5/R2)*LOG(RND(1)):I6=0 9840 F1(3)=D0-.3*I5*LOG(RND(1)):F1(4)=D0-.3*I5*LOG(RND(1)) 9850 FORI=1TO8:FORJ=1TO8:K=INT(RND(1)*9+1):I6=I6+K 9860 G(I,J)=K:NEXTJ:NEXTI:S1=0 9870 FOR I=1TOI2 9880 X=INT(RND(1)*6+2):Y=INT(RND(1)*6+2) 9890 IFG(X,Y)>=10THEN9880 9900 IFI<2THEN9940 9910 K=I-1:FORJ=1TOK:D1=SQR((B2(J)-X)^2+(B3(J)-Y)^2) 9920 IFD1<2THEN9880 9930 NEXTJ 9940 B2(I)=X:B3(I)=Y:S2(X,Y)=-1:G(X,Y)=G(X,Y)+10:NEXTI 9950 B1=0:K=I1-I4:L=INT(.25*S8*(9-L2)+1) 9960 M=INT((1-RND(1)^2)*L):IFM>KTHENM=K 9970 N=100*M 9980 X=FNA(1):Y=FNA(1):IFG(X,Y)+N>999THEN9980 9990 G(X,Y)=G(X,Y)+N:K=K-M:IFK<>0THEN9960 10000 FORI=1TOI4 10010 X=FNA(1):Y=FNA(1):IF(G(X,Y)<99)AND(RND(1)<.75)THEN10010 10020 IFG(X,Y)>899THEN10010 10030 IFI=1THEN10060 10040 M=I-1:FORJ=1TOM:IF(C1(J)=X)AND(C2(J)=Y)THEN10010 10050 NEXTJ 10060 G(X,Y)=G(X,Y)+100:C1(I)=X:C2(I)=Y:NEXTI 10070 I=INT(D0):PRINT:S0=0 10080 T2=FNA(1):T3=FNA(1):IFG(T2,T3)<100THEN10080 10090 PRINT"STARDATE..............";I 10100 PRINT"NUMBER OF KLINGONS....";I1 10110 PRINT"NUMBER OF STARDATES...";INT(I5) 10120 PRINT"NUMBER OF STARBASES...";I2 10130 PRINT"STARBASE LOCATIONS...."; 10140 FORI=1TOI2:PRINTB2(I);"-";B3(I); 10150 IFI<>I2THENPRINT", "; 10160 NEXTI:PRINT:PRINT 10170 GOSUB7550 10180 PRINT"THE ";S5$;" IS CURRENTLY IN THE ";G2$;" QUADRANT." 10190 GOSUB7260 10200 PRINT:INPUT"READY TO CONTINUE";NL$:PRINTCHR$(26):GOSUB11090:GOSUB5650:RETURN 10210 INPUT"WARP FACTOR";K 10220 PRINT 10230 IFK<1THEN10340 10240 IFK>10THEN10350 10250 J=W1:W1=K:W2=W1*W1 10260 IF(W1<=J)OR(W1<=6)THEN10290 10270 IFW1<=8THEN10300 10280 IFW1>8THEN10310 10290 PRINT"'WARP FACTOR";W1;"CAPTAIN'":RETURN 10300 PRINT"*** OUR MAXIMUM SAFE SPEED IS WARP 6":RETURN"; 10310 IFW1=10THEN10330 10320 PRINT"*** CAPTAIN, OUR ENGINES MAY NOT TAKE IT !":RETURN 10330 PRINT"-'AYE, CAPTAIN, WE'LL GIVE IT A TRY.'":RETURN 10340 PRINT"-'WE CAN'T GO BELOW WARP 1, CAPTAIN.'":RETURN 10350 PRINT"-'OUR TOP SPEED IS WARP 10, CAPTAIN.'" 10360 RETURN 10370 J3=0:IFD4(8)<>0THEN10490 10380 IFS4<>0THEN10420 10390 INPUT"SHIELDS ARE DOWN. DO YOU WANT THEM UP";B$ 10400 IFLEFT$(B$,1)="Y"THEN10450 10410 RETURN 10420 INPUT"SHIELDS ARE UP. DO YOU WANT THEM DOWN";B$ 10430 IFLEFT$(B$,1)="Y"THEN10480 10440 RETURN 10450 S4=1:S9=1:IFC5$<>"DOCKED"THENE1=E1-50 10460 PRINT"SHIELDS RAISED.":IFE1<=0THEN10500 10470 J3=1:RETURN 10480 S4=0:S9=1:PRINT"SHIELDS LOWERED.":J3=1:RETURN 10490 PRINT"SHIELDS DAMAGED AND DOWN. ":RETURN 10500 PRINT:PRINT"SHIELDS CONSUME ALL ENERGY." 10510 F9=4:GOSUB4710:RETURN 10520 IFX2<>0THEN10620 10530 N=INT(RND(1)*I6+1):FORX=1TO8:FORY=1TO8 10540 N=N-(G(X,Y)-INT(G(X,Y)/10)*10):IFN<=0THEN10560 10550 NEXTY:NEXTX:RETURN 10560 IF(X<>Q1)OR(Y<>Q2)THEN10680 10570 IFJ4<>0THEN10680 10580 N=INT(RND(1)*(G(X,Y)-INT(G(X,Y)/10)*10))+1 10590 FORX3=1TO10:FORY3=1TO10:IFQ$(X3,Y3)<>"*"THEN10610 10600 N=N-1:IFN=0THEN10620 10610 NEXTY3:NEXTX3 10620 PRINT:PRINT"*** RED ALERT!! RED ALERT!! *** 10630 X3=X2:Y3=Y2 10640 PRINT"*** INCIPIENT SUPERNOVA DETECTED AT SECTOR";X3;"-";Y3 10650 X=Q1:Y=Q2:K=(X2-S6)^2+(Y2-S7)^2 10660 IFK>1.5THEN10720 10670 PRINT"*** EMERGENCY AUTO-OVERRIDE JAMMED ***":A2=1:GOTO10720 10680 IFD4(9)<>0THEN10720 10690 PRINT:PRINT"MESSAGE FROM STARFLEET COMMAND...STARDATE";INT(D0) 10700 PRINT"'SUPERNOVA IN QUADRANT";X;"-";Y; 10710 PRINT"....CAUTION ADVISED'" 10720 N=G(X,Y):R=INT(N/100):Q=0 10730 IF(X<>Q1)OR(Y<>Q2)THEN10750 10740 K3=0:C3=0 10750 IFR=0THEN10810 10760 R1=R1-R:IFR2=0THEN10810 10770 FORL=1TOR2:IF(C1(L)<>X)OR(C2(L)<>Y)THEN10800 10780 C1(L)=C1(R2):C2(L)=C2(R2):C1(R2)=0:C2(R2)=0 10790 R2=R2-1:R=R-1:Q=1:IFR2=0THENF1(2)=1E+30 10800 NEXTL 10810 IFR3=0THEN10850 10820 FORL=1TOR3:IF(B2(L)<>X)OR(B3(L)<>Y)THEN10840 10830 B2(L)=B2(R3):B3(L)=B3(R3):B2(R3)=0:B3(R3)=0:R3=R3-1 10840 NEXTL 10850 IFX2=0THEN10890 10860 N=G(X,Y)-INT(G(X,Y)/100)*100 10870 S1=S1+(N-INT(N/10)*10):B1=B1+INT(N/10) 10880 K1=K1+R:K2=K2+Q 10890 IF(S2(X,Y)<>0)AND(D4(9)<>0)THENS2(X,Y)=LQ+G(X,Y) 10900 IF(D4(9)=0)OR((Q1=X)AND(Q2=Y))THENS2(X,Y)=1 10910 G(X,Y)=1000 10920 IF(R1<>0)OR((X=Q1)AND(Y=Q2))THEN10960 10930 PRINTCHR$(26):PRINT"*** SUPERNOVA IN QUADRANT";X;"-";Y;"HAS DESTROYED THE" 10940 PRINT"REMAINDER OF THE ENEMY FLEET !!" 10950 F9=1:GOTO4710 10960 IFA2=0THENRETURN 10970 F9=8:GOTO4710 10980 IFK3<=1THENRETURN 10990 Z4=0:FORO=1TOK3-1:IFK7(O)<=K7(O+1)THEN11060 11000 K=K7(O):K7(O)=K7(O+1):K7(O+1)=K 11010 K=K8(O):K8(O)=K8(O+1):K8(O+1)=K 11020 K=K4(O):K4(O)=K4(O+1):K4(O+1)=K 11030 K=K5(O):K5(O)=K5(O+1):K5(O+1)=K 11040 K=K6(O):K6(O)=K6(O+1):K6(O+1)=K 11050 Z4=1 11060 NEXTO 11070 IFZ4<>0THEN10990 11080 RETURN 11090 IFD(1)<>0THEN11330 11100 PRINT:PRINT" 1 2 3 4 5 6 7 8 9 10" 11110 FORI=1TO10:IFI<10THENPRINT" "; 11120 PRINTI;:FORJ=1TO10:PRINTQ$(I,J);" ";:NEXTJ 11130 ONIGOTO11150,11160,11180,11190,11240 11140 ONI-5GOTO11250,11260,11270,11300,11310 11150 PRINT" STARDATE ";FNR(D0):GOTO11320 11160 IFC5$<>"DOCKED"THENGOSUB7230 11170 PRINT" CONDITION ";C5$:GOTO11320 11180 PRINT" POSITION ";Q1;"-";Q2;", ";S6;"-";S7:GOTO11320 11190 PRINT" LIFE SUPPORT ";:IFD4(5)<>0THEN11210 11200 PRINT"ACTIVE":GOTO11320 11210 IFC5$<>"DOCKED"THEN11230 11220 PRINT"DAMAGED, SUPPORTED BY STARBASE":GOTO11320 11230 PRINT"DAMAGED, RESERVES=";FNS(L1):GOTO11320 11240 PRINT" WARP FACTOR ";FNR(W1):GOTO11320 11250 PRINT" ENERGY";SPC(8);.01*INT(100*E1):GOTO11320 11260 PRINT" TORPEDOS ";T4:GOTO11320 11270 PRINT" SHIELDS ";:B$="DOWN,":IFS4<>0THENB$="UP," 11280 IFD4(8)>0THENB$="DAMAGED," 11290 PRINTB$;INT(100*S3/I8+.5);"%":GOTO11320 11300 PRINT" KLINGONS LEFT ";R1:GOTO11320 11310 PRINT" TIME LEFT ";FNS(R5) 11320 NEXTI:RETURN 11330 PRINT"SHORT RANGE SENSORS DAMAGED.":RETURN 11340 PRINT:PRINT"*** TIME WARP ENTERED ***":PRINT"YOU ARE TRAVELING "; 11350 IFS0<>0THEN11390 11360 T1=-.5*I5*LOG(RND(1)) 11370 PRINT"FORWARD IN TIME";FNR(T1);"STARDATES." 11380 F1(2)=F1(2)+T1:GOTO11550 11390 M=D0:D0=D9(1) 11400 PRINT"BACKWARD IN TIME";FNR(M-D0);"STARDATES.":S0=0 11410 R1=D9(2):R2=D9(3):R3=D9(4):R4=D9(5):R5=D9(6) 11420 S1=D9(7):B1=D9(8):K1=D9(9):K2=D9(10) 11430 FORI=1TO8:FORJ=1TO8:G(I,J)=D9(I-1+8*(J-1)+11):NEXTJ:NEXTI 11440 FORI=75TO84:C1(I-74)=D9(I):NEXT 11450 FORI=85TO94:C2(I-84)=D9(I):NEXT 11460 FORI=95TO99:B2(I-94)=D9(I):NEXT 11470 FORI=100TO104:B3(I-99)=D9(I):NEXT:B4=D9(105):B5=D9(106) 11480 F1(1)=D0-.5*I5*LOG(RND(1)) 11490 IFR2<>0THENF1(2)=D0-(I5/R2)*LOG(RND(1)) 11500 F1(3)=D0-.5*I5*LOG(RND(1)) 11510 FORI=1TO8:FORJ=1TO8:IF10THEN11690 11570 INPUT"NUMBER OF UNITS TO SHIELDS";Z3 11580 IFZ3<0THENRETURN 11590 IFE1+S3-Z3>0THEN11620 11600 PRINT"SCOTT HERE- 'WE ONLY HAVE";FNR(E1+S3);"UNITS LEFT.'" 11610 RETURN 11620 E1=E1+S3-Z3:S3=Z3:PRINT"--ENERGY TRANSFER COMPLETE--" 11630 PRINT"(SHIP ENERGY=";FNR(E1);" SHIELD ENERGY=";FNR(S3);")" 11640 J3=1 11650 T1=.1:P5=(K3+4*C3)/48:IFP5<.1THENP5=.1 11660 IFP5>RND(1)THENGOSUB790 11670 IFA2<>0THENRETURN 11680 GOSUB3640:RETURN 11690 PRINT"TRANSFER PANEL DAMAGED.":RETURN 11700 J3=0:INPUT"HOW MANY STARDATES";Z5:IF(Z5"Y"THENRETURN 11720 R6=1 11730 IFZ5<=0THENR6=0 11740 IFR6=0THENRETURN 11750 T1=Z5:Z6=Z5 11760 IFK3=0THEN11790 11770 T1=1+RND(1):IFZ50THENRETURN 11810 GOSUB3640:J3=1:IFA2<>0THENRETURN 11820 Z5=Z5-Z6:GOTO11730 11830 J3=0:IFD4(6)<>0THEN12300 11840 INPUT"ENTER COURSE...";D2:IFD2<.01ORD2>12THENGOSUB12780 11850 INPUT"DISTANCE...";D1 11860 P=(D1+.05)*W1*W1*W1*(S4+1):IFPE1)THEN11910 11890 PRINT" WE HAVEN'T THE ENERGY TO GO THAT FAR WITH"; 11900 PRINT" THE SHIELDS UP.":RETURN 11910 W=INT((E1/(D1+.05))^.333333):IFW<=0THEN11960 11920 PRINT" WE HAVEN'T THE ENERGY. BUT WE COULD DO IT AT WARP";W 11930 IFS4<>0THEN11950 11940 RETURN 11950 PRINT" IF YOU'LL LOWER THE SHIELDS.":RETURN 11960 PRINT" WE CAN'T DO IT, CAPTAIN. WE HAVEN'T GOT THE ENERGY." 11970 RETURN 11980 T1=10*D1/W2:IFT1<.8*R5THEN12040 11990 PRINT:PRINT"MR. SPOCK - 'CAPTAIN, I COMPUTE THAT SUCH A TRIP" 12000 PRINT" WILL REQUIRE APPROXIMATELY";FNR(100*T1/R5); 12010 PRINT"PERCENT":PRINT" OF OUR REMAINING TIME. ARE YOU SURE "; 12020 INPUT "THIS IS WISE";B$:IFLEFT$(B$,1)="Y"THEN12040 12030 J3=0:RETURN 12040 Q4=0:W=0:IFW1<=6THEN12200 12050 P=D1*(6-W1)^2/66.6667:IFP>RND(1)THENQ4=1 12060 IFQ4<>0THEND1=RND(1)*D1 12070 W=0:IFW1<10THEN12090 12080 IF.25*D1>RND(1)THENW=1 12090 IF(Q4=0)AND(W=0)THEN12200 12100 A=(15-D2)*.5236:X1=-SIN(A):X2=COS(A) 12110 B8=ABS(X1):IFABS(X2)>ABS(X1)THENB8=ABS(X2) 12120 X1=X1/B8:Y1=Y1/B8:N=INT(10*D1*B8+.5):X=S6:Y=S7 12130 IFN=0THEN12200 12140 FORL=1TON 12150 X=X+X1:Q=INT(X+.5):IF(Q<1)OR(Q>10)THEN12200 12160 Y=Y+Y1:R=INT(Y+.5):IF(R<1)OR(R>10)THEN12200 12170 IFQ$(Q,R)="."THEN12190 12180 Q4=0:W=0 12190 NEXTL 12200 GOSUB5850:IFA2<>0THENRETURN 12210 E1=E1-D1*W1*W1*W1*(S4+1):IFE1>0THEN12230 12220 F9=4:GOSUB4710:RETURN 12230 T1=10*D1/W2:IFW<>0THENGOSUB11340 12240 IFQ4=0THEN12290 12250 PRINT:PRINT"ENGINEERING TO BRIDGE--":PRINT" SCOTT HERE- "; 12260 PRINT"'WE'VE JUST BLOWN THE WARP ENGINES." 12270 PRINT" WE'LL HAVE TO SHUT 'ER DOWN HERE, CAPTAIN.'" 12280 D4(6)=D5*(3*RND(1)+1) 12290 J3=1:RETURN 12300 PRINT"WARP ENGINES DAMAGED.":RETURN 12310 ONSGN(D4(10))+2GOTO12320,12340,12330 12320 PRINT"YE FAERIE QUEENE HAS NO SHUTTLE CRAFT.":RETURN 12330 PRINT"SHUTTLE CRAFT DAMAGED.":RETURN 12340 PRINT:PRINT"***ABANDON SHIP! ABANDON SHIP!" 12350 PRINT"***ALL HANDS ABANDON SHIP!":PRINT 12360 PRINT"YOU AND THE BRIDGE CREW ESCAPE IN THE GALILEO." 12370 PRINT"THE REMAINDER OF THE CREW BEAMS DOWN" 12380 PRINT"TO THE NEAREST HABITABLE PLANET.":IFR3<>0THEN12400 12390 F9=9:GOSUB4710:RETURN 12400 PRINT:PRINT"YOU ARE CAPTURED BY KLINGONS AND RELEASED TO" 12410 PRINT"THE FEDERATION IN A PRISONER-OF-WAR EXCHANGE." 12420 PRINT"STARFLEET PUTS YOU IN COMMAND OF ANOTHER SHIP," 12430 PRINT"THE FAERIE QUEENE WHICH IS ANTIQUATED, BUT" 12440 PRINT"STILL USABLE.":N=INT(RND(1)*R3+1):Q1=B2(N):Q2=B3(N) 12450 S6=5:S7=5:GOSUB7260:Q$(S6,S7)="." 12460 FORL=1TO3:S6=INT(3*RND(1)-1+B6) 12470 IF(S6<1)OR(S7>10)THEN12500 12480 S7=INT(3*RND(1)-1+B7):IF(S7<1)OR(S7>10)THEN12500 12490 IFQ$(S6,S7)="."THEN12510 12500 NEXTL:GOTO12450 12510 S5$="FAERIE QUEENE":Q$(S6,S7)=LEFT$(S5$,1):C5$="DOCKED" 12520 FORL=1TO12:D4(L)=0:NEXT:D4(10)=-1:E1=3000:I7=E1 12530 S3=1500:I8=S3:T4=6:I9=T4:L1=3:J1=L1:S4=0:W1=5:W2=25 12540 RETURN 12550 IFD4(11)=0THEN12580 12560 PRINT"COMPUTER DAMAGED - CANNOT EXECUTE DESTRUCT SEQUENCE" 12570 RETURN 12580 PRINT:PRINT" ---WORKING---" 12590 PRINT"IDENTIFICATION-POSITIVE" 12600 PRINT"SELF-DESTRUCT-SEQUENCE-ACTIVATED":J=3 12610 FORI=10TO6STEP-1:PRINTSPC(J);I:GOSUB12760:J=J+3:NEXT 12620 PRINT"ENTER-YOUR-MISSION-PASSWORD-TO-CONTINUE" 12630 PRINT"SELF-DESTRUCT-SEQUENCE-OTHERWISE-DESTRUCT" 12640 PRINT"SEQUENCE-WILL-BE-ABORTED" 12650 INPUTB$:IFB$<>X$THEN12740 12660 PRINT"PASSWORD-ACCEPTED":J=10 12670 FORI=5TO1STEP-1:PRINTSPC(J);I:GOSUB12760:J=J+3:NEXT 12680 PRINT:PRINT"*****ENTROPY OF ";S5$;" MAXIMIZED*****" 12690 PRINT:IFK3=0THEN12730 12700 W=20*E1:FORL=1TOK3:IFK6(L)*K7(L)>WTHEN12720 12710 A5=K4(L):A6=K5(L):T2$=Q$(A5,A6):GOSUB3160 12720 NEXTL 12730 F9=10:GOSUB4710:RETURN 12740 PRINT"PASSWORD-REJECTED" 12750 PRINT"CONTINUITY-EFFECTED":PRINT:RETURN 12760 K=12345:FORM=1TO90:K=K+1:NEXTM:RETURN 12770 FORI=1TO10:GOTO11130:RETURN 12780 PRINT"---> COURSE(S) .01-12 ONLY !!!":RETURN