1 REM From "strek.bas" (FD 1/22/2005) which created strek.zip when run 2 REM The zip contained ST.BAS, file date 9/29/1995. Mods by WTN 2/16/2021... 3 REM Converted FR and FS functions to FNR and FNS, straightened out title 4 REM added RANDOMIZE(TIMER), removed extra chars, fixed the LRSCAN display 5 REM corrected corrupted text 10 RANDOMIZE(TIMER) 11 REM *** SUPER STAR TREK *** 12 REM INTELLEC MDS VERSION 13 REM WRITTEN IN BASIC BY RON WILLIAMS 14 REM INTEL CORP. - 5/15/76 15 REM ADAPTED FROM A FORTRAN VERSION WRITTEN 16 REM FOR THE CDC 6600 IN 1974. 17 DIM G1$(16), V$(5, 5), C$(20), G(8, 8), D$(12), Q$(10, 10), D4(12), D9(106) 18 DIM S2(8, 8): Q$ = "?" 19 DATA S.R. SENSORS,L.R. SENSORS,PHASERS,PHOTON TUBES,LIFE SUPPORT 20 DATA WARP ENGINES,IMPULSE ENGINES,SHIELDS,SUBSPACE RADIO 21 DATA SHUTTLE CRAFT,COMPUTER,TRANSFER PANEL,ABANDON,CHART,COMPUTER 22 DATA DAMAGES,DESTRUCT,DOCK,IDLE,IMPULSE,LRSCAN,NAVIGATE,PHASERS,QUIT 23 DATA SHIELDS,SOS,SRSCAN,STATUS, TORPEDO,TRANSFER,VISUAL,WARP,SHORT 24 DATA MEDIUM,LONG,BEGINNER,NOVICE,SENIOR,EXPERT,COURSE,WCOST,ICOST 25 DATA PEFFECT,SCORE,END,ANTARES,SIRIUS,RIGEL,MERAK,PROCYON,CAPELLA 26 DATA VEGA,DENEB,CANOPUS,ALDEBARAN,ALTAIR,REGULUS,BELLATRIX,ARCTURUS 27 DATA POLLUX,SPICA,10.5,12,1.5,9,0,3,7.5,6,4.5 28 DEF FNA (X) = INT(8 * RND(X)) + 1: DEF FNB (X) = INT(10 * RND(X)) + 1 29 DEF FND (X) = X / 60 30 DEF FNR (X) = INT(X * 10 + .5) / 10: DEF FNS (X) = INT(X * 100 + .5) / 100 40 FOR I = 1 TO 12: READ D$(I): NEXT: FOR I = 1 TO 20: READ C$(I): NEXT 43 FOR I = 1 TO 3: READ T$(I): NEXT: FOR I = 1 TO 4: READ S$(I): NEXT: FOR I = 1 TO 6 44 READ C2$(I): NEXT: FOR I = 1 TO 16: READ G1$(I): NEXT: FOR I = 1 TO 9: READ C5(I): NEXT 45 REM CALL SETUP 46 GOSUB 24000: S7$(1) = "": S7$(2) = " ": S7$(3) = " ": S7$(4) = "" 70 IF A2 <> 0 THEN 900 75 J4 = 0: T1 = 0: PRINT : INPUT "COMMAND"; A$: IF LEN(A$) > 1 THEN 110 80 PRINT "USE AT LEAST 2 LETTERS, PLEASE.": GOTO 75 110 FOR I = 1 TO 20 120 IF A$ = LEFT$(C$(I), LEN(A$)) THEN 150 130 NEXT 135 INPUT "ILLEGAL COMMAND - DO YOU NEED A LIST"; B$ 136 IF LEFT$(B$, 1) = "N" THEN 70 140 PRINT : FOR I = 1 TO 20 STEP 4 141 PRINT C$(I); TAB(12); C$(I + 1); TAB(22); C$(I + 2); TAB(32); C$(I + 3) 142 NEXT: PRINT : GOTO 70 150 ON I GOTO 200, 225, 250, 275, 290, 300, 325, 350, 375, 400 160 ON I - 10 GOTO 425, 450, 475, 500, 525, 540, 550, 575, 600, 625 170 PRINT "ERROR AT 170 - SHOULD NOT BE HERE" 180 STOP 200 REM-ABANDON 201 GOSUB 35000 210 GOTO 70 225 REM-CHART 226 GOSUB 3000 230 GOTO 70 250 REM-COMPUTER 251 GOSUB 5000 260 GOTO 70 275 REM-DAMAGES 276 GOSUB 8000 280 GOTO 70 290 REM - DESTRUCT 291 GOSUB 36000: GOTO 70 300 REM-DOCK 301 GOSUB 7000 310 GOTO 70 325 REM-IOLE 326 GOSUB 33000 330 IF J3 = 0 THEN 70 331 IF A2 <> 0 THEN 900 332 IF G(Q1, Q2) = 1000 THEN 750 340 GOSUB 1000 345 GOTO 70 350 REM-IMPULSE 351 GOSUB 13000 352 IF J3 = 0 THEN 70 353 GOTO 700 375 REM-LRSCAN 376 GOSUB 14000 377 GOTO 70 400 REM-NAVIGATE 401 GOSUB 34000 402 IF J3 = 0 THEN 70 410 GOTO 700 425 REM-PHASERS 426 GOSUB 20000 427 IF J3 = 0 THEN 70 428 GOSUB 1000 429 GOTO 70 450 REM-QUIT 455 GOTO 900 460 PRINT " TOO BAD...WE HATE TO LOSE GOOD ASTRONAUTS!" 465 GOTO 37010 475 REM-SHIELDS 476 GOSUB 26000 477 IF J3 = 0 THEN 70 478 IF A2 <> 0 THEN 900 479 GOSUB 1000 480 S9 = 0 485 GOTO 70 500 REM-SOS 501 GOSUB 11000 502 GOTO 70 525 REM-SRSCAN 526 GOSUB 29000 530 GOTO 70 540 REM - STATUS 541 PRINT 545 GOSUB 37000: GOTO 70 550 REM- TORPEDOS 551 GOSUB 21000 552 IF J3 = 0 THEN 70 555 GOTO 700 575 REM-TRANSFER 576 GOSUB 31000 580 IF J3 = 0 THEN 70 585 IF A2 <> 0 THEN 900 590 IF G(Q1, Q2) <> 1000 THEN 70 595 GOTO 750 600 REM-VISUAL 601 GOSUB 32000 602 IF J3 = 0 THEN 70 603 IF A2 <> 0 THEN 900 610 IF G(Q1, Q2) <> 1000 THEN 70 615 GOTO 750 625 REM-WARP 627 GOSUB 25000 630 GOTO 70 700 REM-AFTERMOVINGSTARSHIP 710 IF A2 <> 0 THEN 900 720 IF T1 <> 0 THEN GOSUB 9000 730 IF A2 <> 0 THEN 900 740 IF G(Q1, Q2) < 1000 THEN 790 750 GOSUB 2000 760 IF A2 <> 0 THEN 900 770 GOTO 740 790 GOSUB 1000 795 GOTO 70 900 REM-WE'RE FINISHED 901 PRINT : PRINT : INPUT "WOULD YOU LIKE TO TRY AGAIN"; A$ 910 IF LEFT$(A$, 1) = "Y" THEN 45 920 GOTO 460 940 REM-BEGINSUBROUTINES 1000 REM-ATTACK 1010 IF (C3 <> 0) AND (J4 = 0) THEN GOSUB 16000 1020 IF K3 = 0 THEN RETURN 1030 IF A2 <> 0 THEN RETURN 1040 P2 = 1 / I8 1050 J5 = 0 1060 PRINT 1070 IF C5$ = "DOCKED" THEN 1780 1080 H2 = 0: H3 = 0: C6 = 1 1090 IF S9 = 1 THEN C6 = .5 + .5 * RND(1) 1100 A3 = 0 1110 FOR L = 1 TO K3 1120 IF K6(L) < 0 THEN 1540 1130 A3 = 1 1140 D6 = .8 + .05 * RND(1) 1150 H4 = K6(L) * D6 ^ K8(L) 1160 IF (S4 = 0) AND (S9 = 0) THEN 1230 1170 P3 = .1: IF P2 * S3 > P3 THEN P3 = P2 * S3 1180 H5 = P3 * C6 * H4 + 1 1190 IF H5 > S3 THEN H5 = S3 1195 S3 = S3 - H5 1200 H4 = H4 - H5 1210 IF (P3 > .1) AND (H4 < .005 * E1) THEN 1540 1230 J5 = 1 1240 PRINT FNR(H4); "UNIT HIT ON THE "; S5$; " FROM "; 1250 J6 = K4(L): J7 = K5(L) 1260 IF Q$(J6, J7) = "K" THEN PRINT "KLINGON AT"; 1270 IF Q$(J6, J7) = "C" THEN PRINT "COMMANDER AT"; 1280 PRINT J6; "-"; J7 1290 IF H4 > H2 THEN H2 = H4 1300 H3 = H3 + H4 1310 IF H4 < (275 - 25 * S8) * (1 + .5 * RND(1)) THEN 1530 1320 N4 = 1 + INT(H4 / (500 + 100 * RND(1))) 1330 PRINT "***CRITICAL HIT--"; 1340 K9 = 1 1350 FOR W4 = 1 TO N4 1360 J9 = INT(12 * RND(1)) + 1 1370 C5(W4) = J9 1380 E3 = (H4 * D5) / (N4 * (75 + 25 * RND(1))) 1390 IF J9 = 6 THEN E3 = E3 / 3 1395 D4(J9) = D4(J9) + E3 1400 IF W4 = 1 THEN 1470 1420 FOR V = 1 TO W4 1430 IF J9 = C5(V - 1) THEN 1480 1440 NEXT V 1450 K9 = K9 + 1 1460 IF K9 = 3 THEN PRINT 1465 PRINT " AND "; 1470 PRINT D$(J9); 1480 NEXT W4 1490 PRINT " DAMAGED." 1500 IF D4(8) = 0 THEN 1530 1510 IF S4 <> 0 THEN PRINT "*** SHIELDS KNOCKED DOWN." 1520 S4 = 0 1530 E1 = E1 - H4 1540 NEXT L 1550 IF A3 = 0 THEN RETURN 1560 IF E1 <= 0 THEN 1750 1570 P4 = 100 * P2 * S3 + .5 1580 IF J5 <> 0 THEN 1610 1590 PRINT "KLINGONS ATTACK--SHIELD STRENGTH REDUCED TO "; 1600 GOTO 1650 1610 PRINT "ENERGY LEFT:"; FNS(E1); " SHIELDS "; 1620 IF S4 <> 0 THEN PRINT "UP,"; 1630 IF (S4 = 0) AND (D4(8) = 0) THEN PRINT "DOWN, "; 1640 IF D4(8) > 0 THEN PRINT "DAMAGED, "; 1650 PRINT INT(P4); "%" 1660 IF (H2 < 200) AND (H3 < 500) THEN 1800 1670 J8 = INT(H3 * RND(1) * .015) 1680 IF J8 < 2 THEN 1800 1690 PRINT 1700 PRINT "MCCOY - 'SICKBAY TO BRIDGE. WE SUFFERED "; 1710 PRINT J8; "CASUALTIES" 1720 PRINT " IN THAT LAST ATTACK'" 1730 C4 = C4 + J8 1740 GOTO 1800 1750 F9 = 5 1760 GOSUB 10000 1770 RETURN 1780 PRINT "*** KLINGONS ATTACK-- STARBASE SHIELDS PROTECT "; 1790 PRINT "THE "; S5$ 1800 FOR W4 = 1 TO K3 1810 K8(W4) = K7(W4) 1820 NEXT W4 1830 GOSUB 28000 1840 RETURN 2000 REM-AU TO VER 2001 PRINT 2010 IF J4 = 0 THEN 2050 2020 PRINT "*** RED ALERT! RED ALERT!" 2030 PRINT "***THE "; S5$; " HAS STOPPED IN A QUADRANT "; 2040 PRINT "CONTAINING A SUPERNOVA." 2050 PRINT "*** EMERGENCY AU TO -OVERRIDE ATTEMPTS TO HURL "; 2060 PRINT S5$ 2070 PRINT " SAFELY OUT OF THE QUADRANT." 2080 S2(Q1, Q2) = 1 2090 GOSUB 18000 2100 IF D4(6) = 0 THEN 2290 2110 PRINT 2120 PRINT "WARP ENGINES DAMAGED." 2130 PRINT 2140 PRINT "ATTEMPTING TO ENGAGE IMPULSE ENGINES..." 2150 IF D4(7) = 0 THEN 2190 2160 PRINT "IMPULSE ENGINES DAMAGED." 2165 F9 = 8 2170 GOSUB 10000 2180 RETURN 2190 P2 = .75 * E1 2200 D6 = .004 * (P2 - 50) 2210 D7 = 1.4142 + 1.2 * RND(1) 2220 D1 = D6 2230 IF D6 > D7 THEN D1 = D7 2240 T1 = D1 / .4 2250 D2 = 12 * RND(1) 2260 J4 = 0 2270 GOSUB 13200 2280 GOTO 2400 2290 W1 = 6 + 2 * RND(1) 2300 W2 = W1 * W1 2310 P2 = .75 * E1 2320 D6 = P2 / (W1 * W1 * W1 * (S4 + 1)) 2330 D7 = 1.4142 + 2 * RND(1) 2340 D1 = D6 2350 IF D6 > D7 THEN D1 = D7 2360 T1 = 10 * D1 / W2 2370 D2 = 12 * RND(1) 2380 J4 = 0 2390 GOSUB 34500 2400 IF J4 <> 0 THEN 2440 2410 F9 = 8 2420 GOSUB 10000 2430 RETURN 2440 IF R1 <> 0 THEN RETURN 2450 F9 = 1 2460 GOSUB 10000 2470 RETURN 3000 REM-CHART 3001 PRINT : PRINT " 1 2 3 4 5 6 7 8" 3010 PRINT " --- --- --- --- --- --- --- ---" 3020 FOR I = 1 TO 8 3030 PRINT I; " "; 3040 FOR J = 1 TO 8 3060 ON SGN(S2(I, J)) + 2 GOTO 3070, 3090, 3110 3065 PRINT "ERR AT 3065": STOP 3070 PRINT " .1."; 3080 GOTO 3160 3090 PRINT " ..."; 3100 GOTO 3160 3110 IF S2(I, J) > 1000 THEN 3150 3120 IF G(I, J) < 1000 THEN PRINT S7$(LEN(STR$(G(I, J)))); STR$(G(I, J)); 3130 IF G(I, J) = 1000 THEN PRINT " ***"; 3140 GOTO 3160 3150 PRINT S2(I, J) - 1000; 3160 NEXT J 3170 PRINT 3180 NEXT I: GOSUB 18400 3185 PRINT 3190 PRINT "THE "; S5$; " IS CURRENTLY IN "; G2$; " ("; Q1; "-"; Q2; ")" 3200 RETURN 4000 REM-CHOOSE 4001 FOR I = 1 TO 10: PRINT : NEXT: FOR I = 1 TO 41: PRINT "*"; : NEXT: PRINT 4002 PRINT "** **" 4003 PRINT "** WELCOME TO THE WORLD OF STAR TREK **" 4008 PRINT "** **" 4009 FOR I = 1 TO 41: PRINT "*"; : NEXT: PRINT 4010 PRINT : PRINT 4070 S8 = 0: L2 = 0 4090 PRINT "HOW LONG A GAME WOULD YOU LIKE"; 4095 INPUT A$ 4100 FOR I = 1 TO 3 4110 IF A$ = LEFT$(T$(I), LEN(A$)) THEN 4150 4120 NEXT I 4130 PRINT "WOULD YOU LIKE A SHORT, MEDIUM OR LONG GAME"; 4140 GOTO 4095 4150 L2 = I 4160 PRINT "ARE YOU A BEGINNER, NOVICE, SENIOR OR EXPERT PLAYER"; 4170 INPUT A$ 4180 FOR I = 1 TO 4 4190 IF A$ = LEFT$(S$(I), LEN(A$)) THEN 4220 4200 NEXT I 4210 GOTO 4160 4220 S8 = I 4230 INPUT "ENTER YOUR MISSION PASSWORD..."; X$ 4244 PRINT 4245 PRINT "....SETTING UP THE GALAXY...." 4250 J = RND(1) 4260 REM-INITIALIZE 4270 D5 = .5 * S8 4280 I2 = INT(L2 + 1 + RND(1) * 3) 4290 IF I2 > 5 THEN I2 = 5 4300 R3 = I2 4310 I5 = 7 * L2 4320 R5 = I5 4340 R7 = (S8 - 2 * RND(1) + 1) * S8 * .1 + .1 4350 IF R7 < .2 THEN R7 = R7 + .1 4360 I1 = INT(2 * R7 * I5) 4370 R1 = I1 4380 I4 = INT(S8 + .0625 * I1 * RND(1)) 4390 R2 = I4 4400 I3 = (I1 + 4 * I4) * I5 4410 R4 = I3 4420 RETURN 5000 REM-COMPUTE 5001 IF D4(11) = 0 THEN 5030 5010 PRINT "LIBRARY COMPUTER DISABLED" 5020 RETURN 5030 PRINT "----LIBRARY COMPUTER ACTIVE----" 5040 INPUT "PROGRAM NAME"; B$ 5050 FOR I = 1 TO 6 5060 IF B$ = LEFT$(C2$(I), LEN(B$)) THEN 5120 5070 NEXT 5080 PRINT "VALID PROGRAMS ARE:" 5090 PRINT " COURSE WCOST ICOST" 5100 PRINT " PEFFECT SCORE END" 5110 GOTO 5040 5120 ON I GOTO 5200, 5300, 5400, 5500, 5600, 5700 5200 REM-COURSE&DIRECTION 5210 INPUT "ENTER QUADRANT AND SECTOR - "; A3, A4 5220 IF (A3 <> INT(A3)) OR (A4 <> INT(A4)) THEN 5990 5221 IF A3 < 0 THEN 5040 5222 IF A3 = 0 THEN A3 = 10 * Q1 + Q2 5223 A3 = A3 + .5 5225 K = INT(A3 / 10) 5226 IF (K < 1) OR (K > 8) THEN 5990 5227 C6(1) = K: K = INT(A3 - C6(1) * 10) 5228 IF (K < 1) OR (K > 8) THEN 5990 5229 C6(2) = K: A4 = A4 + .5 5230 K = INT(A4 / 100) 5231 IF (K < 1) OR (K > 10) THEN 5990 5232 C6(1) = C6(1) + (K - 1) / 10: K = INT(A4 - K * 100) 5233 IF (K < 1) OR (K > 10) THEN 5990 5234 C6(2) = C6(2) + (K - 1) / 10 5235 X = Q1 + ((S6 - 1) / 10) - C6(1): Y = Q2 + ((S7 - 1) / 10) - C6(2) 5236 D1 = 0: D2 = 0: IF (X = 0) AND (Y = 0) THEN 5250 5237 D1 = SQR(X * X + Y * Y) 5238 IF X < 0 THEN Z7 = SGN(Y) * (3.1416 - ATN(ABS(Y / X))) 5239 IF X = 0 THEN Z7 = SGN(Y) * 1.5708 5240 IF X > 0 THEN Z7 = ATN(Y / X) 5245 D2 = 12 - Z7 * 1.9098593: IF D2 > 12 THEN D2 = D2 - 12 5250 PRINT "COURSE IS"; FNS(D2); " FOR A DISTANCE OF"; 5260 PRINT FNS(D1); "QUADRANTS.": GOTO 5040 5300 REM-COST FOR WARP DRIVE 5302 INPUT "ENTER DISTANCE AND WARP FACTOR"; D1, A4 5304 IF (D1 < 0) THEN 5040 5310 C7 = D1 * A4 * A4 * A4 5315 T1 = (10 * D1) / (A4 * A4) 5320 PRINT "IT WOULD TAKE"; FNS(T1); "STARDATES AND USE" 5325 PRINT FNR(C7); "UNITS OF ENERGY ("; FNR(C7 + C7); "IF SHIELDS ARE UP)" 5330 GOTO 5040 5400 REM-COST FOR IMPULSE POWER 5410 INPUT "ENTER DISTANCE..."; D1 5420 IF D1 < 0 THEN 5040 5430 C7 = 250 * D1 + 50: T1 = D1 / .4 5440 PRINT "IT WOULD TAKE"; FNR(T1); "STARDATES AND USE" 5450 PRINT C7; "UNITS OF ENERGY" 5460 GOTO 5040 5500 REM-PHASER EFFECTIVENESS 5510 INPUT "ENTER PHASER RANGE IN QUADRANTS"; A3 5520 IF A3 < 0 THEN 5040 5530 A3 = A3 * 10: C7 = (.9 ^ A3) * 100 5540 PRINT "PHASERS ARE "; LEFT$(STR$(C7), 5); "% EFFECTIVE AT THAT RANGE" 5550 GOTO 5040 5600 REM- SCORE 5610 GOSUB 23000 5620 GOTO 5040 5700 RETURN 5990 PRINT "FORMAT IS MN,XXYY...WHERE MN IS THE QUADRANT" 5991 PRINT "AND XXYY IS THE SECTOR...E.G. 64,0307 REFERS" 5992 PRINT "TO QUADRANT 6-4, SECTOR 3-7." 5993 PRINT "NOTE: SECTOR COORDINATES MUST BE 4 DIGITS." 5995 GOTO 5040 6000 REM - DEADKL 6001 IF T2$ <> "C" THEN 6100 6010 C3 = 0: PRINT "***COMMANDER AT"; 6020 FOR F = 1 TO R2 6030 IF (C1(F) = Q1) AND (C2(F) = Q2) THEN 6050 6040 NEXT F 6050 C1(F) = C1(R2): C2(F) = C2(R2): C1(R2) = 0: C2(R2) = 0 6060 R2 = R2 - 1: F1(2) = 1E+30 6070 IF R2 <> 0 THEN F1(2) = D0 - (I4 / R2) * LOG(RND(1)) 6080 K2 = K2 + 1 6090 GOTO 6120 6100 PRINT "***KLINGON AT"; 6110 K1 = K1 + 1 6120 PRINT A5; "-"; A6; "DESTROYED." 6130 Q$(A5, A6) = ".": R1 = R1 - 1 6140 IF R1 = 0 THEN RETURN 6150 R5 = R4 / (R1 + 4 * R2) 6160 G(Q1, Q2) = G(Q1, Q2) - 100 6170 FOR F = 1 TO K3 6180 IF (K4(F) = A5) AND (K5(F) = A6) THEN 6200 6190 NEXT F 6200 K3 = K3 - 1 6210 IF F > K3 THEN 6250 6220 FOR G = F TO K3 6230 K4(G) = K4(G + 1): K5(G) = K5(G + 1): K6(G) = K6(G + 1) 6235 K7(G) = K7(G + 1): K8(G) = K7(G) 6240 NEXT G 6250 K4(K3 + 1) = 0: K5(K3 + 1) = 0: K7(K3 + 1) = 0: K8(K3 + 1) = 0: K6(K3 + 1) = 0 6260 RETURN 7000 REM-DOCK 7001 IF C5$ = "DOCKED" THEN 7100 7010 IF B6 = 0 THEN 7020 7015 IF (ABS(S6 - B6) <= 1) AND (ABS(S7 - B7) <= 1) THEN 7040 7020 PRINT S5$; " NOT ADJACENT TO A BASE." 7030 RETURN 7040 C5$ = "DOCKED" 7050 PRINT "HELMSMAN SULU - 'DOCKING MANEUVER COMPLETED.'" 7060 E1 = I7: S3 = I8: T4 = I9: L1 = J1 7070 RETURN 7100 PRINT "MR. SULU - 'BUT CAPTAIN, WE'RE ALREADY DOCKED!'" 7110 RETURN 8000 REM-DREPORT 8001 J = 0 8003 PRINT 8005 FOR I = 1 TO 12 8010 IF D4(I) <= 0 THEN 8070 8020 IF J <> 0 THEN 8060 8030 PRINT " DEVICE"; SPC(12); "-REPAIR TIMES-" 8040 PRINT SPC(21); "IN FLIGHT DOCKED" 8050 J = 1 8060 PRINT " "; D$(I); TAB(23); FNS(D4(I)); TAB(33); FNS(D3 * D4(I)) 8070 NEXT I 8080 IF J = 0 THEN PRINT "MR. SPOCK - 'ALL DEVICES FUNCTIONAL, CAPTAIN'" 8090 RETURN 9000 REM-EVENTS 9001 M = 0: D7 = D0 + T1 9010 FOR L = 1 TO 5 9020 IF F1(L) > D7 THEN 9040 9030 M = L: D7 = F1(L) 9040 NEXT L 9050 X6 = D7 - D0: D0 = D7 9060 R4 = R4 - (R1 + 4 * R2) * X6 9070 R5 = R4 / (R1 + 4 * R2) 9080 IF R5 > 0 THEN 9120 9090 F9 = 2 9100 GOSUB 10000 9110 RETURN 9120 IF (D4(5) = 0) OR (C5$ = "DOCKED") THEN 9180 9130 IF (L1 >= X6) OR (D4(5) <= L1) THEN 9160 9140 F9 = 3: GOSUB 10000 9150 RETURN 9160 L1 = L1 - X6 9170 IF D4(5) <= X6 THEN L1 = J1 9180 R = X6 9190 IF C5$ = "DOCKED" THEN R = X6 / D3 9200 FOR L = 1 TO 12 9210 IF D4(L) <= 0 THEN 9230 9220 D4(L) = D4(L) - R 9225 IF D4(L) < 0 THEN D4(L) = 0 9226 IF D4(L) <> 0 THEN 9230 9227 PRINT : PRINT "DAMAGE CONTROL- '"; D$(L); " NOW OPERATIONAL.'" 9230 NEXT L 9240 IF M = 0 THEN RETURN 9250 T1 = T1 - X6 9260 ON M GOTO 9270, 9290, 9340, 9350, 9470 9270 REM-SUPERNOVA 9280 X2 = 0: Y2 = 0: GOSUB 27000 9285 F1(1) = D0 - .5 * I5 * LOG(RND(1)) 9286 IF G(Q1, Q2) = 1000 THEN RETURN 9287 GOTO 9001 9290 REM-TRACTOR BEAM 9291 IF R2 = 0 THEN 9330 9292 IF C5$ = "DOCKED" THEN 9325 9293 I = INT(RND(1) * R2) + 1 9294 Y6 = (C1(I) - Q1) ^ 2 + (C2(I) - Q2) ^ 2 9295 IF Y6 = 0 THEN 9325 9296 Y6 = SQR(Y6): T1 = .17778 * Y6 9297 PRINT : PRINT "***"; S5$; " CAUGHT IN LONG-RANGE TRACTOR BEAM--" 9298 Q1 = C1(I): Q2 = C2(I) 9299 S6 = FNB(1): S7 = FNB(1) 9300 PRINT " PULLED TO QUADRANT"; Q1; "-"; Q2; ", SECTOR"; S6; "-"; S7 9301 IF R6 <> 0 THEN PRINT "(REMAINDER OF IDLE PERIOD CANCELLED)" 9302 R6 = 0 9303 IF S4 <> 0 THEN 9320 9304 IF (D4(8) = 0) AND (S3 > 0) THEN 9310 9305 PRINT "(SHIELDS NOT CURRENTLY USABLE.)" 9307 GOTO 9320 9310 GOSUB 26500 9315 S9 = 0 9320 GOSUB 18000 9325 F1(2) = D0 + T1 - 1.5 * (I5 / R2) * LOG(RND(1)) 9326 GOTO 9001 9330 F1(2) = 1E+30: GOTO 9001 9340 D9(1) = D0: D9(2) = R1: D9(3) = R2: D9(4) = R3: D9(5) = R4: D9(6) = R5 9342 D9(7) = S1: D9(8) = B1: D9(9) = K1: D9(10) = K2 9343 FOR I = 1 TO 8: FOR J = 1 TO 8: D9(I - 1 + 8 * (J - 1) + 11) = G(I, J): NEXT J: NEXT I 9344 FOR I = 75 TO 84: D9(I) = C1(I - 74): NEXT 9345 FOR I = 85 TO 94: D9(I) = C2(I - 84): NEXT 9346 FOR I = 95 TO 99: D9(I) = B2(I - 94): NEXT 9347 FOR I = 100 TO 104: D9(I) = B3(I - 99): NEXT 9348 D9(105) = B4: D9(106) = B5 9349 S0 = 1: F1(3) = D0 - .3 * I5 * LOG(RND(1)): GOTO 9001 9350 REM - STARBASE ATTACK 9355 IF (R2 = 0) OR (R3 = 0) THEN 9400 9360 FOR I = 1 TO R3: FOR J = 1 TO R2: IF (B2(I) = C1(J)) AND (B3(I) = C2(J)) THEN 9410 9370 NEXT J: NEXT I 9380 F1(4) = D0 + .5 + 3 * RND(1) 9390 F1(5) = 1E+30: GOTO 9001 9400 F1(4) = 1E+30: F1(5) = 1E+30: GOTO 9001 9410 B4 = B2(I): B5 = B3(I) 9420 IF (B4 = Q1) AND (B5 = Q2) THEN 9380 9430 F1(5) = D0 + .5 + 3 * RND(1) 9440 F1(4) = F1(5) - .3 * I5 * LOG(RND(1)) 9450 IF D4(9) > 0 THEN 9001 9455 PRINT 9460 PRINT "LT. UHURA- 'CAPTAIN, THE STARBASE IN"; B4; "-"; B5 9461 PRINT " REPORTS THAT IT IS UNDER ATTACK AND CAN HOLD OUT" 9462 PRINT " ONLY UNTIL STARDATE"; FNR(F1(5)); "'" 9465 IF R6 = 0 THEN 9001 9466 PRINT 9467 INPUT "MR. SPOCK- 'CAPTAIN, SHALL WE CANCEL THE IDLE PERIOD"; B$ 9468 IF LEFT$(B$, 1) = "Y" THEN R6 = 0 9469 GOTO 9001 9470 REM - STARBASE DESTROYED 9475 F1(5) = 1E+30: IF (R2 = 0) OR (R3 = 0) THEN 9001 9485 K = INT(G(B4, B5) / 100): IF G(B4, B5) - K * 100 < 10 THEN 9001 9490 FOR I = 1 TO R2: IF (C1(I) = B4) AND (C2(I) = B5) THEN 9520 9510 NEXT: GOTO 9001 9520 IF S2(B4, B5) = -1 THEN S2(B4, B5) = 0 9530 IF S2(B4, B5) > 999 THEN S2(B4, B5) = S2(B4, B5) - 10 9540 IF (B4 <> Q1) OR (B5 <> Q2) THEN 9630 9550 FOR I = 1 TO K3: K = K4(I): L = K5(I) 9560 IF Q$(K, L) = "C" THEN 9570 9565 NEXT 9570 IF K6(I) < 25 + 50 * RND(1) THEN 9001 9580 Q$(B6, B7) = ".": B6 = 0: B7 = 0 9590 GOSUB 17000 9600 PRINT : PRINT "MR. SPOCK- 'CAPTAIN, I BELIEVE THE STARBASE HAS"; 9610 PRINT " BEEN DESTROYED.'" 9620 GOTO 9680 9630 IF (R3 = 1) OR (D4(9) > 0) THEN 9680 9640 PRINT 9650 PRINT "LT. UHURA- 'CAPTAIN, STARFLEET COMMAND REPORTS THAT" 9660 PRINT " THE STARBASE IN QUADRANT"; B4; "-"; B5; "HAS BEEN" 9670 PRINT " DESTROYED BY A KLINGON COMMANDER.'" 9680 G(B4, B5) = G(B4, B5) - 10 9690 IF R3 <= 1 THEN 9730 9700 FOR I = 1 TO R3: IF (B2(I) = B4) AND (B3(I) = B5) THEN 9720 9710 NEXT 9720 B2(I) = B2(R3): B3(I) = B3(R3) 9730 R3 = R3 - 1 9740 GOTO 9001 10000 REM-FINISH 10001 A2 = 1: PRINT : PRINT "IT IS STARDATE"; FNR(D0): PRINT 10010 ON F9 GOTO 10020, 10130, 10160, 10185, 10195, 10205, 10220, 10235 10015 ON F9 - 8 GOTO 10245, 10270, 10280 10020 REM-THE GAME HAS BEEN WON 10025 PRINT "YOU HAVE DESTROYED THE KLINGON INVASION FLEET" 10027 PRINT 10030 PRINT " ***THE FEDERATION IS SAVED***": G1 = 1 10035 IF (A1 = 0) OR (B1 <> 0) THEN 10110 10040 IF LEFT$(S5$, 1) <> "E" THEN 10110 10045 IF 3 * S1 + 35 * N1 + C4 >= 100 THEN 10110 10050 IF D0 - J2 <= 6 THEN 10070 10060 R8 = .1 * S8 * (S8 + 1) + .1 10065 IF (K1 + K2) / (D0 - J2) < R8 THEN 10110 10070 PRINT 10075 PRINT "IN FACT, YOU HAVE DONE SO WELL THAT STARFLEET COMMAND" 10076 IF S8 = 4 THEN 10090 10080 PRINT "PROMOTES YOU ONE STEP IN RANK, "; 10085 IF S8 = 1 THEN PRINT "FROM BEGINNER TO NOVICE CLASS!" 10086 IF S8 = 2 THEN PRINT "FROM NOVICE TO SENIOR CLASS!" 10087 IF S8 = 3 THEN PRINT "FROM SENIOR TO EXPERT CLASS!" 10088 PRINT " ***CONGRATULATIONS***": GOTO 10110 10090 PRINT "PROMOTES YOU TO 'COMMODORE EMERITUS'." 10095 PRINT 10100 PRINT "NOW YOU CAN RETIRE AND WRITE YOUR OWN STAR TREK GAME!" 10110 GOSUB 23000 10120 RETURN 10130 REM-FED RESOURCES DEPLETED 10135 PRINT "YOUR TIME HAS RUN OUT, AND THE" 10136 PRINT "FEDERATION HAS BEEN CONQUERED.": PRINT 10137 PRINT "YOUR STARSHIP IS NOW KLINGON PROPERY, AND YOU ARE PUT" 10138 PRINT "ON TRIAL AS A WAR CRIMINAL. ON THE BASIS OF YOUR RECORD," 10139 IF R1 * 3 > I1 THEN 10150 10140 PRINT "YOU ARE FOUND GUILTY AND SENTENCED TO DEATH!" 10145 A1 = 0: GOSUB 23000: RETURN 10150 PRINT "YOU ARE ACQUITTED": GOSUB 23000: RETURN 10160 REM- L.S. FAILURE 10165 PRINT "YOUR LIFE SUPPORT RESERVES HAVE RUN OUT, AND" 10170 PRINT "YOU WILL SOON DIE OF ASPHYXIATION" 10172 PRINT 10175 PRINT "YOUR STARSHIP IS A DERELICT IN SPACE." 10180 GOTO 10300 10185 REM-ENERGY GONE 10190 PRINT "YOUR ENERGY SUPPLY IS EXHAUSTED.": GOTO 10172 10195 REM-BATTLE DEFEAT 10200 PRINT "THE "; S5$; " HAS BEEN DESTROYED IN BATTLE." 10201 GOTO 10300 10205 PRINT "F9=6 INVALID": RETURN 10220 REM-NOVA 10225 PRINT "YOUR STARSHIP HAS BEEN DESTROYED BY A NOVA." 10230 PRINT "NICE SHOT, YOU HOCKEY PUCK!": GOTO 10300 10235 REM-SUPERNOVA 10240 PRINT "THE "; S5$; " HAS BEEN INCINERATED BY A SUPERNOVA." 10241 GOTO 10300 10245 REM-ABANDON(NO BASES) 10250 PRINT "YOU HAVE BEEN CAPTURED BY THE KLINGONS. IF YOU STILL" 10255 PRINT "HAD A STARBASE TO BE RETURNED TO, YOU WOULD HAVE BEEN" 10260 PRINT "REPATRIATED AND GIVEN ANOTHER CHANCE. SINCE YOU HAVE" 10265 PRINT "NO STARBASES, YOU WILL BE MERCILESSLY TORTURED TO DEATH!" 10266 GOTO 10300 10270 REM - SELF-DESTRUCT 10271 PRINT : PRINT "THE "; S5$; " IS NOW AN EXPANDING CLOUD" 10272 PRINT "OF SUB-A TO MIC PARTICLES...": GOTO 10300 10280 REM-NOT REMATERIALIZED 10285 PRINT "STARBASE WAS UNABLE TO RE-MATERIALIZE YOUR STARSHIP." 10300 PRINT 10310 IF LEFT$(S5$, 1) = "F" THEN S5$ = "" 10315 IF LEFT$(S5$, 1) = "E" THEN S5$ = "FARMER GREENE" 10316 A1 = 0 10320 IF R1 = 0 THEN 10355 10325 G3 = R4 / I3: B8 = (R1 + 2 * R2) / (I1 + 2 * I4) 10326 A3 = G3 / B8 10327 IF A3 < 1 + .5 + RND(1) THEN 10345 10330 PRINT "AS A RESULT OF YOUR ACTIONS, A TREATY WITH THE KLINGON" 10331 PRINT "EMPIRE HAS BEEN SIGNED. THE TERMS OF THE TREATY ARE" 10332 IF A3 < 3 * RND(1) THEN 10340 10335 PRINT "FAVORABLE TO THE FEDERATION.": PRINT 10336 PRINT "CONGRATULATIONS.": GOTO 10350 10340 PRINT "HIGHLY UNFAVORABLE TO THE FEDERATION.": GOTO 10350 10345 PRINT "THE FEDERATION WILL BE DESTROYED!" 10350 GOSUB 23000: RETURN 10355 PRINT "SINCE YOU TO OK THE LAST KLINGON WITH YOU, YOU ARE" 10360 PRINT "A MARTYR AND A HERO. SOMEDAY MAYBE THEY'LL ERECT" 10370 PRINT "A STATUE IN YOUR MEMORY. REST IN PEACE AND TRY NOT" 10380 PRINT "TO THINK ABOUT PIGEONS!": G1 = 1: A1 = 0 10390 GOSUB 23000: RETURN 11000 REM - HELP 11001 IF C5$ <> "DOCKED" THEN 11020 11010 PRINT "ENSIGN CHEKOV- 'BUT CAPTAIN, WE'RE ALREADY DOCKED!'" 11015 RETURN 11020 IF D4(9) = 0 THEN 11030 11025 PRINT "SUBSPACE RADIO DAMAGED...CANNOT TRANSMIT.": RETURN 11030 IF R3 <> 0 THEN 11050 11040 PRINT "LT. UHURA- 'CAPTAIN, I'M NOT GETTING ANY RESPONSE"; 11045 PRINT " FROM STARBASE!'": RETURN 11050 N1 = N1 + 1: IF B6 = 0 THEN 11070 11060 GOTO 11130 11070 D1 = 1E+30 11080 FOR L = 1 TO R3: X = 10 * SQR((B2(L) - Q1) ^ 2 + (B3(L) - Q2) ^ 2) 11090 IF X > D1 THEN 11110 11100 D1 = X: K = L 11110 NEXT L 11120 Q1 = B2(K): Q2 = B3(K): GOSUB 18000 11130 Q$(S6, S7) = "." 11135 PRINT 11140 PRINT "STARBASE IN QUADRANT"; Q1; "-"; Q2; "RESPONDS --"; 11145 PRINT " "; S5$; " DEMATERIALIZES." 11146 P2 = (1 - .98 ^ D1) ^ .333333 11150 FOR L = 1 TO 3 11155 IF L = 1 THEN PRINT "1ST "; 11160 IF L = 2 THEN PRINT "2ND "; 11170 IF L = 3 THEN PRINT "3RD "; 11180 PRINT "ATTEMPT TO RE-MATERIALIZE THE "; S5$; ". . . . ."; 11190 IF RND(1) > P2 THEN 11220 11200 PRINT "FAILS.": NEXT L 11210 F9 = 11: GOSUB 10000: RETURN 11220 FOR L = 1 TO 5: I = B6 + INT(3 * RND(1)) - 1 11230 IF (I < 1) OR (I > 10) THEN 11260 11235 J = B7 + INT(3 * RND(1)) - 1 11240 IF (J < 1) OR (J > 10) THEN 11260 11250 IF Q$(I, J) = "." THEN 11270 11260 NEXT L: PRINT "FAILS.": GOTO 11210 11270 PRINT "SUCCEEDS.": S6 = I: S7 = J: Q$(I, J) = LEFT$(S5$, 1) 11280 GOSUB 7000: PRINT "LT. UHURA- 'CAPTAIN, WE MADE IT!'": RETURN 12000 REM-HITEM 12001 P4 = 2: L5 = K3: N = 1 12010 FOR K = 1 TO L5 12020 IF H3(K) = 0 THEN 12240 12030 D6 = .9 + .01 * RND(1): H2 = H3(K) * D6 ^ K7(N) 12040 P3 = K6(N) 12050 P = ABS(P3): IF P4 * H2 < P THEN P = P4 * H2 12060 K6(N) = P3 - SGN(P3) * ABS(P) 12070 X8 = K4(N): Y8 = K5(N) 12080 IF H2 > 4.99 THEN 12100 12090 PRINT "VERY SMALL HIT ON ": GOTO 12110 12100 PRINT FNR(H2); "UNIT HIT ON "; 12110 M$ = Q$(X8, Y8) 12120 IF M$ = "K" THEN PRINT "KLINGON AT"; 12125 IF M$ = "C" THEN PRINT "COMMANDER AT"; 12130 PRINT X8; "-"; Y8 12140 IF K6(N) <> 0 THEN 12180 12150 A5 = X8: A6 = Y8: T2$ = Q$(X8, Y8): GOSUB 6000 12160 IF R1 <> 0 THEN 12250 12170 F9 = 1: GOSUB 10000: GOTO 12250 12180 IF K6(N) < 0 THEN 12240 12190 IF RND(1) < .9 THEN 12240 12200 IF K6(N) > (.4 + .4 * RND(1)) * P3 THEN 12240 12205 PRINT 12210 PRINT "***MR. SPOCK - 'CAPTAIN, THE VESSEL AT SECTOR"; 12215 PRINT X8; "-"; Y8 12220 PRINT " HAS JUST LOST ITS FIREPOWER.'" 12225 PRINT 12230 K6(N) = -K6(N) 12240 N = N + 1 12250 NEXT K 12260 RETURN 13000 REM - IMPULSE 13001 J3 = 0 13010 IF D4(7) <> 0 THEN 13250 13020 IF E1 <= 75 THEN 13070 13030 INPUT "ENTER COURSE AND DISTANCE"; D2, D1 13040 IF D2 < 0 THEN RETURN 13050 P3 = 50 + 250 * D1 13060 IF P3 < E1 THEN 13140 13070 PRINT 13080 PRINT "1ST OFFICER SPOCK- 'CAPTAIN, THE IMPULSE ENGINES" 13090 PRINT "REQUIRE 50 UNITS OF ENERGY TO ENGAGE, PLUS 250 UNITS" 13091 PRINT "PER "; 13100 IF E1 > 75 THEN 13120 13110 PRINT "QUADRANT. THEY ARE, THEREFORE, USELESS NOW.'": RETURN 13120 PRINT "QUADRANT. WE CAN GO, THEREFORE, A MAXIMUM OF "; 13130 PRINT FNR(.004 * (E1 - 50) - .05); "QUADRANTS.'": RETURN 13140 T1 = D1 / .4 13150 IF T1 < R5 THEN 13200 13160 PRINT "1ST OFFICER SPOCK- 'CAPTAIN, OUR SPEED UNDER IMPULSE" 13170 PRINT "POWER IS ONLY 4 SECTORS PER STARDATE. ARE YOU SURE" 13180 INPUT "WE DARE SPEND THE TIME'"; B$ 13190 IF LEFT$(B$, 1) <> "Y" THEN RETURN 13200 GOSUB 15000: J3 = 1 13210 IF A2 <> 0 THEN RETURN 13220 E1 = E1 - P3 13230 IF E1 > 0 THEN RETURN 13240 F9 = 4: GOSUB 10000: RETURN 13250 PRINT "IMPULSE ENGINES DAMAGED.": RETURN 14000 REM - LRSCAN 14001 N$ = " # " 14005 PRINT 14010 IF D4(2) <> 0 THEN 14180 14020 PRINT "L.R. SCAN FOR QUADRANT"; Q1; "-"; Q2: PRINT 14030 I = Q1 - 1: J = Q1 + 1: K = Q2 - 1: L = Q2 + 1 14040 FOR M = I TO J: FOR N = K TO L 14050 IF (M <= 0) OR (M > 8) THEN 14110 14060 IF (N <= 0) OR (N > 8) THEN 14110 14070 IF D4(11) = 0 THEN S2(M, N) = 1 14080 IF G(M, N) >= 1000 THEN PRINT " ***"; 14090 IF G(M, N) < 1000 THEN PRINT SPC(4 - LEN(STR$(G(M, N)))); G(M, N); 14100 GOTO 14120 14110 PRINT N$; 14120 NEXT N 14130 PRINT 14140 NEXT M 14150 IF D4(11) = 0 THEN RETURN 14155 PRINT 14160 PRINT "***WARNING*** - COMPUTER DISABLED - SCAN NOT RECORDED." 14170 RETURN 14180 PRINT "LONG RANGE SENSORS DAMAGED.": RETURN 15000 REM - MOVE 15001 A5 = (15 - D2) * .5235988 15010 D4 = -SIN(A5): D6 = COS(A5) 15020 B8 = ABS(D4) 15030 IF ABS(D6) > B8 THEN B8 = ABS(D6) 15040 D4 = D4 / B8: D6 = D6 / B8: T5 = 0: T6 = 0 15050 IF D0 + T1 < F1(2) THEN 15080 15060 T5 = 1: C5$ = "RED": D1 = D1 * (F1(2) - D0) / T1 + .1 15070 T1 = F1(2) - D0 + .00001 15080 Q$(S6, S7) = ".": X7 = S6: Y7 = S7: H9 = INT(10 * D1 * B8 + .5) 15090 IF H9 = 0 THEN 15115 15100 FOR L = 1 TO H9 15102 X7 = X7 + D4: X1 = INT(X7 + .5): Y7 = Y7 + D6: Y1 = INT(Y7 + .5) 15105 IF (X1 < 1) OR (X1 > 10) THEN 15150 15106 IF (Y1 < 1) OR (Y1 > 10) THEN 15150 15108 IF Q$(X1, Y1) = "O" THEN 15111 15109 IF Q$(X1, Y1) <> "." THEN 15125 15110 NEXT L 15111 D1 = .1 * SQR((S6 - X1) ^ 2 + (S7 - Y1) ^ 2) 15112 S6 = X1: S7 = Y1 15115 F4 = S6: F5 = S7 15116 IF Q$(X1, Y1) <> "O" THEN 15320 15120 T2 = FNA(1): T3 = FNA(1) 15122 Q1 = FNA(1): Q2 = FNA(1): S6 = FNB(1): S7 = FNB(1): PRINT 15123 PRINT "*** SPACE PORTAL ENTERED ***": GOTO 15307 15125 T6 = 1: K = 50 * D1 / T1: D1 = .1 * SQR((S6 - X1) ^ 2 + (S7 - Y1) ^ 2) 15127 IF (Q$(X1, Y1) = "K") OR (Q$(X1, Y1) = "C") THEN 15145 15129 PRINT : PRINT S5$; " BLOCKED BY "; 15130 IF Q$(X1, Y1) = "*" THEN PRINT "STAR AT"; 15131 IF Q$(X1, Y1) = "B" THEN PRINT "STARBASE AT"; 15132 PRINT " SECTOR"; X1; "-"; Y1; "...." 15133 PRINT "EMERGENCY S TO P REQUIRED"; FNR(K); "UNITS OF ENERGY." 15135 E1 = E1 - K 15137 S6 = INT(X7 - D4 + .5): F4 = S6: S7 = INT(Y7 - D6 + .5): F5 = S7 15140 IF E1 > 0 THEN 15320 15141 F9 = 4: GOSUB 10000: RETURN 15145 S6 = X1: S7 = Y1: GOSUB 22000: F4 = S6: F5 = S7: GOTO 15320 15150 IF K3 = 0 THEN 15165 15155 FOR L = 1 TO K3 15156 F3 = SQR((X1 - K4(L)) ^ 2 + (Y1 - K5(L)) ^ 2) 15158 K8(L) = .5 * (F3 + K7(L)): NEXT L 15160 IF G(Q1, Q2) <> 1000 THEN GOSUB 1000 15162 IF A2 <> 0 THEN RETURN 15165 X7 = 10 * (Q1 - 1) + S6: Y7 = 10 * (Q2 - 1) + S7 15170 X1 = INT(X7 + 10 * D1 * B8 * D4 + .5) 15175 Y1 = INT(Y7 + 10 * D1 * B8 * D6 + .5): L6 = 0 15180 L5 = 0 15185 IF X1 > 0 THEN 15195 15190 X1 = -X1 + 1: L5 = 1 15195 IF Y1 > 0 THEN 15210 15200 Y1 = -Y1 + 1: L5 = 1 15210 IF X1 <= 80 THEN 15220 15215 X1 = 161 - X1: L5 = 1 15220 IF Y1 <= 80 THEN 15230 15225 Y1 = 161 - Y1: L5 = 1 15230 IF L5 = 0 THEN 15240 15235 L6 = 1: GOTO 15180 15240 IF L6 = 0 THEN 15270 15260 PRINT : PRINT "*** MESSAGE FROM STARFLEET COMMAND.....STARDATE"; 15261 PRINT FNR(D0): PRINT : PRINT "'PERMISSION TO CROSS GALACTIC "; 15262 PRINT "PERIMETER IS HEREBY DENIED.'" 15263 PRINT " 'SHUT DOWN ENGINES IMMMEDIATELY!'" 15264 PRINT 15265 PRINT "SCOTT HERE - 'ENGINES SHUT DOWN AT "; 15266 Z1 = INT((X1 + 9) / 10): Z2 = INT((Y1 + 9) / 10) 15267 PRINT "QUADRANT"; Z1; "-"; Z2; ", "; 15268 PRINT "SECTOR"; X1 - 10 * (Z1 - 1); "-"; Y1 - 10 * (Z2 - 1); "'" 15270 IF T5 <> 0 THEN RETURN 15295 Q1 = INT((X1 + 9) / 10): Q2 = INT((Y1 + 9) / 10) 15296 S6 = X1 - 10 * (Q1 - 1): S7 = Y1 - 10 * (Q2 - 1) 15307 GOSUB 18400 15310 PRINT : PRINT "ENTERING THE "; G2$; " QUADRANT ("; Q1; "-"; Q2; ")" 15315 Q$(S6, S7) = LEFT$(S5$, 1): GOSUB 18000: RETURN 15320 Q$(S6, S7) = LEFT$(S5$, 1) 15321 IF L6 = 1 THEN RETURN 15325 IF K3 = 0 THEN 15390 15330 FOR L = 1 TO K3 15340 F3 = SQR((F4 - K4(L)) ^ 2 + (F5 - K5(L)) ^ 2) 15350 K8(L) = .5 * (K7(L) + F3) 15360 K7(L) = F3 15370 NEXT L 15380 GOSUB 28000 15390 GOSUB 17000: RETURN 16000 REM-MOVECOM 16001 A = 1: B = 1 16010 FOR K = 1 TO K3 16020 C = K4(K): D = K5(K) 16030 IF Q$(C, D) = "C" THEN 16050 16040 NEXT K 16050 N = 0: F = K6(K) + 100 * K3 16060 IF F > 1000 THEN N = INT(RND(1) * K7(K) + 1) 16065 IF ((C5$ = "DOCKED") AND ((B4 <> Q1) OR (B5 <> Q2))) THEN N = -S8 16070 IF N = 0 THEN N = INT(((F + 200 * RND(1)) / 150) - 5) 16071 IF N = 0 THEN RETURN 16072 IF (N > 0) AND (K7(K) < 1.5) THEN RETURN 16075 IF ABS(N) > S8 THEN N = SGN(N) * ABS(S8) 16080 T = ABS(N): P = S6 - C: Q = S7 - D 16085 IF 2 * ABS(P) < ABS(Q) THEN P = 0 16090 IF 2 * ABS(Q) < ABS(P) THEN Q = 0 16095 IF P <> 0 THEN P = SGN(P * N) 16100 IF Q <> 0 THEN Q = SGN(Q * N) 16105 R = C: S = D: Q$(C, D) = "." 16110 FOR L2 = 1 TO T: L = R + P: M = S + Q 16115 IF (L > 0) AND (L <= 10) THEN 16120 16117 ON SGN(N) + 2 GOTO 16240, 16165, 16165 16120 IF (M > 0) AND (M <= 10) THEN 16130 16125 ON SGN(N) + 2 GOTO 16240, 16135, 16135 16130 IF Q$(L, M) = "." THEN 16195 16135 IF (Q = B) OR (P = 0) THEN 16165 16140 M = S + B 16145 IF (M > 0) AND (M <= 10) THEN 16155 16150 ON SGN(N) + 2 GOTO 16240, 16160, 16160 16155 IF Q$(L, M) = "." THEN 16195 16160 B = -B 16165 IF (P = A) OR (Q = 0) THEN 16200 16170 L = R + A 16175 IF (L > 0) AND (L <= 10) THEN 16185 16180 ON SGN(N) + 2 GOTO 16240, 16190, 16190 16185 IF Q$(L, M) = "." THEN 16195 16190 A = -A: GOTO 16200 16195 R = L: S = M 16200 NEXT L2 16205 Q$(R, S) = "C" 16210 IF (R = C) AND (S = D) THEN RETURN 16215 K4(K) = R: K5(K) = S: K7(K) = SQR((S6 - R) ^ 2 + (S7 - S) ^ 2) 16220 K8(K) = K7(K): IF N > 0 THEN PRINT "***COMMANDER ADVANCES TO "; 16225 IF N < 0 THEN PRINT "***COMMANDER RETREATS TO "; 16230 PRINT " SECTOR"; R; "-"; S: GOSUB 28000: RETURN 16240 I = Q1 + INT((L + 9) / 10) - 1: J = Q2 + INT((M + 9) / 10) - 1 16245 IF (I < 1) OR (I > 8) THEN 16350 16250 IF (J < 1) OR (J > 8) THEN 16350 16260 FOR L3 = 1 TO R2 16265 IF (C1(L3) = I) AND (C2(L3) = J) THEN 16350 16270 NEXT L3: PRINT "***COMMANDER ESCAPES TO "; 16275 PRINT "QUADRANT"; I; "-"; J; " (AND REGAINS STRENGTH)" 16280 K4(K) = K4(K3): K5(K) = K5(K3): K7(K) = K7(K3): K8(K) = K8(K3) 16285 K6(K) = K6(K3): K3 = K3 - 1: C3 = 0 16290 IF C5$ <> "DOCKED" THEN GOSUB 17000 16300 GOSUB 28000 16310 G(Q1, Q2) = G(Q1, Q2) - 100: G(I, J) = G(I, J) + 100 16320 FOR L3 = 1 TO R2 16330 IF (C1(L3) = Q1) AND (C2(L3) = Q2) THEN 16340 16335 NEXT L3 16340 C1(L3) = I: C2(L3) = J: RETURN 16350 A = -A: B = -B: GOTO 16200 17000 REM - NEWCOND 17001 C5$ = "GREEN" 17010 IF E1 < 1000 THEN C5$ = "YELLOW" 17020 IF G(Q1, Q2) > 99 THEN C5$ = "RED" 17030 RETURN 18000 REM- NEW QUAD 18001 J4 = 1: B6 = 0: B7 = 0: K3 = 0: C3 = 0 18010 U = G(Q1, Q2) 18020 IF U > 999 THEN 18290 18030 K3 = INT(.01 * U): FOR A = 1 TO 10: FOR B = 1 TO 10: Q$(A, B) = ".": NEXT B: NEXT A 18040 Q$(S6, S7) = LEFT$(S5$, 1): U = G(Q1, Q2): IF U < 100 THEN 18150 18050 U = U - 100 * K3: FOR A = 1 TO K3 18060 S = FNB(1): K4(A) = S: T = FNB(1): K5(A) = T 18070 IF Q$(S, T) <> "." THEN 18060 18080 Q$(S, T) = "K": K7(A) = SQR((S6 - S) ^ 2 + (S7 - T) ^ 2): K8(A) = K7(A) 18090 K6(A) = RND(1) * 150 + 325: NEXT A 18100 IF R2 = 0 THEN 18140 18110 FOR A = 1 TO R2 18115 IF (C1(A) = Q1) AND (C2(A) = Q2) THEN 18130 18120 NEXT A: GOTO 18140 18130 Q$(S, T) = "C": K6(K3) = 1000 + 400 * RND(1): C3 = 1 18140 GOSUB 28000 18150 IF U < 10 THEN 18190 18160 U = U - 10 18170 B6 = FNB(1): B7 = FNB(1): IF Q$(B6, B7) <> "." THEN 18170 18180 Q$(B6, B7) = "B" 18190 GOSUB 17000: IF U < 1 THEN RETURN 18200 FOR A = 1 TO U 18210 S = FNB(1): T = FNB(1): IF Q$(S, T) <> "." THEN 18210 18220 Q$(S, T) = "*": NEXT A 18230 IF (T2 <> Q1) OR (T3 <> Q2) THEN RETURN 18240 S = FNB(1): T = FNB(1): IF Q$(S, T) <> "." THEN 18240 18250 Q$(S, T) = "O": PRINT 18260 PRINT "MR. SPOCK - 'CAPTAIN, THE SHORT-RANGE SENSORS DETECT A" 18270 PRINT "SPACE WARP SOMEWHERE IN THIS QUADRANT.'" 18280 RETURN 18290 FOR A = 1 TO 10: FOR B = 1 TO 10: Q$(A, B) = ".": NEXT B: NEXT A 18300 Q$(S6, S7) = LEFT$(S5$, 1): RETURN 18400 G4$ = "III": L = 2: IF Q2 >= 5 THEN 18420 18410 L = 1 18420 G2$ = G1$(2 * (Q1 - 1) + L): L = Q2 18425 IF L <= 4 THEN 18440 18430 L = Q2 - 4 18440 G3$ = "IV": IF L = 4 THEN 18460 18450 G3$ = LEFT$(G4$, L) 18460 G2$ = G2$ + " " + G3$: RETURN 19000 REM - NOVA 19001 IF RND(1) > .1 THEN 19015 19010 GOSUB 27000: RETURN 19015 Q$(A5, A6) = ".": PRINT "***STAR AT SECTOR"; A5; "-"; A6; "NOVAS." 19020 G(Q1, Q2) = G(Q1, Q2) - 1: S1 = S1 + 1 19025 B9 = 1: T6 = 1: T7 = 1: K = 0: X1 = 0: Y1 = 0 19030 H4(B9, 1) = A5: H4(B9, 2) = A6 19035 FOR M = B9 TO T6: FOR Q = 1 TO 3: FOR J = 1 TO 3 19040 IF J * Q = 4 THEN 19260 19045 J5 = H4(M, 1) + Q - 2: J6 = H4(M, 2) + J - 2 19050 IF (J5 < 1) OR (J5 > 10) THEN 19260 19055 IF (J6 < 1) OR (J6 > 10) THEN 19260 19060 IF Q$(J5, J6) = "." THEN 19260 19065 IF Q$(J5, J6) = "O" THEN 19260 19070 IF Q$(J5, J6) <> "*" THEN 19105 19075 IF RND(1) >= .1 THEN 19085 19080 X2 = J5: Y2 = J6: GOSUB 27000: RETURN 19085 T7 = T7 + 1: H4(T7, 1) = J5: H4(T7, 2) = J6: G(Q1, Q2) = G(Q1, Q2) - 1 19090 S1 = S1 + 1: PRINT "***STAR AT SECTOR"; J5; "-"; J6; "NOVAS." 19100 GOTO 19255 19105 IF Q$(J5, J6) <> "B" THEN 19140 19110 G(Q1, Q2) = G(Q1, Q2) - 10: FOR V = 1 TO R3 19115 IF (B2(V) <> Q1) OR (B3(V) <> Q2) THEN 19125 19120 B2(V) = B2(R3): B3(V) = B3(R3) 19125 NEXT V: R3 = R3 - 1: B6 = 0: B7 = 0: B1 = B1 + 1: GOSUB 17000 19130 PRINT "***STARBASE AT SECTOR"; J5; "-"; J6; "DESTROYED." 19135 GOTO 19255 19140 IF (S6 <> J5) OR (S7 <> J6) THEN 19190 19145 PRINT "***STARSHIP BUFFETED BY NOVA.": IF S4 <> 0 THEN 19155 19150 E1 = E1 - 1000: GOTO 19170 19155 IF S3 >= 1000 THEN 19180 19160 D6 = 1000 - S3: E1 = E1 - D6: GOSUB 17000: S3 = 0: S4 = 0 19165 PRINT "***STARSHIP SHIELDS KNOCKED OUT.": D4(8) = .005 * D5 * RND(1) * D6 19170 IF E1 > 0 THEN 19185 19175 F9 = 7: GOSUB 10000: RETURN 19180 S3 = S3 - 1000 19185 X1 = X1 + S6 - H4(M, 1): Y1 = Y1 + S7 - H4(M, 2): K = K + 1: GOTO 19260 19190 IF Q$(J5, J6) <> "C" THEN 19250 19195 FOR V = 1 TO K3 19200 IF (K4(V) = J5) AND (K5(V) = J6) THEN 19210 19205 NEXT V 19210 K6(V) = K6(V) - 800: IF K6(V) <= 0 THEN 19250 19215 N5 = J5 + J5 - H4(M, 1): N6 = J6 + J6 - H4(M, 2) 19220 PRINT "***COMMANDER AT SECTOR"; J5; "-"; J6; "DAMAGED"; 19225 IF (N5 < 1) OR (N5 > 10) OR (N6 < 1) OR (N6 > 10) THEN 19245 19230 PRINT " AND BUFFETED TO SECTOR"; N5; "-"; N6 19235 Q$(N5, N6) = "C": K4(V) = N5: K5(V) = N6 19240 K7(V) = SQR((S6 - N5) ^ 2 + (S7 - N6) ^ 2): K8(V) = K7(V) 19241 Q$(J5, J6) = "." 19245 PRINT : GOTO 19260 19250 A5 = J5: A6 = J6: T2$ = Q$(J5, J6): GOSUB 6000: GOTO 19260 19255 PRINT : Q$(J5, J6) = "." 19260 NEXT J: NEXT Q: NEXT M 19265 IF T6 = T7 THEN 19280 19270 B9 = T6 + 1: T6 = T7: GOTO 19035 19280 IF K = 0 THEN RETURN 19290 D1 = K * .1 19300 IF X1 <> 0 THEN X1 = SGN(X1) 19310 IF Y1 <> 0 THEN Y1 = SGN(Y1) 19320 I = 3 * (X1 + 1) + Y1 + 2 19330 D2 = C5(I) 19340 IF D2 = 0 THEN D1 = 0 19350 IF D1 = 0 THEN RETURN 19360 PRINT : PRINT "FORCE OF NOVA DISPLACES STARSHIP." 19370 GOSUB 15000: RETURN 20000 REM-PHASERS 20001 P = 2: J3 = 1 20020 IF C5$ <> "DOCKED" THEN 20030 20025 PRINT "PHASERS CAN'T BE FIRED THRU BASE SHIELDS.": GOTO 20080 20030 IF D4(3) = 0 THEN 20050 20040 PRINT "PHASER BANKS DAMAGED.": GOTO 20080 20050 IF S4 = 0 THEN 20060 20055 PRINT "SHIELDS MUST BE DOWN TO FIRE PHASERS.": GOTO 20080 20060 IF K3 > 0 THEN 20090 20065 PRINT 20070 PRINT "MR. SPOCK - 'CAPTAIN, THE SHORT-RANGE SENSORS" 20075 PRINT " DETECT NO KLINGONS IN THIS QUADRANT.'" 20080 J3 = 0: RETURN 20090 PRINT "PHASERS LOCKED ON TARGET. ENERGY AVAILABLE="; 20095 PRINT .01 * INT(100 * E1) 20100 INPUT "UNITS TO FIRE"; P1: IF P1 < E1 THEN 20120 20110 PRINT "ENERGY AVAILABLE ="; : GOTO 20095 20120 IF P1 > 0 THEN 20140 20130 J3 = 0: RETURN 20140 E1 = E1 - P1 20142 IF D4(11) = 0 THEN 20147 20144 P1 = P1 * (RND(1) * .5 + .5) 20145 PRINT : PRINT "COMPUTER MALFUNCTION HAMPERS PHASER ACCURACY.": PRINT 20147 E = P1: IF K3 = 0 THEN 20310 20150 E = 0: T5 = (K3 * (K3 + 1)) / 2 20160 FOR I = 1 TO K3: H3(I) = ((K3 + 1 - I) / T5) * P1 20170 H5(I) = ABS(K6(I)) / (P * .9 ^ K7(I)) 20180 IF H3(I) <= H5(I) THEN 20200 20190 E = E + (H3(I) - H5(I)): H3(I) = H5(I) 20200 NEXT I 20210 IF E = 0 THEN 20280 20220 FOR I = 1 TO K3: R7 = H5(I) - H3(I) 20230 IF R7 <= 0 THEN 20260 20240 IF R7 >= E THEN 20270 20250 H3(I) = H5(I): E = E - R7 20260 NEXT I: GOTO 20280 20270 H3(I) = H3(I) + E: E = 0 20280 GOSUB 12000 20290 IF (E <> 0) AND (A2 = 0) THEN 20310 20300 J3 = 1: RETURN 20310 PRINT FNR(E); "EXPENDED ON EMPTY SPACE.": J3 = 1: RETURN 21000 REM - PHOTONS 21001 J3 = 1: IF D4(4) = 0 THEN 21015 21010 PRINT "PHOTON TUBES DAMAGED.": GOTO 21035 21015 IF T4 <> 0 THEN 21025 21020 PRINT "NO TORPEDOS LEFT.": GOTO 21035 21025 INPUT " TORPEDO COURSE"; C6 21030 IF C6 >= 0 THEN 21040 21035 J3 = 0: RETURN 21040 INPUT "BURST OF 3"; B$: N = 1 21045 IF LEFT$(B$, 1) = "N" THEN 21066 21050 IF LEFT$(B$, 1) <> "Y" THEN 21040 21051 IF T4 > 2 THEN 21060 21055 PRINT "NO BURST. ONLY"; T4; " TORPEDOS LEFT.": GOTO 21035 21060 INPUT "SPREAD ANGLE (3 - 30 DEG)"; G2 21061 IF G2 < 0 THEN 21035 21062 IF (G2 < 3) OR (G2 > 30) THEN 21060 21063 G2 = FND(G2) 21065 N = 3 21066 REM - CONTINUE 21070 FOR Z6 = 1 TO N 21075 IF C5$ <> "DOCKED" THEN T4 = T4 - 1 21080 Z7 = Z6: R = RND(1) 21085 R = (R + RND(1)) * .5 - .5 21090 IF (R >= -.4) AND (R <= .4) THEN 21125 21095 R = (RND(1) + 1.2) * R: IF N = 3 THEN 21105 21100 PRINT "*** TORPEDO MISFIRES...": GOTO 21110 21105 PRINT "*** TORPEDO NUMBER"; Z6; "MISFIRES..." 21110 IF RND(1) > .2 THEN 21125 21115 PRINT "***PHOTON TUBES DAMAGED BY MISFIRE." 21120 D4(4) = D5 * (1 + 2 * RND(1)): GOTO 21440 21125 IF (S4 <> 0) OR (C5$ = "DOCKED") THEN R = R + .001 * S3 * R 21130 A3 = C6 + .25 * R: IF N = 1 THEN 21140 21135 A8 = (15 - A3 + (2 - Z6) * G2) * .5235988: PRINT 21137 PRINT "TRACK FOR TORPEDO NUMBER"; Z7; "--": GOTO 21145 21140 PRINT : PRINT " TORPEDO TRACK --": A8 = (15 - A3) * .5235988 21145 X4 = -SIN(A8): Y4 = COS(A8): B8 = ABS(X4) 21146 IF ABS(Y4) > ABS(X4) THEN B8 = ABS(Y4) 21150 X4 = X4 / B8: Y4 = Y4 / B8: X5 = S6: Y5 = S7 21155 FOR L9 = 1 TO 15: X5 = X5 + X4: A5 = INT(X5 + .5) 21160 IF (A5 < 1) OR (A5 > 10) THEN 21430 21165 Y5 = Y5 + Y4: A6 = INT(Y5 + .5) 21170 IF (A6 < 1) OR (A6 > 10) THEN 21430 21175 IF (L9 = 5) OR (L9 = 9) THEN PRINT 21180 PRINT FNR(X5); "-"; FNR(Y5); ", "; 21185 IF Q$(A5, A6) <> "." THEN 21195 21190 GOTO 21425 21195 PRINT : IF Q$(A5, A6) = "K" THEN 21220 21200 IF Q$(A5, A6) <> "C" THEN 21325 21205 IF RND(1) > .1 THEN 21220 21210 PRINT "***COMMANDER AT SECTOR"; A5; "-"; A6; "USES ANTI-PHOTON"; 21215 PRINT " DEVICE!": PRINT " TORPEDO NEUTRALIZED.": GOTO 21435 21220 FOR V = 1 TO K3 21225 IF (A5 = K4(V)) AND (A6 = K5(V)) THEN 21235 21230 NEXT V 21235 K = K6(V): W3 = 200 + 800 * RND(1) 21240 IF ABS(K) < W3 THEN W3 = ABS(K) 21245 K6(V) = K - SGN(K) * ABS(W3): IF K6(V) <> 0 THEN 21255 21250 T2$ = Q$(A5, A6): GOSUB 6000: GOTO 21435 21255 IF Q$(A5, A6) = "K" THEN PRINT "***KLINGON AT"; 21260 IF Q$(A5, A6) = "C" THEN PRINT "***COMMANDER AT"; 21265 PRINT A5; "-"; A6; 21270 A7 = A8 + 2.5 * (RND(1) - .5) 21275 W3 = ABS(-SIN(A7)): IF ABS(COS(A7)) > W3 THEN W3 = ABS(COS(A7)) 21280 X7 = -SIN(A7) / W3: Y7 = COS(A7) / W3 21285 P = INT(A5 + X7 + .5): Q = INT(A6 + Y7 + .5) 21290 IF (P < 1) OR (P > 10) OR (Q < 1) OR (Q > 10) THEN 21320 21295 IF Q$(P, Q) <> "." THEN 21320 21300 Q$(P, Q) = Q$(A5, A6): Q$(A5, A6) = ".": PRINT "DAMAGED--" 21305 PRINT " DISPLACED BY BLAST TO SECTOR"; P; "-"; Q 21310 K4(V) = P: K5(V) = Q: K7(V) = SQR((S6 - P) ^ 2 + (S7 - Q) ^ 2) 21311 K8(V) = K7(V) 21315 GOSUB 28000: GOTO 21435 21320 PRINT "DAMAGED, BUT NOT DESTROYED.": GOTO 21435 21325 IF Q$(A5, A6) <> "B" THEN 21365 21330 PRINT "***STARBASE DESTROYED...CONGRATULATIONS...YOU TURKEY!" 21335 IF S2(Q1, Q2) < 0 THEN S2(Q1, Q2) = 0 21340 FOR W = 1 TO R3 21345 IF (B2(W) <> Q1) OR (B3(W) <> Q2) THEN 21355 21350 B2(W) = B2(R3): B3(W) = B3(R3) 21355 NEXT W: Q$(A5, A6) = ".": R3 = R3 - 1: B6 = 0: B7 = 0 21360 G(Q1, Q2) = G(Q1, Q2) - 10: B1 = B1 + 1: GOSUB 17000: GOTO 21435 21365 IF Q$(A5, A6) <> "*" THEN 21405 21370 IF RND(1) > .15 THEN 21385 21375 PRINT "***STAR AT SECTOR"; A5; "-"; A6; "UNAFFECTED BY PHOTON BLAST" 21380 GOTO 21435 21385 X2 = A5: Y2 = A6: GOSUB 19000: A5 = X2: A6 = Y2 21390 IF G(Q1, Q2) = 1000 THEN RETURN 21395 IF A2 <> 0 THEN RETURN 21400 GOTO 21435 21405 PRINT : PRINT "AAAAAIIIIIIIEEEEEEEAAAAAAAUUUUUUGGGGGGGHHHHHHHHHH!!!" 21410 PRINT " HACK! HACK! COUGH! *CHOKE!*" 21415 PRINT : PRINT "MR. SPOCK- 'FASCINATING!'": Q$(A5, A6) = "." 21420 T2 = 0: T3 = 0: GOTO 21435 21425 NEXT L9 21430 PRINT : PRINT "TORPEDO; MISSED!" 21435 NEXT Z6 21440 IF R1 <> 0 THEN RETURN 21445 F9 = 1: GOSUB 10000: RETURN 22000 REM - RAM 22001 PRINT : PRINT "*** RED ALERT!! RED ALERT!! ***": PRINT 22010 PRINT "*** COLLISION IMMINENT!!": PRINT 22020 PRINT "*** "; S5$; " RAMS "; : W7 = 1: IF Q$(S6, S7) = "C" THEN W7 = 2 22030 IF W7 = 1 THEN PRINT "KLINGON AT "; 22040 IF W7 = 2 THEN PRINT "COMMANDER AT "; 22050 PRINT "SECTOR"; S6; "-"; S7: A5 = S6: A6 = S7: T2$ = Q$(S6, S7) 22060 GOSUB 6000: PRINT "***"; S5$; " HEAVILY DAMAGED." 22070 K = INT(5 + RND(1) * 20): PRINT "***SICKBAY REPORTS"; K; "CASUALTIES!" 22080 C4 = C4 + K: FOR L = 1 TO 12: I = RND(1) 22090 J = (3.5 * W7 * (RND(1) + I) + 1) * D5 22100 IF L = 6 THEN J = J / 3 22110 D4(L) = D4(L) + T1 + J: NEXT L: D4(6) = D4(6) - 3 22120 IF D4(6) < 0 THEN D4(6) = 0 22130 S4 = 0: IF R1 <> 0 THEN RETURN 22140 F9 = 1: GOSUB 10000: RETURN 23000 REM - SCORE 23001 P = D0 - J2: IF (P <> 0) AND (R1 = 0) THEN 23020 23010 IF P < 5 THEN P = 5 23020 N = (K2 + K1) / P: K = INT(500 * N + .5): L = 0 23030 IF G1 <> 0 THEN L = 100 * S8 23035 I = 0 23040 IF LEFT$(S5$, 1) = "E" THEN M = 0 23045 IF LEFT$(S5$, 1) = "F" THEN M = 1 23050 IF LEFT$(S5$, 1) = "" THEN M = 2 23060 IF A1 = 0 THEN I = 200 23070 J = 10 * K1 + 50 * K2 + K + L - I - 100 * B1 - 100 * M - 35 * N1 - 3 * S1 - C4 23080 PRINT : IF J <> 0 THEN 23100 23090 PRINT "AS YET, YOU HAVE NO SCORE.": RETURN 23100 PRINT "YOUR SCORE --": PRINT : IF K1 = 0 THEN 23120 23110 PRINT K1; TAB(5); "ORDINARY KLINGON(S) DESTROYED"; TAB(36); 10 * K1 23120 IF K2 = 0 THEN 23140 23130 PRINT K2; TAB(5); "KLINGON COMMANDER(S) DESTROYED"; TAB(36); 50 * K2 23140 IF K = 0 THEN 23160 23150 PRINT FNR(N); TAB(5); "KLINGONS PER STARDATE, AVERAGE"; 23155 PRINT TAB(36); K 23160 IF S1 = 0 THEN 23180 23170 PRINT S1; TAB(5); "STAR(S) DESTROYED"; TAB(36); -3 * S1 23180 IF B1 = 0 THEN 23200 23190 PRINT B1; TAB(5); "STARBASES DESTROYED"; TAB(36); -100 * B1 23200 IF N1 = 0 THEN 23220 23210 PRINT N1; TAB(5); "SOS CALL(S) TO A STARBASE"; TAB(36); -35 * N1 23220 IF C4 = 0 THEN 23240 23230 PRINT C4; TAB(5); "CASUALTIES INCURRED"; TAB(36); -C4 23240 IF M = 0 THEN 23260 23250 PRINT M; TAB(5); "SHIP(S) LOST OR DESTROYED"; TAB(36); -100 * M 23260 IF A1 <> 0 THEN 23280 23270 PRINT "PENALTY FOR GETTING YOURSELF KILLED"; TAB(36); -200 23280 IF G1 = 0 THEN 23300 23290 PRINT TAB(5); "BONUS FOR WINNING "; S$(S8); " GAME"; TAB(36); L 23300 PRINT TAB(5); "-------------------------------------" 23310 PRINT TAB(28); " TO TAL"; TAB(36); J; "**": RETURN 24000 REM-SETUP 24001 A2 = 0: G1 = 0: GOSUB 4000: S5$ = "ENTERPRISE" 24010 I7 = 5000: E1 = I7: I8 = 2500: S3 = I8: S4 = 0: S9 = S4: J1 = 4: L1 = J1 24020 Q1 = FNA(1): Q2 = FNA(1): S6 = FNB(1): S7 = FNB(1): I9 = 10: T4 = I9 24030 W1 = 5: W2 = 25: FOR I = 1 TO 12: D4(I) = 0: NEXT 24040 J2 = 100 * INT(31 * RND(1) + 20): D0 = J2: K1 = 0: K2 = 0: N1 = 0: N2 = 0: R6 = 0: C4 = 0 24050 A1 = 1: D3 = .25: FOR I = 1 TO 8: FOR J = 1 TO 8: S2(I, J) = 0: NEXT J: NEXT I 24060 F1(1) = D0 - .5 * I5 * LOG(RND(1)): F1(5) = 1E+30 24070 F1(2) = D0 - 1.5 * (I5 / R2) * LOG(RND(1)): I6 = 0 24080 F1(3) = D0 - .3 * I5 * LOG(RND(1)): F1(4) = D0 - .3 * I5 * LOG(RND(1)) 24090 FOR I = 1 TO 8: FOR J = 1 TO 8: K = INT(RND(1) * 9 + 1): I6 = I6 + K 24100 G(I, J) = K: NEXT J: NEXT I: S1 = 0 24110 FOR I = 1 TO I2 24120 X = INT(RND(1) * 6 + 2): Y = INT(RND(1) * 6 + 2) 24130 IF G(X, Y) >= 10 THEN 24120 24140 IF I < 2 THEN 24180 24150 K = I - 1: FOR J = 1 TO K: D1 = SQR((B2(J) - X) ^ 2 + (B3(J) - Y) ^ 2) 24160 IF D1 < 2 THEN 24120 24170 NEXT J 24180 B2(I) = X: B3(I) = Y: S2(X, Y) = -1: G(X, Y) = G(X, Y) + 10: NEXT I 24190 B1 = 0: K = I1 - I4: L = INT(.25 * S8 * (9 - L2) + 1) 24200 M = INT((1 - RND(1) ^ 2) * L): IF M > K THEN M = K 24210 N = 100 * M 24220 X = FNA(1): Y = FNA(1): IF G(X, Y) + N > 999 THEN 24220 24230 G(X, Y) = G(X, Y) + N: K = K - M: IF K <> 0 THEN 24200 24240 FOR I = 1 TO I4 24250 X = FNA(1): Y = FNA(1): IF (G(X, Y) < 99) AND (RND(1) < .75) THEN 24250 24260 IF G(X, Y) > 899 THEN 24250 24270 IF I = 1 THEN 24300 24280 M = I - 1: FOR J = 1 TO M: IF (C1(J) = X) AND (C2(J) = Y) THEN 24250 24290 NEXT J 24300 G(X, Y) = G(X, Y) + 100: C1(I) = X: C2(I) = Y: NEXT I 24305 I = INT(D0): PRINT : S0 = 0 24310 T2 = FNA(1): T3 = FNA(1): IF G(T2, T3) < 100 THEN 24310 24320 IF S8 <> 1 THEN 24440 24330 PRINT "IT IS STARDATE"; I; "...THE ORGANIAN PEACE TREATY BETWEEN" 24340 PRINT "THE UNITED FEDERATION OF PLANETS AND THE KLINGON EMPIRE" 24350 PRINT "HAS COLLAPSED AND THE FEDERATION IS BEING ATTACKED BY A" 24360 PRINT "DEADLY KLINGON INVASION FLEET. AS CAPTAIN OF THE STARSHIP" 24370 PRINT "U.S.S. ENTERPRISE, IT IS YOUR MISSION TO SEEK OUT AND" 24380 PRINT "DESTROY THIS INVASION FOR CE OF"; I1; "BATTLE CRUISERS." 24390 PRINT : PRINT "YOU HAVE AN INITIAL ALLOTMENT OF"; INT(I5); 24400 PRINT "STARDATES": PRINT "TO COMPLETE YOUR MISSION." 24410 PRINT "AS THE MISSION PROCEEDS, YOU MAY BE GIVEN MORE TIME." 24420 PRINT : PRINT "YOU WILL HAVE"; I2; "SUPPORTING STARBASE(S).": PRINT 24430 GOTO 24515 24440 PRINT "STARDATE.............."; I 24450 PRINT "NUMBER OF KLINGONS...."; I1 24460 PRINT "NUMBER OF STARDATES..."; INT(I5) 24470 PRINT "NUMBER OF STARBASES..."; I2 24480 PRINT "STARBASE LOCATIONS...."; 24490 FOR I = 1 TO I2: PRINT B2(I); "-"; B3(I); 24500 IF I <> I2 THEN PRINT ", "; 24510 NEXT I: PRINT : PRINT 24515 GOSUB 18400 24520 PRINT "THE "; S5$; " IS CURRENTLY IN THE "; G2$; " QUADRANT." 24530 GOSUB 18000: RETURN 25000 REM - SETWARP 25010 INPUT "WARP FACTOR"; K 25020 PRINT 25025 IF K < 1 THEN 25140 25026 IF K > 10 THEN 25150 25030 J = W1: W1 = K: W2 = W1 * W1 25040 IF (W1 <= J) OR (W1 <= 6) THEN 25070 25050 IF W1 <= 8 THEN 25080 25060 IF W1 > 8 THEN 25100 25070 PRINT "ENSIGN CHEKOV - 'WARP FACTOR"; W1; "CAPTAIN'": RETURN 25080 PRINT "ENGINEER SCOTT - 'AYE, BUT OUR MAXIMUM SAFE SPEED"; 25090 PRINT " IS WARP 6.'": RETURN 25100 IF W1 = 10 THEN 25130 25110 PRINT "ENGINEER SCOTT-'AYE, CAPTAIN, BUT OUR ENGINES MAY NOT "; 25120 PRINT "TAKE IT.'": RETURN 25130 PRINT "ENGINEER SCOTT-'AYE, CAPTAIN, WE'LL GIVE IT A TRY.'": RETURN 25140 PRINT "ENSIGN CHEKOV-'WE CAN'T GO BELOW WARP 1, CAPTAIN.'": RETURN 25150 PRINT "ENSIGN CHEKOV-'OUR TO P SPEED IS WARP 10, CAPTAIN.'" 25160 RETURN 26000 REM - SHIELDS 26001 J3 = 0: IF D4(8) <> 0 THEN 26600 26010 IF S4 <> 0 THEN 26530 26500 INPUT "SHIELDS ARE DOWN. DO YOU WANT THEM UP"; B$ 26510 IF LEFT$(B$, 1) = "Y" THEN 26560 26520 RETURN 26530 INPUT "SHIELDS ARE UP. DO YOU WANT THEM DOWN"; B$ 26540 IF LEFT$(B$, 1) = "Y" THEN 26590 26550 RETURN 26560 S4 = 1: S9 = 1: IF C5$ <> "DOCKED" THEN E1 = E1 - 50 26570 PRINT "SHIELDS RAISED.": IF E1 <= 0 THEN 26610 26580 J3 = 1: RETURN 26590 S4 = 0: S9 = 1: PRINT "SHIELDS LOWERED.": J3 = 1: RETURN 26600 PRINT "SHIELDS DAMAGED AND DOWN.": RETURN 26610 PRINT : PRINT "SHIELDS USE UP LAST OF THE ENERGY." 26620 F9 = 4: GOSUB 10000: RETURN 27000 REM - SUPERNOVA 27001 IF X2 <> 0 THEN 27100 27010 N = INT(RND(1) * I6 + 1): FOR X = 1 TO 8: FOR Y = 1 TO 8 27020 N = N - (G(X, Y) - INT(G(X, Y) / 10) * 10): IF N <= 0 THEN 27040 27030 NEXT Y: NEXT X: RETURN 27040 IF (X <> Q1) OR (Y <> Q2) THEN 27150 27050 IF J4 <> 0 THEN 27150 27060 N = INT(RND(1) * (G(X, Y) - INT(G(X, Y) / 10) * 10)) + 1 27070 FOR X3 = 1 TO 10: FOR Y3 = 1 TO 10: IF Q$(X3, Y3) <> "*" THEN 27090 27080 N = N - 1: IF N = 0 THEN 27100 27090 NEXT Y3: NEXT X3 27100 PRINT : PRINT "*** RED ALERT!! RED ALERT!! ***" 27105 X3 = X2: Y3 = Y2 27110 PRINT "*** INCIPIENT SUPERNOVA DETECTED AT SECTOR"; X3; "-"; Y3 27120 X = Q1: Y = Q2: K = (X2 - S6) ^ 2 + (Y2 - S7) ^ 2 27130 IF K > 1.5 THEN 27180 27140 PRINT "*** EMERGENCY AU TO -OVERRIDE JAMMED ***": A2 = 1: GOTO 27180 27150 IF D4(9) <> 0 THEN 27180 27160 PRINT : PRINT "MESSAGE FROM STARFLEET COMMAND...STARDATE"; INT(D0) 27170 PRINT "'SUPERNOVA IN QUADRANT"; X; "-"; Y; 27175 PRINT "....CAUTION ADVISED'" 27180 N = G(X, Y): R = INT(N / 100): Q = 0 27190 IF (X <> Q1) OR (Y <> Q2) THEN 27210 27200 K3 = 0: C3 = 0 27210 IF R = 0 THEN 27270 27220 R1 = R1 - R: IF R2 = 0 THEN 27270 27230 FOR L = 1 TO R2: IF (C1(L) <> X) OR (C2(L) <> Y) THEN 27260 27240 C1(L) = C1(R2): C2(L) = C2(R2): C1(R2) = 0: C2(R2) = 0 27250 R2 = R2 - 1: R = R - 1: Q = 1: IF R2 = 0 THEN F1(2) = 1E+30 27260 NEXT L 27270 IF R3 = 0 THEN 27310 27280 FOR L = 1 TO R3: IF (B2(L) <> X) OR (B3(L) <> Y) THEN 27300 27290 B2(L) = B2(R3): B3(L) = B3(R3): B2(R3) = 0: B3(R3) = 0: R3 = R3 - 1 27300 NEXT L 27310 IF X2 = 0 THEN 27350 27320 N = G(X, Y) - INT(G(X, Y) / 100) * 100 27330 S1 = S1 + (N - INT(N / 10) * 10): B1 = B1 + INT(N / 10) 27340 K1 = K1 + R: K2 = K2 + Q 27350 IF (S2(X, Y) <> 0) AND (D4(9) <> 0) THEN S2(X, Y) = 1000 + G(X, Y) 27360 IF (D4(9) = 0) OR ((Q1 = X) AND (Q2 = Y)) THEN S2(X, Y) = 1 27370 G(X, Y) = 1000 27380 IF (R1 <> 0) OR ((X = Q1) AND (Y = Q2)) THEN 27430 27390 PRINT : PRINT "MR. SPOCK- 'CAPTAIN, A SUPERNOVA IN QUADRANT"; 27400 PRINT X; "-"; Y; "HAS JUST DESTROYED THE LAST OF THE KLINGONS.'" 27420 F9 = 1: GOSUB 10000: RETURN 27430 IF A2 = 0 THEN RETURN 27440 F9 = 8: GOSUB 10000: RETURN 28000 REM - SORTKL 28001 IF K3 <= 1 THEN RETURN 28005 Z4 = 0 28010 FOR O = 1 TO K3 - 1: IF K7(O) <= K7(O + 1) THEN 28080 28020 K = K7(O): K7(O) = K7(O + 1): K7(O + 1) = K 28030 K = K8(O): K8(O) = K8(O + 1): K8(O + 1) = K 28040 K = K4(O): K4(O) = K4(O + 1): K4(O + 1) = K 28050 K = K5(O): K5(O) = K5(O + 1): K5(O + 1) = K 28060 K = K6(O): K6(O) = K6(O + 1): K6(O + 1) = K 28070 Z4 = 1 28080 NEXT O 28090 IF Z4 <> 0 THEN 28005 28100 RETURN 29000 REM-SRSCAN 29001 IF D(1) <> 0 THEN 29230 29010 PRINT : PRINT " 1 2 3 4 5 6 7 8 9 10" 29020 FOR I = 1 TO 10: IF I < 10 THEN PRINT " "; 29030 PRINT I; : FOR J = 1 TO 10: PRINT Q$(I, J); " "; : NEXT J 29040 ON I GOTO 29050, 29060, 29080, 29090, 29140 29045 ON I - 5 GOTO 29150, 29160, 29170, 29200, 29210 29050 PRINT " STARDATE "; FNR(D0): GOTO 29220 29060 IF C5$ <> "DOCKED" THEN GOSUB 17000 29070 PRINT " CONDITION "; C5$: GOTO 29220 29080 PRINT " POSITION "; Q1; "-"; Q2; ", "; S6; "-"; S7: GOTO 29220 29090 PRINT " LIFE SUPPORT "; : IF D4(5) <> 0 THEN 29110 29100 PRINT "ACTIVE": GOTO 29220 29110 IF C5$ <> "DOCKED" THEN 29130 29120 PRINT "DAMAGED, SUPPORTED BY STARBASE": GOTO 29220 29130 PRINT "DAMAGED, RESERVES="; FNS(L1): GOTO 29220 29140 PRINT " WARP FACTOR "; FNR(W1): GOTO 29220 29150 PRINT " ENERGY"; SPC(8); .01 * INT(100 * E1): GOTO 29220 29160 PRINT " TORPEDOS "; T4: GOTO 29220 29170 PRINT " SHIELDS "; : B$ = "DOWN,": IF S4 <> 0 THEN B$ = "UP," 29180 IF D4(8) > 0 THEN B$ = "DAMAGED," 29190 PRINT B$; INT(100 * S3 / I8 + .5); "%": GOTO 29220 29200 PRINT " KLINGONS LEFT "; R1: GOTO 29220 29210 PRINT " TIME LEFT "; FNS(R5) 29220 NEXT I: RETURN 29230 PRINT "SHORT RANGE SENSORS DAMAGED.": RETURN 30000 REM - TIMEWARP 30001 PRINT : PRINT "*** TIME WARP ENTERED ***": PRINT "YOU ARE TRAVELING"; 30010 IF S0 <> 0 THEN 30050 30020 T1 = -.5 * I5 * LOG(RND(1)) 30030 PRINT "FORWARD IN TIME"; FNR(T1); "STARDATES." 30040 F1(2) = F1(2) + T1: GOTO 30200 30050 M = D0: D0 = D9(1) 30060 PRINT "BACKWARD IN TIME"; FNR(M - D0); "STARDATES.": S0 = 0 30070 R1 = D9(2): R2 = D9(3): R3 = D9(4): R4 = D9(5): R5 = D9(6) 30080 S1 = D9(7): B1 = D9(8): K1 = D9(9): K2 = D9(10) 30090 FOR I = 1 TO 8: FOR J = 1 TO 8: G(I, J) = D9(I - 1 + 8 * (J - 1) + 11): NEXT J: NEXT I 30100 FOR I = 75 TO 84: C1(I - 74) = D9(I): NEXT 30110 FOR I = 85 TO 94: C2(I - 84) = D9(I): NEXT 30120 FOR I = 95 TO 99: B2(I - 94) = D9(I): NEXT 30130 FOR I = 100 TO 104: B3(I - 99) = D9(I): NEXT: B4 = D9(105): B5 = D9(106) 30140 F1(1) = D0 - .5 * I5 * LOG(RND(1)) 30150 IF R2 <> 0 THEN F1(2) = D0 - (I5 / R2) * LOG(RND(1)) 30160 F1(3) = D0 - .5 * I5 * LOG(RND(1)) 30170 FOR I = 1 TO 8: FOR J = 1 TO 8: IF 1 < S2(I, J) THEN S2(I, J) = 1 30180 NEXT J: NEXT I 30185 PRINT 30190 PRINT "SPOCK HAS RECONSTRUCTED A CORRECT STAR CHART FROM MEMORY." 30200 GOSUB 18000: RETURN 31000 REM - TRANSFER 31001 J3 = 0 31010 IF D4(12) <> 0 THEN 31120 31020 INPUT "NUMBER OF UNITS TO SHIELDS"; Z3 31030 IF Z3 < 0 THEN RETURN 31040 IF E1 + S3 - Z3 > 0 THEN 31060 31050 PRINT "SCOTT HERE- 'WE ONLY HAVE"; FNR(E1 + S3); "UNITS LEFT.'" 31051 RETURN 31060 E1 = E1 + S3 - Z3: S3 = Z3: PRINT "--ENERGY TRANSFER COMPLETE--" 31070 PRINT "(SHIP ENERGY="; FNR(E1); " SHIELD ENERGY="; FNR(S3); ")" 31075 J3 = 1 31080 T1 = .1: P5 = (K3 + 4 * C3) / 48: IF P5 < .1 THEN P5 = .1 31090 IF P5 > RND(1) THEN GOSUB 1000 31100 IF A2 <> 0 THEN RETURN 31110 GOSUB 9000: RETURN 31120 PRINT "TRANSFER PANEL DAMAGED.": RETURN 32000 REM - VISUAL 32001 INPUT "WHICH DIRECTION"; Z 32005 PRINT 32010 J3 = 0: IF Z < 0 THEN RETURN 32012 IF Z <= 12 THEN 32020 32014 PRINT "DIRECTIONS ARE FROM 0 TO 12 ONLY": GOTO 32001 32020 T1 = .05: P = (K3 + 4 * C3) / 48: IF P < .05 THEN P = .05 32030 IF P > RND(1) THEN GOSUB 1000 32040 IF A2 <> 0 THEN RETURN 32050 GOSUB 9000: J3 = 1: IF A2 <> 0 THEN RETURN 32080 D5 = INT((Z / 12) * 8 + 1.5): IF D5 > 8 THEN D5 = 1 32085 FOR I = 1 TO 5: FOR J = 1 TO 5: V$(I, J) = " ": NEXT J: NEXT I: N = 0 32087 V$(3, 3) = LEFT$(S5$, 1) 32090 ON D5 GOTO 32100, 32130, 32150, 32170, 32190, 32220, 32260, 32300 32100 I = S6 - 2: J = S7 - 2: V$(1, 1) = Q$: IF (J > 0) AND (I > 0) THEN V$(1, 1) = Q$(I, J) 32110 I = S6 - 1: J = S7 - 1: V$(2, 2) = Q$: IF (I > 0) AND (J > 0) THEN V$(2, 2) = Q$(I, J) 32120 N = N + 1: IF N = 3 THEN 32350 32125 I = S6 - 2: V$(1, 2) = Q$: IF (I > 0) AND (J > 0) THEN V$(1, 2) = Q$(I, J) 32130 I = S6 - 2: V$(1, 3) = Q$: IF I > 0 THEN V$(1, 3) = Q$(I, S7) 32135 I = S6 - 1: V$(2, 3) = Q$: IF I > 0 THEN V$(2, 3) = Q$(I, S7) 32140 N = N + 1: IF N = 3 THEN 32350 32145 I = S6 - 2: J = S7 + 1: V$(1, 4) = Q$: IF (I > 0) AND (J < 11) THEN V$(1, 4) = Q$(I, J) 32150 I = S6 - 2: J = S7 + 2: V$(1, 5) = Q$: IF (I > 0) AND (J < 11) THEN V$(1, 5) = Q$(I, J) 32155 I = S6 - 1: J = S7 + 1: V$(2, 4) = Q$: IF (I > 0) AND (J < 11) THEN V$(2, 4) = Q$(I, J) 32160 N = N + 1: IF N = 3 THEN 32350 32165 J = S7 + 2: V$(2, 5) = Q$: IF (I > 0) AND (J < 11) THEN V$(2, 5) = Q$(I, J) 32170 J = S7 + 2: V$(3, 5) = Q$: IF J < 11 THEN V$(3, 5) = Q$(S6, J) 32175 J = S7 + 1: V$(3, 4) = Q$: IF J < 11 THEN V$(3, 4) = Q$(S6, J) 32180 N = N + 1: IF N = 3 THEN 32350 32185 I = S6 + 1: J = S7 + 2: V$(4, 5) = Q$: IF (I < 11) AND (J < 11) THEN V$(4, 5) = Q$(I, J) 32190 I = S6 + 2: J = S7 + 2: V$(5, 5) = Q$: IF (I < 11) AND (J < 11) THEN V$(5, 5) = Q$(I, J) 32195 I = S6 + 1: J = S7 + 1: V$(4, 4) = Q$: IF (I < 11) AND (J < 11) THEN V$(4, 4) = Q$(I, J) 32200 N = N + 1: IF N = 3 THEN 32350 32210 I = S6 + 2: V$(5, 4) = Q$: IF (I < 11) AND (J < 11) THEN V$(5, 4) = Q$(I, J) 32220 I = S6 + 2: V$(5, 3) = Q$: IF I < 11 THEN V$(5, 3) = Q$(I, S7) 32230 I = S6 + 1: V$(4, 3) = Q$: IF I < 11 THEN V$(4, 3) = Q$(I, S7) 32240 N = N + 1: IF N = 3 THEN 32350 32250 I = S6 + 2: J = S7 - 1: V$(5, 2) = Q$: IF (I < 11) AND (J > 0) THEN V$(5, 2) = Q$(I, J) 32260 I = S6 + 2: J = S7 - 2: V$(5, 1) = Q$: IF (I < 11) AND (J > 0) THEN V$(5, 1) = Q$(I, J) 32270 I = S6 + 1: J = S7 - 1: V$(4, 2) = Q$: IF (I < 11) AND (J > 0) THEN V$(4, 2) = Q$(I, J) 32280 N = N + 1: IF N = 3 THEN 32350 32290 J = S7 - 2: V$(4, 1) = Q$: IF (I < 11) AND (J > 0) THEN V$(4, 1) = Q$(I, J) 32300 J = S7 - 2: V$(3, 1) = Q$: IF J > 0 THEN V$(3, 1) = Q$(S6, J) 32310 J = S7 - 1: V$(3, 2) = Q$: IF J > 0 THEN V$(3, 2) = Q$(S6, J) 32320 N = N + 1: IF N = 3 THEN 32350 32330 I = S6 - 1: J = S7 - 2: V$(2, 1) = Q$: IF (I > 0) AND (J > 0) THEN V$(2, 1) = Q$(I, J) 32340 GOTO 32100 32350 FOR I = 1 TO 5 32360 IF (V$(I, 1) = " ") AND (V$(I, 3) = " ") AND (V$(I, 5) = " ") THEN 32390 32370 PRINT " "; 32380 FOR J = 1 TO 5: PRINT V$(I, J); " "; : NEXT J: PRINT 32390 NEXT I: RETURN 33000 REM - WAIT 33001 J3 = 0: INPUT "HOW MANY STARDATES"; Z5 33010 IF (Z5 < R5) AND (K3 = 0) THEN 33030 33020 INPUT "ARE YOU SURE"; B$: IF LEFT$(B$, 1) <> "Y" THEN RETURN 33030 R6 = 1 33040 IF Z5 <= 0 THEN R6 = 0 33050 IF R6 = 0 THEN RETURN 33060 T1 = Z5: Z6 = Z5 33070 IF K3 = 0 THEN 33100 33080 T1 = 1 + RND(1): IF Z5 < T1 THEN T1 = Z5 33090 Z6 = T1 33100 IF T1 < Z5 THEN GOSUB 1000 33110 IF A2 <> 0 THEN RETURN 33120 GOSUB 9000: J3 = 1: IF A2 <> 0 THEN RETURN 33130 Z5 = Z5 - Z6: GOTO 33040 34000 REM:WARP 34001 J3 = 0: IF D4(6) <> 0 THEN 34750 34010 INPUT "ENTER COURSE AND DISTANCE"; D2, D1 34020 IF D2 < 0 THEN RETURN 34030 P = (D1 + .05) * W1 * W1 * W1 * (S4 + 1): IF P < E1 THEN 34150 34040 J3 = 0: PRINT : PRINT "ENGINEERING TO BRIDGE--" 34050 IF (S4 = 0) OR (.5 * P > E1) THEN 34080 34060 PRINT " WE HAVEN'T THE ENERGY TO GO THAT FAR WITH"; 34070 PRINT " THE SHIELDS UP.": RETURN 34080 W = INT((E1 / (D1 + .05)) ^ .333333): IF W <= 0 THEN 34130 34090 PRINT " WE HAVEN'T THE ENERGY. BUT WE COULD DO IT AT WARP"; W 34100 IF S4 <> 0 THEN 34120 34110 RETURN 34120 PRINT " if YOU'LL LOWER THE SHIELDS.": RETURN 34130 PRINT " WE CAN'T DO IT, CAPTAIN. WE HAVEN'T GOT THE ENERGY." 34140 RETURN 34150 T1 = 10 * D1 / W2: IF T1 < .8 * R5 THEN 34500 34160 PRINT : PRINT "MR. SPOCK - 'CAPTAIN, I COMPUTE THAT SUCH A TRIP" 34170 PRINT " WILL REQUIRE APPROXIMATELY"; FNR(100 * T1 / R5); 34180 PRINT "PERCENT": PRINT " OF OUR REMAINING TIME. ARE YOU SURE "; 34190 INPUT "THIS IS WISE"; B$: IF LEFT$(B$, 1) = "Y" THEN 34500 34200 J3 = 0: RETURN 34500 Q4 = 0: W = 0: IF W1 <= 6 THEN 34660 34510 P = D1 * (6 - W1) ^ 2 / 66.66666: IF P > RND(1) THEN Q4 = 1 34520 IF Q4 <> 0 THEN D1 = RND(1) * D1 34530 W = 0: IF W1 < 10 THEN 34550 34540 IF .25 * D1 > RND(1) THEN W = 1 34550 IF (Q4 = 0) AND (W = 0) THEN 34660 34560 A = (15 - D2) * .5235998: X1 = -SIN(A): X2 = COS(A) 34570 B8 = ABS(X1): IF ABS(X2) > ABS(X1) THEN B8 = ABS(X2) 34580 X1 = X1 / B8: Y1 = Y1 / B8: N = INT(10 * D1 * B8 + .5): X = S6: Y = S7 34590 IF N = 0 THEN 34660 34600 FOR L = 1 TO N 34610 X = X + X1: Q = INT(X + .5): IF (Q < 1) OR (Q > 10) THEN 34660 34620 Y = Y + Y1: R = INT(Y + .5): IF (R < 1) OR (R > 10) THEN 34660 34630 IF Q$(Q, R) = "." THEN 34650 34640 Q4 = 0: W = 0 34650 NEXT L 34660 GOSUB 15000: IF A2 <> 0 THEN RETURN 34670 E1 = E1 - D1 * W1 * W1 * W1 * (S4 + 1): IF E1 > 0 THEN 34690 34680 F9 = 4: GOSUB 10000: RETURN 34690 T1 = 10 * D1 / W2: IF W <> 0 THEN GOSUB 30000 34700 IF Q4 = 0 THEN 34740 34710 PRINT : PRINT "ENGINEERING TO BRIDGE--": PRINT " SCOTT HERE- "; 34715 PRINT "'WE'VE JUST BLOWN THE WARP ENGINES." 34720 PRINT " WE'LL HAVE TO SHUT 'ER DOWN HERE, CAPTAIN.'" 34725 D4(6) = D5 * (3 * RND(1) + 1) 34740 J3 = 1: RETURN 34750 PRINT "WARP ENGINES DAMAGED.": RETURN 35000 REM - ABANDON 35001 ON SGN(D4(10)) + 2 GOTO 35010, 35030, 35020 35010 PRINT "YE FARMER GREENE HAS NO SHUTTLE CRAFT.": RETURN 35020 PRINT "SHUTTLE CRAFT DAMAGED.": RETURN 35030 PRINT : PRINT "***ABANDON SHIP! ABANDON SHIP!" 35040 PRINT "***ALL HANDS ABANDON SHIP!": PRINT 35050 PRINT "YOU AND THE BRIDGE CREW ESCAPE IN THE GALILEO." 35060 PRINT "THE REMAINDER OF THE CREW BEAMS DOWN" 35070 PRINT "TO THE NEAREST HABITABLE PLANET.": IF R3 <> 0 THEN 35090 35080 F9 = 9: GOSUB 10000: RETURN 35090 PRINT : PRINT "YOU ARE CAPTURED BY KLINGONS AND RELEASED TO " 35100 PRINT "THE FEDERATION IN A PRISONER-OF-WAR EXCHANGE." 35110 PRINT "STARFLEET PUTS YOU IN COMMAND OF ANOTHER SHIP," 35120 PRINT "THE FARMER GREENE WHICH IS ANTIQUATED, BUT" 35130 PRINT "STILL USABLE.": N = INT(RND(1) * R3 + 1): Q1 = B2(N): Q2 = B3(N) 35140 S6 = 5: S7 = 5: GOSUB 18000: Q$(S6, S7) = "." 35145 FOR L = 1 TO 3: S6 = INT(3 * RND(1) - 1 + B6) 35150 IF (S6 < 1) OR (S7 > 10) THEN 35180 35160 S7 = INT(3 * RND(1) - 1 + B7): IF (S7 < 1) OR (S7 > 10) THEN 35180 35170 IF Q$(S6, S7) = "." THEN 35190 35180 NEXT L: GOTO 35140 35190 S5$ = "FARMER GREENE": Q$(S6, S7) = LEFT$(S5$, 1): C5$ = "DOCKED" 35200 FOR L = 1 TO 12: D4(L) = 0: NEXT: D4(10) = -1: E1 = 3000: I7 = E1 35210 S3 = 1500: I8 = S3: T4 = 6: I9 = T4: L1 = 3: J1 = L1: S4 = 0: W1 = 5: W2 = 25 35220 RETURN 36000 REM - DESTRUCT 36001 IF D4(11) = 0 THEN 36030 36010 PRINT "COMPUTER DAMAGED - CANNOT EXECUTE DESTRUCT SEQUENCE" 36020 RETURN 36030 PRINT : PRINT " ---WORKING---" 36040 PRINT "IDENTIFICATION-POSITIVE" 36050 PRINT "SELF-DESTRUCT-SEQUENCE-ACTIVATED": J = 3 36060 FOR I = 10 TO 6 STEP -1: PRINT SPC(J); I: GOSUB 36210: J = J + 3: NEXT 36070 PRINT "ENTER-YOUR-MISSION-PASSWORD- TO -CONTINUE" 36080 PRINT "SELF-DESTRUCT-SEQUENCE-OTHERWISE-DESTRUCT" 36090 PRINT "SEQUENCE-WILL-BE-ABORTED" 36100 INPUT B$: IF B$ <> X$ THEN 36190 36110 PRINT "PASSWORD-ACCEPTED": J = 10 36120 FOR I = 5 TO 1 STEP -1: PRINT SPC(J); I: GOSUB 36210: J = J + 3: NEXT 36130 PRINT : PRINT "*****ENTROPY OF "; S5$; " MAXIMIZED*****" 36140 PRINT : IF K3 = 0 THEN 36180 36150 W = 20 * E1: FOR L = 1 TO K3: IF K6(L) * K7(L) > W THEN 36170 36160 A5 = K4(L): A6 = K5(L): T2$ = Q$(A5, A6): GOSUB 6000 36170 NEXT L 36180 F9 = 10: GOSUB 10000: RETURN 36190 PRINT "PASSWORD-REJECTED" 36200 PRINT "CONTINUITY-EFFECTED": PRINT : RETURN 36210 K = 12345: FOR M = 1 TO 90: K = K + 1: NEXT M: RETURN 37000 REM - STATUS 37001 FOR I = 1 TO 10: NEXT I: GOTO 29040: RETURN 37010 END