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