10 COLOR 15, 9: CLS 15 REM Converted from Commodore BASIC to QBASIC 30 PRINT " BBN Echo Study" 35 PRINT "This program will automatically compute matches between the Bolt Beranek and "; 40 PRINT "Newman test shots on Aug. 10, 1978 and 3 microphone locations in array 2. "; 55 PRINT "Press F12 to print out results or press ESC KEY to QUIT." 60 i = 0: j = 0: k = 0: l = 0: a = 0: p = 17: REM largest number of echoes to be studied now 70 DIM a(17), b(17), c(17), d(17), e(17), f(17), g(17) 80 DIM est(27), cal(27) 85 DIM x(27), y(27), o$(27) 90 DIM sd(9, 9) 95 gx = 322.416666666#: gy = 46.33333333333#: gz = 162.6666666666# 100 PRINT "Which mike do you want to study, 4, 5, or 6"; 110 INPUT mike 111 IF mike < 4 OR mike > 6 THEN PRINT "4, 5 or 6 only!": GOTO 100 120 IF mike = 4 THEN cx = 194: cy = 14: cz = 102.8: fps = 1139.5: shot = 1 130 IF mike = 5 THEN cx = 212: cy = 12.5: cz = 103.4: fps = 1140: shot = 2 140 IF mike = 6 THEN cx = 230: cy = 12: cz = 103.6: fps = 1140.7: shot = 3 150 z = gz - (cz + 3): REM microphone is 3 feet above ground 170 250 FOR i = 0 TO 27 255 READ x(i), y(i), o$(i) 260 NEXT 270 FOR j = 1 TO shot 275 FOR i = 1 TO 17 280 READ a 285 IF j = shot THEN a(i) = ABS(a) 290 NEXT 295 NEXT 300 FOR i = 1 TO 17 305 b(i) = a(i) / 1000 310 NEXT 315 rx = gx: ry = gy: nx = cx: ny = cy 355 best = f(1) 400 REM main calculating subroutine. 405 air = SQR((rx - nx) * (rx - nx) + (ry - ny) * (ry - ny)) 410 blast = SQR(air * air + z * z) 415 af = (blast / fps) - b(1) 420 c(0) = af 425 FOR i = 1 TO 17 430 c(i) = b(i) + c(0) 445 d(i) = fps * c(i) 450 NEXT 455 e(1) = d(1) 460 FOR i = 2 TO 17 465 est(i) = 5: f(i) = 5: g(i) = 0 495 FOR l = 1 TO 27 500 fx = gx - x(l): fy = gy - y(l) 501 fh = SQR(fx * fx + fy * fy) 502 lx = cx - x(l): ly = cy - y(l) 505 lh = SQR(lx * lx + ly * ly) 510 cal(l) = SQR(((fh + lh) * (fh + lh)) + (z * z)) 515 est(l) = ABS(d(i) - cal(l)) 530 IF est(l) < f(i) THEN f(i) = est(l): e(i) = cal(l): g(i) = l 535 NEXT 540 NEXT 545 f(0) = 0 550 FOR i = 2 TO 17 555 f(0) = f(0) + f(i) * f(i) 560 NEXT 565 f(1) = f(0) / (17 - 1): REM sum of squares 750 CLS 760 PRINT "BB&N Echo Study" 765 PRINT "Microphone #"; mike; "in array 2." 770 PRINT "Rifle in Window #1 on the sixth floor of the Texas School Book Depository" 780 PRINT "Rifle Coordinates:"; gx; "x"; gy; "" 790 PRINT "Microphone Coordinates at Blast:"; cx; "x"; cy; "" 795 PRINT "Speed of sound:"; fps; "fps." 800 PRINT "Millisecs Corrected Elapsed sec Elapsed ft Calc.feet Deviation Matches " 810 FOR i = 1 TO 17 815 PRINT USING "#####.### "; a(i); 820 PRINT USING "##.####### "; b(i); 825 PRINT USING "##.####### "; c(i); 830 PRINT USING "#####.#### "; d(i); 835 PRINT USING "#####.#### "; e(i); 836 IF i = 1 THEN PRINT USING "###.#### "; f(1); : IF i = 1 THEN PRINT " **BLAST** "; 840 IF i > 1 AND f(i) >= 5! THEN PRINT "OVER 5.0 "; : ELSE IF i > 1 THEN PRINT USING "###.#### "; f(i); 841 842 IF i = 17 THEN PRINT o$(g(i)); 843 IF i < 17 AND i > 1 THEN PRINT o$(g(i)) 845 846 NEXT i 847 KEY(31) ON 848 ON KEY(31) GOSUB 861 849 IF INKEY$ = CHR$(27) THEN END 850 GOTO 848 851 852 855 860 861 LPRINT "BB&N Echo Study" 862 LPRINT "Microphone #"; mike; "in array 2." 864 LPRINT "Rifle in Window #1 on the sixth floor of the Texas School Book Depository" 865 LPRINT "Rifle Coordinates:"; gx; "x"; gy; "" 866 LPRINT "Microphone Coordinates at Blast:"; cx; "x"; cy; "" 873 LPRINT "Speed of sound:"; fps; "fps.": LPRINT " " 874 LPRINT "Millisec. Corrected Elapsed sec Elapsed ft Calc. feet Deviation Matches " 875 FOR i = 1 TO p 876 LPRINT USING "#####.### "; a(i); 877 LPRINT USING "##.####### "; b(i); 878 LPRINT USING "##.####### "; c(i); 879 LPRINT USING "#####.#### "; d(i); 880 LPRINT USING "#####.#### "; e(i); 881 IF i = 1 THEN LPRINT USING "###.#### "; f(1); : GOTO 885 882 IF f(i) >= 5! THEN LPRINT "OVER 5.0 "; : ELSE LPRINT USING "###.#### "; f(i); 885 IF i = 1 THEN LPRINT "**BLAST**": ELSE LPRINT o$(g(i)) 889 NEXT i 895 RETURN 900 DATA 320,40.3," No Match " 901 DATA 276,72.5,"Trf. light" 902 DATA 202.5,32.5,"TrafficBox" 903 DATA 211,56.25," Pool tip " 904 DATA 199.5,44.75," Pool, NE " 905 DATA 272.5,97," Tree A " 906 DATA 201.5,79.25," Column B " 907 DATA 239.83333333,-40.3333333," DCRB, NW " 908 DATA 208,-40,"DCRB face " 909 DATA 141.5,83.33333333," Tree O " 910 DATA 174,82," Tree N " 911 DATA 248.5,142,"Wall A,NE " 912 DATA 224,118,"North post" 913 DATA 208,96.5,"South post" 914 DATA 158.5,-40.3333333," DCRB, SW " 915 DATA 107.5,83," Tree P " 916 DATA 129.8333333,-39," DCCB, NW " 917 DATA 225.5,152.5,"St.light 2" 918 DATA 229.5,173,"Xway sign " 919 DATA 100.75,96," Column D " 920 DATA 40,96.5," Column E " 921 DATA -33,77," Column F " 922 DATA 38.5,-39," DCCB, SW " 923 DATA 269,222," Tree F " 924 DATA 321,222,"Fence face" 925 DATA 71.5,65.5,"MonumentNE" 926 DATA 84,86,"Marble Mnt" 927 DATA -315,50," P.O., NE " 928 REM data for x(),y(),o$() 1000 REM data for microphone 2(4) 1001 DATA 25: REM loud 1002 DATA 30: REM soft 1003 DATA 31.875: REM loud 1004 DATA 41.875: REM loud 1005 DATA 54.375: REM soft 1006 DATA 60: REM soft 1007 DATA 68.75: REM extra 1008 DATA 74.375: REM loud 1009 DATA 83.75: REM loud 1010 DATA 103.75: REM loud 1011 DATA 113.125: REM loud 1012 DATA 131.25: REM loud 1013 DATA 150: REM loud 1014 DATA 178.125: REM loud 1015 DATA 258.75: REM loud 1016 DATA 448.75: REM loud 1017 DATA 907.8125: REM loud 2000 REM data for microphone 2(5) 2001 DATA 11.375 2002 DATA 14.375 2003 DATA 22.5 2004 DATA 30 2005 DATA 30 2006 DATA 42.5 2007 DATA 64.375 2008 DATA 78.125 2009 DATA 91.25 2010 DATA 106.875 2011 DATA 131.25 2012 DATA 156.25 2013 DATA 173.25 2014 DATA 203.75 2015 DATA 265.75 2016 DATA 461.25 2017 DATA 925 5000 REM data for microphone 2(6) 5001 DATA 9 5002 DATA 16.875 5003 DATA 38.75 5004 DATA 64.375 5005 DATA 91.875 5006 DATA 111.875 5007 DATA 143.125 5008 DATA 156.875 5009 DATA 178.75 5010 DATA 215.625 5011 DATA 227.5 5012 DATA 235 5013 DATA 318.75 5014 DATA 350 5015 DATA 440 5016 DATA 551.875 5017 DATA 951.25 6000 END