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