home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Antennas
/
Antennas_CD-ROM_Walnut_Creek_September_1996.iso
/
w4mb
/
vol2
/
basic
/
calc.asc
< prev
next >
Wrap
Text File
|
1996-06-30
|
17KB
|
430 lines
1 CLS
2 PRINT " ***************************************************************"
3 PRINT " * RF AND TRANSMISSION LINE CALCULATIONS *"
4 PRINT " * PROGRAM BY R.P. HAVILAND, W4MB *"
5 PRINT " * COPYRGHT 1990 *"
6 PRINT " * MINILAB BOOKS, DAYTONA BEACH, FL 32121-1086 *"
7 PRINT " ***************************************************************"
8 DEF FNP (X) = INT(100 * X + .5) / 100: PI = 3.1415923#
9 DEF FNSINH (X) = (EXP(X) + EXP(-X)) / 2
10 DEF FNCOSH (X) = (EXP(X) - EXP(-X)) / 2
15 ON ERROR GOTO 64000
20 PRINT : PRINT " THE ROUTINES HERE ARE PRINARILY INTENDED FOR TRANSMISSION LINE PROBLEMS"
25 PRINT " BUT ARE USEFUL FOR MANY GENERAL RF PROBLENS."
30 PRINT " ROUTINES ARE SELECTED BY CODE LETTER a-z and A-Z,"
35 PRINT " OR BY A SEQUENCE OF LETTERS, WHICH WILL BE EXECUTED IN SUCCESSION."
40 PRINT " MAXIMUM LENGTH OF SEQUENCE IS 255 LETTERS"
45 PRINT " IF A PARTICULAR OPERATIONS SET IS TO BE USED OFTEN, IT IS PROBABLY"
50 PRINT " WORTHWHILE TO WRITE A SPECIAL INPUT-DRIVER-OUTPUT PROGRAM,"
55 PRINT " SELECTING THE APPROPRIATE OPERATIONS FROM THE FULL SET."
60 PRINT " OPERATIONS ROUTINES AND TRANSMISSION LINE TYPES MAY BE ADDED."
65 PRINT " USE CONTROL-C OR BREAK TO HALT PROGRAM."
70 INPUT " PRESS RETURN TO START"; T$
75 CLS
80 PRINT " ENTER LENGTH OF LINE, FEET": INPUT LL
85 PRINT " ENTER LINE TYPE:NULL= RG-8A/U,"
90 PRINT " OR ENTER TYPE, (RG-57/U, ETC), OR 300-TWIN OR 300-OPEN": INPUT TY$
100 PRINT : IF TY$ = "" THEN TY$ = "RG-8A/U"
110 IF TY$ = "RG-8A/U" THEN ZO = 50: ML = .21: XP = .57: PF = 29.5: VF = .66: GOTO 400
120 IF TY$ = "RG-8F/U" THEN ZO = 50: ML = .15: XP = .53: PF = 25.4: VF = .8: GOTO 400
130 IF TY$ = "RG-11A/U" THEN ZO = 75: ML = .15: XP = .53: PF = 20.6: VF = .66: GOTO 400
140 IF TY$ = "RG-58A/U" THEN ZO = 53.5: ML = .33: XP = .58: PF = 28.5: VF = .66: GOTO 400
150 IF TY$ = "RG-58F/U" THEN ZO = 53.5: ML = .31: XP = .51: PF = 28.5: VF = .79: GOTO 400
160 IF TY$ = "RG-59A/U" THEN ZO = 73: ML = .31: XP = .51: PF = 21: VF = .66: GOTO 400
170 IF TY$ = "RG-213/U" THEN ZO = 50: ML = .15: XP = .56: PF = 30.8: VF = .66: GOTO 400
180 IF TY$ = "RG-246/U" THEN ZO = 75: ML = .048: XP = .48: PF = 16.7: VF = .81: GOTO 400
190 IF TY$ = "RG-360/U" THEN ZO = 50: ML = .06: XP = .55: PF = 25: VF = .81: GOTO 400
200 IF TY$ = "30O-OPEN" THEN ZO = 300: ML = 8.999999E-03: XP = 1.12: PF = 5: VF = .95: GOTO 400
210 IF TY$ = "30O-TWIN" THEN ZO = 300: ML = .08: XP = .56: PF = 4.6: VF = .95: GOTO 400
216 CLS
300 PRINT " TYPE IS NOT IN FILE. ENTER, IN ORDER"
310 PRINT " ZO,LOSS MULTIPLIIER, LOSS EXPONENT"
320 INPUT ZO, ML, XP
330 PRINT " ENTER IN ORDER"
340 PRINT " CAPACITY PER FOOT, VELOCITY FACTOR"
350 INPUT PF, VF
360 GOSUB 21800
400 PRINT : INPUT "ENTER FREQUENCY, MHZ (CHANGEABLE LATER)"; F
499 REM SUBROUTINES
500 CLS : PRINT " GENERAL INPUT INSTRUCTIONS"
510 PRINT " RESISTANCES,REACTANCES IN OHMS, INVERSE IN MILLIMHOS"
520 PRINT " VARIABLES AS MAGNITUDE, ANGLE (DEGREES )FOR I/O"
530 PRINT " INTERNAL ANGLES IN RADIANS"
540 PRINT " PASSING REGISTERS:SM,SA:SN,SB, MAY BE CHANGED BY A ROUTINE"
550 PRINT " HOLDING REGISTERS:HM,HA, NOT TO BE CHANGED BY A CALLED ROUTINE ROUTINE"
560 PRINT " OTHER VARIABLES ARE GLOBAL"
570 PRINT " ENTER OPERATION SYMBOL, LOWER OR UPPER CASE LETTER ONLY"
580 PRINT " USE c FOR A chained SEQUENCE OF OPERATIONS"
590 INPUT " PRESS RETURN FOR AVAILABLE OPERATIONS."; T$
600 CLS : PRINT "a-ADD A-SWR>ATTEN." '6500, 19300
605 PRINT "b-(spare) B-(spare)"
610 PRINT "c-CHAIN, SEQUENCE C-REF COEFF>SWR"
615 PRINT "d-DIVIDE D-WAVELEN>DEG"
620 PRINT "e-ENTER FILE E-ELEMENT FACTOR"
625 PRINT "f-FILE TO DISK F-WAVELEN>FREQ" '7000, 19800
630 PRINT "g-ROTATE>GEN G-GET FILE"
635 PRINT "h-(spare) H-(spare)"
640 PRINT "i-INVERT I-INPUT"
645 PRINT "l-ROTATE>LOAD L-FREQ>WAVELEN" '7600, 20400
650 PRINT "m-MULTIPLY M-(spare)"
655 PRINT "o-ORDER FILE O-OC ZIN"
660 PRINT "p->POLAR P-PRINT FILE"
665 PRINT "q-SQ. ROOT Q-QUIT" '8100, 20900
670 PRINT "r->RECTANGULAR R-PRINT RESULTS"
675 PRINT "s-SUBTRACT S-SC ZIN"
680 PRINT "t-SET TEST VALUES T-TEST LOOP"
685 PRINT "v-VARIABLES INPUT V-SEQUENCE FILE VARIABLES"
690 PRINT "w-LOAD Z>SWR W-POWER>SWR" '8700, 21500
695 PRINT "x-XL X-XC"
700 PRINT "z-ZOC,ZSC>ZO Z-ZA"
710 INPUT "ENTER COMMAND"; S$: SR = ASC(S$)
715 IF SR < 65 OR SR > 123 THEN 710
720 GOSUB 1000
730 GOTO 600
1000 IF SR < 75 THEN SR = SR - 64: GOTO 1230
1010 IF SR < 84 THEN SR = SR - 73: GOTO 1240
1020 IF SR < 91 THEN SR = SR - 82: GOTO 1250
1030 IF SR < 97 THEN 1300
1040 IF SR < 107 THEN SR = SR - 96: GOTO 1200
1050 IF SR < 117 THEN SR = SR - 106: GOTO 1210
1060 IF SR < 123 THEN SR = SR - 116: GOTO 1220
1070 GOTO 1300
1200 ON SR GOSUB 6500, 6600, 6700, 6800, 6900, 7000, 7100, 7200, 7300, 7400: GOTO 1300
1210 ON SR GOSUB 7500, 7600, 7700, 7800, 7900, 8000, 8100, 8200, 8300, 8400: GOTO 1300
1220 ON SR GOSUB 8500, 8600, 8700, 8800, 8900, 9000: GOTO 1300
1230 ON SR GOSUB 19300, 19400, 19500, 19600, 19700, 19800, 19900, 20000, 20100: GOTO 1300
1240 ON SR GOSUB 20200, 20300, 20400, 20500, 20600, 20700, 20800, 20900, 21000: GOTO 1300
1250 ON SR GOSUB 21100, 21200, 21300, 21400, 21500, 21600, 21700, 21800
1300 RETURN
6499 REM ADD ROUTINE
6500 GOSUB 8200
6505 HP = SM: HQ = SA
6510 SM = SN: SA = SB
6515 GOSUB 8200
6520 SM = SM + HP: SA = SA + HQ
6525 GOSUB 8000
6530 RETURN
6600 RETURN
6699 REM SEQUENCES
6700 INPUT "SEE NOTES AND ENTER COMMAND WORD"; W$
6705 FOR CH = 1 TO LEN(W$)
6710 S$ = MID$(W$, CH, 1): SR = ASC(S$)
6715 PRINT " COMPLETED: "; LEFT$(W$, CH - 1), "CURRENT OPERATION: "; S$
6720 GOSUB 1000
6725 NEXT CH
6730 INPUT "PRESS RETURN TO CONTINUE"; T$
6735 RETURN
6799 REM DIVISION ROUTINE
6800 SM = SM / SN: SA = SB - SA
6805 RETURN
6899 REM ENTER FILE VALUES
6900 INPUT "ENTER NUMBER OF DATA SETS TO INPUT, 0=CURRENT ARRAY"; TEM
6905 IF TEM = 0 THEN 6920
6910 CO = TEM
6915 DIM A(CO, 4): RO = 4: LR = RO: LC = CO
6920 IF CO = 0 THEN PRINT "NO ARRAY IN MEMORY"
6925 FOR N = 1 TO CO
6930 INPUT "ENTER FREQUENCY, MAGNITUDE, ANGLE (DEGREES)"; A(N, 0), A(N, 1), A(N, 2)
6935 NEXT N
6940 RETURN
6999 REM SAVE FILE
7000 INPUT "ENTER FILEPATH, FILE NAME ", FP$, NA$
7005 OPEN FP$ + NA$ + DATE$ FOR OUTPUT AS #2
7010 C$ = ","
7015 PRINT #2, NA$; C$; DATE$; C$; RO; C$; CO; C$; LR; C$; LC
7020 FOR N = 0 TO RO
7025 PRINT #2, A(N, 0); C$; A(N, 1); C$; A(N, 2); C$; A(N, 3); C$; A(N, 4)
7030 NEXT N
7035 CLOSE 2
7040 RETURN
7099 REM ROTATE TO GENERATOR
7100 FL = 0
7105 HM = SM: HA = SA
7110 SM = ZO: SA = ZP
7115 SN = ZM: SB = ZA
7120 GOSUB 7700
7125 SN = HM: SB = HA
7130 IF FL = 0 THEN 6500
7135 IF FL = 1 THEN 8300
7140 SN = HM: SB = HA
7145 HM = SM: HA = SA
7150 SM = ZM: SA = ZA
7155 GOSUB 7700
7160 SN = ZO: SB = ZP
7165 IF FL = 0 THEN 6500
7170 IF FL = 1 THEN 8300
7175 SN = HM: SB = HA
7180 GOSUB 6800
7185 SN = ZM: SB = ZP
7190 GOSUB 7700
7200 RETURN
7299 REM INVERT
7300 SM = 1 / SM: SA = -SA
7305 RETURN
7400 RETURN
7500 RETURN
7599 REM ROTATE TO LOAD
7600 FL = 1
7605 GOTO 7105
7699 REM MULTIPLY
7700 SM = SM * SN: SA = SA + SB
7705 RETURN
7800 RETURN
7899 REM ORDER ARRAY-SHELL SORT
7900 GA = 2 ^ (INT(LOG(RO / LOG(2))) - 1)
7905 FOR N = 1 TO RO - GA
7910 FOR M = N TO 1 STEP -GA
7915 IF A(M, 1) <= A(M + GA, 1) GOTO 7945
7920 FOR L = 1 TO 8
7925 TE = A(M, L)
7930 A(M, L) = A(M + GA, L)
7935 F(M + GA, L) = TE
7940 NEXT L: NEXT M
7945 NEXT N
7950 GA = INT(GA / 2)
7955 IF GA > 0 GOTO 7905
7960 RETURN
7999 REM TO POLAR
8000 TP = SM: TQ = SA: IF TP = 0 THEN TP = .00001
8005 SM = SQR(TP * TP + TQ * TQ)
8010 SA = ATN(TQ / TP)
8015 RETURN
8099 REM SQUARE ROOT
8100 SM = SQR(SM): SA = SA / 2
8110 RETURN
8199 REM TO RECTANGULAR
8200 TP = SM: TQ = SA
8205 SM = TP * COS(TQ): SA = TP * SIN(TQ)
8210 RETURN
8299 REM SUBTRACT
8300 SM = -SM
8305 GOSUB 6500
8310 SM = -SM
8315 RETURN
8399 REM TEST
8400 SM = 25: SA = 1: SN = 100: SB = PI / 4
8405 PRINT "INPUT VALUES ARE SET TO"
8410 PRINT "SM=25, SA=1 RADIAN=57.3 DEG., SN=100, SB=90 DEG"
8415 INPUT "PRESS RETURN TO CONTINUE"; T$
8420 RETURN
8500 RETURN
8599 REM VARIABLES INPUT
8600 INPUT "ENTER LINE LENGTH, FT"; T$: IF T$ <> "" THEN LL = VAL(T$)
8605 INPUT "ENTER FREQUENCY, MHZ"; T$: IF T$ <> "" THEN F = VAL(T$)
8610 RETURN
8615 RETURN
8699 REM SWR FROM ZL
8700 INPUT "ENTER LOAD IMPEDANCE, ANGLE, 0,0=USE REGISTER VALUES"; TEM1, TEM2
8705 IF TEM1 <> 0 THEN SM = TEM1: SA = TEM2
8710 SM = TEM1: SA = TEM2: SN = ZO: SB = 0
8715 GOSUB 6500 'ADD
8720 HM = SM: HB = SA
8725 SM = TEM1: SA = TEM2: SN = ZO: SB = 0
8730 GOSUB 8300 'SUB
8735 SN = HM: SB = HA
8740 GOSUB 8800 'DIV
8745 IF SA < 0 THEN SA = SA + PI
8750 SM = FNP(ABS(SM))
8755 PRINT " REF. COEFF="; FNP(SM); "AT ANGLE OF "; FNP(57.3 * SA); "DEGREES"
8760 PRINT " SWR="; (SM) / (1 - SM)
8765 INPUT " PRESS RETURN TO CONTINUE"; T$
8770 RETURN
8799 REM XL
8800 INPUT "ENTER INDUCTANCE, MICROHENRIES"; SM
8805 SM = 2 * PI * F * SM: SA = PI / 2
8810 PRINT " INDUCTIVE REACTANCE;"; FNP(SM); "OHMS AT 90 DEGREES"
8815 INPUT "PRESS RETURN TO CONTINUE"; T$
8820 RETURN
8900 RETURN
8999 REM ZOC,ZSC>ZO
9000 INPUT "ENTER SHORT-CIRCUITED INPUT IMPEDANCE, ANGLE, DEG"; SM, SA
9005 INPUT "ENTER OPEN-CIRCUITED INPUT IMPEDANCE, ANGLE, DEG"; SN, SB
9010 SA = SA / 57.3: SB = SB / 57.3
9015 GOSUB 7700: GOSUB 8100
9020 PRINT "ZO-MAG", , "ZO-ANG": PRINT SM, , SA
9025 INPUT "ENTER S=SAVE AS GLOBAL VALUE, R=RETURN"; S$
9030 IF S$ = "S" THEN ZO = SM: ZP = SA
9035 RETURN
19299 REM ATTENUATION FROM OPEN (OR SHORT) CIRCUIT SWR
19300 INPUT "ENTER MEASURED SWR"; SW: IF SW = 1 THEN SW = 1.000001
19305 AT = 2.3 * LOG((SW + 1) / (SW - 1))
19310 PRINT " ATTENUATION="; FNP(AT); "DB"
19315 INPUT "PRESS RETURN TO CONTINUE"; T$
19320 RETURN
19400 RETURN
19499 REM REF COEFF TO SWR
19500 IF SM < 0 THEN SM = -SM
19505 SM = (1 + SM) / (1 - SM)
19510 RETURN
19599 REM DEG FROM FREQ, RF LENGTH
19600 INPUT "ENTER LINE LENGTH (FEET), VF, 0,0=CURRENT VALUES"; TEM1, TEM2
19605 IF TEM1 = 0 THEN TEM1 = LL: TEM2 = VF
19610 LLLAM = TEM1 * F / 984 / TEM2
19615 LLDEG = LLLAM * 2 * PI * 57.3
19620 SM = LLLAM
19625 PRINT "LENGTH, WAVELENGTHS="; FNP(LLLAM)
19630 PRINT " DEGREES="; FNP(LLDEG)
19635 INPUT "PRESS RETURN TO CONTINUE"; T$
19640 RETURN
19699 REM ELEMENTS
19700 PRINT "ENTER ELEMENT DIA., INCHES": INPUT DI
19705 IF DI <= 0 THEN 19700
19710 PRINT "ENTER ELEMENT LENGTH, INCHES": INPUT EL
19715 OM = 2 * LOG(2 * EL / DI)
19720 PRINT "ELEMENT FACTOR OMEGA="; FNP(OM)
19725 INPUT "PRESS RETURN TO CONTINUE"; T$
19730 RETURN
19799 REM WAVELENGTH TO FREQUENCY
19800 INPUT "ENTER WAVELENGTH, METERS, 0=USE PASSING REGISTER VALUE"; TEM
19805 IF TEM <> 0 THEN SM = 300 / TEM: GOTO 19820
19810 PRINT "WAVELENGTH="; SM; ";"; METERS; ",,"
19815 SM = 300 / SM
19820 PRINT "FREQUENCY="; SM; "MHZ"
19825 INPUT "PRESS RETURN TO CONTINUE"; T$
19830 RETURN
19899 REM GET FILE
19900 INPUT "ENTER FILEPATH FOR DIRECTORY, Q=QUIT, OR NULL TO SKIP"; T$
19905 IF T$ = "" THEN 19920
19910 IF T$ = "Q" THEN 19960
19915 CLS : FILES T$
19920 INPUT "INPUT FILEPATH, FILE NAME, FILEDATE", FP$, NA$, DA$
19925 OPEN FP$ + NA$ + DA$ FOR INPUT AS #1
19930 INPUT #1, NA$, DA$, RO, CO, LR, LC
19935 FOR N = 0 TO RO
19940 FOR M = 0 TO CO
19945 INPUT #2, A(N, M)
19950 NEXT M: NEXT N
19955 CLOSE 2
19960 RETURN
20000 RETURN
20099 REM INPUT
20100 PRINT " ROUTINE FOR DATA INPUT"
20110 INPUT "1ST MAGNITUDE, ANGLE,DEG"; SM, SA: SA = SA * PI / 180
20120 INPUT "2ND MAGNITUDE, ANGLE,DEG, OR NULLS"; SN, SB: SB = SB * PI / 180
20130 RETURN
20200 RETURN
20300 RETURN
20399 REM FREQUENCY TO WAVELENGTH
20400 INPUT "ENTER FREQUENCY, MHZ, 0=USE CURRENT VALUE"; TEM
20405 IF TEM = 0 THEN SM = 984 / F: GOTO 20415
20410 SM = 984 / TEM
20415 PRINT " FREQUENCY="; FNP(984 / SM)
20420 PRINT " WAVELENGTH="; FNP(SM); "FEET"
20425 PRINT " ="; FNP(SM / 984 * 300); "METERS"
20430 INPUT " PRESS RETURN TO CONTINUE"; T$
20435 RETURN
20500 RETURN
20600 RETURN
20699 REM INPUT Z, OPEN LINE
20700 INPUT "ENTER LINE LENGTH, FEET, 0=CURRENT LENGTH"; TEM
20705 IF TEM = 0 THEN TEM = LL
20710 LLRAD = TEM * F / 984 * 2 * PI / VF: PRINT "LINE LENGTH="; FNP(LLRAD); "RADIANS"
20715 SM = ZO / TAN(LLRAD)
20720 SA = -PI / 4: IF SM < 0 THEN SM = ABS(SM): SA = -SA
20725 PRINT "AT FREQUENCY="; F; "MHZ"
20730 PRINT "LINE INPUT IMPEDANCE IS"; FNP(SM); "OHMS AT"; FNP(57.3 * SA); "DEGREES"
20735 RETURN
20799 REM PRINT FILE
20800 PRINT
20805 PRINT , , "INPUT VALUE", , "OUTPUT VALUES"
20810 PRINT "# "; "FREQ", "RESIST.", "REACT.", "RESIST.", "REACT."
20815 FOR N = 1 TO RO
20820 PRINT N; FNP(A(0, N)), FNP(A(1, N)), FNP(A(2, N)), FNP(A(3, N)), FNP(A(4, N))
20825 NEXT N
20850 INPUT "PRESS RETURN TO CONTINUE"; T$
20855 RETURN
20899 REM QUIT
20900 INPUT "PRESS RETURN TO QUIT, ANY OTHER +RETURN =RESUME"; T$
20910 IF T$ <> "" THEN RETURN
20920 STOP
20999 REM RESULTS PRINT
21000 PRINT "1ST MAGNITUDE AND ANGLE (DEGREES) ARE"; , SM, SA * 180 / PI
21010 PRINT "2ND MAGNITUDE AND ANGLE (DEGREES) ARE"; , SN, SB * 180 / PI
21020 INPUT "PRESS RETURN TO CONTINUE"; T$
21030 RETURN
21099 REM INPUT Z, SHORTED LINE
21100 INPUT "ENTER LINE LENGTH, FEET, 0=CURRENT LENGTH"; TEM
21105 IF TEM = 0 THEN TEM = LL
21110 LLRAD = TEM * F / 984 * 2 * PI / VF: PRINT "LINE LENGTH="; FNP(LLRAD); "RADIANS"
21115 SM = ZO * TAN(LLRAD)
21120 SA = PI / 4: IF SM < 0 THEN SM = ABS(SM): SA = -SA
21125 PRINT "AT FREQUENCY="; F; "MHZ"
21130 PRINT "LINE INPUT IMPEDANCE IS"; FNP(SM); "OHMS AT"; FNP(57.3 * SA); "DEGREES"
21135 RETURN
21199 REM TEST WITH INPUT
21200 PRINT " TEST MODE SET, REPEATS UNTIL TERMINATED"
21205 INPUT "ENTER ROUTINE CODE TO TEST, UCASE Q=MAIN MENU"; S$: SR = ASC(S$)
21210 IF SR < 65 OR SR > 218 THEN 21200
21215 IF S$ = "Q" THEN RETURN
21220 INPUT "ENTER 1ST TEST MAGNITUDE, ANGLE (DEG), NULLS=OLD"; SM$, SA$
21225 IF SM$ <> "" THEN SM = VAL(SM$): SA = VAL(SA$) / 180 * PI
21230 INPUT "ENTER 2ND TEST MAGNITUDE, ANGLE (DEG), NULLS=OLD"; SN$, SB$
21235 IF SM$ <> "" THEN SN = VAL(SN$): SB = VAL(SB$) / 180 * PI
21240 PRINT "INPUT DATA (ANGLE IN RADIANS)": GOSUB 21000
21245 GOSUB 1000
21250 PRINT "OUTPUT RESULTS": GOSUB 21000
21255 GOTO 21200
21300 RETURN
21399 REM SEQUENCING OF VARIABLES IN A FILE
21400 INPUT "SEE NOTES AND ENTER COMMAND WORD"; W$
21405 FOR N = 1 TO CO
21410 F = A(N, 0): SM = A(N, 1): SA = A(N, 2)
21415 GOSUB 6705
21420 A(N, 3) = SM: A(N, 4) = SA
21425 NEXT N
21430 RETURN
21499 REM SWR,REF COEF
21500 INPUT "FORWARD AND REFLECTED POWER, WATTS"; FWD, REF
21505 RAT = REF / FWD
21510 IF RAT >= 1 THEN PRINT "IMPOSSIBLE CONDITION": GOTO 21540
21515 RAT = SQR(RAT)
21520 SWR = (1 + RAT) / (1 - RAT)
21525 RHO = (SWR - 1) / (SWR + 1)
21530 PRINT " SWR="; FNP(SWR)
21535 PRINT " REF. COEFF. RHO="; FNP(RHO)
21540 INPUT "PRESS RETURN TO CONTINUE"; T$
21545 RETURN
21599 REM XC
21600 INPUT "ENTER CAPACITY, PICOFARADS"; SM
21605 IF SM = 0 THEN 21600
21610 SM = 1000000! / (2 * PI * F * SM): SA = -PI / 2
21615 PRINT " CAPACATIVE REACTANCE;"; FNP(SM); "OHMS AT -90 DEGREES"
21620 INPUT "PRESS RETURN TO CONTINUE"; T$
21630 RETURN
21700 RETURN
21799 REM DO Z
21800 LO = ML * F ^ XP * LL / 100
21805 AL = LO / 8.686
21810 BE = LL * F * 2 * PI / (984 * VF)
21815 TP = EXP(4 * AL) + 1 + 2 * EXP(2 * AL) * COS(2 * BE)
21820 SM = (EXP(4 * AL) - 1) / TP
21825 SA = 2 * EXP(2 * AL) * SIN(2 * BE) / TP
21830 GOSUB 8000
21835 SM = FNCOSH(AL) * COS(BE)
21840 SA = FNSINH(AL) * SIN(BE)
21845 GOSUB 8000
21850 SN = SM
21855 SB = SA
21860 SM = FNSINH(AL) * COS(BE)
21865 SA = FNCOSH(AL) * SIN(BE)
21870 GOSUB 8000
21875 GOSUB 6800
21880 ZM = SM
21885 ZA = SA
21890 RETURN
64000 PRINT " ERROR"; ERR; "AT LINE"; ERL
64010 IF ERL = 6710 THEN ERASE A: RESUME
64020 IF ERL = 6800 THEN SM = .000001: RESUME
64030 IF ERL = 7005 THEN RESUME 7000
64040 IF ERL = 7300 THEN SM = .000001: RESUME
64050 IF ERL = 19800 THEN SM = .000001: RESUME
64060 IF ERL = 19925 THEN RESUME 19900
64070 IF ERL = 6800 THEN SM = .000001: RESUME
64080 IF ERL = 7900 AND ERR = 5 THEN PRINT "NO ARRAY IN MEMORY"
64090 INPUT "PRESS RETURN TO RETRY, OR Q + RETURN TO QUIT"; T$
64200 PRINT "NON-RECOVERABLE ERROR IN LINE"; ERL
64210 INPUT "PRESS RETURN TO RETRY, OR Q + RETURN TO QUIT"; T$
64220 IF T$ <> "Q" THEN RESUME 600
64300 STOP