00100     REM *** PROGRAM SIMULATES TV PROGRAM STARTREK
00110     REM *** WRITTEN BY MIKE MAYFIELD, CENTERLINE ENGINEERING
00170   RANDOMIZE
00180     PRINT "                  * * *  STAR TREK  * * *"
00181     PRINT
00200   INPUT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!) (Y/[N])";A$
00210   IF A$="YES" OR A$="yes" OR A$="Y" OR A$="y" THEN 5820
00230   REM *** PROGRAM BEGINS HERE
00240     Z$,R$,Q$="                                                                        "
00260   DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8)
00290   T0,T=INT(RND*20+20)*100
00300   T9=30
00301     D0=0
00302     E0,E=3000
00303     P0,P=10
00304     S9=200
00305     S,H8=0
00360   DEF FND(D)=SQR((K(I,1)-S1)**2+(K(I,2)-S2)**2)
00370   Q1=INT(RND*8+1)
00380   Q2=INT(RND*8+1)
00390   S1=INT(RND*8+1)
00400   S2=INT(RND*8+1)
00410   T7=TIME(0)
00420   C(2,1),C(3,1),C(4,1),C(4,2),C(5,2),C(6,2)=-1
00430   C(1,1),C(3,2),C(5,1),C(7,2),C(9,1)=0
00440   C(1,2),C(2,2),C(6,1),C(7,1),C(8,1),C(8,2),C(9,2)=1
00450   MAT D=ZER
00460   D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL"
00470   D$=D$+"PHOTON TUBESDAMAGE CNTRL"
00480   E$="SHIELD CNTRLCOMPUTER"
00490   B9,K9=0
00491   REM *** SETS UP WHAT EXISTS IN GALAXY
00500   FOR I=1 TO 8
00510   FOR J=1 TO 8
00520   R1=RND
00530   IF R1>.98 THEN 580
00540   IF R1>.95 THEN 610
00550   IF R1>.8 THEN 640
00560   K3=0
00561     GOTO 660
00580   K3=3
00581     K9=K9+3
00582     GOTO 660
00610   K3=2
00611     K9=K9+2
00612     GOTO 660
00640   K3=1
00641     K9=K9+1
00660   R1=RND
00670   IF R1>.96 THEN 700
00680   B3=0
00681     GOTO 720
00700   B3=1
00701     B9=B9+1
00720   S3=INT(RND*8+1)
00730   G(I,J)=K3*100+B3*10+S3
00740   Z(I,J)=0
00750   NEXT J
00760   NEXT I
00770   K7=K9
00775   PRINT
00776     PRINT
00780   PRINT"YOU MUST DESTROY";K9;" KLINGONS IN";T9;" STARDATES WITH ";B9;" STARBASES"
00790   IF B9>0 THEN 810
00800   G(6,3)=114
00810   K3,B3,S3=0
00820   IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 920
00830   X=G(Q1,Q2)*.01
00840   K3=INT(X)
00850   B3=INT((X-K3)*10)
00860   S3=G(Q1,Q2)-INT(G(Q1,Q2)*.1)*10
00870   IF K3=0 THEN 910
00880   IF S>200 THEN 910
00890   PRINT"COMBAT AREA      CONDITION RED"
00900   PRINT"   SHIELDS DANGEROUSLY LOW"
00910   MAT K=ZER
00920   FOR I=1 TO 3
00930   K(I,3)=0
00940   NEXT I
00950   Q$=Z$
00951     R$=Z$
00970   S$=MID(Z$,1,48)
00971   REM *** PUT ENTERPRISE SOMEWHERE
00980   A$="<*>"
00990   Z1=S1
01000   Z2=S2
01010   GOSUB 5510
01020   FOR I=1 TO K3
01030 GOSUB 5380
01031   REM *** PUT KLINGONS SOMEWHERE
01040   A$="+++"
01050   Z1=R1
01060   Z2=R2
01070   GOSUB 5510
01080   K(I,1)=R1
01081    K(I,2)=R2
01082    K(I,3)=S9
01110   NEXT I
01120   FOR I=1 TO B3
01130   GOSUB 5380
01131   REM *** PUT STARBASE(S) SOMEWHERE
01140   A$=">!<"
01141    Z1=R1
01142    Z2=R2
01170   GOSUB 5510
01180   NEXT I
01190   FOR I=1 TO S3
01200   GOSUB 5380
01201   REM *** PUT STARS SOMEWHERE
01210   A$=" * "
01211    Z1=R1
01212    Z2=R2
01240   GOSUB 5510
01250   NEXT I
01260   GOSUB 4120
01270   INPUT "COMMAND:";A
01290   IF A=0 GOTO 1410
01291   IF A=1 GOTO 1260
01292   IF A=2 GOTO 2330
01293   IF A=3 GOTO 2530
01294   IF A=4 GOTO 2800
01295   IF A=5 GOTO 3460
01296   IF A=6 GOTO 3560
01297   IF A=7 GOTO 4630
01298   IF A=8 GOTO 6510
01310   PRINT
01311    PRINT"   0 = SET COURSE"
01320   PRINT"   1 = SHORT RANGE SENSOR SCAN"
01330   PRINT"   2 = LONG RANGE SENSOR SCAN"
01340   PRINT"   3 = FIRE PHASERS"
01350   PRINT"   4 = FIRE PHOTON TORPEDOES"
01360   PRINT"   5 = SHIELD CONTROL"
01370   PRINT"   6 = DAMAGE CONTROL REPORT"
01380   PRINT"   7 = CALL ON LIBRARY COMPUTER"
01390   PRINT"   8 = END THE CONTEST"
01391    PRINT
01400   GOTO 1270
01401   REM *** COURSE CONTROL CODE BEGINS HERE
01410   INPUT "COURSE (1-9):";C1
01430   IF C1=0 THEN 1270
01440   IF C1<1 OR C1>9 THEN 1410
01450   INPUT "WARP FACTOR (0-8):";W1
01470   IF W1<0 OR W1>8 THEN 1410
01480   IF D(1)>=0 OR W1<=.2 THEN 1510
01490   PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2"
01500   GOTO 1410
01510   IF K3<=0 THEN 1560
01520   GOSUB 3790
01530   IF K3<=0 THEN 1560
01540   IF S<0 THEN 4000
01550   GOTO 1610
01560    IF E>0 THEN 1610
01570    IF S<1 THEN 3920
01580   PRINT "YOU HAVE";E;" UNITS OF ENERGY"
01590   PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE";S;" UNITS LEFT"
01600   GOTO 1270
01610   FOR I=1 TO 8
01611    IF D(I)>=0 THEN 1640
01612   REM *** FIX ANY DAMAGED DEVICE
01630   D(I)=D(I)+1
01640   NEXT I
01650   IF RND>.2 THEN 1810
01660   R1=INT(RND*8+1)
01670   IF RND>= .5 THEN 1750
01680   D(R1)=D(R1)-(RND*5+1)
01690   PRINT
01691    PRINT "DAMAGE CONTROL REPORT:";
01710   GOSUB 5610
01720   PRINT" DAMAGED"
01721    PRINT
01722    GOTO 1810
01750   D(R1)=D(R1)+(RND*5+1)
01760   PRINT
01761    PRINT "DAMAGE CONTROL REPORT:";
01780   GOSUB 5610
01790   PRINT" STATE OF REPAIR IMPROVED"
01791    PRINT
01810   N=INT(W1*8)
01811    A$="   "
01812    Z1=S1
01813    Z2=S2
01850   GOSUB 5510
01860   X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
01870   X=S1
01871    Y=S2
01890   X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
01900   X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1))
01910   FOR I=1 TO N
01911    S1=S1+X1
01912    S2=S2+X2
01940   IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 2170
01950   S8=S1*24+S2*3-26
01951    IF S8>72 THEN 1990
01970   IF MID(Q$,S8,3)="   " THEN 2070
01980   GOTO 2030
01990   IF S8>144 THEN 2020
02000   IF MID(R$,S8-72,3)="   " THEN 2070
02010   GOTO 2030
02020   IF MID(S$,S8-144,3)="   " THEN 2070
02030   PRINT"WARP ENGINES SHUTDOWN AT SECTOR ";S1;",";S2;" DUE TO BAD NAVAGATION"
02040   S1=S1-X1
02041    S2=S2-X2
02042    GOTO 2080
02070   NEXT I
02080   A$="<*>"
02081    Z1=S1
02082    Z2=S2
02110   GOSUB 5510
02120   E=E-N+5
02121    IF W1<1 THEN 2150
02140   T=T+1
02150   IF T>T0+T9 THEN 3970
02160   GOTO 1260
02170   X=Q1*8+X+X1*N
02171    Y=Q2*8+Y+X2*N
02190   Q1=INT(X/8)
02191    Q2=INT(Y/8)
02192    S1=INT(X-Q1*8)
02193    S2=INT(Y-Q2*8)
02230   IF S1<>0 THEN 2260
02240   Q1=Q1-1
02241    S1=8
02260   IF S2<>0 THEN 2290
02270   Q2=Q2-1
02271    S2=8
02290   T=T+1
02291    E=E-N+5
02310   IF T>T0 + T9 THEN 3970
02320   GOTO 810
02321   REM *** LONG RANGE SENSON SCAN CODE BEGINS HERE
02330   IF D(3)>=0 THEN 2370
02340   PRINT "LONG RANGE SENSORS ARE INOPERABLE"
02360   GOTO 1270
02370   PRINT"LONG RANGE SENSOR SCAN FOR QUADRANT ";Q1;",";Q2
02380   PRINT"-------------------"
02390   FOR I=Q1-1 TO Q1+1
02400   MAT N=ZER
02410   FOR J=Q2-1 TO Q2+1
02420   IF I<1 OR I>8 OR J<1 OR J>8 THEN 2460
02430   N(J-Q2+2)=G(I,J)
02440   IF D(7)<0 THEN 2460
02450   Z(I,J)=G(I,J)
02460   NEXT J
02470   P1$=": ### : ### : ### :"
02471   PRINT USING P1$,N(1),N(2),N(3)
02480   PRINT"-------------------"
02490   NEXT I
02500   GOTO 1270
02501   REM *** PHASER CONTROL CODE BEGINS HERE
02530   IF K3<=0 THEN 3670
02540   IF D(4)>=0 THEN 2570
02560   GOTO 1270
02570   IF D(7)>=0 THEN 2590
02580   PRINT " COMPUTER FAILURE HAMPERS ACCURACY"
02590   PRINT"PHASERS LOCKED ON TARGET.  ENERGY AVAILABLE=";E
02600   INPUT "NUMBER OF UNITS TO FIRE:";X
02620   IF X<=0 THEN 1270
02630   IF E-X<0 THEN 2570
02640   E=E-X
02650   GOSUB 3790
02660   IF D(7)>=0 THEN 2680
02670   X=X*RND
02680   FOR I=1 TO 3
02690   IF K(I,3)<=0 THEN 2770
02700   H=INT((X/K3/FND(0))*(2*RND))
02710   K(I,3)=K(I,3)-H
02720   PRINT H;" UNIT HIT ON KLINGON AT SECTOR ";K(I,1);",";K(I,2);
02721   PRINT"    (";K(I,3);" LEFT)"
02740   IF K(I,3)>0 THEN 2770
02750   GOSUB 3690
02760   IF K9<=0 THEN 4040
02770   NEXT I
02780   IF E<0 THEN 4000
02790   GOTO 1270
02791   REM *** PHOTON TORPEDO CODE BEGINS HERE
02800   IF D(5)>=0 THEN 2830
02810   PRINT "PHOTON TUBES ARE NOT OPERATIONAL"
02820   GOTO 1270
02830   IF P>0 THEN 2860
02840   PRINT "ALL PHOTON TORPEDOES EXPENDED"
02850   GOTO 1270
02860   INPUT "TORPEDO COURSE (1-9):";C1
02880   IF C1=0 THEN 1270
02890   IF C1<1 OR C1>=9 THEN 2860
02900   X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
02910   X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1))
02920   X=S1
02921    Y=S2
02922    P=P-1
02950   PRINT "TORPEDO TRACK:"
02960   X=X+X1
02961    Y=Y+X2
02980   IF X<1 OR X>=9 OR Y<1 OR Y>=9 THEN 3420
02990   PRINT"               ";X;",";Y
03010    A$="   "
03011    Z1=X
03012    Z2=Y
03040   GOSUB 5680
03050   IF Z3=0 THEN 3070
03060   GOTO 2960
03070   A$="+++"
03071    Z1=X
03072    Z2=Y
03100   GOSUB 5680
03110   IF Z3=0 THEN 3220
03120   PRINT "*** KLINGON DESTROYED ***"
03130   K3=K3-1
03131    K9=K9-1
03150   IF K9<=0 THEN 4040
03160   FOR I=1 TO 3
03161    IF INT(X)<>K(I,1) THEN 3190
03180   IF INT(Y)=K(I,2) THEN 3200
03190   NEXT I
03200   K(I,3)=0
03201    GOTO 3360
03220   A$=" * "
03221    Z1=X
03222    Z2=Y
03250   GOSUB 5680
03260   IF Z3=0 THEN 3290
03270   PRINT "YOU CAN'T DESTROY STARS, SILLY"
03280   GOTO 3420
03290   A$=">!<"
03291    Z1=X
03292    Z2=Y
03320   GOSUB 5680
03330   IF Z3=0 THEN 2960
03340   PRINT "*** STAR BASE DESTROYED *** .......CONGRATULATIONS"
03350   B3=B3-1
03360   A$="   "
03361    Z1=X
03362    Z2=Y
03390   GOSUB 5510
03400   G(Q1,Q2)=K3*100+B3*10+S3
03410   GOTO 3430
03420   PRINT "TORPEDO MISSED"
03430   GOSUB 3790
03440   IF E<0 THEN 4000
03450   GOTO 1270
03451   REM *** SHIELD CONTROL CODE BEGINS HERE
03460   IF D(7)>=0 THEN 3490
03470   PRINT "SHIELD CONTROL IS NON-OPERATIONAL"
03480   GOTO 1270
03490   PRINT "ENERGY AVAILABLE =";E+S;
03500   INPUT "   NUMBER OF UNITS TO SHIELDS:";X
03510   IF X<=0 THEN 1270
03520   IF E+S-X<0 THEN 3490
03530   E=E+S-X
03531    S=X
03550   GOTO 1270
03551   REM *** DAMAGE CONTROL REPORT CODE BEGINS HERE
03560   IF D(6)>=0 THEN 3590
03570   PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE"
03580   GOTO 1270
03590   PRINT
03591    PRINT "DEVICE        STATE OF REPAIR"
03610   FOR R1=1 TO 8
03620   GOSUB 5610
03630   PRINT D(R1)
03640   NEXT R1
03641    PRINT
03660   GOTO 1270
03670   PRINT"SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT"
03680   GOTO 1270
03690   PRINT "KLINGON AT SECTOR ";K(I,1);",";K(I,2);"DESTROYED ***"
03710   K3=K3-1
03711    K9=K9-1
03712    A$="   "
03713    Z1=K(I,1)
03714    Z2=K(I,2)
03760   GOSUB 5510
03770   G(Q1,Q2)=K3*100+B3*10+S3
03780   RETURN
03790   IF C$<>"DOCKED" THEN 3820
03800   PRINT "STAR BASE SHIELDS PROTECT THE ENTERPRISE"
03810   RETURN
03820    IF K3<=0 THEN 3910
03830   FOR I=1 TO 3
03831    IF K(I,3)<=0 THEN 3900
03850   H=INT((K(I,3)/FND(0))*(2+RND))
03851    S=S-H
03870   PRINT H;" UNIT HIT ON ENTERPRISE AT SECTOR ";K(I,1);",";K(I,2);
03871   PRINT"     (";S;" LEFT)"
03890   IF S<0 THEN 4000
03900   NEXT I
03910   RETURN
03920   PRINT "THE ENTERPRISE IS DEAD IN SPACE.  IF YOU SURVIVE ALL IMPENDING"
03930   PRINT "ATTACKS YOU WILL BE DEMOTED TO THE RANK OF PRIVATE"
03940   IF K3<=0 THEN 4020
03950   GOSUB 3790
03960   GOTO 3940
03970   PRINT
03971    PRINT "IT IS STARDATE";T
03990   GOTO 4020
03991   REM *** NO ENERGY LEFT
04000   PRINT
04001    PRINT"THE ENTERPRISE HAS BEEN DESTROYED.  THE FEDERATION WILL BE CONQUERED"
04020   PRINT "THERE ARE STILL ";K9;" KLINGON BATTLE CRUISERS"
04030    PRINT
04031    PRINT
04032    PRINT
04033    PRINT "YOU GET ANOTHER CHANCE...."
04034    GOTO 230
04040   PRINT
04041    PRINT"THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED"
04050   PRINT"THE FEDERATION HAS BEEN SAVED!!!!!"
04051    PRINT
04075   E5=((K7/(T-T0))*1000)
04080   PRINT "YOUR EFFICIENCY RATING =";E5
04100   PRINT"YOUR ACTUAL TIME OF MISSION =";INT((TIME(0)-T7)/60);" MINUTES"
04105   PRINT
04106    PRINT
04107    PRINT
04108   INPUT"DO YOU WANT TO TRY AGAIN (Y/[N])";R$
04109   IF R$="YES" OR R$="yes" OR R$="Y" OR R$="y" THEN 230
04110   GOTO 6510
04111   REM *** SHORT RANGE SENSOR SCAN AND STARTING POINT CODE
04120   FOR I=S1-1 TO  S1+1
04130   FOR J=S2-1 TO  S2+1
04140   IF I<1 OR I>8 OR J<1 OR J>8 THEN 4200
04150   A$=">!<"
04151    Z1=I
04152    Z2=J
04180   GOSUB 5680
04190   IF Z3=1 THEN 4240
04200   NEXT J
04210   NEXT I
04220   D0=0
04221    GOTO 4310
04240   D0=1
04241    C$="DOCKED"
04242    E=3000
04243    P=10
04280   PRINT "SHIELDS DROPPED FOR DOCKING PURPOSES"
04290   S=0
04291    GOTO 4380
04310   IF K3>0 THEN 4350
04320   IF E<E0 *.1 THEN 4370
04330   C$="GREEN"
04340   GOTO 4380
04350   C$="RED"
04351    GOTO 4380
04370   C$="YELLOW"
04380   IF D(2)>=0 THEN 4430
04390   PRINT
04391    PRINT"*** SHORT RANGE SENSORS ARE OUT ***"
04392    PRINT
04420   GOTO 4530
04430   O1$="---------------------------------"
04435   PRINT O1$
04436    REM PRINT "_"+O1$
04440   O2$=" \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \"
04445   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)
04450   O3$=O2$+"        STARDATE        #####"
04455   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
04460   O4$=O2$+"        CONDITION        \     \"
04465   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$
04470   O5$=O2$+"        QUADRANT         #"
04475   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;
04477   PRINT ",";Q2
04480   O6$=O2$+"        SECTOR           #"
04485   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;
04487   PRINT ",";S2
04490   O7$=O2$+"        TOTAL ENERGY   ######"
04495   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
04500   O8$=O2$+"        PHOTON TORPEDOES  ###"
04505   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
04511   O9$=O2$+"        SHIELDS        ######"
04515   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
04520   PRINT O1$
04521   REM PRINT "_"+ O1$
04530   RETURN
04620   REM *** LIBRARY COMPUTER CODE BEGINS HERE
04630   IF D(8)>=0 THEN 4660
04640   PRINT "COMPUTER DISABLED"
04641    GOTO 1270
04660   INPUT "COMPUTER ACTIVE AND AWAITING COMMAND:";A
04680   IF A=0 GOTO 4740
04681   IF A=1 GOTO 4830
04682   IF A=2 GOTO 4880
04690   PRINT "FUNCTIONS AVAILABLE FROM COMPUTER"
04700   PRINT "   0 = CUMULATIVE GALACTIC RECORD"
04710   PRINT "   1 = STATUS REPORT"
04720   PRINT "   2 = PHOTON TORPEDO DATA"
04730   GOTO 4660
04731   REM *** CUMULATIVE GALACTIC RECORD CODE BEGINS HERE
04740   PRINT"COMPUTER RECORD OF GALAXY FOR QUADRANT ";Q1;",";Q2
04760   PRINT"     1     2     3     4     5     6     7     8"
04770   PRINT"   ----- ----- ----- ----- ----- ----- ----- -----"
04780   FOR I=1 TO 8
04790   N1$="#   ###   ###   ###   ###   ###   ###   ###   ###"
04795   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)
04800   PRINT"   ----- ----- ----- ----- ----- ----- ----- -----"
04810   NEXT I
04820   GOTO 1270
04821   REM *** STATUS REPORT CODE BEGINS HERE
04830   PRINT "   STATUS REPORT"
04840   PRINT "NUMBER OF KLINGONS LEFT =";K9
04850   V5=(T0+T9)-T
04851   PRINT "NUMBER OF STARDATES LEFT =";V5
04860   PRINT "NUMBER OF STARBASES LEFT =";B9
04870   GOTO 3560
04880   PRINT
04881    H8=0
04882   REM *** PHOTON TORPEDO DATA CODE BEGINS HERE
04900   FOR I=1 TO 3
04910   IF K(I,3)<=0 THEN 5260
04920   C1=S1
04921    A=S2
04922    W1=K(I,1)
04923    X=K(I,2)
04960   GOTO 5010
04970   PRINT"YOU ARE AT QUADRANT ( ";Q1;",";Q2;" )  SECTOR ( ";S1;",";S2;" )"
04990   INPUT "SHIP AND TARGET COORDINATES ARE:";C1,A,W1,X
05010   X=X-A
05011    A=C1-W1
05030   IF X<0 THEN 5130
05031   IF A<0 THEN 5190
05050   IF X>0 THEN 5070
05051   IF A=0 THEN 5150
05070   C1=1
05080   IF ABS(A) <= ABS(X) THEN 5110
05085   V5=C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A))
05090   PRINT "DIRECTION =";V5
05100   GOTO 5240
05110   PRINT "DIRECTION =";C1+(ABS(A)/ABS(X))
05120   GOTO 5240
05130   IF A>0 THEN 5170
05140   IF X=0 THEN 5190
05150   C1=5
05151    GOTO 5080
05170   C1=3
05171    GOTO 5200
05190   C1=7
05200   IF ABS(A)>=ABS(X) THEN 5230
05210   PRINT "DIRECTION =";C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X))
05220   GOTO 5240
05230   PRINT "DIRECTION =";C1+(ABS(X)/ABS(A))
05240   PRINT "DISTANCE =";SQR(X**2+A**2)
05250   IF H8=1 THEN 5320
05260   NEXT I
05270   H8=0
05280   INPUT "DO YOU WANT TO USE THE CALCULATOR (Y/[N])";A$
05300   IF A$="YES" OR A$="yes" OR A$="Y" OR A$="y" THEN 4970
05310   REM IF A$<>"NO" THEN 5280
05320   GOTO 1270
05321   REM *** END OF LIBRARY COMPUTER CODE
05380   R1=INT(RND*8+1)
05381    R2=INT(RND*8+1)
05382    A$="   "
05383    Z1=R1
05384    Z2=R2
05430   GOSUB 5680
05440   IF Z3=0 THEN 5380
05450   RETURN
05510   REM *** INSERTION IN STRING ARRAY FOR QUADRANT ***
05520   S8=Z1*24+Z2*3-26
05521    IF S8>72 THEN 5560
05540    Q$=LEFT(Q$,S8-1)+A$+RIGHT(Q$,S8+3)
05550   GOTO 5600
05560   IF S8>144 THEN 5590
05570    R$=LEFT(R$,S8-73)+A$+RIGHT(R$,S8-69)
05580   GOTO 5600
05590    S$=LEFT(S$,S8-145)+A$+RIGHT(S$,S8-141)
05600   RETURN
05610   REM *** PRINTS DEVICE NAME FROM ARRAY***
05620   S8=R1*12-11
05621    IF S8>72 THEN 5660
05640   PRINT MID(D$,S8,11),
05641    GOTO 5670
05660   PRINT MID(E$,S8-72,11),
05670   RETURN
05680   REM ***STRING COMPARISON IN QUADRANT ARRAY***
05690   S8=Z1*24+Z2*3-26
05691    Z3=0
05692    IF S8>72 THEN 5750
05720   IF MID(Q$,S8,3)<>A$ THEN 5810
05730   Z3=1
05731    GOTO 5810
05750   IF S8>144 THEN 5790
05760   IF MID(R$,S8-72,3)<>A$ THEN 5810
05770   Z3=1
05771    GOTO 5810
05790   IF MID(S$,S8-144,3)<>A$ THEN 5810
05800   Z3=1
05810   RETURN
05820   &"     INSTRUCTIONS"
05821   PRINT
05822    &"THE GALAXY IS DIVIDED INTO AN 8,8 QUADRANT GRID"
05823   PRINT
05824    &"THE CAST OF CHARACTERS IS AS FOLLOWS:"
05830   &"<*> = ENTERPRISE"
05840   &"+++ = KLINGON"
05850   &">!< = STARBASE"
05851    & " *  = STAR"
05870   &"COMMAND 0 = WARP ENGINE CONTROL:"
05880   &"  COURSE IS IN A CIRCULAR NUMERICAL       4  3  2"
05890   &"  VECTOR ARRANGEMENT AS SHOWN.             \ ^ /"
05900   &"  INTEGER AND REAL VALUES MAY BE            \^/"
05910   &"  USED.  THEREFORE COURSE 1.5 IS         5 ----- 1"
05920   &"  HALF WAY BETWEEN 1 AND 2.                 /^\"
05930   &"                                           / ^ \"
05940   &"  A VECTOR OF 9 IS UNDEFINED, BUT         6  7  8"
05950   &"  VALUES MAY APPROACH 9."
05960   &"                                          COURSE"
05970   &"  ONE WARP FACTOR IS THE SIZE OF"
05980   &"  ONE QUADRANT.  THEREFORE TO GET"
05990   &"  FROM QUADRANT 6,5 TO 5,5 YOU WOULD"
06000   &"  USE COURSE 3. WARP FACTOR 1"
06005   PRINT
06010   &"COMMAND 1 = SHORT RANGE SENSOR SCAN"
06020   &"  PRINT THE QUADRANT YOU ARE CURRENTLY IN.  INCLUDING"
06030   &"  STARS, KLINGONS, STARBASES, AND THE ENTERPRISE, ALONG"
06040   &"  WITH OTHER PERTINATE INFORMATION."
06045   PRINT
06046    &"COMMAND 2 = LONG RANGE SENSOR SCAN"
06060   &"  SHOWS CONDITIONS IN SPACE FOR ONE QUADRANT ON EACH SIDE"
06070   &"  OF THE ENTERPRISE IN THE MIDDLE OF THE SCAN. THE SCAN"
06080   &"  IS CODED IN THE FORM XXX, WHERE THE UNITS DIGIT IS THE "
06090   &"  NUMBER OF STARS, THE TENS DIGIT IS THE NUMBER OF STAR-"
06100   &"  BASES.  THE HUNDREDS DIGIT IS THE NUMBER OF KLINGONS."
06110   PRINT
06111    &"COMMAND 3 = PHASER CONTROL"
06120   &"  ALLOWS YOU TO DESTROY THE KLINGONS BY HITTING HIM WITH"
06130   &"  SUITABLY LARGE NUMBERS OF ENERGY UNITS TO DEPLETE HIS "
06140   &"  SHIELD POWER.  KEEP IN MIND THAT WHEN YOU SHOOT AT HIM,"
06150   &"  HE GONNA SHOOT AT YOU, TOO!"
06160   PRINT
06161    &"COMMAND 4 = PHOTON TORPEDO CONTROL"
06170   &"  COURSE IS THE SAME AS USED IN WARP ENGINE CONTROL"
06180   &"  IF YOU HIT THE KLINGON, HE IS DESTROYED AND CANNOT FIRE"
06190   &"  BACK AT YOU.  IF YOU MISS, YOU ARE SUBJECT TO HIS "
06200   &"  PHASER FIRE."
06210   PRINT
06211    &"  NOTE:  THE LIBRARY COMPUTER (COMMAND 7) HAS AN OPTION"
06220   &"  TO COMPUTE TORPEDO TRAJECTORY FOR YOU (OPTION 2)."
06230   PRINT
06231    &"COMMAND 5 = SHIELD CONTROL"
06240   &"  DEFINES NUMBER OF ENERGY UNITS TO BE ASSIGNED TO SHIELDS"
06250   &"  ENERGY IS TAKEN FROM TOTAL SHIP'S ENERGY."
06251   &"  NOTE THAT TOTAL ENERY INCLUDES SHIELD ENERGY."
06260   PRINT
06261    &"COMMAND 6 = DAMAGE CONTROL REPORT"
06270   &"  GIVES STATE OF REPAIRS OF ALL DEVICES.  A STATE OF REPAIR"
06280   &"  LESS THAN ZERO SHOWS THAT THE DEVICE IS TEMPORARALY"
06290   &"  DAMAGED."
06300   PRINT
06301    &"COMMAND 7 = LIBRARY COMPUTER"
06310   &"  THE LIBRARY COMPUTER CONTAINS THREE OPTIONS:"
06320   &"    OPTION 0 = CUMULATIVE GALACTIC RECORD"
06330   &"      WHICH SHOWS COMPUTER MEMORY OF THE RESULTS"
06340   &"      OF ALL PREVIOUS LONG RANGE SENSOR SCANS"
06350   &"    OPTION 1 = STATUS REPORT"
06360   &"      WHICH SHOWS NUMBER OF KLINGONS, STARDATES,"
06370   &"      AND STARBASES LEFT."
06380   &"    OPTION 2 = PHOTON TORPEDO DATA"
06390   &"      GIVES TRAJECTORY AND DISTANCE BETWEEN THE"
06400   &"      ENTERPRISE AND ALL KLINGONS IN YOUR QUADRANT"
06500    GOTO 230
06510   END