10 REM LOPASS.BAS REVISED JAN 2000
12 REM WRITTEN BY RUSS KINCAID
15 CLS
20 PRINT "THIS PROG DESIGNS A LOPASS FILTER FROM A LOPASS PROTOTYPE"
30 PRINT "THE FILTER CAN BE INDUCTOR INPUT OR CAPACITOR INPUT, YOU SPECIFY:"
31 PRINT "CAP INPUT:": PRINT "-------L2-------": PRINT "   |        |"
32 PRINT "   C1       C3": PRINT "   |        |": PRINT "  GND      GND"
33 PRINT
34 PRINT "INDUCTOR INPUT:": PRINT "--L1----L3--": PRINT "     |": PRINT "     C2"
35 PRINT "     |": PRINT "    GND"
36 INPUT "ENTER YOUR DESCRIPTION OF THIS FILTER: ", DESC$
40 PI = 3.14162
100 INPUT "CAP INPUT (1) OR INDUCTOR INPUT (2):", A
104 PRINT "ENTER BLANK (JUST A CARRAGE RETURN) TO END THE INPUT LOOP"
110 ON A GOTO 120, 180
120 FOR J = 1 TO 10 STEP 2
130 PRINT "CAP"; J; : INPUT PART(J)
132 IF PART(J) = 0 THEN N = J - 1: GOTO 150
140 NEXT J
150 FOR J = 2 TO 10 STEP 2
160 PRINT "IND"; J; : INPUT PART(J)
162 IF PART(J) = 0 THEN 172
170 NEXT J
172 IF J - 1 > N THEN N = J - 1
174 GOTO 270
180 FOR J = 1 TO 10 STEP 2
190 PRINT "IND"; J; : INPUT PART(J)
192 IF PART(J) = 0 THEN N = J - 1: GOTO 210
200 NEXT J
210 FOR J = 2 TO 10 STEP 2
220 PRINT "CAP"; J; : INPUT PART(J)
230 IF PART(J) = 0 THEN 250
240 NEXT J
250 IF J - 1 > N THEN N = J - 1
260 REM
270 INPUT "WHAT IS THE CUTOFF FREQUENCY:", FC: WC = 2 * PI * FC
275 PRINT "IF THE PROTOTYPE LOAD AND SOURCE RESISTANCES ARE NOT EQUAL TO 1"
276 PRINT "YOU WILL HAVE TO CALCULATE THE ONE THAT IS NOT EQUAL TO 1"
280 INPUT "WHAT IS THE ACTUAL LOAD AND/OR SOURCE RESISTANCE:", Z
290 PRINT : INPUT "PREPARE THE PRINTER & PRESS ENTER WHEN READY"; POO
292 OPEN "PRN" FOR OUTPUT AS #1
295 ON A GOTO 297, 352
297 PRINT #1, DESC$
300 PRINT #1, "THIS IS THE SCHEMATIC:", , "DESIGN DATE: "; DATE$
301 PRINT #1, : PRINT #1, "-------L2-------": PRINT #1, "   |        |"
302 PRINT #1, "   C1       C3": PRINT #1, "   |        |": PRINT #1, "  GND      GND"
305 FOR J = 1 TO N STEP 2
307 NUM = PART(J) / Z / WC: GOSUB 2050
310  PRINT #1, J, NUM; " "; UNIT$; "FARAD"
320 NEXT J
330 FOR J = 2 TO N STEP 2
335 NUM = PART(J) * Z / WC: GOSUB 2050
340  PRINT #1, J, NUM; " "; UNIT$; "HENRY"
350 NEXT J: GOTO 420
351 REM INDUCTOR INPUT ROUTINE
352 PRINT #1, DESC$
353 PRINT #1, "THIS IS THE SCHEMATIC:", , "DESIGN DATE: "; DATE$
354 PRINT #1,
355 PRINT #1, : PRINT #1, "--L1----L3--": PRINT #1, "     |": PRINT #1, "     C2"
356 PRINT #1, "     |": PRINT #1, "    GND"
360 FOR J = 1 TO N STEP 2
365 NUM = PART(J) * Z / WC: GOSUB 2050
370  PRINT #1, J, NUM; " "; UNIT$; "HENRY"
380 NEXT J
390 FOR J = 2 TO N STEP 2
395 NUM = PART(J) / Z / WC: GOSUB 2050
400  PRINT #1, J, NUM; " "; UNIT$; "FARAD"
410 NEXT J
420 PRINT #1, CHR$(12)
500 CLOSE #1
999 CHAIN "FILTMENU.TXT"
2000 REM ROUNDOFF.BAS
2010 REM A ROUTINE TO ROUNDOFF TO 3 DIGITS AND PUT IN KILO, NANO, PICO UNITS
2020 REM INPUT NUMBER IS "NUM"
2050 IF NUM <= 1000 AND NUM > 1 THEN PRINT "50, NUM="; NUM: GOTO 2130
2060 IF NUM <= 999999! AND NUM > 1 THEN 2140
2070 IF NUM <= 99999999 AND NUM > 1 THEN 2150
2080 IF NUM > 99999999 THEN 2160
2090 IF NUM >= .001 AND NUM < 1 THEN 2170
2100 IF NUM >= .000001 AND NUM < 1 THEN 2180
2110 IF NUM >= 1E-09 AND NUM < 1 THEN 2190
2120 IF NUM >= 1E-12 AND NUM < 1 THEN 2200
2130 UNIT$ = "": GOTO 2210
2140 UNIT$ = "KILO": NUM = NUM / 1000: GOTO 2210
2150 UNIT$ = "MEGA": NUM = NUM / 1000000!: GOTO 2210
2160 UNIT$ = "GIGA": NUM = NUM / 1E+09: GOTO 2210
2170 UNIT$ = "MILLI": NUM = NUM * 1000: GOTO 2210
2180 UNIT$ = "MICRO": NUM = NUM * 1000000!: GOTO 2210
2190 UNIT$ = "NANO": NUM = NUM * 1E+09: GOTO 2210
2200 UNIT$ = "PICO": NUM = NUM * 1E+12: GOTO 2210
2210 IF NUM > 0 AND NUM < 10 THEN NUM = INT(NUM * 100 + .5) / 100
2220 IF NUM >= 10 AND NUM < 100 THEN NUM = INT(NUM * 10 + .5) / 10
2230 IF NUM >= 100 AND NUM < 1000 THEN NUM = INT(NUM + .5)
2240 RETURN
2250 END



    Source: geocities.com/russlk/filters

               ( geocities.com/russlk)