1 REM ++++++++++++++++++++++++++++++++ 2 REM ! Program .... STARTREK 3 REM ! Utg}va 1.0 83-09-15 4 REM ! av (c) LARS ANDREASSON 7 REM ! Minne 32 Kbytes 8 REM ! Ins{nt av 172 9 REM ++++++++++++++++++++++++++++++++ 10 REM 11 REM Screened by C R LERIN. 12 REM 90 DIM Q$=300 100 RANDOMIZE : \1$=CHR$(12) : ; \1$ 260 C=0 270 Z$=SPACE$(25%) 330 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8),D(8) 370 T=INT(RND(1)*20+20)*100 : T0=T : T9=25+INT(RND(1)*10) : D0=0 : E=3000 : E0=E 440 P=10 : P0=P : S9=200 : S=0 : B9=0 : K9=0 : X$="" : X0$=" IS" 470 DEFFND(D)=SQR((K(I%,1%)-S1)^2%+(K(I%,2%)-S2)^2%) 475 DEFFNR(R)=INT(RND(R)*7.98+1.01) 490 Q1=FNR(1) : Q2=FNR(1) : S1=FNR(1) : S2=FNR(1) 530 FOR I%=1% TO 9% : C(I%,1)=0 : C%(I,2%)=0 : NEXT I% 540 C(3,1)=-1 : C(2,1)=-1 : C(4,1)=-1 : C(4,2)=-1 : C(5,2)=-1 : C(6,2)=-1 600 C(1,2)=1 : C(2,2)=1 : C(6,1)=1 : C(7,1)=1 : C(8,1)=1 : C(8,2)=1 : C(9,2)=1 670 FOR I%=1% TO 8% : D(I%)=0 : NEXT I% 710 A1$="NAVSRSLRSPHATORSHEDAMCOMXXX" 820 FOR I%=1% TO 8% : FOR J%=1% TO 8% : K3=0 : Z(I%,J%)=0 : R1=RND(1) 850 IF R1>.98 THEN K3=3 : K9=K9+3 : GOTO 980 860 IF R1>.95 THEN K3=2 : K9=K9+2 : GOTO 980 870 IF R1>.8 THEN K3=1 : K9=K9+1 980 B3=0 : IF RND(1)>.96 THEN B3=1 : B9=B9+1 1040 G(I%,J%)=K3*100+B3*10+FNR(1) : NEXT J% : NEXT I% : IF K9>T9 THEN T9=K9+1 1100 IF B9<>0 THEN 1200 1150 IF G(Q1,Q2)<200 THEN G(Q1,Q2)=G(Q1,Q2)+100 : K9=K9+1 1160 B9=1 : G(Q1,Q2)=G(Q1,Q2)+10 : Q1=FNR(1) : Q2=FNR(1) 1200 K7=K9 : IF B9<>1 THEN X$="S" : X0$=" ARE" 1230 ; \1$;"YOUR ORDERS ARE AS FOLLOWS:" 1231 ; "===========================" 1240 ; : ; "DESTROY THE";K9;" KLINGON WARSHIPS WHICH" 1245 ; "HAVE INVADED THE GALAXY BEFORE THEY CAN" 1250 ; "ATTACK FEDERATION HEADQUARTERS ON STAR-" 1260 ; "DATE";T0+T9;" THIS GIVES YOU";T9;" DAYS" 1265 ; "THERE";X0$;B9;" STARBASE";X$;" IN THE GALAXY" 1270 ; "FOR RESUPPLYING YOUR SHIP" 1300 I=RND(1) 1320 Z4=Q1 : Z5=Q2 : K3=0 : B3=0 : S3=0 : G5=0 : D4=.5*RND(1) : Z(Q1,Q2)=G(Q1,Q2) 1390 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 1600 1430 GOSUB 9030 : ; : IF T0<>T THEN 1490 1460 ; "YOUR MISSION BEGINS WITH YOUR STARSHIP" 1470 ; "LOCATED IN THE GALACTIC QUADRANT" 1475 ; G2$ : ; : ; : ; "HIT RETURN WHEN READY TO ACCEPT COMMAND"; : GET \$ : ; \1$ : GOTO 1500 1490 ; "NOW ENTERING ";G2$;" QUADRANT..." 1500 ; : K3=INT(G(Q1,Q2)*.01) : B3=INT(G(Q1,Q2)*.1)-10*K3 1540 S3=G(Q1,Q2)-100*K3-10*B3 : IF K3=0 THEN 1590 1560 ; " COMBAT AREA CONDITION RED" : IF S>200 THEN 1590 1580 ; " SHIELDS DANGEROUSLY LOW" 1590 FOR I%=1% TO 3% : K(I%,1)=0 : K(I%,2)=0 : NEXT I% 1600 FOR I%=1% TO 3% : K(I%,3%)=0% : NEXT I% : Q$=STRING$(192%,32%) 1680 A$="<*>" : Z1=S1 : Z2=S2 : GOSUB 8670 : IF K3<1 THEN 1820 1720 FOR I%=1% TO K3 1721 GOSUB 8590 1722 A$="+K+" : Z1=R1 : Z2=R2 1780 GOSUB 8670 : K(I%,1)=R1 : K(I%,2)=R2 : K(I%,3)=S9*(.5+RND(1)) : NEXT I% 1820 IF B3<1 THEN 1910 1880 GOSUB 8590 1881 A$=">!<" : Z1=R1 : B4=R1 : Z2=R2 : B5=R2 1882 GOSUB 8670 1910 FOR I%=1% TO S3 1911 GOSUB 8590 1912 A$=" * " : Z1=R1 : Z2=R2 1913 GOSUB 8670 1914 NEXT I% 1980 GOSUB 6430 1990 IF S+E>10 THEN IF E>10 OR D(7)=0 THEN 2060 2000 FOR I=1 TO 2000 : NEXT I : ; \1$ 2020 ; "** FATAL ERROR **" : ; : ; "YOU'VE JUST STRANDED YOUR SHIP IN SPACE"; 2030 ; "YOU HAVE INSUFFICIENT MANEUVERING ENERGY"; : ; ",AND SHIELD CONTROL IS PRESENTLY" 2040 ; "INCAPABLE OF CROSSCIRCUITING TO ENGINE" : ; "ROOM!" : GOTO 6220 2060 ; CUR(22,0)"COMMAND"; : INPUT A$ : ; \1$ 2065 IF LEN(A$)<>3 THEN 2160 2070 REM ; PEEK(65064)*256+PEEK(65063)-PEEK(65057)*256-PEEK(65056) 2080 FOR I%=1% TO 9% : IF LEFT$(A$,3%)<>MID$(A1$,3%*I%-2%,3%) THEN 2150 2140 ON I% GOTO 2300,1980,4000,4260,4700,5530,5690,7290,6270 2150 NEXT I% 2160 ; "ENTER ONE OF THE FOLLOWING:" : ; "===========================" 2180 ; : ; "NAV TO SET COURSE" 2190 ; "SRS FOR SHORT RANGE SENSOR SCAN" 2200 ; "LRS FOR LONG RANGE SENSOR SCAN" 2210 ; "PHA TO FIRE PHASERS" 2220 ; "TOR TO FIRE PHOTON TOREPDOS" 2230 ; "SHE TO RAISE OR LOWER SHIELDS" 2240 ; "DAM FOR DAMAGE CONTROL REPORT" 2250 ; "COM TO CALL ON SHIP COMPUTER" 2260 ; "XXX TO RESIGN YOUR COMMAND" : GOTO 1990 2300 ; "KURS (0-9)" : INPUT C1 : IF C1=9 THEN C1=1 2310 IF C1>=1 AND C1<9 THEN 2350 2330 ; " L.T SULU REPORTS,'INCORRECT COURSE DATA,SIR!'" : GOTO 1990 2350 X$="8" : IF D(1)<0 THEN X$="0.2" 2360 ; "WARP FACTOR (0-";X$;")"; : INPUT W1 : ; \1$; : IF D(1)<0 AND W1>.2 THEN 2470 2380 IF W1>0 AND W1<=8 THEN 2490 2390 IF W1=0 THEN 1990 2420 ; " CHIF ENGINEER SCOTT REPORTS 'THE ENGINES WON'T TAKE"; 2430 ; " WARP ";W1;"!" : GOTO 1990 2470 ; "WARP ENGINES ARE DAMAGED." : ; "MAXIUM SPEED = WARP 0.2" : GOTO 1990 2490 N=INT(W1*8+.5) : IF E-N>=0 THEN 2590 2500 ; "ENGINE ROOM REPORTS: 'INSUFFICIENT ENERGY AVAILABLE FOR MANEUVERING AT WARP";W1;"!" 2530 IF S=1 THEN D6=1 2770 FOR I%=1% TO 8% : IF D(I%)>=0 THEN 2880 2790 D(I%)=D(I%)+D6 : IF D(I%)>.1 AND D(I%)<0 THEN D(I%)=-.1 : GOTO 2880 2800 IF D(I%)<0 THEN 2880 2810 IF D1<>1 THEN D1=1 : ; "DAMAGE CONTROL REPORTS: " 2840 R1=I% : GOSUB 8790 : ; G2$;" REPAIR COMPLETED." 2880 NEXT I% : IF RND(1)>.2 THEN 3070 2910 R1%=FNR(1) : IF RND(1)>=.6 THEN 3000 2930 D(R1)=D(R1)-(RND(1)*5+1) : ; "DAMAGE CONTROL REPORT: " 2960 GOSUB 8790 : ; G2$;" DAMAGED" : ; : GOTO 3070 3000 D(R1)=D(R1)+RND(1)*3+1 : ; "DAMAGE CONTROL REPORT: " 3030 GOSUB 8790 : ; G2$;" STATE OF REPAIR IMPROVED" : ; 3070 A$=" " : Z1=INT(S1) : Z2=INT(S2) : GOSUB 8670 3110 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) : X=S1 : Y=S2 3140 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)) : Q4=Q1 : Q5=Q2 3170 FOR I=1 TO N : S1=S1+X1 : S2=S2+X2 : IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 3500 3240 S8=INT(S1)*24+INT(S2)*3-26 : IF MID$(Q$,S8,2)=" " THEN 3360 3320 S1=INT(S1-X1) : S2=INT(S2-X2) : ; "WARP ENGINES SHUT DOWN AT "; 3350 ; "SECTOR";S1;",";S2;"DUE TO BAD NAVIGATION" : GOTO 3370 3360 NEXT I : S1=INT(S1) : S2=INT(S2) 3370 A$="<*>" : Z1=INT(S1) : Z2=INT(S2) : GOSUB 8670 : GOSUB 3910 : T8=1 3430 IF W1<1 THEN T8=.1*INT(10*W1) 3450 T=T+T8 : IF T>T0+T9 THEN 6220 3480 GOTO 1980 3500 X=8*Q1+X+N*X1 : Y=8*Q2+Y+N*X2 : Q1=INT(X/8) : Q2=INT(Y/8) : S1=INT(X-Q1*8) 3550 S2=INT(Y-Q2*8) : IF S1=0 THEN Q1=Q1-1 : S1=8 3590 IF S2=0 THEN Q2=Q2-1 : S2=8 3620 X5=0 : IF Q1<1 THEN X5=1 : Q1=1 : S1=1 3670 IF Q1>8 THEN X5=1 : Q1=8 : S1=8 3710 IF Q2<1 THEN X5=1 : Q2=1 : S2=1 3750 IF Q2>8 THEN X5=1 : Q2=8 : S2=8 3790 IF X5=0 THEN 3860 3800 ; "MESSAGE FROM STARFLEET COMMAND:" 3810 ; "'PERMISSION TO ATTEMPT CROSSING OF" 3820 ; "GALACTIC PERIMETER IS HEREBY *DENIED*." : ; "SHUT DOWN YOUR ENGINES." 3830 ; "SHIEF ENGINEER SCOTT REPORTS:" : ; "'WARP ENGINES SHUT DOWN AT SECTOR";S1;",";S2 3840 ; "OF QUADRANT";Q1;",";Q2;"'" 3850 IF T>T0+T9 THEN 6220 3860 IF 8*Q1+Q2=8*Q4+Q5 THEN 3370 3870 T=T+1 : GOSUB 3910 : GOTO 1320 3910 E=E-N-10 : IF E>=0 THEN RETURN 3930 ; "SHIELD CONTROL SUPPLIES ENERGY TO COMPLETED THE MANEUVER." 3940 S=S+E : E=0 : IF S<=0 THEN S=0 3980 RETURN 4000 IF D(3)<0 THEN ; "LONG RANGE SENSORS ARE INOPERABLE" : GOTO 1990 4030 ; " LONG RANGE SCAN FOR QUADRANT";Q1;",";Q2 4035 ; "========================================"; : ; : ; 4040 O1$="-------------------" : ; TAB(11%);O1$ 4060 FOR I%=Q1-1 TO Q1+1 : N(1)=-1 : N(2)=-2 : N(3)=-3 : FOR J%=Q2-1 TO Q2+1 4120 IF I%>0 AND I%<9 AND J%>0 AND J%<9 THEN N(J%-Q2+2%)=G(I%,J%) : Z(I%,J%)=G(I%,J%) 4180 NEXT J% : ; TAB(11%); : FOR L%=1% TO 3% : ; ": "; : IF N(L%)<0 THEN ; "*** "; : GOTO 4230 4210 ; RIGHT$(NUM$(N(L%)+1000),3);" "; 4230 NEXT L% : ; ":" : ; TAB(11%);O1$ : NEXT I% : GOTO 1990 4260 IF D(4)<0 THEN ; "PHASERS INOPERATIVE" : GOTO 1990 4261 ; TAB(13%)"PHASER CONTROL" 4262 ; STRING$(40%,61%) 4265 IF K3>0 THEN 4330 4270 ; "SCIENCE OFFICER SPOCK REPORTS 'SENSORS SHOW NO ENEMY SHIP IN THIS QUADRANT'" : GOTO 1990 4330 IF D(8)<0 THEN ; "COMPUTER FAILURE HAMPERS ACCURACY" 4350 ; "PHASERS LOCKED ON TARGET:" 4360 ; "ENERGY AVAILABLE =";E;" UNITS" 4370 ; : ; "NUMBER OF UNITS TO FIRE"; : INPUT X : ; : IF X<0 THEN 1990 4400 IF E-X<0 THEN 4360 4410 E=E-X : IF D(7)<0 THEN X=X*RND(1) 4450 H1=INT(X/K3) : FOR I%=1% TO 3% : IF K(I%,3%)<=0 THEN 4670 4480 H=INT((H1/FND(0))*(RND(1)+2)) : IF H>.15*K(I%,3%) THEN 4530 4500 ; "SENSORS SHOW NO DAMAGE TO ENEMY AT ";K(I%,1%);","K(I%,2%) : GOTO 4670 4530 K(I%,3%)=K(I%,3%)-H : ; H;" UNITS HIT ON KLINGON AT SECTOR";K(I%,1%);","; 4550 ; K(I%,2%) : IF K(I%,3%)<=0% THEN ; " *** KLINGON DESTROYED ***" : GOTO 4580 4560 ; "SENSORS SHOW";K(I%,3%);" UNITS REMAINING" : GOTO 4670 4580 K3=K3-1 : K9=K9-1 : Z1=K(I%,1%) : Z2=K(I%,2%) : A$=" " : GOSUB 8670 4650 K(I%,3%)=0% : G(Q1,Q2)=G(Q1,Q2)-100% : Z(Q1,Q2)=G(Q1,Q2) : IF K9<=0% THEN 6370 4670 NEXT I% : GOSUB 6000 : GOTO 1990 4700 IF P<=0% THEN ; "ALL PHOTON TORPEDOS EXPENDED" : GOTO 1990 4710 ; TAB(12%)"TORPEDO CONTROL" : ; STRING$(40%,61%); : ; 4730 IF D(5)<0% THEN ; "PHOTON TUBES ARE NOT OPERATIONAL" : GOTO 1990 4740 ONERRORGOTO 4740 4760 ; CUR(4%,0)"PHOTON TORPEDO COURSE (1-9)"; : INPUT C1 : IF C1=9 THEN C1=1 4780 IF C1>=1 AND C1<9 THEN 4850 4790 ; "ENSIGN CHEKOV REPORTS:" : ; "'INCORRECT COURSE DATA, SIR!'" 4800 GOTO 1990 4850 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) : E=E-2 : P=P-1 4860 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)) : X=S1 : Y=S2 4910 ; "TORPEDO TRACK:" 4920 X=X+X1 : Y=Y+X2 : X3=INT(X+.5) : Y3=INT(Y+.5) 4960 IF X3<1 OR X3>8 OR Y3<1 OR Y3>8 THEN 5490 5000 ; " ";X3;",";Y3 : A$=" " : Z1=X : Z2=Y : GOSUB 8830 5050 IF Z3<>0 THEN 4920 5060 A$="+K+" : Z1=X : Z2=Y : GOSUB 8830 : IF Z3=0 THEN 5210 5110 ; "*** KLINGON DESTROYED ***" : K3=K3-1 : K9=K9-1 : IF K9<=0 THEN 6370 5150 FOR I%=1% TO 3% : IF X3=K(I%,1%) AND Y3=K(I%,2%) THEN 5190 5180 NEXT I% : I%=3% 5190 K(I%,3%)=0 : GOTO 5430 5210 A$=" * " : Z1=X : Z2=Y : GOSUB 8830 : IF Z3=0 THEN 5280 5260 ; "STAR AT";X3;",";Y3;" ABSORBED TORPEDO ENERGY." : GOSUB 6000 : GOTO 1990 5280 A$=">!<" : Z1=X : Z2=Y : GOSUB 8830 : IF Z3=0 THEN 4760 5330 ; "*** STARBASE DESTROYED ***" : B3=B3-1% : B9=B9-1% 5360 IF B9>T-T0-T9 THEN 5400 5365 FOR I=1 TO 2000 : NEXT I : ; \1$; 5370 ; "THAT DOES IT, CAPTAIN!! YOU ARE HEREBY RELIEVED OF COMMAND" 5390 GOTO 6270 5400 ; "STARFLEET COMMAND REVIEWING YOUR RECORD TO CONSIDER COURT MARTIAL!" : D0=0 5430 Z1=X : Z2=Y : A$=" " : GOSUB 8670 5470 G(Q1,Q2)=K3*100%+B3*10%+S3 : Z(Q1,Q2)=G(Q1,Q2) : GOSUB 6000 : GOTO 1990 5490 ; "TORPEDO MISSED" : GOSUB 6000 : GOTO 1990 5530 IF D(7)<0 THEN ; "SHIELD CONTROL INOPERABLE" : GOTO 1990 5540 ; TAB(13%)"SHIELD CONTROL" : ; STRING$(40%,61%); : ; 5550 ONERRORGOTO 5550 : ; CUR(4%,0%); 5560 ; "ENERGY AVAILABLE=";E+S : ; "NUMBER OF UNITS TO SHIELDS"; : INPUT X : ; : ; : ; 5580 IF X=0 OR S=X THEN ; ">SHIELDS UNCHANGED<" : GOTO 1990 5590 IF X<=E+S THEN 5630 5600 ; "SHIELD CONTROL REPORTS:" : ; "'THIS IS NOT THE FEDERATION TREASURY." 5610 ; ">SHIELDS UNCHANGED<" : GOTO 1990 5630 E=E+S-X : S=X : ; "DEFLECTOR CONTROL ROOM REPORT:" 5660 ; "'SHIELDS NOW AT";INT(S);" UNITS'" : GOTO 1990 5690 IF D(6)>=0 THEN 5910 5700 ; "DAMAGE CONTROL REPORT NOT AVAILABLE" : IF D0=0 THEN 1990 5720 D3=0 : FOR I%=1% TO 8% : IF D(I%)<0% THEN D3=D3+.1 5760 NEXT I% : IF D3=0 THEN 1990 5780 D3=D3+D4 : IF D3>=1 THEN D3=.9 5810 ; "TECHNICIANS STANDING BY TO EFFECT REPAIRS TO YOUR SHIP" 5820 ; "ESTIMATED TIME TO REPAIR:";.01*INT(100%*D3);"STARDATES" 5840 ; "WILL YOU AUTHORIZE THE REPAIR ORDER"; : INPUT A$ 5860 IF A$<>"Y" THEN 1990 5870 FOR I%=1% TO 8% : IF D(I%)<0% THEN D(I%)=0% 5890 NEXT I% : T=T+D3+.1 5910 ; "DEVICE STATE OF REPAIR" : FOR R1=1% TO 8% 5920 GOSUB 8790 5930 ; G2$;LEFT$(Z$,25%-LEN(G2$));INT(D(R1)*100%)*.01 5950 NEXT R1 : ; : IF D0<>0 THEN 5720 5980 GOTO 1990 6000 IF K3<=0 THEN RETURN 6010 IF D0<>0 THEN ; "STARBASE SHIELDS PROTECT THE ENTERPRICE" : RETURN 6040 FOR I%=1% TO 3% : IF K(I%,3%)<=0% THEN 6200 6060 H=INT((K(I%,3%)/FND(1%))*(2+RND(1))) 6061 S=S-H 6062 K(I%,3%)=K(I%,3%)/(3+RND(0)) 6080 ; H;" UNITS HIT ON ENTERPRICE" 6090 IF S<=0 THEN 6240 6100 ; " >SHIELDS DOWN TO";S;" UNITS<" : IF H<20 THEN 6200 6120 IF RND(1)>.6 OR H/S<=.02 THEN 6200 6140 R1=FNR(1) : D(R1)=D(R1)-H/S-.5*RND(1) : GOSUB 8790 6200 NEXT I% : RETURN 6220 ; "IT IS STARDATE";T : GOTO 6270 6240 ; "THE ENTERPRICE HAS BEEN DESTROYED" 6250 ; "THE FEDERATION WILL BE CONQUERED" : GOTO 6220 6270 ; "THERE WERE";K9;" KLINGONS LEFT AT THE" 6280 ; "END OF YOUR MISSION." 6290 ; : ; : IF B9=0 THEN 6360 6310 ; "THE FEDERATION IS IN NEED OF A NEW" 6320 ; "STARSHIP COMMANDER FOR A SIMILAR MISSION"; 6330 ; "IF THER IS A VOLUNTEER,LET HIM STEP FORWARD AND ENTER 'AYE'"; : INPUT A$ : IF A$="AYE" THEN 100 6360 END 6370 ; "CONGRATRULATION, CAPTAIN! THE LAST" : ; "KLINGON BATTLE CRUISER HAS BEEN DESTROYED." : ; 6400 GOTO 6290 6430 FOR I=S1-1 TO S1+1 : FOR J=S2-1 TO S2+1 6450 IF INT(I+.5)<1 OR INT(I+.5)>8 OR INT(J+.5)<1 OR INT(J+.5)>8 THEN 6540 6490 A$=">!<" : Z1=I : Z2=J : GOSUB 8830 : IF Z3=1 THEN 6580 6540 NEXT J : NEXT I : D0=0 : GOTO 6650 6580 D0=1 : C$="DOCKED" : E=E0 : P=P0 6620 ; "SHIELDS DROPPED FOR DOCKING PURPOSES" : S=0 : GOTO 6720 6650 IF K3>0 THEN C$="*RED*" : GOTO 6720 6660 C$="GREEN" : IF E=0 THEN 6770 6730 ; : ; "*** SHORT RANGE SENSORS ARE OUT ***" : RETURN 6770 O1$="_________________________________" : ; O1$ : FOR I%=1% TO 8% 6820 FOR J%=(I%-1%)*24%+1% TO (I%-1%)*24%+22% STEP 3% : ; " ";MID$(Q$,J%,3%); : NEXT J% 6830 ON I% GOTO 6850,6900,6960,7020,7070,7120,7180,7240 6850 ; INT(T*10)*.1 : GOTO 7260 6900 ; " ";C$ : GOTO 7260 6960 ; Q1;",";Q2 : GOTO 7260 7020 ; S1;",";S2 : GOTO 7260 7070 ; INT(P) : GOTO 7260 7120 ; INT(E+S) : GOTO 7260 7180 ; INT(S) : GOTO 7260 7240 ; INT(K9) 7260 NEXT I% : ; O1$ : RETURN 7290 IF D(8)<0 THEN ; "COMPUTER DISABLED" : GOTO 1990 7300 ; TAB(11%)"SHIPS COMPUTER" 7310 ; STRING$(40%,61%) 7320 ; "COMPUTER ACTIVE AND AVAITING COMMAND"; : ONERRORGOTO 7360 : INPUT A : IF A<0 THEN 1990 7321 IF A>6 THEN 7360 7330 ; \1$; 7350 ; : H8=1 : ON A+1 GOTO 7544,7900,8070,8500,8150,7400 7360 ; CUR(4%,0%);STRING$(400%,32%);CUR(4%,0%)"FUNKTIONS AVAILABLE FROM COMPUTER:" 7370 ; " 0=CUMULATIVE GALACTIC RECORD" 7372 ; " 1=STATUS REPORT" 7374 ; " 2=PHOTON TORPEDO DATA" 7376 ; " 3=STARBASE NAV DATA" 7378 ; " 4=DIRECTION/DISTANCE CALCULATOR" 7380 ; " 5=GALAXY 'REGION NAME' MAP" : ; : GOTO 7320 7400 H8=0 : G5=1 : ; TAB(15%)"THE GALAXY" : GOTO 7550 7544 ; "COMPUTER RECORD OF GALAXY" : ; "FOR QUADRANT";Q1;",";Q2 7546 ; 7550 IF A=5 THEN ; " 1 2 3 4 5 6 7 8" ELSE ; " 1 2 3 4 5 6 7 8" 7560 O1$="_______________________________________" 7570 ; O1$ : FOR I%=1% TO 8% : ; I%; : IF H8=0 THEN 7740 7630 FOR J%=1% TO 8% : ; " "; : IF Z(I%,J%)=0 THEN ; "***"; : GOTO 7720 7700 ; RIGHT$(NUM$(Z(I%,J%)+1000),3); 7720 NEXT J% : ; : GOTO 7850 7740 Z4=I% : Z5=1 : GOSUB 9030 : J0=INT(12-.5*LEN(G2$)) : ; TAB(J0);G2$; 7800 Z5=5 : GOSUB 9030 : J0=INT(30-.5*LEN(G2$)) : ; TAB(J0);G2$ 7850 ; O1$ : NEXT I% : GOTO 1990 7900 ; "STATUS REPORT:" : X$="" : IF K9>1 THEN X$="S" 7940 ; "KLINGON";X$;" LEFT:";K9 7960 ; "MISSION MUST BE COMPLETED IN";.1*INT((T0+T9-T)*10);"STARDATES" 7970 X$="S" : IF B9<2 THEN X$="" : IF B9<1 THEN 8010 7980 ; "THE FEDERATION IS MAINTAINING";B9;"STARBASE";X$ 7990 GOTO 5690 8010 ; "YOUR STUPIDITY HAS LEFT YOU ON YOUR ON" 8020 ; "IN THE GALAXY-- YOU HAVE NO STARBASES" : ; "LEFT!!!!" : GOTO 5690 8070 IF K3<=0 THEN 4270 8080 X$="" : IF K3>1 THEN X$="S" 8090 ; "FROM ENTERPRICE TO KLINGON";X$ 8100 H8=0 : FOR I%=1% TO 3% : IF K(I%,3%)<=0 THEN 8480 8110 W1=K(I%,1%) : X=K(I%,2%) 8120 C1=S1 : A=S2 : GOTO 8220 8150 ; "YOU ARE AT QUADRANT";Q1;",";Q2 : ; "SECTOR";S1;",";S2 8170 ; "PLEASE ENTER INITIAL COORDINATES (X/Y)" : INPUT C1,A 8200 ; "FINAL COORDINATES (X/Y)"; : INPUT W1,X 8220 X=X-A : A=C1-W1 : IF X<0 THEN 8350 8250 IF A<0 THEN 8410 8260 IF X>0 THEN 8280 8270 IF A=0 THEN C1=5 : GOTO 8290 8280 C1=1 8290 IF ABS(A)<=ABS(X) THEN 8330 8310 ; "DIRECTION=";C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)) : GOTO 8460 8330 ; "DIRECTION=";C1+(ABS(A)/ABS(X)) : GOTO 8460 8350 IF A>0 THEN C1=3 : GOTO 8420 8360 IF X<>0 THEN C1=5 : GOTO 8290 8410 C1=7 8420 IF ABS(A)>=ABS(X) THEN 8450 8430 ; "DIRECTION=";C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)) : GOTO 8460 8450 ; "DIRECTION =";C1+(ABS(X)/ABS(A)) 8460 ; "DISTANCE=";SQR(X^2%+A^2%) : IF H8=1 THEN 1990 8480 NEXT I% : GOTO 1990 8500 IF B3<>0 THEN ; "FROM ENTERPRICE TO STARBASE:" : W1=B4 : X=B5 : GOTO 8120 8510 ; "MR. SPOCK REPORTS, 'SENSORS SHOW NO STARBASES IN THIS QUADRANT.'" : GOTO 1990 8580 REM FIND EMPTY PLACE IN QUADRANT * 8590 R1=FNR(1) : R2=FNR(1) : A$=" " : Z1=R1 : Z2=R2 8592 GOSUB 8830 8593 IF Z3=0 THEN 8590 8600 RETURN 8604 STOP 8660 REM ** INSERT IN STRING ARRAY ** 8670 S8=INT(Z2-.5)*3+INT(Z1-.5)*24+1 8675 IF LEN(A$)<>3 THEN ; "FEL A$";LEN(A$) : STOP 8680 IF S8=1 THEN Q$=A$+RIGHT$(Q$,2%) : RETURN 8690 IF S8=190 THEN Q$=LEFT$(Q$,189%)+A$ : RETURN 8700 Q$=LEFT$(Q$,S8-1%)+A$+RIGHT$(Q$,193%-(190%-S8)) 8720 RETURN 8790 ON R1 GOTO 8792,8794,8796,8798,8800,8802,8804,8806,8792,8794 8792 G2$="WARP ENGINES" : RETURN 8794 G2$="SHORT RANGE SENSORS" : RETURN 8796 G2$="LONG RANGE SENSORS" : RETURN 8798 G2$="PHASER CONTROL" : RETURN 8800 G2$="PHOTON TUBES" : RETURN 8802 G2$="DAMAGE CONTROL" : RETURN 8804 G2$="SHIELD CONTROL" : RETURN 8806 G2$="LIBRARY-COMPUTER" : RETURN 8830 Z1=INT(Z1+.5) : Z2=INT(Z2+.5) : S8=(Z2-1)*3+(Z1-1)*24+1 : Z3=0 8890 IF MID$(Q$,S8,3%)<>A$ THEN RETURN 8900 Z3=1 : RETURN 9030 IF Z5<=4 THEN ON Z4 GOTO 9040,9050,9060,9070,9080,9090,9100,9110 9035 GOTO 9120 9040 G2$="ANTARES" : GOTO 9210 9050 G2$="RIGEL" : GOTO 9210 9060 G2$="PROCYON" : GOTO 9210 9070 G2$="VEGA" : GOTO 9210 9080 G2$="CANOPUS" : GOTO 9210 9090 G2$="ALTAIR" : GOTO 9210 9100 G2$="SAGITTARIUS" : GOTO 9210 9110 G2$="POLLUX" : GOTO 9210 9120 ON Z4 GOTO 9130,9140,9150,9160,9170,9180,9190,9200 9130 G2$="SIRIUS" : GOTO 9210 9140 G2$="DENEB" : GOTO 9210 9150 G2$="CAPELLA" : GOTO 9210 9160 G2$="BETELGEUSE" : GOTO 9210 9170 G2$="ALDEBARAN" : GOTO 9210 9180 G2$="REGULUS" : GOTO 9210 9190 G2$="ARCTURUS" : GOTO 9210 9200 G2$="SPICA" 9210 IF G5<>1 THEN ON Z5 GOTO 9230,9240,9250,9260,9230,9240,9250,9260 9220 RETURN 9230 G2$=G2$+" I" : RETURN 9240 G2$=G2$+" II" : RETURN 9250 G2$=G2$+" III" : RETURN 9260 G2$=G2$+" IV" : RETURN