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=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