10 REM ... STTR5.ECB 15 REM .... CONVERTED FOR UTS400/700 12-07-79 R.E.H. 20 DIM C(9,2),D(8),G(8,8),K(9,3),N(3),Z(8,8) 30 DIM A$(100),D$(96),E$(13),P$(200),Q$(256),S$(64),Z$(64) 40 PRINT "&K&J&J" 50 PRINT TAB(15);"+++<*>+++<*>+++<*>+++" 60 PRINT TAB(15);">!< STTR5 >!<" 70 PRINT TAB(16);"* (STAR-TREK) *" 80 PRINT TAB(15);">!< UTS-700 >!<" 90 PRINT TAB(15);"+++<*>+++<*>+++<*>+++" 100 DEF FNC(Y)=C(Z3,1)+(C(Z3+1,1)-C(Z3,1))*(C1-INT(C1)) 110 DEF FND(D)=SQR((K(I,1)-S1)*(K(I,1)-S1)+(K(I,2)-S2)*(K(I,2)-S2)) 120 DEF FNE(Y)=C(Z3,2)+(C(Z3+1,2)-C(Z3,2))*(C1-INT(C1)) 130 DEF FNR(Z9)=INT((INT(Z9)*RND(0))+(Z9*100)-INT(Z9*100)) 140 LET R$=" ": LET Z$="": LET E$=" DIRECTION = " 150 FOR J=1 TO 16: LET Z$=Z$+" ": NEXT J 160 LET P$=Z$: LET Q$=Z$+Z$+Z$+Z$ 210 GOTO 320 220 INPUT (1,0)"PLAY AGAIN? ---=>",A$ 230 IF LEN(A$)=0 THEN LET A$='N' 240 LET A$=A$(1,1): IF A$<>"Y" THEN 6570 320 LET T=INT(RND(0)*20.2)*40: LET T0=T 340 LET E=INT(RND(0)*81.7)*75: LET E0=E 350 LET P=FNR(9.07): LET P0=P 360 LET Q1=INT(RND(0)*8)+1 370 LET Q2=INT(RND(0)*8)+1 380 LET S1=INT(RND(0)*8)+1 390 LET S2=INT(RND(0)*8)+1 410 LET T7=RND(0) 415 DATA -1,-1,-1,-1,-1,-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1 420 READ C(2,1),C(3,1),C(4,1),C(4,2),C(5,2),C(6,2) 430 READ C(1,1),C(3,2),C(5,1),C(7,2),C(9,1),S,H8,B9,K9 440 READ C(1,2),C(2,2),C(6,1),C(7,1),C(8,1),C(8,2),C(9,2) 450 FOR I=1 TO 8: LET D(I)=0: NEXT I 455 FOR I=1 TO 8 456 FOR J=1 TO 8: LET Z(I,J)=0: NEXT J 457 NEXT I 460 LET D$="WARP ENGINESS.R. SENSORSL.R. SENSORSPHASER CNTRL" 470 LET D$=D$+"PHOTON TUBESDAMAGE CNTRLSHIELD CNTRLCOMPUTER " 480 PRINT : REM *** SET UP GALAXY *** 490 FOR I=1 TO 8 500 FOR J=1 TO 8 501 LET K3=0 502 LET V=INT(RND(0)*10)-6 503 IF V<1 OR V>3 THEN 600 510 ON V GOTO 580,560,540 540 LET K3=INT(RND(0)*9) 550 GOTO 590 560 LET K3=INT(RND(0)*6) 570 GOTO 590 580 LET K3=INT(RND(0)*3) 590 LET K9=K9+K3 600 LET R1=RND(0) 610 IF R1>.75 THEN LET B3=1 ELSE LET B3=0 650 LET B9=B9+B3 660 LET S3=INT(RND(0)*9)+1 670 LET G(I,J)=(K3*100)+(B3*10)+S3 690 NEXT J 700 NEXT I 710 LET K7=K9 715 LET T9=INT((RND(0)*4.3)+(K9*1.6)) 720 PRINT "YOU MUST DESTROY ";K9;" KLINGONS IN ";T9;" STARDATES WITH ";B9 725 PRINT " STARBASE(S), ";E0;" UNITS OF ENERGY, AND ";P0;" PHOTON TORPEDOS" 730 IF B9<=0 THEN LET G(6,3)=414 750 LET K3=0: LET S3=0: LET B3=0: LET S$="" 760 IF Q1<1 OR Q1>8 OR Q2<1 OR Q2>8 THEN 850 ELSE LET X=G(Q1,Q2)*.01 780 LET K3=INT(X) 790 LET B3=INT((X-K3)*10) 800 LET S3=G(Q1,Q2)-INT(G(Q1,Q2)*.1)*10 810 IF K3=0 THEN 850 ELSE PRINT "COMBAT AREA, CONDITION RED "; 830 IF S<=500 THEN PRINT " SHIELDS DANGEROUSLY LOW" ELSE PRINT " " 840 FOR I=1 TO 9: LET K(I,1)=0: LET K(I,2)=0: LET K(I,3)=0: NEXT I 850 FOR J=1 TO 16: LET S$=S$+" ": NEXT J 860 LET Q$=S$+S$+S$+S$ 920 LET A$="<*>": LET Z1=S1: LET Z2=S2 950 GOSUB 5580 960 FOR I=1 TO K3 970 GOSUB 5500 990 LET A$="+++": LET Z1=R1: LET Z2=R2 1010 GOSUB 5580 1020 LET K(I,1)=R1: LET K(I,2)=R2 1040 LET K(I,3)=INT(300*RND(0))+200 1050 NEXT I 1060 FOR I=1 TO B3 1070 GOSUB 5500 1090 LET A$=">!<": LET Z1=R1: LET Z2=R2 1110 GOSUB 5580 1120 NEXT I 1130 FOR I=1 TO S3 1140 GOSUB 5500 1160 LET A$=" * ": LET Z1=R1: LET Z2=R2 1180 GOSUB 5580 1190 NEXT I 1200 IF K3=0 THEN 1220 1210 GOSUB 4240 1220 INPUT (1,0)"<*> COMMAND? (0-7) ---=>",A 1234 IF A<0 OR A>7 THEN 1260 ELSE PRINT 1240 ON A+1 GOTO 1370,1210,2330,2540,2830,3570,3680,4750 1260 PRINT " 0 = SET COURSE" 1270 PRINT " 1 = SHORT RANGE SENSOR SCAN" 1280 PRINT " 2 = LONG RANGE SENSOR SCAN" 1290 PRINT " 3 = FIRE PHASERS" 1300 PRINT " 4 = FIRE PHOTON TORPEDOS" 1310 PRINT " 5 = SHIELD CONTROL" 1320 PRINT " 6 = DAMAGE CONTROL REPORT" 1330 PRINT " 7 = CALL ON LIBRARY COMPUTER" 1350 PRINT : GOTO 1220 1360 REM *** SET COURSE SECTION *** 1370 INPUT "COURSE (1-9)? ---=>",C1 1400 IF C1<1 OR C1>=9 THEN 1220 ELSE PRINT 1410 INPUT "WARP FACTOR (1-8)? ---=>",W1 1430 IF W1<0 OR W1>8 THEN 1220 ELSE PRINT 1440 IF D(1)>=0 OR W1<=.3 THEN 1470 1450 PRINT "WARP ENGINES DAMAGED,MAXIMUM SPEED =.3 "; 1460 GOTO 1370 1470 IF K3<=0 THEN 1520 1480 GOSUB 3900 1500 IF S<0 THEN 4140 ELSE 1570 1520 IF E>0 THEN 1570 1530 IF S<1 THEN 4050 1540 PRINT "YOU HAVE ";E;" UNITS OF ENERGY" 1550 PRINT "SUGGEST YOU GET SOME FROM YOUR SHIELDS,WHICH HAVE ";S;" UNITS LEFT" 1560 GOTO 1370 1570 FOR I=1 TO 8 1580 IF D(I)>=0 THEN 1620 ELSE LET D(I)=D(I)+1 1600 LET R1=I 1610 IF D(I)=0 THEN 1740 1620 NEXT I 1630 IF RND(0)>.2 THEN 1770 ELSE LET R1=INT(RND(0)*8)+1 1650 IF RND(0)>=.5 THEN 1710 ELSE LET D(R1)=D(R1)-RND(0)*5 1670 PRINT "DAMAGE CONTROL REPORTS "; 1680 GOSUB 5680 1690 PRINT A$;" DAMAGED" 1700 GOTO 1770 1710 IF D(R1)<=0 THEN LET D(R1)=D(R1)+RND(0)*5 1720 IF D(R1)<=0 THEN 1710 1740 PRINT "DAMAGE CONTROL REPORTS "; 1750 GOSUB 5680 1760 PRINT A$;" STATE OF REPAIR IMPROVED" 1770 LET N=INT(W1*8) 1780 LET A$=" ": LET Z1=S1: LET Z2=S2 1810 GOSUB 5580 1830 LET S8=(S1*30)+(S2*4)-35 1840 LET X=S1: LET Y=S2 1860 LET Z3=INT(C1) 1870 LET X1=FNC(Y) 1880 LET Z8=INT(C1): LET X2=C(Z3,2)+(C(Z3+1,2)-C(Z3,2))*(C1-Z8) 1890 FOR I=1 TO N 1900 LET S1=S1+X1: LET S2=S2+X2 1920 IF S1<1 OR S1>=9 OR S2<1 OR S2>=9 THEN 2150 1930 LET S8=(S1*32)+(S2*4)-35 1940 LET P$=Q$(S8,S8+2) 2000 IF P$=" " THEN 2050 2010 PRINT " WARP ENGINES SHUTDOWN AT SECTOR ";S1;S2 2015 PRINT " BAD NAVIGATION ... COLLISION WITH ";P$ 2020 LET S1=INT(S1-X1): LET S2=INT(S2-X2) 2040 GOTO 2060 2050 NEXT I 2060 LET A$="<*>": LET Z1=S1: LET Z2=S2 2090 GOSUB 5580 2100 LET E=E-N+5 2110 IF W1<1 THEN 2130 ELSE LET T=T+1 2125 LET T9=T9-1 2130 IF T9>0 THEN 6390 ELSE 4100 2150 LET X=Q1*8+X+X1*N: LET Y=Q2*8+Y+X2*N 2170 LET Q1=INT(X/8): LET Q2=INT(Y/8) 2190 LET S1=INT(X-Q1*8): LET S2=INT(Y-Q2*8) 2210 IF S1<>0 THEN 2240 ELSE LET S1=8 2220 LET Q1=Q1-1 2240 IF S2<>0 THEN 2270 ELSE LET S2=8 2250 LET Q2=Q2-1 2270 LET T=T+1 2280 LET T9=T9-1 2290 LET E=E-N+5 2300 IF T9>0 THEN 750 ELSE 1400 2310 REM *** LONG RANGE SENSOR SCAN SECTION *** 2330 IF D(3)<0 THEN PRINT "L.R. SENSORS INOPERABLE" ELSE 2370 2360 GOTO 1220 2370 PRINT " L.R. SENSOR SCAN FOR QUADRANT ";Q1;Q2 2380 PRINT " . ----- . ----- . ----- ." 2390 FOR I=Q1-1 TO Q1+1 2400 LET N(1)=0: LET N(2)=0: LET N(3)=0 2410 FOR J=Q2-1 TO Q2+1 2420 IF I<1 OR I>8 OR J<1 OR J>8 THEN 2460 2430 LET N(J-Q2+2)=G(I,J) 2440 IF D(8)>=0 THEN LET Z(I,J)=G(I,J) 2460 NEXT J 2470 PRINT " :";TAB(3);N(1);TAB(9);":";TAB(11); 2475 PRINT N(2);TAB(17);":";TAB(19);N(3);TAB(25);":" 2480 PRINT " . ----- . ----- . ----- ." 2490 NEXT I 2500 GOTO 1220 2510 REM *** PHASOR CONTROL *** 2540 IF K3<=0 THEN 3780 2550 IF D(4)<0 THEN PRINT "PHASOR CONTROL DISABLED" ELSE 2580 2570 GOTO 1220 2580 IF D(8)<0 THEN PRINT "COMPUTER FAILURE HAMPERS ACCURACY" ELSE 2600 2600 PRINT "PHASORS LOCKED ON TARGET. ENERGY AVAILABLE= ";E 2610 INPUT "NUMBER OF UNITS TO FIRE? ",X 2630 IF X<=0 THEN 1220 ELSE PRINT 2640 IF E-X<0 THEN 2580 2650 LET E=E-X 2660 GOSUB 3900 2670 IF D(8)<0 THEN LET X=X*RND(0) 2690 FOR I=1 TO 9 2700 IF K(I,3)<=0 THEN 2790 2710 LET H=(X/K3/FND(0))*(2*RND(0)): LET H=INT(H) 2720 LET K(I,3)=K(I,3)-H 2730 IF K(I,3)<=0 THEN 2770 2735 PRINT H;" UNITS HIT ON KLINGON AT SECTOR ";K(I,1);K(I,2) 2740 PRINT TAB(15);" HIS SHIELDS READ ";K(I,3);" UNITS LEFT." 2760 IF K(I,3)>0 THEN 2790 2770 GOSUB 3800 2780 IF K9<=0 THEN 4170 2790 NEXT I 2800 IF E<0 THEN 4140 ELSE 6390 2820 REM *** PHOTON TORPEDO SECTION *** 2830 IF D(5)<0 THEN PRINT "PHOTON TUBES NOT OPERATIONAL" ELSE 2860 2850 GOTO 1220 2860 IF P<=0 THEN PRINT "ALL PHOTON TORPEDOS EXPENDED" ELSE 2890 2880 GOTO 1220 2890 INPUT "TORPEDO COURSE(1-9)? ---=>",C1 2920 IF C1<1 OR C1>=9 THEN 1220 2930 LET Z3=INT(C1) 2940 LET X1=FNC(Y) 2950 LET Z8=INT(C1): LET X2=C(Z3,2)+(C(Z3+1,2)-C(Z3,2))*(C1-Z8) 2960 LET X=S1: LET Y=S2 2980 LET P=P-1 2990 PRINT "TORPEDO TRACK:" 3000 LET X=X+X1: LET Y=Y+X2 3020 IF X<1 OR X>=9 OR Y<1 OR Y>=9 THEN 3520 3030 PRINT " ";X;" ";CHR(16);" ";Y 3050 LET A$=" ": LET Z1=X: LET Z2=Y 3080 GOSUB 5750 3090 IF Z3<>0 THEN 3000 3110 LET A$="+++": LET Z1=X: LET Z2=Y 3140 GOSUB 5750 3150 IF Z3=0 THEN 3320 3160 PRINT "<=- KLINGON DESTROYED -=>" 3165 LET E=E+250 3170 LET K3=K3-1 3180 LET K9=K9-1 3190 IF K9<=0 THEN 4170 3200 FOR I=1 TO 9 3210 IF INT(X)=K(I,1) AND INT(Y)=K(I,2) THEN 3300 3230 NEXT I 3240 FOR I=1 TO 9 3250 IF K(I,3)>0 THEN 3300 3280 NEXT I 3290 GOTO 3460 3300 LET K(I,3)=0 3310 GOTO 3460 3320 LET A$=" * ": LET Z1=X: LET Z2=Y 3350 GOSUB 5750 3360 IF Z3=1 THEN PRINT "YOU CAN'T DESTROY STARS!!!" ELSE 3390 3380 GOTO 3520 3390 LET A$=">!<": LET Z1=X: LET Z2=Y 3420 GOSUB 5750 3430 IF Z3=0 THEN 3000 3440 PRINT "*** STAR BASE DESTROYED *** ...CONGRATULATIONS!!!" 3450 LET B3=B3-1 3460 LET A$=" ": LET Z1=X: LET Z2=Y 3490 GOSUB 5580 3500 LET G(Q1,Q2)=(K3*100)+(B3*10)+S3 3510 GOTO 3530 3520 PRINT ">=- TORPEDO MISSED -=<" 3530 GOSUB 3900 3540 IF E<0 THEN 4140 ELSE 6390 3560 REM >>>===--- SHIELD CONTROL SECTION ---===<<< 3570 IF D(7)<0 THEN PRINT "SHIELD CONTROL INOPERABLE" ELSE 3600 3590 GOTO 1220 3600 PRINT "ENERGY AVAIBLE ";E+S;" NUMBER OF UNITS TO SHIELDS? ---=>"; 3610 INPUT X 3620 IF X<=0 THEN 1220 3630 IF E+S-X<=0 THEN 3600 ELSE LET E=E+S-X 3650 LET S=X 3660 GOTO 1220 3670 REM >>>===--- DAMAGE CONTROL SECTION ---===<<<" 3680 IF D(6)<0 THEN PRINT "DAMAGE CONTROL REPORT NOT AVAILABLE" ELSE 3710 3700 GOTO 1220 3710 PRINT "DEVICE","STATE OF REPAIR" 3720 FOR R1=1 TO 8 3730 GOSUB 5680 3740 PRINT A$,D(R1) 3750 NEXT R1 3770 GOTO 1220 3780 PRINT "S.R. SENSOR SCAN REPORTS NO KLINGONS IN THIS QUADRANT." 3790 GOTO 1220 3800 PRINT " '+++' KLINGON AT SECTOR ";K(I,1);K(I,2);" DESTROYED '+++'" 3805 LET E=E+250 3820 LET K3=K3-1 3830 LET K9=K9-1 3840 LET A$=" ": LET Z1=K(I,1): LET Z2=K(I,2) 3870 GOSUB 5580 3880 LET G(Q1,Q2)=(K3*100)+(B3*10)+S3 3890 RETURN 3900 IF C$<>"DOCKED" THEN 3930 3910 PRINT "STAR BASE SHIELDS PROTECT ENTERPRISE" 3920 RETURN 3930 IF K3<=0 THEN 4040 ELSE LET H=0 3950 FOR I=1 TO 9 3960 IF K(I,3)>0 THEN LET H=H+(K(I,3)/FND(0))*RND(0)*2 3990 NEXT I 4000 LET H=INT(H): LET S=S-H 4010 LET P$=" UNITS HIT ENTERPRISE (" 4020 IF S>=0 THEN PRINT H;P$;S;" LEFT)" ELSE 4140 4040 RETURN 4050 PRINT "THE ENTERPRISE IS DEAD IN SPACE...PRIVATE!!!" 4070 IF K3<=0 THEN 4150 4080 GOSUB 3900 4090 GOTO 4070 4100 PRINT "IT IS STARDATE ";T 4110 PRINT "THE FEDERATION HAS BEEN CONQUERED": PRINT 4130 GOTO 4150 4140 PRINT "THE ENTERPRISE HAS BEEN DESTROYED. THE FEDERATION WILL BE CONQUERED!" 4150 PRINT "THERE ARE STLL ";K9;" KLINGON BATTLE CRUISERS!!!" 4160 GOTO 220 4170 PRINT "THE LAST KLINGON '+++' IN THE GALAXY HAS BEEN DESTROYED" 4180 PRINT "THE FEDERATION HAS BEEN SAVED (WAS IT EVER IN TROUBLE?)" 4190 PRINT "YOUR EFFICIENCY RATING IS";((K7/(T-T0))*1000) 4210 PRINT "YOUR ACTUAL TIME OF MISSION IS ";((RND(0)-T7)/1000);" SEC." 4220 GOTO 220 4230 REM >>>===--- SHORT RANGE SENSOR SCAN ---===<<< 4240 FOR I=S1-1 TO S1+1 4250 FOR J=S2-1 TO S2+1 4260 IF I<1 OR I>8 OR J<1 OR J>8 THEN 4320 4270 LET A$=">!<": LET Z1=I: LET Z2=J 4300 GOSUB 5750 4310 IF Z3=1 THEN 4360 4320 NEXT J 4330 NEXT I 4350 GOTO 4440 4360 LET C$="DOCKED" 4380 LET E=5000 4390 LET P=10 4400 IF S<>0 THEN PRINT "SHIELDS DROPPED FOR DOCKING " ELSE 4510 4420 LET S=0 4430 GOTO 4510 4440 IF K3>0 THEN LET C$=" RED" 4450 IF K3>0 THEN 4510 4460 IF E>E0*.1 THEN LET C$=" GREEN" ELSE LET C$="YELLOW" 4510 IF D(2)<0 THEN PRINT "S.R. SENSORS OUT OF ORDER" ELSE 4540 4530 GOTO 4640 4540 PRINT " 1 2 3 4 5 6 7 8" 4550 PRINT " ---.---.---.---.---.---.---.---" 4560 PRINT " '1'";Q$(1,31);"'1'" 4570 PRINT " '2'";Q$(33,63);"'2' STARDATE ";T 4580 PRINT " '3'";Q$(65,95);"'3' CONDITION ";C$ 4590 PRINT " '4'";Q$(97,127);"'4' QUADRANT ";Q1;Q2 4600 PRINT " '5'";Q$(129,159);"'5' SECTOR ";S1;S2 4610 PRINT " '6'";Q$(161,191);"'6' ENERGY ";E 4620 PRINT " '7'";Q$(193,223);"'7' PHOTONS ";P 4630 PRINT " '8'";Q$(225,255);"'8' SHIELDS ";S 4640 PRINT " ---.---.---.---.---.---.---.---" 4650 PRINT " 1 2 3 4 5 6 7 8" 4660 RETURN 4740 REM *** COMPUTER CONTROL SECTION *** 4750 IF D(8)<0 THEN PRINT "COMPUTER DISABLED" ELSE 4780 4770 GOTO 1220 4780 INPUT (1,0)"COMPUTER ACTIVE AND AWAITING COMMAND ",A 4795 IF A<0 OR A>3 THEN 4810 ELSE PRINT 4800 ON A+1 GOTO 4860,4950,5000,4941 4810 PRINT "COMPUTER FUNCTIONS AVAILABLE:": PRINT 4820 PRINT " 0 = CUMULATIVE GALACTIC REPORT" 4830 PRINT " 1 = STATUS REPORT" 4840 PRINT " 2 = KLINGON DIRECTION AND DISTANCE" 4845 PRINT " 3 = THE CALCULATOR" 4850 GOTO 4780 4860 PRINT "COMPUTER RECORD OF GALAXY FOR QUADRANT ";Q1;Q2 4880 PRINT " 1 2 3 4 5 6 7 8" 4890 PRINT " ----- ----- ----- ----- ----- ----- ----- -----" 4900 FOR I=1 TO 8 4905 PRINT I;":";TAB(4);Z(I,1);TAB(10);Z(I,2);TAB(16);Z(I,3); 4910 PRINT TAB(22);Z(I,4);TAB(28);Z(I,5);TAB(34);Z(I,6); 4915 PRINT TAB(40);Z(I,7);TAB(46);Z(I,8);TAB(51);":";I 4920 NEXT I 4930 PRINT " ----- ----- ----- ----- ----- ----- ----- -----" 4940 GOTO 1220 4941 LET H8=1 4942 PRINT " YOU ARE IN QUADRANT(";Q1;Q2;" )SECTOR(";S1;S2;" )" 4944 PRINT "SHIP AND TARGET COORDINATES ARE?" 4945 INPUT " (4 NUMBERS) ---=>",C1,A,W1,X 4946 GOTO 5020 4950 PRINT : PRINT " STATUS REPORT": PRINT 4960 PRINT "NUMBER OF KLINGONS LEFT=";K9 4970 PRINT "NUMBER OF STARDATES LEFT=";T9 4980 PRINT "NUMBER OF STARBASES LEFT=";B9 4990 PRINT : GOTO 3680 5000 LET H8=0 5020 FOR I=1 TO 9 5025 IF H8=1 THEN 5130 5030 IF K(I,3)<=0 THEN 5380 ELSE LET C1=S1 5040 LET S8=(Z1*32)+(Z2*4)-35: PRINT Q$(S8,S8+2) 5050 LET A=S2 5060 LET W1=K(I,1) 5070 LET X=K(I,2) 5130 LET X=X-A 5140 LET A=C1-W1 5141 IF A<>0 THEN 5144 5142 IF X>0 THEN PRINT E$;"1 "; ELSE PRINT E$;"5 "; 5143 GOTO 5360 5144 IF X<>0 THEN 5150 5145 IF A>0 THEN PRINT E$;"3 "; ELSE PRINT E$;"7 "; 5146 GOTO 5360 5150 IF X<0 THEN 5191 5160 IF A<0 THEN LET C1=7 ELSE LET C1=1 5190 GOTO 5197 5191 IF A<0 THEN LET C1=5 ELSE LET C1=3 5197 IF A*X<0 THEN 5320 5200 IF ABS(A)<=ABS(X) THEN 5230 5210 PRINT E$;C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)); 5220 GOTO 5360 5230 PRINT E$;C1+(ABS(A)/ABS(X)); 5240 GOTO 5360 5320 IF ABS(A)>=ABS(X) THEN 5350 5330 PRINT E$;C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)); 5340 GOTO 5360 5350 PRINT E$;C1+(ABS(X)/ABS(A)); 5360 PRINT " DISTANCE = ";(SQR((X*X)+(A*A)));" OR ";(SQR((X*X)+(A*A)))/8 5370 IF H8=1 THEN 1220 5380 NEXT I 5390 GOTO 1220 5420 REM *** SUB FOR KLINGON RANDOM MOVES *** 5500 LET A$=" " 5505 LET R1=INT(RND(0)*8)+1 5510 LET R2=INT(RND(0)*8)+1 5530 LET Z1=R1: LET Z2=R2 5550 GOSUB 5750 5560 IF Z3=0 THEN 5505 5570 RETURN 5580 REM *** INSERTION FOR STRING ARRAY FOR QUADRANT *** 5590 LET S8=(Z1*32)+(Z2*4)-35 5600 LET Q$(S8,S8+2)=A$ 5670 RETURN 5680 REM *** PRINT DEVICE FOR STRING ARRAY 5690 LET S8=R1*12-11 5700 LET A$=D$(S8,R1*12) 5710 RETURN 5750 REM *** STRING COMPARISON IN QUADRANT ARRAY *** 5760 LET S8=(Z1*32)+(Z2*4)-35 5800 LET P$=Q$(S8,S8+2) 5865 IF P$=A$ THEN LET Z3=1 ELSE LET Z3=0 5880 RETURN 5885 REM *** MOVE THE KLINGONS AROUND *** 6390 LET A$=" " 6395 FOR I=1 TO 9 6400 IF K(I,1)<=0 OR K(I,2)<=0 THEN 6450 ELSE LET Z1=K(I,1) 6430 LET Z2=K(I,2) 6440 GOSUB 5580 6450 NEXT I 6460 FOR I=1 TO 9 6470 IF K(I,3)<=0 THEN 6550 6480 GOSUB 5500 6490 LET A$="+++": LET Z1=R1: LET Z2=R2 6520 GOSUB 5580 6530 LET K(I,1)=R1: LET K(I,2)=R2 6550 NEXT I 6560 GOTO 1200 6570 END