home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design3 / mf10res.bas < prev    next >
BASIC Source File  |  1984-11-20  |  15KB  |  484 lines

  1. 5 CLEAR
  2. 10 REM MF 10 /5 FILTER RESISTOR SELECTION PROGRAM
  3. 15 DIM D(97)
  4. 17 DIM F(96,2)
  5. 20 PRINT "This program selects resistor values for the different modes"
  6. 30 PRINT"of the MF10. You input the type of filter response and values"
  7. 40 PRINT"of Q,Ho,Fo and clock ratio you will use. The program will find"
  8. 50 PRINT"the best 1% or 5% resistor values."
  9. 55 INPUT "Would you like a hard copy";PR$:PR$=LEFT$(PR$,1)
  10. 56 IF PR$<>"Y" AND PR$<>"N" GOTO 55
  11. 60 INPUT "What resistor tolerance 5% or 1%(Enter 1 or 5)";TOL
  12. 63 IF TOL<>1 AND TOL<>5 THEN GOTO 60
  13. 65 GOSUB 6020
  14. 70 REM
  15. 80 MNL1$="6A or 6B":MNL2$="1,1A,2,3 or 3A":MNH2$="3 or 3A"
  16. 90 MNB2$=MNL2$:MNN2$="1,2 or 3A":MNA2$="4"
  17. 100 PRINT"Enter the filter response required Low pass(L),High pass(H),"
  18. 110 INPUT"Band pass(B),Notch(N) and All pass(A)";FR$
  19. 120 IF FR$="L" THEN GOSUB 5300 ELSE GOTO 130
  20. 125 IF ORD=1 THEN MN$=MNL1$ :GOTO 230
  21. 126 MN$=MNL2$:GOTO 230
  22. 130 IF FR$="H" THEN GOSUB 5300 ELSE GOTO 140
  23. 135 IF ORD=1 THEN PRINT"Mode 6A is available.":MD$="6A":GOTO 2600
  24. 136 MN$=MNH2$:GOTO 230
  25. 140 IF FR$="B" THEN MN$=MNB2$:GOTO 230
  26. 150 IF FR$="N" THEN MN$=MNN2$:GOTO 230
  27. 160 IF FR$="A" THEN MN$=MNA2$:GOTO 230
  28. 170 GOSUB 5000
  29. 180 GOTO 80
  30. 230 PRINT "The modes available are " MN$ "(Enter " MN$ ")";
  31. 235 INPUT "";MD$
  32. 240 V=INSTR (MN$,MD$)
  33. 250 IF V<>0 THEN GOTO 260
  34. 255 PRINT "This mode is not valid for the response requested!":GOTO 230
  35. 260 IF MD$="1" GOTO 360
  36. 270 IF MD$="1A"GOTO 600
  37. 280 IF MD$="2" GOTO 800
  38. 290 IF MD$="3" GOTO 800
  39. 300 IF MD$="3A" GOTO 1200
  40. 310 IF MD$="4" THEN GOTO 1700
  41. 330 IF MD$="6A" THEN GOTO 2600
  42. 340 IF MD$="6B" THEN GOTO 2900
  43. 345 V=0:GOTO 250
  44. 350 GOTO 5950
  45. 360 GOSUB 5100
  46. 370 GOSUB 5200
  47. 380 GOSUB 5400
  48. 390 X=QX:GOSUB 6000
  49. 395 IF R1=0 OR R1=R2 THEN GOTO 420
  50. 400 IF FR$="N"THEN R3R=R1:R2R=R2:GOTO 460
  51. 410 GOTO 470
  52. 420 X=HX:J1=J:GOSUB 6000
  53. 425 IF R1=0 OR R1=R2 THEN GOTO 550
  54. 427 IF FR$="N" GOTO 550
  55. 430 R1R=R2
  56. 440 IF FR$="L" THEN R2R=R1:R3R=R2R*J1:GOTO 520
  57. 450 IF FR$="B" THEN R3R=R1:R2R=R3R/J1:GOTO 520
  58. 455 GOTO 255
  59. 460 IF R2R>R3R THEN R1R=R2R ELSE R1R=R3R
  60. 465 GOTO 520
  61. 470 R3R=R1:R2R=R2
  62. 475 IF FR$="L" THEN R1=R2R:GOTO 490
  63. 480 IF FR$="B" THEN R1=R3R:GOTO 490
  64. 485 GOTO 255
  65. 490 K=HX:B=1
  66. 500 GOSUB 7040
  67. 510 R1R=R2
  68. 520 HL=-(R2R/R1R):HB=-(R3R/R1R):HNX=-(R3R/R2R):QX=-(HNX)
  69. 524 GOSUB 5700
  70. 525 GOSUB 5800
  71. 530 PRINT "FC="FCLK" Q="QX" HL="HL" HB="HB" HN="HNX
  72. 535 IF PR$="Y" THEN LPRINT "FC="FCLK" Q="QX" HL="HL" HB="HB" HN="HNX
  73. 540 GOTO 5950
  74. 550 R2R=7.5:R3R=J1*7.5
  75. 555 IF FR$="L" THEN R1R=R2R/J:GOTO 520
  76. 560 IF FR$="B" THEN R1R=R3R/J:GOTO 520
  77. 565 IF FR$="N" THEN GOTO 460
  78. 570 GOTO 255
  79. 599 REM MODE 1A
  80. 600 GOSUB 5100
  81. 610 PRINT "Enter the center frequency (Fo) and the quality"
  82. 620 PRINT "factor (Q) values (don't abreviate)."
  83. 630 INPUT FX,QX
  84. 635 GOSUB 5400
  85. 640 X=QX:GOSUB 6000
  86. 645 IF R1=0 OR R1=R2 THEN R2R=7.5:R3R=R2R*J:GOTO 655
  87. 650 R3R=R1:R2R=R2
  88. 655 R1R=0 :R4R=0 :HL=1:HB1=-R3R/R2R:HB2=1:Q=-HB1
  89. 659 GOSUB 5700
  90. 660 GOSUB 5800
  91. 665 PRINT "HL="HL" HB1="HB1" HB2="HB2" FC="FCLK" Q="Q
  92. 666 IF PR$="Y" THEN LPRINT "HL="HL" HB1="HB1" HB2="HB2" FC="FCLK" Q="Q
  93. 670 GOTO 5950
  94. 799 REM MODE 3
  95. 800 GOSUB 5100
  96. 810 GOSUB 5500
  97. 820 GOSUB 5200
  98. 830 GOSUB 5400
  99. 840 GOSUB 5600
  100. 850 X=FR:GOSUB 6000
  101. 860 IF R1=R2 OR R1=0 GOTO 1030
  102. 870 R2R=R1:R4R=R2
  103. 875 IF MD$="2" THEN N=(R2R/R4R+1)^.5 :GOTO 890
  104. 880 N=(R2R/R4R)^.5
  105. 890 K=QX/N
  106. 900 B=2:R1=R2R
  107. 910 GOSUB 7030
  108. 920 R3R=R1
  109. 925 IF MD$="2" THEN GOTO 2000
  110. 930 IF FR$="L" THEN R1=R4R:GOTO 970
  111. 940 IF FR$="B" THEN R1=R3R:R2=0:GOTO 970
  112. 950 IF FR$="H" THEN R1=R2R:GOTO 970
  113. 960 GOTO 255
  114. 970 B=1:K=HX
  115. 980 GOSUB 7030
  116. 990 R1R=R2
  117. 1000 FO=FC/CLR*N:Q=N*R3R/R2R:HL=-R4R/R1R:HB=-R3R/R1R:HH=-R2R/R1R
  118. 1005 GOSUB 5700
  119. 1007 IF MD$="3A" GOTO 1360
  120. 1009 GOSUB 5800
  121. 1010 PRINT "Q="Q" Fo="FO" HL="HL" HB="HB" HH="HH
  122. 1011 IF PR$="Y" THEN LPRINT "Q="Q" Fo="FO" HL="HL" HB="HB" HH="HH
  123. 1020 GOTO 5950
  124. 1030 J1=J
  125. 1034 IF MD$="2" THEN X=QX/(J1+1)^.5 : GOTO 1045
  126. 1040 X=QX/(J1^.5)
  127. 1045 GOSUB 6000
  128. 1050 IF R1=R2 OR R1=0 GOTO 1060
  129. 1055 R3R=R1:R2R=R2:R4R=R2R/J1
  130. 1057 IF MD$="2" THEN N=(R2R/R4R+1)^.5:GOTO 2000
  131. 1058 N=(R2R/R4R)^.5:GOTO 930
  132. 1060 J2=J
  133. 1070 X=HX:GOSUB 6000
  134. 1080 IF R1=R2 OR R1=0 GOTO 1150
  135. 1085 IF MD$="2" THEN GOTO 2200
  136. 1090 IF FR$="L" THEN R4R=R1:R2R=R4R*J1:R3R=R2R*J2:GOTO 1130
  137. 1100 IF FR$="B" THEN R3R=R1:R2R=R3R/J2:R4R=R2R/J1:GOTO 1130
  138. 1110 IF FR$="H" THEN R2R=R1:R4R=R2R/J1:R3R=R2R*J2:GOTO 1130
  139. 1120 GOTO 255
  140. 1130 R1R=R2
  141. 1135 N=(R2R/R4R)^.5
  142. 1140 GOTO 1000
  143. 1150 R2R=7.5:R4R=R2R/J1:R3R=R2R*J2
  144. 1154 IF MD$="2" THEN N=(R2R/R4R+1)^.5 : GOTO 2400
  145. 1156 N=(R2R/R4R)^.5
  146. 1160 IF FR$="B" THEN R1R=R3R/J :GOTO 1000
  147. 1170 IF FR$="H" THEN R1R=R2R/J:GOTO 1000
  148. 1180 IF FR$="L" THEN R1R=R4R/J:GOTO 1000
  149. 1190 GOTO 255
  150. 1200 REM MODE 3A
  151. 1210 GOSUB 5100
  152. 1220 GOSUB 5500
  153. 1230 PRINT"Input in order the center frequency (Fo), notch frequency (Fn)"
  154. 1240 PRINT"and the quality factor."
  155. 1250 INPUT;FX,NF3,QX
  156. 1255 PRINT
  157. 1260 PRINT"Which MF10 output gain should have priority the low pass (L),"
  158. 1270 PRINT"high pass (H) or band pass (B)?"
  159. 1280 INPUT ;FR2$
  160. 1281 PRINT
  161. 1282 FR1$=FR$:FR$=FR2$
  162. 1283 IF FR2$="L" THEN A$="low pass":GOTO 1286
  163. 1284 IF FR2$="H" THEN A$="high pass":GOTO 1286
  164. 1285 IF FR2$="B" THEN A$="band pass" ELSE GOTO 1260
  165. 1286 PRINT "Enter the gain (Ho) for the " A$ " output?"
  166. 1287 INPUT ;HX
  167. 1288 PRINT
  168. 1290 PRINT"Which should have priority the gain as the input frequency approaches"
  169. 1295 PRINT"zero (Hon1) or the gain as the input frequency approaches Fclk/2 (Hon2)"
  170. 1300 INPUT "ENTER HON1 OR HON2";HN$
  171. 1305 IF HN$<>"HON1" AND HN$<>"HON2" GOTO 1300
  172. 1310 PRINT"What value should " HN$ " be?"
  173. 1320 INPUT ;HN
  174. 1325 PRINT
  175. 1350 GOTO 830:REM GOTO MODE 3
  176. 1360 Q1=Q:X=(NF3*CLR/FC)^2:GOSUB 6000
  177. 1365 IF R1=R2 OR R1=0 GOTO 1470
  178. 1370 RH3=R1:RL3=R2
  179. 1380 IF HN$="HON2" GOTO 1410
  180. 1390 K=HN/HL:IF K<1 THEN K=-K
  181. 1392 B=2:R1=RL3:GOSUB 7030
  182. 1400 GOTO 1420
  183. 1410 K=HN/HH:IF K<1 THEN K=-K
  184. 1415 R1=RH3:B=2:GOSUB 7030
  185. 1420 RG=R1
  186. 1430 HON1=-RG/RL3*HL:HON2=-RG/RH3*HH:NFX=(RH3/RL3)^.5*FC/CLR
  187. 1434 GOSUB 5900
  188. 1435 GOSUB 5800
  189. 1436 GOSUB 5830
  190. 1450 PRINT "FO="FO" FN="NFX" Q="Q1" HL="HL" HB="HB" HH="HH" HON1="HON1" HON2="HON2
  191. 1455 IF PR$="Y" THEN LPRINT "FO="FO" FN="NFX" Q="Q1" HL="HL" HB="HB" HH="HH" HON1="HON1" HON2="HON2
  192. 1460 GOTO 5950
  193. 1470 J3=J
  194. 1480 IF HN$="HON2" GOTO 1530
  195. 1490 X=HN/HH:IF X<1 THEN X=-X
  196. 1500 GOSUB 6000
  197. 1510 IF R1=R2 OR R1=0 GOTO 1580
  198. 1515 RH3=R2:RL3=RH3/J3
  199. 1520 RG=R1:GOTO 1430
  200. 1530 X=HN/HL:IF X<1 THEN X=-X
  201. 1540 GOSUB 6000
  202. 1550 IF R1=R2 OR R1=0 GOTO 1590
  203. 1560 RL3=R2:RH3=RL3*J3
  204. 1570 GOTO 1520
  205. 1580 RH3=7.5:RL3=7.5/J3:GOTO 1600
  206. 1590 RL3=7.5:RH3=7.5*J3
  207. 1600 RG=J*7.5:GOTO 1430
  208. 1700 REM MODE 4
  209. 1710 GOSUB 5100
  210. 1720 IF FR$><"A" THEN V=0:GOTO 250
  211. 1730 PRINT"Enter in order the center frequency (Fo) and the quality factor (Q)?"
  212. 1740 INPUT ;FX,QX
  213. 1745 PRINT
  214. 1750 GOSUB 5400
  215. 1760 X=QX:GOSUB 6000
  216. 1770 IF R1=R2 OR R1=0 GOTO 1820
  217. 1780 R3R=R1:R2R=R2:R1R=R2R
  218. 1790 Q=R3R/R2R:QZ=R3R/R1R:HL=-(R2R/R1R+1):HB=-R3R/R2R*(1+R2R/R1R):HA=R2R/R1R
  219. 1794 GOSUB 5700
  220. 1795 GOSUB 5800
  221. 1800 PRINT"Qo="Q" Qz="QZ" HL="HL" HB="HB" HA="HA
  222. 1805 IF PR$="Y" THEN LPRINT "Qo="Q" Qz="QZ" HL="HL" HB="HB" HA="HA
  223. 1810 GOTO 5950
  224. 1820 R1R=7.5:R2R=7.5:R3R=J*7.5:GOTO 1790
  225. 2000 IF FR$="L" OR FR$="HN1" THEN R1=R2R :K=HX*(R2R/R4R+1):GOTO 2030
  226. 2010 IF FR$="B" THEN R1=R3R : K=HX :GOTO 2030
  227. 2020 IF FR$="HN2" THEN R1=R2R : K=HX : GOTO 2030
  228. 2025 GOTO 255
  229. 2030 B=1
  230. 2040 GOSUB 7030
  231. 2050 R1R=R2
  232. 2060 X1=R2R/R4R+1:X2=X1^.5:FO=FC/CLR*X2:NFX=FC/CLR:QO=X2/R2R*R3R:HL=-R2R/R1R/X1
  233. 2065 HB=-R3R/R1R:HN2=-R2R/R1R
  234. 2068 GOSUB 5700
  235. 2070 GOSUB 5800
  236. 2080 PRINT"FO="FO" FN="NFX" Q="QO" HL="HL" HB="HB" HN1="HL" HN2="HN2
  237. 2085 IF PR$="Y" THEN LPRINT "FO="FO" FN="NFX" Q="QO" HL="HL" HB="HB" HN1="HL" HN2="HN2
  238. 2090 GOTO 5950
  239. 2200 IF FR$="B" THEN R3R=R1:R2R=R3R/J2:R4R=R2R/J1:GOTO 2220
  240. 2210 R2R=R1:R3R=R2R*J2:R4R=R2R*J1
  241. 2220 GOTO 2050
  242. 2400 IF FR$="B" THEN R1R=R3R/J :GOTO 2060
  243. 2410 R1R=R2R/J : GOTO 2060
  244. 2600 REM MODE 6A
  245. 2610 PRINT"Enter in order the center frequency (Fo), clock frequency (Fclk),"
  246. 2620 PRINT"and the gain (Ho)?"
  247. 2630 INPUT ;FX,FCLK,HX
  248. 2635 PRINT
  249. 2640 GOSUB 5100
  250. 2650 FR=FX/FCLK*CLR
  251. 2660 X=FR:GOSUB 6000
  252. 2670 IF R1=0 OR R1=R2 THEN GOTO 2780
  253. 2680 R2R=R1:R3R=R2
  254. 2690 IF FR$="H" THEN R1=R2R:GOTO 2720
  255. 2700 IF FR$="L" THEN R1=R3R:GOTO 2720
  256. 2710 GOTO 255
  257. 2720 B=1:K=HX:GOSUB 7030
  258. 2730 R1R=R2:R4R=0
  259. 2740 FO=FCLK/CLR*R2R/R3R:HL=-R3R/R1R:HH=-R2R/R1R
  260. 2745 GOSUB 5700
  261. 2750 GOSUB 5800
  262. 2760 PRINT "HL="HL" HH="HH" FO="FO
  263. 2765 IF PR$="Y" THEN LPRINT "HL="HL" HH="HH" FO="FO
  264. 2770 GOTO 5950
  265. 2780 J1=J:X=HX:GOSUB 6000
  266. 2790 IF R1=0 OR R1=R2 GOTO 2840
  267. 2800 R1R=R2
  268. 2810 IF FR$="L" THEN R3R=R2:R2R=R3R*J1:GOTO 2740
  269. 2820 IF FR$="H" THEN R2R=R2:R3R=R2R/J1:GOTO 2740
  270. 2830 GOTO 255
  271. 2840 R3R=7.5:R2R=7.5*J1
  272. 2850 IF FR$="L" THEN R1R=R3R/J:GOTO 2740
  273. 2860 IF FR$="H" THEN R1R=R2R/J:GOTO 2740
  274. 2870 GOTO 255
  275. 2900 REM MODE 6B
  276. 2910 GOSUB 5100
  277. 2920 PRINT "Enter the corner frequency (Fo), the clock frequency (Fclk) ."
  278. 2930 INPUT ;FX,FCLK
  279. 2935 PRINT
  280. 2940 X=FX/FCLK*CLR:GOSUB 6000
  281. 2950 IF R1=0 THEN R3R=7.5:R2R=7.5*J:GOTO 2970
  282. 2960 R2R=R1:R3R=R2
  283. 2970 FO=FCLK/CLR*R2R/R3R:HH%=20/2.30259*(LOG(R2R/R3R))
  284. 2972 R1R=0:R4R=0
  285. 2974 GOSUB 5700
  286. 2975 GOSUB 5800
  287. 2980 PRINT "HL1="1" HL2="HH%"DB FO="FO
  288. 2985 IF PR$="Y" THEN LPRINT "HL1="1" HL2="HH%"DB FO="FO
  289. 2990 GOTO 5950
  290. 4990 REM ********ERROR RESPONSE********
  291. 5000 PRINT"The filter response as selected is not available."
  292. 5010 RETURN
  293. 5090 REM ********CLK RATIO*******
  294. 5100 INPUT"What is the clock ratio (Enter 50 or 100)";CLR
  295. 5110 IF CLR=50 OR CLR=100 THEN RETURN
  296. 5120 GOTO 5100
  297. 5200 REM ***FILTER PARAMETERS INPUT****
  298. 5210 PRINT"Enter in order the center frequency (Fo),"
  299. 5211 PRINT"the quality factor (Qo), and the gain (Ho)?"
  300. 5212 INPUT ;FX,QX,HX
  301. 5215 PRINT
  302. 5217 IF MD$="2" AND FR$="N" THEN GOTO 5218 ELSE GOTO 5225
  303. 5218 PRINT"Which gain was specified in the last question the low pass "
  304. 5219 PRINT"notch gain (HN1) or the high pass notch gain (HN2)?"
  305. 5220 INPUT "(Enter HN1 or HN2)";FR$
  306. 5221 IF FR$<>"HN1" AND FR$<>"HN2" THEN GOTO 5220
  307. 5225 RETURN
  308. 5300 INPUT "Is this a first or a second order response";ORD
  309. 5310 IF ORD=1 OR ORD=2 THEN RETURN ELSE GOTO 5300
  310. 5400 REM FCLK
  311. 5410 FCLK=FX*CLR
  312. 5420 RETURN
  313. 5500 REM
  314. 5510 INPUT "Enter the clock frequency in Hz";FC
  315. 5520 RETURN
  316. 5600 FR=(FCLK/FC)^2
  317. 5610 IF MD$="2" OR MD$="5" THEN FR=FR-1
  318. 5615 IF FR=0 THEN FR=.01
  319. 5620 RETURN
  320. 5700 REM
  321. 5710 IF R1R>0 AND R1R<5 THEN GOTO 5740
  322. 5715 IF R2R>0 AND R2R<5 THEN GOTO 5740
  323. 5720 IF R3R>0 AND R3R<5 THEN GOTO 5740
  324. 5725 IF R4R>0 AND R4R<5 THEN GOTO 5740
  325. 5730 RETURN
  326. 5740 R1R=R1R*10:R2R=R2R*10:R3R=R3R*10:R4R=R4R*10
  327. 5750 GOTO 5710
  328. 5800 PRINT "R1="R1R" R2="R2R" R3="R3R" R4="R4R
  329. 5810 IF PR$="Y" THEN LPRINT "R1="R1R" R2="R2R" R3="R3R" R4="R4R
  330. 5820 RETURN
  331. 5830 PRINT "RH="RH3" RL="RL3" RG="RG
  332. 5835 IF PR$="Y" THEN LPRINT "RH="RH3" RL="RL3" RG="RG
  333. 5840 GOTO 5900
  334. 5850 RETURN
  335. 5900 IF RH3>0 AND RH3<5 THEN GOTO 5930
  336. 5905 IF RL3>0 AND RL3<5 THEN GOTO 5930
  337. 5910 IF RG>0 AND RG<5 THEN GOTO 5930
  338. 5920 RETURN
  339. 5930 RH3=RH3*10:RL3=RL3*10:RG=RG*10
  340. 5950 INPUT "Would you like to run another filter";WR$:WR$=LEFT$(WR$,1)
  341. 5952 IF WR$="N" THEN END
  342. 5954 IF WR$="Y" THEN RESTORE:GOTO 60
  343. 6000 REM RESISTOR SELECTION PROGRAM
  344. 6002 K=X
  345. 6004 IF X<1 THEN X=1/X
  346. 6006 S=0
  347. 6008 IF X>=1 AND X<10 GOTO 6015
  348. 6010 X=X/10
  349. 6012 S=S+1 
  350. 6014 GOTO 6008
  351. 6015 J=10^S:IF K<1 THEN J=1/J
  352. 6016 IF X=1 THEN R1=0:RETURN
  353. 6018 GOTO 6330
  354. 6020 IF TOL=5 THEN NV=25:GOTO 6040
  355. 6030 IF TOL=1 THEN NV=97
  356. 6040 REM
  357. 6050 REM
  358. 6060 FOR I=1 TO 25
  359. 6070 READ D(I)
  360. 6080 NEXT I
  361. 6100 DATA 10,11,12,13,15,16,18,20, 22,24,27,30
  362. 6110 DATA 33,36,39,43,47,51,56,62,68,75,82,91,100
  363. 6120 IF TOL=5 GOTO 6250
  364. 6123 FOR I=1 TO 97
  365. 6124 READ D(I)
  366. 6125 NEXT I
  367. 6130 DATA 10,10.2,10.5,10.7,11,11.3,11.5,11.8,12.1
  368. 6140 DATA 12.4,12.7,13,13.3,13.7,14,14.3,14.7,15
  369. 6150 DATA 15.4,15.8,16.2,16.5,16.9,17.4,17.8,18.2
  370. 6160 DATA 18.7,19.1,19.6,20,20.5,21,21.5,22.1,22.6
  371. 6170 DATA 23.2,23.7,24.3,24.9,25.5,26.1,26.7,27.4
  372. 6180 DATA 28,28.7,29.4,30.1,30.9,31.6,32.4,33.2,34
  373. 6190 DATA 34.8,35.7,36.5,37.4,38.3,39.2,40.2,41.2
  374. 6200 DATA 42.2,43.2,44.2,45.2,46.4,47.5,48.7,49.9
  375. 6210 DATA 51.1,52.3,53.6,54.9,56.2,57.6,59,60.4,61.9
  376. 6220 DATA 63.4,64.9,66.5,68.1,69.8,71.5,73.2,75,76.8
  377. 6230 DATA 78.7,80.6,82.5,84.5,86.6,88.7,90.9,93.1
  378. 6240 DATA 95.3,97.6,100
  379. 6250 RETURN
  380. 6330 W=10^S
  381. 6340 FOR I=1 TO NV-1
  382. 6350 Q=0
  383. 6360 R2=D(I)
  384. 6370 R1=X*R2
  385. 6380 IF R1>=10 AND R1<=100 GOTO 6420
  386. 6390 R1=R1/10
  387. 6400 Q=Q+1
  388. 6410 GOTO 6380
  389. 6420 T=1
  390. 6430 RL=D(T)
  391. 6440 IF R1<=RL GOTO 6480
  392. 6450 T=T+1
  393. 6460 IF T=NV+1 GOTO 7010
  394. 6470 GOTO 6430
  395. 6480 RH=RL: RL=D(T-1)
  396. 6490 V=10^Q
  397. 6500 IF K<1 THEN XL=R2/(W*V*RH):XH=R2/(W*V*RL): GOTO 6520
  398. 6510 XL=(W*V*RL)/R2: XH=(W*V*RH)/R2
  399. 6520 EL=K-XL: EH=XH-K
  400. 6521 IF K=>1 THEN GOTO 6525
  401. 6522 IF EL>EH THEN E=EH:R=RL:GOTO 6530
  402. 6523 E=EL:R=RH:GOTO 6530
  403. 6525 IF EL>EH THEN E=EH : R=RH :GOTO 6530
  404. 6526 E=EL:R=RL
  405. 6530 F(I,1)=R*V:F(I,2)=E
  406. 6535 NEXT I
  407. 6540 AX=1000:E=0:IX=0
  408. 6550 FOR I=1 TO NV-1
  409. 6560 E=F(I,2)
  410. 6570 IF E<AX THEN AX=E : IX=I
  411. 6580 NEXT I
  412. 6590 IF K<1 THEN R2=W*F(IX,1):R1=D(IX):GOTO 6610
  413. 6600 R2=D(IX):R1=W*F(IX,1)
  414. 6610 PE=F(IX,2)/K*100
  415. 6950 FOR I=1 TO NV-1
  416. 6960 FOR R=1 TO 2
  417. 6970 F(I,R)=0
  418. 6980 NEXT R
  419. 6990 NEXT I
  420. 7000 RETURN
  421. 7010 F(I,2)=1000:F(I,4)=1000
  422. 7020 GOTO 6550
  423. 7030 REM ONE R KNOWN
  424. 7040 IF K<1 THEN C=1
  425. 7050 IF K>1 THEN C=2
  426. 7060 V=1:W=1:M=1
  427. 7070 IF R1>=10 AND R1<100 GOTO 7110
  428. 7080 R1=R1/10
  429. 7090 M=M*10
  430. 7100 GOTO 7070
  431. 7110 IF B=1 AND C=1 GOTO 7150
  432. 7120 IF B=1 AND C=2 GOTO 7190
  433. 7130 IF B=2 AND C=1 GOTO 7200
  434. 7140 X=K: GOTO 7160
  435. 7150 X=1/K
  436. 7160 IF X>=1 AND X<10 GOTO 7240
  437. 7170 X=X/10: W=W*10
  438. 7180 GOTO 7160
  439. 7190 X=1/K: GOTO 7210
  440. 7200 X=K
  441. 7210 IF X>=1 AND X<10 GOTO 7240
  442. 7220 X=X*10: W=W/10
  443. 7230 GOTO 7210
  444. 7240 V=1
  445. 7250 IF X=1 THEN RH=R1:RL=R1: GOTO 7390
  446. 7260 RX=R1*X
  447. 7270 IF RX>=10 AND RX<100 GOTO 7310
  448. 7280 RX=RX/10
  449. 7290 V=V*10
  450. 7300 GOTO 7270
  451. 7310 T=1
  452. 7320 RL=D(T)
  453. 7330 IF RX<=RL GOTO 7361
  454. 7340 T=T+1
  455. 7350 IF T=NV+1 GOTO 7510
  456. 7360 GOTO 7320
  457. 7361 REM
  458. 7370 RH=RL
  459. 7380 RL=D(T-1)
  460. 7390 RH=RH*V*W: RL=RL*V*W
  461. 7400 IF B=1 THEN XL=R1/RH ELSE GOTO 7420: XH=R1/RL
  462. 7405 XH=R1/RL
  463. 7415 GOTO 7440
  464. 7420 XL=RL/R1: XH=RH/R1
  465. 7440 EL=K-XL:EH=XH-K
  466. 7450 IF EH>EL THEN GOTO 7470
  467. 7460 IF B=1 THEN R2=RL:GOTO 7485
  468. 7465 R2=R1:R1=RH:GOTO 7485
  469. 7470 IF B=1 THEN R2=RH:GOTO 7485
  470. 7480 R2=R1 :R1=RL
  471. 7485 R1=R1*M:R2=R2*M
  472. 7490 RETURN
  473. 7510 PRINT "DIDN'T FIND A VALUE!"
  474. 7520 RETURN
  475. 8000 FOR I=1 TO NV-1
  476. 8010 PRINT F(I,1),F(I,2);
  477. 8015 PRINT D(I)
  478. 8020 NEXT I
  479. 8030 RETURN
  480. IDN'T FIND A VALUE!"
  481. 7520 RETURN
  482. 8000 FOR I=1 TO NV-1
  483. 8010 PRINT F(I,1),F(I,2);
  484. 8015