10 REM ... STTR4.ECB 20 REM ...STTR4...CONVERTED FROM 1100 BASIC 12-10-79 100 PRINT "&K&J&J" 110 PRINT TAB(15);" >B< >B< " 120 PRINT TAB(16);"* STTR4 *" 130 PRINT TAB(15);" STAR TREK " 140 PRINT TAB(16);"* UTS-700 *" 150 PRINT TAB(15);" >B< >B< " 160 PRINT : PRINT 230 PRINT : REM ... ****** START ****** 250 LET Z$=" ": REM ...*** MAIN PROGRAM STARTS HERE *** 280 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8) 290 DIM A0$(37),A1$(13),D$(132),Q$(80),R$(80),S$(80) 300 LET T=INT(RND(0)*20+20)*100: LET T0=T 310 LET A0$="HEY DUMMY YOU TRIED TO RUN INTO THE (" 320 LET A1$=") AT SECTOR " 330 LET E=3000: LET E0=E: LET D0=0: LET T9=30 360 LET S=0: LET H8=0: LET P=10: LET P0=10: LET S9=200 370 DEF FND(D)=SQR((K(I,1)-S1)*(K(I,1)-S1)+(K(I,2)-S2)*(K(I,2)-S2)) 380 LET Q1=INT(RND(0)*8)+1 390 LET Q2=INT(RND(0)*8)+1 400 LET S1=INT(RND(0)*8)+1 410 LET S2=INT(RND(0)*8)+1 420 LET T7=RND(0)+60*RND(0): REM ...RND was TIME 430 DATA 0,-1,-1,-1,0,1,1,1,0,1,1,0,-1,-1,-1,0,1,1 440 FOR J=1 TO 9: READ C(J,1): NEXT J 450 FOR J=1 TO 9: READ C(J,2): NEXT J 460 LET D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHAZER CNTRL" 470 LET D$=D$+"PHOTON TUBESSHIELD CNTRLDAMAGE CNTRLCOMPUTOR " 520 LET E$="SHIELD CNTRLCOMPUTOR " 540 LET B9=0: LET K9=0 550 FOR I=1 TO 8 560 FOR J=1 TO 8 570 LET R1=RND(0) 580 IF R1>.92 THEN 630: REM ...PUT 3 KLINGONS IN QUADRANT 590 IF R1>.84 THEN 660 600 IF R1>.76 THEN 690 ELSE LET K3=0 620 GOTO 710 630 LET K3=3 650 GOTO 700 660 LET K3=2 680 GOTO 700 690 LET K3=1 700 LET K9=K9+K3 710 LET R1=RND(0) 720 IF R1>.9 THEN 750 ELSE LET B3=0 730 GOTO 770 750 LET B3=1: REM ...1 STARBASE THIS QUADRANT 760 LET B9=B9+1 770 LET S3=INT(RND(0)*9)+1: REM ...CALC. # STARS THIS QUAD 780 LET G(I,J)=K3*100+B3*10+S3: REM ...INSERT # ,>B<,STARS 790 LET Z(I,J)=0: REM ...CLEAR MAP FOR CMD 7,0 800 NEXT J 810 NEXT I 811 IF K90 THEN 910 ELSE LET B9=1 870 IF G(6,3)>100 THEN 900 ELSE LET G(6,3)=014 890 GOTO 910 900 LET G(6,3)=(G(6,3)+010) 910 PRINT " YOU MUST DESTROY ";K9;" KLINGONS IN" 915 PRINT T9;" STARDATES WITH ";B9;" STARBASE(S)" 920 LET K3=0: LET S3=0: LET B3=0: LET Q$="" 930 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 1020 940 LET X=G(Q1,Q2)*.01: REM ...SETUP # KLINGONS,STARS, 950 LET K3=INT(X): REM ...AND STARBASES THIS 960 LET B3=INT((X-K3)*10): REM ... QUADRANT 970 LET S3=G(Q1,Q2)-INT(G(Q1,Q2)*.1)*10 980 IF K3=0 THEN 1020: REM ...NO KLINGONS THIS QUADRANT 990 IF S>200 THEN 1020: REM ...SHIELDS = 200 UNITS ENERGY 1000 PRINT " COMBAT AREA CONDITION RED" 1010 PRINT " SHIELDS DANGEROUSLY LOW" 1020 FOR I=1 TO 3: REM ...CLEAR K MATRIX 1030 LET K(I,3)=0 1040 NEXT I 1050 FOR W=1 TO 20: LET Q$=Q$+" ": NEXT W 1060 LET R$=Q$: LET S$=Q$ 1120 LET A$="": REM ...POSITION ENTERPRISE IN NEW QUADRANT 1130 LET Z1=S1: LET Z2=S2 1150 GOSUB 4690: REM ... 1160 FOR I=1 TO K3: REM ...INSERT KLINGONS IN NEW QUADRANT 1170 GOSUB 4790 1180 LET A$="" 1190 LET Z1=R1: LET Z2=R2 1210 GOSUB 4690 1220 LET K(I,1)=R1: LET K(I,2)=R2: REM ...SET UP NEW K MATRIX VALUES 1240 LET K(I,3)=S9: REM ... SHIELDS 1250 NEXT I 1260 FOR I=1 TO B3: REM ...INSERT STARBASES INTO NEW QUAD 1270 GOSUB 4790 1280 LET A$=">B<": LET Z1=R1: LET Z2=R2 1310 GOSUB 4690 1320 NEXT I 1330 FOR I=1 TO S3: REM ...INSERT STARS INTO NEW QUAD 1340 GOSUB 4790 1350 LET A$=" * ": LET Z1=R1: LET Z2=R2 1380 GOSUB 4690 1390 NEXT I 1400 GOSUB 5020: REM ...CHECK FOR DOCKING 1410 PRINT " COMMAND: (0-7): ---=>"; 1420 INPUT (1,0)A 1430 IF A<0 OR A>7 THEN 1410 ELSE PRINT 1440 ON A+1 GOTO 1450,1400,2570,2760,3060,3710,3810,4080 1450 PRINT " COURSE (1-9): ---=>"; 1460 INPUT C1 1470 IF C1=0 THEN 1410 1480 IF C1<1 OR C1>=9 THEN 1410 ELSE PRINT 1490 PRINT " WARP FACTOR (0-8): ---=>"; 1500 INPUT W1 1510 IF W1<=0 OR W1>=8 THEN 1410 1520 IF D(1)>=0 OR W1<=.3 THEN 1550 1530 PRINT " WARP ENGINES ARE DAMAGED MAXIMUM SPEED = WARP 0.3" 1540 GOTO 1450 1550 IF K3<=0 THEN 1600: REM ...ANY KLINGONS THIS QUADRANT 1560 GOSUB 5540: REM ...CALCULATE ENERGY HIT ON ENTERPRISE 1570 IF K3<=0 THEN 1600 1580 IF S<0 THEN 3990: REM ...ENTERPRISED DESTROYED 1590 GOTO 1650 1600 IF E>0 THEN 1650: REM ...ENERGY GREATER THAN ZERO 1610 IF S<1 THEN 3920: REM ...ENTERPRISE DEAD IN SPACE 1620 PRINT "YOU HAVE ";E;" UNITS OF ENERGY" 1630 PRINT " SUGGEST YOU GET SOME FROM YOUR SHIELDS WHICH HAVE ";S;" UNITS LEFT" 1640 GOTO 1410 1650 FOR I=1 TO 8 1660 IF D(I)<0 THEN LET D(I)=D(I)+1 1680 NEXT I 1690 IF RND(0)>0.2 THEN 1800: REM ...NO DAMAGE TO ENTERPRISE 1700 LET R1=INT(RND(0)*7)+1 1710 IF RND(0)>=0.5 THEN 1770 1720 LET D(R1)=D(R1)-(RND(0)*5+1) 1730 PRINT " DAMAGE CONTROL REPORT: "; 1740 GOSUB 5780 1750 PRINT " DAMAGE" 1760 GOTO 1800 1770 LET D(R1)=D(R1)+(RND(0)*5+1) 1780 GOSUB 5780 1790 PRINT " STATE OF REPAIR IMPROVED" 1800 LET N=INT(W1*8) 1810 LET A$=" " 1820 LET Z1=S1: LET Z2=S2 1840 GOSUB 4690 1850 LET E5=E 1860 LET X=S1: LET Y=S2 1880 LET X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) 1890 LET X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)) 1900 FOR I=1 TO N: REM ...COURSE 1 2 3 4 5 6 7 8 1910 LET S1=S1+X1: REM ... X1= 0 -1 -1 -1 0 1 1 1 1920 LET S2=S2+X2: REM ... X2= 1 1 0 -1 -1 -1 0 1 1930 IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 2200 1940 LET S8=INT((S1*24)+(S2*3)-24) 1950 IF S8>72 THEN 1990 1960 IF Q$(S8-2,S8)=" " THEN 2080 1970 PRINT A0$;Q$(S8-2,S8);A1$;S1;S2 1980 GOTO 2050 1990 IF S8>144 THEN 2030 2000 IF R$(S8-74,S8-72)=" " THEN 2080 2010 PRINT A0$;R$(S8-74,S8-72);A1$;S1;S2 2020 GOTO 2050 2030 IF S$(S8-146,S8-144)=" " THEN 2080 2040 PRINT A0$;S$(S8-146,S8-144);A1$;S1;S2 2050 LET S1=S1-X1 2060 LET S2=S2-X2 2070 GOTO 2090 2080 NEXT I 2090 LET A$="": LET Z1=S1: LET Z2=S2 2120 GOSUB 4690 2130 LET E=E-N 2140 LET T=T+1 2150 IF T>T0+T9 THEN 3970 2160 LET Q3=Q1 2170 LET Q4=Q2 2180 IF E<0 THEN 5890 2190 GOTO 1400 2200 LET X=Q1*8+X+X1*N: LET Y=Q2*8+Y+X2*N 2220 LET Q3=Q1: LET Q4=Q2 2240 LET Q1=INT(X/8): LET Q2=INT(Y/8) 2260 IF Q1<1 OR Q2<1 THEN 2270 ELSE 2360 2270 LET S1=Z1: LET S2=Z2 2290 LET Q1=Q3: LET Q2=Q4 2310 PRINT " THAT COURSE AND WARP FACTOR WILL PUT YOU OUT OF THE GALAXY" 2320 PRINT " TRY AGAIN DUMMY" 2330 LET A$="" 2340 GOSUB 4690 2350 GOTO 1400 2360 IF Q1<9 THEN 2390 2370 IF X>72 THEN 2270 2380 LET Q1=Q1-1 2390 IF Q2<9 THEN 2420 2400 IF Y>72 THEN 2270 2410 LET Q2=Q2-1 2420 LET S1=INT(X-Q1*8): LET S2=INT(Y-Q2*8) 2440 IF S1<>0 THEN 2480 2450 LET Q1=Q1-1 2460 IF Q1=0 THEN 2270 2470 LET S1=8 2480 IF S2<>0 THEN 2520 2490 LET Q2=Q2-1 2500 IF Q2=0 THEN 2270 2510 LET S2=8 2520 LET T=T+1 2530 LET E=E-N 2540 IF T>T0+T9 THEN 3970 2550 IF E<0 THEN 5890 2560 GOTO 920 2570 IF D(3)>=0 THEN 2600 2580 PRINT " LONG RANGE SENSORS ARE INOPERABLE.": GOTO 1410 2600 PRINT "LONG RANGE SENSOR SCAN FOR QUADRANT ";Q1;" , ";Q2 2640 PRINT " ----------------" 2650 FOR I=Q1-1 TO Q1+1 2655 LET N(1)=0: LET N(2)=0: LET N(3)=0 2660 FOR J=Q2-1 TO Q2+1 2670 IF I<1 OR I>8 THEN 2710 2680 IF J<1 OR J>8 THEN 2710 2690 LET N(J-Q2+2)=G(I,J) 2700 LET Z(I,J)=G(I,J) 2710 NEXT J 2720 PRINT " :";N(1);":";TAB(10);N(2);":";TAB(15);N(3);TAB(19);":" 2730 PRINT " ----------------" 2740 NEXT I 2750 GOTO 1410 2760 IF K3<=0 THEN 3900 2770 IF D(4)=0 THEN 2800 2780 PRINT " PHASER CONTROL IS DISABLED" 2790 GOTO 1410 2800 IF D(7)>=0 THEN 2820 2810 PRINT " COMPUTER FAILURE HAMPERS ACCURACY" 2820 PRINT "PHASERS LOCKED ON TARGET. ENERGY AVAILABLE = ";E 2830 PRINT " NUMBER OF UNITS TO FIRE: ---=>"; 2840 INPUT X 2850 IF X<=0 THEN 1410 ELSE PRINT 2860 IF E-X<0 THEN 2800 2870 LET E=E-X 2880 IF D(7)>=0 THEN 2900 2890 LET X=X*RND(0) 2900 FOR I=1 TO 3 2910 IF K(I,3)<=0 THEN 2990 2920 LET H=(X/K3/FND(0))*(2*RND(0)) 2930 LET H=INT(H): LET K(I,3)=K(I,3)-H 2940 PRINT H;" UNIT HIT ON KLINGON AT SECTOR ";K(I,1);K(I,2) 2950 PRINT " SCANNERS REPORT ";K(I,3);" LEFT.&J" 2960 IF K(I,3)>0 THEN 2990 2970 GOSUB 5680 2980 IF K9<=0 THEN 4020 2990 NEXT I 3000 FOR I=1 TO 3 3010 IF K(I,3)>0 THEN GOSUB 5540 3030 NEXT I 3040 IF E<0 THEN 3990 3050 GOTO 1410 3060 IF D(5)>=0 THEN 3090 3070 PRINT " PHOTON TUBES ARE NOT OPERATIONAL" 3080 GOTO 1410 3090 IF P>0 THEN 3120 3100 PRINT " ALL PHOTON TORPEDOES EXPENDED" 3110 GOTO 1410 3120 PRINT " TORPEDO COURSE (1-9: "; 3130 INPUT C1 3140 IF C1=0 THEN 1410 3150 IF C1<1 OR C1>=9 THEN 3120 3160 LET X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)) 3170 LET X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)) 3180 LET X=S1: LET Y=S2 3200 LET P=P-1 3210 PRINT " TORPEDO TRACK;" 3220 LET X=X+X1: LET Y=Y+X2 3240 IF X<1 OR X>=9 OR Y<1 OR Y>=9 THEN 3670 3250 PRINT " ";X;" , ";Y 3260 LET A$=" ": LET Z1=X: LET Z2=Y 3290 GOSUB 4880 3300 IF Z3=0 THEN 3320 3310 GOTO 3220 3320 LET A$="": LET Z1=X: LET Z2=Y 3350 GOSUB 4880 3360 IF Z3=0 THEN 3470 3370 PRINT " *** KLINGON DESTROYED ***" 3380 LET K3=K3-1 3390 LET K9=K9-1 3400 IF K9<=0 THEN 4020 3410 FOR I=1 TO 3 3420 IF INT(X)<>K(I,1) THEN 3440 3430 IF INT(Y)=K(I,2) THEN EXIT 3450 3440 NEXT I 3450 LET K(I,3)=0 3460 GOTO 3610 3470 LET A$=" * ": LET Z1=X: LET Z2=Y 3500 GOSUB 4880 3510 IF Z3=0 THEN 3540 3520 PRINT "STAR DESTROYED *** ....CONGRATULATIONS D U M M Y.... ***" 3521 LET S3=S3-1 3522 GOTO 3610 3540 LET A$=">B<": LET Z1=X: LET Z2=Y 3570 GOSUB 4880 3580 IF Z3=0 THEN 3220 3590 PRINT " *** STAR BASE DESTROYED ***" 3595 PRINT " *** ....CONGRATULATIONS D U M M Y.... ***" 3600 LET B3=B3-1 3610 LET A$=" ": LET Z1=X: LET Z2=Y 3640 GOSUB 4690 3650 LET G(Q1,Q2)=K3*100+B3*10+S3 3660 GOTO 3680 3670 PRINT " TORPEDO MISSED" 3680 GOSUB 5540 3690 IF E<0 THEN 3990 3700 GOTO 1410 3710 IF D(7)>=0 THEN 3740 3720 PRINT " SHIELD CONTROL IS NON-OPERATIONAL" 3730 GOTO 1410 3740 PRINT "ENERGY AVAILABLE = ";E+S;" NUMBER OF UNITS TO SHIELDS: "; 3750 INPUT X 3760 IF X<0 THEN 1410 3770 IF E+S-X<0 THEN 3740 3780 LET E=E+S-X 3790 LET S=X 3800 GOTO 1410 3810 IF D(6)>=0 THEN 3840 3820 PRINT " DAMAGE CONTROL REPORT IS NOT AVAILABLE" 3830 GOTO 1410 3840 PRINT " DEVICE STATE OF REPAIR" 3850 FOR R1=1 TO 8 3860 GOSUB 5780 3870 PRINT " ";D(R1) 3880 NEXT R1 3890 GOTO 1410 3900 PRINT " SHORT RANGE SENSORS REPORT NO KLINGONS IN THIS QUADRANT" 3910 GOTO 1410 3920 PRINT " THE ENTERPRISE IS DEAD IN SPACE. IF YOU SURVIVE ALL IMPENDING" 3930 PRINT " ATTACKS. YOU WILL BE DEMOTED TO THE RANK OF PRIVATE" 3940 IF K3<=0 THEN 4000 3950 GOSUB 5540: REM ...GET SHOT AT TILL DESTROYED 3960 GOTO 3940 3970 PRINT "IT IS STARDATE ";T 3980 GOTO 4000 3990 PRINT " THE ENTERPRISE HAS BEEN DESTROYED. THE FEDERATION WILL BE CONQUERED" 4000 PRINT "THERE ARE STILL ";K9;" KLINGON BATTLE CRUISERS" 4010 GOTO 5850: REM ...TRY AGAIN 4020 PRINT " THE LAST BATTLE CRUISER IN THE GALAXY HAS BEEN DESTROYED" 4030 PRINT " THE FEDERATION HAS BEEN SAVED !!!!!!!!!!!!!!!!!!!!!" 4040 PRINT "YOUR EFFICENCY RATING = ";((K7/(T-T0))*1000) 4050 REM ...T1=TIM+TIM*60 4060 PRINT "YOUR ACTUAL TIME OF MISSION= ";ABS(((T1-T7)*.4)-T7);" STARDATES" 4070 GOTO 5850: REM ...TRY AGAIN 4080 IF D(8)>=0 THEN 4110 4090 PRINT " COMPUTER DISABLED" 4100 GOTO 1410 4110 PRINT " COMPUTER ACTIVE AND AWAITING COMMAND: (0-3): "; 4120 INPUT (1,0)A 4130 IF A<0 OR A>3 THEN 4141 ELSE PRINT 4140 ON A+1 GOTO 4150,4230,4280,4670 4141 PRINT " ... INVALID COMPUTOR COMMAND. USE:": PRINT 4142 PRINT " 0 = MAP": PRINT " 1 = GAME STATUS" 4143 PRINT " 2 = TORPEDO COURSES" 4144 PRINT " 3 = COURSE CALCULATOR" 4145 PRINT : GOTO 4110 4150 PRINT "COMPUTER RECORD OF GALAXY FOR QUADRANT ";Q1;" , ";Q2 4170 PRINT " -=1=- -=2=- -=3=- -=4=- -=5=- -=6=- -=7=- -=8=-" 4180 FOR I=1 TO 8 4185 PRINT I;" ";Z(I,1);TAB(10);Z(I,2);TAB(16);Z(I,3); 4190 PRINT TAB(22);Z(I,4);TAB(28);Z(I,5);TAB(34); 4195 PRINT Z(I,6);TAB(40);Z(I,7);TAB(46);Z(I,8);TAB(52);I 4200 NEXT I 4210 PRINT " -=1=- -=2=- -=3=- -=4=- -=5=- -=6=- -=7=- -=8=-" 4220 GOTO 1410 4230 PRINT : PRINT " STATUS REPORT:": PRINT 4240 PRINT "NUMBER OF KLINGONS LEFT = ";K9 4250 PRINT "NUMBER OF STARDATES LEFT = ";T9-(T-T0) 4260 PRINT "NUMBER OF STARBASES LEFT = ";B9 4270 GOTO 3810 4280 LET H8=0: LET I9=3 4290 FOR I=1 TO I9 4300 IF K(I,3)<=0 THEN 4650 4310 LET C1=S1: LET A=S2 4330 LET W1=K(I,1) 4340 LET X=K(I,2) 4350 GOTO 4390 4360 PRINT " SHIP'S TARGET CORRDINATES ARE:" 4380 INPUT " TYPE IN 4 NUMBERS ---=>",C1,A,W1,X 4390 LET X=X-A 4400 LET A=C1-W1 4410 IF X<0 THEN 4510 4420 IF A<0 THEN 4580 4430 IF X>0 THEN 4450 4440 IF A=0 THEN 4530 4450 LET C1=1 4460 IF INT(A)<=INT(X) THEN 4490 4470 PRINT "COURSE = ";C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)) 4480 GOTO 4630 4490 PRINT "COURSE = ";C1+(ABS(A)/ABS(X)) 4500 GOTO 4630 4510 IF A>0 THEN 4560 4520 IF X=0 THEN 4580 4530 LET C1=5 4540 IF INT(A)>=INT(X) THEN 4490 4550 GOTO 4470 4560 LET C1=3 4570 GOTO 4590 4580 LET C1=7 4590 IF ABS(A)>=ABS(X) THEN 4620 4600 PRINT "COURSE = ";C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)) 4610 GOTO 4630 4620 PRINT "COURSE = ";C1+(ABS(X)/ABS(A)) 4630 IF ABS(X)>=ABS(A) THEN 4636 4632 PRINT "DISTANCE= ";ABS(A) 4634 GOTO 4640 4636 PRINT "DISTANCE= ";ABS(X) 4640 IF H8=1 THEN 4660 4650 NEXT I 4660 GOTO 1410 4670 LET H8=1 4680 GOTO 4360 4690 REM ... FIND THE CONTENTS OF A PARTICULAR SECTOR 4700 LET S8=INT(ABS((Z1*24)+(Z2*3)-24)) 4710 IF S8>72 THEN 4740 4720 LET Q$(S8-2,S8)=A$ 4730 GOTO 4780 4740 IF S8>144 THEN 4770 4750 LET R$(S8-74,S8-72)=A$ 4760 GOTO 4780 4770 LET S$(S8-146,S8-144)=A$ 4780 RETURN 4790 REM ... FIND ONE RANDOM EMPTY SECTOR 4800 LET R1=INT(RND(0)*8)+1 4810 LET R2=INT(RND(0)*8)+1 4820 LET A$=" ": LET Z1=R1: LET Z2=R2 4850 GOSUB 4880 4860 IF Z3=0 THEN 4800: REM ...SECTOR OCCUPIED TRY AGAIN 4870 RETURN 4880 REM ... SECTOR COMPARISON ROUTINE: IF Z3=0, NO COMPARE 4890 LET S8=INT(ABS((Z1*24)+(Z2*3)-24)) 4900 LET Z3=0 4910 IF S8>75 THEN 4950 4920 IF Q$(S8-2,S8)<>A$ THEN 5010: REM ...DOES Q$=A$ 4930 LET Z3=1: REM ...YES 4940 GOTO 5010: REM ...NO 4950 IF S8>147 THEN 4990 4960 IF R$(S8-74,S8-72)<>A$ THEN 5010: REM ...DOES R$=A$ 4970 LET Z3=1: REM ...YES 4980 GOTO 5010: REM ...NO 4990 IF S$(S8-146,S8-144)<>A$ THEN 5010: REM ...DOES S$=A$ 5000 LET Z3=1: REM ...YES 5010 RETURN : REM ...NO 5020 REM .... DOCKING CHECK 5030 FOR I=S1-1 TO S1+1 5040 FOR J=S2-1 TO S2+1 5050 IF I<1 OR I>8 OR J<1 OR J>8 THEN 5110 5060 LET A$=">B<": LET Z1=I: LET Z2=J 5090 GOSUB 4880 5100 IF Z3=1 THEN EXIT 5150 5110 NEXT J 5120 NEXT I 5130 LET D0=0 5140 GOTO 5250 5150 LET D0=1 5160 LET C$="DOCKED" 5170 LET E=3000 5180 FOR I=1 TO 10: LET D(I)=0: NEXT I 5210 LET P=10 5220 PRINT " SHIELDS DROPPED FOR DOCKING PURPOSES" 5230 LET S=0 5240 GOTO 5320 5250 IF K3>0 THEN 5290 5260 IF E=0 THEN 5350 5330 PRINT " *** SHORT RANGE SENSORS ARE OUT ***" 5340 GOTO 5530 5350 PRINT " 1 2 3 4 5 6 7 8" 5360 PRINT " - - - - - - - -" 5370 PRINT "1:";Q$(1,24);":1" 5380 PRINT "2:";Q$(25,48);":2 STARDATE: ";T 5400 PRINT "3:";Q$(49,72);":3 CONDITION: ";C$ 5420 PRINT "4:";R$(1,24);":4 QUADRANT: ";Q1;Q2 5440 PRINT "5:";R$(25,48);":5 SECTOR ";S1;S2 5460 PRINT "6:";R$(49,72);":6 ENERGY: ";E 5480 PRINT "7:";S$(1,24);":7 PHOTONS: ";P 5500 PRINT "8:";S$(25,48);":8 SHIELDS: ";S 5520 PRINT " - - - - - - - -" 5525 PRINT " 1 2 3 4 5 6 7 8" 5530 RETURN 5540 REM .... ***SHOOT BACK*** 5550 IF C$<>"DOCKED" THEN 5580 5560 PRINT " STAR BASE SHIELDS PROTECT THE ENTERPRISE" 5570 RETURN 5580 IF K3<=0 THEN 5670 5600 FOR I=1 TO 3 5610 IF K(I,3)<=0 THEN 5660 5620 LET H=(K(I,3)/FND(0))*(2+RND(0)) 5630 LET H=INT(H): LET S=S-H 5640 PRINT H;" UNIT HIT ON ENTERPRISE FROM SECTOR ";K(I,1);K(I,2) 5645 PRINT TAB(12);"SPOCK SAYS ";S;" UNITS ARE LEFT.&J" 5650 IF S<0 THEN 3990 5660 NEXT I 5670 RETURN 5680 REM .... !*** KLINGON KILL MAYBE ***** 5690 PRINT "KLINGON AT SECTOR ";K(I,1);" , ";K(I,2);" DESTROYED *****" 5700 LET K3=K3-1 5710 LET K9=K9-1 5730 LET A$=" ": LET Z1=K(I,1): LET Z2=K(I,2) 5750 GOSUB 4690 5760 LET G(Q1,Q2)=K3*100+B3*10+S3 5770 RETURN 5780 REM .... *** PRINT DEVICE NAME FROM ARRAY *** 5790 LET S8=INT(R1*12) 5810 PRINT D$(S8-11,S8); 5840 RETURN 5850 PRINT "DO YOU WISH TO TRY AGAIN? ---=>"; 5860 INPUT A$ 5870 IF A$<>"YES" THEN 5990 5880 LET CHAINSTTR2 5890 LET A$=" " 5900 GOSUB 4690 5910 LET N=E5 5920 LET S1=Z1: LET S2=Z2 5940 LET Q1=Q3: LET Q2=Q4 5960 LET E=E5 5970 PRINT "SORRY YOU RAN OUT OF ENERGY" 5980 GOTO 1860 5990 END