fix password acceptance
[super-star-trek.git] / historic / mayfield.basic
1 REM  Extracted from HP tape image 16-Nov-2003 by Pete Turnbull
2
3 1  REM ****  HP BASIC PROGRAM LIBRARY  ******************************
4 2  REM
5 3  REM       STTR1: STAR TREK
6 4  REM
7 5  REM       36243  REV B  --  10/73
8 6  REM
9 7  REM ****  CONTRIBUTED PROGRAM  ***********************************
10 100  REM *****************************************************************
11 110  REM ***                                                           ***
12 120  REM ***     STAR TREK: BY MIKE MAYFIELD, CENTERLINE ENGINEERING   ***
13 130  REM ***                                                           ***
14 140  REM ***        TOTAL INTERACTION GAME - ORIG. 20 OCT 1972
15 150  REM ***                                                           ***
16 160  REM *****************************************************************
17 170  GOSUB 5460
18 180  PRINT "                          STAR TREK "
19 190  PRINT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!)";
20 200  INPUT A$
21 210  IF A$ <> "YES" THEN 230
22 220  GOSUB 5820
23 230  REM *****  PROGRAM STARTS HERE *****
24 240  Z$="                                                                      "
25 250  GOSUB 5460
26 260  DIM G[8,8],C[9,2],K[3,3],N[3],Z[8,8]
27 270  DIM C$[6],D$[72],E$[24],A$[3],Q$[72],R$[72],S$[48]
28 280  DIM Z$[72]
29 290  T0=T=INT(RND(1)*20+20)*100
30 300  T9=30
31 310  D0=0
32 320  E0=E=3000
33 330  P0=P=10
34 340  S9=200
35 350  S=H8=0
36 360  DEF FND(D)=SQR((K[I,1]-S1)^2+(K[I,2]-S2)^2)
37 370  Q1=INT(RND(1)*8+1)
38 380  Q2=INT(RND(1)*8+1)
39 390  S1=INT(RND(1)*8+1)
40 400  S2=INT(RND(1)*8+1)
41 410  T7=TIM(0)+60*TIM(1)
42 420  C[2,1]=C[3,1]=C[4,1]=C[4,2]=C[5,2]=C[6,2]=-1
43 430  C[1,1]=C[3,2]=C[5,1]=C[7,2]=C[9,1]=0
44 440  C[1,2]=C[2,2]=C[6,1]=C[7,1]=C[8,1]=C[8,2]=C[9,2]=1
45 450  MAT D=ZER
46 460  D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL"
47 470  D$[49]="PHOTON TUBESDAMAGE CNTRL"
48 480  E$="SHIELD CNTRLCOMPUTER"
49 490  B9=K9=0
50 500  FOR I=1 TO 8
51 510  FOR J=1 TO 8
52 520  R1=RND(1)
53 530  IF R1>.98 THEN 580
54 540  IF R1>.95 THEN 610
55 550  IF R1>.8 THEN 640
56 560  K3=0
57 570  GOTO 660
58 580  K3=3
59 590  K9=K9+3
60 600  GOTO 660
61 610  K3=2
62 620  K9=K9+2
63 630  GOTO 660
64 640  K3=1
65 650  K9=K9+1
66 660  R1=RND(1)
67 670  IF R1>.96 THEN 700
68 680  B3=0
69 690  GOTO 720
70 700  B3=1
71 710  B9=B9+1
72 720  S3=INT(RND(1)*8+1)
73 730  G[I,J]=K3*100+B3*10+S3
74 740  Z[I,J]=0
75 750  NEXT J
76 760  NEXT I
77 770  K7=K9
78 775  IF B9 <= 0 OR K9 <= 0 THEN 490
79 780  PRINT "YOU MUST DESTROY"K9;" KLINGONS IN"T9;" STARDATES WITH"B9;" STARBASES"
80 810  K3=B3=S3=0
81 820  IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 920
82 830  X=G[Q1,Q2]*.01
83 840  K3=INT(X)
84 850  B3=INT((X-K3)*10)
85 860  S3=G[Q1,Q2]-INT(G[Q1,Q2]*.1)*10
86 870  IF K3=0 THEN 910
87 880  IF S>200 THEN 910
88 890  PRINT "COMBAT AREA      CONDITION RED"
89 900  PRINT "   SHIELDS DANGEROUSLY LOW"
90 910  MAT K=ZER
91 920  FOR I=1 TO 3
92 930  K[I,3]=0
93 940  NEXT I
94 950  Q$=Z$
95 960  R$=Z$
96 970  S$=Z$[1,48]
97 980  A$="<*>"
98 990  Z1=S1
99 1000  Z2=S2
100 1010  GOSUB 5510
101 1020  FOR I=1 TO K3
102 1030  GOSUB 5380
103 1040  A$="+++"
104 1050  Z1=R1
105 1060  Z2=R2
106 1070  GOSUB 5510
107 1080  K[I,1]=R1
108 1090  K[I,2]=R2
109 1100  K[I,3]=S9
110 1110  NEXT I
111 1120  FOR I=1 TO B3
112 1130  GOSUB 5380
113 1140  A$=">!<"
114 1150  Z1=R1
115 1160  Z2=R2
116 1170  GOSUB 5510
117 1180  NEXT I
118 1190  FOR I=1 TO S3
119 1200  GOSUB 5380
120 1210  A$=" * "
121 1220  Z1=R1
122 1230  Z2=R2
123 1240  GOSUB 5510
124 1250  NEXT I
125 1260  GOSUB 4120
126 1270  PRINT "COMMAND:";
127 1280  INPUT A
128 1290  GOTO A+1 OF 1410,1260,2330,2530,2800,3460,3560,4630
129 1300  PRINT
130 1310  PRINT "   0 = SET COURSE"
131 1320  PRINT "   1 = SHORT RANGE SENSOR SCAN"
132 1330  PRINT "   2 = LONG RANGE SENSOR SCAN"
133 1340  PRINT "   3 = FIRE PHASERS"
134 1350  PRINT "   4 = FIRE PHOTON TORPEDOES"
135 1360  PRINT "   5 = SHIELD CONTROL"
136 1370  PRINT "   6 = DAMAGE CONTROL REPORT"
137 1380  PRINT "   7 = CALL ON LIBRARY COMPUTER"
138 1390  PRINT
139 1400  GOTO 1270
140 1410  PRINT "COURSE (1-9):";
141 1420  INPUT C1
142 1430  IF C1=0 THEN 1270
143 1440  IF C1<1 OR C1 >= 9 THEN 1410
144 1450  PRINT "WARP FACTOR (0-8):";
145 1460  INPUT W1
146 1470  IF W1<0 OR W1>8 THEN 1410
147 1480  IF D[1] >= 0 OR W1 <= .2 THEN 1510
148 1490  PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2"
149 1500  GOTO 1410
150 1510  IF K3 <= 0 THEN 1560
151 1520  GOSUB 3790
152 1530  IF K3 <= 0 THEN 1560
153 1540  IF S<0 THEN 4000
154 1550  GOTO 1610
155 1560  IF E>0 THEN 1610
156 1570  IF S<1 THEN 3920
157 1580  PRINT "YOU HAVE"E" UNITS OF ENERGY"
158 1590  PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE"S" UNITS LEFT"
159 1600  GOTO 1270
160 1610  FOR I=1 TO 8
161 1620  IF D[I] >= 0 THEN 1640
162 1630  D[I]=D[I]+1
163 1640  NEXT I
164 1650  IF RND(1)>.2 THEN 1810
165 1660  R1=INT(RND(1)*8+1)
166 1670  IF RND(1) >= .5 THEN 1750
167 1680  D[R1]=D[R1]-(RND(1)*5+1)
168 1690  PRINT
169 1700  PRINT "DAMAGE CONTROL REPORT:";
170 1710  GOSUB 5610
171 1720  PRINT " DAMAGED"
172 1730  PRINT
173 1740  GOTO 1810
174 1750  D[R1]=D[R1]+(RND(1)*5+1)
175 1760  PRINT
176 1770  PRINT "DAMAGE CONTROL REPORT:";
177 1780  GOSUB 5610
178 1790  PRINT " STATE OF REPAIR IMPROVED"
179 1800  PRINT
180 1810  N=INT(W1*8)
181 1820  A$="   "
182 1830  Z1=S1
183 1840  Z2=S2
184 1850  GOSUB 5510
185 1870  X=S1
186 1880  Y=S2
187 1885  C2=INT(C1)
188 1890  X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2)
189 1900  X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2)
190 1910  FOR I=1 TO N
191 1920  S1=S1+X1
192 1930  S2=S2+X2
193 1940  IF S1<.5 OR S1 >= 8.5 OR S2<.5 OR S2 >= 8.5 THEN 2170
194 1950  A$="   "
195 1960  Z1=S1
196 1970  Z2=S2
197 1980  GOSUB 5680
198 1990  IF Z3 <> 0 THEN 2070
199 2030  PRINT  USING 5370;S1,S2
200 2040  S1=S1-X1
201 2050  S2=S2-X2
202 2060  GOTO 2080
203 2070  NEXT I
204 2080  A$="<*>"
205 2083  S1=INT(S1+.5)
206 2086  S2=INT(S2+.5)
207 2090  Z1=S1
208 2100  Z2=S2
209 2110  GOSUB 5510
210 2120  E=E-N+5
211 2130  IF W1<1 THEN 2150
212 2140  T=T+1
213 2150  IF T>T0+T9 THEN 3970
214 2160  GOTO 1260
215 2170  X=Q1*8+X+X1*N
216 2180  Y=Q2*8+Y+X2*N
217 2190  Q1=INT(X/8)
218 2200  Q2=INT(Y/8)
219 2210  S1=INT(X-Q1*8+.5)
220 2220  S2=INT(Y-Q2*8+.5)
221 2230  IF S1 <> 0 THEN 2260
222 2240  Q1=Q1-1
223 2250  S1=8
224 2260  IF S2 <> 0 THEN 2290
225 2270  Q2=Q2-1
226 2280  S2=8
227 2290  T=T+1
228 2300  E=E-N+5
229 2310  IF T>T0+T9 THEN 3970
230 2320  GOTO 810
231 2330  IF D[3] >= 0 THEN 2370
232 2340  PRINT "LONG RANGE SENSORS ARE INOPERABLE"
233 2350  IMAGE  "LONG RANGE SENSOR SCAN FOR QUADRANT",D,",",D
234 2360  GOTO 1270
235 2370  PRINT  USING 2350;Q1,Q2
236 2380  PRINT  USING 2520
237 2390  FOR I=Q1-1 TO Q1+1
238 2400  MAT N=ZER
239 2410  FOR J=Q2-1 TO Q2+1
240 2420  IF I<1 OR I>8 OR J<1 OR J>8 THEN 2460
241 2430  N[J-Q2+2]=G[I,J]
242 2440  IF D[7]<0 THEN 2460
243 2450  Z[I,J]=G[I,J]
244 2460  NEXT J
245 2470  PRINT  USING 2510;N[1],N[2],N[3]
246 2480  PRINT  USING 2520
247 2490  NEXT I
248 2500  GOTO 1270
249 2510  IMAGE  ": ",3(3D," :")
250 2520  IMAGE  "-----------------"
251 2530  IF K3 <= 0 THEN 3670
252 2540  IF D[4] >= 0 THEN 2570
253 2550  PRINT "PHASER CONTROL IS DISABLED"
254 2560  GOTO 1270
255 2570  IF D[7] >= 0 THEN 2590
256 2580  PRINT " COMPUTER FAILURE HAMPERS ACCURACY"
257 2590  PRINT "PHASERS LOCKED ON TARGET.  ENERGY AVAILABLE="E
258 2600  PRINT "NUMBER OF UNITS TO FIRE:";
259 2610  INPUT X
260 2620  IF X <= 0 THEN 1270
261 2630  IF E-X<0 THEN 2570
262 2640  E=E-X
263 2650  GOSUB 3790
264 2660  IF D[7] >= 0 THEN 2680
265 2670  X=X*RND(1)
266 2680  FOR I=1 TO 3
267 2690  IF K[I,3] <= 0 THEN 2770
268 2700  H=(X/K3/FND(0))*(2*RND(1))
269 2710  K[I,3]=K[I,3]-H
270 2720  PRINT  USING 2730;H,K[I,1],K[I,2],K[I,3]
271 2730  IMAGE  4D," UNIT HIT ON KLINGON AT SECTOR ",D,",",D,"   (",3D," LEFT)"
272 2740  IF K[I,3]>0 THEN 2770
273 2750  GOSUB 3690
274 2760  IF K9 <= 0 THEN 4040
275 2770  NEXT I
276 2780  IF E<0 THEN 4000
277 2790  GOTO 1270
278 2800  IF D[5] >= 0 THEN 2830
279 2810  PRINT "PHOTON TUBES ARE NOT OPERATIONAL"
280 2820  GOTO 1270
281 2830  IF P>0 THEN 2860
282 2840  PRINT "ALL PHOTON TORPEDOES EXPENDED"
283 2850  GOTO 1270
284 2860  PRINT "TORPEDO COURSE (1-9):";
285 2870  INPUT C1
286 2880  IF C1=0 THEN 1270
287 2890  IF C1<1 OR C1 >= 9 THEN 2860
288 2895  C2=INT(C1)
289 2900  X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2)
290 2910  X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2)
291 2920  X=S1
292 2930  Y=S2
293 2940  P=P-1
294 2950  PRINT "TORPEDO TRACK:"
295 2960  X=X+X1
296 2970  Y=Y+X2
297 2980  IF X<.5 OR X >= 8.5 OR Y<.5 OR Y >= 8.5 THEN 3420
298 2990  PRINT  USING 3000;X,Y
299 3000  IMAGE  15X,D,",",D
300 3010  A$="   "
301 3020  Z1=X
302 3030  Z2=Y
303 3040  GOSUB 5680
304 3050  IF Z3=0 THEN 3070
305 3060  GOTO 2960
306 3070  A$="+++"
307 3080  Z1=X
308 3090  Z2=Y
309 3100  GOSUB 5680
310 3110  IF Z3=0 THEN 3220
311 3120  PRINT "*** KLINGON DESTROYED ***"
312 3130  K3=K3-1
313 3140  K9=K9-1
314 3150  IF K9 <= 0 THEN 4040
315 3160  FOR I=1 TO 3
316 3170  IF INT(X+.5) <> K[I,1] THEN 3190
317 3180  IF INT(Y+.5)=K[I,2] THEN 3200
318 3190  NEXT I
319 3200  K[I,3]=0
320 3210  GOTO 3360
321 3220  A$=" * "
322 3230  Z1=X
323 3240  Z2=Y
324 3250  GOSUB 5680
325 3260  IF Z3=0 THEN 3290
326 3270  PRINT "YOU CAN'T DESTROY STARS SILLY"
327 3280  GOTO 3420
328 3290  A$=">!<"
329 3300  Z1=X
330 3310  Z2=Y
331 3320  GOSUB 5680
332 3330  IF Z3=0 THEN 2960
333 3340  PRINT "*** STAR BASE DESTROYED ***  .......CONGRATULATIONS"
334 3350  B3=B3-1
335 3360  A$="   "
336 3370  Z1=INT(X+.5)
337 3380  Z2=INT(Y+.5)
338 3390  GOSUB 5510
339 3400  G[Q1,Q2]=K3*100+B3*10+S3
340 3410  GOTO 3430
341 3420  PRINT "TORPEDO MISSED"
342 3430  GOSUB 3790
343 3440  IF E<0 THEN 4000
344 3450  GOTO 1270
345 3460  IF D[7] >= 0 THEN 3490
346 3470  PRINT "SHIELD CONTROL IS NON-OPERATIONAL"
347 3480  GOTO 1270
348 3490  PRINT "ENERGY AVAILABLE ="E+S"   NUMBER OF UNITS TO SHIELDS:";
349 3500  INPUT X
350 3510  IF X <= 0 THEN 1270
351 3520  IF E+S-X<0 THEN 3490
352 3530  E=E+S-X
353 3540  S=X
354 3550  GOTO 1270
355 3560  IF D[6] >= 0 THEN 3590
356 3570  PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE"
357 3580  GOTO 1270
358 3590  PRINT
359 3600  PRINT "DEVICE        STATE OF REPAIR"
360 3610  FOR R1=1 TO 8
361 3620  GOSUB 5610
362 3630  PRINT "",D[R1]
363 3640  NEXT R1
364 3650  PRINT
365 3660  GOTO 1270
366 3670  PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT"
367 3680  GOTO 1270
368 3690  PRINT  USING 3700;K[I,1],K[I,2]
369 3700  IMAGE  "KLINGON AT SECTOR ",D,",",D," DESTROYED ****"
370 3710  K3=K3-1
371 3720  K9=K9-1
372 3730  A$="   "
373 3740  Z1=K[I,1]
374 3750  Z2=K[I,2]
375 3760  GOSUB 5510
376 3770  G[Q1,Q2]=K3*100+B3*10+S3
377 3780  RETURN
378 3790  IF C$ <> "DOCKED" THEN 3820
379 3800  PRINT "STAR BASE SHIELDS PROTECT THE ENTERPRISE"
380 3810  RETURN
381 3820  IF K3 <= 0 THEN 3910
382 3830  FOR I=1 TO 3
383 3840  IF K[I,3] <= 0 THEN 3900
384 3850  H=(K[I,3]/FND(0))*(2*RND(1))
385 3860  S=S-H
386 3870  PRINT  USING 3880;H,K[I,1],K[I,2],S
387 3880  IMAGE  4D," UNIT HIT ON ENTERPRISE AT SECTOR ",D,",",D,"   (",4D," LEFT)"
388 3890  IF S<0 THEN 4000
389 3900  NEXT I
390 3910  RETURN
391 3920  PRINT "THE ENTERPRISE IS DEAD IN SPACE.  IF YOU SURVIVE ALL IMPENDING"
392 3930  PRINT "ATTACK YOU WILL BE DEMOTED TO THE RANK OF PRIVATE"
393 3940  IF K3 <= 0 THEN 4020
394 3950  GOSUB 3790
395 3960  GOTO 3940
396 3970  PRINT
397 3980  PRINT "IT IS STARDATE"T
398 3990  GOTO 4020
399 4000  PRINT
400 4010  PRINT "THE ENTERPRISE HAS BEEN DESTROYED.  THE FEDERATION WILL BE CONQUERED"
401 4020  PRINT "THERE ARE STILL"K9" KLINGON BATTLE CRUISERS"
402 4030  GOTO 230
403 4040  PRINT
404 4050  PRINT "THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED"
405 4060  PRINT "THE FEDERATION HAS BEEN SAVED !!!"
406 4070  PRINT
407 4080  PRINT "YOUR EFFICIENCY RATING ="((K7/(T-T0))*1000)
408 4090  T1=TIM(0)+TIM(1)*60
409 4100  PRINT "YOUR ACTUAL TIME OF MISSION ="INT((((T1-T7)*.4)-T7)*100)" MINUTES"
410 4110  GOTO 230
411 4120  FOR I=S1-1 TO S1+1
412 4130  FOR J=S2-1 TO S2+1
413 4140  IF I<1 OR I>8 OR J<1 OR J>8 THEN 4200
414 4150  A$=">!<"
415 4160  Z1=I
416 4170  Z2=J
417 4180  GOSUB 5680
418 4190  IF Z3=1 THEN 4240
419 4200  NEXT J
420 4210  NEXT I
421 4220  D0=0
422 4230  GOTO 4310
423 4240  D0=1
424 4250  C$="DOCKED"
425 4260  E=3000
426 4270  P=10
427 4280  PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES"
428 4290  S=0
429 4300  GOTO 4380
430 4310  IF K3>0 THEN 4350
431 4320  IF E<E0*.1 THEN 4370
432 4330  C$="GREEN"
433 4340  GOTO 4380
434 4350  C$="RED"
435 4360  GOTO 4380
436 4370  C$="YELLOW"
437 4380  IF D[2] >= 0 THEN 4430
438 4390  PRINT
439 4400  PRINT "*** SHORT RANGE SENSORS ARE OUT ***"
440 4410  PRINT
441 4420  GOTO 4530
442 4430  PRINT  USING 4540
443 4440  PRINT  USING 4550;Q$[1,3],Q$[4,6],Q$[7,9],Q$[10,12],Q$[13,15],Q$[16,18],Q$[19,21],Q$[22,24]
444 4450  PRINT  USING 4560;Q$[25,27],Q$[28,30],Q$[31,33],Q$[34,36],Q$[37,39],Q$[40,42],Q$[43,45],Q$[46,48],T
445 4460  PRINT  USING 4570;Q$[49,51],Q$[52,54],Q$[55,57],Q$[58,60],Q$[61,63],Q$[64,66],Q$[67,69],Q$[70,72],C$
446 4470  PRINT  USING 4580;R$[1,3],R$[4,6],R$[7,9],R$[10,12],R$[13,15],R$[16,18],R$[19,21],R$[22,24],Q1,Q2
447 4480  PRINT  USING 4590;R$[25,27],R$[28,30],R$[31,33],R$[34,36],R$[37,39],R$[40,42],R$[43,45],R$[46,48],S1,S2
448 4490  PRINT  USING 4600;R$[49,51],R$[52,54],R$[55,57],R$[58,60],R$[61,63],R$[64,66],R$[67,69],R$[70,72],E
449 4500  PRINT  USING 4610;S$[1,3],S$[4,6],S$[7,9],S$[10,12],S$[13,15],S$[16,18],S$[19,21],S$[22,24],P
450 4510  PRINT  USING 4620;S$[25,27],S$[28,30],S$[31,33],S$[34,36],S$[37,39],S$[40,42],S$[43,45],S$[46,48],S
451 4520  PRINT  USING 4540
452 4530  RETURN 
453 4540  IMAGE  "---------------------------------"
454 4550  IMAGE  8(X,3A)
455 4560  IMAGE  8(X,3A),8X,"STARDATE",8X,5D
456 4570  IMAGE  8(X,3A),8X,"CONDITION",8X,6A
457 4580  IMAGE  8(X,3A),8X,"QUADRANT",9X,D,",",D
458 4590  IMAGE  8(X,3A),8X,"SECTOR",11X,D,",",D
459 4600  IMAGE  8(X,3A),8X,"ENERGY",9X,6D
460 4610  IMAGE  8(X,3A),8X,"PHOTON TORPEDOES",3D
461 4620  IMAGE  8(X,3A),8X,"SHIELDS",8X,6D
462 4630  IF D[8] >= 0 THEN 4660
463 4640  PRINT "COMPUTER DISABLED"
464 4650  GOTO 1270
465 4660  PRINT "COMPUTER ACTIVE AND AWAITING COMMAND";
466 4670  INPUT A
467 4680  GOTO A+1 OF 4740,4830,4880
468 4690  PRINT "FUNCTIONS AVAILABLE FROM COMPUTER"
469 4700  PRINT "   0 = CUMULATIVE GALACTIC RECORD"
470 4710  PRINT "   1 = STATUS REPORT"
471 4720  PRINT "   2 = PHOTON TORPEDO DATA"
472 4730  GOTO 4660
473 4740  PRINT  USING 4750;Q1,Q2
474 4750  IMAGE  "COMPUTER RECORD OF GALAXY FOR QUADRANT ",D,",",D
475 4760  PRINT  USING 5330
476 4770  PRINT  USING 5360
477 4780  FOR I=1 TO 8
478 4790  PRINT  USING 5350;I,Z[I,1],Z[I,2],Z[I,3],Z[I,4],Z[I,5],Z[I,6],Z[I,7],Z[I,8]
479 4800  PRINT  USING 5360
480 4810  NEXT I
481 4820  GOTO 1270
482 4830  PRINT "\012   STATUS REPORT\012"
483 4840  PRINT "NUMBER OF KLINGONS LEFT ="K9
484 4850  PRINT "NUMBER OF STARDATES LEFT ="(T0+T9)-T
485 4860  PRINT "NUMBER OF STARBASES LEFT ="B9
486 4870  GOTO 3560
487 4880  PRINT 
488 4890  H8=0
489 4900  FOR I=1 TO 3
490 4910  IF K[I,3] <= 0 THEN 5260
491 4920  C1=S1
492 4930  A=S2
493 4940  W1=K[I,1]
494 4950  X=K[I,2]
495 4960  GOTO 5010
496 4970  PRINT  USING 4980;Q1,Q2,S1,S2
497 4980  IMAGE  "YOU ARE AT QUADRANT ( ",D,",",D," )  SECTOR ( ",D,",",D," )"
498 4990  PRINT "SHIP'S & TARGET'S COORDINATES ARE";
499 5000  INPUT C1,A,W1,X
500 5010  X=X-A
501 5020  A=C1-W1
502 5030  IF X<0 THEN 5130
503 5040  IF A<0 THEN 5190
504 5050  IF X>0 THEN 5070
505 5060  IF A=0 THEN 5150
506 5070  C1=1
507 5080  IF ABS(A) <= ABS(X) THEN 5110
508 5090  PRINT "DIRECTION ="C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A))
509 5100  GOTO 5240
510 5110  PRINT "DIRECTION ="C1+(ABS(A)/ABS(X))
511 5120  GOTO 5240
512 5130  IF A>0 THEN 5170
513 5140  IF X=0 THEN 5190
514 5150  C1=5
515 5160  GOTO 5080
516 5170  C1=3
517 5180  GOTO 5200
518 5190  C1=7
519 5200  IF ABS(A) >= ABS(X) THEN 5230
520 5210  PRINT "DIRECTION ="C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X))
521 5220  GOTO 5240
522 5230  PRINT "DIRECTION ="C1+(ABS(X)/ABS(A))
523 5240  PRINT "DISTANCE ="(SQR(X^2+A^2))
524 5250  IF H8=1 THEN 5320
525 5260  NEXT I
526 5270  H8=0
527 5280  PRINT "DO YOU WANT TO USE THE CALCULATOR";
528 5290  INPUT A$
529 5300  IF A$="YES" THEN 4970
530 5310  IF A$ <> "NO" THEN 5280
531 5320  GOTO 1270
532 5330  IMAGE  "     1     2     3     4     5     6     7     8"
533 5340  IMAGE  "---------------------------------------------------"
534 5350  IMAGE  D,8(3X,3D)
535 5360  IMAGE  "   ----- ----- ----- ----- ----- ----- ----- -----"
536 5370  IMAGE  " WARP ENGINES SHUTDOWN AT SECTOR ",D,",",D," DUE TO BAD NAVIGATION"
537 5380  R1=INT(RND(1)*8+1)
538 5390  R2=INT(RND(1)*8+1)
539 5400  A$="   "
540 5410  Z1=R1
541 5420  Z2=R2
542 5430  GOSUB 5680
543 5440  IF Z3=0 THEN 5380
544 5450  RETURN
545 5460  FOR I=1 TO 11
546 5470  PRINT
547 5480  NEXT I
548 5490  PRINT
549 5500  RETURN
550 5510  REM ******  INSERTION IN STRING ARRAY FOR QUADRANT ******
551 5520  S8=Z1*24+Z2*3-26
552 5530  IF S8>72 THEN 5560
553 5540  Q$[S8,S8+2]=A$
554 5550  GOTO 5600
555 5560  IF S8>144 THEN 5590
556 5570  R$[S8-72,S8-70]=A$
557 5580  GOTO 5600
558 5590  S$[S8-144,S8-142]=A$
559 5600  RETURN
560 5610  REM ****  PRINTS DEVICE NAME FROM ARRAY *****
561 5620  S8=R1*12-11
562 5630  IF S8>72 THEN 5660
563 5640  PRINT D$[S8,S8+11];
564 5650  GOTO 5670
565 5660  PRINT E$[S8-72,S8-61];
566 5670  RETURN
567 5680  REM *******  STRING COMPARISON IN QUADRANT ARRAY **********
568 5683  Z1=INT(Z1+.5)
569 5686  Z2=INT(Z2+.5)
570 5690  S8=Z1*24+Z2*3-26
571 5700  Z3=0
572 5710  IF S8>72 THEN 5750
573 5720  IF Q$[S8,S8+2] <> A$ THEN 5810
574 5730  Z3=1
575 5740  GOTO 5810
576 5750  IF S8>144 THEN 5790
577 5760  IF R$[S8-72,S8-70] <> A$ THEN 5810
578 5770  Z3=1
579 5780  GOTO 5810
580 5790  IF S$[S8-144,S8-142] <> A$ THEN 5810
581 5800  Z3=1
582 5810  RETURN
583 5820  PRINT "     INSTRUCTIONS:"
584 5830  PRINT "<*> = ENTERPRISE"
585 5840  PRINT "+++ = KLINGON"
586 5850  PRINT ">!< = STARBASE"
587 5860  PRINT " *  = STAR"
588 5870  PRINT "COMMAND 0 = WARP ENGINE CONTROL"
589 5880  PRINT "  'COURSE' IS IN A CIRCULAR NUMERICAL          4  3  2"
590 5890  PRINT "  VECTOR ARRANGEMENT AS SHOWN.                  \ ^ /"
591 5900  PRINT "  INTERGER AND REAL VALUES MAY BE                \^/"
592 5910  PRINT "  USED.  THEREFORE COURSE 1.5 IS              5 ----- 1"
593 5920  PRINT "  HALF WAY BETWEEN 1 AND 2.                      /^\"
594 5930  PRINT "                                                / ^ \"
595 5940  PRINT "  A VECTOR OF 9 IS UNDEFINED, BUT              6  7  8"
596 5950  PRINT "  VALUES MAY APPROACH 9."
597 5960  PRINT "                                               COURSE"
598 5970  PRINT "  ONE 'WARP FACTOR' IS THE SIZE OF"
599 5980  PRINT "  ONE QUADRANT.  THEREFORE TO GET"
600 5990  PRINT "  FROM QUADRANT 6,5 TO 5,5 YOU WOULD"
601 6000  PRINT "  USE COURSE 3, WARP FACTOR 1"
602 6010  PRINT "COMMAND 1 = SHORT RANGE SENSOR SCAN"
603 6020  PRINT "  PRINTS THE QUADRANT YOU ARE CURRENTLY IN, INCLUDING"
604 6030  PRINT "  STARS, KLINGONS, STARBASES, AND THE ENTERPRISE; ALONG"
605 6040  PRINT "  WITH OTHER PERTINATE INFORMATION."
606 6050  PRINT "COMMAND 2 = LONG RANGE SENSOR SCAN"
607 6060  PRINT "  SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE"
608 6070  PRINT "  OF THE ENTERPRISE IN THE MIDDLE OF THE SCAN.  THE SCAN"
609 6080  PRINT "  IS CODED IN THE FORM XXX, WHERE THE UNITS DIGIT IS THE"
610 6090  PRINT "  NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF STAR-"
611 6100  PRINT "  BASES, THE HUNDREDS DIGIT IS THE NUMBER OF KLINGONS."
612 6110  PRINT "COMMAND 3 = PHASER CONTROL"
613 6120  PRINT "  ALLOWS YOU TO DESTROY THE KLINGONS BY HITTING HIM WITH"
614 6130  PRINT "  SUITABLY LARGE NUMBERS OF ENERGY UNITS TO DEPLETE HIS "
615 6140  PRINT "  SHIELD POWER.  KEEP IN MIND THAT WHEN YOU SHOOT AT"
616 6150  PRINT "  HIM, HE GONNA DO IT TO YOU TOO."
617 6160  PRINT "COMMAND 4 = PHOTON TORPEDO CONTROL"
618 6170  PRINT "  COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL"
619 6180  PRINT "  IF YOU HIT THE KLINGON, HE IS DESTROYED AND CANNOT FIRE"
620 6190  PRINT "  BACK AT YOU.  IF YOU MISS, HE WILL SHOOT HIS PHASERS AT"
621 6200  PRINT "  YOU."
622 6210  PRINT "   NOTE: THE LIBRARY COMPUTER (COMMAND 7) HAS AN OPTION"
623 6220  PRINT "   TO COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)."
624 6230  PRINT "COMMAND 5 = SHIELD CONTROL"
625 6240  PRINT "  DEFINES NUMBER OF ENERGY UNITS TO BE ASSIGNED TO SHIELDS"
626 6250  PRINT "  ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY."
627 6260  PRINT "COMMAND 6 = DAMAGE CONTROL REPORT"
628 6270  PRINT "  GIVES STATE OF REPAIRS OF ALL DEVICES.  A STATE OF REPAIR"
629 6280  PRINT "  LESS THAN ZERO SHOWS THAT THAT DEVICE IS TEMPORARALY"
630 6290  PRINT "  DAMAGED."
631 6300  PRINT "COMMAND 7 = LIBRARY COMPUTER"
632 6310  PRINT "  THE LIBRARY COMPUTER CONTAINS THREE OPTIONS:"
633 6320  PRINT "    OPTION 0 = CUMULATIVE GALACTIC RECORD"
634 6330  PRINT "     SHOWS COMPUTER MEMORY OF THE RESULTS OF ALL PREVIOUS"
635 6340  PRINT "     LONG RANGE SENSOR SCANS"
636 6350  PRINT "    OPTION 1 = STATUS REPORT"
637 6360  PRINT "     SHOWS NUMBER OF KLINGONS, STARDATES AND STARBASES"
638 6370  PRINT "     LEFT."
639 6380  PRINT "    OPTION 2 = PHOTON TORPEDO DATA"
640 6390  PRINT "     GIVES TRAJECTORY AND DISTANCE BETWEEN THE ENTERPRISE"
641 6400  PRINT "     AND ALL KLINGONS IN YOUR QUADRANT"
642 6410  RETURN
643 6420  END