10 REM A=SCRATCH A$=SCRATCH 15 REM B=CURR # OF PROBES B1=PROBE ETA 20 REM B3=# OF BASES IN QUAD B7=PROBE X COORDINATE 25 REM B8=PROBE Y COORDINATE B$=QUAD LRS FLAG 26 REM B4=BASE X COORD B5=BASE Y COORD 30 REM C1=COURSE D1=SRS DAMAGE 35 REM D2=LRS DAMAGE D3=PHASER DAMAGE 40 REM D4=ENGINE DAMAGE D5=TORPEDO DAMAGE 45 REM D6=PROBE DAMAGE D7=DAMAGE PANEL DAMAGE 50 REM E=CURR ENERGY E0=STARTING ENERGY 55 REM F=F1 STORAGE F1=KLINGON DISTANCE FACTOR 60 REM G=QUADRANT DATA H=HIT ENERGY 65 REM K=KLINGON DATA K1=CURR KLINGON POWER 70 REM K3= CURR KLINGONS-QUAD K4=STARTING KLINGONS-QUAD 75 REM K9=KLINGONS LEFT M9=YEARS DISABLED 80 REM M1=# OF MISHAPS O=TOTAL ENERGY FOR KILL 81 REM P=CURR # OF TORPEDOS P0=STARTING # OF TORPEDOS 82 REM P$=PLANET SWITCH Q1=QUAD X COORDINATE 83 REM Q2=QUAD Y COORDINATE Q3=SCRATCH 84 REM Q$=SRS QUAD DATA R=SCRATCH 85 REM S1=SECTOR X COORDINATE S2=SECTOR Y COORDINATE 86 REM S3=# OF STARS IN QUAD S9=STARTING ENERGY OF KLINGON 87 REM T=TIME LEFT T0=STARTING STARDATE 88 REM T9=MAX LENGTH OF MISSION T()=TORPEDO COURSE STORAGE 89 REM V1=PREVIOUS Q1 V2=PREVIOUS Q2 90 REM X1=X COORD ADJ X2=X COORD (ALT) 91 REM X=X COORD Y=Y COORD 92 REM Y1=Y COORD ADJ Y2=Y COORD (ALT) 93 REM Y3=SCRATCH Y$=SCRATCH 94 REM Z$=DISPLAY FIELD X$=QUAD/CRT CODES 95 REM X9=X COORD Y9=Y COORD 96 REM S$=STATUS OF SRS 100 CLEAR 500 150 CLS 200 CLS 300 DIM G(8,8),K(9,3),B$(8,8),F(9),T(10) 400 DATA 1000,900,800,700,600,500,400,300,200,100 500 RESTORE 1610 REM INITIALIZE CURRENT GAME 1650 PRINT " J.WISE" 1700 PRINT "ENTER EXPERTISE FACTOR (1 TO 10):"; 1800 INPUT A : IF A < 1 THEN 1700 1850 IF A >10 THEN 1700 1855 I=0 1860 READ A3 'GET REAL TIME COUNTER VALUE BASED ON SKILL LEVEL 1865 I=I+1 1870 IF I<>A GOTO 1860 1900 A = A*.1 1910 A$ = INKEY$: 'DUMMY READ TO PURGE KEYBOARD BOUNCE 1915 REM RANDOMLY GENERATE RANDOM NUMBER SEQUENCE 1920 I=-RND(1) 2000 PRINT "HIT ANY KEY TO START YOUR ENGINES" 2050 A$ = INKEY$: IF LEN (A$) <>0 GOTO 2150 2100 LET R = RND(I) : I=I-.01 : GOTO 2050 2150 T0=INT(RND(1)*10000) 2200 T=50 2300 E0=5000 2350 E=5000 2400 P0=15 2450 P=15 2500 S9=200 2550 B=5 2551 M9=0 2600 GOSUB 25950 2650 B1 = 0 2750 LET Z$ = " " 2850 V1=1 : V2=1 2900 S$ = "B" 2950 REM SET UP THE GALAXY 3050 CLS : PRINT "TIME TIL BLAST-OFF = "; 3100 M1=0 3150 B9=0 3200 K9=0 3201 B3=0 : T8=0 3210 J = 64 3250 FOR I=1 TO 8 3255 FOR K=1 TO 8 3260 J = J-1 3265 LOCATE 2,22 3300 PRINT J; 3450 IF RND(1) > A THEN 3520 3500 K3=INT(RND(1)*8+1) 3510 IF K3 < 4 THEN 3520 3511 T8 = T8+1 : GOTO 3550 3520 K3=0 3550 K9=K9+K3 3800 S3=INT(RND(1)*9+1) 3900 G(I,K)=K3*100+S3 3950 NEXT K,I 4000 K0=K9 4010 REM PLUG IN BASES 4050 B9=INT(K9/50+1) 4100 FOR I = 1 TO B9 4150 X=INT(RND(1)*8+1) : Y=INT(RND(1)*8+1) 4200 R=G(X,Y) 4210 IF R<10 GOTO 4252 4220 IF R>=100 THEN Q$=MID$(STR$(R),3,1) : GOTO 4251 4250 Q$=MID$(STR$(R),2,1) 4251 IF Q$ = "1" THEN 4150 4252 G(X,Y)=R+10 : NEXT I 4260 GOTO 21700 4350 Q1=INT(RND(1)*8+1) 4400 Q2=INT(RND(1)*8+1) 4410 IF K9 > 50 THEN GOSUB 30101: IF K3=0 GOTO 4350 4450 S1=INT(RND(1)*8+1) 4500 S2=INT(RND(1)*8+1) 4550 REM SET UP CURRENT QUADRANT 4700 LOCATE 22,32 : GOSUB 30200 'CLEAR MSG AREA 4750 LOCATE 22,32 : PRINT "PROCEEDING TO QUAD";Q1;"-";Q2 4800 LOCATE V1+4,V2*3 : PRINT " "; : LOCATE V1+4,V2*3+3 : PRINT " "; 4850 V1=Q1 : V2=Q2 4900 LOCATE Q1+4,Q2*3 : PRINT "<"; : LOCATE Q1+4,Q2*3+3 : PRINT ">" 5000 GOSUB 30101 'GET CONTENTS OF QUAD 5100 K4=K3 5110 REM PLUG CHARECTERS INTO QUAD 5150 Q$="................................" 5160 Q$=Q$+"................................" 5200 MID$(Q$,(8*(S1-1))+S2,1)= "E" 5205 IF K3=0 GOTO 5605 5210 LET Y$="K" 5300 FOR I=1 TO K3 5350 GOSUB 21450 5550 K(I,1) = X2 : K(I,2)= Y2 : K(I,3) = S9 5600 NEXT I 5605 IF B3=0 GOTO 5860 5610 LET Y$="B" 5700 FOR I=1 TO B3 5750 GOSUB 21450 5810 B4=X2 : B5=Y2 5850 NEXT I 5860 LET Y$="*" 5950 FOR I=1 TO S3 6000 GOSUB 21450 6100 NEXT I 6101 P$=" " 6110 IF B3 > 0 THEN 6200 'IF BASE-NO PLANET 6120 IF RND(1) < .95 THEN 6200 6130 Y$="@" 6140 GOSUB 21450 6141 B4=X2 : B5=Y2 : P$="@" 6150 REM SET UP CRT AND GET NEXT COMMAND 6200 LOCATE 14,6 : PRINT Q1;"-";Q2; : LOCATE 14,18 : PRINT S1;"-";S2; 6250 IF B3 > 0 THEN 6300 6260 IF P$ <> "@" THEN 7000 'CAN DOCK WITH PLANET TOO 6300 X2=B4 : Y2=B5 : GOSUB 23300 6350 IF F1 >= 2 THEN 7000 6650 C$="DOCKED" 6700 GOSUB 25950 : GOSUB 25750 'CLEAR DAMAGES 6750 IF E < 4980 THEN E = E+E0 6800 IF B3 > 0 THEN P=P0 6850 GOTO 7110 7000 IF K3>0 THEN C$="RED!!!" : GOTO 7110 7050 IF E0 GOTO 7459 7452 IF T8 > T-1 GOTO 7460 7453 GOTO 7500 7459 IF T8 <= T GOTO 7500 7460 LOCATE 24,36 : PRINT "TIME TO SURRENDER!!!"; 7500 LOCATE 18,32 : GOSUB 30200 'CLEAR COMMAND DISPLAY AREA 7550 LOCATE 19,32 : GOSUB 30200 7600 LOCATE 20,32 : GOSUB 30200 7650 LOCATE 18,32 : PRINT "COMMAND (0,3,4,6)= " 7651 LOCATE 18,51 7655 A2=0 7660 A$ = INKEY$ 'REAL TIME COUNTER 7665 IF LEN(A$)=1 GOTO 7685 7666 IF K3=0 GOTO 7660 7670 A2=A2+1 7675 IF A2>A3 GOTO 7150 7680 GOTO 7660 7685 IF A$="-" GOTO 20870 7686 PRINT A$ 7690 A=VAL(A$) 7700 LOCATE 22,32 : GOSUB 30200 7750 ON A+1 GOTO 7900,7650,7650,12800,15000,7650,26050 7800 GOTO 7650 7850 REM WARP DRIVE ROUTINE 7900 LOCATE 19,32 : PRINT "COURSE (1-8):"; 7950 INPUT C1 8000 IF C1=0 THEN 7500 8050 IF C1<1 THEN 7900 8100 IF C1>8 THEN 7900 8150 LOCATE 20,32 : PRINT "WARP FACTOR (.1-7):"; 8200 INPUT A 8250 IF A <.1 THEN 7500 8300 IF A >7 THEN 8150 8350 IF A <.6 THEN 8550 8400 IF D4 = 0 THEN 8550 8450 Z$="ENGINES DAMAGED-MAX WARP .5" 8500 GOTO 12900 8550 GOSUB 19950 'KLINGON ATTACK 8600 IF E<=0 THEN 20900 8610 IF P$ = " " THEN 8700 'NO PLANET 8620 IF RND(1) > .5 THEN 8700 'LUCKY-IT STAYED PUT 8630 X9=B4 : Y9=B5 : X$="." : GOSUB 29354 8640 Y$="@" : GOSUB 21450 8641 B4=X2 : B5=Y2 8642 X9=B4 : Y9=B5 : X$="@" : GOSUB 29354 8650 REM SEE IF ANY DAMAGES ARE REPAIRED 8700 IF D1 < 0 THEN D1 = D1+1 : M9=M9+1 8750 IF D2 < 0 THEN D2 = D2+1 : M9=M9+1 : IF D2=0 THEN GOSUB 27210 8800 IF D3 < 0 THEN D3 = D3+1 : M9=M9+2 8850 IF D4 < 0 THEN D4 = D4+1 : M9=M9+2 8900 IF D5 < 0 THEN D5 = D5+1 : M9=M9+.5 8950 IF D6 < 0 THEN D6 = D6+1 : M9=M9+.5 9000 IF D7 < 0 THEN D7 = D7+1 : M9=M9+.5 9010 W$="SPACE STORM-" 9050 REM SEE IF SPACE STORM ENCOUNTERED 9100 IF RND(1) > .25 THEN GOSUB 25750 : GOTO 9950 9105 LOCATE 22,32 : GOSUB 30200 9110 GOSUB 9150 9120 GOTO 9950 9150 X2 = INT(RND(1)*7+1) : M1=M1+1 : Y2=INT(RND(1)*5)+1 9200 ON X2 GOTO 9250,9400,9450,9500,9550,9600,9650 9250 D1 = D1-Y2 : Z$="S/R SCAN OUT" 9300 IF S$ = "O" THEN 9800 9350 GOSUB 28000 : GOTO 9800 'CLEAR SRS 9400 D2 = D2-Y2 : Z$="L/R SCAN OUT" : GOTO 9800 9450 D3 = D3-Y2 : Z$="PHASER OUT" : GOTO 9800 9500 D4 = D4-Y2 : Z$="ENGINES HIT" : GOTO 9800 9550 D5 = D5-Y2 : Z$="TORPEDOES OUT" : GOTO 9800 9600 D6 = D6-Y2 : Z$="PROBE DAMAGED" : GOTO 9800 9650 D7 = D7-Y2 : Z$="PANEL OUT" 9700 FOR I = 12 TO 17 9750 LOCATE I,74 : PRINT " " : NEXT I 9800 LOCATE 22,32 : PRINT W$;Z$ 9850 GOSUB 27000 9860 IF D7=0 THEN GOSUB 25750 'UPDATE DAMAGE PANEL 9870 RETURN 9950 IF B1 = 0 THEN 10150 10000 B1 = B1-1 10050 IF B1 = 0 THEN GOSUB 30350 : GOTO 10150 'GET PROBE DATA 10100 LOCATE 14,56 : PRINT B1; 'PRINT PROBE ETA 10150 E=E-A*20 10200 A=(A-INT(A))*10+INT(A)*8 10210 IF T <= 1 THEN 20950 10250 T=T-.5 10300 X9=S1 : Y9=S2 : X$="." : GOSUB 29354 10450 GOSUB 18650 10500 FOR I=1 TO A 10550 S1=S1+X1 10600 S2=S2+Y1 10650 IF S1=0 THEN 11400 10700 IF S2=0 THEN 11400 10750 IF S1=9 THEN 11400 10800 IF S2=9 THEN 11400 10850 A$=MID$(Q$,(8*S1)-(8-S2),1) 10900 IF A$ = "." THEN 11200 10950 LOCATE 22,32 : PRINT "MOVEMENT BLOCKED AT";S1;"-";S2; 11000 GOSUB 27000 11050 S1=S1-X1 11100 S2=S2-Y1 11150 GOTO 11250 11200 NEXT I 11250 X9=S1 : Y9=S2 : X$="E" : GOSUB 29354 11350 GOTO 6200 11400 IF S$=" " THEN GOSUB 28000 'CLEAR SRS 11410 T=T-.5 11450 LOCATE 14,6 : PRINT " "; : LOCATE 14,18 : PRINT " "; 11500 FOR J = 5 TO 13 11550 LOCATE J,30 : PRINT " "; : GOSUB 30200 : NEXT J 11600 IF S1=0 THEN 11700 11650 IF S1<>9 THEN 11750 11700 Q1=Q1+X1 11750 IF S2=0 THEN 11850 11800 IF S2<>9 THEN 11900 11850 Q2=Q2+Y1 11900 A=INT((A-I)/8) 11950 IF A <1 THEN 12200 12100 Q1=Q1+(A*X1) 12150 Q2=Q2+(A*Y1) 12200 IF Q1>8 THEN Q1=8 12300 IF Q1<1 THEN Q1=1 12400 IF Q2>8 THEN Q2=8 12450 IF Q2<1 THEN Q2=1 12700 GOTO 4450 12750 REM PHASERS ROUTINE 12800 IF D3 >= 0 THEN 13000 12850 Z$ = "PHASER CONTROL IS DISABLED" 12900 GOSUB 26900 : GOTO 7500 13000 IF K3>0 THEN 13100 13050 Z$="WHY FIRE AT NOTHING?" : GOTO 12900 13100 GOSUB 22500 'GET FIRE ENERGY 13150 X=O/K3 13200 LOCATE 20,56 : INPUT A 13250 ON A+1 GOTO 7500,13350,13600 'A=0 ESCAPE 13300 GOTO 13200 13350 IF E "DOCKED" THEN E = E-O 13450 GOTO 13800 13500 Z$= "NOT ENOUGH ENERGY AVAILABLE" : GOSUB 26900 13550 GOTO 13200 13600 IF E1 THEN 13750 13700 LET A=1 13750 IF C$ <> "DOCKED" THEN E=E-X 13800 GOSUB 29150 'UPDATE ENERGY 13850 FOR I=1 TO K4 13900 X2=K(I,1) : Y2=K(I,2) 13950 K1=K(I,3) 14000 IF K1 <= 0 THEN 14850 14050 IF A=1 THEN 14300 14100 F1=F(I) 14150 H = X/F1*(2+RND(1)) 14200 K1 = K1-H 14250 IF K1 > 0 THEN GOSUB 29700 : GOTO 14400 14300 K1 = 0 14350 GOSUB 29650 14400 K(I,3) = K1 14450 IF K1 > 0 THEN 14850 14600 GOSUB 29320 14700 X9=X2 : Y9=Y2 : X$="." : GOSUB 29354 14750 G(Q1,Q2)=G(Q1,Q2)-100 14800 IF K9 =0 THEN 21050 14850 NEXT I 14900 GOTO 6250 14950 REM TORPEDO ROUTINE 15000 IF D5 >= 0 THEN 15100 15050 Z$ = "PHOTON TUBES ARE DAMAGED" : GOTO 12900 15100 IF P>0 THEN 15200 15150 Z$= "PHOTON TORPEDOES EXPENDED" : GOTO 12900 15200 LOCATE 19,32 : PRINT "NR OF TORPEDOES (1-10):"; 15250 INPUT A 15300 IF A < 1 THEN 7500 15350 IF A > 10 THEN 15200 15400 IF A > P THEN 15200 15450 LOCATE 20,32 : PRINT "COURSE:" 15500 FOR I = 1 TO A 15550 LOCATE 20,(I*2+37) : INPUT C1 15600 IF I=1 THEN IF C1=0 THEN I=I-1 : GOTO 15550 'ONLY CHANCE TO ESCAPE 15650 IF C1 = 0 THEN I = I-1 : GOTO 15550 'CORRECT LAST ENTRY 15700 IF C1 > 8 THEN 15550 15750 IF C1 < 1 THEN 15550 15760 LOCATE 22,I*2+30 : PRINT C1 15800 T(I) = C1 15850 NEXT I 15900 FOR J = 1 TO A 15950 C1=T(J) 16000 IF S$=" " THEN 16100 16050 GOSUB 28000 16100 GOSUB 18650 16150 X=S1 16200 Y=S2 16250 IF C$ <> "DOCKED" THEN P=P-1 16300 H = 1 16350 GOSUB 29250 16400 X=X+X1 16450 Y=Y+Y1 16500 IF X< 1 THEN 18500 16550 IF Y< 1 THEN 18500 16600 IF X> 8 THEN 18500 16650 IF Y> 8 THEN 18500 16700 IF S$ = " " THEN 16950 16750 IF H > 1 THEN 16850 16800 LOCATE 16,1 : PRINT "TORP #";J; 16850 LOCATE 16,10 : PRINT X;"-";Y; 16900 GOTO 17000 16950 LOCATE X+15,(Y-1)*3+1 : PRINT Y$; 17000 A$=MID$(Q$,(8*X)-(8-Y),1) 17050 IF A$ <> "." THEN 17150 17100 GOSUB 29554 : H = H+1 : GOTO 16400 17150 IF A$ <> "K" THEN 17950 17200 Z$="KLINGON" 17350 GOSUB 29320 17450 IF K9 =0 THEN 21050 17500 LET I=0 : K1=0 17550 LET I=I+1 17600 X2=K(I,1) 17650 Y2=K(I,2) 17700 IF X <> X2 THEN 17550 17750 IF Y <> Y2 THEN 17550 17800 K(I,3)=K1 17850 GOSUB 29650 17900 GOTO 18220 17950 IF A$ <> "*" THEN 18110 18000 Z$="STAR" 18050 S3=S3-1 18100 GOTO 18220 18110 IF A$ <> "@" THEN 18150 18120 Z$ = "PLANET" : P$=" " : GOTO 18210 18150 Z$ = "BASE" 18160 B9=B9-1 18200 B3=B3-1 18210 E=E+3000 18215 PRINT "NO MORE BASES, DUMBO !": GOTO 18250 18220 Z$=Z$ + " DESTROYED" 18250 X9=X : Y9=Y : X$="." : GOSUB 29354 18300 GOSUB 29450 18400 G(Q1,Q2)=K3*100+B3*10+S3 18450 GOTO 18510 18500 Z$ = "TORPEDO MISSED" 18510 GOSUB 26900 18550 NEXT J 18600 GOTO 6250 18610 REM TRANSLATE COURSE DIRECTION 18650 ON C1 GOTO 18850,19000,19150,19300,19450,19600,19750 18700 LET Y1=1 18750 LET X1=1 : Y$="[" 18800 RETURN 18850 LET Y1=1 18900 LET X1=0 : Y$="-" 18950 RETURN 19000 LET Y1=1 19050 LET X1=-1 : Y$="/" 19100 RETURN 19150 LET Y1=0 19200 LET X1=-1 : Y$="!" 19250 RETURN 19300 LET Y1=-1 19350 LET X1=-1 : Y$="[" 19400 RETURN 19450 LET Y1=-1 19500 LET X1=0 : Y$="-" 19550 RETURN 19600 LET Y1=-1 19650 LET X1=1 : Y$="/" 19700 RETURN 19750 LET Y1=0 19800 LET X1=1 : Y$="!" 19850 RETURN 19900 REM KLINGON ATTACK 19950 IF K3=0 THEN RETURN 19960 A1=0 20000 IF C$<>"DOCKED" THEN 20100 20050 LOCATE 22,32 : PRINT "BASE PROTECTS ENTERPRISE"; 20100 FOR I=1 TO K4 20200 X2=K(I,1) : Y2=K(I,2) : K1=K(I,3) 20250 IF K1 <= 0 THEN 20750 20300 GOSUB 23300 : BEEP 20350 H= K1/F1 20400 IF C$ = "DOCKED" THEN H=0 20450 E=E-H 20460 A1=A1+H 20500 GOSUB 29150 20550 LOCATE I+4,30 : PRINT " "; : LOCATE I+4,48 : PRINT " "; 20600 LOCATE I+4,30 20650 PRINT USING "# ";I;: PRINT USING "###.### ";H;: PRINT USING "# ";X2; 20700 PRINT "- ";: PRINT USING "# ";Y2;: PRINT USING "###.##";K1; 20750 NEXT I 20755 A1=A1 MOD K4 20760 IF A1<10 GOTO 20800 20761 IF RND(1)>.5 GOTO 20800 'LUCKY-NO DAMAGE THIS TIME 20765 W$="DAMAGE RPT-" 20766 LOCATE 22,32 : GOSUB 30200 'CLEAR MSG AREA 20770 GOSUB 9150 20800 RETURN 20850 REM LOSE 20870 CLS : PRINT "** WHITE FLAG TIME **" : GOTO 21100 20900 CLS : PRINT "** ENTERPRISE DESTROYED **" : GOTO 21100 20950 CLS : PRINT "** DOOMSDAY **" : GOTO 21100 21000 REM WIN 21050 CLS : PRINT "** MISSION ACCOMPLISHED **" 21100 PRINT "FLIGHT TIME:";51-T 21110 PRINT "BASE COUNT:";B9 21150 PRINT "KLINGONS DESTROYED:";K0-K9 21200 IF K9 > 0 THEN PRINT "KLINGONS LEFT:";K9 21250 PRINT "SPACE STORMS:";M1 21260 PRINT "DISABLED FACTOR";M9 21300 PRINT "RATING:";(K0-K9)/(51-T)+.04*M9 21350 A$ = INKEY$: IF LEN (A$) = 0 GOTO 21350 21360 IF A$="Y" THEN 100 21365 IF A$="N" THEN END 21370 GOTO 21350 21400 REM RANDOMLY PLACE CHARECTERS IN QUADRANT 21450 X2=INT(RND(1)*8)+1 21500 Y2=INT(RND(1)*8)+1 21550 X = (8*X2)-(8-Y2) 21600 IF MID$(Q$,X,1) <> "." THEN 21450 21610 MID$(Q$,X,1) = Y$ 21650 RETURN 21700 CLS 21705 PRINT "ORDERS STARDATE =";T0 21750 PRINT 21800 PRINT "TO: ENTERPRISE COMMANDER" 21850 PRINT "PRIORITY: URGENT" 21900 PRINT "MISSION: DESTROY";K9;"KLINGONS" 21950 PRINT "GALAXY BASE COUNT:";B9 22000 PRINT "DOOMSDAY:";T0+50;"(50 YEARS)" 22050 PRINT 22100 PRINT "DO YOU ACCEPT YOUR ORDERS (Y OR N)"; 22150 INPUT Q$ 22200 IF Q$="Y" THEN 23550 22250 IF Q$="N" THEN 100 22300 GOTO 22100 22400 REM PHASER FIRE CONTROL COMPUTER 22500 O=0 22550 FOR I=1 TO K4 22600 X2=K(I,1) : Y2=K(I,2) 22650 K1=K(I,3) 22700 IF K1 <= 0 THEN 23050 22750 GOSUB 23300 22800 F(I)=F1 22850 LET X = K1/(2+RND(1))*F1 22900 LOCATE I+4,55 22950 PRINT USING "###.##";X 23000 O=O+X 23050 NEXT I 23100 O=INT(O)+1 23150 LOCATE 19,32 : PRINT "1=COMPLETE KILL ( E=";O;")"; 23200 LOCATE 20,32 : PRINT "2=RECOMMENDED ( E=";INT(O/K3);")"; 23250 RETURN 23300 F1=SQR(((X2-S1)*(X2-S1))+((Y2-S2)*(Y2-S2))) 23350 RETURN 23360 REM SET UP CRT SKELETON 23450 FOR I = 1 TO L : PRINT "-"; : NEXT I : RETURN 23550 CLS 23600 PRINT "CUMULATIVE GALACTIC RECORD KLINGON ATTACK"; 23650 PRINT TAB(48);"FIRE ANALYSIS" 23700 PRINT " 1 2 3 4 5 6 7 8"; 23750 PRINT TAB(30); : L=31 : GOSUB 23450 : LOCATE 3,44 : PRINT " " 23800 L =27 : GOSUB 23450 : PRINT TAB(30);"# DAMAGE SECTR "; 23850 PRINT "POWER KILL" 23900 FOR I = 1 TO 8 23950 PRINT I;"** ** ** ** ** ** ** **";I : NEXT I 24000 L =27 : GOSUB 23450 : PRINT 24050 PRINT "QUAD";TAB(13);"SECT" 24100 L =60 : GOSUB 23450 :LOCATE 15,23 : PRINT "COMPASS" 24150 PRINT TAB(30);"- **** ON-BOARD COMPUTER **** -" 24200 PRINT TAB(26);"3 -";TAB(60);"-" 24250 PRINT TAB(25);"4.2 -";TAB(60);"-" 24300 PRINT TAB(24);"5...1 -";TAB(60);"-" 24350 PRINT TAB(25);"6.8 -";TAB(60);"-" 24400 PRINT TAB(26);"7 "; : L =31 : GOSUB 23450 : PRINT 24450 PRINT TAB(30);"-";TAB(60);"-" 24500 PRINT TAB(30); : GOSUB 23450 : PRINT 24550 L =22 : GOSUB 23450 : LOCATE 2,63 : L =17 : GOSUB 23450 24600 PRINT 24650 LOCATE 3,63 : PRINT "* STATUS PANEL *" 24700 LOCATE 4,63 : PRINT "TIME LEFT" 24750 LOCATE 5,63 : PRINT "CONDITION" 24800 LOCATE 6,63 : PRINT "ENERGY" 24850 LOCATE 7,63 : PRINT "TORPEDOES" 24900 LOCATE 8,63 : PRINT "KLINGONS" 24950 LOCATE 9,63 : PRINT "PROBES" : LOCATE 10,63 : GOSUB 23450 25000 PRINT 25050 LOCATE 11,63 : PRINT "* DAMAGE PANEL *" 25100 LOCATE 12,63 : PRINT "S/R SCAN" 25150 LOCATE 13,63 : PRINT "L/R SCAN" 25200 LOCATE 14,63 : PRINT "PHASER" 25250 LOCATE 15,63 : PRINT "WARP ENG" 25300 LOCATE 16,63 : PRINT "TORPEDO" 25350 LOCATE 17,63 : PRINT "PROBE" : LOCATE 18,63 : GOSUB 23450 : PRINT 25400 LOCATE 19,64 : PRINT "** COMMANDS **" 25450 LOCATE 20,64 : PRINT "0=SET COURSE" 25500 LOCATE 21,64 : PRINT "3=FIRE PHASERS" 25550 LOCATE 22,64 : PRINT "4=FIRE TORPEDO" 25600 LOCATE 23,64 : PRINT "6=FIRE PROBE" 25610 LOCATE 24,64 : PRINT "-1=SURRENDER"; 25650 GOSUB 25750 : GOTO 4350 25700 REM RESTORE DAMAGE PANEL 25750 LOCATE 12,74 : PRINT D1;" " 25760 LOCATE 13,74 : PRINT D2;" " 25770 LOCATE 14,74 : PRINT D3;" " 25800 LOCATE 15,74 : PRINT D4;" " 25810 LOCATE 16,74 : PRINT D5;" " 25820 LOCATE 17,74 : PRINT D6;" " 25850 RETURN 25900 REM CLEAR DAMAGES 25950 D1=0 : D2=0 : D3=0 : D4=0 : D5=0 : D6=0 : D7=0 : RETURN 26000 REM FIRE PROBE 26050 IF B=0 THEN Z$="ALL PROBES EXPENDED" : GOTO 12900 26100 IF D6<0 THEN Z$="PROBE COMPUTER OUT" : GOTO 12900 26150 IF B1>0 THEN Z$="PROBE COMPUTER OVERLOAD" : GOTO 12900 26200 LOCATE 19,32 : PRINT "PROBE COORDINATES (11-88)" 26250 LOCATE 20,32 : INPUT A : IF A=0 THEN 7500 26300 B7=INT(A/10) : B8=A-(B7*10) 26350 IF B7 < 1 THEN 26250 26400 IF B7 > 8 THEN 26250 26450 IF B8 < 1 THEN 26250 26500 IF B8 > 8 THEN 26250 26510 B = B-1 26550 IF A = Q1*10+Q2 THEN 31050 'PROBE TO CURRENT QUAD 26600 B1=ABS(SQR(((B7-Q1)*(B7-Q1))+((B8-Q2)*(B8-Q2)))) 26650 B1=INT(B1/2) 26700 IF B1=0 THEN GOSUB 30350 : GOTO 6250 26750 LOCATE 14,32 : PRINT "< PROBE TO";B7;"-";B8;"ETA ="; 26800 PRINT B1;">"; : GOTO 6250 26900 LOCATE 22,32 : GOSUB 30200 26950 LOCATE 22,32 : PRINT Z$ 26960 REM BEEP ROUTINE 27000 Z=1 27050 BEEP : Z=Z+1 27100 IF Z >10 THEN RETURN 27150 GOTO 27050 27200 REM LONG RANGE SCAN 27210 X2=Q1 : Y2=Q2 27250 FOR I = X2-1 TO X2+1 27300 FOR J = Y2-1 TO Y2+1 27350 IF I < 1 THEN 27900 27400 IF I > 8 THEN 27900 27450 IF J < 1 THEN 27900 27500 IF J > 8 THEN 27900 27550 Q3=INT(G(I,J)*.01) 27600 Y3=INT(G(I,J)*.1) MOD 10 27650 IF Y3 <> 0 THEN Y$ = "B" ELSE Y$="." 27750 IF Q3 = 0 THEN A$ = "." ELSE A$=MID$(STR$(Q3),2,1) 27800 LOCATE I+4,J*3+1 : PRINT Y$;A$; 27850 B$(I,J)="+" 27900 NEXT J,I : RETURN 27950 REM CLEAR SHORT RANG SCAN 28000 Z=16 28050 LOCATE Z,1 : GOSUB 30050 : Z=Z+1 28100 IF Z < 24 THEN 28050 28150 S$="B" : IF D1 = 0 THEN RETURN 28200 LOCATE 23,1 : PRINT "SHORT RANGE SENSOR OUT" 28250 S$="O" : RETURN 28300 REM SHORT RANGE SCAN 28350 IF D1 < 0 THEN 28850 28400 A$="+" 28450 IF S$ = " " THEN 28850 'OPERATIONAL? 28500 IF S$ = "O" THEN GOSUB 28000 'BLANK? 28550 LOCATE 16,1 28600 FOR I = 0 TO 7 28610 I1=1 28650 FOR J = 1+(I*8) TO 1+(I*8)+7 28700 LOCATE I+16,I1 : PRINT MID$(Q$,J,1); :I1=I1+3 : NEXT J 28750 PRINT : NEXT I : S$=" " 28850 IF A$ <> "+" THEN RETURN 28900 A$="." : IF B3>0 THEN A$="B" 28950 LOCATE Q1+4,Q2*3+1 : PRINT A$; 29000 IF K3 > 0 THEN PRINT USING "#";K3; : RETURN 29050 PRINT "." : RETURN 29150 LOCATE 6,74 : PRINT USING "####";E : RETURN 29250 LOCATE 7,74 : PRINT P;" " : RETURN 29320 K3=K3-1 : K9=K9-1 29330 IF K3 = 0 THEN T8=T8-1 29350 LOCATE 8,74 : PRINT K9;" " : RETURN 29352 REM MOVE CHAR TO QUAD AND SRS 29354 MID$(Q$,(8*X9)-(8-Y9),1) = X$ 29400 REM MOVE CHAR TO SRS IF ACTIVE 29450 IF S$<> " " THEN 29550 29500 LOCATE X9+15,(Y9-1)*3+1 : PRINT X$; 29550 RETURN 29552 REM CLEAR ENTRY POINTS 29554 X$="." 29555 X9=X : Y9=Y : GOTO 29450 29600 REM KILL KLINGON 29650 LOCATE I+4,32 : PRINT "* DESTROYED *"; 29700 LOCATE I+4,48 29750 PRINT USING "###.##";K1; 29800 LOCATE I+4,55 : PRINT " "; 29850 RETURN 30000 REM CLEAR CRT FOR 22 SPACES 30050 PRINT " "; 30100 RETURN 30101 X=G(Q1,Q2)*.01 : K3=INT(X) : B3=INT((X-K3)*10) 30102 S3=G(Q1,Q2)-INT(G(Q1,Q2)*.1)*10 : RETURN 30150 REM CLEAR CRT FOR 28 SPACES 30200 PRINT " "; : RETURN 30300 REM PROBE DATA RETURNING 30350 IF D2 = 0 THEN 30450 30400 Z$="PROBE WASTED-L/R SCAN OUT" : GOSUB 26900 : GOTO 30550 30450 Z$="PROBE DATA RETURNING" : GOSUB 26900 30500 X2=B7 : Y2=B8 : GOSUB 27250 30550 LOCATE 14,32 : GOTO 30200 31000 REM PROBE TO CURRENT QUAD 31050 IF S$ <> "O" THEN 7500 31100 IF B3 > 0 THEN 31500 31350 Z$ = "NO BASE IN QUADRANT" : GOSUB 26900 : GOTO 6250 31500 LOCATE 16,17 : PRINT "BASE:" 31550 LOCATE 17,17 : PRINT B4;"-";B5;