Add the website files to the git repo.
[super-star-trek.git] / www / historic / mayfield.basic
diff --git a/www/historic/mayfield.basic b/www/historic/mayfield.basic
new file mode 100644 (file)
index 0000000..052da0b
--- /dev/null
@@ -0,0 +1,643 @@
+REM  Extracted from HP tape image 16-Nov-2003 by Pete Turnbull
+
+1  REM ****  HP BASIC PROGRAM LIBRARY  ******************************
+2  REM
+3  REM       STTR1: STAR TREK
+4  REM
+5  REM       36243  REV B  --  10/73
+6  REM
+7  REM ****  CONTRIBUTED PROGRAM  ***********************************
+100  REM *****************************************************************
+110  REM ***                                                           ***
+120  REM ***     STAR TREK: BY MIKE MAYFIELD, CENTERLINE ENGINEERING   ***
+130  REM ***                                                           ***
+140  REM ***        TOTAL INTERACTION GAME - ORIG. 20 OCT 1972
+150  REM ***                                                           ***
+160  REM *****************************************************************
+170  GOSUB 5460
+180  PRINT "                          STAR TREK "
+190  PRINT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!)";
+200  INPUT A$
+210  IF A$ <> "YES" THEN 230
+220  GOSUB 5820
+230  REM *****  PROGRAM STARTS HERE *****
+240  Z$="                                                                      "
+250  GOSUB 5460
+260  DIM G[8,8],C[9,2],K[3,3],N[3],Z[8,8]
+270  DIM C$[6],D$[72],E$[24],A$[3],Q$[72],R$[72],S$[48]
+280  DIM Z$[72]
+290  T0=T=INT(RND(1)*20+20)*100
+300  T9=30
+310  D0=0
+320  E0=E=3000
+330  P0=P=10
+340  S9=200
+350  S=H8=0
+360  DEF FND(D)=SQR((K[I,1]-S1)^2+(K[I,2]-S2)^2)
+370  Q1=INT(RND(1)*8+1)
+380  Q2=INT(RND(1)*8+1)
+390  S1=INT(RND(1)*8+1)
+400  S2=INT(RND(1)*8+1)
+410  T7=TIM(0)+60*TIM(1)
+420  C[2,1]=C[3,1]=C[4,1]=C[4,2]=C[5,2]=C[6,2]=-1
+430  C[1,1]=C[3,2]=C[5,1]=C[7,2]=C[9,1]=0
+440  C[1,2]=C[2,2]=C[6,1]=C[7,1]=C[8,1]=C[8,2]=C[9,2]=1
+450  MAT D=ZER
+460  D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL"
+470  D$[49]="PHOTON TUBESDAMAGE CNTRL"
+480  E$="SHIELD CNTRLCOMPUTER"
+490  B9=K9=0
+500  FOR I=1 TO 8
+510  FOR J=1 TO 8
+520  R1=RND(1)
+530  IF R1>.98 THEN 580
+540  IF R1>.95 THEN 610
+550  IF R1>.8 THEN 640
+560  K3=0
+570  GOTO 660
+580  K3=3
+590  K9=K9+3
+600  GOTO 660
+610  K3=2
+620  K9=K9+2
+630  GOTO 660
+640  K3=1
+650  K9=K9+1
+660  R1=RND(1)
+670  IF R1>.96 THEN 700
+680  B3=0
+690  GOTO 720
+700  B3=1
+710  B9=B9+1
+720  S3=INT(RND(1)*8+1)
+730  G[I,J]=K3*100+B3*10+S3
+740  Z[I,J]=0
+750  NEXT J
+760  NEXT I
+770  K7=K9
+775  IF B9 <= 0 OR K9 <= 0 THEN 490
+780  PRINT "YOU MUST DESTROY"K9;" KLINGONS IN"T9;" STARDATES WITH"B9;" STARBASES"
+810  K3=B3=S3=0
+820  IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 920
+830  X=G[Q1,Q2]*.01
+840  K3=INT(X)
+850  B3=INT((X-K3)*10)
+860  S3=G[Q1,Q2]-INT(G[Q1,Q2]*.1)*10
+870  IF K3=0 THEN 910
+880  IF S>200 THEN 910
+890  PRINT "COMBAT AREA      CONDITION RED"
+900  PRINT "   SHIELDS DANGEROUSLY LOW"
+910  MAT K=ZER
+920  FOR I=1 TO 3
+930  K[I,3]=0
+940  NEXT I
+950  Q$=Z$
+960  R$=Z$
+970  S$=Z$[1,48]
+980  A$="<*>"
+990  Z1=S1
+1000  Z2=S2
+1010  GOSUB 5510
+1020  FOR I=1 TO K3
+1030  GOSUB 5380
+1040  A$="+++"
+1050  Z1=R1
+1060  Z2=R2
+1070  GOSUB 5510
+1080  K[I,1]=R1
+1090  K[I,2]=R2
+1100  K[I,3]=S9
+1110  NEXT I
+1120  FOR I=1 TO B3
+1130  GOSUB 5380
+1140  A$=">!<"
+1150  Z1=R1
+1160  Z2=R2
+1170  GOSUB 5510
+1180  NEXT I
+1190  FOR I=1 TO S3
+1200  GOSUB 5380
+1210  A$=" * "
+1220  Z1=R1
+1230  Z2=R2
+1240  GOSUB 5510
+1250  NEXT I
+1260  GOSUB 4120
+1270  PRINT "COMMAND:";
+1280  INPUT A
+1290  GOTO A+1 OF 1410,1260,2330,2530,2800,3460,3560,4630
+1300  PRINT
+1310  PRINT "   0 = SET COURSE"
+1320  PRINT "   1 = SHORT RANGE SENSOR SCAN"
+1330  PRINT "   2 = LONG RANGE SENSOR SCAN"
+1340  PRINT "   3 = FIRE PHASERS"
+1350  PRINT "   4 = FIRE PHOTON TORPEDOES"
+1360  PRINT "   5 = SHIELD CONTROL"
+1370  PRINT "   6 = DAMAGE CONTROL REPORT"
+1380  PRINT "   7 = CALL ON LIBRARY COMPUTER"
+1390  PRINT
+1400  GOTO 1270
+1410  PRINT "COURSE (1-9):";
+1420  INPUT C1
+1430  IF C1=0 THEN 1270
+1440  IF C1<1 OR C1 >= 9 THEN 1410
+1450  PRINT "WARP FACTOR (0-8):";
+1460  INPUT W1
+1470  IF W1<0 OR W1>8 THEN 1410
+1480  IF D[1] >= 0 OR W1 <= .2 THEN 1510
+1490  PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2"
+1500  GOTO 1410
+1510  IF K3 <= 0 THEN 1560
+1520  GOSUB 3790
+1530  IF K3 <= 0 THEN 1560
+1540  IF S<0 THEN 4000
+1550  GOTO 1610
+1560  IF E>0 THEN 1610
+1570  IF S<1 THEN 3920
+1580  PRINT "YOU HAVE"E" UNITS OF ENERGY"
+1590  PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE"S" UNITS LEFT"
+1600  GOTO 1270
+1610  FOR I=1 TO 8
+1620  IF D[I] >= 0 THEN 1640
+1630  D[I]=D[I]+1
+1640  NEXT I
+1650  IF RND(1)>.2 THEN 1810
+1660  R1=INT(RND(1)*8+1)
+1670  IF RND(1) >= .5 THEN 1750
+1680  D[R1]=D[R1]-(RND(1)*5+1)
+1690  PRINT
+1700  PRINT "DAMAGE CONTROL REPORT:";
+1710  GOSUB 5610
+1720  PRINT " DAMAGED"
+1730  PRINT
+1740  GOTO 1810
+1750  D[R1]=D[R1]+(RND(1)*5+1)
+1760  PRINT
+1770  PRINT "DAMAGE CONTROL REPORT:";
+1780  GOSUB 5610
+1790  PRINT " STATE OF REPAIR IMPROVED"
+1800  PRINT
+1810  N=INT(W1*8)
+1820  A$="   "
+1830  Z1=S1
+1840  Z2=S2
+1850  GOSUB 5510
+1870  X=S1
+1880  Y=S2
+1885  C2=INT(C1)
+1890  X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2)
+1900  X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2)
+1910  FOR I=1 TO N
+1920  S1=S1+X1
+1930  S2=S2+X2
+1940  IF S1<.5 OR S1 >= 8.5 OR S2<.5 OR S2 >= 8.5 THEN 2170
+1950  A$="   "
+1960  Z1=S1
+1970  Z2=S2
+1980  GOSUB 5680
+1990  IF Z3 <> 0 THEN 2070
+2030  PRINT  USING 5370;S1,S2
+2040  S1=S1-X1
+2050  S2=S2-X2
+2060  GOTO 2080
+2070  NEXT I
+2080  A$="<*>"
+2083  S1=INT(S1+.5)
+2086  S2=INT(S2+.5)
+2090  Z1=S1
+2100  Z2=S2
+2110  GOSUB 5510
+2120  E=E-N+5
+2130  IF W1<1 THEN 2150
+2140  T=T+1
+2150  IF T>T0+T9 THEN 3970
+2160  GOTO 1260
+2170  X=Q1*8+X+X1*N
+2180  Y=Q2*8+Y+X2*N
+2190  Q1=INT(X/8)
+2200  Q2=INT(Y/8)
+2210  S1=INT(X-Q1*8+.5)
+2220  S2=INT(Y-Q2*8+.5)
+2230  IF S1 <> 0 THEN 2260
+2240  Q1=Q1-1
+2250  S1=8
+2260  IF S2 <> 0 THEN 2290
+2270  Q2=Q2-1
+2280  S2=8
+2290  T=T+1
+2300  E=E-N+5
+2310  IF T>T0+T9 THEN 3970
+2320  GOTO 810
+2330  IF D[3] >= 0 THEN 2370
+2340  PRINT "LONG RANGE SENSORS ARE INOPERABLE"
+2350  IMAGE  "LONG RANGE SENSOR SCAN FOR QUADRANT",D,",",D
+2360  GOTO 1270
+2370  PRINT  USING 2350;Q1,Q2
+2380  PRINT  USING 2520
+2390  FOR I=Q1-1 TO Q1+1
+2400  MAT N=ZER
+2410  FOR J=Q2-1 TO Q2+1
+2420  IF I<1 OR I>8 OR J<1 OR J>8 THEN 2460
+2430  N[J-Q2+2]=G[I,J]
+2440  IF D[7]<0 THEN 2460
+2450  Z[I,J]=G[I,J]
+2460  NEXT J
+2470  PRINT  USING 2510;N[1],N[2],N[3]
+2480  PRINT  USING 2520
+2490  NEXT I
+2500  GOTO 1270
+2510  IMAGE  ": ",3(3D," :")
+2520  IMAGE  "-----------------"
+2530  IF K3 <= 0 THEN 3670
+2540  IF D[4] >= 0 THEN 2570
+2550  PRINT "PHASER CONTROL IS DISABLED"
+2560  GOTO 1270
+2570  IF D[7] >= 0 THEN 2590
+2580  PRINT " COMPUTER FAILURE HAMPERS ACCURACY"
+2590  PRINT "PHASERS LOCKED ON TARGET.  ENERGY AVAILABLE="E
+2600  PRINT "NUMBER OF UNITS TO FIRE:";
+2610  INPUT X
+2620  IF X <= 0 THEN 1270
+2630  IF E-X<0 THEN 2570
+2640  E=E-X
+2650  GOSUB 3790
+2660  IF D[7] >= 0 THEN 2680
+2670  X=X*RND(1)
+2680  FOR I=1 TO 3
+2690  IF K[I,3] <= 0 THEN 2770
+2700  H=(X/K3/FND(0))*(2*RND(1))
+2710  K[I,3]=K[I,3]-H
+2720  PRINT  USING 2730;H,K[I,1],K[I,2],K[I,3]
+2730  IMAGE  4D," UNIT HIT ON KLINGON AT SECTOR ",D,",",D,"   (",3D," LEFT)"
+2740  IF K[I,3]>0 THEN 2770
+2750  GOSUB 3690
+2760  IF K9 <= 0 THEN 4040
+2770  NEXT I
+2780  IF E<0 THEN 4000
+2790  GOTO 1270
+2800  IF D[5] >= 0 THEN 2830
+2810  PRINT "PHOTON TUBES ARE NOT OPERATIONAL"
+2820  GOTO 1270
+2830  IF P>0 THEN 2860
+2840  PRINT "ALL PHOTON TORPEDOES EXPENDED"
+2850  GOTO 1270
+2860  PRINT "TORPEDO COURSE (1-9):";
+2870  INPUT C1
+2880  IF C1=0 THEN 1270
+2890  IF C1<1 OR C1 >= 9 THEN 2860
+2895  C2=INT(C1)
+2900  X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2)
+2910  X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2)
+2920  X=S1
+2930  Y=S2
+2940  P=P-1
+2950  PRINT "TORPEDO TRACK:"
+2960  X=X+X1
+2970  Y=Y+X2
+2980  IF X<.5 OR X >= 8.5 OR Y<.5 OR Y >= 8.5 THEN 3420
+2990  PRINT  USING 3000;X,Y
+3000  IMAGE  15X,D,",",D
+3010  A$="   "
+3020  Z1=X
+3030  Z2=Y
+3040  GOSUB 5680
+3050  IF Z3=0 THEN 3070
+3060  GOTO 2960
+3070  A$="+++"
+3080  Z1=X
+3090  Z2=Y
+3100  GOSUB 5680
+3110  IF Z3=0 THEN 3220
+3120  PRINT "*** KLINGON DESTROYED ***"
+3130  K3=K3-1
+3140  K9=K9-1
+3150  IF K9 <= 0 THEN 4040
+3160  FOR I=1 TO 3
+3170  IF INT(X+.5) <> K[I,1] THEN 3190
+3180  IF INT(Y+.5)=K[I,2] THEN 3200
+3190  NEXT I
+3200  K[I,3]=0
+3210  GOTO 3360
+3220  A$=" * "
+3230  Z1=X
+3240  Z2=Y
+3250  GOSUB 5680
+3260  IF Z3=0 THEN 3290
+3270  PRINT "YOU CAN'T DESTROY STARS SILLY"
+3280  GOTO 3420
+3290  A$=">!<"
+3300  Z1=X
+3310  Z2=Y
+3320  GOSUB 5680
+3330  IF Z3=0 THEN 2960
+3340  PRINT "*** STAR BASE DESTROYED ***  .......CONGRATULATIONS"
+3350  B3=B3-1
+3360  A$="   "
+3370  Z1=INT(X+.5)
+3380  Z2=INT(Y+.5)
+3390  GOSUB 5510
+3400  G[Q1,Q2]=K3*100+B3*10+S3
+3410  GOTO 3430
+3420  PRINT "TORPEDO MISSED"
+3430  GOSUB 3790
+3440  IF E<0 THEN 4000
+3450  GOTO 1270
+3460  IF D[7] >= 0 THEN 3490
+3470  PRINT "SHIELD CONTROL IS NON-OPERATIONAL"
+3480  GOTO 1270
+3490  PRINT "ENERGY AVAILABLE ="E+S"   NUMBER OF UNITS TO SHIELDS:";
+3500  INPUT X
+3510  IF X <= 0 THEN 1270
+3520  IF E+S-X<0 THEN 3490
+3530  E=E+S-X
+3540  S=X
+3550  GOTO 1270
+3560  IF D[6] >= 0 THEN 3590
+3570  PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE"
+3580  GOTO 1270
+3590  PRINT
+3600  PRINT "DEVICE        STATE OF REPAIR"
+3610  FOR R1=1 TO 8
+3620  GOSUB 5610
+3630  PRINT "",D[R1]
+3640  NEXT R1
+3650  PRINT
+3660  GOTO 1270
+3670  PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT"
+3680  GOTO 1270
+3690  PRINT  USING 3700;K[I,1],K[I,2]
+3700  IMAGE  "KLINGON AT SECTOR ",D,",",D," DESTROYED ****"
+3710  K3=K3-1
+3720  K9=K9-1
+3730  A$="   "
+3740  Z1=K[I,1]
+3750  Z2=K[I,2]
+3760  GOSUB 5510
+3770  G[Q1,Q2]=K3*100+B3*10+S3
+3780  RETURN
+3790  IF C$ <> "DOCKED" THEN 3820
+3800  PRINT "STAR BASE SHIELDS PROTECT THE ENTERPRISE"
+3810  RETURN
+3820  IF K3 <= 0 THEN 3910
+3830  FOR I=1 TO 3
+3840  IF K[I,3] <= 0 THEN 3900
+3850  H=(K[I,3]/FND(0))*(2*RND(1))
+3860  S=S-H
+3870  PRINT  USING 3880;H,K[I,1],K[I,2],S
+3880  IMAGE  4D," UNIT HIT ON ENTERPRISE AT SECTOR ",D,",",D,"   (",4D," LEFT)"
+3890  IF S<0 THEN 4000
+3900  NEXT I
+3910  RETURN
+3920  PRINT "THE ENTERPRISE IS DEAD IN SPACE.  IF YOU SURVIVE ALL IMPENDING"
+3930  PRINT "ATTACK YOU WILL BE DEMOTED TO THE RANK OF PRIVATE"
+3940  IF K3 <= 0 THEN 4020
+3950  GOSUB 3790
+3960  GOTO 3940
+3970  PRINT
+3980  PRINT "IT IS STARDATE"T
+3990  GOTO 4020
+4000  PRINT
+4010  PRINT "THE ENTERPRISE HAS BEEN DESTROYED.  THE FEDERATION WILL BE CONQUERED"
+4020  PRINT "THERE ARE STILL"K9" KLINGON BATTLE CRUISERS"
+4030  GOTO 230
+4040  PRINT
+4050  PRINT "THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED"
+4060  PRINT "THE FEDERATION HAS BEEN SAVED !!!"
+4070  PRINT
+4080  PRINT "YOUR EFFICIENCY RATING ="((K7/(T-T0))*1000)
+4090  T1=TIM(0)+TIM(1)*60
+4100  PRINT "YOUR ACTUAL TIME OF MISSION ="INT((((T1-T7)*.4)-T7)*100)" MINUTES"
+4110  GOTO 230
+4120  FOR I=S1-1 TO S1+1
+4130  FOR J=S2-1 TO S2+1
+4140  IF I<1 OR I>8 OR J<1 OR J>8 THEN 4200
+4150  A$=">!<"
+4160  Z1=I
+4170  Z2=J
+4180  GOSUB 5680
+4190  IF Z3=1 THEN 4240
+4200  NEXT J
+4210  NEXT I
+4220  D0=0
+4230  GOTO 4310
+4240  D0=1
+4250  C$="DOCKED"
+4260  E=3000
+4270  P=10
+4280  PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES"
+4290  S=0
+4300  GOTO 4380
+4310  IF K3>0 THEN 4350
+4320  IF E<E0*.1 THEN 4370
+4330  C$="GREEN"
+4340  GOTO 4380
+4350  C$="RED"
+4360  GOTO 4380
+4370  C$="YELLOW"
+4380  IF D[2] >= 0 THEN 4430
+4390  PRINT
+4400  PRINT "*** SHORT RANGE SENSORS ARE OUT ***"
+4410  PRINT
+4420  GOTO 4530
+4430  PRINT  USING 4540
+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]
+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
+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$
+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
+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
+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
+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
+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
+4520  PRINT  USING 4540
+4530  RETURN 
+4540  IMAGE  "---------------------------------"
+4550  IMAGE  8(X,3A)
+4560  IMAGE  8(X,3A),8X,"STARDATE",8X,5D
+4570  IMAGE  8(X,3A),8X,"CONDITION",8X,6A
+4580  IMAGE  8(X,3A),8X,"QUADRANT",9X,D,",",D
+4590  IMAGE  8(X,3A),8X,"SECTOR",11X,D,",",D
+4600  IMAGE  8(X,3A),8X,"ENERGY",9X,6D
+4610  IMAGE  8(X,3A),8X,"PHOTON TORPEDOES",3D
+4620  IMAGE  8(X,3A),8X,"SHIELDS",8X,6D
+4630  IF D[8] >= 0 THEN 4660
+4640  PRINT "COMPUTER DISABLED"
+4650  GOTO 1270
+4660  PRINT "COMPUTER ACTIVE AND AWAITING COMMAND";
+4670  INPUT A
+4680  GOTO A+1 OF 4740,4830,4880
+4690  PRINT "FUNCTIONS AVAILABLE FROM COMPUTER"
+4700  PRINT "   0 = CUMULATIVE GALACTIC RECORD"
+4710  PRINT "   1 = STATUS REPORT"
+4720  PRINT "   2 = PHOTON TORPEDO DATA"
+4730  GOTO 4660
+4740  PRINT  USING 4750;Q1,Q2
+4750  IMAGE  "COMPUTER RECORD OF GALAXY FOR QUADRANT ",D,",",D
+4760  PRINT  USING 5330
+4770  PRINT  USING 5360
+4780  FOR I=1 TO 8
+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]
+4800  PRINT  USING 5360
+4810  NEXT I
+4820  GOTO 1270
+4830  PRINT "\012   STATUS REPORT\012"
+4840  PRINT "NUMBER OF KLINGONS LEFT ="K9
+4850  PRINT "NUMBER OF STARDATES LEFT ="(T0+T9)-T
+4860  PRINT "NUMBER OF STARBASES LEFT ="B9
+4870  GOTO 3560
+4880  PRINT 
+4890  H8=0
+4900  FOR I=1 TO 3
+4910  IF K[I,3] <= 0 THEN 5260
+4920  C1=S1
+4930  A=S2
+4940  W1=K[I,1]
+4950  X=K[I,2]
+4960  GOTO 5010
+4970  PRINT  USING 4980;Q1,Q2,S1,S2
+4980  IMAGE  "YOU ARE AT QUADRANT ( ",D,",",D," )  SECTOR ( ",D,",",D," )"
+4990  PRINT "SHIP'S & TARGET'S COORDINATES ARE";
+5000  INPUT C1,A,W1,X
+5010  X=X-A
+5020  A=C1-W1
+5030  IF X<0 THEN 5130
+5040  IF A<0 THEN 5190
+5050  IF X>0 THEN 5070
+5060  IF A=0 THEN 5150
+5070  C1=1
+5080  IF ABS(A) <= ABS(X) THEN 5110
+5090  PRINT "DIRECTION ="C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A))
+5100  GOTO 5240
+5110  PRINT "DIRECTION ="C1+(ABS(A)/ABS(X))
+5120  GOTO 5240
+5130  IF A>0 THEN 5170
+5140  IF X=0 THEN 5190
+5150  C1=5
+5160  GOTO 5080
+5170  C1=3
+5180  GOTO 5200
+5190  C1=7
+5200  IF ABS(A) >= ABS(X) THEN 5230
+5210  PRINT "DIRECTION ="C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X))
+5220  GOTO 5240
+5230  PRINT "DIRECTION ="C1+(ABS(X)/ABS(A))
+5240  PRINT "DISTANCE ="(SQR(X^2+A^2))
+5250  IF H8=1 THEN 5320
+5260  NEXT I
+5270  H8=0
+5280  PRINT "DO YOU WANT TO USE THE CALCULATOR";
+5290  INPUT A$
+5300  IF A$="YES" THEN 4970
+5310  IF A$ <> "NO" THEN 5280
+5320  GOTO 1270
+5330  IMAGE  "     1     2     3     4     5     6     7     8"
+5340  IMAGE  "---------------------------------------------------"
+5350  IMAGE  D,8(3X,3D)
+5360  IMAGE  "   ----- ----- ----- ----- ----- ----- ----- -----"
+5370  IMAGE  " WARP ENGINES SHUTDOWN AT SECTOR ",D,",",D," DUE TO BAD NAVIGATION"
+5380  R1=INT(RND(1)*8+1)
+5390  R2=INT(RND(1)*8+1)
+5400  A$="   "
+5410  Z1=R1
+5420  Z2=R2
+5430  GOSUB 5680
+5440  IF Z3=0 THEN 5380
+5450  RETURN
+5460  FOR I=1 TO 11
+5470  PRINT
+5480  NEXT I
+5490  PRINT
+5500  RETURN
+5510  REM ******  INSERTION IN STRING ARRAY FOR QUADRANT ******
+5520  S8=Z1*24+Z2*3-26
+5530  IF S8>72 THEN 5560
+5540  Q$[S8,S8+2]=A$
+5550  GOTO 5600
+5560  IF S8>144 THEN 5590
+5570  R$[S8-72,S8-70]=A$
+5580  GOTO 5600
+5590  S$[S8-144,S8-142]=A$
+5600  RETURN
+5610  REM ****  PRINTS DEVICE NAME FROM ARRAY *****
+5620  S8=R1*12-11
+5630  IF S8>72 THEN 5660
+5640  PRINT D$[S8,S8+11];
+5650  GOTO 5670
+5660  PRINT E$[S8-72,S8-61];
+5670  RETURN
+5680  REM *******  STRING COMPARISON IN QUADRANT ARRAY **********
+5683  Z1=INT(Z1+.5)
+5686  Z2=INT(Z2+.5)
+5690  S8=Z1*24+Z2*3-26
+5700  Z3=0
+5710  IF S8>72 THEN 5750
+5720  IF Q$[S8,S8+2] <> A$ THEN 5810
+5730  Z3=1
+5740  GOTO 5810
+5750  IF S8>144 THEN 5790
+5760  IF R$[S8-72,S8-70] <> A$ THEN 5810
+5770  Z3=1
+5780  GOTO 5810
+5790  IF S$[S8-144,S8-142] <> A$ THEN 5810
+5800  Z3=1
+5810  RETURN
+5820  PRINT "     INSTRUCTIONS:"
+5830  PRINT "<*> = ENTERPRISE"
+5840  PRINT "+++ = KLINGON"
+5850  PRINT ">!< = STARBASE"
+5860  PRINT " *  = STAR"
+5870  PRINT "COMMAND 0 = WARP ENGINE CONTROL"
+5880  PRINT "  'COURSE' IS IN A CIRCULAR NUMERICAL          4  3  2"
+5890  PRINT "  VECTOR ARRANGEMENT AS SHOWN.                  \ ^ /"
+5900  PRINT "  INTERGER AND REAL VALUES MAY BE                \^/"
+5910  PRINT "  USED.  THEREFORE COURSE 1.5 IS              5 ----- 1"
+5920  PRINT "  HALF WAY BETWEEN 1 AND 2.                      /^\"
+5930  PRINT "                                                / ^ \"
+5940  PRINT "  A VECTOR OF 9 IS UNDEFINED, BUT              6  7  8"
+5950  PRINT "  VALUES MAY APPROACH 9."
+5960  PRINT "                                               COURSE"
+5970  PRINT "  ONE 'WARP FACTOR' IS THE SIZE OF"
+5980  PRINT "  ONE QUADRANT.  THEREFORE TO GET"
+5990  PRINT "  FROM QUADRANT 6,5 TO 5,5 YOU WOULD"
+6000  PRINT "  USE COURSE 3, WARP FACTOR 1"
+6010  PRINT "COMMAND 1 = SHORT RANGE SENSOR SCAN"
+6020  PRINT "  PRINTS THE QUADRANT YOU ARE CURRENTLY IN, INCLUDING"
+6030  PRINT "  STARS, KLINGONS, STARBASES, AND THE ENTERPRISE; ALONG"
+6040  PRINT "  WITH OTHER PERTINATE INFORMATION."
+6050  PRINT "COMMAND 2 = LONG RANGE SENSOR SCAN"
+6060  PRINT "  SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE"
+6070  PRINT "  OF THE ENTERPRISE IN THE MIDDLE OF THE SCAN.  THE SCAN"
+6080  PRINT "  IS CODED IN THE FORM XXX, WHERE THE UNITS DIGIT IS THE"
+6090  PRINT "  NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF STAR-"
+6100  PRINT "  BASES, THE HUNDREDS DIGIT IS THE NUMBER OF KLINGONS."
+6110  PRINT "COMMAND 3 = PHASER CONTROL"
+6120  PRINT "  ALLOWS YOU TO DESTROY THE KLINGONS BY HITTING HIM WITH"
+6130  PRINT "  SUITABLY LARGE NUMBERS OF ENERGY UNITS TO DEPLETE HIS "
+6140  PRINT "  SHIELD POWER.  KEEP IN MIND THAT WHEN YOU SHOOT AT"
+6150  PRINT "  HIM, HE GONNA DO IT TO YOU TOO."
+6160  PRINT "COMMAND 4 = PHOTON TORPEDO CONTROL"
+6170  PRINT "  COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL"
+6180  PRINT "  IF YOU HIT THE KLINGON, HE IS DESTROYED AND CANNOT FIRE"
+6190  PRINT "  BACK AT YOU.  IF YOU MISS, HE WILL SHOOT HIS PHASERS AT"
+6200  PRINT "  YOU."
+6210  PRINT "   NOTE: THE LIBRARY COMPUTER (COMMAND 7) HAS AN OPTION"
+6220  PRINT "   TO COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)."
+6230  PRINT "COMMAND 5 = SHIELD CONTROL"
+6240  PRINT "  DEFINES NUMBER OF ENERGY UNITS TO BE ASSIGNED TO SHIELDS"
+6250  PRINT "  ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY."
+6260  PRINT "COMMAND 6 = DAMAGE CONTROL REPORT"
+6270  PRINT "  GIVES STATE OF REPAIRS OF ALL DEVICES.  A STATE OF REPAIR"
+6280  PRINT "  LESS THAN ZERO SHOWS THAT THAT DEVICE IS TEMPORARALY"
+6290  PRINT "  DAMAGED."
+6300  PRINT "COMMAND 7 = LIBRARY COMPUTER"
+6310  PRINT "  THE LIBRARY COMPUTER CONTAINS THREE OPTIONS:"
+6320  PRINT "    OPTION 0 = CUMULATIVE GALACTIC RECORD"
+6330  PRINT "     SHOWS COMPUTER MEMORY OF THE RESULTS OF ALL PREVIOUS"
+6340  PRINT "     LONG RANGE SENSOR SCANS"
+6350  PRINT "    OPTION 1 = STATUS REPORT"
+6360  PRINT "     SHOWS NUMBER OF KLINGONS, STARDATES AND STARBASES"
+6370  PRINT "     LEFT."
+6380  PRINT "    OPTION 2 = PHOTON TORPEDO DATA"
+6390  PRINT "     GIVES TRAJECTORY AND DISTANCE BETWEEN THE ENTERPRISE"
+6400  PRINT "     AND ALL KLINGONS IN YOUR QUADRANT"
+6410  RETURN
+6420  END