100     REM *** PROGRAM SIMULATES TV PROGRAM STARTREK
110     REM *** WRITTEN BY MIKE MAYFIELD, CENTERLINE ENGINEERING
170     RANDOMIZE
180     PRINT "                  * * *  STAR TREK  * * *"
181     PRINT
200     INPUT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!)";A$
210     IF A$<>"YES" THEN 230
220    GOTO 5820
230     REM *** PROGRAM BEGINS HERE
240     Z$,R$,Q$="                                                                        "
260     DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8)
290     T0,T=INT(RND(1)*20+20)*100
300     T9=30
301     D0=0
302     E0,E=3000
303     P0,P=10
304     S9=200
305     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=TIME(0)
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$=D$+"PHOTON TUBESDAMAGE CNTRL"
480     E$="SHIELD CNTRLCOMPUTER"
490     B9,K9=0
491     REM *** SETS UP WHAT EXISTS IN GALAXY
500     FOR I=1TO8
510     FOR J=1TO8
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
561     GOTO 660
580     K3=3
581     K9=K9+3
582     GOTO 660
610     K3=2
611     K9=K9+2
612     GOTO 660
640     K3=1
641     K9=K9+1
660     R1=RND(1)
670     IF R1>.96 THEN 700
680     B3=0
681     GOTO 720
700     B3=1
701     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     PRINT
776     PRINT
780     PRINT"YOU MUST DESTROY"K9" KLINGONS IN"T9" STARDATES WITH "B9" STARBASES"
790     IF B9>0 THEN 810
800     G(6,3)=114
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=1TO3
930     K(I,3)=0
940     NEXT I
950     Q$=Z$
951     R$=Z$
970     S$=MID(Z$,1,48)
971     REM *** PUT ENTERPRISE SOMEWHERE
980     A$="<*>"
990     Z1=S1
1000    Z2=S2
1010    GOSUB 5510
1020    FOR I=1TOK3
1030 GOSUB 5380
1031    REM *** PUT KLINGONS SOMEWHERE
1040    A$="+++"
1050    Z1=R1
1060    Z2=R2
1070    GOSUB 5510
1080    K(I,1)=R1
1081    K(I,2)=R2
1082    K(I,3)=S9
1110    NEXT I
1120    FOR I=1TOB3
1130    GOSUB 5380
1131    REM *** PUT STARBASE(S) SOMEWHERE
1140    A$=">!<"
1141    Z1=R1
1142    Z2=R2
1170    GOSUB 5510
1180    NEXT I
1190    FOR I=1TOS3
1200    GOSUB 5380
1201    REM *** PUT STARS SOMEWHERE
1210    A$=" * "
1211    Z1=R1
1212    Z2=R2
1240    GOSUB 5510
1250    NEXT I
1260    GOSUB 4120
1270    INPUT "COMMAND:";A
1290    IF A=0 GOTO 1410
1291    IF A=1 GOTO 1260
1292    IF A=2 GOTO 2330
1293    IF A=3 GOTO 2530
1294    IF A=4 GOTO 2800
1295    IF A=5 GOTO 3460
1296    IF A=6 GOTO 3560
1297    IF A=7 GOTO 4630
1298    IF A=8 GOTO 6510
1310    PRINT
1311    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"   8 = END THE CONTEST"
1391    PRINT
1400    GOTO 1270
1401    REM *** COURSE CONTROL CODE BEGINS HERE
1410    INPUT "COURSE (1-9):";C1
1430    IF C1=0 THEN 1270
1440    IF C1<1 OR C1>9 THEN 1410
1450    INPUT "WARP FACTOR (0-8):";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=1TO8
1611    IF D(I)>=0 THEN 1640
1612    REM *** FIX ANY DAMAGED DEVICE
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
1691    PRINT "DAMAGE CONTROL REPORT:";
1710    GOSUB 5610
1720    PRINT" DAMAGED"
1721    PRINT
1722    GOTO 1810
1750    D(R1)=D(R1)+(RND(1)*5+1)
1760    PRINT
1761    PRINT "DAMAGE CONTROL REPORT:";
1780    GOSUB 5610
1790    PRINT" STATE OF REPAIR IMPROVED"
1791    PRINT
1810    N=INT(W1*8)
1811    A$="   "
1812    Z1=S1
1813    Z2=S2
1850    GOSUB 5510
1860    X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
1870    X=S1
1871    Y=S2
1890    X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
1900    X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1))
1910    FOR I=1TON
1911    S1=S1+X1
1912    S2=S2+X2
1940    IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 2170
1950    S8=S1*24+S2*3-26
1951    IF S8>72 THEN 1990
1970    IF MID(Q$,S8,3)="   " THEN 2070
1980    GOTO 2030
1990    IF S8>144 THEN 2020
2000    IF MID(R$,S8-72,3)="   " THEN 2070
2010    GOTO 2030
2020    IF MID(S$,S8-144,3)="   " THEN 2070
2030    PRINT"WARP ENGINES SHUTDOWN AT SECTOR "S1","S2" DUE TO BAD NAVAGATION"
2040    S1=S1-X1
2041    S2=S2-X2
2042    GOTO 2080
2070    NEXT I
2080    A$="<*>"
2081    Z1=S1
2082    Z2=S2
2110    GOSUB 5510
2120    E=E-N+5
2121    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
2171    Y=Q2*8+Y+X2*N
2190    Q1=INT(X/8)
2191    Q2=INT(Y/8)
2192    S1=INT(X-Q1*8)
2193    S2=INT(Y-Q2*8)
2230    IF S1<>0 THEN 2260
2240    Q1=Q1-1
2241    S1=8
2260    IF S2<>0 THEN 2290
2270    Q2=Q2-1
2271    S2=8
2290    T=T+1
2291    E=E-N+5
2310    IF T>T0 + T9 THEN 3970
2320    GOTO 810
2321    REM *** LONG RANGE SENSON SCAN CODE BEGINS HERE
2330    IF D(3)>=0 THEN 2370
2340    PRINT "LONG RANGE SENSORS ARE INOPERABLE"
2360    GOTO 1270
2370    PRINT"LONG RANGE SENSOR SCAN FOR QUADRANT "Q1","Q2
2380    PRINT"-------------------"
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    P1$=": ### : ### : ### :"
2471    PRINT USING P1$,N(1),N(2),N(3)
2480    PRINT"-------------------"
2490    NEXT I
2500    GOTO 1270
2501    REM *** PHASER CONTROL CODE BEGINS HERE
2530    IF K3<=0 THEN 3670
2540    IF D(4)>=0 THEN 2570
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    INPUT "NUMBER OF UNITS TO FIRE:";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=1TO3
2690    IF K(I,3)<=0 THEN 2770
2700    H=INT((X/K3/FND(0))*(2*RND(1)))
2710    K(I,3)=K(I,3)-H
2720    PRINTH" UNIT HIT ON KLINGON AT SECTOR "K(I,1)","K(I,2);
2721    PRINT"    ("K(I,3)" 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
2791    REM *** PHOTON TORPEDO CODE BEGINS HERE
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    INPUT "TORPEDO COURSE (1-9):";C1
2880    IF C1=0 THEN 1270
2890    IF C1<1 OR C1>=9 THEN 2860
2900    X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
2910    X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1))
2920    X=S1
2921    Y=S2
2922    P=P-1
2950    PRINT "TORPEDO TRACK:"
2960    X=X+X1
2961    Y=Y+X2
2980    IF X<1 OR X>=9 OR Y<1 OR Y>=9 THEN 3420
2990    PRINT"               "X","Y
3010    A$="   "
3011    Z1=X
3012    Z2=Y
3040    GOSUB 5680
3050    IF Z3=0 THEN 3070
3060    GOTO 2960
3070    A$="+++"
3071    Z1=X
3072    Z2=Y
3100    GOSUB 5680
3110    IF Z3=0 THEN 3220
3120    PRINT "*** KLINGON DESTROYED ***"
3130    K3=K3-1
3131    K9=K9-1
3150    IF K9<=0 THEN 4040
3160    FOR I=1TO3
3161    IF INT(X)<>K(I,1) THEN 3190
3180    IF INT(Y)=K(I,2) THEN 3200
3190    NEXT I
3200    K(I,3)=0
3201    GOTO 3360
3220    A$=" * "
3221    Z1=X
3222    Z2=Y
3250    GOSUB 5680
3260    IF Z3=0 THEN 3290
3270    PRINT "YOU CAN'T DESTROY STARS, SILLY"
3280    GOTO 3420
3290    A$=">!<"
3291    Z1=X
3292    Z2=Y
3320    GOSUB 5680
3330    IF Z3=0 THEN 2960
3340    PRINT "*** STAR BASE DESTROYED *** .......CONGRATULATIONS"
3350    B3=B3-1
3360    A$="   "
3361    Z1=X
3362    Z2=Y
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
3451    REM *** SHIELD CONTROL CODE BEGINS HERE
3460    IF D(7)>=0 THEN 3490
3470    PRINT "SHIELD CONTROL IS NON-OPERATIONAL"
3480    GOTO 1270
3490    PRINT "ENERGY AVAILABLE ="E+S;
3500    INPUT "   NUMBER OF UNITS TO SHIELDS:";X
3510    IF X<=0 THEN 1270
3520    IF E+S-X<0 THEN 3490
3530    E=E+S-X
3531    S=X
3550    GOTO 1270
3551    REM *** DAMAGE CONTROL REPORT CODE BEGINS HERE
3560    IF D(6)>=0 THEN 3590
3570    PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE"
3580    GOTO 1270
3590    PRINT
3591    PRINT "DEVICE        STATE OF REPAIR"
3610    FOR R1=1TO8
3620    GOSUB 5610
3630    PRINTD(R1)
3640    NEXT R1
3641    PRINT
3660    GOTO 1270
3670    PRINT"SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT"
3680    GOTO 1270
3690    PRINT "KLINGON AT SECTOR "K(I,1)","K(I,2)"DESTROYED ***"
3710    K3=K3-1
3711    K9=K9-1
3712    A$="   "
3713    Z1=K(I,1)
3714    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=1TO3
3831    IF K(I,3)<=0 THEN 3900
3850    H=INT((K(I,3)/FND(0))*(2+RND(1)))
3851    S=S-H
3870    PRINTH;" UNIT HIT ON ENTERPRISE AT SECTOR ";K(I,1);",";K(I,2);
3871    PRINT"     (";S;" 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 "ATTACKS YOU WILL BE DEMOTED TO THE RANK OF PRIVATE"
3940    IF K3<=0 THEN 4020
3950    GOSUB 3790
3960    GOTO 3940
3970    PRINT
3971    PRINT "IT IS STARDATE";T
3990    GOTO 4020
3991    REM *** NO ENERGY LEFT
4000    PRINT
4001    PRINT"THE ENTERPRISE HAS BEEN DESTROYED.  THE FEDERATION WILL BE CONQUERED"
4020    PRINT "THERE ARE STILL ";K9;" KLINGON BATTLE CRUISERS"
4030    PRINT
4031    PRINT
4032    PRINT
4033    PRINT "YOU GET ANOTHER CHANCE...."
4034    GOTO 230
4040    PRINT
4041    PRINT"THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED"
4050    PRINT"THE FEDERATION HAS BEEN SAVED!!!!!"
4051    PRINT
4075    E5=((K7/(T-T0))*1000)
4080    PRINT "YOUR EFFICIENCY RATING =";E5
4100    PRINT"YOUR ACTUAL TIME OF MISSION =";INT((TIME(0)-T7)/60);" MINUTES"
4105    PRINT
4106    PRINT
4107    PRINT
4108    INPUT"DO YOU WANT TO TRY AGAIN";R$
4109    IF R$ = "YES" THEN 230
4110    GOTO 6510
4111    REM *** SHORT RANGE SENSOR SCAN AND STARTING POINT CODE
4120    FOR I=S1-1TO S1+1
4130    FOR J=S2-1TO S2+1
4140    IF I<1 OR I>8 OR J<1 OR J>8 THEN 4200
4150    A$=">!<"
4151    Z1=I
4152    Z2=J
4180    GOSUB 5680
4190    IF Z3=1 THEN 4240
4200    NEXT J
4210    NEXT I
4220    D0=0
4221    GOTO 4310
4240    D0=1
4241    C$="DOCKED"
4242    E=3000
4243    P=10
4280    PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES"
4290    S=0
4291    GOTO 4380
4310    IF K3>0 THEN 4350
4320    IF E<E0 *.1 THEN 4370
4330    C$="GREEN"
4340    GOTO 4380
4350    C$="RED"
4351    GOTO 4380
4370    C$="YELLOW"
4380    IF D(2)>=0 THEN 4430
4390    PRINT
4391    PRINT"*** SHORT RANGE SENSORS ARE OUT ***"
4392    PRINT
4420    GOTO 4530
4430    O1$="---------------------------------"
4435    PRINT USING O1$
4440    O2$=" \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \"
4445    PRINT USING O2$,MID(Q$,1,3),MID(Q$,4,3),MID(Q$,7,3),MID(Q$,10,3),MID(Q$,13,3),MID(Q$,16,3),MID(Q$,19,3),MID(Q$,22,3)
4450    O3$=O2$+"        STARDATE        #####"
4455    PRINT USING O3$,MID(Q$,25,3),MID(Q$,28,3),MID(Q$,31,3),MID(Q$,34,3),MID(Q$,37,3),MID(Q$,40,3),MID(Q$,43,3),MID(Q$,46,3),T
4460    O4$=O2$+"        CONDITION        \     \"
4465    PRINT USING O4$,MID(Q$,49,3),MID(Q$,52,3),MID(Q$,55,3),MID(Q$,58,3),MID(Q$,61,3),MID(Q$,64,3),MID(Q$,67,3),MID(Q$,70,3),C$
4470    O5$=O2$+"        QUADRANT         #"
4475    PRINT USING O5$,MID(R$,1,3),MID(R$,4,3),MID(R$,7,3),MID(R$,10,3),MID(R$,13,3),MID(R$,16,3),MID(R$,19,3),MID(R$,22,3),Q1;
4476    PRINT ",";Q2
4480    O6$=O2$+"        SECTOR           #"
4485    PRINT USING O6$,MID(R$,25,3),MID(R$,28,3),MID(R$,31,3),MID(R$,34,3),MID(R$,37,3),MID(R$,40,3),MID(R$,43,3),MID(R$,46,3),S1;
4486    PRINT ",";S2
4490    O7$=O2$+"        TOTAL ENERGY   ######"
4495    PRINT USING O7$,MID(R$,49,3),MID(R$,52,3),MID(R$,55,3),MID(R$,58,3),MID(R$,61,3),MID(R$,64,3),MID(R$,67,3),MID(R$,70,3),E
4500    O8$=O2$+"        PHOTON TORPEDOES  ###"
4505    PRINT USING O8$,MID(S$,1,3),MID(S$,4,3),MID(S$,7,3),MID(S$,10,3),MID(S$,13,3),MID(S$,16,3),MID(S$,19,3),MID(S$,22,3),P
4510    O9$=O2$+"        SHIELDS        ######"
4515    PRINT USING O9$,MID(S$,25,3),MID(S$,28,3),MID(S$,31,3),MID(S$,34,3),MID(S$,37,3),MID(S$,40,3),MID(S$,43,3),MID(S$,46,3),S
4520    PRINT USING O1$
4530    RETURN
4620    REM *** LIBRARY COMPUTER CODE BEGINS HERE
4630    IF D(8)>=0 THEN 4660
4640    PRINT "COMPUTER DISABLED"
4641    GOTO 1270
4660    INPUT "COMPUTER ACTIVE AND AWAITING COMMAND:";A
4680    IF A=0 GOTO 4740
4681    IF A=1 GOTO 4830
4682    IF A=2 GOTO 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
4731    REM *** CUMULATIVE GALACTIC RECORD CODE BEGINS HERE
4740    PRINT"COMPUTER RECORD OF GALAXY FOR QUADRANT "Q1","Q2
4760    PRINT"     1     2     3     4     5     6     7     8"
4770    PRINT"   ----- ----- ----- ----- ----- ----- ----- -----"
4780    FOR I=1TO8
4790    N1$="#   ###   ###   ###   ###   ###   ###   ###   ###"
4795    PRINT USING N1$,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"   ----- ----- ----- ----- ----- ----- ----- -----"
4810    NEXT I
4820    GOTO 1270
4821    REM *** STATUS REPORT CODE BEGINS HERE
4830    PRINT "   STATUS REPORT"
4840    PRINT "NUMBER OF KLINGONS LEFT ="K9
4850    V5=(T0+T9)-T
4851    PRINT "NUMBER OF STARDATES LEFT =";V5
4860    PRINT "NUMBER OF STARBASES LEFT ="B9
4870    GOTO 3560
4880    PRINT
4881    H8=0
4882    REM *** PHOTON TORPEDO DATA CODE BEGINS HERE
4900    FOR I=1TO3
4910    IF K(I,3)<=0 THEN 5260
4920    C1=S1
4921    A=S2
4922    W1=K(I,1)
4923    X=K(I,2)
4960    GOTO 5010
4970    PRINT"YOU ARE AT QUADRANT ( ";Q1;",";Q2;" )  SECTOR ( ";S1;",";S2;" )"
4990    INPUT "SHIP AND TARGET COORDINATES ARE:";C1,A,W1,X
5010    X=X-A
5011    A=C1-W1
5030    IF X<0 THEN 5130
5031    IF A<0 THEN 5190
5050    IF X>0 THEN 5070
5051    IF A=0 THEN 5150
5070    C1=1
5080    IF ABS(A) <= ABS(X) THEN 5110
5085    V5=C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A))
5090    PRINT "DIRECTION ="V5
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
5151    GOTO 5080
5170    C1=3
5171    GOTO5200
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    INPUT "DO YOU WANT TO USE THE CALCULATOR";A$
5300    IF A$="YES" THEN 4970
5310    IF A$<>"NO" THEN 5280
5320    GOTO 1270
5321    REM *** END OF LIBRARY COMPUTER CODE
5380    R1=INT(RND(1)*8+1)
5381    R2=INT(RND(1)*8+1)
5382    A$="   "
5383    Z1=R1
5384    Z2=R2
5430    GOSUB 5680
5440    IF Z3=0 THEN 5380
5450    RETURN
5510    REM *** INSERTION IN STRING ARRAY FOR QUADRANT ***
5520    S8=Z1*24+Z2*3-26
5521    IF S8>72 THEN 5560
5540    Q$=LEFT(Q$,S8-1)+A$+RIGHT(Q$,S8+3)
5550    GOTO 5600
5560    IF S8>144 THEN 5590
5570    R$=LEFT(R$,S8-73)+A$+RIGHT(R$,S8-69)
5580    GOTO 5600
5590    S$=LEFT(S$,S8-145)+A$+RIGHT(S$,S8-141)
5600    RETURN
5610    REM *** PRINTS DEVICE NAME FROM ARRAY***
5620    S8=R1*12-11
5621    IF S8>72 THEN 5660
5640    PRINT MID(D$,S8,11),
5641    GOTO 5670
5660    PRINT MID(E$,S8-72,11),
5670    RETURN
5680    REM ***STRING COMPARISON IN QUADRANT ARRAY***
5690    S8=Z1*24+Z2*3-26
5691    Z3=0
5692    IF S8>72 THEN 5750
5720    IF MID(Q$,S8,3)<>A$ THEN 5810
5730    Z3=1
5731    GOTO 5810
5750    IF S8>144 THEN 5790
5760    IF MID(R$,S8-72,3)<>A$ THEN 5810
5770    Z3=1
5771    GOTO 5810
5790    IF MID(S$,S8-144,3)<>A$ THEN 5810
5800    Z3=1
5810    RETURN
5820    &"     INSTRUCTIONS"
5821    &:&"THE GALAXY IS DIVIDED INTO AN 8,8 QUADRANT GRID"
5822    &"WHICH IS IN TURN DIVIDED INTO AN 8,8 SECTOR GRID."
5823    &:&"THE CAST OF CHARACTERS IS AS FOLLOWS:"
5830    &"<*> = ENTERPRISE"
5840    &"+++ = KLINGON"
5850    &">!< = STARBASE":& " *  = STAR"
5870    &"COMMAND 0 = WARP ENGINE CONTROL:"
5880    &"  COURSE IS IN A CIRCULAR NUMERICAL       4  3  2"
5890    &"  VECTOR ARRANGEMENT AS SHOWN.             \ ^ /"
5900    &"  INTEGER AND REAL VALUES MAY BE            \^/"
5910    &"  USED.  THEREFORE COURSE 1.5 IS         5 ----- 1"
5920    &"  HALF WAY BETWEEN 1 AND 2.                 /^\"
5930    &"                                           / ^ \"
5940    &"  A VECTOR OF 9 IS UNDEFINED, BUT         6  7  8"
5950    &"  VALUES MAY APPROACH 9."
5960    &"                                          COURSE"
5970    &"  ONE WARP FACTOR IS THE SIZE OF"
5980    &"  ONE QUADRANT.  THEREFORE TO GET"
5990    &"  FROM QUADRANT 6,5 TO 5,5 YOU WOULD"
6000    &"  USE COURSE 3. WARP FACTOR 1"
6005    &
6010    &"COMMAND 1 = SHORT RANGE SENSOR SCAN"
6020    &"  PRINT THE QUADRANT YOU ARE CURRENTLY IN.  INCLUDING"
6030    &"  STARS, KLINGONS, STARBASES, AND THE ENTERPRISE, ALONG"
6040    &"  WITH OTHER PERTINATE INFORMATION."
6045    &:&"COMMAND 2 = LONG RANGE SENSOR SCAN"
6060    &"  SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE"
6070    &"  OF THE ENTERPRISE IN THE MIDDLE OF THE SCAN. THE SCAN"
6080    &"  IS CODED IN THE FORM XXX, WHERE THE UNITS DIGIT IS THE "
6090    &"  NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF STAR-"
6100    &"  BASES.  THE HUNDREDS DIGIT IS THE NUMBER OF KLINGONS."
6110    &:&"COMMAND 3 = PHASER CONTROL"
6120    &"  ALLOWS YOU TO DESTROY THE KLINGONS BY HITTING HIM WITH"
6130    &"  SUITABLY LARGE NUMBERS OF ENERGY UNITS TO DEPLETE HIS "
6140    &"  SHIELD POWER.  KEEP IN MIND THAT WHEN YOU SHOOT AT HIM,"
6150    &"  HE GONNA SHOOT AT YOU, TOO!"
6160    &:&"COMMAND 4 = PHOTON TORPEDO CONTROL"
6170    &"  COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL"
6180    &"  IF YOU HIT THE KLINGON, HE IS DESTROYED AND CANNOT FIRE"
6190    &"  BACK AT YOU.  IF YOU MISS, YOU ARE SUBJECT TO HIS "
6200    &"  PHASER FIRE."
6210    &:&"  NOTE:  THE LIBRARY COMPUTER (COMMAND 7) HAS AN OPTION"
6220    &"  TO COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)."
6230    &:&"COMMAND 5 = SHIELD CONTROL"
6240    &"  DEFINES NUMBER OF ENERGY UNITS TO BE ASSIGNED TO SHIELDS"
6250    &"  ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY."
6251    &"  NOTE THAT TOTAL ENERY INCLUDES SHIELD ENERGY."
6260    &:&"COMMAND 6 = DAMAGE CONTROL REPORT"
6270    &"  GIVES STATE OF REPAIRS OF ALL DEVICES.  A STATE OF REPAIR"
6280    &"  LESS THAN ZERO SHOWS THAT THE DEVICE IS TEMPORARALY"
6290    &"  DAMAGED."
6300    &:&"COMMAND 7 = LIBRARY COMPUTER"
6310    &"  THE LIBRARY COMPUTER CONTAINS THREE OPTIONS:"
6320    &"    OPTION 0 = CUMULATIVE GALACTIC RECORD"
6330    &"      WHICH SHOWS COMPUTER MEMORY OF THE RESULTS"
6340    &"      OF ALL PREVIOUS LONG RANGE SENSOR SCANS"
6350    &"    OPTION 1 = STATUS REPORT"
6360    &"      WHICH SHOWS NUMBER OF KLINGONS, STARDATES,"
6370    &"      AND STARBASES LEFT."
6380    &"    OPTION 2 = PHOTON TORPEDO DATA"
6390    &"      GIVES TRAJECTORY AND DISTANCE BETWEEN THE"
6400    &"      ENTERPRISE AND ALL KLINGONS IN YOUR QUADRANT"
6500    GOTO 230
6510    END