BIGMES

10  COM K[8,8],S[8,8],A[8,8],R[5],C[9],E[9],F[9],C$[10],S$[6],A$[128],F$[21]
20  COM G[10],H[10],L[8,8],E$[1]
30  COM T$[4]
40  FILES $abc
50  READ #1;A$
60  LET E$=A$[28,28]
70  LET A$=A$[33]
75  CHAIN "FUKCO0"
80  LET F$="   <*>+++>!< *  .  + "
90  LET C$=" *********"
100  IMAGE *,A,"=",A,A,3A
110  IMAGE *,A,"=",A,A,4D.DD
120  IMAGE *,A,"=",A,A,DD,":",DD," ",4A
130  IMAGE *,A,"=",A,A,DD,":0",D," ",4A
140  IMAGE *,A,"=",A,A,A,"T"
150  IMAGE *,A,"=",A,A,4X,D,",",D
160  IMAGE *,A,"=",A,A,3X,4D
170  IMAGE *,A,"=",A,A,3D," Units hit ENTERPRISE from ",D,"-",D
180  IMAGE *,A,"=",A,A,3D
190  IMAGE *,A,"=",A,A,D
200  PRINT E$;"*";E$;"&";E$;")"
210  PRINT E$;"= !";"--1--2--3--4--5--6--7--8- ";
220  FOR X=2 TO 9
230  PRINT  USING 190;E$,A$[X,X],A$[1,1],X-1
240  NEXT X
250  PRINT E$;"=( ";" --1--2--3--4--5--6--7--8- ";
260  PRINT E$;"= ;";" -1---2---3---4---5---6---7---8-"
270  PRINT
280  FOR X=2 TO 9
290  PRINT  USING 190;E$,A$[X,X],A$[28,28],X-1
300  FOR Y=1 TO 7
310  PRINT E$;"=";A$[X,X];A$[4*Y+28,4*Y+28];":";
320  NEXT Y
330  PRINT
340  NEXT X
350  PRINT E$;"=);";" -1---2---3---4---5---6---7---8-";
360  PRINT E$;"=* ";"Warp Engines"
370  PRINT E$;"=+ ";"S.R.Sensors"
380  PRINT E$;"=, ";"L.R.Sensors"
390  PRINT E$;"=- ";"Phasers"
400  PRINT E$;"=. ";"Photon Tubes"
410  PRINT E$;"=/ ";"---------------------------"
420  PRINT E$;"=0 ";"Energy"
430  PRINT E$;"=1 ";"Dates Left"
440  PRINT E$;"=2 ";"Quadrant"
450  PRINT E$;"=3 ";"Sector"
460  PRINT E$;"=4 ";"Condition"
470  PRINT E$;"=5 ";"Torpedoes"
480  PRINT E$;"=6 ";"Shields"
490  PRINT E$;"=7 ";"Klingons"
500  PRINT E$;"= [";" I-------------------"
510  PRINT E$;"=![";" I  4    3    2"
520  PRINT E$;"=";A$[3,3];"[";" I    \  !  /"
530  PRINT E$;"=#[";" I      \!/"
540  PRINT E$;"=$[";" I  5 ------- 1"
550  PRINT E$;"=%[";" I      /!\"
560  PRINT E$;"=&[";" I    /  !  \"
570  PRINT E$;"='[";" I  6    7    8"
580  PRINT E$;"=([";" I    Course"
590  PRINT E$;"=)[";" I-------------------"
600  FOR X=11 TO 24
610  PRINT E$;"=";A$[X,X];";";"I";
620  NEXT X
630  PRINT
640  PRINT E$;"=";A$[24,24];A$[59,59];"Earth time: "
650  PRINT E$;"("
660  LET I=0
670  MAT S=ZER
680  MAT C=ZER
690  MAT A=ZER
700  MAT E=ZER
710  MAT F=ZER
720  MAT G=ZER
730  MAT H=ZER
740  MAT R=CON
750  MAT R=(10)*R
760  MAT K=ZER
770  MAT L=ZER
780  LET E=3000
790  T1=10
800  K=S=F=R=B=0
810  LET D=INT(100*RND(0)+1)
820  P=INT(100*RND(0)+1)
830  FOR X=1 TO 8
840  FOR Y=1 TO 8
850  IF RND(0)<.75 THEN 890
860  K[X,Y]=INT(5*RND(0))
870  K=K[X,Y]+K
880  LET L[X,Y]=L[X,Y]+100*K[X,Y]
890  LET B[X,Y]=INT(1*RND(0)+.1)
900  B=B[X,Y]+B
910  L[X,Y]=L[X,Y]+10*B[X,Y]
920  S[X,Y]=INT(9*RND(0))
930  R=S[X,Y]+R
940  L[X,Y]=L[X,Y]+S[X,Y]
950  NEXT Y
960  NEXT X
970  X=INT(8*RND(0)+1)
980  Y=INT(8*RND(0)+1)
990  X1=INT(8*RND(0)+1)
1000  Y1=INT(8*RND(0)+1)
1010  PRINT E$;";"
1020  LET T9=0
1030  MAT A=ZER
1040  A[X1,Y1]=1
1050  FOR T0=1 TO K[X,Y]
1060  X2=INT(8*RND(0)+1)
1070  Y2=INT(8*RND(0)+1)
1080  IF A[X2,Y2]#0 THEN 1060
1090  E[T0]=X2
1100  F[T0]=Y2
1110  C[T0]=INT(100*RND(0)+1)
1120  A[X2,Y2]=2
1130  NEXT T0
1140  FOR T0=1 TO B[X,Y]
1150  LET X2=INT(8*RND(0)+1)
1160  LET Y2=INT(8*RND(0)+1)
1170  IF A[X2,Y2]#0 THEN 1140
1180  A[X2,Y2]=3
1190  NEXT T0
1200  FOR T0=1 TO S[X,Y]
1210  X2=INT(8*RND(0)+1)
1220  Y2=INT(8*RND(0)+1)
1230  IF A[X2,Y2]#0 THEN 1210
1240  LET A[X2,Y2]=4
1250  NEXT T0
1260  GOSUB 6240
1270  IF T9=1 THEN 2730
1280  IF T9=2 THEN 5350
1290  PRINT E$;";"
1300  GOSUB 6440
1310  GOSUB 6490
1320  GOSUB 6890
1330  Z=11
1340  FOR T=11 TO Z
1350  PRINT E$;"=";A$[T,T];"<";E$;"T";
1360  NEXT T
1370  LET D=D-(INT(10*RND(0)+1)+.5)/10
1380  IF D>0 THEN 1420
1390  PRINT E$;"=+=";"Time's up!";
1400  PRINT E$;"=,=";"Try again.";
1410  GOTO 670
1420  IF I=0 THEN 1450
1430  PRINT LIN(0);E$;"=+=";"Cloaking device DRAINING"
1440  LET E=E-100
1450  IF E>1 THEN 1480
1460  PRINT LIN(0);E$;"=+=";"The ENTERPRISE is DEAD in space!"
1470  GOTO 1400
1480  IF S >= 0 THEN 1510
1490  PRINT LIN(0);E$;"=+=";"The ENTERPRISE has been DESTROYED!"
1500  GOTO 1400
1510  GOSUB 6600
1520  PRINT
1530  LET Q9=TIM(1)+TIM(0)/100
1540  LET T$="A.M."
1550  IF Q9<13 THEN 1580
1560  LET Q9=Q9-12
1570  LET T$="P.M."
1580  IF Q9<12 THEN 1600
1590  LET T$="P.M."
1600  LET Q8=Q9-INT(Q9)
1610  LET Q8=Q8*100
1620  IF Q8<10 THEN 1650
1630  PRINT  USING 120;E$,A$[24,24],A$[71,71],Q9,Q8,T$
1640  GOTO 1660
1650  PRINT  USING 130;E$,A$[24,24],A$[71,71],Q9,Q8,T$
1660  PRINT LIN(0);E$;"=+=";"Command: ";E$;"T";
1670  C=99
1680  ENTER 5,F1,C
1690  GOTO C+1 OF 2160,3360,3430,3560,3840,4430,4550,4620
1700  GOTO C-7 OF 5450,5580,5690,5780,5820,5930,5990,6100
1710  PRINT E$;"=+=";E$;"T";"Commands:"
1720  PRINT E$;"=,=";"0-Warp engine control";
1730  PRINT E$;"=-=";"1-S.R. Sensors";
1740  PRINT E$;"=.=";"2-L.R. Sensors";
1750  PRINT E$;"=/=";"3-Phasers"
1760  PRINT E$;"=0=";"4-Photon tubes";
1770  PRINT E$;"=1=";"5-Shield control";
1780  PRINT E$;"=2=";"6-Klingon field"
1790  PRINT E$;"=3=";"7-Library computer"
1800  PRINT E$;"=,V";"8-EXP. Time warp transfer";
1810  PRINT E$;"=-V";"9-SUPER L.R. Senors";
1820  PRINT E$;"=.V";"10-Impulse engines"
1830  PRINT E$;"=/V";"11-Cloaking device";
1840  PRINT E$;"=0V";"12-EXP. Death ray"
1850  PRINT E$;"=1V";"13-Abort mission";
1860  PRINT E$;"=2V";"14-Super-Idiot command";
1870  PRINT E$;"=3V";"15-*** COMMAND 15 ***";
1880  LET Z=20
1890  ENTER 30,F2,C
1900  IF F1#-256 THEN 1340
1910  LET T=INT(5*RND(0)+1)
1920  LET R[T]=R[T]-INT(R[T]*RND(0))
1930  GOSUB 6440
1940  IF R[2]>1 THEN 2000
1950  FOR T=2 TO 9
1960  PRINT E$;"=";A$[T,T];"!";E$;"T";
1970  IF T#5 THEN 1990
1980  PRINT E$;"=$!";"S.R. Sensors OUT!!"
1990  NEXT T
2000  IF R[3]>1 THEN 2040
2010  FOR T=2 TO 9
2020  PRINT E$;"=";A$[T,T];A$[28,28];"                        "
2030  NEXT T
2040  FOR T=1 TO 9
2050  IF I=1 THEN 1340
2060  IF F=1 THEN 1340
2070  IF C[T] <= 0 THEN 2120
2080  LET H=INT(C[T]*RND(0)+1)
2090  LET S=S-H
2100  PRINT  USING 170;E$,A$[22,22],A$[30,30],H,E[T],F[T]
2110  ENTER 3,F2,C
2120  NEXT T
2130  GOSUB 6850
2140  LET Z=22
2150  GOTO 1340
2160  IF R[1]>1 THEN 2210
2170  PRINT LIN(0);E$;"=,=";"Warp engines are DAMAGED!"
2180  PRINT E$;"=-=";"Try impulse engines."
2190  LET Z=14
2200  GOTO 1340
2210  PRINT LIN(0);E$;"=,=";"Course (1-9): ";E$;"T";
2220  INPUT C
2230  PRINT LIN(0);E$;"=-=";"Warp factor (0-8): ";E$;"T";
2240  INPUT W
2250  LET W=ABS(W)
2260  LET Z=14
2270  LET C=ABS(C)
2280  IF C=0 OR W=0 THEN 1340
2290  IF C >= 9 OR W>8 THEN 2210
2300  IF W<R[1] THEN 2330
2310  PRINT E$;"=.=";"Warp engines can't take it."
2320  GOTO 2230
2330  LET C=(C-1)*2*3.14159/8
2340  LET X4=X6=X1
2350  LET Y4=Y6=Y1
2360  LET X5=X
2370  LET Y5=Y
2380  FOR T=.1 TO INT(W)+(W-INT(W))/.8 STEP .125
2390  LET F=0
2400  LET X6=-SIN(C)+X6
2410  LET X3=INT(X6+.5)
2420  LET Y6=COS(C)+Y6
2430  LET Y3=INT(Y6+.5)
2440  LET E=E-T*5+2.75
2450  IF X3<1 THEN 2500
2460  IF X3>8 THEN 2530
2470  IF Y3<1 THEN 2560
2480  IF Y3>8 THEN 2590
2490  GOTO 2790
2500  LET X=X-1
2510  LET X3=X1=X6=X4=8
2520  GOTO 2610
2530  LET X=X+1
2540  LET X3=X1=X6=X4=1
2550  GOTO 2610
2560  LET Y=Y-1
2570  LET Y3=Y1=Y6=Y4=8
2580  GOTO 2610
2590  LET Y=Y+1
2600  LET Y3=Y1=Y6=Y4=1
2610  IF X3<1 OR X3>8 OR Y3<1 OR Y3>8 THEN 2450
2620  IF  NOT (X<1 OR X>8 OR Y<1 OR Y>8) THEN 2650
2630  PRINT LIN(0);E$;"=+=";"You flew OUT of the GALAXY!"
2640  GOTO 670
2650  MAT A=ZER
2660  MAT E=ZER
2670  MAT F=ZER
2680  MAT C=ZER
2690  LET T9=1
2700  LET T8=0
2710  GOTO 1040
2720  IF R[2] <= 1 THEN 2740
2730  GOSUB 6890
2740  LET Z=17
2750  GOSUB 6620
2760  GOSUB 6670
2770  GOTO 3230
2780  IF T8=1 THEN 5350
2790  IF A[X3,Y3]=0 THEN 3190
2800  IF A[X3,Y3]=1 THEN 3270
2810  IF A[X3,Y3]#2 THEN 2920
2820  FOR T2=1 TO 9
2830  IF C[T2] <= 0 THEN 2850
2840  IF X3=E[T2] AND Y3=F[T2] THEN 2870
2850  NEXT T2
2860  STOP
2870  LET S=S-C[T2]
2880  LET C[T2]=0
2890  GOSUB 6980
2900  GOSUB 6850
2910  GOTO 3190
2920  IF A[X3,Y3]#3 THEN 3040
2930  LET B[X,Y]=B[X,Y]-1
2940  LET B=B-1
2950  PRINT LIN(0);E$;"=/=";"*** Starbase DESTROYED ***"
2960  LET Z=16
2970  LET S=0
2980  LET L[X,Y]=L[X,Y]-10
2990  GOTO 3190
3000  GOSUB 7080
3010  GOSUB 6980
3020  GOSUB 6850
3030  GOTO 3190
3040  IF A[X3,Y3]#4 THEN 2860
3050  PRINT LIN(0);E$;"=/=";"*** Hit a STAR ***"
3060  FOR T0=1 TO 5
3070  LET R[T0]=R[T0]-4
3080  IF R[T0]>0 THEN 3100
3090  LET R[T0]=1
3100  NEXT T0
3110  IF R[2] <= 1 THEN 1950
3120  IF R[3] <= 1 THEN 2010
3130  GOSUB 6440
3140  LET S=0
3150  LET E=E-500
3160  LET Z=16
3170  GOSUB 6850
3180  GOTO 1340
3190  LET X1=X3
3200  LET Y1=Y3
3210  PRINT  USING 100;E$,A$[X4+1,X4+1],A$[Y4*3,Y4*3],F$[1,3]
3220  PRINT  USING 100;E$,A$[X3+1,X3+1],A$[Y3*3,Y3*3],F$[4,6]
3230  LET A[X4,Y4]=0
3240  LET A[X3,Y3]=1
3250  LET X4=X3
3260  LET Y4=Y3
3270  NEXT T
3280  GOSUB 6580
3290  GOSUB 6640
3300  GOSUB 6240
3310  GOSUB 6670
3320  GOSUB 6850
3330  LET T9=0
3340  GOSUB 7080
3350  GOTO 1340
3360  IF R[1]>1 THEN 3400
3370  PRINT LIN(0);E$;"=,=";"S.R. Sensors are OUT, best dock."
3380  LET Z=13
3390  GOTO 1910
3400  GOSUB 6890
3410  LET Z=12
3420  GOTO 1340
3430  IF R[3]>1 THEN 3460
3440  PRINT LIN(0);E$;"L.R. Sensors are OUT, try S.R. Sensors."
3450  GOTO 3380
3460  PRINT
3470  FOR X3=X-1 TO X+1
3480  FOR Y3=Y-1 TO Y+1
3490  IF X3>8 OR X3<1 THEN 3530
3500  IF Y3>8 OR Y3<1 THEN 3520
3510  PRINT  USING 180;E$,A$[X3+1,X3+1],A$[4*Y3+25,4*Y3+25],L[X3,Y3]
3520  NEXT Y3
3530  NEXT X3
3540  LET Z=12
3550  GOTO 1340
3560  IF R[4]>1 THEN 3600
3570  PRINT LIN(0);E$;"=,=";"Phasers OUT!  Try Photon Tubes."
3580  LET Z=13
3590  GOTO 1910
3600  PRINT LIN(0);E$;"=,=";"Phasers locked on target(s)."
3610  PRINT E$;"=-=";"Units to Phasers: ";
3620  INPUT P
3630  LET Z=14
3640  IF P=0 THEN 1340
3650  LET P=ABS(P)
3660  LET E=E-P
3670  IF E<1 THEN 1460
3680  FOR T=1 TO 9
3690  IF C[T] <= 0 THEN 3790
3700  LET H=(SQR(ABS(P^2-C[T]^2))+1)/(SQR((E[T]-X1)^2+(F[T]-Y1)^2)+1)
3710  LET C[T]=C[T]-H
3720  LET P=P-H
3730  PRINT LIN(0);E$;"=.=";" ";H;"Units hit KLINGON at";E[T];",";F[T]
3740  PRINT E$;"=/=";E$;"T"
3750  IF C[T]>0 THEN 3790
3760  GOSUB 6980
3770  PRINT  USING 100;E$,A$[E[T]+1,E[T]+1],A$[F[T]*3,F[T]*3],F$[1,3]
3780  A[E[T],F[T]]=0
3790  NEXT T
3800  GOSUB 6580
3810  LET Z=16
3820  IF I=0 THEN 2040
3830  GOTO 1340
3840  IF R[5]>1 THEN 3880
3850  PRINT LIN(0);E$;"=,=";"Photon Tubes DAMAGED!  Try Phasers."
3860  LET Z=13
3870  GOTO 1910
3880  IF T1>0 THEN 3910
3890  PRINT LIN(0);E$;"=,=";"OUT OF TORPEDOES! TRY PHASERS."
3900  GOTO 3860
3910  PRINT LIN(0);E$;"=,=";"Torpedoe course (1-9): ";E$;"T";
3920  INPUT C
3930  IF C=0 THEN 1340
3940  LET T1=T1-1
3950  LET T=C9=0
3960  LET C=(C-1)*2*3.14159/8
3970  LET Y3=INT(T*10*COS(C)+Y1+.5)
3980  LET X3=INT(T*10*-SIN(C)+X1+.5)
3990  IF X3>8 OR Y3>8 OR X3<1 OR Y3<1 THEN 4120
4000  IF A[X3,Y3]#0 THEN 4140
4010  LET C9=C9+1
4020  LET G[C9]=X3
4030  LET H[C9]=Y3
4040  LET P=INT(((10-R[2])*10+T1*8)*RND(0)+.5)
4050  IF P>5 THEN 4090
4060  PRINT  USING 100;E$,A$[X3+1,X3+1],A$[Y3*3,Y3*3],F$[19,21]
4070  PRINT LIN(0);E$;"=-=";"KLINGON intersected torpedoe!"
4080  GOTO 4320
4090  PRINT  USING 100;E$,A$[X3+1,X3+1],A$[Y3*3,Y3*3],F$[16,17]
4100  LET T=T+.1
4110  GOTO 3970
4120  PRINT LIN(0);E$;"=-=";"Missed!"
4130  GOTO 4320
4140  IF A[X3,Y3]=1 THEN 4100
4150  IF A[X3,Y3]#2 THEN 4230
4160  PRINT  USING 100;E$,A$[X3+1,X3+1],A$[Y3*3,Y3*3],F$[1,3]
4170  FOR T2=1 TO 9
4180  IF C[T2] <= 0 THEN 4200
4190  IF E[T2]=X3 AND F[T2]=Y3 THEN 4210
4200  NEXT T2
4210  LET C[T2]=0
4220  GOSUB 6980
4230  IF A[X3,Y3]#3 THEN 4300
4240  PRINT  USING 100;E$,A$[X3+1,X3+1],A$[Y3*3,Y3*3],F$[1,3]
4250  PRINT LIN(0);E$;"=/=";"*** Starbase DESTROYED ***"
4260  LET B=B-1
4270  LET B[X,Y]=B[X,Y]-1
4280  LET L[X,Y]=L[X,Y]-10
4290  PRINT  USING 180;E$,A$[X+1,X+1],A$[4*Y+25,4*Y+25],L[X,Y]
4300  IF A[X3,Y3]#4 THEN 4320
4310  PRINT LIN(0);E$;"=/=";"You can't destroy a STAR, silly."
4320  FOR C=1 TO C9
4330  PRINT  USING 100;E$,A$[G[C]+1,G[C]+1],A$[H[C]*3,H[C]*3],F$[1,3]
4340  NEXT C
4350  PRINT
4360  GOSUB 6830
4370  LET Z=16
4380  IF X3<1 OR X3>8 OR Y3<1 OR Y3>8 THEN 4410
4390  IF A[X3,Y3]=4 THEN 1340
4400  LET A[X3,Y3]=0
4410  IF I=0 THEN 2040
4420  GOTO 1340
4430  PRINT E$;"=.=";"Energy availble: ";E;" units"
4440  PRINT E$;"=/=";"Number of units to shields";
4450  INPUT E1
4460  LET S=S+E1
4470  LET E=E-E1
4480  IF E <= 0 THEN 1460
4490  IF S<0 THEN 1490
4500  GOSUB 6580
4510  GOSUB 6670
4520  GOSUB 6850
4530  LET Z=16
4540  GOTO 1340
4550  FOR T=1 TO 9
4560  IF C[T] <= 0 THEN 4580
4570  PRINT LIN(0);E$;"=";A$[T+12,T+12];"=";C[T];"units at ";E[T];",";F[T]
4580  NEXT T
4590  LET Z=12+T
4600  ENTER 60,F1,C
4610  GOTO 1340
4620  PRINT LIN(0);E$;"=,=";"Computer awaiting command: ";E$;"T";
4630  LET C=99
4640  ENTER 15,F1,C
4650  LET C=INT(ABS(C))
4660  LET Z=13
4670  IF C=0 THEN 1340
4680  GOTO C OF 4730,4810,5160
4690  PRINT E$;"=.=";"1-Status report"
4700  PRINT E$;"=/=";"2-Phton Tubes data"
4710  PRINT E$;"=0=";"3-Course plotter"
4720  GOTO 4620
4730  PRINT LIN(0);E$;"=*,";E$;"Y"
4740  PRINT E$;"=1=";"Klingons: ";K
4750  PRINT E$;"=2=";"Starbases: ";B
4760  PRINT E$;"=3=";"Stars: ";R
4770  GOSUB 6440
4780  GOSUB 6490
4790  LET Z=20
4800  GOTO 1340
4810  PRINT E$;"=-=";E$;"T";E$;"=.=";E$;"T";E$;"=/=";E$;"T";E$;"=0=";E$;"T"
4820  FOR T=1 TO 9
4830  IF C[T] <= 0 THEN 5080
4840  Z1=F[T]-Y1
4850  Z2=X1-E[T]
4860  IF Z1<0 THEN 4960
4870  IF Z2<0 THEN 5020
4880  IF Z1>0 THEN 4900
4890  IF Z2=0 THEN 4980
4900  C1=1
4910  IF ABS(Z2) <= ABS(Z1) THEN 4940
4920  C=C1+(((ABS(Z2)-ABS(Z1))+ABS(Z2))/ABS(Z2))
4930  GOTO 5070
4940  C=C1+(ABS(Z2)/ABS(Z1))
4950  GOTO 5070
4960  IF Z2>0 THEN 5000
4970  IF Z1=0 THEN 5020
4980  C1=5
4990  GOTO 4910
5000  C1=3
5010  GOTO 5030
5020  C1=7
5030  IF ABS(Z2) >= ABS(Z1) THEN 5060
5040  C=C1+(((ABS(Z1)-ABS(Z2))+ABS(Z1))/ABS(Z1))
5050  GOTO 5070
5060  C=C1+(ABS(Z1)/ABS(Z2))
5070  PRINT E$;"=";A$[12+T,12+T];"=";"Suggested course for";E[T];",";F[T];":";C
5080  NEXT T
5090  Z=T+12
5100  ENTER 10,F1,C
5110  GOTO 1340
5120  LET C=1
5130  GOTO 5070
5140  LET C=5
5150  GOTO 5070
5160  PRINT E$;"=4=";"Where to (quadrant,sector): ";E$;"T";
5170  P=0
5180  INPUT X3,Y3,X4,Y4
5190  IF X3+Y3+X4+Y4=0 THEN 1350
5200  IF X3<1 OR X3>8 OR Y3<1 OR Y3>8 THEN 5160
5210  IF X4<1 OR X4>8 OR Y4<1 OR Y4>8 THEN 5160
5220  LET A[X1,Y1]=0
5230  LET E=E-(SQR((X3-X)^2+(Y3-Y)^2)*8+SQR((X4-X1)^2+(Y4-Y1)^2))*100
5240  LET X1=X4
5250  LET Y1=Y4
5260  LET X=X3
5270  LET Y=Y3
5280  LET T9=2
5290  MAT A=ZER
5300  MAT C=ZER
5310  MAT E=ZER
5320  MAT F=ZER
5330  LET F=0
5340  GOTO 1040
5350  GOSUB 6580
5360  GOSUB 6240
5370  GOSUB 6620
5380  GOSUB 6640
5390  GOSUB 6670
5400  GOSUB 6890
5410  LET Z=21
5420  IF P#0 THEN 1340
5430  IF I=0 THEN 2040
5440  GOTO 1340
5450  PRINT E$;"=,=";"This is still EXPERIMENTAL"
5460  PRINT E$;"=4=";"Where to (quadrant,sector): ";E$;"T";
5470  INPUT X3,Y3,X4,Y4
5480  IF X3+Y3+X4+Y4=0 THEN 1350
5490  LET P=INT(100*RND(0)+1)
5500  IF P>15 THEN 5550
5510  LET E=9000
5520  LET S=9000
5530  LET T1=90
5540  GOTO 5200
5550  PRINT E$;"=5=";"Transfer WASN'T successful!!"
5560  LET Z=22
5570  GOTO 650
5580  IF F=1 THEN 5610
5590  PRINT LIN(0);E$;"=,=";"The ENTERPRISE has to be DOCKED for this."
5600  GOTO 1340
5610  FOR T=X-2 TO X+2
5620  FOR T2=Y-2 TO Y+2
5630  IF T<1 OR T>8 THEN 5670
5640  IF T2<1 OR T2>8 THEN 5660
5650  PRINT  USING 180;E$,A$[T+1,T+1],A$[T2*4+25,T2*4+25],L[T,T2]
5660  NEXT T2
5670  NEXT T
5680  GOTO 1340
5690  PRINT E$;"=,=";"course (1-9): ";E$;"T";
5700  INPUT C
5710  PRINT E$;"=-=";"Warp factor (0-.2): ";E$;"T";
5720  INPUT W
5730  LET W=ABS(W)
5740  LET C=ABS(C)
5750  IF W>.2 THEN 5710
5760  LET E=E-100
5770  GOTO 2280
5780  LET I=1
5790  LET E=E-1000
5800  GOSUB 6670
5810  GOTO 1340
5820  PRINT E$;"=,=";"This is still EXPERIMENTAL"
5830  IF RND(0)<.333 THEN 5860
5840  PRINT E$;"*";"The Death Ray has DESTROYED the ENTERPRISE!"
5850  STOP
5860  FOR T=1 TO K[X,Y]
5870  IF C[T] <= 0 THEN 5910
5880  LET C[T]=0
5890  PRINT  USING 100;E$,A$[E[T]+1,E[T]+1],A$[F[T]*3,F[T]*3],F$[1,3]
5900  GOSUB 6970
5910  NEXT T
5920  GOTO 1340
5930  PRINT LIN(0);E$;"=,=";"Are you SURE you want to do THIS";
5940  INPUT S$
5950  IF S$[1,1]="N" THEN 1340
5960  PRINT E$;"*";"COWARD!!!!! "
5970  PRINT "There are still ";K;"KLINGONS left"
5980  STOP
5990  FOR T=1 TO 8
6000  FOR T2=1 TO 8
6010  IF K[T,T2]=0 THEN 6050
6020  LET K=K-K[T,T2]+9
6030  LET K[T,T2]=9
6040  LET L[T,T2]=L[T,T2]-INT(L[T,T2]/100)*100+900
6050  NEXT T2
6060  NEXT T
6070  PRINT E$;";";E$;"=+=";"There are now NINE (9) KLINGONS per quadrant!!"
6080  ENTER 3,F2,C
6090  GOTO 1010
6100  LET C=INT(100*RND(0))
6110  IF C <= 15 THEN 1690
6120  LET C=C-15
6130  FOR T=1 TO C
6140  LET X2=INT(8*RND(0)+1)
6150  LET Y2=INT(8*RND(0)+1)
6160  IF X2=X AND Y2=Y THEN 6140
6170  IF K[X2,Y2]=0 THEN 6110
6180  LET K[X2,Y2]=K[X2,Y2]-1
6190  LET K=K-1
6200  LET L[X2,Y2]=L[X2,Y2]-100
6210  LET E=E-100*ABS(T-C)
6220  NEXT T
6230  GOTO 1010
6240  FOR S9=X1-1 TO X1+1
6250  FOR S8=Y1-1 TO Y1+1
6260  IF S9<1 OR S9>8 THEN 6300
6270  IF S8<1 OR S8>8 THEN 6290
6280  IF A[S9,S8]=3 THEN 6320
6290  NEXT S8
6300  NEXT S9
6310  RETURN
6320  LET F=1
6330  Q=3000+E-INT((E+1)/6999)*6999
6340  LET E=Q
6350  LET S=I=0
6360  Q=10+T1-INT((T1+1)/89)*89
6370  LET T1=Q
6380  FOR T0=1 TO 5
6390  LET R[T0]=10
6400  NEXT T0
6410  GOSUB 6440
6420  GOSUB 6490
6430  RETURN
6440  PRINT
6450  FOR T0=1 TO 5
6460  PRINT E$;"=";A$[10+T0,10+T0];".";E$;"T";C$[1,R[T0]]
6470  NEXT T0
6480  RETURN
6490  GOSUB 6580
6500  GOSUB 6600
6510  GOSUB 6620
6520  GOSUB 6640
6530  GOSUB 6670
6540  GOSUB 6830
6550  GOSUB 6850
6560  GOSUB 6870
6570  RETURN
6580  PRINT  USING 160;E$,A$[17,17],A$[15,15],E
6590  RETURN
6600  PRINT  USING 110;E$,A$[18,18],A$[15,15],D
6610  RETURN
6620  PRINT  USING 150;E$,A$[19,19],A$[15,15],X,Y
6630  RETURN
6640  PRINT  USING 150;E$,A$[20,20],A$[15,15],X1,Y1
6650  RETURN
6660  GOSUB 6240
6670  IF F=0 THEN 6700
6680  LET S$="Docked"
6690  GOTO 6810
6700  IF I#1 THEN 6730
6710  LET S$="Cloakd"
6720  GOTO 6810
6730  IF K[X,Y]=0 THEN 6800
6740  IF S>500 THEN 6770
6750  LET S$="RED!!!"
6760  GOTO 6810
6770  LET S$="   RED"
6780  GOTO 6810
6790  LET S$="Yellow"
6800  LET S$=" GREEN"
6810  PRINT LIN(0);E$;"=4/";S$
6820  RETURN
6830  PRINT  USING 160;E$,A$[22,22],A$[15,15],T1
6840  RETURN
6850  PRINT  USING 110;E$,A$[23,23],A$[15,15],S
6860  RETURN
6870  PRINT  USING 160;E$,A$[24,24],A$[15,15],K
6880  RETURN
6890  FOR X2=1 TO 8
6900  PRINT  USING 140;E$,A$[X2+1,X2+1],A$[1,1],E$
6910  FOR Y2=1 TO 8
6920  IF A[X2,Y2]=0 THEN 6940
6930  PRINT  USING 100;E$,A$[X2+1,X2+1],A$[Y2*3,Y2*3],F$[A[X2,Y2]*3+1,A[X2,Y2]*3+3]
6940  NEXT Y2
6950  NEXT X2
6960  RETURN
6970  PRINT
6980  PRINT LIN(0);E$;"=/=";"*** KLINGON DESTROYED ***"
6990  LET Z=16
7000  LET K=K-1
7010  IF K>0 THEN 7050
7020  PRINT E$;"*";"All the KLINGONS have been DESTROYED!!!!"
7030  PRINT "The galaxy is SAVED!!!"
7040  STOP
7050  LET K[X,Y]=K[X,Y]-1
7060  LET L[X,Y]=L[X,Y]-100
7070  GOSUB 6870
7080  PRINT  USING 180;E$,A$[X+1,X+1],A$[4*Y+25,4*Y+25],L[X,Y]
7090  RETURN
7100  END
