100 REM *** STARTREK *** 110 REM ORIG BY MIKE MAYFIELD 120 REM MODIFIED BY EVERYBODY 130 REM THIS MOD BY WTN FOR ATARI 140 REM 4/29/20 STILL MODIFYING 150 REM 2/22/21 COSMETIC FIXES 200 PRINT "↰";:POKE 752,0:Z8=0 210 PRINT "┌─────────────────────┐" 220 PRINT "| |" 230 PRINT "| *** STAR TREK *** |" 240 PRINT "| |" 250 PRINT "└─────────────────────┘" 251 REM S9=KL.STREN R8=CH.SHOOT 1ST 252 S9=200:R8=0:TRAP 260:REM LEV 0 253 PRINT "↓LEVEL(0-3)";:INPUT L 254 L=INT(L):IF L<0 OR L>3 THEN 200 255 IF L=1 THEN S9=300:R8=0.3 256 IF L=2 THEN S9=400:R8=0.7 257 IF L=3 THEN S9=500:R8=1 260 POKE 752,1:PRINT "PLEASE STAND BY..." 262 DIM Z$(16),X$(8),X0$(8),A1$(27),A$(8),G2$(40),Q$(64),O1$(40),B$(8),C$(8),G(8,8),C(9,2),K(3,3),N(3),Z(8,8),D(8) 270 Z$="................" 300 T=RND(0) 310 T=INT(RND(1)*20+20)*100:T0=T:T9=28+INT(RND(1)*10):D0=0:E=3000:E0=E 320 P=10:P0=P:S=0:B9=0:K9=0:X$="":X0$=" IS":GOTO 380 322 REM DEF FND(D) 330 D=SQR((K(I,1)-S1)^2+(K(I,2)-S2)^2):RETURN 332 REM DEF FNR(R) 340 R=INT(RND(1)*7.98+1.01):RETURN 350 REM INITIALIZE STARSHIP POSITION 380 R=1:GOSUB 340:Q1=R:R=1:GOSUB 340:Q2=R:R=1:GOSUB 340:S1=R:R=1:GOSUB 340:S2=R 400 FOR I=1 TO 9:C(I,1)=0:C(I,2)=0:NEXT I 410 C(3,1)=-1:C(2,1)=-1:C(4,1)=-1:C(4,2)=-1:C(5,2)=-1:C(6,2)=-1 420 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 430 FOR I=1 TO 8:D(I)=0:NEXT I 440 A1$="NAVSRSLRSPHATORSHEDAMCOMXXX" 450 REM SET UP EACH QUADRANT 500 FOR I=1 TO 8:FOR J=1 TO 8:K3=0:Z(I,J)=0:R1=RND(1) 510 IF R1>0.97 THEN K3=3:K9=K9+3:GOTO 540 520 IF R1>0.93 THEN K3=2:K9=K9+2:GOTO 540 530 IF R1>0.75 THEN K3=1:K9=K9+1 540 B3=0:IF RND(1)>0.95 THEN B3=1:B9=B9+1 550 R=1:GOSUB 340:G(I,J)=K3*100+B3*10+R:NEXT J:NEXT I:IF K9>T9 THEN T9=K9+1 560 IF B9<>0 THEN 590 570 IF G(Q1,Q2)<200 THEN G(Q1,Q2)=G(Q1,Q2)+100:K9=K9+1 580 B9=1:G(Q1,Q2)=G(Q1,Q2)+10:R=1:GOSUB 340:Q1=R:R=1:GOSUB 340:Q2=R 590 K7=K9:IF B9<>1 THEN X$="S":X0$=" ARE" 600 PRINT "↓YOUR ORDERS ARE AS FOLLOWS...":PRINT 610 PRINT "DESTROY THE ";K9;" KLINGONS WHICH HAVE" 620 PRINT "INVADED THE GALAXY BEFORE THEY CAN" 630 PRINT "ATTACK FEDERATION HEADQUARTERS ON" 640 PRINT "STARDATE ";T0+T9;". THIS GIVES YOU ";T9 650 PRINT "DAYS TO COMPLETE YOUR ASSIGNMENT." 660 PRINT "↓THERE";X0$;" ";B9;" STARBASE";X$;" IN THE GALAXY" 670 PRINT "FOR RESUPPLYING YOUR SHIP." 680 PRINT "↓PRESS ANY KEY TO BEGIN" 690 I=RND(1):IF PEEK(764)=255 THEN 690 692 POKE 764,255:PRINT "↰" 700 REM HERE WHEN ENTERING NEW QUAD 730 Z4=Q1:Z5=Q2:K3=0:B3=0:S3=0:G5=0:D4=RND(1)*0.5:Z(Q1,Q2)=G(Q1,Q2) 740 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 840 750 GOSUB 4490:IF T0<>T THEN 780 760 PRINT "YOUR MISSION BEGINS IN THE" 770 PRINT "GALACTIC QUADRANT, ";G2$;".":GOTO 790 780 PRINT "YOU ARE NOW ENTERING THE":PRINT G2$;" QUADRANT... " 790 K3=INT(G(Q1,Q2)*0.01):B3=INT(G(Q1,Q2)*0.1)-10*K3 800 S3=G(Q1,Q2)-100*K3-10*B3:IF K3=0 THEN 830 810 PRINT "COMBAT AREA *** CONDITION RED *** " 820 IF S<=200 THEN PRINT "SHIELDS ARE DANGEROUSLY LOW " 830 FOR I=1 TO 3:K(I,1)=0:K(I,2)=0:K(I,3)=0:NEXT I:Q$(1,16)=Z$:Q$(17,32)=Z$:Q$(33,48)=Z$:Q$(49,64)=Z$ 850 REM POSITION SHIP IN QUAD 890 A$="E":Z1=S1:Z2=S2:GOSUB 4250:IF K3<1 THEN 920 900 FOR I=1 TO K3:GOSUB 4200:A$="K":Z1=R1:Z2=R2 910 GOSUB 4250:K(I,1)=R1:K(I,2)=R2:K(I,3)=S9*(0.5*RND(1)):NEXT I 920 IF B3<1 THEN 940 930 GOSUB 4200:A$="B":Z1=R1:B4=R1:Z2=R2:B5=R2:GOSUB 4250 940 FOR I=1 TO S3:GOSUB 4200:A$="*":Z1=R1:Z2=R2:GOSUB 4250:NEXT I 950 GOSUB 3210 954 REM DET.IF KLINGONS SHOOT FIRST 955 IF Z8=1 AND RND(1)<R8 THEN GOSUB 2930 960 Z8=1:IF S+E>10 THEN IF E>10 OR D(7)=0 THEN 985 970 PRINT :FOR I=1 TO 2000:NEXT I 972 FOR J=1 TO 11:FOR I=1 TO 100:NEXT I:PRINT "↑";:NEXT J:POSITION 2,12 975 PRINT "** FATAL ERROR **":PRINT "YOU HAVE STRANDED YOUR SHIP IN SPACE." 980 GOTO 3070 984 REM UPDATE NUMBERS 985 POSITION 31,5:PRINT INT(P);" "; 986 POSITION 31,6:PRINT INT(E+S);" "; 987 POSITION 31,7:PRINT INT(S);" "; 990 TRAP 990:POKE 752,0:POSITION 2,11:PRINT "COMMAND◂◂◂◂◂◂◂◂◂◂◂◂◂◂◂◂◂◂◂◂◂◂◂◂";:INPUT A$:I=1 992 FOR J=1 TO 11:PRINT "↑";:NEXT J:POSITION 2,12 1000 IF A$<>A1$(3*I-2,3*I) THEN 1020 1010 ON I GOTO 1170,950,1970,2100,2320,2660,2760,3480,3090 1020 I=I+1:IF I<10 THEN 1000 1030 PRINT "ENTER ONE OF THE FOLLOWING:" 1040 PRINT " NAV - NAVIGATE" 1050 PRINT " SRS - SHORT RANGE SCAN" 1060 PRINT " LRS - LONG RANGE SCAN" 1070 PRINT " PHA - PHASORS" 1080 PRINT " TOR - PHOTON TORPEDOES" 1090 PRINT " SHE - SHIELD CONTROL" 1100 PRINT " DAM - DAMAGE CONTROL" 1110 PRINT " COM - COMPUTER" 1120 PRINT " XXX - QUIT" 1130 GOTO 960 1140 REM NAVIGATION (NAV) 1170 PRINT "COURSE (1-9)";:INPUT A$ 1180 C1=VAL(A$):IF C1=9 THEN C1=1 1190 IF C1>=1 AND C1<9 THEN 1210 1191 PRINT " 4 3 2" 1192 PRINT " \|/" 1193 PRINT " 5-E-1" 1194 PRINT " /|\" 1195 PRINT " 6 7 8" 1200 PRINT "NAVIGATION REPORTS BAD DATA.":GOTO 960 1210 X$="8":IF D(1)<0 THEN X$="0.2" 1220 PRINT "WARP FACTOR (0-";X$;")";:INPUT A$ 1230 W1=VAL(A$):IF D(1)<0 AND W1>0.2 THEN 1200 1240 IF W1<=0 OR W1>8 THEN 1200 1250 N=INT(W1*8+0.5):IF E-N>=0 THEN 1350 1260 PRINT "ENGINEERING REPORTS INSUFFICIENT" 1270 PRINT "ENERGY FOR WARP ";W1;"." 1280 IF S<N-E OR D(7)<0 THEN 960 1290 PRINT "DEFLECTOR CONTROL REPORTS SHIELDS" 1300 PRINT "NOW AT ";S;"UNITS OF ENERGY." 1310 GOTO 960 1320 REM KLINGON MOVE/FIRE 1350 FOR I=1 TO K3:IF K(I,3)=0 THEN 1380 1360 A$=".":Z1=K(I,1):Z2=K(I,2):GOSUB 4250:GOSUB 4200 1370 K(I,1)=Z1:K(I,2)=Z2:A$="K":GOSUB 4250 1380 NEXT I:GOSUB 2930:D1=0:D6=W1:IF W1>=1 THEN D6=1 1390 REM ACCUMULATIVE REPAIR 1420 FOR I=1 TO 8:IF D(I)>=0 THEN 1470 1430 D(I)=D(I)+D6:IF D(I)>-0.1 AND D(I)<0 THEN D(I)=-0.1:GOTO 1470 1440 IF D(I)<0 THEN 1470 1450 IF D1<>1 THEN D1=1 1460 R1=I:GOSUB 4310:PRINT G2$;" REPAIR COMPLETED.":GOSUB 5000 1470 NEXT I:IF RND(1)>0.1 THEN 1560 1480 R=1:GOSUB 340:R1=R:IF RND(1)>0.7 THEN 1510 1490 D(R1)=D(R1)-(RND(1)*5+1) 1500 GOSUB 4310:PRINT G2$;" DAMAGED.":GOSUB 5000:GOTO 1560 1510 D(R1)=D(R1)+RND(1)*3+1 1520 GOSUB 4310:PRINT G2$;" REPAIR IMPROVED.":GOSUB 5000 1530 REM MOVE STARSHIP 1560 POKE 752,1:A$=".":Z1=INT(S1):Z2=INT(S2):GOSUB 4250 1570 C2=INT(C1):X1=C(C2,1)+(C(C2+1,1)-C(C2,1))*(C1-C2):X=S1:Y=S2 1580 X2=C(C2,2)+(C(C2+1,2)-C(C2,2))*(C1-C2):Q4=Q1:Q5=Q2 1590 I=1 1600 S1=S1+X1:S2=S2+X2:IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 1730 1610 S8=INT(S1)*8+INT(S2)-8:IF Q$(S8,S8)="." THEN 1640 1620 S1=INT(S1-X1):S2=INT(S2-X2):PRINT "ENGINES SHUT DOWN AT SECTOR ";S1;",";S2 1630 PRINT "DUE TO BAD NAVIGATION.":GOTO 1660 1640 POSITION (S2-X2)*2+2,S1-X1:PRINT ".←";:POSITION S2*2+2,S1:PRINT "E←";:POSITION 2,12:PRINT ; 1645 I=I+1:IF I<=N THEN 1600 1650 S1=INT(S1):S2=INT(S2) 1660 A$="E":Z1=INT(S1):Z2=INT(S2):GOSUB 4250:GOSUB 1890:T8=1 1670 IF W1<1 THEN T8=0.1*INT(10*W1) 1680 T=T+T8:IF T>T0+T9 THEN 3070 1690 GOTO 950 1700 REM EXCEEDED QUADRANT LIMITS 1730 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) 1740 S2=INT(Y-Q2*8):IF S1=0 THEN Q1=Q1-1:S1=8 1750 IF S2=0 THEN Q2=Q2-1:S2=8 1760 X5=0:IF Q1<1 THEN X5=1:Q1=1:S1=1 1770 IF Q1>8 THEN X5=1:Q1=8:S1=8 1780 IF Q2<1 THEN X5=1:Q2=1:S2=1 1790 IF Q2>8 THEN X5=1:Q2=8:S2=8 1800 IF X5=0 THEN 1840 1810 PRINT "YOU CAN NOT LEAVE THE GALAXY" 1820 PRINT "ENGINES SHUT DOWN AT SECTOR ";S1;",";S2:PRINT "OF QUADRANT ";Q1;",";Q2;"." 1830 IF T>T0+T9 THEN 3070 1840 IF 8*Q1+Q2=8*Q4+Q5 THEN 1660 1850 T=T+1:GOSUB 1890:GOTO 730 1860 REM MANEUVER ENERGY FROM SHIELD 1890 E=E-N-10:IF E>=0 THEN RETURN 1900 PRINT "SHIELD CONTROL SUPPLIES ENERGY NEEDED" 1910 PRINT "TO COMPLETE MANEUVER." 1920 S=S+E:E=0:IF S<=0 THEN S=0 1930 RETURN 1940 REM LONG RANGE SCAN 1970 IF D(3)<0 THEN PRINT "LONG RANGE SENSORS ARE OUT.":GOTO 960 1980 PRINT "LONG RANGE SCAN FOR QUADRANT ";Q1;",";Q2;":" 1990 O1$=" ├─────┼─────┼─────┤" 2000 PRINT " ┌─────┬─────┬─────┐":PRINT " "; 2010 FOR I=Q1-1 TO Q1+1:N(1)=-1:N(2)=-2:N(3)=-3:FOR J=Q2-1 TO Q2+1 2020 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) 2030 NEXT J:FOR L=1 TO 3:PRINT "| ";:IF N(L)<0 THEN PRINT "*** ";:GOTO 2050 2040 A$=STR$(N(L)+1000):PRINT A$(LEN(A$)-2,LEN(A$));" "; 2050 NEXT L:PRINT "|":IF I<Q1+1 THEN PRINT O1$:PRINT " "; 2060 NEXT I:PRINT " └─────┴─────┴─────┘":GOTO 960 2070 REM PHASORS 2100 IF D(4)<0 THEN PRINT "PHASORS ARE OUT.":GOTO 960 2110 IF K3>0 THEN 2130 2120 PRINT "THERE ARE NO ENEMY SHIPS TO FIRE AT.":GOTO 960 2130 IF D(8)<0 THEN PRINT "COMPUTER FAILURE HAMPERS ACCURACY." 2140 PRINT "PHASORS LOCKED ON TARGET" 2150 PRINT "ENERGY AVAILABLE = ";E;" UNITS" 2160 PRINT "NUMBER OF UNITS TO FIRE";:INPUT A$ 2170 X=VAL(A$):IF X<=0 THEN 960 2180 IF E-X<0 THEN 2150 2190 E=E-X:IF D(8)<0 THEN X=X*RND(1) 2200 H1=INT(X/K3):POSITION 2,12:FOR I=1 TO 12:PRINT "↑";:NEXT I:FOR I=1 TO 3:IF K(I,3)<=0 THEN 2280 2210 GOSUB 330:H=INT((H1/D)*(RND(1)+1)):IF H>0.15*K(I,3) THEN 2230 2220 PRINT " NO DAMAGE TO ENEMY AT ";K(I,1);",";K(I,2):GOTO 2280 2230 K(I,3)=K(I,3)-H:PRINT " ";H;" UNIT HIT TO ENEMY AT ";K(I,1);",";K(I,2) 2240 IF K(I,3)<=0 THEN PRINT " *** ENEMY DESTROYED ***":GOTO 2260 2250 PRINT " (SENSORS SHOW ";INT(K(I,3)+0.5);" UNITS LEFT)":GOTO 2280 2260 K3=K3-1:K9=K9-1:Z1=K(I,1):Z2=K(I,2):A$=".":GOSUB 4250 2270 K(I,3)=0:G(Q1,Q2)=G(Q1,Q2)-100:Z(Q1,Q2)=G(Q1,Q2):IF K9<=0 THEN 3150 2280 NEXT I:GOSUB 5000 2285 GOSUB 2930:GOSUB 3210:GOTO 960 2290 REM TORPEDOES 2320 IF P<=0 THEN PRINT "ALL PHOTON TORPEDOES ARE EXPENDED.":GOTO 960 2330 IF D(5)<0 THEN PRINT "PHOTON TUBES ARE OUT.":GOTO 960 2340 PRINT "TORPEDO COURSE (1-9)";:INPUT A$ 2350 C1=VAL(A$):IF C1=9 THEN C1=1 2360 IF C1>=1 AND C1<9 THEN 2390 2370 PRINT "INCORRECT COURSE DATA.":GOTO 960 2390 C2=INT(C1):X1=C(C2,1)+(C(C2+1,1)-C(C2,1))*(C1-C2):E=E-2:P=P-1 2400 X2=C(C2,2)+(C(C2+1,2)-C(C2,2))*(C1-C2):X=S1:Y=S2 2410 PRINT "TORPEDO TRACK:" 2420 X=X+X1:Y=Y+X2:X3=INT(X+0.5):Y3=INT(Y+0.5) 2430 IF X3<1 OR X3>8 OR Y3<1 OR Y3>8 THEN 2620 2440 PRINT " ";X3;",";Y3:A$=".":Z1=X:Z2=Y:GOSUB 4430 2450 IF Z3<>0 THEN 2420 2460 A$="K":Z1=X:Z2=Y:GOSUB 4430:IF Z3=0 THEN 2530 2470 PRINT " *** ENEMY DESTROYED ***":K3=K3-1:K9=K9-1:IF K9<=0 THEN 3150 2480 I=1 2490 IF X3=K(I,1) AND Y3=K(I,2) THEN 2520 2500 I=I+1:IF I<=3 THEN 2490 2510 I=3 2520 K(I,3)=0:GOTO 2600 2530 A$="*":Z1=X:Z2=Y:GOSUB 4430:IF Z3=0 THEN 2550 2540 PRINT "STAR ABSORBED TORPEDO ENERGY":GOTO 2625 2550 A$="B":Z1=X:Z2=Y:GOSUB 4430:IF Z3=0 THEN 2625 2560 PRINT " *** STARBASE DESTROYED ***":B3=B3-1:B9=B9-1 2570 IF B9>0 OR K9>T-T0-T9 THEN 2590 2580 PRINT "YOU ARE RELEIVED OF COMMAND!":GOTO 3090 2590 PRINT "YOU JUST MADE A REALLY DUMB MISTAKE!" 2600 Z1=X:Z2=Y:A$=".":GOSUB 4250 2610 G(Q1,Q2)=K3*100+B3*10+S3:Z(Q1,Q2)=G(Q1,Q2):GOSUB 2930:GOSUB 3210:GOTO 960 2620 PRINT "TORPEDO MISSED." 2625 GOSUB 5000:GOSUB 2930:GOTO 960 2630 REM SHIELD CONTROL 2660 IF D(7)<0 THEN PRINT "SHIELD CONTROL IS OUT.":GOTO 960 2670 PRINT "EGERGY AVAILABLE = ";E+S:PRINT "ENERGY TO SHIELDS "; 2680 INPUT A$:X=VAL(A$) 2690 IF X<0 OR S=X OR A$="" THEN PRINT "SHIELDS UNCHANGED":GOTO 960 2700 IF X<=E+S THEN 2720 2710 PRINT "INSUFFICIANT ENERGY":GOTO 960 2720 E=E+S-X:S=X:PRINT "SHIELDS NOW AT ";INT(S);" UNITS.":GOTO 960 2730 REM DAMAGE CONTROL 2760 IF D(6)>=0 THEN 2870 2770 PRINT "DAMAGE CONTROL REPORT NOT AVAILABLE.":IF D0=0 THEN 960 2780 D3=0:FOR I=1 TO 8:IF D(I)<0 THEN D3=D3+0.1 2790 NEXT I:IF D3=0 THEN 960 2800 D3=D3+D4:IF D3>=1 THEN D3=0.9 2810 PRINT "REPAIR TECHNICIANS ARE STANDING BY" 2820 PRINT "EST. ";0.01*INT(100*D3);" STARDATES. "; 2830 PRINT "AUTH (Y/N)";:INPUT A$ 2840 IF A$<>"Y" THEN 960 2845 POSITION 2,12:FOR I=1 TO 12:PRINT "↑";:NEXT I 2850 FOR I=1 TO 8:IF D(I)<0 THEN D(I)=0 2860 NEXT I:T=T+D3*0.1 2870 PRINT "DEVICE STATE":FOR R1=1 TO 8 2880 GOSUB 4310:PRINT G2$:PRINT "↑→→→→→→→→→→→→→→→→→→→→→→";INT(D(R1)*100)*0.01:NEXT R1:IF D0<>0 THEN 2780 2890 GOSUB 3210:GOTO 960 2900 REM KLINGON SHOOTING 2930 IF K3<=0 THEN RETURN 2932 FOR I=1 TO 200:NEXT I:POSITION 2,12:FOR I=1 TO 12:PRINT "↑";:NEXT I:PRINT "INCOMING FIRE..." 2940 IF D0<>0 THEN PRINT "STARBASE SHIELDS PROTECT YOU. ":RETURN 2950 FOR I=1 TO 3:IF K(I,3)<=0 THEN 3030 2960 GOSUB 330:H=INT((K(I,3)/D)*(2*RND(1))):S=S-H:K(I,3)=K(I,3)/(3*RND(1)) 2970 PRINT H;" UNIT HIT FROM SECTOR ";K(I,1);",";K(I,2);" " 2980 IF S<=0 THEN 3080 2990 PRINT " (SHIELDS DOWN TO ";S;" UNITS) ":IF H<20 THEN 3030 3000 IF RND(1)>0.6 OR H/S<=0.02 THEN 3030 3010 GOSUB 340:R1=R:D(R1)=D(R1)-H/S-0.5*RND(1):GOSUB 4310 3020 PRINT G2$;" DAMAGED BY HIT. " 3030 NEXT I:RETURN 3040 REM END OF GAME 3070 PRINT "IT IS STARDATE ";T;".":GOTO 3090 3080 PRINT "YOUR STARSHIP HAS BEEN DESTROYED.":GOTO 3070 3090 PRINT "THERE ARE ";K9;" KLINGONS REMAINING." 3100 IF B9=0 THEN 3140 3110 POKE 752,0:PRINT "PLAY AGAIN (Y/N)"; 3120 INPUT A$ 3130 IF A$="Y" THEN RUN 3140 PRINT "GOODBYE...":END 3150 PRINT "*** MISSION COMPLETED ***" 3160 PRINT "YOU HAVE RID THE GALAXY OF KLINGONS." 3170 PRINT "YOUR RATING IS ";INT(1000*(K7/(T-T0))^2):GOTO 3100 3180 REM SHORT SCAN AND STARTUP 3210 D0=0:FOR I=S1-1 TO S1+1:FOR J=S2-1 TO S2+1 3220 IF INT(I+0.5)<1 OR INT(I+0.5)>8 OR INT(J+0.5)<1 OR INT(J+0.5)>8 THEN 3240 3230 A$="B":Z1=I:Z2=J:GOSUB 4430:IF Z3=1 THEN D0=1 3240 NEXT J:NEXT I:IF D0=0 THEN 3270 3250 C$="DOCKED":E=E0:P=P0 3260 PRINT "SHIELDS ARE DOWN FOR DOCKING.":FOR I=1 TO 75:NEXT I:S=0:GOTO 3290 3270 IF K3>0 THEN C$="RED":GOTO 3290 3280 C$="GREEN":IF E<E0*0.1 THEN C$="YELLOW" 3290 IF D(2)>=0 THEN 3310 3300 PRINT "SHORT RANGE SENSORS ARE OUT.":RETURN 3310 POSITION 2,0:POKE 752,1:PRINT "┌─────────────────┬─────────────────┐" 3320 FOR I=1 TO 8:J=(I-1)*8+1 3330 PRINT "|";:FOR K=J TO J+7:PRINT " ";Q$(K,K);:NEXT K 3340 PRINT " | |←←←←←←←←←←←←←←←←←←";:ON I GOTO 3350,3360,3370,3380,3390,3400,3410,3420 3350 PRINT "STARDATE :";INT(T*10)*0.1:GOTO 3430 3360 PRINT "CONDITION:";C$:GOTO 3430 3370 PRINT "QUADRANT :";Q1;",";Q2:GOTO 3430 3380 PRINT "SECTOR :";S1;",";S2:GOTO 3430 3390 PRINT "TORPEDOES:";INT(P):GOTO 3430 3400 PRINT "TOT. ENER:";INT(E+S):GOTO 3430 3410 PRINT "SHIELDS :";INT(S):GOTO 3430 3420 PRINT "KLINGONS :";INT(K9) 3430 NEXT I:PRINT "└─────────────────┴─────────────────┘" 3435 PRINT " " 3440 RETURN 3450 REM LIBRARY/COMPUTER 3480 IF D(8)<0 THEN PRINT "THE COMPUTER IS DOWN.":GOTO 990 3490 TRAP 3520:POSITION 2,11:Z8=0 3495 PRINT "COMPUTER COMMAND";:INPUT A 3496 FOR J=1 TO 9:PRINT "↑";:NEXT J:POSITION 2,12 3500 TRAP 950:IF A<=0 THEN 990 3510 H8=1:ON A GOTO 3620,3740,3840,4130,3910,4770 3520 PRINT "AVAILABLE FUNCTIONS..." 3530 PRINT " 1-CUMULATIVE RECORD" 3540 PRINT " 2-STATUS REPORT" 3550 PRINT " 3-TORPEDO DATA" 3560 PRINT " 4-DOCKING DATA" 3570 PRINT " 5-COURSE CALCULATIONS" 3580 PRINT " 6-GALAXY MAP":GOTO 3490 3590 REM CUMULATIVE RECORD 3620 POKE 752,1:PRINT "↰ CUMULATIVE GALACTIC RECORD " 3630 PRINT "YOU ARE IN QUADRANT ";Q1;",";Q2;"." 3640 PRINT " 1 2 3 4 5 6 7 8" 3650 PRINT " ┌───┬───┬───┬───┬───┬───┬───┬───┐" 3660 O1$=" ├───┼───┼───┼───┼───┼───┼───┼───┤":FOR I=1 TO 8:PRINT I;" ";:FOR J=1 TO 8 3670 PRINT "|";:IF Z(I,J)=0 THEN PRINT "***";:GOTO 3690 3680 A$=STR$(Z(I,J)+1000):A$=A$(LEN(A$)-2,LEN(A$)) 3682 IF Q1<>I OR Q2<>J THEN 3685 3683 FOR Z=1 TO LEN(A$):A$(Z,Z)=CHR$(ASC(A$(Z,Z))+128):NEXT Z 3685 PRINT A$; 3690 NEXT J:PRINT "|":IF I<8 THEN PRINT O1$ 3700 NEXT I:PRINT " └───┴───┴───┴───┴───┴───┴───┴───┘"; 3702 IF PEEK(764)=255 THEN 3702 3704 POKE 764,255:PRINT "↰":GOTO 950 3710 REM STATUS REPORT 3740 PRINT "STATUS REPORT:" 3750 PRINT "ENEMY SHIPS REMAINING - ";K9 3760 PRINT "STARDATES REMAINING - ";0.1*INT((T0+T9-T)*10) 3770 X$="S":IF B9<2 THEN X$="":IF B9<1 THEN 3790 3780 PRINT "YOU HAVE ";B9;" STARBASE";X$;" FOR SERVICE.":GOTO 990 3790 PRINT "YOUR STUPIDITY HAS LEFT YOU" 3800 PRINT "WITHOUT ANY STARBASES.":GOTO 990 3810 REM TORPEDO DOCK AND D/D CALC 3840 IF K3<=0 THEN 2120 3850 X$="":IF K3>1 THEN X$="S" 3860 PRINT "FROM STARSHIP TO ENEMY SHIP";X$;":" 3880 H8=0:FOR I=1 TO 3:IF K(I,3)<=0 THEN 4120 3890 W1=K(I,1):X=K(I,2) 3900 C1=S1:A=S2:GOTO 3970 3910 PRINT "DIRECTION/DISTANCE CALCULATOR" 3920 PRINT "YOU ARE IN QUADRANT ";Q1;",";Q2;" SECTOR ";S1;",";S2 3930 PRINT "INITIAL Y COORDINATE";:INPUT C1:IF C1<1 OR C1>=9 THEN 4160 3940 PRINT "INITIAL X COORDINATE";:INPUT A:IF A<1 OR A>=9 THEN 4160 3950 PRINT "TARGET Y COORDINATE ";:INPUT W1:IF W1<1 OR W1>=9 THEN 4160 3960 PRINT "TARGET X COORDINATE ";:INPUT X:IF X<1 OR X>=9 THEN 4160 3970 X=X-A:A=C1-W1:IF X<0 THEN 4050 3980 IF A<0 THEN 4070 3990 IF X>0 THEN 4010 4000 IF A=0 THEN C1=5:GOTO 4020 4010 C1=1 4020 IF ABS(A)<=ABS(X) THEN 4040 4030 PRINT "DIRECTION = ";C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)):GOTO 4110 4040 PRINT "DIRECTION = ";C1+(ABS(A)/ABS(X)):GOTO 4110 4050 IF A>0 THEN C1=3:GOTO 4080 4060 IF X<>0 THEN C1=5:GOTO 4020 4070 C1=7 4080 IF ABS(A)>=ABS(X) THEN 4100 4090 PRINT "DIRECTION = ";C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)):GOTO 4110 4100 PRINT "DIRECTION = ";C1+(ABS(X)/ABS(A)) 4110 X=ABS(X):A=ABS(A):PRINT "DISTANCE = ";:IF X>=A THEN PRINT X:GOTO 4115 4112 PRINT A 4115 IF H8=1 THEN 4160 4120 NEXT I:GOTO 4160 4130 IF B3<>0 THEN PRINT "FROM STARSHIP TO BASE:" 4140 IF B3<>0 THEN W1=B4:X=B5:GOTO 3900 4150 PRINT "NO BASE IN THIS QUADRANT" 4160 GOTO 990 4170 REM FIND EMPTY PLACE IN QUAD 4200 GOSUB 340:R1=R:GOSUB 340:R2=R:A$=".":Z1=R1:Z2=R2:GOSUB 4430:IF Z3=0 THEN 4200 4210 RETURN 4220 REM INSERT IN STRING ARRAY 4250 S8=INT(Z2-0.5)+INT(Z1-0.5)*8+1 4260 IF LEN(A$)>1 THEN PRINT "ERROR":STOP 4270 Q$(S8,S8)=A$:RETURN 4280 REM DEVICE NAMES 4310 ON R1 GOTO 4320,4330,4340,4350,4360,4370,4380,4390 4320 G2$="WARP ENGINES":RETURN 4330 G2$="SHORT RANGE SENSORS":RETURN 4340 G2$="LONG RANGE SENSORS":RETURN 4350 G2$="PHASOR CONTROL":RETURN 4360 G2$="PHOTON TUBES":RETURN 4370 G2$="DAMAGE CONTROL":RETURN 4380 G2$="SHIELD CONTROL":RETURN 4390 G2$="LIBRARY-COMPUTER":RETURN 4400 REM STRING COMPARISON 4430 Z1=INT(Z1+0.5):Z2=INT(Z2+0.5):S8=(Z2-1)+(Z1-1)*8+1:Z3=0 4440 IF Q$(S8,S8)<>A$ THEN RETURN 4450 Z3=1:RETURN 4460 REM QUADRANT NAMES 4490 IF Z5<=4 THEN ON Z4 GOTO 4510,4520,4530,4540,4550,4560,4570,4580 4500 ON Z4 GOTO 4600,4610,4620,4630,4640,4650,4660,4670 4510 G2$="ANTARES":GOTO 4680 4520 G2$="RIGEL":GOTO 4680 4530 G2$="PROCYON":GOTO 4680 4540 G2$="VEGA":GOTO 4680 4550 G2$="CANOPUS":GOTO 4680 4560 G2$="ALTAIR":GOTO 4680 4570 G2$="SAGITTARIUS":GOTO 4680 4580 G2$="POLLUX":GOTO 4680 4600 G2$="SIRIUS":GOTO 4680 4610 G2$="DENEB":GOTO 4680 4620 G2$="CAPELLA":GOTO 4680 4630 G2$="BETELGEUSE":GOTO 4680 4640 G2$="ALDEBARAN":GOTO 4680 4650 G2$="REGULUS":GOTO 4680 4660 G2$="ARCTURUS":GOTO 4680 4670 G2$="SPICA":GOTO 4680 4680 IF G5<>1 THEN ON Z5 GOTO 4700,4710,4720,4730,4700,4710,4720,4730 4690 RETURN 4700 G2$(LEN(G2$)+1)=" I":RETURN 4710 G2$(LEN(G2$)+1)=" II":RETURN 4720 G2$(LEN(G2$)+1)=" III":RETURN 4730 G2$(LEN(G2$)+1)=" IV":RETURN 4740 REM PRINT GALAXY MAP 4770 POKE 752,1:PRINT "↰GALACTIC REGION MAP":PRINT 4780 PRINT " I II III IV I II III IV" 4790 PRINT " ┌───┬───┬───┬───┬───┬───┬───┬───┐" 4800 O1$=" ├───┼───┼───┼───┼───┼───┼───┼───┤":G5=1 4810 FOR Z4=1 TO 8:Z5=1:GOSUB 4490 4820 PRINT Z4;" | ";G2$:PRINT "↑→→→→→→→→→→→→→→→→→→";"| ";:Z5=5:GOSUB 4490 4830 PRINT G2$:PRINT "↑→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→→";"|":IF Z4<8 THEN PRINT O1$ 4840 NEXT Z4:PRINT " └───┴───┴───┴───┴───┴───┴───┴───┘" 4850 G5=0:Z4=Q1:Z5=Q2:GOSUB 4490:PRINT "YOU ARE PRESENTLY IN THE" 4860 PRINT G2$;" QUADRANT (";Q1;",";Q2;")" 4870 GOTO 3702 4990 REM SHORT DELAY 5000 FOR Z9=1 TO 60:NEXT Z9:RETURN