home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design2 / bpfkpro.asc < prev    next >
Text File  |  1986-03-10  |  17KB  |  387 lines

  1. 100 '*******************************************************
  2. 110 '              SIMPLE BANDPASS FILTER SYNTHESIS
  3. 120 '
  4. 130 ' COPYRIGHT:   R.F. PRODUCTS   &   EARL F. BOSSALLER JR.
  5. 140 '   6/6/85    5022 ARTESIAN ST.
  6. 150 '            SAN DIEGO CA. 92117
  7. 160 '
  8. 170 'PERMISSION TO COPY AND USE FOR NON-COMMERCIAL PURPOSES
  9. 180 'IS HEREBY GRANTED.
  10. 190 '
  11. 200 'FOR COPY OF THIS PROGRAM, SEND FORMATTED DISK, STAMPED
  12. 210 'SELF ADDRESSED RETURN MAILER, AND $5.00 TO ABOVE
  13. 220 'ADDRESS. AVAILABLE FOR: MS-DOS/PC-DOS, KAYPRO, 
  14. 230 'ZENITH Z-100, WRITE FOR OTHERS.
  15. 240 '
  16. 250 'PROGRAM: BPF.BAS  VERSION 1.0
  17. 260 '  BY:  E.F. BOSSALLER JR.  6/85
  18. 270 '*******************************************************
  19. 280 'INITIALIZATION SECTION
  20. 290 GOSUB 50010 ' GO DO VERSION DEPENDENT INITIALIZATION
  21. 300 LPP = 60 ' 11 INCH PAPER
  22. 310 MARGIN$ = "        " 'LEFT MARGIN FOR 3 RING BINDER
  23. 320 PLINES = 1 'SET PRINTER LINE COUNTER TO TOP OF FORM
  24. 330 CFLTR = 0 :DFLTR = 1 'DISPLAY AND CALCULATE FILTER 1
  25. 340 RS=50:RL=200:K=.1:Q=10:F=10 'SET INITIAL INPUT VALUES
  26. 350 PI = 3.1415927#
  27. 360 'SET UP STRINGS FOR PRINT USING STATEMENTS
  28. 370 INVAL1$ = "|(1) RS =   #########,.# OHMS  | (I)-CHANGE INPUT VALUE                      |"
  29. 380 INVAL2$ = "|(2) RL =   #########,.# OHMS  | (P)-PRINTER MENU                            |"
  30. 390 INVAL3$ = "|(3)  K =        ###.###       | (D)-DISK FILES MENU                         |"
  31. 400 INVAL4$ = "|(4)  Q =         ####.#       |                                             |"
  32. 410 INVAL5$ = "|(5)  F =    ####.###### MHz   | (1...16)-DISPLAY FILTER 1...16 ON SCREEN    |"
  33. 420 FLTRVAL$ = " \\ = +#.###^^^^    ##.###^^^^ \ \     \                             \"
  34. 430 BOTLINE$ = "______________________________________________________________________________"
  35. 440 GOSUB 50200 'CLEAR SCREEN AND HOME CURSOR
  36. 450 PRINT "BPF.BAS                  SIMPLE BANDPASS FILTER SYNTHESIS          VERSION 1.0"
  37. 460 PRINT ".____________________________________________________________________________."
  38. 470 PRINT "|         INPUT VALUES         |    COMMAND MENU         (X)-EXIT PROGRAM    |"
  39. 480 PRINT "|   -----------------------    |  -----------------                          |"
  40. 490 PRINT USING INVAL1$;RS
  41. 500 PRINT USING INVAL2$;RL
  42. 510 PRINT USING INVAL3$;K
  43. 520 PRINT USING INVAL4$;Q
  44. 530 PRINT USING INVAL5$;F
  45. 540 PRINT "|______________________________|_____________________________________________|"
  46. 550 IF DFLTR <> CFLTR THEN CFLTR = DFLTR:GOSUB 2620
  47. 560 PRINT FLTNAM$
  48. 570 PRINT
  49. 580 PRINT "      REACTANCES   COMPONENT VALUES         FILTER CONFIGURATION"
  50. 590 PRINT "      ----------   ----------------"
  51. 600 PRINT USING FLTRVAL$;"X1",X1,VX1,VX1$,FCNFG1$
  52. 610 PRINT USING FLTRVAL$;"X2",X2,VX2,VX2$,FCNFG2$
  53. 620 PRINT USING FLTRVAL$;"X'",XP,VXP,VXP$,FCNFG3$
  54. 630 PRINT USING FLTRVAL$;"XA",XA,VXA,VXA$,FCNFG4$
  55. 640 PRINT USING FLTRVAL$;"XB",XB,VXB,VXB$,FCNFG5$
  56. 650 PRINT
  57. 660 PRINT BOTLINE$
  58. 670 PRINT
  59. 680 PRINT "COMMAND (1..16,I,P,D,X)";
  60. 690 INPUT ANS$
  61. 700 IF ANS$ = "" GOTO 440
  62. 710 ANS = INT(VAL(ANS$))
  63. 720 IF ANS = 0 GOTO 760
  64. 730 IF ANS < 0 OR ANS => 17 GOTO 440
  65. 740 DFLTR = ANS 'SET DISPLAYED FILTER TO REQUESTED
  66. 750 GOTO 440
  67. 760 ANS$ = CHR$(ASC(LEFT$(ANS$,1)) AND NOT 32) '1 U/C LETTER
  68. 770 IF ANS$ = "P" THEN GOSUB 1630:GOTO 440
  69. 780 IF ANS$ = "I" THEN GOSUB 820:GOTO 440
  70. 790 IF ANS$ = "D" THEN GOSUB 2490:GOTO 440
  71. 800 IF ANS$ = "X" THEN GOTO 50100
  72. 810 GOTO 440
  73. 820 '------------ GET INPUT VALUES SUBROUTINE -------------
  74. 830 Y = 11:GOSUB 50300:X=1:Y=11:GOSUB 50400 'LINE 11 COL 1
  75. 840 PRINT "     CHANGE INPUT VALUES MENU      (0)-DONE (RETURN AND RECALCULATE FILTER)"
  76. 850 PRINT "    --------------------------"
  77. 860 PRINT "         INPUT VALUE                  RANGE                .__________."
  78. 870 PRINT "(1)- RS (SOURCE RESISTANCE)         .1 TO 10000000  OHMS   |   NOTE:  |"
  79. 880 PRINT "(2)- RL (LOAD RESISTANCE)           .1 TO 10000000  OHMS   | RS <= RL |"
  80. 890 PRINT "(3)-  K (COEFFICIENT OF COUPLING) .001 TO Kmax             `----------'"
  81. 900 PRINT "(4)-  Q (LOADED CIRCUIT Q)          .1 TO 1000
  82. 910 PRINT "(5)-  F (CENTER FREQUENCY)     .000001 TO 10000     MHZ"
  83. 920 PRINT
  84. 930 PRINT
  85. 940 PRINT BOTLINE$
  86. 950 Y=22:GOSUB 50300 'ERASE INPUT AREA
  87. 960 X=1:Y=23:GOSUB 50400 'GOTO LINE 23 COLUMN 1
  88. 970 INPUT "COMMAND (0,1,2,3,4,5) ";ANS$
  89. 980 IF ANS$ = "0" THEN GOTO 1050
  90. 990 IF ANS$ = "1" THEN GOSUB 1080:GOTO 950
  91. 1000 IF ANS$ = "2" THEN GOSUB 1190:GOTO 950
  92. 1010 IF ANS$ = "3" THEN GOSUB 1300:GOTO 950
  93. 1020 IF ANS$ = "4" THEN GOSUB 1410:GOTO 950
  94. 1030 IF ANS$ = "5" THEN GOSUB 1520:GOTO 950
  95. 1040 GOTO 950
  96. 1050 IF RS > RL THEN PRINT " CAN'T EXIT ..... RS > RL, PLEASE CORRECT";:GOTO 960
  97. 1060 IF K > SQR(RS/RL)+.001 THEN PRINT "CAN'T EXIT .... K > Kmax, PLEASE CORRECT";:GOTO 960
  98. 1070 CFLTR = 0: RETURN 'CAUSE RECALCULATION
  99. 1080 ' SUBROUTINE TO SET VALUE OF RS
  100. 1090 Y=22:GOSUB 50300
  101. 1100 PRINT USING "PRESENT RS = ########.# OHMS";RS
  102. 1110 INPUT "NEW VALUE =  ";ANS$
  103. 1120 IF ANS$ = "" THEN RETURN
  104. 1130 ANS = VAL(ANS$)
  105. 1140 IF ANS =< 9.000001E-02 OR ANS => 10000000.1# THEN 1180
  106. 1150 RS = ANS 'SET RS TO INPUT
  107. 1160 X=1:Y=5:GOSUB 50400
  108. 1170 PRINT USING INVAL1$;RS:RETURN 'UPDATE INPUT VALUE
  109. 1180 PRINT "INPUT OUTSIDE RANGE";:Y=23:GOSUB 50500:GOTO 1110
  110. 1190 'SUBROUTINE TO SET VALUE OF RL
  111. 1200 Y=22:GOSUB 50300
  112. 1210 PRINT USING "PRESENT RL = ########.# OHMS";RL
  113. 1220 INPUT "NEW VALUE =  ";ANS$
  114. 1230 IF ANS$ = "" THEN RETURN
  115. 1240 ANS = VAL(ANS$)
  116. 1250 IF ANS =< 9.000001E-02 OR ANS => 10000000.1# THEN 1290
  117. 1260 RL = ANS 'SET RL TO INPUT VALUE
  118. 1270 X=1:Y=6:GOSUB 50400
  119. 1280 PRINT USING INVAL2$;RL:RETURN 'UPDATE INPUT VALUE
  120. 1290 PRINT "INPUT OUTSIDE RANGE";:Y=23:GOSUB 50500:GOTO 1220
  121. 1300 'SUBROUTINE TO SET VALUE OF K
  122. 1310 Y=22:GOSUB 50300
  123. 1320 PRINT USING "PRESENT K = ####.###        Kmax WITH PRESENT RS AND RL = ####.###";K;SQR(RS/RL)
  124. 1330 INPUT "NEW VALUE =  ";ANS$
  125. 1340 IF ANS$ = "" THEN RETURN
  126. 1350 ANS = VAL(ANS$)
  127. 1360 IF ANS =< .0009 OR ANS > SQR(RS/RL)+.001 THEN 1400
  128. 1370 K = ANS 'SET K TO INPUT VALUE
  129. 1380 X=1:Y=7:GOSUB 50400
  130. 1390 PRINT USING INVAL3$;K:RETURN 'UPDATE INPUT VALUE
  131. 1400 PRINT "INPUT OUTSIDE RANGE";:Y=23:GOSUB 50500:GOTO 1330
  132. 1410 'SUBROUTINE TO SET VALUE OF Q
  133. 1420 Y=22:GOSUB 50300
  134. 1430 PRINT USING "PRESENT Q = ####.#";Q
  135. 1440 INPUT "NEW VALUE =  ";ANS$
  136. 1450 IF ANS$ = "" THEN RETURN
  137. 1460 ANS = VAL(ANS$)
  138. 1470 IF ANS =< 9.000001E-02 OR ANS => 1000.01 THEN 1510
  139. 1480 Q = ANS 'SET Q TO INPUT VALUE
  140. 1490 X=1:Y=8:GOSUB 50400
  141. 1500 PRINT USING INVAL4$;Q:RETURN 'UPDATE INPUT VALUE
  142. 1510 PRINT "INPUT OUTSIDE RANGE";:Y=23:GOSUB 50500:GOTO 1440
  143. 1520 'SUBROUTINE TO SET FREQUENCY
  144. 1530 Y=22:GOSUB 50300
  145. 1540 PRINT USING "PRESENT FREQUENCY = #####.###### MHZ";F
  146. 1550 INPUT "NEW FREQUENCY =  ";ANS$
  147. 1560 IF ANS$ = "" THEN RETURN
  148. 1570 ANS = VAL(ANS$)
  149. 1580 IF ANS =< .0000009 OR ANS => 10000! THEN 1620
  150. 1590 F = ANS 'SET FREQ TO INPUT VALUE
  151. 1600 X=1:Y=9:GOSUB 50400
  152. 1610 PRINT USING INVAL5$;F:RETURN 'UPDATE INPUT VALUE
  153. 1620 PRINT "INPUT OUTSIDE RANGE";:Y=23:GOSUB 50500:GOTO 1550
  154. 1630 ' ------------- PRINTER CONTROL SUBROUTINE ------------
  155. 1640 Y = 11:GOSUB 50300:X=1:Y=11:GOSUB 50400 'LINE 11 COL 1
  156. 1650 PRINT "     PRINTER CONTROL MENU          (0)-DONE (RETURN AND RECALCULATE FILTER)"
  157. 1660 PRINT "    ----------------------"
  158. 1670 PRINT 
  159. 1680 PRINT "(1)- PRINT RESULTS OF ALL 16 FILTER CALCULATIONS"
  160. 1690 PRINT "(2)- PRINT RESULTS OF 1 FILTER CALCULATION"
  161. 1700 PRINT
  162. 1710 PRINT "(3)- SEND FORMFEED TO PRINTER"
  163. 1720 PRINT
  164. 1730 PRINT
  165. 1740 PRINT
  166. 1750 PRINT BOTLINE$
  167. 1760 Y=22:GOSUB 50300 'ERASE BOTTOM OF SCREEN
  168. 1770 X=1:Y=23:GOSUB 50400 'GOTO LINE 23 COLUMN 1
  169. 1780 INPUT "COMMAND (0,1,2,3) ";ANS$
  170. 1790 ANS$ = LEFT$(ANS$,1)
  171. 1800 IF ANS$ = "0" THEN RETURN
  172. 1810 IF ANS$ = "1" THEN GOSUB 1850:GOTO 1760
  173. 1820 IF ANS$ = "2" THEN GOSUB 2410:GOTO 1760
  174. 1830 IF ANS$ = "3" THEN LPRINT CHR$(12):PLINES = 1:GOTO 1760
  175. 1840 GOTO 1760
  176. 1850 ' SUBROUTINE TO PRINT RESULTS FOR ALL FILTERS
  177. 1860 PFLTR = 0 'SET FILTER TO BE PRINTED FLAG TO 0 (ALL)
  178. 1870 Y=22:GOSUB 50300:X=1:GOSUB 50400
  179. 1880 PRINT "PRESENT TITLE IS: ";TITLE$
  180. 1890 Y=24:GOSUB 50400
  181. 1900 PRINT "(SPACE) = NO TITLE | (RETURN) = SAME TITLE | DON'T USE QUOTE OR COMMA";
  182. 1910 Y=23:GOSUB 50500
  183. 1920 LINE INPUT;"TYPE IN NEW TITLE ";ANS$
  184. 1930 IF ANS$ = "" THEN GOTO 1950
  185. 1940 TITLE$ = LEFT$(ANS$,60)
  186. 1950 'PRINT FILTER RESULTS ON PRINTER
  187. 1960 IF PLINES => LPP-14 THEN LPRINT CHR$(12);:PLINES = 1
  188. 1970 LPRINT MARGIN$;"               ";TITLE$
  189. 1980 LPRINT:LPRINT
  190. 1990 LPRINT MARGIN$;"        INPUT VALUES"
  191. 2000 LPRINT MARGIN$;"       --------------"
  192. 2010 LPRINT
  193. 2020 LPRINT MARGIN$;:LPRINT USING " RS =  #########,.#  OHMS";RS
  194. 2030 LPRINT MARGIN$;:LPRINT USING " RL =  #########,.#  OHMS";RL
  195. 2040 LPRINT MARGIN$;:LPRINT USING "  K =       ###.###";K
  196. 2050 LPRINT MARGIN$;:LPRINT USING "  Q =        ####.#";Q
  197. 2060 LPRINT MARGIN$;:LPRINT USING "  F =   ####.######  MHz";F
  198. 2070 LPRINT:LPRINT:LPRINT
  199. 2080 PLINES = PLINES + 14 '14 MORE LINES PRINTED ON PAGE
  200. 2090 'PRINT SELECTED FILTER OR ALL
  201. 2100 IF PFLTR = 0 OR PFLTR = 1 THEN CFLTR = 1:GOSUB 2270
  202. 2110 IF PFLTR = 0 OR PFLTR = 2 THEN CFLTR = 2:GOSUB 2270
  203. 2120 IF PFLTR = 0 OR PFLTR = 3 THEN CFLTR = 3:GOSUB 2270
  204. 2130 IF PFLTR = 0 OR PFLTR = 4 THEN CFLTR = 4:GOSUB 2270
  205. 2140 IF PFLTR = 0 OR PFLTR = 5 THEN CFLTR = 5:GOSUB 2270
  206. 2150 IF PFLTR = 0 OR PFLTR = 6 THEN CFLTR = 6:GOSUB 2270
  207. 2160 IF PFLTR = 0 OR PFLTR = 7 THEN CFLTR = 7:GOSUB 2270
  208. 2170 IF PFLTR = 0 OR PFLTR = 8 THEN CFLTR = 8:GOSUB 2270
  209. 2180 IF PFLTR = 0 OR PFLTR = 9 THEN CFLTR = 9:GOSUB 2270
  210. 2190 IF PFLTR = 0 OR PFLTR = 10 THEN CFLTR = 10:GOSUB 2270
  211. 2200 IF PFLTR = 0 OR PFLTR = 11 THEN CFLTR = 11:GOSUB 2270
  212. 2210 IF PFLTR = 0 OR PFLTR = 12 THEN CFLTR = 12:GOSUB 2270
  213. 2220 IF PFLTR = 0 OR PFLTR = 13 THEN CFLTR = 13:GOSUB 2270
  214. 2230 IF PFLTR = 0 OR PFLTR = 14 THEN CFLTR = 14:GOSUB 2270
  215. 2240 IF PFLTR = 0 OR PFLTR = 15 THEN CFLTR = 15:GOSUB 2270
  216. 2250 IF PFLTR = 0 OR PFLTR = 16 THEN CFLTR = 16:GOSUB 2270
  217. 2260 LPRINT:PLINES=PLINES+1:RETURN 'RETURN TO PRINTER MENU
  218. 2270 'ROUTINE TO PRINT FILTER VALUES
  219. 2280 GOSUB 2620 ' CALCULATE VALUES FOR FILTER
  220. 2290 IF PLINES > LPP - 9 THEN PLINES = 1:LPRINT CHR$(12);
  221. 2300 LPRINT MARGIN$;FLTNAM$
  222. 2310 LPRINT
  223. 2320 LPRINT MARGIN$;:LPRINT USING FLTRVAL$;"X1",X1,VX1,VX1$,FCNFG1$
  224. 2330 LPRINT MARGIN$;:LPRINT USING FLTRVAL$;"X2",X2,VX2,VX2$,FCNFG2$
  225. 2340 LPRINT MARGIN$;:LPRINT USING FLTRVAL$;"X'",XP,VXP,VXP$,FCNFG3$
  226. 2350 LPRINT MARGIN$;:LPRINT USING FLTRVAL$;"XA",XA,VXA,VXA$,FCNFG4$
  227. 2360 LPRINT MARGIN$;:LPRINT USING FLTRVAL$;"XB",XB,VXB,VXB$,FCNFG5$
  228. 2370 LPRINT
  229. 2380 LPRINT
  230. 2390 PLINES = PLINES+9
  231. 2400 RETURN
  232. 2410 'SUBROUTINE TO PRINT RESULTS FOR SELECTED FILTER
  233. 2420 Y=22:GOSUB 50300
  234. 2430 Y=23:X=1:GOSUB 50400
  235. 2440 INPUT;"WHICH FILTER DO YOU WISH TO PRINT (1..16) ";ANS$
  236. 2450 ANS = INT(VAL(ANS$))
  237. 2460 IF ANS =< 0 OR ANS => 17 THEN RETURN
  238. 2470 PFLTR = ANS
  239. 2480 GOTO 1870 'FINISH UP IN PRINT FILTERS SUBROUTINE
  240. 2490 ' ------------ DISK FILES MENU SUBROUTINE -------------
  241. 2500 Y = 11:GOSUB 50300:X=1:Y=11:GOSUB 50400 'LINE 11 COL 1
  242. 2510 PRINT "     DISK FILES MENU               (0)-DONE (RETURN AND RECALCULATE FILTER)"
  243. 2520 PRINT "    ------------------"
  244. 2530 PRINT:PRINT:PRINT
  245. 2540 PRINT "      THERE ARE NO DISK OPERATIONS DEFINED"
  246. 2550 PRINT:PRINT:PRINT:PRINT
  247. 2560 PRINT BOTLINE$
  248. 2570 Y=22:GOSUB 50300 'ERASE INPUT AREA
  249. 2580 X=1:Y=23:GOSUB 50400 'GOTO LINE 23 COLUMN 1
  250. 2590 INPUT "COMMAND (0) ";ANS$
  251. 2600 IF ANS$ = "0" THEN RETURN
  252. 2610 GOTO 2570
  253. 2620 '------- SUBROUTINE TO CALCULATE FILTER VALUES --------
  254. 2630 'SELECT FILTER CONFIGURATION PICTURE
  255. 2640 ON CFLTR GOSUB 2750,2750,2750,2750,2810,2810,2810,
  256.     2810,2870,2870,2930,2930,2750,2750,2810,2810
  257. 2650 'SELECT CALCULATION SUBROUTINE
  258. 2660 ON CFLTR GOSUB 3000,3040,3080,3120,3160,3200,3240,
  259.     3280,3320,3360,3400,3440,3480,3520,3560,3600
  260. 2670 'CALCULATE COMPONENT VALUES
  261. 2680 XI=X1:GOSUB 3640:VX1=VXI:VX1$=VXI$
  262. 2690 XI=X2:GOSUB 3640:VX2=VXI:VX2$=VXI$
  263. 2700 XI=XP:GOSUB 3640:VXP=VXI:VXP$=VXI$
  264. 2710 XI=XA:GOSUB 3640:VXA=VXI:VXA$=VXI$
  265. 2720 XI=XB:GOSUB 3640:VXB=VXI:VXB$=VXI$
  266. 2730 RETURN
  267. 2740 '------- FILTER CONFIGURATION PICTURES ----------
  268. 2750 FCNFG1$ = " *---*---XA---*---XB---*---*"
  269. 2760 FCNFG2$ = " |   |        |        |   |"
  270. 2770 FCNFG3$ = "RS   X1       X'       X2  RL"
  271. 2780 FCNFG4$ = " |   |        |        |   |"
  272. 2790 FCNFG5$ = " *---*--------*--------*---*"
  273. 2800 RETURN
  274. 2810 FCNFG1$ = " *---X1---*---X'---*---X2---*"
  275. 2820 FCNFG2$ = " |        |        |        |"
  276. 2830 FCNFG3$ = "RS        XA       XB       RL"
  277. 2840 FCNFG4$ = " |        |        |        |"
  278. 2850 FCNFG5$ = " *--------*--------*--------*"
  279. 2860 RETURN
  280. 2870 FCNFG1$ = " *---X1---XA---*---XB---X2---*"
  281. 2880 FCNFG2$ = " |             |             |"
  282. 2890 FCNFG3$ = "RS             X'            RL"
  283. 2900 FCNFG4$ = " |             |             |"
  284. 2910 FCNFG5$ = " *-------------*-------------*"
  285. 2920 RETURN
  286. 2930 FCNFG1$ = " *---*---*----X'---*---*---*"
  287. 2940 FCNFG2$ = " |   |   |         |   |   |"
  288. 2950 FCNFG3$ = "RS   X1  XA        XB  X2  RL"
  289. 2960 FCNFG4$ = " |   |   |         |   |   |"
  290. 2970 FCNFG5$ = " *---*---*---------*---*---*"
  291. 2980 RETURN
  292. 2990 '---------FILTER CALCULATION SUBROUTINES -------------
  293. 3000 FLTNAM$ = "                  FILTER #1  COUPLED LP STANDARD PI"
  294. 3010 X1=-RS/Q: X2=-RL/Q: XP=-K*SQR(X1*X2)
  295. 3020 XA=-X1-XP: XB=-X2-XP
  296. 3030 RETURN
  297. 3040 FLTNAM$ = "                  FILTER #2  COUPLED HP STANDARD PI"
  298. 3050 X1=-(-RS/Q): X2=-(-RL/Q): XP=-(-K*SQR(X1*X2))
  299. 3060 XA=-X1-XP: XB=-X2-XP
  300. 3070 RETURN
  301. 3080 FLTNAM$ = "                  FILTER #3  COUPLED LP MIXED PI"
  302. 3090 X1=-RS/Q: X2=-RL/Q: XP=K*SQR(X1*X2)
  303. 3100 XA=-XP-X1: XB=-XP-X2
  304. 3110 RETURN
  305. 3120 FLTNAM$ = "                  FILTER #4  COUPLED HP MIXED PI"
  306. 3130 X1=RS/Q: X2=RL/Q: XP=-K*SQR(X1*X2)
  307. 3140 XA=-XP-X1: XB=-XP-X2
  308. 3150 RETURN
  309. 3160 FLTNAM$ = "                  FILTER #5  COUPLED LP STANDARD TEE"
  310. 3170 X1=RS*Q: X2=RL*Q: XP=SQR(X1*X2)/K
  311. 3180 XA=-1/((1/X1)+(1/XP)): XB=-1/((1/X2)+(1/XP))
  312. 3190 RETURN
  313. 3200 FLTNAM$ = "                  FILTER #6  COUPLED HP STANDARD TEE"
  314. 3210 X1=-RS*Q: X2=-RL*Q: XP=-SQR(X1*X2)/K
  315. 3220 XA=-1/((1/X1)+(1/XP)): XB=-1/((1/X2)+(1/XP))
  316. 3230 RETURN
  317. 3240 FLTNAM$ = "                  FILTER #7  COUPLED LP MIXED TEE"
  318. 3250 X1=RS*Q: X2=RL*Q: XP=-SQR(X1*X2)/K
  319. 3260 XA=-1/((1/X1)+(1/XP)): XB=-1/((1/X2)+(1/XP))
  320. 3270 RETURN
  321. 3280 FLTNAM$ = "                  FILTER #8  COUPLED HP MIXED TEE"
  322. 3290 X1=-RS*Q: X2=-RL*Q: XP=SQR(X1*X2)/K
  323. 3300 XA=-1/((1/X1)+(1/XP)): XB=-1/((1/X2)+(1/XP))
  324. 3310 RETURN
  325. 3320 FLTNAM$ = "               FILTER #9  COUPLED LP SERIES ENHANCED-Q L"
  326. 3330 X1=RS*Q: X2=RL*Q: XP=-K*SQR(X1*X2)
  327. 3340 XA=-X1-XP: XB=-X2-XP
  328. 3350 RETURN
  329. 3360 FLTNAM$ = "               FILTER #10  COUPLED HP SERIES ENHANCED-Q L"
  330. 3370 X1=-RS*Q: X2=-RL*Q: XP=K*SQR(X1*X2)
  331. 3380 XA=-X1-XP: XB=-X2-XP
  332. 3390 RETURN
  333. 3400 FLTNAM$ = "               FILTER #11  COUPLED LP SHUNT ENHANCED-Q L"
  334. 3410 X1=-RS/Q: X2=-RL/Q: XP=SQR(X1*X2)/K
  335. 3420 XA=-1/((1/X1)+(1/XP)): XB=-1/((1/X2)+(1/XP))
  336. 3430 RETURN
  337. 3440 FLTNAM$ = "               FILTER #12  COUPLED HP SHUNT ENHANCED-Q L"
  338. 3450 X1=RS/Q: X2=RL/Q: XP=-SQR(X1*X2)/K
  339. 3460 XA=-1/((1/X1)+(1/XP)): XB=-1/((1/X2)+(1/XP))
  340. 3470 RETURN
  341. 3480 FLTNAM$ = "         FILTER #13  COUPLED LP STANDARD PI / HP MIXED PI"
  342. 3490 X1=-RS/Q: X2=RL/Q: XP=-K*SQR(-X1*X2)
  343. 3500 XA=-X1-XP: XB=-X2-XP
  344. 3510 RETURN
  345. 3520 FLTNAM$ = "         FILTER #14  COUPLED HP STANDARD PI / LP MIXED PI"
  346. 3530 X1=RS/Q: X2=-RL/Q: XP=K*SQR(X1*-X2)
  347. 3540 XA=-X1-XP: XB=-X2-XP
  348. 3550 RETURN
  349. 3560 FLTNAM$ = "         FILTER #15  COUPLED LP STANDARD TEE / HP MIXED TEE"
  350. 3570 X1=RS*Q: X2=-RL*Q: XP=SQR(-X1*X2)/K
  351. 3580 XA=-1/((1/X1)+(1/XP)): XB=-1/((1/X2)+(1/XP))
  352. 3590 RETURN
  353. 3600 FLTNAM$ = "         FILTER #16  COUPLED HP STANDARD TEE / LP MIXED TEE"
  354. 3610 X1=-RS*Q: X2=RL*Q: XP=-SQR(-X1*X2)/K
  355. 3620 XA=-1/((1/X1)+(1/XP)): XB=-1/((1/X2)+(1/XP))
  356. 3630 RETURN
  357. 3640 '------- COMPONENT VALUE CALCULATOR SUBROUTINE --------
  358. 3650 IF XI <= 0 THEN GOTO 3690
  359. 3660 VXI$ = "uH"
  360. 3670 VXI = (XI/(2*PI*F))
  361. 3680 RETURN
  362. 3690 VXI$ = "pF"
  363. 3700 VXI = (1/(2*PI*F*-XI))*1000000!
  364. 3710 RETURN
  365. 50000 '----------- USER CUSTOMIZATION SECTION --------------
  366. 50005 '----SUBROUTINES FOR KAYPRO (ADM-3A EMULATOR)-----
  367. 50010 '---TERMINAL OR LANGUAGE  DEPENDANT INITIALIZATION----
  368. 50020 WIDTH 255
  369. 50030 PRINT CHR$(26);
  370. 50090 RETURN
  371. 50100 '------EXIT AND DE-INITIALIZATION SUBROUTINE------
  372. 50110 PRINT CHR$(26);
  373. 50120 WIDTH 80
  374. 50190 END    'END OR RUN "MENU" IF USING MENU SYSTEM
  375. 50200 '------CLEAR SCREEN AND HOME CURSOR SUBROUTINE------
  376. 50210 PRINT CHR$(26);
  377. 50290 RETURN
  378. 50300 '----ERASE LINE Y TO BOTTOM OF SCREEN SUBROUTINE-----
  379. 50310 PRINT CHR$(27);"=";CHR$(Y+31);CHR$(32);CHR$(23);
  380. 50390 RETURN
  381. 50400 '------SET CURSOR TO POSITION X,Y SUBROUTINE------
  382. 50410 PRINT CHR$(27);"=";CHR$(Y+31);CHR$(X+31);
  383. 50490 RETURN
  384. 50500 '---ERASE LINE AT Y AND SET CURSOR TO 1,Y SUBROUTINE--
  385. 50510 PRINT CHR$(27);"=";CHR$(Y+31);CHR$(32);CHR$(24);
  386. 50590 RETURN
  387.