10 COM Z$[72],G[8,8],C[9,2],K[3,3],N[3],Z[8,8],D[8] 20 COM C$[6],D$[72],E$[24],A$[3],Q$[72],R$[72],S$[48],X$[8] 30 COM T,T0,T7,T9,D0,E,E0,P,P0,S,S1,S2,S3,S8,S9,H,H8,Q1,Q2 40 COM Z1,Z2,Z3,R1,R2,C1,C2,W1,X,Y,X1,X2,A,N,B3,B9,K3,K7,K9,O9,O8 50 REM STTR1B 200 DEF FND(D)=SQR((K[I,1]-S1)^2+(K[I,2]-S2)^2) 210 O9=2 220 GOTO O8 OF 3970,4000,2330,2530,2800,3460,3560,4630,3920 230 O9=1 1270 CHAIN "STTR1A" 2330 IF D[3] >= 0 THEN 2370 2340 PRINT "LONG RANGE SENSORS ARE INOPERABLE" 2360 GOTO 1270 2370 PRINT "LONG RANGE SENSOR SCAN FOR QUADRANT"; 2371 Z8=Q1 2372 Z9=Q2 2373 GOSUB 9000 2374 PRINT 2380 PRINT "-------------------" 2390 FOR I=Q1-1 TO Q1+1 2400 MAT N=ZER 2410 FOR J=Q2-1 TO Q2+1 2420 IF I<1 OR I>8 OR J<1 OR J>8 THEN 2460 2430 N[J-Q2+2]=G[I,J] 2440 IF D[7]<0 THEN 2460 2450 Z[I,J]=G[I,J] 2460 NEXT J 2470 PRINT N[1]":"N[2]":"N[3] 2480 PRINT "-------------------" 2490 NEXT I 2500 GOTO 1270 2530 IF K3 <= 0 THEN 3670 2540 IF D[4] >= 0 THEN 2570 2550 PRINT "PHASER CONTROL IS DISABLED" 2560 GOTO 1270 2570 IF D[7] >= 0 THEN 2590 2580 PRINT "COMPUTER FAILURE HAMPERS ACCURACY" 2590 PRINT "PHASERS LOCKED ON TARGET. ENERGY AVAILABLE ="INT(E) 2600 PRINT "NUMBER OF UNITS TO FIRE"; 2610 INPUT X 2620 IF X <= 0 THEN 1270 2630 IF E-X<0 THEN 2570 2640 E=E-X 2650 GOSUB 3790 2660 IF D[7] >= 0 THEN 2680 2670 X=X*RND(1) 2680 FOR I=1 TO 3 2690 IF K[I,3] <= 0 THEN 2770 2700 H=(X/K3/FND(0))*(2*RND(1)) 2710 K[I,3]=K[I,3]-H 2720 PRINT INT(H)"UNIT HIT ON KLINGON AT SECTOR"; 2721 Z8=K[I,1] 2722 Z9=K[I,2] 2723 GOSUB 9000 2725 PRINT " ("INT(K[I,3])"LEFT )" 2740 IF K[I,3]>0 THEN 2770 2750 GOSUB 3690 2760 IF K9 <= 0 THEN 4040 2770 NEXT I 2780 IF E<0 THEN 4000 2790 GOTO 1270 2800 IF D[5] >= 0 THEN 2830 2810 PRINT "PHOTON TUBES ARE NOT OPERATIONAL" 2820 GOTO 1270 2830 IF P>0 THEN 2860 2840 PRINT "ALL PHOTON TORPEDOES EXPENDED" 2850 GOTO 1270 2860 PRINT "TORPEDO COURSE (1-9)"; 2870 INPUT C1 2880 IF C1=0 THEN 1270 2890 IF C1<1 OR C1 >= 9 THEN 2860 2895 C2=INT(C1) 2900 X1=C[C2,1]+(C[C2+1,1]-C[C2,1])*(C1-C2) 2910 X2=C[C2,2]+(C[C2+1,2]-C[C2,2])*(C1-C2) 2920 X=S1 2930 Y=S2 2940 P=P-1 2950 PRINT "TORPEDO TRACK:" 2960 X=X+X1 2970 Y=Y+X2 2980 IF X<.5 OR X >= 8.5 OR Y<.5 OR Y >= 8.5 THEN 3420 2990 PRINT INT(X);INT(Y) 3010 A$=" " 3020 Z1=X 3030 Z2=Y 3040 GOSUB 5680 3050 IF Z3=0 THEN 3070 3060 GOTO 2960 3070 A$="+++" 3080 Z1=X 3090 Z2=Y 3100 GOSUB 5680 3110 IF Z3=0 THEN 3220 3120 PRINT "*** KLINGON DESTROYED ***" 3130 K3=K3-1 3140 K9=K9-1 3150 IF K9 <= 0 THEN 4040 3160 FOR I=1 TO 3 3170 IF INT(X+.5) <> K[I,1] THEN 3190 3180 IF INT(Y+.5)=K[I,2] THEN 3200 3190 NEXT I 3200 K[I,3]=0 3210 GOTO 3360 3220 A$=" * " 3230 Z1=X 3240 Z2=Y 3250 GOSUB 5680 3260 IF Z3=0 THEN 3290 3270 PRINT "YOU CAN'T DESTROY STARS SILLY" 3280 GOTO 3420 3290 A$=">!<" 3300 Z1=X 3310 Z2=Y 3320 GOSUB 5680 3330 IF Z3=0 THEN 2960 3340 PRINT "*** STAR BASE DESTROYED *** .......CONGRATULATIONS" 3350 B3=B3-1 3360 A$=" " 3370 Z1=INT(X+.5) 3380 Z2=INT(Y+.5) 3390 GOSUB 5510 3400 G[Q1,Q2]=K3*100+B3*10+S3 3410 GOTO 3430 3420 PRINT "TORPEDO MISSED" 3430 GOSUB 3790 3440 IF E<0 THEN 4000 3450 GOTO 1270 3460 IF D[7] >= 0 THEN 3490 3470 PRINT "SHIELD CONTROL IS NON-OPERATIONAL" 3480 GOTO 1270 3490 PRINT "ENERGY AVAILABLE ="INT(E+S) 3492 PRINT "NUMBER OF UNITS TO SHIELDS"; 3500 INPUT X 3510 IF X <= 0 THEN 1270 3520 IF E+S-X<0 THEN 3490 3530 E=E+S-X 3540 S=X 3550 GOTO 1270 3560 IF D[6] >= 0 THEN 3590 3570 PRINT "DAMAGE CONTROL REPORT IS NOT AVAILABLE" 3580 GOTO 1270 3590 PRINT 3600 PRINT "DEVICE STATE OF REPAIR" 3610 FOR R1=1 TO 8 3620 GOSUB 5610 3630 PRINT "",D[R1] 3640 NEXT R1 3650 PRINT 3660 GOTO 1270 3670 PRINT "SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT" 3680 GOTO 1270 3690 PRINT "KLINGON AT SECTOR"; 3691 Z8=K[I,1] 3692 Z9=K[I,2] 3693 GOSUB 9000 3694 PRINT "DESTROYED" 3710 K3=K3-1 3720 K9=K9-1 3730 A$=" " 3740 Z1=K[I,1] 3750 Z2=K[I,2] 3760 GOSUB 5510 3770 G[Q1,Q2]=K3*100+B3*10+S3 3780 RETURN 3790 IF C$ <> "DOCKED" THEN 3820 3800 PRINT "STAR BASE SHIELDS PROTECT THE ENTERPRISE" 3810 RETURN 3820 IF K3 <= 0 THEN 3910 3830 FOR I=1 TO 3 3840 IF K[I,3] <= 0 THEN 3900 3850 H=(K[I,3]/FND(0))*(2*RND(1)) 3860 S=S-H 3870 PRINT INT(H)"UNIT HIT ON ENTERPRISE AT SECTOR"; 3871 Z8=K[I,1] 3872 Z9=K[I,2] 3873 GOSUB 9000 3875 PRINT "("INT(S)"LEFT )" 3890 IF S<0 THEN 4000 3900 NEXT I 3910 RETURN 3920 PRINT "THE ENTERPRISE IS DEAD IN SPACE. IF YOU SURVIVE ALL IMPENDING" 3930 PRINT "ATTACK YOU WILL BE DEMOTED TO THE RANK OF PRIVATE" 3940 IF K3 <= 0 THEN 4020 3950 GOSUB 3790 3960 GOTO 3940 3970 PRINT 3980 PRINT "IT IS STARDATE"T 3990 GOTO 4020 4000 PRINT 4010 PRINT "THE ENTERPRISE HAS BEEN DESTROYED. THE FEDERATION WILL BE CONQUERED" 4020 PRINT "THERE ARE STILL"K9"KLINGON BATTLE CRUISERS" 4030 GOTO 230 4040 PRINT 4050 PRINT "THE LAST KLINGON BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED" 4060 PRINT "THE FEDERATION HAS BEEN SAVED !!!" 4070 PRINT 4080 PRINT "YOUR EFFICIENCY RATING ="((K7/(T-T0))*1000) 4090 T1=TIM(0)+TIM(1)*60 4100 PRINT "YOUR ACTUAL TIME OF MISSION ="INT((((T1-T7)*.4)-T7)*100)"MINUTES" 4110 GOTO 230 4630 IF D[8] >= 0 THEN 4660 4640 PRINT "COMPUTER DISABLED" 4650 GOTO 1270 4660 PRINT "COMPUTER ACTIVE AND AWAITING COMMAND"; 4670 INPUT A 4680 GOTO A+1 OF 4740,4830,4880 4690 PRINT "FUNCTIONS AVAILABLE FROM COMPUTER" 4700 PRINT " 0 = CUMULATIVE GALACTIC RECORD" 4710 PRINT " 1 = STATUS REPORT" 4720 PRINT " 2 = PHOTON TORPEDO DATA" 4730 GOTO 4660 4740 PRINT "COMPUTER RECORD OF GALAXY FOR QUADRANT"; 4741 Z8=Q1 4742 Z9=Q2 4743 GOSUB 9000 4744 PRINT 4770 PRINT "----- ----- ----- ----- ----- ----- ----- -----" 4780 FOR I=1 TO 8 4790 PRINT Z[I,1];Z[I,2];Z[I,3];Z[I,4];Z[I,5];Z[I,6];Z[I,7];Z[I,8] 4800 PRINT "----- ----- ----- ----- ----- ----- ----- -----" 4810 NEXT I 4820 GOTO 1270 4830 PRINT "--- STATUS REPORT ---" 4840 PRINT "NUMBER OF KLINGONS LEFT ="K9 4850 PRINT "NUMBER OF STARDATES LEFT ="(T0+T9)-T 4860 PRINT "NUMBER OF STARBASES LEFT ="B9 4870 GOTO 3560 4880 PRINT 4890 H8=0 4900 FOR I=1 TO 3 4910 IF K[I,3] <= 0 THEN 5260 4920 C1=S1 4930 A=S2 4940 W1=K[I,1] 4950 X=K[I,2] 4960 GOTO 5010 4970 PRINT "YOU ARE AT QUADRANT"; 4971 Z8=Q1 4972 Z9=Q2 4973 GOSUB 9000 4974 PRINT "SECTOR"; 4975 Z8=S1 4976 Z9=S2 4977 GOSUB 9000 4978 PRINT 4990 PRINT "SHIP'S & TARGET'S COORDINATES ARE"; 5000 INPUT C1,A,W1,X 5010 X=X-A 5020 A=C1-W1 5030 IF X<0 THEN 5130 5040 IF A<0 THEN 5190 5050 IF X>0 THEN 5070 5060 IF A=0 THEN 5150 5070 C1=1 5080 IF ABS(A) <= ABS(X) THEN 5110 5090 PRINT "DIRECTION ="C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)) 5100 GOTO 5240 5110 PRINT "DIRECTION ="C1+(ABS(A)/ABS(X)) 5120 GOTO 5240 5130 IF A>0 THEN 5170 5140 IF X=0 THEN 5190 5150 C1=5 5160 GOTO 5080 5170 C1=3 5180 GOTO 5200 5190 C1=7 5200 IF ABS(A) >= ABS(X) THEN 5230 5210 PRINT "DIRECTION ="C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)) 5220 GOTO 5240 5230 PRINT "DIRECTION ="C1+(ABS(X)/ABS(A)) 5240 PRINT "DISTANCE ="(SQR(X^2+A^2)) 5250 IF H8=1 THEN 5320 5260 NEXT I 5270 H8=0 5280 PRINT "DO YOU WANT TO USE THE CALCULATOR"; 5290 INPUT A$ 5300 IF A$="YES" THEN 4970 5310 IF A$ <> "NO" THEN 5280 5320 GOTO 1270 5380 R1=INT(RND(1)*8+1) 5390 R2=INT(RND(1)*8+1) 5400 A$=" " 5410 Z1=R1 5420 Z2=R2 5430 GOSUB 5680 5440 IF Z3=0 THEN 5380 5450 RETURN 5510 REM 5520 S8=Z1*24+Z2*3-26 5530 IF S8>72 THEN 5560 5540 Q$[S8,S8+2]=A$ 5550 GOTO 5600 5560 IF S8>144 THEN 5590 5570 R$[S8-72,S8-70]=A$ 5580 GOTO 5600 5590 S$[S8-144,S8-142]=A$ 5600 RETURN 5610 REM 5620 S8=R1*12-11 5630 IF S8>72 THEN 5660 5640 PRINT D$[S8,S8+11]; 5650 GOTO 5670 5660 PRINT E$[S8-72,S8-61]; 5670 RETURN 5680 REM 5683 Z1=INT(Z1+.5) 5686 Z2=INT(Z2+.5) 5690 S8=Z1*24+Z2*3-26 5700 Z3=0 5710 IF S8>72 THEN 5750 5720 IF Q$[S8,S8+2] <> A$ THEN 5810 5730 Z3=1 5740 GOTO 5810 5750 IF S8>144 THEN 5790 5760 IF R$[S8-72,S8-70] <> A$ THEN 5810 5770 Z3=1 5780 GOTO 5810 5790 IF S$[S8-144,S8-142] <> A$ THEN 5810 5800 Z3=1 5810 RETURN 9000 REM 9010 IF Z8<1 OR Z8>8 THEN 9040 9020 PRINT " "X$[Z8,Z8]","; 9030 GOTO 9050 9040 PRINT " *,"; 9050 IF Z9<1 OR Z9>8 THEN 9080 9060 PRINT X$[Z9,Z9]" "; 9070 GOTO 9090 9080 PRINT "* "; 9090 RETURN 9999 END