10 KEY OFF: 'ATTENUATOR PAD CALCULATOR J.ROWE, 23/2/93 15 DEFINT A-N: DEFSNG P-Z: 'Various definitions... 16 DEF FNX (X) = (LOG(X)) / LOG(10) 20 GOSUB 5000: GOSUB 5100: GOSUB 6000: 'Set up main menu, get selection 30 ON N GOTO 100, 1500, 2000, 2500, 3000, 9900 40 REM 100 GOSUB 5000: LOCATE 4, 20: PRINT "T-SECTION PAD CALCULATIONS..."; 110 GOSUB 7000: 'Get basic options 120 GOSUB 6000: IF N > 3 GOTO 120 ELSE ON N GOTO 200, 500, 20 200 GOSUB 5000: LOCATE 4, 20: PRINT "T-SECTION PAD: Finding the R's..."; 210 GOSUB 7500: 'Get form of attenuation factor 220 GOSUB 6000: IF N > 3 THEN GOTO 220 ELSE M = N: 'Save answer 230 GOSUB 5000: LOCATE 4, 20: PRINT "T-SECTION PAD: Attenuation factor"; 240 ON M GOTO 250, 260, 270: 'Now use answer to act 250 LOCATE 8, 20: INPUT "What is Vin/Vout, or Iin/Iout"; V: GOTO 300 260 LOCATE 8, 20: INPUT "What is Pin/Pout"; P: V = SQR(P): GOTO 300 270 LOCATE 8, 20: INPUT "What is the attenuation in dB"; U 280 V = EXP(LOG(10)) ^ (U / 20) 300 GOSUB 7700: 'Get the matching impedance... 310 R1 = Z * (V - 1) / (V + 1): R2 = Z * (2 * V) / ((V ^ 2) - 1): 'And work out answers 320 GOSUB 5000: LOCATE 4, 20: PRINT "T-SECTION PAD: Resistance Values"; 330 LOCATE 8, 20: PRINT "Series Resistors R1 = "; USING "#####.##"; R1; : PRINT " ohms"; 340 LOCATE 10, 20: PRINT "Shunt Resistor R2 = "; USING "#####.##"; R2; : PRINT " ohms"; 350 LOCATE 12, 20: PRINT "V/I atten. factor = "; V; 360 LOCATE 14, 20: PRINT "Power atten. factor = "; V ^ 2; 370 LOCATE 16, 20: PRINT "Attenuation in dB = "; 20 * FNX(V); 380 LOCATE 19, 20: PRINT "(Press <1> to return to T-section submenu)"; 390 GOSUB 6000: IF N > 1 THEN GOTO 390 ELSE GOTO 100 490 REM 500 GOSUB 5000: LOCATE 4, 20: PRINT "T-SECTION PAD: Finding the dB attenuation..."; 510 GOSUB 7700: LOCATE 12, 20: INPUT "What are the series resistors R1 (ohms)"; R1 520 LOCATE 14, 20: INPUT "And what is the shunt resistor R2 (ohms)"; R2 530 RM = R2 * (R1 + Z) / (R2 + R1 + Z): RO = RM + R1: RI = R1 + (R2 * (R1 + Z) / (R2 + R1 + Z)) 540 V = (Z + R1 + RM) * (Z + R1 + R2) / (2 * Z * R2): U = 20 * FNX(V) 550 GOSUB 5000: LOCATE 4, 20: PRINT "T-SECTION PAD: Attenuation, etc"; 560 LOCATE 8, 20: PRINT "When resistors R1 are"; USING "#####.#"; R1; : PRINT " ohms"; 570 LOCATE 10, 20: PRINT "And resistor R2 is "; USING "#####.#"; R2; : PRINT " ohms"; 580 LOCATE 12, 20: PRINT "V/I atten. factor = "; V; "(="; USING "###.#"; U; : PRINT " dB)"; 590 LOCATE 14, 20: PRINT "Input impedance = "; USING "#####.##"; RI; : PRINT " ohms"; 600 LOCATE 16, 20: PRINT "Output impedance = "; USING "#####.##"; RO; : PRINT " ohms"; 610 LOCATE 19, 20: PRINT "(Press <1> to return to T-section submenu)"; 620 GOSUB 6000: IF N > 1 THEN GOTO 620 ELSE GOTO 100 1490 REM 1500 GOSUB 5000: LOCATE 4, 20: PRINT "L-SECTION PAD CALCULATIONS..."; 1510 GOSUB 7000: 'Get basic options 1520 GOSUB 6000: IF N > 3 GOTO 1520 ELSE ON N GOTO 1600, 1800, 20 1600 GOSUB 5000: LOCATE 4, 20: PRINT "L-SECTION PAD: Finding the R's..."; 1610 GOSUB 7500: 'Get form of attenuation factor 1620 GOSUB 6000: IF N > 3 THEN GOTO 1620 ELSE M = N: 'Save answer 1630 GOSUB 5000: LOCATE 4, 20: PRINT "L-SECTION PAD: Attenuation factor"; 1640 ON M GOTO 1650, 1660, 1670: 'Now use answer to act 1650 LOCATE 8, 20: INPUT "What is Vin/Vout, or Iin/Iout"; V: GOTO 1700 1660 LOCATE 8, 20: INPUT "What is Pin/Pout"; P: V = SQR(P): GOTO 300 1670 LOCATE 8, 20: INPUT "What is the attenuation in dB"; U 1680 V = EXP(LOG(10)) ^ (U / 20) 1700 GOSUB 7700: 'Get the matching impedance... 1710 R1 = Z * (V - 1) / (V): R2 = Z / (V - 1): 'And work out answers 1720 GOSUB 5000: LOCATE 4, 20: PRINT "L-SECTION PAD: Resistance Values"; 1730 LOCATE 8, 20: PRINT "Series Resistor R1 = "; USING "#####.##"; R1; : PRINT " ohms"; 1740 LOCATE 10, 20: PRINT "Shunt Resistor R2 = "; USING "#####.##"; R2; : PRINT " ohms"; 1750 LOCATE 12, 20: PRINT "V/I atten. factor = "; V; 1760 LOCATE 14, 20: PRINT "Power atten. factor = "; V ^ 2; 1770 LOCATE 16, 20: PRINT "Attenuation in dB = "; 20 * FNX(V); 1780 LOCATE 19, 20: PRINT "(Press <1> to return to main menu)"; 1790 GOSUB 6000: IF N > 1 THEN 1790 ELSE GOTO 20 1800 GOSUB 5000: GOSUB 9500: GOTO 20 2000 GOSUB 5000: LOCATE 4, 20: PRINT "REVERSED L-SECTION PAD CALCULATIONS..."; 2010 GOSUB 9500: GOTO 20 2500 GOSUB 5000: LOCATE 4, 20: PRINT "PI-SECTION PAD CALCULATIONS..."; 2510 GOSUB 7000: 'Get basic options 2520 GOSUB 6000: IF N > 3 GOTO 2520 ELSE ON N GOTO 2600, 2800, 20 2600 GOSUB 5000: LOCATE 4, 20: PRINT "PI-SECTION PAD: Finding the R's..."; 2610 GOSUB 7500: 'Get form of attenuation factor 2620 GOSUB 6000: IF N > 3 THEN GOTO 2620 ELSE M = N: 'Save answer 2630 GOSUB 5000: LOCATE 4, 20: PRINT "PI-SECTION PAD: Attenuation factor"; 2640 ON M GOTO 2650, 2660, 2670: 'Now use answer to act 2650 LOCATE 8, 20: INPUT "What is Vin/Vout, or Iin/Iout"; V: GOTO 2700 2660 LOCATE 8, 20: INPUT "What is Pin/Pout"; P: V = SQR(P): GOTO 2700 2670 LOCATE 8, 20: INPUT "What is the attenuation in dB"; U 2680 V = EXP(LOG(10)) ^ (U / 20) 2700 GOSUB 7700: 'Get the matching impedance... 2710 R1 = Z * (V + 1) / (V - 1): R2 = Z * ((V ^ 2) - 1) / (2 * V): 'And work out answers 2720 GOSUB 5000: LOCATE 4, 20: PRINT "PI-SECTION PAD: Resistance Values"; 2730 LOCATE 8, 20: PRINT "Shunt Resistors R1 = "; USING "#####.##"; R1; : PRINT " ohms"; 2740 LOCATE 10, 20: PRINT "Series Resistor R2 = "; USING "#####.##"; R2; : PRINT " ohms"; 2750 LOCATE 12, 20: PRINT "V/I atten. factor = "; V; 2760 LOCATE 14, 20: PRINT "Power atten. factor = "; V ^ 2; 2770 LOCATE 16, 20: PRINT "Attenuation in dB = "; 20 * FNX(V); 2780 LOCATE 19, 20: PRINT "(Press <1> to return to Pi-section submenu)"; 2790 GOSUB 6000: IF N > 1 THEN 2790 ELSE GOTO 2500 2800 GOSUB 5000: LOCATE 4, 20: PRINT "PI-SECTION PAD: Finding the dB attenuation"; 2810 GOSUB 7700: LOCATE 12, 20: INPUT "What are the shunt resistors R1 (ohms)"; R1 2820 LOCATE 14, 20: INPUT "And what is the series resistor R2 (ohms)"; R2 2830 RJ = (R1 * Z / (R1 + Z)) + R2: RO = RJ * R1 / (RJ + R1): RI = RO 2840 V = (R1 + Z) * ((R1 * Z) + RJ * (R1 + Z)) / (2 * Z * (R1 ^ 2)): U = 20 * FNX(V) 2850 GOSUB 5000: LOCATE 4, 20: PRINT "T-SECTION PAD: Attenuation, etc"; 2860 LOCATE 8, 20: PRINT "When resistors R1 are"; USING "#####.#"; R1; : PRINT " ohms"; 2870 LOCATE 10, 20: PRINT "And resistor R2 is "; USING "#####.#"; R2; : PRINT " ohms"; 2880 LOCATE 12, 20: PRINT "V/I atten. factor = "; V; "(="; USING "###.#"; U; : PRINT " dB)"; 2890 LOCATE 14, 20: PRINT "Input impedance = "; USING "#####.##"; RI; : PRINT " ohms"; 2900 LOCATE 16, 20: PRINT "Output impedance = "; USING "#####.##"; RO; : PRINT " ohms"; 2910 LOCATE 19, 20: PRINT "(Press <1> to return to Pi-section submenu)"; 2920 GOSUB 6000: IF N > 1 THEN GOTO 2920 ELSE GOTO 2500 3000 GOSUB 5000: LOCATE 4, 20: PRINT "BRIDGED-T PAD CALCULATIONS..."; 3010 GOSUB 7000: 'Get basic options 3020 GOSUB 6000: IF N > 3 GOTO 3020 ELSE ON N GOTO 3100, 3300, 20 3100 GOSUB 5000: LOCATE 4, 20: PRINT "BRIDGED-T PAD: Finding the R's..."; 3110 GOSUB 7500: 'Get form of attenuation factor 3120 GOSUB 6000: IF N > 3 THEN GOTO 3120 ELSE M = N: 'Save answer 3130 GOSUB 5000: LOCATE 4, 20: PRINT "BRIDGED-T PAD: Attenuation factor"; 3140 ON M GOTO 3150, 3160, 3170: 'Now use answer to act 3150 LOCATE 8, 20: INPUT "What is Vin/Vout, or Iin/Iout"; V: GOTO 3200 3160 LOCATE 8, 20: INPUT "What is Pin/Pout"; P: V = SQR(P): GOTO 3200 3170 LOCATE 8, 20: INPUT "What is the attenuation in dB"; U 3180 V = EXP(LOG(10)) ^ (U / 20) 3200 GOSUB 7700: 'Get the matching impedance (Z)... 3210 R1 = Z * (V - 1): R2 = (Z ^ 2) / R1: 'And work out answers 3220 GOSUB 5000: LOCATE 4, 20: PRINT "BRIDGED-T PAD: Resistance Values"; 3230 LOCATE 8, 20: PRINT "Series Resistor R1 = "; USING "#####.##"; R1; : PRINT " ohms"; 3240 LOCATE 10, 20: PRINT "Shunt Resistor R2 = "; USING "#####.##"; R2; : PRINT " ohms"; 3250 LOCATE 12, 20: PRINT "V/I atten. factor = "; V; 3260 LOCATE 14, 20: PRINT "Power atten. factor = "; V ^ 2; 3270 LOCATE 16, 20: PRINT "Attenuation in dB = "; 20 * FNX(V); 3280 LOCATE 19, 20: PRINT "(Press <1> to return to Bridged-T submenu)"; 3290 GOSUB 6000: IF N > 1 THEN 3290 ELSE GOTO 3000 3300 GOSUB 5000: LOCATE 4, 20: PRINT "BRIDGED-T PAD: Finding the dB attenuation"; 3310 GOSUB 7700: LOCATE 12, 20: INPUT "What is the series resistor R1 (ohms)"; R1 3320 LOCATE 14, 20: INPUT "And what is the shunt resistor R2 (ohms)"; R2 3330 RJ = (R1 * Z / (R1 + Z)) + R2: RO = RJ * R1 / (RJ + R1): RI = RO 3340 V = (R1 + Z) * ((R1 * Z) + RJ * (R1 + Z)) / (2 * Z * (R1 ^ 2)): U = 20 * FNX(V) 3350 GOSUB 5000: LOCATE 4, 20: PRINT "BRIDGED-T PAD: Attenuation, etc"; 3360 LOCATE 8, 20: PRINT "When resistor R1 is "; USING "#####.#"; R1; : PRINT " ohms"; 3370 LOCATE 10, 20: PRINT "And resistor R2 is "; USING "#####.#"; R2; : PRINT " ohms"; 3380 LOCATE 12, 20: PRINT "V/I atten. factor = "; V; "(="; USING "###.#"; U; : PRINT " dB)"; 3390 LOCATE 14, 20: PRINT "Input impedance = "; USING "#####.##"; RI; : PRINT " ohms"; 3400 LOCATE 16, 20: PRINT "Output impedance = "; USING "#####.##"; RO; : PRINT " ohms"; 3410 LOCATE 19, 20: PRINT "(Press <1> to return to Bridged-T submenu)"; 3420 GOSUB 6000: IF N > 1 THEN GOTO 3420 ELSE GOTO 3000 5000 COLOR 15, 1: CLS : LOCATE 1, 1: PRINT CHR$(201); STRING$(78, 205); CHR$(187) 5010 FOR N = 2 TO 24: LOCATE N, 1: PRINT CHR$(186); : LOCATE N, 80: PRINT CHR$(186); : NEXT 5020 LOCATE 25, 1: PRINT CHR$(200); STRING$(78, 205); CHR$(188); : RETURN 5100 LOCATE 3, 20: PRINT "EA MATCHED ATTENUATOR PAD CALCULATOR Version 1.0"; 5110 LOCATE 7, 20: PRINT "Main Menu:"; 5120 LOCATE 9, 20: PRINT "1. T-section Pad"; 5130 LOCATE 11, 20: PRINT "2. L-section Pad"; 5140 LOCATE 13, 20: PRINT "3. Reversed-L Pad"; 5150 LOCATE 15, 20: PRINT "4. Pi-section Pad"; 5160 LOCATE 17, 20: PRINT "5. Bridged-T Pad"; 5170 LOCATE 19, 20: PRINT "6. Exit from this program..."; 5180 LOCATE 23, 20: PRINT "(Select 1, 2, 3, 4, 5 or 6)"; 5190 COLOR 7, 0: RETURN 6000 GOSUB 8000: IF A$ <> "1" AND A$ <> "2" AND A$ <> "3" AND A$ <> "4" AND A$ <> "5" AND A$ <> "6" THEN GOTO 6000 ELSE N = VAL(A$): RETURN 7000 LOCATE 7, 20: PRINT "What do you want to do:"; 7010 LOCATE 10, 20: PRINT "1. Find R values for a known attenuation factor"; 7020 LOCATE 12, 20: PRINT "2. Find the attenuation (dB) for known resistors"; 7030 LOCATE 14, 20: PRINT "3. Return to the main menu..."; 7040 LOCATE 17, 20: PRINT "(Select 1, 2 or 3)"; : RETURN 7050 REM 7500 LOCATE 8, 20: PRINT "Do you want to specify the attenuation in:"; 7510 LOCATE 11, 20: PRINT "1. Voltage or current ratio"; 7520 LOCATE 13, 20: PRINT "2. Power ratio"; 7530 LOCATE 15, 20: PRINT "3. Decibels"; 7540 LOCATE 19, 20: PRINT "(Select 1, 2 or 3)"; : RETURN 7550 REM 7700 LOCATE 10, 20: INPUT "What is the matching impedance (ohms)"; Z: RETURN 7710 REM 8000 A$ = INKEY$: IF A$ = "" THEN 8000 ELSE RETURN 8010 REM 9000 FOR N = 1 TO 5000: NEXT N: RETURN 9500 LOCATE 8, 20: PRINT "Sorry, not implemented yet!"; : GOSUB 9000: RETURN 9900 SYSTEM 9999 END