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