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