home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug020.ark / STMASTER.BAS < prev    next >
Encoding:
BASIC Source File  |  1984-04-29  |  56.8 KB  |  1,817 lines

  1. REM   *** SUPER STAR TREK ***
  2.  
  3. PRINT FRE
  4.  
  5. DIM G1$(16), V$(5,5), C$(20), G(8,8), D$(12)
  6. DIM Q$(10,10), D4(12), D9(106), S2(8,8), T$(3)
  7. DIM S$(4), C2$(6), C5(9), S7$(4), K6(10)
  8. DIM K8(10), K7(10), CA(10), C1(10), F1(5)
  9. DIM K4(10), K5(10), B2(10), B3(10), H4(10,2)
  10. DIM H5(10), H3(10), C2(10)
  11.  
  12. PRINT FRE
  13.  
  14. DATA S.R. SENSORS,L.R. SENSORS,PHASERS,PHOTON TUBES,LIFE SUPPORT
  15. DATA WARP ENGINES,IMPULSE ENGINES,SHIELDS,SUBSPACE RADIO
  16. DATA SHUTTLE CRAFT,COMPUTER,TRANSFER PANEL,ABANDON,CHART,COMPUTER
  17. DATA DAMAGES,DESTRUCT,DOCK,IDLE,IMPULSE,LRSCAN,NAVIGATE,PHASERS,QUIT
  18. DATA SHIELDS,SOS,SRSCAN,STATUS,TORPEDO,TRANSFER,VISUAL,WARP,SHORT
  19. DATA MEDIUM,LONG,BEGINNER,NOVICE,SENIOR,EXPERT,COURSE,WCOST,ICOST
  20. DATA PEFFECT,SCORE,END,ANTARES,SIRIUS,RIGEL,MERAK,PROCYON,CAPELLA
  21. DATA VEGA,DENEB,CANOPUS,ALDEBARAN,ALTAIR,REGULUS,BELLATRIX,ARCTURUS
  22. DATA POLLUX,SPICA,10.5,12,1.5,9,0,3,7.5,6,4.5
  23. PRINT "PAST DATA";FRE
  24.  
  25.  
  26.    Q2$="?"
  27.  
  28. FOR I=1 TO 12:READ D$(I):NEXT :FOR I=1 TO 20:READ C$(I):NEXT 
  29. PRINT FRE
  30. FOR I=1 TO 3:READ T$(I):NEXT :FOR I=1 TO 4:READ S$(I):NEXT
  31. PRINT FRE
  32. FOR I=1 TO 6:READ C2$(I):NEXT :FOR I=1 TO 16:READ G1$(I):NEXT
  33. PRINT FRE
  34. FOR I=1 TO 9:READ C5(I):NEXT 
  35.  
  36.  
  37.  
  38. PRINT FRE;" OK, GO"
  39.  
  40. 45 REM CALL SETUP
  41.  
  42. 46 GOSUB 24000:S7$(1)="":S7$(2)="  ":S7$(3)=" ":S7$(4)=""
  43. 70 IF A2<>0 THEN 900
  44. 75 J4=0:T1=0:PRINT :INPUT "COMMAND";A$:
  45.    IF LEN(A$)>1 THEN 110
  46. 80   PRINT "USE AT LEAST 2 LETTERS, CAPTAIN.":GOTO 75
  47. 110 FOR I=1 TO 20
  48. 120 IF A$=LEFT$(C$(I),LEN(A$)) THEN 150
  49. 130 NEXT 
  50. 135 INPUT "ILLEGAL COMMAND - DO YOU NEED A LIST";B$
  51. 136 IF LEFT$(B$,1)="N"  THEN 70
  52. 140 PRINT :FOR I=1 TO 20 STEP 4
  53. 141 PRINT C$(I);TAB(12);C$(I+1);TAB(22);C$(I+2);TAB(32);C$(I+3)
  54. 142 NEXT :PRINT : GOTO  70
  55. 150 ON I GOTO  200,225,250,275,290,300,325,350,375,400,\
  56.                425,450,475,500,525,540,550,575,600,625
  57. 180 STOP
  58. 200 REM-ABANDON 
  59. 201 GOSUB  35000
  60. 210  GOTO  70
  61. 225 REM-CHART
  62. 226 GOSUB  3000
  63. 230  GOTO  70
  64. 250 REM-COMPUTER
  65. 251 GOSUB 5000
  66. 260  GOTO  70
  67. 275 REM-DAMAGES
  68. 276 GOSUB 8000
  69. 280  GOTO  70
  70. 290 REM - DESTRUCT
  71. 291 GOSUB 36000: GOTO  70
  72. 300 REM-DOCK
  73. 301 GOSUB 7000
  74. 310  GOTO  70
  75. 325 REM-IOLE
  76. 326 GOSUB 33000
  77. 330 IF J3=0 THEN 70
  78. 331 IF A2<>0 THEN 900
  79. 332 IF G(Q1,Q2)=1000 THEN 750
  80. 340 GOSUB 1000
  81. 345  GOTO  70
  82. 350 REM-IMPULSE
  83. 351 GOSUB 13000
  84. 352 IF J3=0 THEN 70
  85. 353  GOTO  700
  86. 375 REM-LRSCAN
  87. 376 GOSUB 14000
  88. 377  GOTO  70
  89. 400 REM-NAVIGATE
  90. 401 GOSUB 34000
  91. 402 IF J3=0 THEN 70
  92. 410  GOTO  700
  93. 425 REM-PHASERS
  94. 426 GOSUB 20000
  95. 427 IF J3=0 THEN 70
  96. 428 GOSUB 1000
  97. 429  GOTO  70
  98. 450 REM-QUIT
  99. 455  GOTO  900
  100. 460 PRINT " TOO BAD...WE HATE TO LOSE GOOD ASTRONAUTS!"
  101. 465  GOTO  37010
  102. 475 REM-SHIELDS
  103. 476 GOSUB 26000
  104. 477 IF J3=0 THEN 70
  105. 478 IF A2<>0 THEN 900
  106. 479 GOSUB 1000
  107. 480 S9=0
  108. 485  GOTO  70
  109. 500 REM-SOS
  110. 501 GOSUB 11000
  111. 502  GOTO  70
  112. 525 REM-SRSCAN
  113. 526 GOSUB 29000
  114. 530  GOTO  70
  115. 540 REM - STATUS
  116. 541 PRINT 
  117. 545 GOSUB 37000: GOTO  70
  118. 550 REM- TO RPEDOS
  119. 551 GOSUB 21000
  120. 552 IF J3=0 THEN 70
  121. 555  GOTO  700
  122. 575 REM-TRANSFER
  123. 576 GOSUB 31000
  124. 580 IF J3=0 THEN 70
  125. 585 IF A2<>0 THEN 900
  126. 590 IF G(Q1,Q2)<>1000 THEN 70
  127. 595  GOTO  750
  128. 600 REM-VISUAL
  129. 601 GOSUB 32000
  130. 602 IF J3=0 THEN 70
  131. 603 IF A2<>0 THEN 900
  132. 610 IF G(Q1,Q2)<>1000 THEN 70
  133. 615  GOTO  750
  134. 625 REM-WARP
  135. 627 GOSUB 25000
  136. 630  GOTO  70
  137. 700 REM-AFTER MOVING STARSHIP
  138. 710 IF A2<>0 THEN 900
  139. 720 IF T1<>0 THEN GOSUB 9000
  140. 730 IF A2<>0 THEN 900
  141. 740 IF G(Q1,Q2)<1000 THEN 790
  142. 750 GOSUB 2000
  143. 760 IF A2<>0 THEN 900
  144. 770  GOTO  740
  145. 790 GOSUB 1000
  146. 795  GOTO  70
  147. 900 REM-WE'RE FINISHED
  148. 901 PRINT :PRINT :INPUT "WOULD YOU LIKE  TO  TRY AGAIN";A$
  149. 910 IF LEFT$(A$,1)="Y" THEN 45
  150. 920 GOTO 460
  151.  
  152.     REM - BEGIN TREK SUBROUTINES
  153.  
  154. 1000 REM-ATTACK
  155.  
  156. 1010 IF (C3<>0)AND(J4=0) THEN GOSUB 16000
  157. 1020 IF K3=0 THEN RETURN
  158. 1030 IF A2 <> 0 THEN RETURN
  159. 1040 P2=1/I8
  160. 1050 J5=0
  161. 1060 PRINT 
  162. 1070 IF C5$="DOCKED" THEN 1780
  163. 1080 H2=0:H31=0:C61=1
  164. 1090 IF S9=1 THEN C61=.5+.5*RND
  165. 1100 A3=0
  166. 1110 FOR L=1 TO K3
  167. 1120 IF K6(L)<0 THEN 1540
  168. 1130 A3=1
  169. 1140 D6=.8+.05*RND
  170. 1150 H41=K6(L)*D6^K8(L)
  171. 1160 IF (S4=0)AND(S9=0) THEN 1230
  172. 1170 P3=.1
  173.      IF P2*S3>P3 THEN P3=P2*S3
  174. 1180 H51=P3*C61*H41+1
  175. 1190 IF H51>S3 THEN H51=S3
  176. 1195 S3=S3-H51
  177. 1200 H41=H41-H51
  178. 1210 IF (P3>.1)AND(H41<.005*E1) THEN 1540
  179. 1230 J5=1
  180. 1240 PRINT INT(H41*10+0.5)/10;"UNIT HIT ON  THE ";S5$;" FROM ";
  181. 1250 J6=K4(L):J7=K5(L)
  182. 1260 IF Q$(J6,J7)="K" THEN PRINT "KLINGON  AT";
  183. 1270 IF Q$(J6,J7)="C" THEN PRINT "COMMANDER AT";
  184. 1280 PRINT J6;"-";J7
  185. 1290 IF H41>H2 THEN H2=H41
  186. 1300 H31=H31+H41
  187. 1310 IF H41<(275-25*S8)*(1+.5*RND) THEN 1530
  188. 1320 N4=1+INT(H41/(500+100*RND))
  189. 1330 PRINT "***CRITICAL HIT--";
  190. 1340 K9=1
  191. 1350 FOR W4=1 TO N4
  192. 1360 J9=INT(12*RND)+1
  193. 1370 C5(W4)=J9
  194. 1380 E3=(H41*D5)/(N4*(75+25*RND))
  195. 1390 IF J9=6 THEN E3=E3/3
  196. 1395 D4(J9)=D4(J9)+E3
  197. 1400 IF W4=1 THEN 1470
  198. 1420 FOR V=1 TO W4
  199. 1430 IF J9=C5(V-1) THEN 1480
  200. 1440 NEXT V
  201. 1450 K9=K9+1
  202. 1460 IF K9=3 THEN PRINT 
  203. 1465 PRINT  " AND ";
  204. 1470 PRINT D$(J9);
  205. 1480 NEXT W4
  206. 1490 PRINT  " DAMAGED."
  207. 1500 IF D4(8)=0 THEN 1530
  208. 1510 IF S4<>0 THEN PRINT "*** SHIELDS KNOCKED DOWN."
  209. 1520 S4=0
  210. 1530 E1=E1-H41
  211. 1540 NEXT L
  212. 1550 IF A3=0 THEN RETURN
  213. 1560 IF E1<=0 THEN 1750
  214. 1570 P4=100*P2*S3+.5
  215. 1580 IF J5<>0 THEN 1610
  216. 1590 PRINT "KLINGONS ATTACK--SHIELD STRENGTH REDUCED TO ";
  217. 1600  GOTO  1650
  218. 1610 PRINT "ENERGY LEFT:";INT(E1*100+.5)/100;"   SHIELDS ";
  219. 1620 IF S4<>0 THEN PRINT "UP,";
  220. 1630 IF (S4=0)AND(D4(8)=0) THEN PRINT "DOWN, ";
  221. 1640 IF D4(8)>0 THEN PRINT "DAMAGED, ";
  222. 1650 PRINT INT(P4);"%"
  223. 1660 IF (H2<200)AND(H31<500) THEN 1800
  224. 1670 J8=INT(H31*RND*.015)
  225. 1680 IF J8<2 THEN 1800
  226. 1690 PRINT 
  227. 1700 PRINT "MCCOY - 'SICKBAY TO BRIDGE.  WE SUFFERED ";
  228. 1710 PRINT J8;"CASUALTIES"
  229. 1720 PRINT "          IN THAT LAST ATTACK'"
  230. 1730 C4=C4+J8
  231. 1740  GOTO  1800
  232. 1750 F9=5
  233. 1760 GOSUB 10000
  234. 1770 RETURN
  235. 1780 PRINT "*** KLINGONS ATTACK-- STARBASE SHIELDS PROTECT ";
  236. 1790 PRINT "THE ";S5$
  237. 1800 FOR W4=1 TO K3
  238. 1810 K8(W4)=K7(W4)
  239. 1820 NEXT W4
  240. 1830 GOSUB 28000
  241. 1840 RETURN
  242.  
  243. 2000 REM-AUTOVER
  244.  
  245. 2001 PRINT 
  246. 2010 IF J4=0 THEN 2050
  247. 2020 PRINT "*** RED ALERT!  RED ALERT!"
  248. 2030 PRINT "***THE ";S5$;" HAS STOPPED IN A QUADRANT ";
  249. 2040 PRINT  "CONTAINING A SUPERNOVA."
  250. 2050 PRINT  "*** EMERGENCY AUTO-OVERRIDE ATTEMPTS TO HURL ";
  251. 2060 PRINT S5$
  252. 2070 PRINT "   SAFELY OUT OF THE QUADRANT."
  253. 2080 S2(Q1,Q2)=1
  254. 2090 GOSUB 18000
  255. 2100 IF D4(6)=0 THEN 2290
  256. 2110 PRINT 
  257. 2120 PRINT "WARP ENGINES DAMAGED."
  258. 2130 PRINT 
  259. 2140 PRINT "ATTEMPTING TO ENGAGE IMPULSE ENGINES..."
  260. 2150 IF D4(7)=0 THEN 2190
  261. 2160 PRINT "IMPULSE ENGINES DAMAGED."
  262. 2165 F9=8
  263. 2170 GOSUB 10000
  264. 2180 RETURN
  265. 2190 P2=.75*E1
  266. 2200 D6=.004*(P2-50)
  267. 2210 D7=1.4142+1.2*RND
  268. 2220 D1=D6
  269. 2230 IF D6>D7 THEN D1=D7
  270. 2240 T1=D1/.4
  271. 2250 D2=12*RND
  272. 2260 J4=0
  273. 2270 GOSUB 13200
  274. 2280  GOTO  2400
  275. 2290 W1=6+2*RND
  276. 2300 W2=W1*W1
  277. 2310 P2=.75*E1
  278. 2320 D6=P2/(W1*W1*W1*(S4+1))
  279. 2330 D7=1.4142+2*RND
  280. 2340 D1=D6
  281. 2350 IF D6>D7 THEN D1=D7
  282. 2360 T1=10*D1/W2
  283. 2370 D2=12*RND
  284. 2380 J4=0
  285. 2390 GOSUB 34500
  286. 2400 IF J4<>0 THEN 2440
  287. 2410 F9=8
  288. 2420 GOSUB 10000
  289. 2430 RETURN
  290. 2440 IF R1<>0 THEN RETURN
  291. 2450 F9=1
  292. 2460 GOSUB 10000
  293. 2470 RETURN
  294.  
  295. 3000 REM-CHART
  296.  
  297. 3001 PRINT :PRINT "      1   2   3   4   5   6   7   8"
  298. 3010 PRINT "     --- --- --- --- --- --- --- ---"
  299. 3020 FOR I=1 TO 8
  300. 3030 PRINT I;" ";
  301. 3040 FOR J=1 TO 8
  302. 3060 ON SGN(S2(I,J))+2 GOTO  3070,3090,3110
  303. 3065 PRINT "ERR AT 3065":STOP
  304. 3070 PRINT " .1.";
  305. 3080  GOTO   3160
  306. 3090 PRINT " ...";
  307. 3100  GOTO  3160
  308. 3110 IF S2(I,J)>1000 THEN 3150
  309. 3120 IF G(I,J)<1000 THEN PRINT S7$(LEN(STR$(G(I,J))));STR$(G(I,J));
  310. 3130 IF G(I,J)=1000 THEN PRINT " ***";
  311. 3140  GOTO  3160
  312. 3150 PRINT S2(I,J)-1000;
  313. 3160 NEXT J
  314. 3170 PRINT 
  315. 3180 NEXT I:GOSUB 18400
  316. 3185 PRINT 
  317. 3190 PRINT "THE ";S5$;" IS CURRENTLY IN ";G2$;" (";Q1;"-";Q2;")"
  318. 3200 RETURN
  319.  
  320. 4000 REM-CHOOSE
  321.  
  322. 4001 FOR I=1 TO 10:PRINT :NEXT :FOR I=1 TO 41:PRINT "*";:NEXT :PRINT 
  323. 4002 PRINT "**";TAB(39);"**"
  324. 4003 PRINT "**  WELCOME TO THE WORLD OF STAR TREK  **"
  325. 4008 PRINT "**";TAB(39);"**":FOR I=1 TO 41:PRINT "*";:NEXT :PRINT 
  326. 4010 PRINT :PRINT 
  327. 4070 S8=0:L2=0
  328. 4090 PRINT "HOW LONG A GAME WOULD YOU LIKE";
  329. 4095 INPUT A$
  330. 4100 FOR  I=1 TO 3
  331. 4110 IF A$=LEFT$(T$(I),LEN(A$)) THEN 4150
  332. 4120 NEXT I
  333. 4130 PRINT "WOULD YOU LIKE A SHORT, MEDIUM OR LONG GAME";
  334. 4140  GOTO  4095
  335. 4150 L2=I
  336. 4160 PRINT "ARE YOU A BEGINNER, NOVICE, SENIOR OR EXPERT PLAYER";
  337. 4170 INPUT A$
  338. 4180 FOR I=1 TO 4
  339. 4190 IF A$=LEFT$(S$(I),LEN(A$)) THEN 4220
  340. 4200 NEXT I
  341. 4210  GOTO  4160
  342. 4220 S8=I
  343. 4230 INPUT "ENTER YOUR MISSION  PASSWORD...";X$
  344. 4244 PRINT 
  345. 4245 PRINT "....SETTING UP THE GALAXY...."
  346. 4250 J=RND
  347. 4260 REM-INITIALIZE
  348. 4270 D5=.5*S8
  349. 4280 I2=INT(L2+1+RND*3)
  350. 4290 IF I2>5 THEN I2=5
  351. 4300 R3=I2
  352. 4310 I5=7*L2
  353. 4320 R5=I5
  354. 4340 R7=(S8-2*RND+1)*S8*.1+.1
  355. 4350 IF R7<.2 THEN R7=R7+.1
  356. 4360 I1=INT(2*R7*I5)
  357. 4370 R1=I1
  358. 4380 I4=INT(S8+.0625*I1*RND)
  359. 4390 R2=I4
  360. 4400 I3=(I1+4*I4)*I5
  361. 4410 R4=I3
  362. 4420 RETURN
  363.  
  364. 5000 REM-COMPUTE
  365.  
  366. 5001 IF D4(11)=0 THEN 5030
  367. 5010 PRINT "LIBRARY COMPUTER DISABLED"
  368. 5020 RETURN
  369. 5030 PRINT "----LIBRARY COMPUTER ACTIVE----"
  370. 5040 INPUT "PROGRAM NAME";B$
  371. 5050 FOR I=1 TO 6
  372. 5060 IF B$=LEFT$(C2$(I),LEN(B$)) THEN 5120
  373. 5070 NEXT 
  374. 5080 PRINT "VALID PROGRAMS ARE:"
  375. 5090 PRINT "  COURSE    WCOST   ICOST"
  376. 5100 PRINT "  PEFFECT   SCORE   END"
  377. 5110  GOTO  5040
  378. 5120 ON  I GOTO  5200,5300,5400,5500,5600,5700
  379. 5200 REM-COURSE & DIRECTION 
  380. 5210 INPUT  "ENTER QUADRANT AND SECTOR - ";A3,A4
  381. 5220 IF (A3<>INT(A3))OR(A4<>INT(A4)) THEN 5990
  382. 5221 IF A3<0 THEN 5040
  383. 5222 IF A3=0 THEN A3=10*Q1+Q2
  384. 5223 A3=A3+.5
  385. 5225 K=INT(A3/10)
  386. 5226 IF (K<1)OR(K>8) THEN 5990
  387. 5227 CA(1)=K:K=INT(A3-CA(1)*10)
  388. 5228 IF (K<1)OR(K>8) THEN 5990
  389. 5229 CA(2)=K:A4=A4+.5
  390. 5230 K=INT(A4/100)
  391. 5231 IF (K<1)OR(K>10) THEN 5990
  392. 5232 CA(1)=CA(1)+(K-1)/10:K=INT(A4-K*100)
  393. 5233 IF (K<1)OR(K>10) THEN 5990
  394. 5234 CA(2)=CA(2)+(K-1)/10
  395. 5235 X=Q1+((S6-1)/10)-CA(1):Y=Q2+((S7-1)/10)-CA(2)
  396. 5236 D1=0:D2=0
  397.      IF (X=0)AND(Y=0) THEN 5250
  398. 5237 D1=SQR(X*X+Y*Y)
  399. 5238 IF X<0 THEN Z7=SGN(Y)*(3.1416-ATN(ABS(Y/X)))
  400. 5239 IF X=0 THEN Z7=SGN(Y)*1.5708
  401. 5240 IF X>0 THEN Z7=ATN(Y/X)
  402. 5245 D2=12-Z7*1.9098593
  403.      IF D2>12 THEN D2=D2-12
  404. 5250 PRINT "COURSE IS";(D2*100+.5)/100;" FOR A DISTANCE OF";
  405. 5260 PRINT INT(D1*100+.5)/100;"QUADRANTS.": GOTO  5040
  406. 5300 REM-COST FOR  WARP DRIVE
  407. 5302 INPUT "ENTER DISTANCE AND WARP FACTOR";D1,A4
  408. 5304 IF (D1<0) THEN 5040
  409. 5310 C7=D1*A4*A4*A4
  410. 5315 T1=(10*D1)/(A4*A4)
  411. 5320 PRINT "IT WOULD TAKE";INT(T1*100+.5)/100;"STARDATES AND USE"
  412. 5325 PRINT INT(C7*10+.5)/10;"UNITS OF ENERGY  (";
  413.      PRINT INT(C7*20+.5)/10;"IF SHIELDS ARE UP)"
  414. 5330  GOTO  5040
  415. 5400 REM-COST FOR  IMPULSE POWER
  416. 5410 INPUT "ENTER DISTANCE...";D1
  417. 5420 IF D1<0 THEN 5040
  418. 5430 C7=250*D1+50:T1=D1/.4
  419. 5440 PRINT "IT WOULD TAKE";INT(T1*10+.5)/10;"STARDATES AND USE"
  420. 5450 PRINT C7;"UNITS OF ENERGY"
  421. 5460  GOTO  5040
  422. 5500 REM-PHASER EFFECTIVENESS
  423. 5510 INPUT "ENTER PHASER RANGE IN QUADRANTS";A3
  424. 5520 IF A3<0 THEN 5040
  425. 5530 A3=A3*10:C7=(.9^A3)*100
  426. 5540 PRINT "PHASERS ARE ";LEFT$(STR$(C7),5);"% EFFECTIVE AT THAT RANGE"
  427. 5550  GOTO  5040
  428. 5600 REM- SCORE
  429. 5610 GOSUB 23000
  430. 5620  GOTO  5040
  431. 5700 RETURN
  432. 5990 PRINT "FORMAT IS MN,XXYY...WHERE MN IS THE QUADRANT"
  433. 5991 PRINT "AND XXYY IS THE SECTOR...E.G. 64,0307 REFERS"
  434. 5992 PRINT "TO QUADRANT 6-4, SECTOR 3-7."
  435. 5993 PRINT "NOTE: SECTOR COORDINATES MUST BE 4 DIGITS."
  436. 5995  GOTO   5040
  437.  
  438. 6000 REM - DEADKL
  439.  
  440. 6001 IF T2$<>"C" THEN 6100
  441. 6010 C3=0:PRINT "***COMMANDER AT";
  442. 6020 FOR F=1 TO R2
  443. 6030 IF (C1(F)=Q1)AND(C2(F)=Q2) THEN 6050
  444. 6040 NEXT F
  445. 6050 C1(F)=C1(R2):C2(F)=C2(R2):C1(R2)=0:C2(R2)=0
  446. 6060 R2=R2-1:F1(2)=1.0E+30
  447. 6070 IF R2<>0 THEN F1(2)=D0-(I4/R2)*LOG(RND)
  448. 6080 K2=K2+1
  449. 6090  GOTO  6120
  450. 6100 PRINT "***KLINGON  AT";
  451. 6110 K1=K1+1
  452. 6120 PRINT A5;"-";A6;"DESTROYED."
  453. 6130 Q$(A5,A6)=".":R1=R1-1
  454. 6140 IF R1=0 THEN RETURN
  455. 6150 R5=R4/(R1+4*R2)
  456. 6160 G(Q1,Q2)=G(Q1,Q2)-100
  457. 6170 FOR F=1 TO K3
  458. 6180 IF (K4(F)=A5)AND(K5(F)=A6) THEN 6200
  459. 6190 NEXT F
  460. 6200 K3=K3-1
  461. 6210 IF F>K3 THEN 6250
  462. 6220 FOR G11=F TO K3
  463. 6230 K4(G11)=K4(G11+1):K5(G11)=K5(G11+1):K6(G11)=K6(G11+1)
  464. 6235 K7(G11)=K7(G11+1):K8(G11)=K7(G11)
  465. 6240 NEXT G11
  466. 6250 K4(K3+1)=0:K5(K3+1)=0:K7(K3+1)=0:K8(K3+1)=0:K6(K3+1)=0
  467. 6260 RETURN
  468.  
  469. 7000 REM-DOCK
  470.  
  471. 7001 IF C5$="DOCKED" THEN 7100
  472. 7010 IF B6=0 THEN 7020
  473. 7015 IF (ABS(S6-B6)<=1)AND(ABS(S7-B7)<=1) THEN 7040
  474. 7020 PRINT S5$;" NOT ADJACENT TO A BASE."
  475. 7030 RETURN
  476. 7040 C5$="DOCKED"
  477. 7050 PRINT "HELMSMAN SULU - 'DOCKING MANEUVER COMPLETED.'"
  478. 7060 E1=I7:S3=I8:T4=I9:L1=J1
  479. 7070 RETURN
  480. 7100 PRINT "MR. SULU - 'BUT CAPTAIN, WE'RE ALREADY DOCKED!'"
  481. 7110 RETURN
  482.  
  483. 8000 REM-DREPORT
  484.  
  485. 8001 J=0
  486. 8003 PRINT 
  487. 8005 FOR I=1 TO 12
  488. 8010 IF D4(I)<=0 THEN 8070
  489. 8020 IF J<>0 THEN 8060
  490. 8030 PRINT "     DEVICE";TAB(POS+12);"-REPAIR TIMES-"
  491. 8040 PRINT TAB(POS+21);"IN FLIGHT    DOCKED"
  492. 8050 J=1
  493. 8060 PRINT "  ";D$(I);TAB(23);INT(D4(I)*100+.5)/100;
  494.      PRINT TAB(33);INT(D3*D4(I)*100+.5)/100
  495. 8070 NEXT I
  496. 8080 IF J=0 THEN PRINT "MR. SPOCK - 'ALL DEVICES FUNCTIONAL, CAPTAIN'"
  497. 8090 RETURN
  498.  
  499. 9000 REM-EVENTS
  500.  
  501. 9001 M=0:D7=D0+T1
  502. 9010 FOR L=1 TO 5
  503. 9020 IF F1(L)>D7 THEN 9040
  504. 9030 M=L:D7=F1(L)
  505. 9040 NEXT L
  506. 9050 X6=D7-D0:D0=D7
  507. 9060 R4=R4-(R1+4*R2)*X6
  508. 9070 R5=R4/(R1+4*R2)
  509. 9080 IF R5>0 THEN 9120
  510. 9090 F9=2
  511. 9100 GOSUB 10000
  512. 9110 RETURN
  513. 9120 IF (D4(5)=0)OR(C5$="DOCKED") THEN 9180
  514. 9130 IF (L1>=X6)OR(D4(5)<=L1) THEN 9160
  515. 9140 F9=3:GOSUB 10000
  516. 9150 RETURN
  517. 9160 L1=L1-X6
  518. 9170 IF D4(5)<=X6 THEN L1=J1
  519. 9180 R=X6
  520. 9190 IF C5$="DOCKED" THEN R=X6/D3
  521. 9200 FOR L=1 TO 12
  522. 9210 IF D4(L)<=0 THEN 9230
  523. 9220 D4(L)=D4(L)-R
  524. 9225 IF D4(L)<0 THEN D4(L)=0
  525. 9226 IF D4(L)<>0 THEN 9230
  526. 9227 PRINT :PRINT "DAMAGE CONTROL-  '";D$(L);" NOW OPERATIONAL.'"
  527. 9230 NEXT L
  528. 9240 IF M=0 THEN RETURN
  529. 9250 T1=T1-X6
  530. 9260 ON M GOTO  9270,9290,9340,9350,9470
  531. 9270 REM-SUPERNOVA
  532. 9280 X2=0:Y2=0:GOSUB 27000
  533. 9285 F1(1)=D0-.5*I5*LOG(RND)
  534. 9286 IF G(Q1,Q2)=1000 THEN RETURN
  535. 9287  GOTO  9001
  536. 9290 REM-TRACTOR BEAM
  537. 9291 IF R2=0 THEN 9330
  538. 9292 IF C5$="DOCKED" THEN 9325
  539. 9293 I=INT(RND*R2)+1
  540. 9294 Y6=(C1(I)-Q1)^2+(C2(I)-Q2)^2
  541. 9295 IF Y6=0 THEN 9325
  542. 9296 Y6=SQR(Y6):T1=.17778*Y6
  543. 9297 PRINT :PRINT "***";S5$;" CAUGHT IN LONG-RANGE TRACTOR BEAM--"
  544. 9298 Q1=C1(I):Q2=C2(I)
  545. 9299 S6=INT(RND*10)+1:S7=INT(RND*10)+1
  546. 9300 PRINT "   PULLED TO QUADRANT";Q1;"-";Q2;", SECTOR";S6;"-";S7
  547. 9301 IF R6<>0 THEN PRINT "(REMAINDER OF IDLE PERIOD CANCELLED)"
  548. 9302 R6=0
  549. 9303 IF S4<>0 THEN 9320
  550. 9304 IF (D4(8)=0)AND(S3>0) THEN 9310
  551. 9305 PRINT "(SHIELDS NOT CURRENTLY USABLE.)"
  552. 9307 GO TO 9320
  553. 9310 GOSUB 26500
  554. 9315 S9=0
  555. 9320 GOSUB 18000
  556. 9325 F1(2)=D0+T1-1.5*(I5/R2)*LOG(RND)
  557. 9326 GO TO 9001
  558. 9330 F1(2)=1.0E+30:GO TO 9001
  559. 9340 D9(1)=D0:D9(2)=R1:D9(3)=R2:D9(4)=R3:D9(5)=R4:D9(6)=R5
  560. 9342 D9(7)=S1:D9(8)=B1:D9(9)=K1:D9(10)=K2
  561. 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
  562. 9344 FOR I=75 TO 84:D9(I)=C1(I-74):NEXT 
  563. 9345 FOR I=85 TO 94:D9(I)=C2(I-84):NEXT 
  564. 9346 FOR I=95 TO 99:D9(I)=B2(I-94):NEXT 
  565. 9347 FOR I=100 TO 104:D9(I)=B3(I-99):NEXT 
  566. 9348 D9(105)=B4:D9(106)=B5
  567. 9349 S0=1:F1(3)=D0-.3*I5*LOG(RND):GO TO 9001
  568. 9350 REM - STARBASE ATTACK
  569. 9355 IF (R2=0)OR(R3=0) THEN 9400
  570. 9360 FOR I=1 TO R3:FOR J=1 TO R2
  571.       IF (B2(I)=C1(J))AND(B3(I)=C2(J)) THEN 9410
  572. 9370 NEXT J:NEXT I
  573. 9380 F1(4)=D0+.5+3*RND
  574. 9390 F1(5)=1.0E+30:GO TO 9001
  575. 9400 F1(4)=1.0E+30:F1(5)=1.0E+30:GO TO 9001
  576. 9410 B4=B2(I):B5=B3(I)
  577. 9420 IF (B4=Q1)AND(B5=Q2) THEN 9380
  578. 9430 F1(5)=D0+.5+3*RND
  579. 9440 F1(4)=F1(5)-.3*I5*LOG(RND)
  580. 9450 IF D4(9)>0 THEN 9001
  581. 9455 PRINT 
  582. 9460 PRINT "LT. UHURA-  'CAPTAIN, THE STARBASE IN";B4;"-";B5
  583. 9461 PRINT "  REPORTS THAT IT IS UNDER ATTACK AND CAN HOLD OUT"
  584. 9462 PRINT "  ONLY UNTIL STARDATE";INT(F1(5)*10+.5)/10;"'"
  585. 9465 IF R6=0 THEN 9001
  586. 9466 PRINT 
  587. 9467 INPUT "MR. SPOCK-  'CAPTAIN, SHALL WE CANCEL THE IDLE PERIOD";B$
  588. 9468 IF LEFT$(B$,1)="Y" THEN R6=0
  589. 9469 GO TO 9001
  590. 9470 REM - STARBASE DESTROYED
  591. 9475 F1(5)=1.0E+30
  592.       IF (R2=0)OR(R3=0) THEN 9001
  593. 9485 K=INT(G(B4,B5)/100)
  594.       IF G(B4,B5)-K*100<10 THEN 9001
  595. 9490 FOR I=1 TO R2
  596.       IF (C1(I)=B4)AND(C2(I)=B5) THEN 9520
  597. 9510 NEXT :GO TO 9001
  598. 9520 IF S2(B4,B5)=-1 THEN S2(B4,B5)=0
  599. 9530 IF S2(B4,B5)>999 THEN S2(B4,B5)=S2(B4,B5)-10
  600. 9540 IF (B4<>Q1)OR(B5<>Q2) THEN 9630
  601. 9550 FOR I=1 TO K3:K=K4(I):L=K5(I)
  602. 9560 IF Q$(K,L)="C" THEN 9570
  603. 9565 NEXT 
  604. 9570 IF K6(I)<25+50*RND THEN 9001
  605. 9580 Q$(B6,B7)=".":B6=0:B7=0
  606. 9590 GOSUB 17000
  607. 9600 PRINT :PRINT "MR. SPOCK-  'CAPTAIN, I BELIEVE THE STARBASE HAS";
  608. 9610 PRINT " BEEN DESTROYED.'"
  609. 9620 GO TO 9680
  610. 9630 IF (R3=1)OR(D4(9)>0) THEN 9680
  611. 9640 PRINT 
  612. 9650 PRINT "LT. UHURA-  'CAPTAIN, STARFLEET COMMAND REPORTS THAT"
  613. 9660 PRINT "  THE STARBASE IN QUADRANT";B4;"-";B5;"HAS BEEN"
  614. 9670 PRINT "  DESTROYED BY A KLINGON COMMANDER.'"
  615. 9680 G(B4,B5)=G(B4,B5)-10
  616. 9690 IF R3<=1 THEN 9730
  617. 9700 FOR I=1 TO R3
  618.       IF (B2(I)=B4)AND(B3(I)=B5) THEN 9720
  619. 9710 NEXT 
  620. 9720 B2(I)=B2(R3):B3(I)=B3(R3)
  621. 9730 R3=R3-1
  622. 9740 GO TO 9001
  623.  
  624. 10000 REM-FINISH
  625.  
  626. 10001 A2=1:PRINT :PRINT "IT IS STARDATE";INT(D0*10+.5)/10:PRINT 
  627. 10010 ON F9 GO TO 10020,10130,10160,10185,10195,10205,10220,10235,\
  628.                   10245,10270,10280
  629. 10020 REM-THE GAME HAS BEEN WON
  630. 10025 PRINT "YOU HAVE DESTROYED THE KLINGON INVASION FLEET"
  631. 10027 PRINT 
  632. 10030 PRINT "     ***THE FEDERATION IS SAVED***":G1=1
  633. 10035 IF (A1=0)OR(B1<>0) THEN 10110
  634. 10040 IF LEFT$(S5$,1)<>"E" THEN 10110
  635. 10045 IF 3*S1+35*N1+C4>=100 THEN 10110
  636. 10050 IF D0-J2<=6 THEN 10070
  637. 10060 R8=.1*S8*(S8+1)+.1
  638. 10065 IF (K1+K2)/(D0-J2)<R8 THEN 10110
  639. 10070 PRINT 
  640. 10075 PRINT "IN FACT, YOU HAVE DONE SO WELL THAT STARFLEET COMMAND"
  641. 10076 IF S8=4 THEN 10090
  642. 10080 PRINT "PROMOTES YOU ONE STEP IN RANK, ";
  643. 10085 IF S8=1 THEN  PRINT "FROM BEGINNER TO NOVICE CLASS!"
  644. 10086 IF S8=2 THEN PRINT "FROM NOVICE TO SENIOR CLASS!"
  645. 10087 IF S8=3 THEN PRINT "FROM SENIOR TO EXPERT CLASS!"
  646. 10088 PRINT "   ***CONGRATULATIONS***":GO TO 10110
  647. 10090 PRINT "PROMOTES YOU TO 'COMMODORE EMERITUS'."
  648. 10095 PRINT 
  649. 10100 PRINT "NOW YOU CAN RETIRE AND WRITE YOUR OWN STAR TREK GAME!"
  650. 10110 GOSUB 23000
  651. 10120 RETURN
  652. 10130 REM-FED RESOURCES DEPLETED
  653. 10135 PRINT "YOUR TIME HAS RUN OUT, AND THE"
  654. 10136 PRINT "FEDERATION HAS BEEN CONQUERED.":PRINT 
  655. 10137 PRINT "YOUR STARSHIP IS NOW KLINGON PROPERY, AND YOU ARE PUT"
  656. 10138 PRINT "ON TRIAL AS A WAR CRIMINAL.  ON THE BASIS OF YOUR RECORD,"
  657. 10139 IF R1*3>I1 THEN 10150
  658. 10140 PRINT "YOU ARE FOUND GUILTY AND SENTENCED TO DEATH!"
  659. 10145 A1=0:GOSUB 23000:RETURN
  660. 10150 PRINT "YOU ARE ACQUITTED":GOSUB 23000:RETURN
  661. 10160 REM- L.S. FAILURE
  662. 10165 PRINT "YOUR LIFE SUPPORT RESERVES HAVE RUN OUT, AND"
  663. 10170 PRINT "YOU WILL SOON DIE OF ASPHYXIATION"
  664. 10172 PRINT 
  665. 10175 PRINT "YOUR STARSHIP IS A DERELICT IN SPACE."
  666. 10180 GO TO 10300
  667. 10185 REM-ENERGY GONE
  668. 10190 PRINT "YOUR ENERGY SUPPLY IS EXHAUSTED.":GO TO 10172
  669. 10195 REM-BATTLE DEFEAT
  670. 10200 PRINT "THE ";S5$;" HAS BEEN DESTROYED IN BATTLE."
  671. 10201 GO TO 10300
  672. 10205 PRINT "F9=6 INVALID":RETURN
  673. 10220 REM-NOVA
  674. 10225 PRINT "YOUR STARSHIP HAS BEEN DESTROYED BY A NOVA."
  675. 10230 PRINT "NICE SHOT, YOU HOCKEY PUCK!":GO TO 10300
  676. 10235 REM-SUPERNOVA
  677. 10240 PRINT "THE ";S5$;" HAS BEEN INCINERATED BY A SUPERNOVA."
  678. 10241 GO TO 10300
  679. 10245 REM-ABANDON(NO BASES)
  680. 10250 PRINT "YOU HAVE BEEN CAPTURED BY THE KLINGONS.  IF  YOU STILL"
  681. 10255 PRINT  "HAD A STARBASE TO BE RETURNED TO, YOU WOULD HAVE BEEN"
  682. 10260 PRINT "REPATRIATED AND GIVEN ANOTHER CHANCE.  SINCE YOU HAVE"
  683. 10265 PRINT "NO STARBASES, YOU WILL BE MERCILESSLY TORTURED TO DEATH!"
  684. 10266 GO TO 10300
  685. 10270 REM - SELF-DESTRUCT
  686. 10271 PRINT :PRINT "THE ";S5$;" IS NOW AN EXPANDING CLOUD"
  687. 10272 PRINT "OF SUB-ATOMIC PARTICLES...":GO TO 10300
  688. 10280 REM-NOT REMATERIALIZED
  689. 10285 PRINT "STARBASE WAS UNABLE TO RE-MATERIALIZE YOUR STARSHIP."
  690. 10300 PRINT 
  691. 10310 IF LEFT$(S5$,1)="F" THEN S5$=""
  692. 10315 IF LEFT$(S5$,1)="E" THEN S5$="FAERIE QUEENE"
  693. 10316 A1=0
  694. 10320 IF R1=0 THEN 10355
  695. 10325 G3=R4/I3:B8=(R1+2*R2)/(I1+2*I4)
  696. 10326 A3=G3/B8
  697. 10327 IF  A3<1+.5+RND THEN 10345
  698. 10330 PRINT "AS A RESULT OF YOUR ACTIONS, A TREATY WITH THE KLINGON"
  699. 10331 PRINT "EMPIRE HAS BEEN SIGNED.  THE TERMS OF THE TREATY ARE"
  700. 10332 IF A3<3*RND THEN 10340
  701. 10335 PRINT "FAVORABLE TO THE FEDERATION.":PRINT 
  702. 10336 PRINT "CONGRATULATIONS.":GO TO 10350
  703. 10340 PRINT "HIGHLY UNFAVORABLE TO THE FEDERATION.":GO TO 10350
  704. 10345 PRINT "THE FEDERATION WILL BE DESTROYED!"
  705. 10350 GOSUB 23000:RETURN
  706. 10355 PRINT "SINCE YOU TOOK THE LAST KLINGON WITH YOU, YOU ARE"
  707. 10360 PRINT "A MARTYR AND A HERO.  SOMEDAY MAYBE THEY'LL ERECT"
  708. 10370 PRINT "A STATUE IN YOUR MEMORY.  REST IN PEACE AND TRY NOT"
  709. 10380 PRINT "TO THINK ABOUT PIGEONS!":G1=1:A1=0
  710. 10390 GOSUB 23000:RETURN
  711.  
  712. 11000 REM - HELP
  713.  
  714. 11001 IF C5$<>"DOCKED" THEN 11020
  715. 11010 PRINT "ENSIGN CHEKOV-  'BUT CAPTAIN, WE'RE ALREAD Y DOCKED!'"
  716. 11015 RETURN
  717. 11020 IF D4(9)=0 THEN 11030
  718. 11025 PRINT "SUBSPACE RADIO DAMAGD...CANNOT TRANSMIT.":RETURN
  719. 11030 IF R3<>0 THEN 11050
  720. 11040 PRINT "LT. UHURA-  'CAPTAIN, I'M NOT GETTING ANY RESPONSE";
  721. 11045 PRINT " FROM STARBASE!'":RETURN
  722. 11050 N1=N1+1
  723.       IF B6=0 THEN 11070
  724. 11060 GO TO 11130
  725. 11070 D1=1.0E+30
  726. 11080 FOR L=1 TO R3:X=10*SQR((B2(L)-Q1)^2+(B3(L)-Q2)^2)
  727. 11090 IF X>D1 THEN 11110
  728. 11100 D1=X:K=L
  729. 11110 NEXT L
  730. 11120 Q1=B2(K):Q2=B3(K):GOSUB 18000
  731. 11130 Q$(S6,S7)="."
  732. 11135 PRINT 
  733. 11140 PRINT "STARBASE IN QUADRANT";Q1;"-";Q2;"RESPONDS --";
  734. 11145 PRINT "  ";S5$;" DEMATERIALIZES."
  735. 11146 P2=(1-.98^D1)^.333333
  736. 11150 FOR L=1 TO 3
  737. 11155 IF L=1 THEN PRINT "1ST ";
  738. 11160 IF L=2 THEN PRINT "2ND ";
  739. 11170 IF L=3 THEN PRINT "3RD ";
  740. 11180 PRINT "ATTEMPT TO RE-MATERIALIZE THE ";S5$;". . . . .";
  741. 11190 IF RND>P2 THEN 11220
  742. 11200 PRINT "FAILS.":NEXT L
  743. 11210 F9=11:GOSUB 10000:RETURN
  744. 11220 FOR L=1 TO 5:I=B6+INT(3*RND)-1
  745. 11230 IF (I<1)OR(I>10) THEN 11260
  746. 11235 J=B7+INT(3*RND)-1
  747. 11240 IF (J<1)OR(J>10) THEN 11260
  748. 11250 IF Q$(I,J)="." THEN 11270
  749. 11260 NEXT L:PRINT "FAILS.":GO TO 11210
  750. 11270 PRINT "SUCCEEDS.":S6=I:S7=J:Q$(I,J)=LEFT$(S5$,1)
  751. 11280 GOSUB 7000:PRINT "LT. UHURA-  'CAPTAIN, WE MADE IT!'":RETURN
  752.  
  753. 12000 REM - HITEM
  754. 12001 P4=2:L5=K3:N=1
  755. 12010 FOR K=1 TO L5
  756. 12020 IF H3(K)=0 THEN 12240
  757. 12030 D6=.9+.01*RND:H2=H3(K)*D6^K7(N)
  758. 12040 P3=K6(N)
  759. 12050 P=ABS(P3)
  760.       IF P4*H2<P THEN P=P4*H2
  761. 12060 K6(N)=P3-SGN(P3)*ABS(P)
  762. 12070 X8=K4(N):Y8=K5(N)
  763. 12080 IF H2>4.99 THEN 12100
  764. 12090 PRINT "VERY SMALL HIT ON ":GO TO 12110
  765. 12100 PRINT INT(H2*10+.5)/10;"UNIT HIT ON ";
  766. 12110 M$=Q$(X8,Y8)
  767. 12120 IF  M$="K" THEN PRINT "KLINGON AT";
  768. 12125 IF M$="C" THEN PRINT "COMMANDER AT";
  769. 12130 PRINT X8;"-";Y8
  770. 12140 IF K6(N)<>0 THEN 12180
  771. 12150 A5=X8:A6=Y8:T2$=Q$(X8,Y8):GOSUB 6000
  772. 12160 IF R1<>0 THEN 12250
  773. 12170 F9=1:GOSUB 10000:GO TO 12250
  774. 12180 IF K6(N)<0 THEN 12240
  775. 12190 IF RND<.9 THEN 12240
  776. 12200 IF K6(N)>(.4+.4*RND)*P3 THEN 12240
  777. 12205 PRINT 
  778. 12210 PRINT "***MR. SPOCK - 'CAPTAIN, THE VESSEL AT SECTOR";
  779. 12215 PRINT X8;"-";Y8
  780. 12220 PRINT "   HAS JUST LOST ITS FIREPOWER.'"
  781. 12225 PRINT 
  782. 12230 K6(N)=-K6(N)
  783. 12240 N=N+1
  784. 12250 NEXT K
  785. 12260 RETURN
  786.  
  787. 13000 REM - IMPULSE
  788.  
  789. 13001 J3=0
  790. 13010 IF D4(7)<>0 THEN 13250
  791. 13020 IF E1<=75 THEN 13070
  792. 13030 INPUT "ENTER COURSE AND DISTANCE";D2,D1
  793. 13040 IF D2<0 THEN RETURN
  794. 13050 P3=50+250*D1
  795. 13060 IF P3<E1 THEN 13140
  796. 13070 PRINT 
  797. 13080 PRINT "1ST OFFICER SPOCK-  'CAPTAIN, THE IMPULSE ENGINES"
  798. 13090 PRINT "REQUIRE 50 UNITS OF ENERGY TO ENGAGE, PLUS 250 UNITS"
  799. 13091 PRINT "PER ";
  800. 13100 IF E1>75 THEN 13120
  801. 13110 PRINT "QUADRANT.  THEY ARE, THEREFORE, USELESS NOW.'":RETURN
  802. 13120 PRINT "QUADRANT.  WE CAN GO, THEREFORE, A MAXIMUM OF ";
  803. 13130 PRINT INT((.004*(E1-50)-.05)*10+.5)/10;"QUADRANTS.'":RETURN
  804. 13140 T1=D1/.4
  805. 13150 IF T1<R5 THEN 13200
  806. 13160 PRINT INT((.004*(E1-50)-.05)*10+.05)/10;B$
  807. 13190 IF LEFT$(B$,1)<>"Y" THEN RETURN
  808. 13200 GOSUB 15000:J3=1
  809. 13210 IF A2<>0 THEN RETURN
  810. 13220 E1=E1-P3
  811. 13230 IF E1>0 THEN RETURN
  812. 13240 F9=4:GOSUB 10000:RETURN
  813. 13250 PRINT "IMPULSE ENGINES DAMAGED.":RETURN
  814.  
  815. 14000 REM - LRSCAN
  816.  
  817. 14001 N$="    #"
  818. 14005 PRINT 
  819. 14010 IF D4(2)<>0 THEN 14180
  820. 14020 PRINT "L.R. SCAN FOR  QUADRANT";Q1;"-";Q2:PRINT 
  821. 14030 I=Q1-1:J=Q1+1:K=Q2-1:L=Q2+1
  822. 14040 FOR M=I TO J:FOR N=K TO L
  823. 14050 IF (M<=0)OR(M>8) THEN 14110
  824. 14060 IF (N<=0)OR(N>8) THEN 14110
  825. 14070 IF D4(11)=0 THEN S2(M,N)=1
  826. 14080 IF G(M,N)>=1000 THEN  PRINT "  ***";
  827. 14090 IF G(M,N)<1000 THEN PRINT TAB(POS+5-LEN(STR$(G(M,N))));G(M,N);
  828. 14100 GO TO 14120
  829. 14110 PRINT N$;
  830. 14120 NEXT N
  831. 14130 PRINT 
  832. 14140 NEXT M
  833. 14150 IF D4(11)=0 THEN RETURN
  834. 14155 PRINT 
  835. 14160 PRINT "***WARNING*** - COMPUTER DISABLED - SCAN NOT RECORDED."
  836. 14170 RETURN
  837. 14180 PRINT "LONG RANGE SENSORS DAMAGED.":RETURN
  838.  
  839. 15000 REM - MOVE
  840.  
  841. 15001 A5=(15-D2)*.5235988
  842. 15010 D41=-SIN(A5):D6=COS(A5)
  843. 15020 B8=ABS(D41)
  844. 15030 IF ABS(D6)>B8 THEN B8=ABS(D6)
  845. 15040 D41=D41/B8:D6=D6/B8:T5=0:T6=0
  846. 15050 IF D0+T1<F1(2) THEN 15080
  847. 15060 T5=1:C5$="RED":D1=D1*(F1(2)-D0)/T1+.1
  848. 15070 T1=F1(2)-D0+1E-5
  849. 15080 Q$(S6,S7)=".":X7=S6:Y7=S7:H9=INT(10*D1*B8+.5)
  850. 15090 IF H9=0 THEN 15115
  851. 15100 FOR L=1 TO H9
  852. 15102 X7=X7+D41:X1=INT(X7+.5):Y7=Y7+D6:Y1=INT(Y7+.5)
  853. 15105 IF (X1<1)OR(X1>10) THEN 15150
  854. 15106 IF (Y1<1)OR(Y1>10) THEN 15150
  855. 15108 IF Q$(X1,Y1)="O" THEN 15111
  856. 15109 IF Q$(X1,Y1)<>"." THEN 15125
  857. 15110 NEXT L
  858. 15111 D1=.1*SQR((S6-X1)^2+(S7-Y1)^2)
  859. 15112 S6=X1:S7=Y1
  860. 15115 F4=S6:F5=S7
  861. 15116 IF Q$(X1,Y1)<>"O" THEN 15320
  862. 15120 T2=INT(RND*8)+1:T3=INT(RND*8)+1
  863. 15122 Q1=INT(RND*8)+1:Q2=INT(RND*8)+1:S6=INT(RND*10)+1:S7=INT(RND*10)+1:PRINT 
  864. 15123 PRINT "*** SPACE PORTAL ENTERED ***":GO TO 15307
  865. 15125 T6=1:K=50*D1/T1:D1=.1*SQR((S6-X1)^2+(S7-Y1)^2)
  866. 15127 IF (Q$(X1,Y1)="K")OR(Q$(X1,Y1)="C") THEN 15145
  867. 15129 PRINT :PRINT S5$;" BLOCKED BY ";
  868. 15130 IF Q$(X1,Y1)="*" THEN PRINT "STAR AT";
  869. 15131 IF Q$(X1,Y1)="B" THEN PRINT "STARBASE AT";
  870. 15132 PRINT " SECTOR";X1;"-";Y1;"...."
  871. 15133 PRINT "EMERGENCY STOP REQUIRED";INT(K*10+.5)/10;"UNITS OF ENERGY."
  872. 15135 E1=E1-K
  873. 15137 S6=INT(X7-D41+.5):F4=S6:S7=INT(Y7-D6+.5):F5=S7
  874. 15140 IF E1>0 THEN 15320
  875. 15141 F9=4:GOSUB 10000:RETURN
  876. 15145 S6=X1:S7=Y1:GOSUB 22000:F4=S6:F5=S7:GO TO 15320
  877. 15150 IF K3=0 THEN 15165
  878. 15155 FOR L=1 TO K3
  879. 15156 F3=SQR((X1-K4(L))^2+(Y1-K5(L))^2)
  880. 15158 K8(L)=.5*(F3+K7(L)):NEXT L
  881. 15160 IF G(Q1,Q2)<>1000 THEN GOSUB 1000
  882. 15162 IF A2<>0 THEN RETURN
  883. 15165 X7=10*(Q1-1)+S6:Y7=10*(Q2-1)+S7
  884. 15170 X1=INT(X7+10*D1*B8*D41+.5)
  885. 15175 Y1=INT(Y7+10*D1*B8*D6+.5):L6=0
  886. 15180 L5=0
  887. 15185 IF X1>0 THEN 15195
  888. 15190 X1=-X1+1:L5=1
  889. 15195 IF Y1>0 THEN 15210
  890. 15200 Y1=-Y1+1:L5=1
  891. 15210 IF X1<=80 THEN 15220
  892. 15215 X1=161-X1:L5=1
  893. 15220 IF Y1<=80 THEN 15230
  894. 15225 Y1=161-Y1:L5=1
  895. 15230 IF L5=0 THEN 15240
  896. 15235 L6=1:GO TO 15180
  897. 15240 IF L6=0 THEN 15270
  898. 15260 PRINT :PRINT "*** MESSAGE FROM STARFLEET COMMAND.....STARDATE";
  899. 15261 PRINT INT(D0*10+.5)/10:PRINT :PRINT "'PERMISSION TO CROSS GALACTIC ";
  900. 15262 PRINT "PERIMETER IS HEREBY DENIED.'"
  901. 15263 PRINT "        'SHUT DOWN ENGINES IMMMEDIATELY!'"
  902. 15264 PRINT 
  903. 15265 PRINT "SCOTT HERE - 'ENGINES SHUT DOWN AT ";
  904. 15266 Z1=INT((X1+9)/10):Z2=INT((Y1+9)/10)
  905. 15267 PRINT "QUADRANT";Z1;"-";Z2;",  ";
  906. 15268 PRINT "SECTOR";X1-10*(Z1-1);"-";Y1-10*(Z2-1);"'"
  907. 15270 IF T5<>0 THEN RETURN
  908. 15295 Q1=INT((X1+9)/10):Q2=INT((Y1+9)/10)
  909. 15296 S6=X1-10*(Q1-1):S7=Y1-10*(Q2-1)
  910. 15307 GOSUB 18400
  911. 15310 PRINT :PRINT "ENTERING THE ";G2$;" QUADRANT  (";Q1;"-";Q2;")"
  912. 15315 Q$(S6,S7)=LEFT$(S5$,1):GOSUB 18000:RETURN
  913. 15320 Q$(S6,S7)=LEFT$(S5$,1)
  914. 15321 IF L6=1 THEN RETURN
  915. 15325 IF K3=0 THEN 15390
  916. 15330 FOR L=1 TO K3
  917. 15340 F3=SQR((F4-K4(L))^2+(F5-K5(L))^2)
  918. 15350 K8(L)=.5*(K7(L)+F3)
  919. 15360 K7(L)=F3
  920. 15370 NEXT L
  921. 15380 GOSUB 28000
  922. 15390 GOSUB 17000:RETURN
  923.  
  924. 16000 REM-MOVECOM
  925.  
  926. 16001 A=1:B=1
  927. 16010 FOR K=1 TO K3
  928. 16020 C=K4(K):D=K5(K)
  929. 16030 IF Q$(C,D)="C" THEN 16050
  930. 16040 NEXT K
  931. 16050 N=0:F=K6(K)+100*K3
  932. 16060 IF F>1000 THEN N=INT(RND*K7(K)+1)
  933. 16065 IF ((C5$="DOCKED")AND((B4<>Q1)OR(B5<>Q2))) THEN N=-S8
  934. 16070 IF N=0 THEN N=INT(((F+200*RND)/150)-5)
  935. 16071 IF N=0 THEN RETURN
  936. 16072 IF (N>0)AND(K7(K)<1.5) THEN RETURN
  937. 16075 IF ABS(N)>S8 THEN N=SGN(N)*ABS(S8)
  938. 16080 T=ABS(N):P=S6-C:Q=S7-D
  939. 16085 IF 2*ABS(P)<ABS(Q) THEN P=0
  940. 16090 IF 2*ABS(Q)<ABS(P) THEN Q=0
  941. 16095 IF P<>0 THEN P=SGN(P*N)
  942. 16100 IF Q<>0 THEN Q=SGN(Q*N)
  943. 16105 R=C:S=D:Q$(C,D)="."
  944. 16110 FOR L2=1 TO T:L=R+P:M=S+Q
  945. 16115 IF (L>0)AND(L<=10) THEN 16120
  946. 16117 ON SGN(N)+2 GO TO 16240,16165,16165
  947. 16120 IF (M>0)AND(M<=10) THEN 16130
  948. 16125 ON SGN(N)+2 GO TO 16240,16135,16135
  949. 16130 IF Q$(L,M)="." THEN 16195
  950. 16135 IF (Q=B)OR(P=0) THEN 16165
  951. 16140 M=S+B
  952. 16145 IF (M>0)AND(M<=10) THEN 16155
  953. 16150 ON SGN(N)+2 GO TO 16240,16160,16160
  954. 16155 IF Q$(L,M)="." THEN 16195
  955. 16160 B=-B
  956. 16165 IF (P=A)OR(Q=0) THEN 16200
  957. 16170 L=R+A
  958. 16175 IF (L>0)AND(L<=10) THEN 16185
  959. 16180 ON SGN(N)+2 GO TO 16240,16190,16190
  960. 16185 IF Q$(L,M)="." THEN 16195
  961. 16190 A=-A:GO TO 16200
  962. 16195 R=L:S=M
  963. 16200 NEXT L2
  964. 16205 Q$(R,S)="C"
  965. 16210 IF (R=C)AND(S=D) THEN RETURN
  966. 16215 K4(K)=R:K5(K)=S:K7(K)=SQR((S6-R)^2+(S7-S)^2)
  967. 16220 K8(K)=K7(K)
  968.       IF N>0 THEN PRINT "***COMMANDER ADVANCES TO";
  969. 16225 IF N<0 THEN PRINT "***COMMANDER RETREATS TO";
  970. 16230 PRINT " SECTOR";R;"-";S:GOSUB 28000:RETURN
  971. 16240 I=Q1+INT((L+9)/10)-1:J=Q2+INT((M+9)/10)-1
  972. 16245 IF (I<1)OR(I>8) THEN 16350
  973. 16250 IF (J<1)OR(J>8) THEN 16350
  974. 16260 FOR L3=1 TO R2
  975. 16265 IF (C1(L3)=I)AND(C2(L3)=J) THEN 16350
  976. 16270 NEXT L3:PRINT "***COMMANDER ESCAPES TO ";
  977. 16275 PRINT "QUADRANT";I;"-";J;"  (AND REGAINS STRENGTH)"
  978. 16280 K4(K)=K4(K3):K5(K)=K5(K3):K7(K)=K7(K3):K8(K)=K8(K3)
  979. 16285 K6(K)=K6(K3):K3=K3-1:C3=0
  980. 16290 IF C5$<>"DOCKED" THEN GOSUB 17000
  981. 16300 GOSUB 28000
  982. 16310 G(Q1,Q2)=G(Q1,Q2)-100:G(I,J)=G(I,J)+100
  983. 16320 FOR L3=1 TO R2
  984. 16330 IF (C1(L3)=Q1)AND(C2(L3)=Q2) THEN 16340
  985. 16335 NEXT L3
  986. 16340 C1(L3)=I:C2(L3)=J:RETURN
  987. 16350 A=-A:B=-B:GO TO 16200
  988.  
  989. 17000 REM - NEWCOND
  990.  
  991. 17001 C5$="GREEN"
  992. 17010 IF E1<1000 THEN C5$="YELLOW"
  993. 17020 IF G(Q1,Q2)>99 THEN C5$="RED"
  994. 17030 RETURN
  995.  
  996. 18000 REM- NEW QUAD
  997.  
  998. 18001 J4=1:B6=0:B7=0:K3=0:C3=0
  999. 18010 U=G(Q1,Q2)
  1000. 18020 IF U>999 THEN 18290
  1001. 18030 K3=INT(.01*U):FOR A=1 TO 10:FOR B=1 TO 10:Q$(A,B)=".":NEXT B:NEXT A
  1002. 18040 Q$(S6,S7)=LEFT$(S5$,1):U=G(Q1,Q2)
  1003.       IF U<100 THEN 18150
  1004. 18050 U=U-100*K3:FOR A=1 TO K3
  1005. 18060 S=INT(RND*10)+1:K4(A)=S:T=INT(RND*10)+1:K5(A)=T
  1006. 18070 IF Q$(S,T)<>"." THEN 18060
  1007. 18080 Q$(S,T)="K":K7(A)=SQR((S6-S)^2+(S7-T)^2):K8(A)=K7(A)
  1008. 18090 K6(A)=RND*150+325:NEXT A
  1009. 18100 IF R2=0 THEN 18140
  1010. 18110 FOR A=1 TO R2
  1011. 18115 IF (C1(A)=Q1)AND(C2(A)=Q2) THEN 18130
  1012. 18120 NEXT A:GO TO 18140
  1013. 18130 Q$(S,T)="C":K6(K3)=1000+400*RND:C3=1
  1014. 18140 GOSUB 28000
  1015. 18150 IF U<10 THEN 18190
  1016. 18160 U=U-10
  1017. 18170 B6=INT(RND*10)+1:B7=INT(RND*10)+1
  1018.       IF Q$(B6,B7)<>"." THEN 18170
  1019. 18180 Q$(B6,B7)="B"
  1020. 18190 GOSUB 17000
  1021.       IF U<1 THEN RETURN
  1022. 18200 FOR A=1 TO U
  1023. 18210 S=INT(RND*10)+1:T=INT(RND*10)+1
  1024.       IF Q$(S,T)<>"." THEN 18210
  1025. 18220 Q$(S,T)="*":NEXT A
  1026. 18230 IF (T2<>Q1)OR(T3<>Q2) THEN RETURN
  1027. 18240 S=INT(RND*10)+1:T=INT(RND*10)+1
  1028.       IF Q$(S,T)<>"." THEN 18240
  1029. 18250 Q$(S,T)="O":PRINT 
  1030. 18260 PRINT "MR. SPOCK-  'CAPTAIN, MY SENSORS DETECT A"
  1031. 18270 PRINT "SPACE WARP SOMEWHERE IN THIS QUADRANT.'"
  1032. 18280 RETURN
  1033. 18290 FOR A=1 TO 10:FOR B=1 TO 10:Q$(A,B)=".":NEXT B:NEXT A
  1034. 18300 Q$(S6,S7)=LEFT$(S5$,1):RETURN
  1035. 18400 G4$="III":L=2
  1036.       IF Q2>=5 THEN 18420
  1037. 18410 L=1
  1038. 18420 G2$=G1$(2*(Q1-1)+L):L=Q2
  1039. 18425 IF L<=4 THEN 18440
  1040. 18430 L=Q2-4
  1041. 18440 G3$="IV"
  1042.       IF L=4 THEN 18460
  1043. 18450 G3$=LEFT$(G4$,L)
  1044. 18460 G2$=G2$+" "+G3$:RETURN
  1045.  
  1046. 19000 REM - NOVA
  1047.  
  1048. 19001 IF RND>.1 THEN 19015
  1049. 19010 GOSUB 27000:RETURN
  1050. 19015 Q$(A5,A6)=".":PRINT "***STAR AT SECTOR";A5;"-";A6;"NOVAS."
  1051. 19020 G(Q1,Q2)=G(Q1,Q2)-1:S1=S1+1
  1052. 19025 B9=1:T6=1:T7=1:K=0:X1=0:Y1=0
  1053. 19030 H4(B9,1)=A5:H4(B9,2)=A6
  1054. 19035 FOR M=B9 TO T6:FOR Q=1 TO 3:FOR J=1 TO 3
  1055. 19040 IF J*Q=4 THEN 19260
  1056. 19045 J5=H4(M,1)+Q-2:J6=H4(M,2)+J-2
  1057. 19050 IF (J5<1)OR(J5>10) THEN 19260
  1058. 19055 IF (J6<1)OR(J6>10) THEN 19260
  1059. 19060 IF Q$(J5,J6)="." THEN 19260
  1060. 19065 IF Q$(J5,J6)="O" THEN 19260
  1061. 19070 IF Q$(J5,J6)<>"*" THEN 19105
  1062. 19075 IF RND>=.1 THEN 19085
  1063. 19080 X2=J5:Y2=J6:GOSUB 27000:RETURN
  1064. 19085 T7=T7+1:H4(T7,1)=J5:H4(T7,2)=J6:G(Q1,Q2)=G(Q1,Q2)-1
  1065. 19090 S1=S1+1:PRINT "***STAR AT SECTOR";J5;"-";J6;"NOVAS."
  1066. 19100 GO TO 19255
  1067. 19105 IF Q$(J5,J6)<>"B" THEN 19140
  1068. 19110 G(Q1,Q2)=G(Q1,Q2)-10:FOR V=1 TO R3
  1069. 19115 IF (B2(V)<>Q1)OR(B3(V)<>Q2) THEN 19125
  1070. 19120 B2(V)=B2(R3):B3(V)=B3(R3)
  1071. 19125 NEXT V:R3=R3-1:B6=0:B7=0:B1=B1+1:GOSUB 17000
  1072. 19130 PRINT "***STARBASE AT SECTOR";J5;"-";J6;"DESTROYED."
  1073. 19135 GO TO 19255
  1074. 19140 IF (S6<>J5)OR(S7<>J6) THEN 19190
  1075. 19145 PRINT "***STARSHIP BUFFETED BY NOVA."
  1076.       IF S4<>0 THEN 19155
  1077. 19150 E1=E1-1000:GOTO 19170
  1078. 19155 IF S3>=1000 THEN 19180
  1079. 19160 D6=1000-S3:E1=E1-D6:GOSUB 17000:S3=0:S4=0
  1080. 19165 PRINT "***STARSHIP SHIELDS KNOCKED OUT.":D4(8)=.005*D5*RND*D6
  1081. 19170 IF E1>0 THEN 19185
  1082. 19175 F9=7:GOSUB 10000:RETURN
  1083. 19180 S3=S3-1000
  1084. 19185 X1=X1+S6-H4(M,1):Y1=Y1+S7-H4(M,2):K=K+1:GOTO 19260
  1085. 19190 IF Q$(J5,J6)<>"C" THEN 19250
  1086. 19195 FOR V=1 TO K3
  1087. 19200 IF (K4(V)=J5)AND(K5(V)=J6) THEN 19210
  1088. 19205 NEXT V
  1089. 19210 K6(V)=K6(V)-800
  1090.       IF K6(V)<=0 THEN 19250
  1091. 19215 N5=J5+J5-H4(M,1):N6=J6+J6-H4(M,2)
  1092. 19220 PRINT "***COMMANDER AT SECTOR";J5;"-";J6;"DAMAGED";
  1093. 19225 IF (N5<1)OR(N5>10)OR(N6<1)OR(N6>10) THEN 19245
  1094. 19230 PRINT " AND BUFFETED TO SECTOR";N5;"-";N6
  1095. 19235 Q$(N5,N6)="C":K4(V)=N5:K5(V)=N6
  1096. 19240 K7(V)=SQR((S6-N5)^2+(S7-N6)^2):K8(V)=K7(V)
  1097. 19241 Q$(J5,J6)="."
  1098. 19245 PRINT :GOTO 19260
  1099. 19250 A5=J5:A6=J6:T2$=Q$(J5,J6):GOSUB 6000:GOTO 19260
  1100. 19255 PRINT :Q$(J5,J6)="."
  1101. 19260 NEXT J:NEXT Q:NEXT M
  1102. 19265 IF T6=T7 THEN 19280
  1103. 19270 B9=T6+1:T6=T7:GOTO 19035
  1104. 19280 IF K=0 THEN RETURN
  1105. 19290 D1=K*.1
  1106. 19300 IF X1<>0 THEN X1=SGN(X1)
  1107. 19310 IF Y1<>0 THEN Y1=SGN(Y1)
  1108. 19320 I=3*(X1+1)+Y1+2
  1109. 19330 D2=C5(I)
  1110. 19340 IF D2=0 THEN D1=0
  1111. 19350 IF D1=0 THEN RETURN
  1112. 19360 PRINT :PRINT "FORCE OF NOVA DISPLACES STARSHIP."
  1113. 19370 GOSUB 15000:RETURN
  1114.  
  1115. 20000 REM-PHASERS
  1116.  
  1117. 20001 P=2:J3=1
  1118. 20020 IF C5$<>"DOCKED" THEN 20030
  1119. 20025 PRINT "PHASERS CAN'T BE FIRED THRU BASE SHIELDS.":GO TO 20080
  1120. 20030 IF D4(3)=0 THEN 20050
  1121. 20040 PRINT "PHASER BANKS DAMAGED.":GOTO 20080
  1122. 20050 IF S4=0 THEN 20060
  1123. 20055 PRINT "SHIELDS MUST BE DOWN TO FIRE PHASERS.":GOTO 20080
  1124. 20060 IF K3>0 THEN 20090
  1125. 20065 PRINT 
  1126. 20070 PRINT "MR. SPOCK - 'CAPTAIN, THE SHORT-RANGE SENSORS"
  1127. 20075 PRINT "    DETECT NO KLINGONS IN THIS QUADRANT.'"
  1128. 20080 J3=0:RETURN
  1129. 20090 PRINT "PHASERS LOCKED ON TARGET.  ENERGY AVAILABLE=";
  1130. 20095 PRINT .01*INT(100*E1)
  1131. 20100 INPUT "UNITS TO FIRE";P1
  1132.       IF P1<E1 THEN 20120
  1133. 20110 PRINT "ENERGY AVAILABLE =";:GOTO 20095
  1134. 20120 IF P1>0 THEN 20140
  1135. 20130 J3=0:RETURN
  1136. 20140 E1=E1-P1
  1137. 20142 IF D4(11)=0 THEN 20147
  1138. 20144 P1=P1*(RND*.5+.5)
  1139. 20145 PRINT :PRINT "COMPUTER MALFUNCTION HAMPERS PHASER ACCURACY.":PRINT 
  1140. 20147 E=P1
  1141.       IF K3=0 THEN 20310
  1142. 20150 E=0:T5=(K3*(K3+1))/2
  1143. 20160 FOR I=1 TO K3:H3(I)=((K3+1-I)/T5)*P1
  1144. 20170 H5(I)=ABS(K6(I))/(P*.9^K7(I))
  1145. 20180 IF H3(I)<=H5(I) THEN 20200
  1146. 20190 E=E+(H3(I)-H5(I)):H3(I)=H5(I)
  1147. 20200 NEXT I
  1148. 20210 IF E=0 THEN 20280
  1149. 20220 FOR I=1 TO K3:R7=H5(I)-H3(I)
  1150. 20230 IF R7<=0 THEN 20260
  1151. 20240 IF R7>=E THEN 20270
  1152. 20250 H3(I)=H5(I):E=E-R7
  1153. 20260 NEXT I:GOTO 20280
  1154. 20270 H3(I)=H3(I)+E:E=0
  1155. 20280 GOSUB 12000
  1156. 20290 IF (E<>0)AND(A2=0) THEN 20310
  1157. 20300 J3=1:RETURN
  1158. 20310 PRINT INT(E*10+.5)/10;"EXPENDED ON EMPTY SPACE.":J3=1:RETURN
  1159.  
  1160. 21000 REM - PHOTONS
  1161.  
  1162. 21001 J3=1
  1163.       IF D4(4)=0 THEN 21015
  1164. 21010 PRINT "PHOTON TUBES DAMAGED.":GOTO 21035
  1165. 21015 IF T4<>0 THEN 21025
  1166. 21020 PRINT "NO TORPEDOS LEFT.":GOTO 21035
  1167. 21025 INPUT "TORPEDO COURSE";C6
  1168. 21030 IF C6>=0 THEN 21040
  1169. 21035 J3=0:RETURN
  1170. 21040 INPUT "BURST OF 3";B$:N=1
  1171. 21045 IF LEFT$(B$,1)="N" THEN 21066
  1172. 21050 IF LEFT$(B$,1)<>"Y" THEN 21040
  1173. 21051 IF T4>2 THEN 21060
  1174. 21055 PRINT "NO BURST.  ONLY";T4;"TORPEDOS LEFT.":GOTO 21035
  1175. 21060 INPUT "SPREAD  ANGLE (3 - 30 DEG)";G2
  1176. 21061 IF G2<0 THEN 21035
  1177. 21062 IF (G2<3)OR(G2>30) THEN 21060
  1178. 21063 G2=G2/60
  1179. 21065 N=3
  1180. 21066 REM - CONTINUE
  1181. 21070 FOR Z6=1 TO N
  1182. 21075 IF C5$<>"DOCKED" THEN T4=T4-1
  1183. 21080 Z7=Z6:R=RND
  1184. 21085 R=(R+RND)*.5-.5
  1185. 21090 IF (R>=-.4)AND(R<=.4) THEN 21125
  1186. 21095 R=(RND+1.2)*R
  1187.       IF N=3 THEN 21105
  1188. 21100 PRINT "***TORPEDO MISFIRES...":GOTO 21110
  1189. 21105 PRINT "***TORPEDO NUMBER";Z6;"MISFIRES..."
  1190. 21110 IF  RND>.2 THEN 21125
  1191. 21115 PRINT "***PHOTON TUBES DAMAGED BY MISFIRE."
  1192. 21120 D4(4)=D5*(1+2*RND):GOTO 21440
  1193. 21125 IF (S4<>0)OR(C5$="DOCKED") THEN R=R+.001*S3*R
  1194. 21130 A3=C6+.25*R
  1195.       IF N=1 THEN 21140
  1196. 21135 A8=(15-A3+(2-Z6)*G2)*.5235988:PRINT 
  1197. 21137 PRINT "TRACK FOR TORPEDO NUMBER";Z7;"--":GOTO 21145
  1198. 21140 PRINT :PRINT "TORPEDO TRACK --":A8=(15-A3)*.5235988
  1199. 21145 X4=-SIN(A8):Y4=COS(A8):B8=ABS(X4)
  1200. 21146 IF ABS(Y4)>ABS(X4) THEN B8=ABS(Y4)
  1201. 21150 X4=X4/B8:Y4=Y4/B8:X5=S6:Y5=S7
  1202. 21155 FOR L9=1 TO 15:X5=X5+X4:A5=INT(X5+.5)
  1203. 21160 IF (A5<1)OR(A5>10) THEN 21430
  1204. 21165 Y5=Y5+Y4:A6=INT(Y5+.5)
  1205. 21170 IF (A6<1)OR(A6>10) THEN 21430
  1206. 21175 IF (L9=5)OR(L9=9) THEN PRINT 
  1207. 21180 PRINT INT(X5*10+.5)/10;"-";INT(Y5*10+.5)/10;", ";
  1208. 21185 IF Q$(A5,A6)<>"." THEN 21195
  1209. 21190 GOTO 21425
  1210. 21195 PRINT 
  1211.       IF Q$(A5,A6)="K" THEN 21220
  1212. 21200 IF Q$(A5,A6)<>"C" THEN 21325
  1213. 21205 IF RND>.1 THEN 21220
  1214. 21210 PRINT "***COMMANDER AT SECTOR";A5;"-";A6;"USES ANTI-PHOTON";
  1215. 21215 PRINT " DEVICE!":PRINT "   TORPEDO NEUTRALIZED.":GOTO 21435
  1216. 21220 FOR V=1 TO K3
  1217. 21225 IF (A5=K4(V))AND(A6=K5(V)) THEN 21235
  1218. 21230 NEXT V
  1219. 21235 K=K6(V):W3=200+800*RND
  1220. 21240 IF ABS(K)<W3 THEN W3=ABS(K)
  1221. 21245 K6(V)=K-SGN(K)*ABS(W3)
  1222.       IF K6(V)<>0 THEN 21255
  1223. 21250 T2$=Q$(A5,A6):GOSUB 6000:GOTO 21435
  1224. 21255 IF Q$(A5,A6)="K" THEN PRINT "***KLINGON AT";
  1225. 21260 IF Q$(A5,A6)="C" THEN PRINT "***COMMANDER AT";
  1226. 21265 PRINT A5;"-";A6;
  1227. 21270 A7=A8+2.5*(RND-.5)
  1228. 21275 W3=ABS(-SIN(A7))
  1229.       IF ABS(COS(A7))>W3 THEN W3=ABS(COS(A7))
  1230. 21280 X7=-SIN(A7)/W3:Y7=COS(A7)/W3
  1231. 21285 P=INT(A5+X7+.5):Q=INT(A6+Y7+.5)
  1232. 21290 IF (P<1)OR(P>10)OR(Q<1)OR(Q>10) THEN 21320
  1233. 21295 IF Q$(P,Q)<>"." THEN 21320
  1234. 21300 Q$(P,Q)=Q$(A5,A6):Q$(A5,A6)=".":PRINT "DAMAGED--"
  1235. 21305 PRINT "   DISPLACED BY BLAST TO SECTOR";P;"-";Q
  1236. 21310 K4(V)=P:K5(V)=Q:K7(V)=SQR((S6-P)^2+(S7-Q)^2)
  1237. 21311 K8(V)=K7(V)
  1238. 21315 GOSUB 28000:GOTO 21435
  1239. 21320 PRINT "DAMAGED, BUT NOT DESTROYED.":GOTO 21435
  1240. 21325 IF Q$(A5,A6)<>"B" THEN 21365
  1241. 21330 PRINT "***STARBASE DESTROYED...CONGRATULATIONS...YOU TURKEY!"
  1242. 21335 IF S2(Q1,Q2)<0 THEN S2(Q1,Q2)=0
  1243. 21340 FOR W=1 TO R3
  1244. 21345 IF (B2(W)<>Q1)OR(B3(W)<>Q2) THEN 21355
  1245. 21350 B2(W)=B2(R3):B3(W)=B3(R3)
  1246. 21355 NEXT W:Q$(A5,A6)=".":R3=R3-1:B6=0:B7=0
  1247. 21360 G(Q1,Q2)=G(Q1,Q2)-10:B1=B1+1:GOSUB 17000:GOTO 21435
  1248. 21365 IF Q$(A5,A6)<>"*" THEN 21405
  1249. 21370 IF RND>.15 THEN 21385
  1250. 21375 PRINT "***STAR AT SECTOR";A5;"-";A6;"UNAFFECTED BY PHOTON BLAST"
  1251. 21380 GOTO 21435
  1252. 21385 X2=A5:Y2=A6:GOSUB 19000:A5=X2:A6=Y2
  1253. 21390 IF G(Q1,Q2)=1000 THEN RETURN
  1254. 21395 IF A2<>0 THEN RETURN
  1255. 21400 GOTO 21435
  1256. 21405 PRINT :PRINT "AAAAAIIIIIIIEEEEEEEAAAAAAAUUUUUUGGGGGGGHHHHHHHHHH!!!"
  1257. 21410 PRINT "    HACK!     HACK!    COUGH!      *CHOKE!*"
  1258. 21415 PRINT :PRINT "MR. SPOCK-  'FASCINATING!'":Q$(A5,A6)="."
  1259. 21420 T2=0:T3=0:GOTO 21435
  1260. 21425 NEXT L9
  1261. 21430 PRINT :PRINT "TORPEDO MISSED!"
  1262. 21435 NEXT Z6
  1263. 21440 IF R1<>0 THEN RETURN
  1264. 21445 F9=1:GOSUB 10000:RETURN
  1265.  
  1266. 22000 REM - RAM
  1267.  
  1268. 22001 PRINT :PRINT "*** RED ALERT!!   RED ALERT!! ***":PRINT 
  1269. 22010 PRINT "*** COLLISION IMMINENT!!":PRINT 
  1270. 22020 PRINT "*** ";S5$;" RAMS ";:W7=1
  1271.       IF Q$(S6,S7)="C" THEN W7=2
  1272. 22030 IF W7=1 THEN PRINT "KLINGON AT ";
  1273. 22040 IF W7=2 THEN PRINT "COMMANDER AT ";
  1274. 22050 PRINT "SECTOR";S6;"-";S7:A5=S6:A6=S7:T2$=Q$(S6,S7)
  1275. 22060 GOSUB 6000:PRINT "***";S5$;" HEAVILY DAMAGED."
  1276. 22070 K=INT(5+RND*20):PRINT "***SICKBAY REPORTS";K;"CASUALTIES!"
  1277. 22080 C4=C4+K:FOR L=1 TO 12:I=RND
  1278. 22090 J=(3.5*W7*(RND+I)+1)*D5
  1279. 22100 IF L=6 THEN J=J/3
  1280. 22110 D4(L)=D4(L)+T1+J:NEXT L:D4(6)=D4(6)-3
  1281. 22120 IF D4(6)<0 THEN D4(6)=0
  1282. 22130 S4=0
  1283.       IF R1<>0 THEN RETURN
  1284. 22140 F9=1:GOSUB 10000:RETURN
  1285.  
  1286. 23000 REM - SCORE
  1287.  
  1288. 23001 P=D0-J2
  1289.       IF (P<>0)AND(R1=0) THEN 23020
  1290. 23010 IF P<5 THEN P=5
  1291. 23020 N=(K2+K1)/P:K=INT(500*N+.5):L=0
  1292. 23030 IF G1<>0 THEN L=100*S8
  1293. 23035 I=0
  1294. 23040 IF LEFT$(S5$,1)="E" THEN M=0
  1295. 23045 IF LEFT$(S5$,1)="F" THEN M=1
  1296. 23050 IF LEFT$(S5$,1)="" THEN M=2
  1297. 23060 IF A1=0 THEN I=200
  1298. 23070 J=10*K1+50*K2+K+L-I-100*B1-100*M-35*N1-3*S1-C4
  1299. 23080 PRINT 
  1300.       IF J<>0 THEN 23100
  1301. 23090 PRINT "AS YET, YOU HAVE NO SCORE.":RETURN
  1302. 23100 PRINT "YOUR SCORE --":PRINT 
  1303.       IF K1=0 THEN 23120
  1304. 23110 PRINT K1;TAB(5);"ORDINARY KLINGON(S) DESTROYED";TAB(36);10*K1
  1305. 23120 IF K2=0 THEN 23140
  1306. 23130 PRINT K2;TAB(5);"KLINGON COMMANDER(S) DESTROYED";TAB(36);50*K2
  1307. 23140 IF K=0 THEN 23160
  1308. 23150 PRINT INT(N*10+.5)/10;TAB(5);"KLINGONS PER STARDATE, AVERAGE";
  1309. 23155 PRINT TAB(36);K
  1310. 23160 IF S1=0 THEN 23180
  1311. 23170 PRINT S1;TAB(5);"STAR(S) DESTROYED";TAB(36);-3*S1
  1312. 23180 IF B1=0 THEN 23200
  1313. 23190 PRINT B1;TAB(5);"STARBASES DESTROYED";TAB(36);-100*B1
  1314. 23200 IF N1=0 THEN 23220
  1315. 23210 PRINT N1;TAB(5);"SOS CALL(S) TO A STARBASE";TAB(36);-35*N1
  1316. 23220 IF C4=0 THEN 23240
  1317. 23230 PRINT C4;TAB(5);"CASUALTIES INCURRED";TAB(36);-C4
  1318. 23240 IF M=0 THEN 23260
  1319. 23250 PRINT M;TAB(5);"SHIP(S) LOST OR DESTROYED";TAB(36)-100*M
  1320. 23260 IF A1<>0 THEN 23280
  1321. 23270 PRINT "PENALTY FOR  GETTING YOURSELF KILLED";TAB(36);-200
  1322. 23280 IF G1=0 THEN 23300
  1323. 23290 PRINT TAB(5);"BONUS FOR WINNING ";S$(S8);" GAME";TAB(36);L
  1324. 23300 PRINT TAB(5);"-------------------------------------"
  1325. 23310 PRINT TAB(28);" TO TAL";TAB(36);J;"**":RETURN
  1326.  
  1327. 24000 REM-SETUP
  1328.  
  1329. 24001 A2=0:G1=0:GOSUB 4000:S5$="ENTERPRISE"
  1330. 24010 I7=5000:E1=I7:I8=2500:S3=I8:S4=0:S9=S4:J1=4:L1=J1
  1331. 24020 Q1=INT(RND*8)+1:Q2=INT(RND*8)+1:S6=INT(RND*10)+1:S7=INT(RND*10)+1:I9=10:T4=I9
  1332. 24030 W1=5:W2=25:FOR I=1 TO 12:D4(I)=0:NEXT 
  1333. 24040 J2=100*INT(31*RND+20):D0=J2:K1=0:K2=0:N1=0:N2=0:R6=0:C4=0
  1334. 24050 A1=1:D3=.25:FOR I=1 TO 8:FOR J=1 TO 8:S2(I,J)=0:NEXT J:NEXT I
  1335. 24060 F1(1)=D0-.5*I5*LOG(RND):F1(5)=1.0E+30
  1336. 24070 F1(2)=D0-1.5*(I5/R2)*LOG(RND):I6=0
  1337. 24080 F1(3)=D0-.3*I5*LOG(RND):F1(4)=D0-.3*I5*LOG(RND)
  1338. 24090 FOR I=1 TO 8:FOR J=1 TO 8:K=INT(RND*9+1):I6=I6+K
  1339. 24100 G(I,J)=K:NEXT J:NEXT I:S1=0
  1340. 24110 FOR  I=1 TO I2
  1341. 24120 X=INT(RND*6+2):Y=INT(RND*6+2)
  1342. 24130 IF G(X,Y)>=10 THEN 24120
  1343. 24140 IF I<2 THEN 24180
  1344. 24150 K=I-1:FOR J=1 TO K:D1=SQR((B2(J)-X)^2+(B3(J)-Y)^2)
  1345. 24160 IF D1<2 THEN 24120
  1346. 24170 NEXT J
  1347. 24180 B2(I)=X:B3(I)=Y:S2(X,Y)=-1:G(X,Y)=G(X,Y)+10:NEXT I
  1348. 24190 B1=0:K=I1-I4:L=INT(.25*S8*(9-L2)+1)
  1349. 24200 M=INT((1-RND^2)*L)
  1350.       IF M>K THEN M=K
  1351. 24210 N=100*M
  1352. 24220 X=INT(RND*8)+1:Y=INT(RND*8)+1
  1353.       IF G(X,Y)+N>999 THEN 24220
  1354. 24230 G(X,Y)=G(X,Y)+N:K=K-M
  1355.       IF K<>0 THEN 24200
  1356. 24240 FOR I=1 TO I4
  1357. 24250 X=INT(RND*8)+1:Y=INT(RND*8)+1
  1358.       IF (G(X,Y)<99)AND(RND<.75) THEN 24250
  1359. 24260 IF G(X,Y)>899 THEN 24250
  1360. 24270 IF I=1 THEN 24300
  1361. 24280 M=I-1:FOR J=1 TO M
  1362.       IF (C1(J)=X)AND(C2(J)=Y) THEN 24250
  1363. 24290 NEXT J
  1364. 24300 G(X,Y)=G(X,Y)+100:C1(I)=X:C2(I)=Y:NEXT I
  1365. 24305 I=INT(D0):PRINT :S0=0
  1366. 24310 T2=INT(RND*8)+1:T3=INT(RND*8)+1
  1367.       IF G(T2,T3)<100 THEN 24310
  1368. 24320 IF S8<>1 THEN 24440
  1369. 24330 PRINT "IT IS STARDATE";I;"...THE ORGANIAN PEACE TREATY BETWEEN"
  1370. 24340 PRINT "THE UNITED FEDERATION OF PLANETS AND THE KLINGON EMPIRE"
  1371. 24350 PRINT "HAS COLLAPSED AND THE FEDERATION IS BEING ATTACKED BY A"
  1372. 24360 PRINT "DEADLY KLINGON INVASION FLEET.  AS CAPTAIN OF THE STARSHIP"
  1373. 24370 PRINT "U.S.S. ENTERPRISE, IT IS YOUR MISSION TO SEEK OUT AND"
  1374. 24380 PRINT "DESTROY THIS INVASION FOR CE OF";I1;"BATTLE CRUISERS."
  1375. 24390 PRINT :PRINT "YOU HAVE AN INITIAL ALLOTMENT OF";INT(I5);
  1376. 24400 PRINT "STARDATES":PRINT " TO  COMPLETE YOUR MISSION."
  1377. 24410 PRINT "AS THE MISSION PROCEEDS, YOU MAY BE GIVEN MORE TIME."
  1378. 24420 PRINT :PRINT "YOU WILL HAVE";I2;"SUPPORTING STARBASE(S).":PRINT 
  1379. 24430 GOTO 24515
  1380. 24440 PRINT "STARDATE..............";I
  1381. 24450 PRINT "NUMBER OF KLINGONS....";I1
  1382. 24460 PRINT "NUMBER OF STARDATES...";INT(I5)
  1383. 24470 PRINT "NUMBER OF STARBASES...";I2
  1384. 24480 PRINT "STARBASE LOCATIONS....";
  1385. 24490 FOR I=1 TO I2:PRINT B2(I);"-";B3(I);
  1386. 24500 IF I<>I2 THEN PRINT ", ";
  1387. 24510 NEXT I:PRINT :PRINT 
  1388. 24515 GOSUB 18400
  1389. 24520 PRINT "THE ";S5$;" IS CURRENTLY IN THE ";G2$;" QUADRANT."
  1390. 24530 GOSUB 18000:RETURN
  1391.  
  1392. 25000 REM - SETWARP
  1393.  
  1394. 25010 INPUT "WARP FACTOR";K
  1395. 25020 PRINT 
  1396. 25025 IF K<1 THEN 25140
  1397. 25026 IF K>10 THEN 25150
  1398. 25030 J=W1:W1=K:W2=W1*W1
  1399. 25040 IF (W1<=J)OR(W1<=6) THEN 25070
  1400. 25050 IF W1<=8 THEN 25080
  1401. 25060 IF W1>8 THEN 25100
  1402. 25070 PRINT "ENSIGN CHEKOV - 'WARP FACTOR";W1;"CAPTAIN'":RETURN
  1403. 25080 PRINT "ENGINEER SCOTT - 'AYE, BUT OUR MAXIMUM SAFE SPEED";
  1404. 25090 PRINT " IS WARP 6.'":RETURN
  1405. 25100 IF W1=10 THEN 25130
  1406. 25110 PRINT "ENGINEER SCOTT-'AYE, CAPTAIN, BUT OUR ENGINES MAY NOT ";
  1407. 25120 PRINT "TAKE IT.'":RETURN
  1408. 25130 PRINT "ENGINEER SCOTT-'AYE, CAPTAIN, WE'LL GIVE IT A TRY.'":RETURN
  1409. 25140 PRINT "ENSIGN CHEKOV-'WE CAN'T GO BELOW WARP 1, CAPTAIN.'":RETURN
  1410. 25150 PRINT "ENSIGN CHEKOV-'OUR TOP SPEED IS WARP 10, CAPTAIN.'"
  1411. 25160 RETURN
  1412.  
  1413. 26000 REM - SHIELDS
  1414.  
  1415. 26001 J3=0
  1416.       IF D4(8)<>0 THEN 26600
  1417. 26010 IF S4<>0 THEN 26530
  1418. 26500 INPUT "SHIELDS ARE DOWN.  DO YOU WANT THEM UP";B$
  1419. 26510 IF LEFT$(B$,1)="Y" THEN 26560
  1420. 26520 RETURN
  1421. 26530 INPUT "SHIELDS ARE UP.  DO YOU WANT THEM DOWN";B$
  1422. 26540 IF LEFT$(B$,1)="Y" THEN 26590
  1423. 26550 RETURN
  1424. 26560 S4=1:S9=1
  1425.       IF C5$<>"DOCKED" THEN E1=E1-50
  1426. 26570 PRINT "SHIELDS RAISED."
  1427.       IF E1<=0 THEN 26610
  1428. 26580 J3=1:RETURN
  1429. 26590 S4=0:S9=1:PRINT "SHIELDS LOWERED.":J3=1:RETURN
  1430. 26600 PRINT "SHIELDS DAMAGED AND DOWN.":RETURN
  1431. 26610 PRINT :PRINT "SHIELDS USE UP LAST OF THE ENERGY."
  1432. 26620 F9=4:GOSUB 10000:RETURN
  1433.  
  1434. 27000 REM - SUPERNOVA
  1435.  
  1436. 27001 IF X2<>0 THEN 27100
  1437. 27010 N=INT(RND*I6+1):FOR X=1 TO 8:FOR Y=1 TO 8
  1438. 27020 N=N-(G(X,Y)-INT(G(X,Y)/10)*10)
  1439.       IF N<=0 THEN 27040
  1440. 27030 NEXT Y:NEXT X:RETURN
  1441. 27040 IF (X<>Q1)OR(Y<>Q2) THEN 27150
  1442. 27050 IF J4<>0 THEN 27150
  1443. 27060 N=INT(RND*(G(X,Y)-INT(G(X,Y)/10)*10))+1
  1444. 27070 FOR X3=1 TO 10:FOR Y3=1 TO 10
  1445.       IF Q$(X3,Y3)<>"*" THEN 27090
  1446. 27080 N=N-1
  1447.       IF N=0 THEN 27100
  1448. 27090 NEXT Y3:NEXT X3
  1449. 27100 PRINT :PRINT "*** RED ALERT!!  RED ALERT!! ***"
  1450. 27105 X3=X2:Y3=Y2
  1451. 27110 PRINT "*** INCIPIENT SUPERNOVA DETECTED AT SECTOR";X3;"-";Y3
  1452. 27120 X=Q1:Y=Q2:K=(X2-S6)^2+(Y2-S7)^2
  1453. 27130 IF K>1.5 THEN 27180
  1454. 27140 PRINT "*** EMERGENCY AUTO-OVERRIDE JAMMED ***":A2=1:GOTO 27180
  1455. 27150 IF D4(9)<>0 THEN 27180
  1456. 27160 PRINT :PRINT "MESSAGE FROM STARFLEET COMMAND...STARDATE";INT(D0)
  1457. 27170 PRINT "'SUPERNOVA IN QUADRANT";X;"-";Y;
  1458. 27175 PRINT "....CAUTION ADVISED'"
  1459. 27180 N=G(X,Y):R=INT(N/100):Q=0
  1460. 27190 IF (X<>Q1)OR(Y<>Q2) THEN 27210
  1461. 27200 K3=0:C3=0
  1462. 27210 IF R=0 THEN 27270
  1463. 27220 R1=R1-R
  1464.       IF R2=0 THEN 27270
  1465. 27230 FOR L=1 TO R2
  1466.       IF (C1(L)<>X)OR(C2(L)<>Y) THEN 27260
  1467. 27240 C1(L)=C1(R2):C2(L)=C2(R2):C1(R2)=0:C2(R2)=0
  1468. 27250 R2=R2-1:R=R-1:Q=1
  1469.       IF R2=0 THEN F1(2)=1.0E+30
  1470. 27260 NEXT L
  1471. 27270 IF R3=0 THEN 27310
  1472. 27280 FOR L=1 TO R3
  1473.       IF (B2(L)<>X)OR(B3(L)<>Y) THEN 27300
  1474. 27290 B2(L)=B2(R3):B3(L)=B3(R3):B2(R3)=0:B3(R3)=0:R3=R3-1
  1475. 27300 NEXT L
  1476. 27310 IF X2=0 THEN 27350
  1477. 27320 N=G(X,Y)-INT(G(X,Y)/100)*100
  1478. 27330 S1=S1+(N-INT(N/10)*10):B1=B1+INT(N/10)
  1479. 27340 K1=K1+R:K2=K2+Q
  1480. 27350 IF (S2(X,Y)<>0)AND(D4(9)<>0) THEN S2(X,Y)=1000+G(X,Y)
  1481. 27360 IF (D4(9)=0)OR((Q1=X)AND(Q2=Y)) THEN S2(X,Y)=1
  1482. 27370 G(X,Y)=1000
  1483. 27380 IF (R1<>0)OR((X=Q1)AND(Y=Q2)) THEN 27430
  1484. 27390 PRINT :PRINT "MR. SPOCK-  'CAPTAIN, A SUPERNOVA IN QUADRANT";
  1485. 27400 PRINT X;"-";Y;"HAS JUST DESTROYED THE LAST OF THE KLINGONS.'"
  1486. 27420 F9=1:GOSUB 10000:RETURN
  1487. 27430 IF A2=0 THEN RETURN
  1488. 27440 F9=8:GOSUB 10000:RETURN
  1489.  
  1490. 28000 REM - SORTKL
  1491.  
  1492. 28001 IF K3<=1 THEN RETURN
  1493. 28005 Z4=0
  1494. 28010 FOR O=1 TO K3-1
  1495.       IF K7(O)<=K7(O+1) THEN 28080
  1496. 28020 K=K7(O):K7(O)=K7(O+1):K7(O+1)=K
  1497. 28030 K=K8(O):K8(O)=K8(O+1):K8(O+1)=K
  1498. 28040 K=K4(O):K4(O)=K4(O+1):K4(O+1)=K
  1499. 28050 K=K5(O):K5(O)=K5(O+1):K5(O+1)=K
  1500. 28060 K=K6(O):K6(O)=K6(O+1):K6(O+1)=K
  1501. 28070 Z4=1
  1502. 28080 NEXT O
  1503. 28090 IF Z4<>0 THEN 28005
  1504. 28100 RETURN
  1505.  
  1506. 29000 REM-SRSCAN
  1507.  
  1508. 29001 IF D4(1)<>0 THEN 29230
  1509. 29010 PRINT :PRINT "    1 2 3 4 5 6 7 8 9 10"
  1510. 29020 FOR I=1 TO 10
  1511.       IF I<10 THEN PRINT " ";
  1512. 29030 PRINT I;:FOR J=1 TO 10:PRINT Q$(I,J);" ";:NEXT J
  1513. 29040 ON I GOTO 29050,29060,29080,29090,29140,\
  1514.                29150,29160,29170,29200,29210
  1515. 29050 PRINT " STARDATE      ";INT(D0*10+.5)/10:GOTO 29220
  1516. 29060 IF C5$<>"DOCKED" THEN GOSUB 17000
  1517. 29070 PRINT " CONDITION      ";C5$:GOTO 29220
  1518. 29080 PRINT " POSITION      ";Q1;"-";Q2;", ";S6;"-";S7:GOTO 29220
  1519. 29090 PRINT " LIFE SUPPORT   ";
  1520.       IF D4(5)<>0 THEN 29110
  1521. 29100 PRINT "ACTIVE":GOTO 29220
  1522. 29110 IF C5$<>"DOCKED" THEN 29130
  1523. 29120 PRINT "DAMAGED, SUPPORTED BY STARBASE":GOTO 29220
  1524. 29130 PRINT "DAMAGED, RESERVES=";INT(L1*100+.5)/100:GOTO 29220
  1525. 29140 PRINT " WARP FACTOR   ";INT(W1*10+.5)/10:GOTO 29220
  1526. 29150 PRINT " ENERGY";TAB(POS+8);.01*INT(100*E1):GOTO 29220
  1527. 29160 PRINT " TORPEDOS      ";T4:GOTO 29220
  1528. 29170 PRINT " SHIELDS        ";:B$="DOWN,"
  1529.       IF S4<>0 THEN B$="UP,"
  1530. 29180 IF D4(8)>0 THEN B$="DAMAGED,"
  1531. 29190 PRINT B$;INT(100*S3/I8+.5);"%":GOTO 29220
  1532. 29200 PRINT " KLINGONS LEFT ";R1:GOTO 29220
  1533. 29210 PRINT " TIME LEFT     ";INT(R5*100+.5)/100
  1534. 29220 NEXT I:RETURN
  1535. 29230 PRINT "SHORT RANGE SENSORS DAMAGED.":RETURN
  1536.  
  1537. 30000 REM - TIMEWARP
  1538.  
  1539. 30001 PRINT :PRINT "*** TIME WARP ENTERED ***":PRINT "YOU ARE TRAVELING ";
  1540. 30010 IF S0<>0 THEN 30050
  1541. 30020 T1=-.5*I5*LOG(RND)
  1542. 30030 PRINT "FORWARD IN TIME";INT(T1*10+.5)/10;"STARDATES."
  1543. 30040 F1(2)=F1(2)+T1:GO TO 30200
  1544. 30050 M=D0:D0=D9(1)
  1545. 30060 PRINT "BACKWARD IN TIME";INT((M-D0)*10+.5)/10;"STARDATES.":S0=0
  1546. 30070 R1=D9(2):R2=D9(3):R3=D9(4):R4=D9(5):R5=D9(6)
  1547. 30080 S1=D9(7):B1=D9(8):K1=D9(9):K2=D9(10)
  1548. 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
  1549. 30100 FOR I=75 TO 84:C1(I-74)=D9(I):NEXT 
  1550. 30110 FOR I=85 TO 94:C2(I-84)=D9(I):NEXT 
  1551. 30120 FOR I=95 TO 99:B2(I-94)=D9(I):NEXT 
  1552. 30130 FOR I=100 TO 104:B3(I-99)=D9(I):NEXT :B4=D9(105):B5=D9(106)
  1553. 30140 F1(1)=D0-.5*I5*LOG(RND)
  1554. 30150 IF R2<>0 THEN F1(2)=D0-(I5/R2)*LOG(RND)
  1555. 30160 F1(3)=D0-.5*I5*LOG(RND)
  1556. 30170 FOR I=1 TO 8:FOR J=1 TO 8
  1557.       IF 1<S2(I,J) THEN S2(I,J)=1
  1558. 30180 NEXT J:NEXT I
  1559. 30185 PRINT 
  1560. 30190 PRINT "SPOCK HAS RECONSTRUCTED A CORRECT STAR CHART FROM MEMORY."
  1561. 30200 GOSUB 18000:RETURN
  1562.  
  1563. 31000 REM - TRANSFER
  1564.  
  1565. 31001 J3=0
  1566. 31010 IF D4(12)<>0 THEN 31120
  1567. 31020 INPUT "NUMBER OF UNITS TO SHIELDS";Z3
  1568. 31030 IF Z3<0 THEN RETURN
  1569. 31040 IF E1+S3-Z3>0 THEN 31060
  1570. 31050 PRINT "SCOTT HERE-  'WE ONLY HAVE";INT((E1+S3)*10+.5)/10;"UNITS LEFT.'"
  1571. 31051 RETURN
  1572. 31060 E1=E1+S3-Z3:S3=Z3:PRINT "--ENERGY TRANSFER COMPLETE--"
  1573. 31070 PRINT "(SHIP ENERGY=";INT(E1*10+.5)/10;
  1574.       PRINT "    SHIELD ENERGY=";INT(S3*10+.5)/10;")"
  1575. 31075 J3=1
  1576. 31080 T1=.1:P5=(K3+4*C3)/48
  1577.       IF P5<.1 THEN P5=.1
  1578. 31090 IF P5>RND THEN GOSUB 1000
  1579. 31100 IF A2<>0 THEN RETURN
  1580. 31110 GOSUB 9000:RETURN
  1581. 31120 PRINT "TRANSFER PANEL DAMAGED.":RETURN
  1582.  
  1583. 32000 REM - VISUAL
  1584.  
  1585. 32001 INPUT "WHICH DIRECTION";Z
  1586. 32005 PRINT 
  1587. 32010 J3=0
  1588.       IF Z<0 THEN RETURN
  1589. 32012 IF Z<=12 THEN 32020
  1590. 32014 PRINT "DIRECTIONS ARE FROM 0 TO 12 ONLY":GOTO 32001
  1591. 32020 T1=.05:P=(K3+4*C3)/48
  1592.       IF P<.05 THEN P=.05
  1593. 32030 IF P>RND THEN GOSUB 1000
  1594. 32040 IF A2<>0 THEN RETURN
  1595. 32050 GOSUB 9000:J3=1
  1596.       IF A2<>0 THEN RETURN
  1597. 32080 D5=INT((Z/12)*8+1.5)
  1598.       IF D5>8 THEN D5=1
  1599. 32085 FOR I=1 TO 5:FOR J=1 TO 5:V$(I,J)=" ":NEXT J:NEXT I:N=0
  1600. 32087 V$(3,3)=LEFT$(S5$,1)
  1601. 32090 ON D5 GOTO 32100,32130,32150,32170,32190,32220,32260,32300
  1602. 32100 I=S6-2:J=S7-2:V$(1,1)=Q2$
  1603.       IF (J>0)AND(I>0) THEN V$(1,1)=Q$(I,J)
  1604. 32110 I=S6-1:J=S7-1:V$(2,2)=Q2$
  1605.       IF (I>0)AND(J>0) THEN V$(2,2)=Q$(I,J)
  1606. 32120 N=N+1
  1607.       IF N=3 THEN 32350
  1608. 32125 I=S6-2:V$(1,2)=Q2$
  1609.       IF (I>0)AND(J>0) THEN V$(1,2)=Q$(I,J)
  1610. 32130 I=S6-2:V$(1,3)=Q2$
  1611.       IF I>0 THEN V$(1,3)=Q$(I,S7)
  1612. 32135 I=S6-1:V$(2,3)=Q2$
  1613.       IF I>0 THEN V$(2,3)=Q$(I,S7)
  1614. 32140 N=N+1
  1615.       IF N=3 THEN 32350
  1616. 32145 I=S6-2:J=S7+1:V$(1,4)=Q2$
  1617.       IF (I>0)AND(J<11) THEN V$(1,4)=Q$(I,J)
  1618. 32150 I=S6-2:J=S7+2:V$(1,5)=Q2$
  1619.       IF (I>0)AND(J<11) THEN V$(1,5)=Q$(I,J)
  1620. 32155 I=S6-1:J=S7+1:V$(2,4)=Q2$
  1621.       IF (I>0)AND(J<11) THEN V$(2,4)=Q$(I,J)
  1622. 32160 N=N+1
  1623.       IF N=3 THEN 32350
  1624. 32165 J=S7+2:V$(2,5)=Q2$
  1625.       IF (I>0)AND(J<11) THEN V$(2,5)=Q$(I,J)
  1626. 32170 J=S7+2:V$(3,5)=Q2$
  1627.       IF J<11 THEN V$(3,5)=Q$(S6,J)
  1628. 32175 J=S7+1:V$(3,4)=Q2$
  1629.       IF J<11 THEN V$(3,4)=Q$(S6,J)
  1630. 32180 N=N+1
  1631.       IF N=3 THEN 32350
  1632. 32185 I=S6+1:J=S7+2:V$(4,5)=Q2$
  1633.       IF (I<11)AND(J<11) THEN V$(4,5)=Q$(I,J)
  1634. 32190 I=S6+2:J=S7+2:V$(5,5)=Q2$
  1635.       IF (I<11)AND(J<11) THEN V$(5,5)=Q$(I,J)
  1636. 32195 I=S6+1:J=S7+1:V$(4,4)=Q2$
  1637.       IF (I<11)AND(J<11) THEN V$(4,4)=Q$(I,J)
  1638. 32200 N=N+1
  1639.       IF N=3 THEN 32350
  1640. 32210 I=S6+2:V$(5,4)=Q2$
  1641.       IF (I<11)AND(J<11) THEN V$(5,4)=Q$(I,J)
  1642. 32220 I=S6+2:V$(5,3)=Q2$
  1643.       IF I<11 THEN V$(5,3)=Q$(I,S7)
  1644. 32230 I=S6+1:V$(4,3)=Q2$
  1645.       IF I<11 THEN V$(4,3)=Q$(I,S7)
  1646. 32240 N=N+1
  1647.       IF N=3 THEN 32350
  1648. 32250 I=S6+2:J=S7-1:V$(5,2)=Q2$
  1649.       IF (I<11)AND(J>0) THEN V$(5,2)=Q$(I,J)
  1650. 32260 I=S6+2:J=S7-2:V$(5,1)=Q2$
  1651.       IF (I<11)AND(J>0) THEN V$(5,1)=Q$(I,J)
  1652. 32270 I=S6+1:J=S7-1:V$(4,2)=Q2$
  1653.       IF (I<11)AND(J>0) THEN V$(4,2)=Q$(I,J)
  1654. 32280 N=N+1
  1655.       IF N=3 THEN 32350
  1656. 32290 J=S7-2:V$(4,1)=Q2$
  1657.       IF (I<11)AND(J>0) THEN V$(4,1)=Q$(I,J)
  1658. 32300 J=S7-2:V$(3,1)=Q2$
  1659.       IF J>0 THEN V$(3,1)=Q$(S6,J)
  1660. 32310 J=S7-1:V$(3,2)=Q2$
  1661.       IF J>0 THEN V$(3,2)=Q$(S6,J)
  1662. 32320 N=N+1
  1663.       IF N=3 THEN 32350
  1664. 32330 I=S6-1:J=S7-2:V$(2,1)=Q2$
  1665.       IF (I>0)AND(J>0) THEN V$(2,1)=Q$(I,J)
  1666. 32340 GOTO 32100
  1667. 32350 FOR I=1 TO 5
  1668. 32360 IF (V$(I,1)=" ")AND(V$(I,3)=" ")AND(V$(I,5)=" ") THEN 32390
  1669. 32370 PRINT "  ";
  1670. 32380 FOR J=1 TO 5:PRINT V$(I,J);" ";:NEXT J:PRINT 
  1671. 32390 NEXT I:RETURN
  1672.  
  1673. 33000 REM - WAIT
  1674.  
  1675. 33001 J3=0:INPUT "HOW MANY STARDATES";Z5
  1676. 33010 IF (Z5<R5)AND(K3=0) THEN 33030
  1677. 33020 INPUT "ARE YOU SURE";B$
  1678.       IF LEFT$(B$,1)<>"Y" THEN RETURN
  1679. 33030 R6=1
  1680. 33040 IF Z5<=0 THEN R6=0
  1681. 33050 IF R6=0 THEN RETURN
  1682. 33060 T1=Z5:Z6=Z5
  1683. 33070 IF K3=0 THEN 33100
  1684. 33080 T1=1+RND
  1685.       IF Z5<T1 THEN T1=Z5
  1686. 33090 Z6=T1
  1687. 33100 IF T1<Z5 THEN GOSUB 1000
  1688. 33110 IF A2<>0 THEN RETURN
  1689. 33120 GOSUB 9000:J3=1
  1690.       IF A2<>0 THEN RETURN
  1691. 33130 Z5=Z5-Z6:GOTO 33040
  1692.  
  1693. 34000 REM - WARP
  1694.  
  1695. 34001 J3=0
  1696.       IF D4(6)<>0 THEN 34750
  1697. 34010 INPUT "ENTER COURSE AND DISTANCE";D2,D1
  1698. 34020 IF D2<0 THEN RETURN
  1699. 34030 P=(D1+.05)*W1*W1*W1*(S4+1)
  1700.       IF P<E1 THEN 34150
  1701. 34040 J3=0:PRINT :PRINT "ENGINEERING TO BRIDGE--"
  1702. 34050 IF (S4=0)OR(.5*P>E1) THEN 34080
  1703. 34060 PRINT "  WE HAVEN'T THE ENERGY TO GO THAT FAR WITH";
  1704. 34070 PRINT " THE SHIELDS UP.":RETURN
  1705. 34080 W=INT((E1/(D1+.05))^.333333)
  1706.       IF W<=0 THEN 34130
  1707. 34090 PRINT "  WE HAVEN'T THE ENERGY.  BUT WE COULD DO IT AT WARP";W
  1708. 34100 IF S4<>0 THEN 34120
  1709. 34110 RETURN
  1710. 34120 PRINT "  IF  YOU'LL LOWER THE SHIELDS.":RETURN
  1711. 34130 PRINT "  WE CAN'T DO IT, CAPTAIN.  WE HAVEN'T GOT THE ENERGY."
  1712. 34140 RETURN
  1713. 34150 T1=10*D1/W2
  1714.       IF T1<.8*R5 THEN 34500
  1715. 34160 PRINT :PRINT "MR. SPOCK - 'CAPTAIN, I COMPUTE THAT SUCH A TRIP"
  1716. 34170 PRINT " WILL REQUIRE APPROXIMATELY";INT(1000*T1/R5+.5)/10;
  1717. 34180 PRINT "PERCENT":PRINT "   OF OUR REMAINING TIME.  ARE YOU SURE ";
  1718. 34190 INPUT  "THIS IS WISE";B$
  1719.       IF LEFT$(B$,1)="Y" THEN 34500
  1720. 34200 J3=0:RETURN
  1721. 34500 Q4=0:W=0
  1722.       IF W1<=6 THEN 34660
  1723. 34510 P=D1*(6-W1)^2/66.66666
  1724.       IF P>RND THEN Q4=1
  1725. 34520 IF Q4<>0 THEN D1=RND*D1
  1726. 34530 W=0
  1727.       IF W1<10 THEN 34550
  1728. 34540 IF .25*D1>RND THEN W=1
  1729. 34550 IF (Q4=0)AND(W=0) THEN 34660
  1730. 34560 A=(15-D2)*.5235998:X1=-SIN(A):X2=COS(A)
  1731. 34570 B8=ABS(X1)
  1732.       IF ABS(X2)>ABS(X1) THEN B8=ABS(X2)
  1733. 34580 X1=X1/B8:Y1=Y1/B8:N=INT(10*D1*B8+.5):X=S6:Y=S7
  1734. 34590 IF N=0 THEN 34660
  1735. 34600 FOR L=1 TO N
  1736. 34610 X=X+X1:Q=INT(X+.5)
  1737.       IF (Q<1)OR(Q>10) THEN 34660
  1738. 34620 Y=Y+Y1:R=INT(Y+.5)
  1739.       IF (R<1)OR(R>10) THEN 34660
  1740. 34630 IF Q$(Q,R)="." THEN 34650
  1741. 34640 Q4=0:W=0
  1742. 34650 NEXT L
  1743. 34660 GOSUB 15000
  1744.       IF A2<>0 THEN RETURN
  1745. 34670 E1=E1-D1*W1*W1*W1*(S4+1)
  1746.       IF E1>0 THEN 34690
  1747. 34680 F9=4:GOSUB 10000:RETURN
  1748. 34690 T1=10*D1/W2
  1749.       IF W<>0 THEN GOSUB 30000
  1750. 34700 IF Q4=0 THEN 34740
  1751. 34710 PRINT :PRINT "ENGINEERING TO BRIDGE--":PRINT "   SCOTT HERE-  ";
  1752. 34715 PRINT "'WE'VE JUST BLOWN THE WARP ENGINES."
  1753. 34720 PRINT "   WE'LL HAVE TO SHUT 'ER DOWN HERE, CAPTAIN.'"
  1754. 34725 D4(6)=D5*(3*RND+1)
  1755. 34740 J3=1:RETURN
  1756. 34750 PRINT "WARP ENGINES DAMAGED.":RETURN
  1757.  
  1758. 35000 REM - ABANDON
  1759.  
  1760. 35001 ON SGN(D4(10))+2 GOTO 35010,35030,35020
  1761. 35010 PRINT "YE FAERIE QUEENE HAS NO SHUTTLE CRAFT.":RETURN
  1762. 35020 PRINT "SHUTTLE CRAFT DAMAGED.":RETURN
  1763. 35030 PRINT :PRINT "***ABANDON SHIP!  ABANDON SHIP!"
  1764. 35040 PRINT "***ALL HANDS ABANDON SHIP!":PRINT 
  1765. 35050 PRINT "YOU AND THE BRIDGE CREW ESCAPE IN THE GALILEO."
  1766. 35060 PRINT "THE REMAINDER OF THE CREW BEAMS DOWN"
  1767. 35070 PRINT "TO THE NEAREST HABITABLE PLANET."
  1768.       IF R3<>0 THEN 35090
  1769. 35080 F9=9:GOSUB 10000:RETURN
  1770. 35090 PRINT :PRINT "YOU ARE CAPTURED BY KLINGONS AND RELEASED TO"
  1771. 35100 PRINT "THE FEDERATION IN A PRISONER-OF-WAR EXCHANGE."
  1772. 35110 PRINT "STARFLEET PUTS YOU IN COMMAND OF ANOTHER SHIP,"
  1773. 35120 PRINT "THE FAERIE QUEENE WHICH IS ANTIQUATED, BUT"
  1774. 35130 PRINT "STILL USABLE.":N=INT(RND*R3+1):Q1=B2(N):Q2=B3(N)
  1775. 35140 S6=5:S7=5:GOSUB 18000:Q$(S6,S7)="."
  1776. 35145 FOR L=1 TO 3:S6=INT(3*RND-1+B6)
  1777. 35150 IF (S6<1)OR(S7>10) THEN 35180
  1778. 35160 S7=INT(3*RND-1+B7)
  1779.       IF (S7<1)OR(S7>10) THEN 35180
  1780. 35170 IF Q$(S6,S7)="." THEN 35190
  1781. 35180 NEXT L:GOTO 35140
  1782. 35190 S5$="FAERIE QUEENE":Q$(S6,S7)=LEFT$(S5$,1):C5$="DOCKED"
  1783. 35200 FOR L=1 TO 12:D4(L)=0:NEXT :D4(10)=-1:E1=3000:I7=E1
  1784. 35210 S3=1500:I8=S3:T4=6:I9=T4:L1=3:J1=L1:S4=0:W1=5:W2=25
  1785. 35220 RETURN
  1786.  
  1787. 36000 REM - DESTRUCT
  1788.  
  1789. 36001 IF D4(11)=0 THEN 36030
  1790. 36010 PRINT "COMPUTER DAMAGED - CANNOT EXECUTE DESTRUCT SEQUENCE"
  1791. 36020 RETURN
  1792. 36030 PRINT :PRINT "    ---WORKING---"
  1793. 36040 PRINT "IDENTIFICATION-POSITIVE"
  1794. 36050 PRINT "SELF-DESTRUCT-SEQUENCE-ACTIVATED":J=3
  1795. 36060 FOR I=10 TO 6 STEP -1:PRINT TAB(POS+J);I:GOSUB 36210:J=J+3:NEXT 
  1796. 36070 PRINT "ENTER-YOUR-MISSION-PASSWORD-TO-CONTINUE"
  1797. 36080 PRINT "SELF-DESTRUCT-SEQUENCE-OTHERWISE-DESTRUCT"
  1798. 36090 PRINT "SEQUENCE-WILL-BE-ABORTED"
  1799. 36100 INPUT B$
  1800.       IF B$<>X$ THEN 36190
  1801. 36110 PRINT "PASSWORD-ACCEPTED":J=10
  1802. 36120 FOR I=5 TO 1 STEP -1:PRINT TAB(POS+J);I:GOSUB 36210:J=J+3:NEXT 
  1803. 36130 PRINT :PRINT "*****ENTROPY OF ";S5$;" MAXIMIZED*****"
  1804. 36140 PRINT 
  1805.       IF K3=0 THEN 36180
  1806. 36150 W=20*E1:FOR L=1 TO K3
  1807.       IF K6(L)*K7(L)>W THEN 36170
  1808. 36160 A5=K4(L):A6=K5(L):T2$=Q$(A5,A6):GOSUB 6000
  1809. 36170 NEXT L
  1810. 36180 F9=10:GOSUB 10000:RETURN
  1811. 36190 PRINT "PASSWORD-REJECTED"
  1812. 36200 PRINT "CONTINUITY-EFFECTED":PRINT :RETURN
  1813. 36210 K=12345:FOR M=1 TO 90:K=K+1:NEXT M:RETURN
  1814. 37000 REM - STATUS
  1815. 37001 FOR I=1 TO 10:GOTO 29040:RETURN
  1816. 37010 END
  1817.