10 REM LCBP.BAS
20 CLS
30 PRINT "THIS PROGRAM DESIGNS A BANDPASS FILTER FROM BUTTERWORTH OR
40 PRINT" TCHEBYCHEV ALL POLE TABLES PER JEFFE.  "
50 REM WRITTEN BY RUSS KINCAID APR 1997 REV 5/11/99
60 REM rev JAN 28, 2000
70 INPUT"WHAT WILL YOU CALL THIS FILTER ";NME$
80 INPUT"WILL YOU TAP THE SHUNT INDUCTORS TO INCREASE THE L & REDUCE C ";Y$
90 IF LEFT$(Y$,1)="N" OR LEFT$(Y$,1)="n"  THEN Z=1:GOTO 120
94 PRINT:PRINT"THE DEFAULT IS 16.  FOR NO TAP, USE 1"
100 INPUT"BY WHAT FACTOR WILL YOU INCREASE THE Z OF THE SHUNT ARMS [16] ";Z
110 IF Z=0 THEN Z=16
120 PI = 3.1415927#
130 INPUT "INPUT RESISTANCE "; RIN:PRINT
140 PRINT"RIN IS USED AS THE IMPEDANCE LEVEL, YOU CAN TRANSFORM IMPEDANCES BY"
142 PRINT"RUNNING THE PROGRAM TWICE, ONCE FOR EACH IMPEDANCE, AND PUTTING TWO"
144 PRINT"TAPS ON ONE OF THE SHUNT INDUCTORS. LOW Z ON ONE TAP, HI Z ON THE OTHER"
150 PRINT:REM NOT USED! INPUT "OUTPUT RESISTANCE "; ROUT
160 INPUT"WILL YOU SPECIFY F0 & BW (2) OR UPPER & LOWER BANDEGES (1) ";Y
170 ON Y GOTO 180,220
180 INPUT "UPPER BANDEDGE FREQUENCY"; F2
190 INPUT "LOWER BANDEDGE FREQUENCY"; F1
200 F0=SQR(F1*F2)
210 BW = F2 - F1: QC = F0 / BW :GOTO 350
220 INPUT"GIVE THE CENTER FREQ (HZ): ",F0
230 INPUT"GIVE THE BANDWIDTH (HZ) :",BW:QC=F0/BW
240 PRINT"THE PROTOTYPE CAN BE CAP INPUT OR INDUCTOR INPUT:"
250 PRINT "1";TAB(10);"----L2----L4--ETC"
260 PRINT " ";TAB(10);"  |     |"
270 PRINT " ";TAB(10);" C1    C3"
280 PRINT " ";TAB(10);"  |     |"
290 PRINT " ";TAB(10);" GND   GND"  :PRINT
300 PRINT "2";TAB(10);"----L1----L3--ETC"
310 PRINT " ";TAB(10);"       |     |"
320 PRINT " ";TAB(10);"      C2    C4"
330 PRINT " ";TAB(10);"       |     |"
340 PRINT " ";TAB(10);"      GND   GND"  :PRINT
350 INPUT"CAPACITOR INPUT (1) OR INDUCTOR INPUT (2)";Y
360 ON Y GOTO 370,890
370 IF Z=1 THEN 410
380 PRINT"THE ODD NUMBERED CAPS WILL BE DIVIDED BY A FACTOR (Z) THAT YOU HAVE"
390 PRINT"CHOOSEN.  THE ODD NUMBERED INDUCTORS WILL BE TAPPED AT"; 1/(Z)^.5
400 PRINT"OF THE TURNS FROM THE GROUND END."
410 PRINT "INPUT TABLE VALUES:"
420 FOR J = 1 TO 9 STEP 2
430 PRINT "C"; J; " ="; : INPUT C(J): C(J) = C(J)*QC
440 N = J - 1
450 IF C(J) = 0 THEN 470
460 GOTO 520
470 FOR Q = 2 TO 10 STEP 2: PRINT "L"; Q; " ="; : INPUT L(Q)
480 L(Q) = L(Q)*QC
490 M = Q - 1
500 IF L(Q) = 0 THEN 530
510 NEXT Q
520 NEXT J
530 W0= 2 * PI* F0 
550 REM NOW RESONATE ALL ELEMENTS: SERIES CAP WITH INDUCTORS,
560 REM PARALELL INDUCTOR WITH CAPS
570 FOR J = 1 TO N-1 STEP 2: LB(J) = 1 / C(J): NEXT J
580 FOR Q = 2 TO M-1 STEP 2: CB(Q) = 1 / L(Q):NEXT Q
590 CLS:LPRINT NME$:LPRINT DATE$
594 LPRINT "THIS IS THE SCHEMATIC:"   :LPRINT 
600 IF Z=1 THEN GOSUB 1430
610 LPRINT" __________________                ____________"
620 LPRINT" |                 |               |           |"
630 LPRINT" |                C1               |           C3"
640 LPRINT"UPPER L1           |            UPPER L3       |"
650 LPRINT" |                 G               |           G"
660 LPRINT" |                                 |"
670 LPRINT"-----------L2----CB2--------------------L4-----CB4-"
680 LPRINT" |                                 |"
690 LPRINT"LOWER L1                         LOWER L3"
700 LPRINT" |                                 |"
710 LPRINT" G                                 G"
720 LPRINT:LPRINT "SOURCE & LOAD RESISTANCE = ";RIN
730 LPRINT "BANDWIDTH IS: ";BW
740 LPRINT "CENTER FREQUENCY IS: ";F0
750 LPRINT
760 LPRINT : LPRINT "BANDPASS VALUES:"
770 LPRINT "SECTION", "CAPS ", "B CAPS ", "INDUCT ", "B INDUCT "
780 FOR W = 1 TO M  :NUM=C(W)/W0/RIN/Z :GOSUB 1484
790 LPRINT W,NUM;UNIT$;"F",
792 NUM=CB(W)/W0/RIN:GOSUB 1484
794 LPRINT NUM;UNIT$;"F",
796 NUM= L(W)*RIN/W0:GOSUB 1484 :LS(W)=NUM:LS$(W)=UNIT$
800 LPRINT NUM;UNIT$;"H",
802 NUM= Z*LB(W)*RIN/W0:GOSUB 1484:LBS(W)=NUM
804 LPRINT NUM;UNIT$;"H"
810 NEXT W
811 LPRINT:LPRINT"THE ODD NUMBERED INDUCTORS ARE TAPPED AT";1/(Z)^.5;" FROM THE GROUND END"
812 LPRINT:LPRINT "LOWPASS PROTOTYPE VALUES:"
813 LPRINT "SECTION","VALUE"
814 FOR J=1 TO N STEP 2:LPRINT J,C(J)/QC:NEXT J
816 FOR J=2 TO M STEP 2:LPRINT J,L(J)/QC:NEXT J
818 IF Z=1 GOTO 1610
830 LPRINT:LPRINT"FOR SPICE SIMULATION,USE THE VALUES AS SHOWN IN THE SCHEMATIC:"
834 LPRINT "USE UNITY COUPLING, K=1"
840 LPRINT"SERIES L","UPPER L","L TO GND"  
850 LPRINT:FOR W=1 TO M
870 LPRINT LS(W);LS$(W),:NUM= LBS(W)*(Z-Z^.5)^2/Z^2:GOSUB 1484
872 LPRINT NUM;UNIT$,
874 NUM=LBS(W)/Z:GOSUB 1484:LPRINT NUM;UNIT$
876 NEXT W
880 GOTO 1610
890 IF Z=1 THEN 930
900 PRINT"THE EVEN NUMBERED CAPS WILL BE DIVIDED BY A FACTOR (Z) THAT YOU MAY"
910 PRINT"CHOOSE.  THE EVEN NUMBERED INDUCTORS WILL BE TAPPED AT 1/(SQR ROOT Z)"
920 PRINT"OF THE TURNS FROM THE GROUND END."
930 PRINT "INPUT TABLE VALUES:"
940 FOR J = 1 TO 9 STEP 2
950 PRINT "L"; J; " ="; : INPUT L(J): L(J) = L(J)*QC
960 N = J - 1
970 IF L(J) = 0 THEN 990
980 GOTO 1040
990 FOR Q = 2 TO 10 STEP 2: PRINT "C"; Q; " ="; : INPUT C(Q)
1000 C(Q) = C(Q)*QC
1010 M = Q - 1
1020 IF C(Q) = 0 THEN 1050
1030 NEXT Q
1040 NEXT J
1050 W0 = 2 * PI* F0
1060 REM NOW RESONATE ALL ELEMENTS: SERIES CAP WITH INDUCTORS,
1070 REM PARALELL INDUCTOR WITH CAPS
1080 FOR J = 1 TO N-1 STEP 2: CB(J) = 1 / L(J): NEXT J
1090 FOR Q = 2 TO M-1 STEP 2: LB(Q) = 1 / C(Q):NEXT Q
1100 CLS : LPRINT NME$:LPRINT DATE$
1104 LPRINT "THIS IS THE SCHEMATIC:"   :LPRINT
1110 IF Z=1 THEN GOSUB 1370
1112 LPRINT"               __________"
1120 LPRINT"               |        |"
1130 LPRINT"             UPPER L    C2"
1140 LPRINT"               |        |"
1150 LPRINT"               |        G"
1160 LPRINT"--L1----CB1--------------------L3-----CB3- ETC."
1170 LPRINT"               |                     "
1180 LPRINT"             LOWER L                  "
1190 LPRINT"               |                "
1200 LPRINT"               G                 "
1220 LPRINT:LPRINT "SOURCE & LOAD RESISTANCE = ";RIN
1230 LPRINT "BANDWIDTH IS: ";BW
1240 LPRINT "CENTER FREQUENCY IS: ";F0
1250 LPRINT
1260 LPRINT : LPRINT "BANDPASS VALUES:"
1270 LPRINT "SECTION", "CAPS PF", "B CAPS PF", "INDUCT NH", "B INDUCT NH"
1280 FOR W = 1 TO M:LPRINT W,
1282 NUM=C(W)/Z/RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"F",
1284 NUM=CB(W)/RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"F",
1290 NUM=L(W)*RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"H",
1292 NUM= Z*LB(W)*RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"H"
1300 NEXT W
1301 LPRINT:LPRINT"THE EVEN NUMBERED INDUCTORS ARE TAPPED AT";1/(Z)^.5;" FROM THE GROUND END"
1302 LPRINT:LPRINT "LOWPASS PROTOTYPE VALUES:"
1303 LPRINT "SECTION","VALUE"
1304 FOR J=1 TO N STEP 2:LPRINT J,L(J)/QC:NEXT J
1306 FOR J=2 TO M STEP 2:LPRINT J,C(J)/QC:NEXT J
1308 IF Z=1 THEN 1610
1320 LPRINT:LPRINT"FOR SPICE SIMULATION,USE THE VALUES SHOWN IN THE SCHEMATIC:"
1322 LPRINT"USE UNITY COUPLING, K=1"
1330 LPRINT"UPPER L","L TO GND"
1340 LPRINT:FOR W=2 TO M STEP 2
1350 REM NUM=L(W)*RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"H",
1352 REM NUM=Z*LB(W)*RIN/W0:GOSUB 1484:LPRINT NUM;UNIT$;"H",
1354 LBS(W)=Z*LB(W)*RIN/W0:NUM=LBS(W)*(Z-Z^.5)^2/Z^2:GOSUB 1484
1355 LPRINT NUM;UNIT$;"H",
1356 NUM=LB(W)/Z:GOSUB 1484:LPRINT NUM;UNIT$;"H"
1360  NEXT W : GOTO 1610
1370 LPRINT"--L1----CB1--------------------L3-----CB3-"
1380 LPRINT"               |      |   "
1390 LPRINT"              LB2    C2   "
1400 LPRINT"               |      |   "
1410 LPRINT"               G      G   "
1420 RETURN  1220
1430 LPRINT"-----------L2----CB2---------------L4-----CB4-"
1440 LPRINT" |    |                |      |"
1450 LPRINT"LB1   C1              LB3    C3"
1460 LPRINT" |    |                |      |"
1470 LPRINT" G    G                G      G"
1480 RETURN  720
1481 REM ROUNDOFF.BAS
1482 REM A ROUTINE TO ROUNDOFF TO 3 DIGITS AND PUT IN KILO, NANO, PICO UNITS
1483 REM INPUT NUMBER IS "NUM"
1484 IF NUM=<1000 AND NUM>1 THEN  1492
1485 IF NUM=<1000000! AND NUM>1 THEN 1493
1486 IF NUM=<1E+09 AND NUM>1 THEN 1494
1487 IF NUM>1E+12 THEN 1495
1488 IF NUM=>.001 AND NUM<1 THEN 1496
1489 IF NUM=>.000001 AND NUM<1 THEN 1497
1490 IF NUM=>1E-09 AND NUM<1 THEN 1498
1491 IF NUM=>1E-12 AND NUM<1 THEN 1499
1492 UNIT$="" : GOTO 1500
1493 UNIT$="KILO": NUM=NUM/1000 : GOTO 1500
1494 UNIT$="MEG" : NUM=NUM/1000000! : GOTO 1500
1495 UNIT$="GIG" : NUM=NUM/1E+12 : GOTO 1500
1496 UNIT$="MILLI" : NUM=NUM*1000 :GOTO 1500
1497 UNIT$="MICRO" : NUM=NUM*1000000! : GOTO 1500
1498 UNIT$="NANO" : NUM=NUM*1E+09 : GOTO 1500
1499 UNIT$="PICO" : NUM=NUM*1E+12 : GOTO 1500
1500 IF NUM>0 AND NUM<10 THEN NUM=INT(NUM*100+.5)/100
1501 IF NUM>=10 AND NUM<100 THEN NUM=INT(NUM*10+.5)/10
1502 IF NUM>=100 AND NUM <1000 THEN NUM=INT(NUM+.5)
1503 RETURN
1600 REM LCBP.BAS
1610 LPRINT CHR$(12)
1620 CHAIN "FILTMENU"
1630 END


    Source: geocities.com/russlk/filters

               ( geocities.com/russlk)