100 REM *** PROGRAM SIMULATES TV PROGRAM STARTREK
110 REM *** WRITTEN BY MIKE MAYFIELD, CENTERLINE ENGINEERING
170 RANDOMIZE
180 PRINT " * * * STAR TREK * * *"
181 PRINT
200 INPUT "DO YOU WANT INSTRUCTIONS (THEY'RE LONG!)";A$
210 IF A$<>"YES" THEN 230
220 GOTO 5820
230 REM *** PROGRAM BEGINS HERE
240 Z$,R$,Q$=" "
260 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8)
290 T0,T=INT(RND(1)*20+20)*100
300 T9=30
301 D0=0
302 E0,E=3000
303 P0,P=10
304 S9=200
305 S,H8=0
360 DEF FND(D)=SQR((K(I,1)-S1)**2+(K(I,2)-S2)**2)
370 Q1=INT(RND(1)*8+1)
380 Q2=INT(RND(1)*8+1)
390 S1=INT(RND(1)*8+1)
400 S2=INT(RND(1)*8+1)
410 T7=TIME(0)
420 C(2,1),C(3,1),C(4,1),C(4,2),C(5,2),C(6,2)=-1
430 C(1,1),C(3,2),C(5,1),C(7,2),C(9,1)=0
440 C(1,2),C(2,2),C(6,1),C(7,1),C(8,1),C(8,2),C(9,2)=1
450 MAT D=ZER
460 D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL"
470 D$=D$+"PHOTON TUBESDAMAGE CNTRL"
480 E$="SHIELD CNTRLCOMPUTER"
490 B9,K9=0
491 REM *** SETS UP WHAT EXISTS IN GALAXY
500 FOR I=1TO8
510 FOR J=1TO8
520 R1=RND(1)
530 IF R1>.98 THEN 580
540 IF R1>.95 THEN 610
550 IF R1>.8 THEN 640
560 K3=0
561 GOTO 660
580 K3=3
581 K9=K9+3
582 GOTO 660
610 K3=2
611 K9=K9+2
612 GOTO 660
640 K3=1
641 K9=K9+1
660 R1=RND(1)
670 IF R1>.96 THEN 700
680 B3=0
681 GOTO 720
700 B3=1
701 B9=B9+1
720 S3=INT(RND(1)*8+1)
730 G(I,J)=K3*100+B3*10+S3
740 Z(I,J)=0
750 NEXT J
760 NEXT I
770 K7=K9
775 PRINT
776 PRINT
780 PRINT"YOU MUST DESTROY"K9" KLINGONS IN"T9" STARDATES WITH "B9" STARBASES"
790 IF B9>0 THEN 810
800 G(6,3)=114
810 K3,B3,S3=0
820 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 920
830 X=G(Q1,Q2)*.01
840 K3=INT(X)
850 B3=INT((X-K3)*10)
860 S3=G(Q1,Q2)-INT(G(Q1,Q2)*.1)*10
870 IF K3=0 THEN 910
880 IF S>200 THEN 910
890 PRINT"COMBAT AREA CONDITION RED"
900 PRINT" SHIELDS DANGEROUSLY LOW"
910 MAT K=ZER
920 FOR I=1TO3
930 K(I,3)=0
940 NEXT I
950 Q$=Z$
951 R$=Z$
970 S$=MID(Z$,1,48)
971 REM *** PUT ENTERPRISE SOMEWHERE
980 A$="<*>"
990 Z1=S1
1000 Z2=S2
1010 GOSUB 5510
1020 FOR I=1TOK3
1030 GOSUB 5380
1031 REM *** PUT KLINGONS SOMEWHERE
1040 A$="+++"
1050 Z1=R1
1060 Z2=R2
1070 GOSUB 5510
1080 K(I,1)=R1
1081 K(I,2)=R2
1082 K(I,3)=S9
1110 NEXT I
1120 FOR I=1TOB3
1130 GOSUB 5380
1131 REM *** PUT STARBASE(S) SOMEWHERE
1140 A$=">!<"
1141 Z1=R1
1142 Z2=R2
1170 GOSUB 5510
1180 NEXT I
1190 FOR I=1TOS3
1200 GOSUB 5380
1201 REM *** PUT STARS SOMEWHERE
1210 A$=" * "
1211 Z1=R1
1212 Z2=R2
1240 GOSUB 5510
1250 NEXT I
1260 GOSUB 4120
1270 INPUT "COMMAND:";A
1290 IF A=0 GOTO 1410
1291 IF A=1 GOTO 1260
1292 IF A=2 GOTO 2330
1293 IF A=3 GOTO 2530
1294 IF A=4 GOTO 2800
1295 IF A=5 GOTO 3460
1296 IF A=6 GOTO 3560
1297 IF A=7 GOTO 4630
1298 IF A=8 GOTO 6510
1310 PRINT
1311 PRINT" 0 = SET COURSE"
1320 PRINT" 1 = SHORT RANGE SENSOR SCAN"
1330 PRINT" 2 = LONG RANGE SENSOR SCAN"
1340 PRINT" 3 = FIRE PHASERS"
1350 PRINT" 4 = FIRE PHOTON TORPEDOES"
1360 PRINT" 5 = SHIELD CONTROL"
1370 PRINT" 6 = DAMAGE CONTROL REPORT"
1380 PRINT" 7 = CALL ON LIBRARY COMPUTER"
1390 PRINT" 8 = END THE CONTEST"
1391 PRINT
1400 GOTO 1270
1401 REM *** COURSE CONTROL CODE BEGINS HERE
1410 INPUT "COURSE (1-9):";C1
1430 IF C1=0 THEN 1270
1440 IF C1<1 OR C1>9 THEN 1410
1450 INPUT "WARP FACTOR (0-8):";W1
1470 IF W1<0 OR W1>8 THEN 1410
1480 IF D(1)>=0 OR W1<=.2 THEN 1510
1490 PRINT "WARP ENGINES ARE DAMAGED, MAXIMUM SPEED = WARP .2"
1500 GOTO 1410
1510 IF K3<=0 THEN 1560
1520 GOSUB 3790
1530 IF K3<=0 THEN 1560
1540 IF S<0 THEN 4000
1550 GOTO 1610
1560 IF E>0 THEN 1610
1570 IF S<1 THEN 3920
1580 PRINT "YOU HAVE"E" UNITS OF ENERGY"
1590 PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE"S" UNITS LEFT"
1600 GOTO 1270
1610 FOR I=1TO8
1611 IF D(I)>=0 THEN 1640
1612 REM *** FIX ANY DAMAGED DEVICE
1630 D(I)=D(I)+1
1640 NEXT I
1650 IF RND(1)>.2 THEN 1810
1660 R1=INT(RND(1)*8+1)
1670 IF RND(1)>= .5 THEN 1750
1680 D(R1)=D(R1)-(RND(1)*5+1)
1690 PRINT
1691 PRINT "DAMAGE CONTROL REPORT:";
1710 GOSUB 5610
1720 PRINT" DAMAGED"
1721 PRINT
1722 GOTO 1810
1750 D(R1)=D(R1)+(RND(1)*5+1)
1760 PRINT
1761 PRINT "DAMAGE CONTROL REPORT:";
1780 GOSUB 5610
1790 PRINT" STATE OF REPAIR IMPROVED"
1791 PRINT
1810 N=INT(W1*8)
1811 A$=" "
1812 Z1=S1
1813 Z2=S2
1850 GOSUB 5510
1860 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
1870 X=S1
1871 Y=S2
1890 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1))
1900 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1))
1910 FOR I=1TON
1911 S1=S1+X1
1912 S2=S2+X2
1940 IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 2170
1950 S8=S1*24+S2*3-26
1951 IF S8>72 THEN 1990
1970 IF MID(Q$,S8,3)=" " THEN 2070
1980 GOTO 2030
1990 IF S8>144 THEN 2020
2000 IF MID(R$,S8-72,3)=" " THEN 2070
2010 GOTO 2030
2020 IF MID(S$,S8-144,3)=" " THEN 2070
2030 PRINT"WARP ENGINES SHUTDOWN AT SECTOR "S1","S2" DUE TO BAD NAVAGATION"
2040 S1=S1-X1
2041 S2=S2-X2
2042 GOTO 2080
2070 NEXT I
2080 A$="<*>"
2081 Z1=S1
2082 Z2=S2
2110 GOSUB 5510
2120 E=E-N+5
2121 IF W1<1 THEN 2150
2140 T=T+1
2150 IF T>T0+T9 THEN 3970
2160 GOTO 1260
2170 X=Q1*8+X+X1*N
2171 Y=Q2*8+Y+X2*N
2190