home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1986-08-18 | 36.0 KB | 687 lines |
- 10 CLS: WIDTH 80: ON ERROR GOTO 1275
- 20 PRINT:PRINT"TSC ELECTRICAL CIRCUIT ANALYSIS PROGRAM V3.3.6M 7/2/86"
- 30 PRINT " *********************************************
- 40 PRINT " * *
- 50 PRINT " * BY DR. ALLEN KATZ, CHAIRMAN *
- 60 PRINT " * DEPT ELECTRONICS ENGINEERING TECHNOLOGY *
- 70 PRINT " * TRENTON STATE COLLEGE, CN550 *
- 80 PRINT " * TRENTON, NEW JERSEY 8625 *
- 90 PRINT " * *
- 100 PRINT " * THE AUTHOR RESERVES RIGHTS TO THIS *
- 110 PRINT " * PROGRAM; HOWEVER, COPYING AND USE FOR *
- 120 PRINT " * EDUCATIONAL PURPOSES IS ENCOURAGED. *
- 130 PRINT " * *
- 140 PRINT " * PLEASE REPORT ANY ERRORS OR PROBLEMS *
- 150 PRINT " * WITH THIS PROGRAM TO THE AUTHOR. *
- 160 PRINT " * TEL (609) 771 2487 *
- 170 PRINT " * *
- 180 PRINT " *********************************************
- 190 PRINT "ALL UNITS IN VOLTS, AMPS, OHMS, FARADS, HENRIES, HZ, ETC."
- 200 PRINT "NODE VOLTAGES AND IMPEDANCES REFERENCED TO NODE 0 (ground)."
- 210 PRINT "ALL CALC ASSUMED AT DC (0 FREQ) UNLESS FREQ SET WITH 'F' OPTION."
- 220 PRINT "MAXIMUM NUMBER OF SWEEP POINTS=100. IF ERROR 'GOTO 1290'.
- 230 PRINT: INPUT "WANT ADDITIONAL INFORMATION (Y/N)"; B$: IF B$<>"Y" GOTO 1170
- 240 CLS: PRINT "TCAP IS A PROGRAM FOR THE ANALYSIS OF ELECTRICAL CIRCUITS CONSISTING"
- 250 PRINT "OF RESISTORS, CAPACITORS, INDUCTORS AND SEVERAL COMMON ACTIVE DEVICES.
- 260 PRINT "FIRST DRAW THE CIRCUIT TO BE ANALAYZED ON A SHEET OF PAPER. ASSIGN A
- 270 PRINT "NUMBER TO EACH ELEMENT OF THE CIRCUIT. THIS IS THE COMPONENT NUMBER.
- 280 PRINT "NEXT ASSIGN A NUMBER TO EACH NETWORK NODE. A NODE IS PRESENT AT THE
- 290 PRINT "CONNECTION BETWEEN ELEMENTS. NO TWO ELEMENTS MAY BE CONNECTED WITHOUT
- 300 PRINT "A NODE BETWEEN THEM. EVERY ELEMENT MUST BEGIN AND END AT A NODE. ANY
- 310 PRINT "NUMBER OF ELEMENTS MAY BE CONNECTED TO A COMMON NODE.": PRINT:
- 320 PRINT "ONCE ALL THE ELEMENTS AND NODES ARE NUMBERED, YOU ARE READY TO ENTER
- 330 PRINT "YOUR NETWORK INTO TCAP.": PRINT
- 340 PRINT "TCAP WILL FIRST ASK WHETHER YOU WISH TO READ A FILE. TCAP ALLOWS YOU
- 350 PRINT "TO SAVE ON DISK CIRCUIT FILES ('S') YOU HAVE PREVIOUSLY WORKED ON. IF
- 360 PRINT "YOU DO NOT HAVE A PREVIOUS FILE YOU WISH TO WORK ON, TYPE 'N' OR
- 370 PRINT "HIT CARRIAGE RETURN AND TCAP WILL PUT YOU IN THE NEW FILE MODE. IN
- 380 PRINT "THE NEW FILE MODE, TCAP WILL FIRST ASK FOR THE HIGHEST NODE NUMBER."
- 390 PRINT "NEXT TCAP WILL ASK FOR THE NUMBER OF VOLTAGE SOURCES. IT WILL THEN
- 400 PRINT "ASK FOR THE NUMBER OF COMPONENTS. THIS NUMBER INCLUDES THE VOLTAGE
- 410 PRINT "SOURCES. YOU ARE THEN READY TO ENTER THE CIRCUIT ELEMENTS. THEY MAY
- 420 PRINT "BE ENTERED IN ANY ORDER. ENTER NODE AND ELEMENT VALUES SEPARATED BY
- 430 PRINT "COMMAS AS DIRECTED BY TCAP. FOR EXAMPLE A RESISTOR (COMPONENT TYPE #1)
- 440 PRINT "BETWEEN NODES 2 AND 3 OF 120 OHMS WOULD BE ENTERED AS '2,3,120'.
- 450 INPUT "PRESS <CR> TO CONTINUE"; Q$: PRINT
- 452 PRINT "SAMPLE FILES: SAMPLE-1 AND SAMPLE-2 ARE NORMALLY INCLUDED WITH TCAP
- 454 PRINT "TO ILLUSTRATE HOW FILES ARE CREATED. LOAD AND LIST THESE FILES WITH
- 456 PRINT "WITH THE 'L' FUNCTION BEFORE ATTEMPTING TO ENTER A CIRCUIT OF YOUR OWN.": PRINT
- 460 PRINT "TCAP INITIALLY ASSUMES CALCULATIONS ARE TO BE AT DC (0 Hz). FOR CALCULATIONS
- 470 PRINT "AT OTHER FREQUENCIES, THE FREQUENCY MUST BE SET WITH THE 'F' COMMAND.
- 480 PRINT "TCAP CAN PERFORM NODE VOLTAGE CALCULATIONS AT A SINGLE FREQUENCY OR OVER
- 490 PRINT "A RANGE OF FREQUENCIES (SWEEP). WHEN PERFORMING A NON-SWEEP CALCULATION,
- 500 PRINT "IT WILL ALWAYS RETURN TO THE LAST SINGLE FREQUENCY SPECIFIED. TCAP CAN
- 510 PRINT "ALSO CALCULATE OVER A 'SWEEP' OF COMPONENT VALUES WITH THE 'C' FUNCTION.
- 520 PRINT "AFTER A COMPONENT SWEEP CALCULATION, TCAP WILL RETURN TO THE ORIGINAL
- 530 PRINT "COMPONENT VALUE. TCAP ALWAYS TABULATES THE RESULTS OF A SWEEP CALCULATION,
- 540 PRINT "BUT IT CAN ALSO DISPLAY THESE RESULTS IN GRAPHICAL FORM.
- 550 PRINT: INPUT "DO YOU WANT ADDITIONAL INFORMATION ON FUNCTIONS (Y/N)"; Q$
- 560 IF Q$<>"Y" THEN 770 ELSE PRINT
- 570 PRINT "TCAP CALCULATES NODE VOLTAGES WITH THE 'V' FUNCTION. THE 'I' FUNCTION
- 580 PRINT "CALCULATES THE CURRENT SUPPLIED BY ALL NETWORK VOLTAGE AND CURRENT SOURCES,
- 590 PRINT "BUT DOES NOT CALCULATE THE CURRENT THROUGH INDIVIDUAL NETWORK ELEMENTS.
- 600 PRINT "TO DETERMINE THE VOLTAGE ACROSS AND THE CURRENT THROUGH AN ELEMENT
- 610 PRINT "(OR NETWORK BRANCH), THE 'B' COMMAND IS USED. THIS FUNCTION WILL PROVIDE
- 620 PRINT "THE VOLTAGES ACROSS ALL 2-TERMINAL NETWORK ELEMENTS AND THE CURRENTS
- 630 PRINT "THROUGH THESE ELEMENTS (EXCEPT FOR SOURCES - PROVIDED BY THE 'I' COMMAND).
- 640 PRINT "VOLTAGE IS DEFINED AS POSITIVE AT THE FIRST NODE RELATIVE TO THE SECOND
- 650 PRINT "NODE. THE 'Z' FUNCTION PROVIDES THE IMPEDANCE BETWEEN A SPECIFIED NODE AND
- 660 PRINT "GROUND (NODE 0) WITH ALL VOLTAGE SOURCES SHORTED AND ALL CURRENT SOURCES
- 670 PRINT "OPEN CIRCUITED. TO CALCULATE THE INPUT (OR OUTPUT) IMPEDANCE OF A
- 680 PRINT "NETWORK, DRIVE THE NETWORK WITH A 1 AMP CURRENT SOURCE. THE VOLTAGE
- 690 PRINT "AT THE NODE OF THE CURRENT SOURCE EQUALS THE DESIRED IMPEDANCE. THIS
- 700 PRINT "IMPEDANCE MAY BE PLOTTED USING THE 'F' COMMAND AND SWEEP FUNCTION.": PRINT
- 710 PRINT "UPTO TEN COMPONENTS (EXCLUDING VOLTAGE SOURCES) MAY BE ADDED TO
- 720 PRINT "A NETWORK WITH THE 'A' FUNCTION JUST AS LONG AS NO ADDITIONAL NODES
- 730 PRINT "ARE ADDED. 'R' AND 'D' ALLOW THE SUBSTITUTION AND DELETION OF COMPONENTS.": PRINT
- 740 PRINT "THE 'M' FUNCTION CAUSES TCAP TO DISPLAY THE MAGNITUDES OF VOLTAGES IN
- 750 PRINT "dB. A REFERENCE VOLTAGE MUST BE SUPPLIED FOR THE 20 LOG(V/VREF) CALC.
- 760 PRINT "THE M FUNCTION IS TURNED OFF BY ENTERING A VREF=0.
- 770 PRINT: INPUT "DO YOU WANT INFORMATION ON ACTIVE DEVICES (Y/N)"; Q$
- 780 IF Q$<>"Y" THEN 1170
- 790 CLS: PRINT "TCAP HAS 5 ACTIVE DEVICE MODELS: PNP, NPN AND FET TRANSISTORS, A
- 800 PRINT "CONTROLLED VOLTAGE SOURCE (WHICH CAN BE MADE TO ACT LIKE A TUBE) AND
- 810 PRINT "AN OPERATIONAL AMPLIFIER. FOR AC PROBLEMS THE PNP AND NPN MODELS ARE
- 820 PRINT "INDENTICAL AND CONSIST OF A .001 OHM RESISTANCE (SHORT) CONNECTED
- 830 PRINT "BETWEEN THE BASE AND EMITTER TERMINALS AND A CONTROLLED CURRENT
- 840 PRINT "SOURCE BETWEEN THE COLLECTOR AND EMITTER TERMINALS. THE CURRENT
- 850 PRINT "PRODUCED BY THIS CURRENT SOURCE IS THE PRODUCT OF THE CURRENT
- 860 PRINT "FLOWING INTO THE BASE TERMINAL TIMES BETA. MORE COMPLEX TRANSISTOR
- 870 PRINT "MODELS MAY BE CREATED BY ADDING EXTRA ELEMENTS IN SERIES AND PARALLEL
- 880 PRINT "WITH THE DEVICE TERMINALS. FOR EXAMPLE A RESISTOR CAN BE PUT IN SERIES
- 890 PRINT "WITH THE BASE TERMINAL TO SIMULATE THE EFFECT OF Rie, OR IN PARALLEL
- 900 PRINT "WITH THE COLLECTOR/EMITTER TERMINALS TO SIMULATE THE EFFECT OF Hoe.
- 910 PRINT "ACTIVE DEVICES CAN ALSO BE COMBINED TO MAKE EVEN MORE COMPLEX MODELS.
- 920 PRINT: PRINT "IN THE DC CASE (F=0), A .7 VOLT SOURCE IS ADDED IN SERIES WITH THE
- 930 PRINT "BASE TERMINALS OF THE BIPOLAR TRANSISTOR MODELS, WITH THE APPROPRIATE
- 940 PRINT "POLARITY FOR EITHER PNP OR NPN DEVICES, AND TCAP CHECKS FOR CORRECT
- 950 PRINT "BIAS POLARITY. IN THE AC CASE (F>0), THE .7 VOLT BATTERY IS ELIMINATED
- 960 PRINT "AND ALL CIRCUIT VOLTAGE SOURCES ARE SET TO THE FREQUENCY SPECIFIED BY
- 970 PRINT "'F', I.E., SEPARATE CIRCUITS ARE NEEDED FOR BIAS (DC) AND AC CONDITIONS.
- 980 PRINT: INPUT "PRESS <CR> TO CONTINUE"; Q$: PRINT
- 990 PRINT "THE OPERATIONAL AMPLIFIER IS A CONTROLLED VOLTAGE SOURCE WHOSE
- 1000 PRINT "OUTPUT VOLTAGE IS THE PRODUCT OF THE VOLTAGE BETWEEN ITS (+) AND
- 1010 PRINT "(-) TERMINALS TIMES GAIN. AN OPEN CIRCUIT (2 MEGOHMS) IS PRESENT BE-
- 1020 PRINT "TWEEN THE (+) AND (-) TERMINALS WHICH ARE FLOATING RELATIVE TO THE
- 1030 PRINT "OUTPUT. THE OUTPUT VOLTAGE SOURCE HAS EFFECTIVELY A ZERO IMPEDANCE AND
- 1040 PRINT "IS CONNECTED TO GROUND (NODE 0). THE FET MODEL IS A CONTROLLED CURRENT
- 1050 PRINT "SOURCE, WHOSE OUTPUT DEPENDS ON THE VOLTAGE AT THE GATE TERMINAL TIMES MU.
- 1060 PRINT "IT HAS BOTH INFINITE INPUT AND OUTPUT IMPEDANCES. BOTH INPUT AND OUTPUT
- 1070 PRINT "TERMINALS ARE REFERENCED TO THE SOURCE NODE. DC WISE, THE FET MODEL
- 1080 PRINT "CAN BE CONSIDERED AN ENHANCEMENT TYPE FET, BUT NO CHECK IS MADE FOR
- 1090 PRINT "CORRECT (LINEAR) BIAS CONDITIONS. THE CVS (CONTROLLED VOLTAGE SOURCE)
- 1100 PRINT "IS SIMILAR TO THE OP-AMP, BUT HAS BOTH INPUT AND OUTPUT VOLTAGE
- 1110 PRINT "REFERENCED TO ITS COMMON CATHODE NODE. IT HAS INFINITE INPUT
- 1120 PRINT "AND ZERO OUTPUT IMPEDANCES. TO MAKE THE CVS MODEL A VACUUM TUBE, A
- 1130 PRINT "LARGE RESISTOR SHOULD BE ADDED IN SERIES WITH THE PLATE NODE.
- 1150 PRINT: INPUT "WANT HARD COPY OF ABOVE INFORMATION (Y/N)"; Q$: IF Q$="Y" THEN GOSUB 5030
- 1170 CLEAR: PI=3.14159: P2=PI*2: P6=PI/180
- 1180 PRINT: INPUT "DO YOU WANT TO ENTER A FILE (Y/N)"; A$
- 1190 IF A$="Y" THEN 1630
- 1200 PRINT: INPUT "WHAT IS THE HIGHEST NODE NUMBER"; LS
- 1210 IF LS<1 OR LS<>INT(LS) THEN 1200
- 1220 INPUT "HOW MANY VOLTAGE SOURCES ARE IN THE CIRCUIT"; LV
- 1230 IF LV<0 OR LV<>INT(LV) THEN 1220 ELSE NO=LS+LV
- 1250 INPUT "HOW MANY COMPONENTS ARE IN THE CIRCUIT"; CT
- 1260 IF CT<1 OR CT<>INT(CT) THEN 1250
- 1265 DIM Y(NO,NO+1),X(NO,NO+1),T(CT+LV+5),N1(CT+LV+5),N2(CT+LV+5),V(CT+LV+5),G(CT+LV+5),FP(100),FR(100),FY(100),FF(100)
- 1270 FOR CR=1 TO CT: GOSUB 2190: NEXT: GOTO 1470
- 1275 PRINT: PRINT "A TCAP PROGRAM ERROR HAS OCCURED": ON ERROR GOTO 1275
- 1280 REM******************** MENU ********************
- 1290 W=WB: PRINT: PRINT "FREQUENCY=" W/P2
- 1300 PRINT:INPUT"YOUR SELECTION (A/B/C/D/END/F/H<ELP>/I/L/M/N/R/S/V/Z)";C$
- 1310 IF C$="END" THEN PRINT: PRINT "END TSC CAP": END
- 1320 C$=LEFT$(C$,2)
- 1330 IF C$="A" THEN GOSUB 2180
- 1340 IF C$="B" THEN GOSUB 4360
- 1350 IF C$="N" THEN 1170
- 1360 IF C$="S" THEN GOSUB 1710
- 1370 IF C$="F" THEN GOSUB 1770
- 1380 IF C$="I" THEN GOSUB 4260
- 1390 IF C$="L" THEN GOSUB 4070
- 1400 IF C$="V" THEN GOSUB 2550
- 1410 IF C$="D" THEN GOSUB 3170
- 1420 IF C$="Z" THEN GOSUB 3280
- 1430 IF C$="R" THEN GOSUB 2160
- 1440 IF C$="C" THEN GOSUB 3350
- 1450 IF C$="M" THEN GOSUB 3210
- 1460 IF LEFT$(C$,1)<>"H" THEN 1290
- 1470 PRINT: PRINT "OPTIONS:"
- 1480 PRINT TAB(10), "A - ADD CIRCUIT COMPONTENT"
- 1490 PRINT TAB(10), "B - CALCULATE BRANCH VOLTAGES AND CURRENTS"
- 1500 PRINT TAB(10), "C - CHANGE AND SWEEP COMPONENT VALUE"
- 1510 PRINT TAB(10), "D - DELETE CIRCUIT COMPONENT"
- 1520 PRINT TAB(10), "F - SET OR SWEEP FREQUENCY"
- 1530 PRINT TAB(10), "I - CALCULATE SOURCE CURRENTS"
- 1540 PRINT TAB(10), "L - LIST PRESENT COMPONENTS"
- 1550 PRINT TAB(10), "M - VOLTAGE MAGNITUDE IN dB"
- 1560 PRINT TAB(10), "N - NEW CIRCUIT"
- 1570 PRINT TAB(10), "R - REPLACE CIRCUIT COMPONENT"
- 1580 PRINT TAB(10), "S - SAVE CIRCUIT FILE"
- 1590 PRINT TAB(10), "V - CALCULATE NODE VOLTAGES"
- 1600 PRINT TAB(10), "Z - CALCULATE NODE IMPEDANCE"
- 1610 PRINT TAB(10), "END - END SESSION": GOTO 1290
- 1620 REM ************ FILE LOAD ******************
- 1630 CLEAR:PI=3.14159:P2=PI*2:P6=PI/180:PRINT:INPUT "FILE NAME, FILES OR QUIT"; F$
- 1640 IF F$="FILES" THEN FILES "*.CAP": PRINT: GOTO 1630 ELSE IF F$="QUIT" THEN 1290
- 1650 F$=F$+".CAP": OPEN "I",#1,F$
- 1660 INPUT#1, CT, LS, LV: NO=LS+LV
- 1665 DIM Y(NO,NO+1),X(NO,NO+1),T(CT+LV+5),N1(CT+LV+5),N2(CT+LV+5),V(CT+LV+5),G(CT+LV+5),FP(20),FR(20),FY(20),FF(20)
- 1680 FOR P=1 TO CT: INPUT#1,T(P),N1(P),N2(P),V(P),G(P): NEXT
- 1690 CLOSE#1: GOTO 1280
- 1700 REM ************ FILE SAVE ******************
- 1710 PRINT: INPUT "FILE NAME"; F$: F$=F$+".CAP"
- 1720 OPEN "O",#1,F$
- 1730 PRINT#1, CT, LS, LV
- 1740 FOR P=1 TO CT: PRINT#1,T(P),N1(P),N2(P),V(P),G(P): NEXT
- 1750 CLOSE#1: RETURN
- 1760 REM ************* FREQ SWEEP MODULE *****************
- 1770 PRINT: PRINT "MODES:"
- 1780 PRINT TAB(10), "1 - SINGLE FREQUENCY"
- 1790 PRINT TAB(10), "2 - LINEAR FREQUENCY SWEEP"
- 1800 PRINT TAB(10), "3 - LOG FREQUENCY SWEEP"
- 1810 PRINT: INPUT "FREQUENCY MODE"; LX
- 1820 IF LX<1 OR LX>3 THEN 1770
- 1830 IF LX>1 THEN 1860
- 1840 PRINT: INPUT "DESIRED FREQUENCY"; W
- 1850 PRINT" FREQUENCY SET TO "W" FOR ALL <B>, <I>, <V>, <Z> AND <C> CALCULATIONS": W=P2*W: WB=W: RETURN
- 1860 PRINT: W$="FREQUENCY": E$="FREQ"
- 1870 PRINT:INPUT "MIN FREQ, MAX FREQ AND # OF POINTS";F1,F2,IN
- 1880 IF F1>=0 AND F2>=0 AND F2>=F1 THEN 1900
- 1890 PRINT"IMPROPER ENTRY": GOTO 1870
- 1900 PRINT "WHICH NODE? ( 1 -"LS") ";:INPUT ND
- 1910 IF ND>LS OR ND<1 THEN PRINT"NODES ARE FROM 1 TO"LS"ONLY.":GOTO1900
- 1920 IF LX=2 THEN F3=F1: F4=F2: GOTO 1940
- 1930 F4=LOG(F2)/LOG(10):IF F1=0 THEN F3=0 ELSE F3=LOG(F1)/LOG(10)
- 1940 PRINT: PRINT "WORKING";: I=0: M=IN+1: II=(F4-F3)/IN: EP=0.01*II
- 1950 FOR P=0 TO IN+1: FP(P)=0: FR(P)=0: FY(P)=0: FF(P)=0: NEXT P
- 1960 FOR FX=F3 TO F4+EP STEP II: I=I+1: PRINT I;
- 1970 IF LX=3 THEN IF FX<>0 THEN W=P2*10^FX ELSE W=0
- 1980 IF LX=2 THEN W=P2*FX
- 1990 IF LX=3 AND FX<>0 THEN FF(I)=10^FX ELSE FF(I)=FX
- 2000 GOSUB 3560: GOSUB 2740
- 2010 FY(I)=Y(ND,0): FR(I)=X(ND,0): NEXT FX: W=0: PRINT CHR$(26)
- 2020 PRINT: PRINT"VOLTAGE - "W$" TABULATION" TAB(50)F$: PRINT
- 2030 PRINT TAB(3) E$ TAB(14) "REAL" TAB(24) "IMAGINARY" TAB(36) "MAGNITUDE" R$ TAB(48) "PHASE ANGLE":CN=0
- 2040 FOR I=1 TO M: MG=SQR(FY(I)^2+FR(I)^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10)
- 2050 IF CN<>0 AND CN/20=INT(CN/20) THEN INPUT"PRESS <CR> TO CONTINUE"; A$
- 2060 CN=CN+1:IF FY(I)=0 THEN K=SGN(FR(I))*90 ELSE IF FY(I)>0 THEN K=1/P6*ATN(FR(I)/FY(I)) ELSE K=1/P6*ATN(FR(I)/FY(I))+180
- 2065 PRINT USING "###.#^^^^ "; FF(I);
- 2070 PRINT USING "##.##^^^^ ";FY(I);FR(I);MG;: PRINT USING " ####.#";K
- 2080 NEXT I: PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN GOSUB 6620
- 2090 PRINT: INPUT "WANT TO PLOT VOLTAGE (Y/N)";Q$ :IF Q$<>"Y" THEN 2110
- 2100 V$="V": IF RF>0 THEN NA$="VOLTAGE RATIO IN dB": GOTO 2130 ELSE NA$="VOLTAGE": GOTO 2130
- 2110 PRINT:INPUT"WANT TO PLOT PHASE ANGLE (Y/N)";Q$:IF Q$="Y" THEN NA$="ANGLE ":V$="P":GOTO 2130
- 2120 RETURN
- 2130 PRINT: INPUT "LINE WIDTH (TYP 80)"; LL: IF LL=0 THEN LL=80
- 2140 XX=LL: GOTO 4680
- 2150 REM *********** COMPONENT INPUT/ADD/REPLACE **************
- 2160 PRINT: INPUT "COMPONENT NUMBER";L
- 2170 IF L<=CT AND L>0 THEN ZN=L: GOTO 2210 ELSE PRINT"INVALID COMPONENT NUMBER. ENTRY IGNORED.":RETURN
- 2180 ZN=CT: CT=CT+1
- 2190 ZN=ZN+1: IF CR>1 THEN 2210
- 2200 PRINT: PRINT "COMPONENT SELECTION SECTION"
- 2210 PRINT: PRINT "1 = RESISTOR"
- 2220 PRINT "2 = INDUCTOR"
- 2230 PRINT "3 = CAPACITOR"
- 2240 PRINT "4 = CURRENT SOURCE"
- 2250 PRINT "5 = VOLTAGE SOURCE"
- 2260 PRINT "6 = NPN TRANSISTOR"
- 2270 PRINT "7 = PNP TRANSISTOR"
- 2280 PRINT "8 = FIELD EFFECT TRANSISTOR"
- 2290 PRINT "9 = CONT. VOLT. SOURCE (TUBE)
- 2300 PRINT "10 = OPERATIONAL AMPLIFIER": PRINT
- 2310 INPUT "TYPE OF CIRCUIT ELEMENT"; TY
- 2320 IF TY<1 OR TY>10 THEN 2210 ELSE 2380
- 2330 INPUT N1(ZN), N2(ZN), V(ZN)
- 2340 IF V(ZN)<0 THEN INPUT "ELEMENT VALUE MUST BE GREATER THAN 0, PROPER VALUE"; V(ZN)
- 2350 IF N1(ZN)<=LS AND N2(ZN)<=LS AND N1(ZN)>=0 AND N2(ZN)>=0 THEN RETURN
- 2360 PRINT "IMPROPER NODE VALUE. ENTRY IGNORED"
- 2370 T(ZN)=0:ZN=ZN-1:RETURN
- 2380 PRINT: PRINT "COMPONENT #"; ZN: PRINT
- 2390 T(ZN)=TY: ON TY GOTO 2400,2410,2420,2430,2460,2470,2470,2490,2500,2480
- 2400 PRINT"NODE A","NODE B","RESISTANCE";:GOTO 2330
- 2410 PRINT"NODE A","NODE B","INDUCTANCE";:GOTO 2330
- 2420 PRINT"NODE A","NODE B","CAPACITANCE";:GOTO 2330
- 2430 PRINT"- NODE","+NODE","CURRENT MAG.","PHASE ANGLE";
- 2440 INPUT N1(ZN), N2(ZN), V(ZN), G(ZN)
- 2450 IF N1(ZN)<=LS AND N2(ZN)<=LS AND N1(ZN)>=0 AND N2(ZN)>=0 THEN RETURN ELSE 2360
- 2460 PRINT"- NODE","+ NODE","VOLTAGE MAG.","PHASE ANGLE";:GOTO 2440
- 2470 PRINT"BASE NODE","EMITTER NODE","COLLECTOR NODE","BETA";:GOTO 2440
- 2480 PRINT"OUTPUT","- INPUT","+ INPUT","GAIN FACTOR";:GOTO 2440
- 2490 PRINT"GATE NODE","SOURCE NODE","DRAIN NODE","GM";:GOTO 2440
- 2500 PRINT"GRID NODE","CATHODE NODE","PLATE NODE","VOLTAGE GAIN";:GOTO 2440
- 2510 REM *************** NODE VOLTAGE CALC ****************
- 2520 PRINT: PRINT" NODE? (0 -"LS") ";: INPUT ND
- 2530 IF ND>LS THEN PRINT"THE HIGHEST NODE NUMBER IS "LS: GOTO 2520
- 2540 IF ND>=0 THEN 2560
- 2550 PRINT:PRINT"ENTER NUMBER FROM 0-";LS;"AN ENTRY OF 0 WILL PROVIDE SOLUTION AT ALL NODES"
- 2551 GOTO 2520
- 2560 PRINT: PRINT "WORKING": GOSUB 3560: GOSUB 2740
- 2570 PRINT: IF C$="I" THEN PRINT F$,"CURRENT" ELSE IF C$="Z" THEN PRINT F$, "IMPEDANCE" ELSE PRINT F$, "VOLTAGE"
- 2580 PRINT"FREQUENCY="W/P2: PRINT
- 2585 IF C$="Z" THEN RK=RF: RF=0: GOSUB 3260
- 2590 PRINT"NODE"TAB(11)"REAL"TAB(21)"IMAGINARY"TAB(33)"MAGNITUDE"R$TAB(44)"PHASE ANGLE"
- 2600 IF C$="I" THEN RETURN
- 2610 IF ND=0 THEN 2630
- 2620 L=ND: GOTO 2640
- 2630 FOR L=1 TO LS
- 2640 MG=SQR(Y(L,0)^2+X(L,0)^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10)
- 2650 IF Y(L,0)=0 THEN PA=90*SGN(X(L,0)) ELSE IF Y(L,0)>0 THEN PA=1/P6*ATN(X(L,0)/Y(L,0)) ELSE PA=1/P6*ATN(X(L,0)/Y(L,0))+180
- 2660 IF C$="I" THEN PRINT N1(LQ)"-"N2(LQ);:GOTO 2680
- 2670 PRINT L TAB(9);
- 2680 PRINT USING "##.##^^^^ "; Y(L,0); X(L,0); MG;: PRINT USING " ####.#"; PA
- 2690 IF L/20=INT(L/20)THEN PRINT: INPUT"PRESS <CR> TO CONTINUE";FR:PRINT
- 2695 IF ND<>0 THEN 2710
- 2700 NEXT L
- 2710 IF C$="I" THEN RETURN
- 2720 PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN GOSUB 6030
- 2725 IF C$="Z" THEN RF=RK: GOSUB 3260
- 2730 RETURN
- 2740 FOR L=1 TO NO: IF Y(L,L)^2+X(L,L)^2<>0 THEN 2770
- 2741 FOR LT=1 TO NO: IF Y(L,LT)^2+X(L,LT)^2<>0 OR Y(LT,L)^2+X(LT,L)^2<>0 THEN 2770
- 2742 NEXT LT: IF Y(L,NO+1)^2+X(L,NO+1)^2<>0 THEN 2770 ELSE Y(L,L)=1
- 2770 NEXT L: FOR L=1 TO NO
- 2780 DE=Y(L,L)^2+X(L,L)^2: IF DE>0 OR (L=NO AND DE<>0) THEN 2860
- 2790 IF L=NO THEN 2830
- 2800 FOR LT=L+1 TO NO: IF (Y(L,L)+Y(LT,L))^2+(X(L,L)+X(LT,L))^2<0 THEN 2820
- 2810 FOR LR=1 TO NO+1: Y(L,LR)=Y(L,LR)+Y(LT,LR): X(L,LR)=X(L,LR)+X(LT,LR): NEXT LR: GOTO 2780
- 2820 NEXT LT
- 2830 PRINT "ONE OF THE FOLLOWING PROBLEMS EXIST:"
- 2840 PRINT "(1) IMPROPER CONNECTION AT ";:IF L>LS THEN PRINT"VOLTAGE SOURCE" ELSE PRINT"NODE"L
- 2850 PRINT"(2) CIRCUIT WILL NOT OPERATE AT A FREQUENCY OF"W/P2" RECHECK CIRCUIT CONNECTIONS USING THE 'L' COMMAND.":PRINT:RETURN
- 2860 DR=Y(L,L)/DE:DI=-X(L,L)/DE
- 2870 FOR J=1 TO NO
- 2880 IF J=L THEN 2960
- 2890 IF ND=0 THEN 2910
- 2900 IF J>=L THEN 2910 ELSE IF J<>ND THEN 2960
- 2910 IF Y(J,L)=0 AND X(J,L)=0 THEN 2960
- 2920 FR=Y(J,L)*DR-X(J,L)*DI:FI=X(J,L)*DR+Y(J,L)*DI
- 2930 FOR P=L+1 TO NO+1
- 2940 TR=Y(L,P)*FR-X(L,P)*FI:TI=X(L,P)*FR+Y(L,P)*FI
- 2950 Y(J,P)=Y(J,P)-TR:X(J,P)=X(J,P)-TI: NEXT P
- 2960 NEXT J: NEXT L
- 2970 FOR L=1 TO NO:DF=Y(L,L)^2+X(L,L)^2:Y(L,0)=(Y(L,NO+1)*Y(L,L)+X(L,NO+1)*X(L,L))/DF
- 2980 X(L,0)=(X(L,NO+1)*Y(L,L)-Y(L,NO+1)*X(L,L))/DF:NEXT L
- 2990 IF W<>0 THEN RETURN
- 3000 FOR RL=1 TO CT:IF T(RL)>5 AND T(RL)<11 THEN 3020
- 3010 NEXT RL: RETURN
- 3020 Y(0,0)=0:X(0,0)=0
- 3030 DP=SGN(Y(N1(RL),0))*SQR(Y(N1(RL),0)^2+X(N1(RL),0)^2)
- 3040 DM=SGN(Y(N2(RL),0))*SQR(Y(N2(RL),0)^2+X(N2(RL),0)^2)
- 3050 SP=SGN(Y(V(RL),0))*SQR(Y(V(RL),0)^2+X(V(RL),0)^2)
- 3060 DP=INT(1000*DP)/1000:DM=INT(1000*DM)/1000:SP=INT(1000*SP)/1000
- 3070 ON T(RL)-5 GOTO 3090,3130
- 3080 GOTO 3010
- 3090 IF DP>=DM+0.7 THEN 3110
- 3100 PRINT"BASE-EMITTER JUNCTION OF TRANSISTOR AT B="N1(RL)"E="N2(RL)"C="V(RL):GOTO 3150
- 3110 IF SP>=DP THEN 3010
- 3120 PRINT"BASE-COLLECTOR JUNCTION OF TRANSISTOR AT B="N1(RL)"E="N2(RL)"C="V(RL):GOTO 3150
- 3130 IF DM-0.7<DP THEN 3100
- 3140 IF SP>DP THEN 3120 ELSE 3010
- 3150 PRINT"IS REVERSE BIASED. LINEAR CIRCUIT ANALYSIS IS NOT POSSIBLE.":RETURN
- 3160 REM *************** REMOVE ELEMENT *******************
- 3170 PRINT: INPUT "COMPONENT NUMBER";L
- 3180 IF L<=CT AND L>0 THEN 3190 ELSE PRINT"INVALID COMPONENT NUMBER. ENTRY IGNORED.":RETURN
- 3190 IF L=CT THEN 3200 ELSE FOR P=L TO CT-1:T(P)=T(P+1):N1(P)=N1(P+1):N2(P)=N2(P+1):V(P)=V(P+1):G(P)=G(P+1):NEXT:CT=CT-1:RETURN
- 3200 T(CT)=0:CT=CT-1:RETURN
- 3210 REM ************** MAG IN dB SET **********************
- 3220 PRINT: PRINT "ALL VOLTAGE MAGNITUDES WILL BE IN dB RELATIVE TO REFERENCE."
- 3230 PRINT "TO RESET TO NORMAL MODE ENTER ZERO OR CARRIAGE RETURN."
- 3240 INPUT "REFERENCE VOLTAGE FOR dB CALC"; RF
- 3250 IF RF<0 THEN PRINT: PRINT "dB REF MUST BE > 0!": GOTO 3240
- 3260 R$=" dB": IF RF=0 THEN R$="": RETURN ELSE RETURN
- 3270 REM ************** Z CALC *****************************
- 3280 PRINT: PRINT"IMPEDANCE AT WHICH NODE? ( 1 -"LS") ";:INPUT ND: IF ND<1 OR ND>LS THEN 3280
- 3290 PRINT: PRINT "WORKING": PRINT:FOR L=1 TO NO:FOR CR=1 TO NO+1:Y(L,CR)=0:X(L,CR)=0:NEXT CR:NEXT L
- 3300 CR=CT:FOR CT=1 TO CR
- 3310 IF T(CT)=5 THEN Y=1E+10:GOSUB 3650
- 3320 IF T(CT)<>5 THEN GOSUB 3590
- 3330 NEXT CT:CT=CR:FOR L=1 TO NO:IF L=ND THEN Y(L,NO+1)=1 ELSE Y(L,NO+1)=0
- 3340 X(L,NO+1)=0:NEXT L:GOSUB 2740: GOTO 2570
- 3350 REM ************* CHANGE COMPONENT VALUES ***************
- 3360 PRINT: PRINT "VARIABLE COMPONENT MODE"
- 3370 W$="COMPONENT VALUE": E$="VALUE"
- 3380 PRINT "FREQUENCY SHOULD BE PRE-SET WITH <F> MODE <1>"
- 3390 PRINT: INPUT "COMPONENT # TO BE VARIED"; ZN
- 3400 IF ZN>CT OR ZN<1 THEN PRINT "POINT OUT OF RANGE": RETURN
- 3410 INPUT "MIN VALUE, MAX VALUE AND # OF POINTS"; C1,C2,IN
- 3420 IF C1>=0 AND C2>=0 AND C2>C1 THEN 3440
- 3430 PRINT "IMPROPER ENTRY": GOTO 3410
- 3440 PRINT "WHICH NODE? ( 1 -"LS") ";:INPUT ND
- 3450 IF ND>LS OR ND<1 THEN PRINT"NODES ARE FROM 1 TO"LS"ONLY.":GOTO3440
- 3460 PRINT: PRINT "WORKING";: I=0: M=IN+1: EP=0.01*(C2-C1)/IN
- 3470 FOR P=0 TO IN+1: FP(P)=0: FR(P)=0: FY(P)=0: FF(P)=0: NEXT P
- 3480 IF T(ZN)<6 THEN TV=V(ZN) ELSE TV=G(ZN)
- 3490 FOR CX=C1 TO C2+EP STEP (C2-C1)/IN: I=I+1: PRINT I;
- 3500 IF T(ZN)<6 THEN V(ZN)=CX ELSE G(ZN)=CX
- 3510 FF(I)=CX: GOSUB 3560: GOSUB 2740
- 3515 FY(I)=Y(ND,0): FR(I)=X(ND,0): NEXT CX
- 3520 IF T(ZN)<6 THEN V(ZN)=TV ELSE G(ZN)=TV
- 3530 GOTO 2020
- 3540 REM <BACK TO FREQ SWEEP TAB MODULE> ****
- 3550 REM ********************* MAT **********************
- 3560 FOR L=1 TO NO:FOR P=1 TO NO+1:Y(L,P)=0:X(L,P)=0:NEXT P:NEXT L
- 3570 LP=1:CR=CT:FOR CT=1 TO CR:GOSUB 3590
- 3580 NEXT CT: CT=CR: RETURN
- 3590 ON T(CT) GOTO 3600,3620,3640,3760,3810,3840,3850,4030,4040,4000
- 3600 IF V(CT)=0 THEN Y=1E+10 ELSE Y=1/V(CT)
- 3610 X=0:GOTO 3650
- 3620 IF W<>0 THEN X=-1/(W*V(CT)) ELSE X=1E+10
- 3630 Y=0:GOTO 3650
- 3640 Y=0:X=W*V(CT)
- 3650 IF X^2+Y^2<0 AND X^2+Y^2<>0 THEN PRINT "ADMITTANCE UNDERFLOW. COMPONENT NUMBER";CT: GOTO 1290
- 3660 IF Y=0 THEN 3710
- 3670 Y(N1(CT),N1(CT))=Y(N1(CT),N1(CT))+Y
- 3680 Y(N1(CT),N2(CT))=Y(N1(CT),N2(CT))-Y
- 3690 Y(N2(CT),N1(CT))=Y(N2(CT),N1(CT))-Y
- 3700 Y(N2(CT),N2(CT))=Y(N2(CT),N2(CT))+Y
- 3710 IF X=0 THEN RETURN
- 3720 X(N1(CT),N1(CT))=X(N1(CT),N1(CT))+X
- 3730 X(N1(CT),N2(CT))=X(N1(CT),N2(CT))-X
- 3740 X(N2(CT),N1(CT))=X(N2(CT),N1(CT))-X
- 3750 X(N2(CT),N2(CT))=X(N2(CT),N2(CT))+X:RETURN
- 3760 Y=V(CT)*COS(P6*G(CT)):X=V(CT)*SIN(P6*G(CT))
- 3770 Y(N1(CT),NO+1)=Y(N1(CT),NO+1)-Y
- 3780 X(N1(CT),NO+1)=X(N1(CT),NO+1)-X
- 3790 Y(N2(CT),NO+1)=Y(N2(CT),NO+1)+Y
- 3800 X(N2(CT),NO+1)=X(N2(CT),NO+1)+X:RETURN
- 3810 Y(N1(CT),LS+LP)=Y(N1(CT),LS+LP)+1:Y(N2(CT),LS+LP)=Y(N2(CT),LS+LP)-1
- 3820 Y(LS+LP,N1(CT))=Y(LS+LP,N1(CT))-1:Y(LS+LP,N2(CT))=Y(LS+LP,N2(CT))+1
- 3830 Y(LS+LP,NO+1)=Y(LS+LP,NO+1)+V(CT)*COS(P6*G(CT)):X(LS+LP,NO+1)=X(LS+LP,NO+1)+V(CT)*SIN(P6*G(CT)):LP=LP+1:RETURN
- 3840 DP=N1(CT):SP=V(CT):DM=N2(CT):SM=N2(CT):GOTO 3860
- 3850 DP=N2(CT):SP=N2(CT):DM=N1(CT):SM=V(CT)
- 3860 Y(SP,DP)=Y(SP,DP)+G(CT)*1000
- 3870 Y(SP,DM)=Y(SP,DM)-G(CT)*1000
- 3880 Y(SM,DM)=Y(SM,DM)+G(CT)*1000
- 3890 Y(SM,DP)=Y(SM,DP)-G(CT)*1000
- 3900 IF W<>0 THEN 3950
- 3910 Y(SP,NO+1)=Y(SP,NO+1)+700*G(CT)
- 3920 Y(SM,NO+1)=Y(SM,NO+1)-700*G(CT)
- 3930 Y(DP,NO+1)=Y(DP,NO+1)+700
- 3940 Y(DM,NO+1)=Y(DM,NO+1)-700
- 3950 Y=1000 :X=0: GOTO 3670
- 3960 Y(SP,DM)=Y(SP,DM)-G(CT)
- 3970 Y(SP,DP)=Y(SP,DP)+G(CT)
- 3980 Y(SM,DP)=Y(SM,DP)-G(CT)
- 3990 Y(SM,DM)=Y(SM,DM)+G(CT):RETURN
- 4000 Y=1E+10:X=0:NN=N2(CT):N2(CT)=0:GOSUB 3670:N2(CT)=NN:NN=N1(CT):N1(CT)=V(CT):Y=4.99E-07:GOSUB 3670:N1(CT)=NN
- 4010 G(CT)=G(CT)*1E+10:DP=N2(CT):SP=N1(CT):DM=V(CT):SM=0:GOSUB 3960
- 4020 G(CT)=G(CT)*0:RETURN
- 4030 DP=N1(CT):SP=V(CT):DM=N2(CT):SM=N2(CT):GOTO 3960
- 4040 DP=N1(CT):SP=V(CT):DM=N2(CT):SM=N2(CT): G(CT)=G(CT)*1E+10: GOSUB 3960
- 4050 G(CT)=G(CT)*0: Y=1E+10: X=0: NN=N1(CT): N1(CT)=V(CT): GOSUB 3670: N1(CT)=NN: RETURN
- 4060 REM **************** LIST CIRCUIT *******************
- 4070 PRINT:PRINT F$,"FREQUENCY="W/P2:PRINT
- 4080 PRINT"COMP."TAB(7)"NODE":PRINT"NO."TAB(7)"CONNECTION"TAB(27)"TYPE"TAB(39)"VALUE"TAB(53)"PHASE ANGLE"
- 4090 FOR L=1 TO CT:PRINT L;TAB(7);
- 4100 ON T(L) GOTO 4150,4160,4170,4180,4190,4200,4210,4230,4240,4220
- 4120 IF L/20=INT(L/20) THEN INPUT"PRESS <CR> TO CONTINUE";ZZ
- 4130 NEXT L
- 4135 PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN GOSUB 6170
- 4140 RETURN
- 4150 PRINT N1(L)"-"N2(L)TAB(27)"RESISTOR"TAB(39)V(L):GOTO 4120
- 4160 PRINT N1(L)"-"N2(L)TAB(27)"INDUCTOR"TAB(39)V(L):GOTO 4120
- 4170 PRINT N1(L)"-"N2(L)TAB(27)"CAPACITOR"TAB(39)V(L):GOTO 4120
- 4180 PRINT N1(L)"-"N2(L)TAB(27)"CURRENT"TAB(39)V(L)TAB(53)G(L):GOTO 4120
- 4190 PRINT N1(L);"-";N2(L);TAB(27);"VOLTAGE";TAB(39);V(L);TAB(53);G(L)
- 4191 GOTO 4120
- 4200 PRINT"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"NPN TRANS."TAB(39)" BETA="G(L):GOTO 4120
- 4210 PRINT"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"PNP TRANS."TAB(39)" BETA="G(L):GOTO 4120
- 4220 PRINT "O="N1(L)"-="N2(L)"+="V(L)TAB(27)"OP AMP"TAB(39)" GAIN="G(L):GOTO 4120
- 4230 PRINT"G="N1(L)"S="N2(L)"D="V(L)TAB(27)"FET TRANS."TAB(39)" GM="G(L): GOTO 4120
- 4240 PRINT"G="N1(L)"C="N2(L)"P="V(L)TAB(27)"CVS (TUBE)"TAB(39)" V. GAIN="G(L): GOTO 4120
- 4250 REM **************** CURRENT CALC *******************
- 4260 PRINT:PRINT "WORKING":PRINT:ND=0:GOSUB 3560:GOSUB 2740:GOSUB 2570
- 4280 ND=LS: FOR LQ=1 TO CT: IF T(LQ)=5 THEN ND=ND+1: GOSUB 2620
- 4290 NEXT LQ
- 4310 PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN GOSUB 6030 ELSE RETURN
- 4320 ND=LS: FOR LQ=1 TO CT: IF T(LQ)=5 THEN ND=ND+1: GOSUB 6080
- 4322 NEXT LQ: RETURN
- 4350 REM ********************* BRANCH V & I CALC **********
- 4360 PRINT:PRINT "ENTER A COMPONENT NUMBER FROM 0-"CT" ONLY TWO NODE ELEMENTS WILL BE CALCULATED.": ND=0: D=0
- 4370 PRINT "ENTRY OF '0' WILL PROVIDE A SOLUTION FOR ALL VALID BRANCHS."
- 4380 PRINT: PRINT" COMPONENT? (0-"CT") ";: INPUT LB: CC=1: PRINT
- 4390 IF LB>CT THEN PRINT "THE HIGHEST ELEMENT NUMBER IS "CT: GOTO 4380
- 4400 IF LB<0 THEN 4360
- 4410 PRINT "WORKING":GOSUB 3560:GOSUB 2740
- 4412 IF D=0 THEN PRINT: PRINT "COMP #" TAB(11) "REAL" TAB(21) "IMAGINARY" TAB(33) "MAGNITUDE" R$ TAB(45) "PHASE ANGLE"
- 4413 IF D=2 THEN LPRINT: LPRINT "COMP #" TAB(11) "REAL" TAB(21) "IMAGINARY" TAB(33) "MAGNITUDE" R$ TAB(45) "PHASE ANGLE"
- 4415 IF D=0 THEN PRINT: PRINT "BRANCH VOLTAGE(S):"
- 4416 IF D=2 THEN LPRINT: LPRINT "BRANCH VOLTAGE(S):"
- 4420 IF LB>0 THEN LT=LB: GOTO 4440
- 4430 FOR LT=1 TO CT: CC=CC+1
- 4440 IF T(LT)>5 THEN 4510 ELSE YB=Y(N1(LT),0)-Y(N2(LT),0):XB=X(N1(LT),0)-X(N2(LT),0)
- 4450 IF N2(LT)=0 THEN YB=Y(N1(LT),0): XB=X(N1(LT),0)
- 4460 IF N1(LT)=0 THEN YB=-Y(N2(LT),0): XB=-X(N2(LT),0)
- 4470 MG=SQR(YB^2+XB^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10)
- 4480 IF YB=0 THEN PA=90*SGN(XB) ELSE IF YB>0 THEN PA=1/P6*ATN(XB/YB) ELSE PA=1/P6*ATN(XB/YB)+180
- 4490 IF D=0 THEN PRINT LT TAB(9);: PRINT USING "##.##^^^^ ";YB;XB;MG;: PRINT USING "####.#";PA
- 4492 IF D=2 THEN LPRINT LT TAB(9);: LPRINT USING "##.##^^^^ ";YB;XB;MG;: LPRINT USING "####.#";PA
- 4500 IF D=0 AND CC/20=INT(CC/20) THEN PRINT: INPUT"PRESS <CR> TO CONTINUE";FR: PRINT
- 4510 IF LB<>0 THEN 4520
- 4515 NEXT LT
- 4520 IF D=0 THEN PRINT "BRANCH CURRENT(S): (EXCLUDING SOURCES - USE 'I' COMMAND FOR SOURCES)
- 4522 IF D=2 THEN LPRINT "BRANCH CURRENT(S):
- 4530 IF LB>0 THEN 4550
- 4540 FOR LT=1 TO CT: CC=CC+1
- 4550 IF T(LT)>3 THEN 4650 ELSE YB=Y(N1(LT),0)-Y(N2(LT),0):XB=X(N1(LT),0)-X(N2(LT),0)
- 4560 IF N2(LT)=0 THEN YB=Y(N1(LT),0): XB=X(N1(LT),0)
- 4570 IF N1(LT)=0 THEN YB=-Y(N2(LT),0): XB=-X(N2(LT),0)
- 4580 IF T(LT)=1 THEN YB=YB/V(LT): XB=XB/V(LT)
- 4590 IF T(LT)=2 THEN TB=YB: IF W=0 THEN YB=XB*1E+10: XB=-TB*1E+10 ELSE YB=XB/(W*V(LT)): XB=-TB/(W*V(LT))
- 4600 IF T(LT)=3 THEN TB=YB: YB=-XB*W*V(LT): XB=TB*W*V(LT)
- 4610 MG=SQR(YB^2+XB^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10)
- 4620 IF YB=0 THEN PA=90*SGN(XB) ELSE IF YB>0 THEN PA=1/P6*ATN(XB/YB) ELSE PA=1/P6*ATN(XB/YB)+180
- 4630 IF D=0 THEN PRINT LT TAB(9);: PRINT USING "##.##^^^^ ";YB;XB;MG;: PRINT USING "####.#";PA
- 4632 IF D=2 THEN LPRINT LT TAB(9);: LPRINT USING "##.##^^^^ ";YB;XB;MG;: LPRINT USING "####.#";PA
- 4640 IF D=0 AND CC/20=INT(CC/20) THEN PRINT: INPUT"PRESS <CR> TO CONTINUE";FR: PRINT
- 4650 IF LB<>0 THEN 4654
- 4652 NEXT LT
- 4654 IF D=0 THEN PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN D=2: GOTO 4412
- 4660 D=0: RETURN
- 4670 REM ********************* PLOT ROUTEEN ************
- 4680 PRINT: IF LX=3 THEN PRINT"LOG FREQUENCY PLOT"; ELSE PRINT W$" PLOT";
- 4690 PRINT TAB(35) F$: PRINT: LF=LL-18: SN=0: SH=0: FOR I=1 TO M
- 4700 IF V$="V" THEN MG=SQR(FY(I)^2+FR(I)^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10): GOTO 4720 ELSE 4720
- 4710 IF FY(I)=0 THEN K=SGN(FR(I))*90 ELSE IF FY(I)>0 THEN K=1/P6*ATN(FR(I)/FY(I)) ELSE K=1/P6*ATN(FR(I)/FY(I))+180
- 4720 IF V$="V" THEN FP(I)=MG ELSE FP(I)=K
- 4730 IF FP(I)>SH THEN SH=FP(I)
- 4740 IF FP(I)<SN THEN SN=FP(I)
- 4745 NEXT I
- 4750 IF SN>0 THEN SN=0 ELSE SN=-SN
- 4760 IF SH<0 THEN SH=0
- 4770 SF=SH+SN: ZV=INT(LF*SN/SF+11)
- 4780 PRINT F1$ TAB(LF/2+7) NA$
- 4790 I1=INT(LF/2): I2=INT(LF*SH/(2*SF)): I3=INT(LF*SN/(2*SF)): IQ=INT(LF/4): IH=INT(3*LF/4)
- 4800 IF SH=0 THEN PRINT TAB(10) -SN TAB(IQ+10) -3*SN/4 TAB(I1+10) -SN/2 TAB(IH+10) -SN/4 TAB(LF+10) SH: GOTO 4850
- 4810 IF SN=0 THEN PRINT TAB(10) SN TAB(IQ+10) SH/4 TAB(I1+10) SH/2 TAB(IH+10) 3*SH/4 TAB(LF+10) SH: GOTO 4850
- 4820 IF ZV<(LF/4+11) THEN PRINT TAB(10) -SN TAB(ZV) "0" TAB(ZV+I2-1) SH/2 TAB(LF+10) SH: GOTO 4850
- 4830 IF ZV>(3*LF/4+11) THEN PRINT TAB(10) -SN TAB(I3+10) -SN/2 TAB(ZV) "0" TAB(LF+10) SH: GOTO 4850
- 4840 PRINT TAB(10) -SN TAB(I3+10) -SN/2 TAB(ZV) "0" TAB(ZV+I2-1) SH/2 TAB(LF+10) SH
- 4850 PRINT STRING$(11,45) "+";
- 4860 IF SN=0 OR SH=0 THEN PRINT STRING$(IQ-1,45) "+" STRING$(I1-IQ-1,45) "+" STRING$(IH-I1-1,45) "+" STRING$(LF-IH-1,45) "+": GOTO 4900
- 4870 IF ZV<(LF/4+11) THEN PRINT STRING$(ZV-11,45) "+" STRING$(I2-1,45) "+" STRING$(LF-ZV-I2+10,45) "+": GOTO 4900
- 4880 IF ZV>(3*LF/4+11) THEN PRINT STRING$(I3-1,45) "+" STRING$(ZV-I3-12,45) "+" STRING$(LF-ZV+10,45) "+": GOTO 4900
- 4890 PRINT STRING$(I3-1,45) "+" STRING$(ZV-I3-12,45) "+" STRING$(I2-1,45) "+" STRING$(LF-ZV-I2+10,45) "+"
- 4900 CN=0: FOR I=1 TO M:VN=INT(LF*(SN+FP(I))/SF+11):PRINT USING "####^^^^"; FF(I);
- 4910 IF VN>11 THEN PRINT TAB(11)"|";
- 4920 IF VN=ZV THEN PRINT TAB(ZV)"*": GOTO 4950
- 4930 IF VN>ZV AND ZV>11 THEN PRINT TAB(ZV)"."TAB(VN)"*": GOTO 4950
- 4940 IF VN>ZV THEN PRINT TAB(VN)"*" ELSE PRINT TAB(VN)"*"TAB(ZV)"."
- 4950 IF CN<>0 AND CN/20=INT(CN/20) THEN INPUT"PRESS <CR> TO CONTINUE"; A$
- 4960 CN=CN+1
- 4970 NEXT I: PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN LL=74: GOSUB 6340
- 4980 IF V$="V" THEN PRINT:INPUT"WANT TO PLOT PHASE ANGLE (Y/N)";P$:IF P$="Y" THEN NA$="ANGLE ":V$="P":LL=XX:GOTO 4680
- 4990 IF V$="P" AND P$<>"Y" THEN PRINT: INPUT "WANT TO PLOT VOLTAGE (Y/N)";Q$ ELSE RETURN
- 5000 IF Q$<>"Y" THEN RETURN ELSE V$="V": LL=XX: IF RF>0 THEN NA$="VOLTAGE RATIO IN dB": GOTO 4680 ELSE NA$="VOLTAGE": GOTO 4680
- 5020 REM ********************* HARD COPY TEXT ***********************
- 5030 LPRINT: LPRINT "TCAP IS A PROGRAM FOR THE ANALYSIS OF ELECTRICAL CIRCUITS CONSISTING"
- 5040 LPRINT "OF RESISTORS, CAPACITORS, INDUCTORS AND SEVERAL COMMON ACTIVE DEVICES.
- 5050 LPRINT "FIRST DRAW THE CIRCUIT TO BE ANALAYZED ON A SHEET OF PAPER. ASSIGN A
- 5060 LPRINT "NUMBER TO EACH ELEMENT OF THE CIRCUIT. THIS IS THE COMPONENT NUMBER.
- 5070 LPRINT "NEXT ASSIGN A NUMBER TO EACH NETWORK NODE. A NODE IS PRESENT AT THE
- 5080 LPRINT "CONNECTION BETWEEN ELEMENTS. NO TWO ELEMENTS MAY BE CONNECTED WITHOUT
- 5090 LPRINT "A NODE BETWEEN THEM. EVERY ELEMENT MUST BEGIN AND END AT A NODE. ANY
- 5100 LPRINT "NUMBER OF ELEMENTS MAY BE CONNECTED TO A COMMON NODE.": LPRINT:
- 5110 LPRINT "ONCE ALL THE ELEMENTS AND NODES ARE NUMBERED, YOU ARE READY TO ENTER
- 5120 LPRINT "YOUR NETWORK INTO TCAP.": LPRINT
- 5130 LPRINT "TCAP WILL FIRST ASK WHETHER YOU WISH TO READ A FILE. TCAP ALLOWS YOU
- 5140 LPRINT "TO SAVE ON DISK CIRCUIT FILES ('S') YOU HAVE PREVIOUSLY WORKED ON. IF
- 5150 LPRINT "YOU DO NOT HAVE A PREVIOUS FILE YOU WISH TO WORK ON, TYPE 'N' OR
- 5160 LPRINT "HIT CARRIAGE RETURN AND TCAP WILL PUT YOU IN THE NEW FILE MODE. IN
- 5170 LPRINT "THE NEW FILE MODE, TCAP WILL FIRST ASK FOR THE HIGHEST NODE NUMBER."
- 5180 LPRINT "NEXT TCAP WILL ASK FOR THE NUMBER OF VOLTAGE SOURCES. IT WILL THEN
- 5190 LPRINT "ASK FOR THE NUMBER OF COMPONENTS. THIS NUMBER INCLUDES THE VOLTAGE
- 5200 LPRINT "SOURCES. YOU ARE THEN READY TO ENTER THE CIRCUIT ELEMENTS. THEY MAY
- 5210 LPRINT "BE ENTERED IN ANY ORDER. ENTER NODE AND ELEMENT VALUES SEPARATED BY
- 5220 LPRINT "COMMAS AS DIRECTED BY TCAP. FOR EXAMPLE A RESISTOR (COMPONENT TYPE #1)
- 5230 LPRINT "BETWEEN NODES 2 AND 3 OF 120 OHMS WOULD BE ENTERED AS '2,3,120'.": LPRINT
- 5240 LPRINT "TCAP INITIALLY ASSUMES CALCULATIONS ARE TO BE AT DC (0 Hz). FOR CALCULATIONS
- 5250 LPRINT "AT OTHER FREQUENCIES, THE FREQUENCY MUST BE SET WITH THE 'F' COMMAND.
- 5260 LPRINT "TCAP CAN PERFORM NODE VOLTAGE CALCULATIONS AT A SINGLE FREQUENCY OR OVER
- 5270 LPRINT "A RANGE OF FREQUENCIES (SWEEP). WHEN PERFORMING A NON-SWEEP CALCULATION,
- 5280 LPRINT "IT WILL ALWAYS RETURN TO THE LAST SINGLE FREQUENCY SPECIFIED. TCAP CAN
- 5290 LPRINT "ALSO CALCULATE OVER A 'SWEEP' OF COMPONENT VALUES WITH THE 'C' FUNCTION.
- 5300 LPRINT "AFTER A COMPONENT SWEEP CALCULATION, TCAP WILL RETURN TO THE ORIGINAL
- 5310 LPRINT "COMPONENT VALUE. TCAP ALWAYS TABULATES THE RESULTS OF A SWEEP CALCULATION,
- 5320 LPRINT "BUT IT CAN ALSO DISPLAY THESE RESULTS IN GRAPHICAL FORM.
- 5330 LPRINT: LPRINT "TCAP CALCULATES NODE VOLTAGES WITH THE 'V' FUNCTION. THE 'I' FUNCTION
- 5340 LPRINT "CALCULATES THE CURRENT SUPPLIED BY ALL NETWORK VOLTAGE AND CURRENT SOURCES,
- 5350 LPRINT "BUT DOES NOT CALCULATE THE CURRENT THROUGH INDIVIDUAL NETWORK ELEMENTS.
- 5360 LPRINT "TO DETERMINE THE VOLTAGE ACROSS AND THE CURRENT THROUGH AN ELEMENT
- 5370 LPRINT "(OR NETWORK BRANCH), THE 'B' COMMAND IS USED. THIS FUNCTION WILL PROVIDE
- 5380 LPRINT "THE VOLTAGES ACROSS ALL 2-TERMINAL NETWORK ELEMENTS AND THE CURRENTS
- 5390 LPRINT "THROUGH THESE ELEMENTS (EXCEPT FOR SOURCES - PROVIDED BY THE 'I' COMMAND).
- 5400 LPRINT "VOLTAGE IS DEFINED AS POSITIVE AT THE FIRST NODE RELATIVE TO THE SECOND
- 5410 LPRINT "NODE. THE 'Z' FUNCTION PROVIDES THE IMPEDANCE BETWEEN A SPECIFIED NODE AND
- 5420 LPRINT "GROUND (NODE 0) WITH ALL VOLTAGE SOURCES SHORTED AND ALL CURRENT SOURCES
- 5430 LPRINT "OPEN CIRCUITED. TO CALCULATE THE INPUT (OR OUTPUT) IMPEDANCE OF A
- 5440 LPRINT "NETWORK, DRIVE THE NETWORK WITH A 1 AMP CURRENT SOURCE. THE VOLTAGE
- 5450 LPRINT "AT THE NODE OF THE CURRENT SOURCE EQUALS THE DESIRED IMPEDANCE. THIS
- 5460 LPRINT "IMPEDANCE MAY BE PLOTTED USING THE 'F' COMMAND AND SWEEP FUNCTION.": LPRINT
- 5470 LPRINT "ANY NUMBER OF COMPONENTS (EXCLUDING VOLTAGE SOURCES) MAY BE ADDED TO
- 5480 LPRINT "A NETWORK WITH THE 'A' FUNCTION JUST AS LONG AS NO ADDITIONAL NODES
- 5490 LPRINT "ARE ADDED. 'R' AND 'D' ALLOW THE SUBSTITUTION AND DELETION OF COMPONENTS.": LPRINT
- 5500 LPRINT "THE 'M' FUNCTION CAUSES TCAP TO DISPLAY THE MAGNITUDES OF VOLTAGES IN
- 5510 LPRINT "dB. A REFERENCE VOLTAGE MUST BE SUPPLIED FOR THE 20 LOG(V/VREF) CALC.
- 5520 LPRINT "THE M FUNCTION IS TURNED OFF BY ENTERING A VREF=0.
- 5530 LPRINT CHR$(12): LPRINT "TCAP HAS 5 ACTIVE DEVICE MODELS: PNP, NPN AND FET TRANSISTORS, A
- 5540 LPRINT "CONTROLLED VOLTAGE SOURCE (WHICH CAN BE MADE TO ACT LIKE A TUBE) AND
- 5550 LPRINT "AN OPERATIONAL AMPLIFIER. FOR AC PROBLEMS THE PNP AND NPN MODELS ARE
- 5560 LPRINT "INDENTICAL AND CONSIST OF A .001 OHM RESISTANCE (SHORT) CONNECTED
- 5570 LPRINT "BETWEEN THE BASE AND EMITTER TERMINALS AND A CONTROLLED CURRENT
- 5580 LPRINT "SOURCE BETWEEN THE COLLECTOR AND EMITTER TERMINALS. THE CURRENT
- 5590 LPRINT "PRODUCED BY THIS CURRENT SOURCE IS THE PRODUCT OF THE CURRENT
- 5600 LPRINT "FLOWING INTO THE BASE TERMINAL TIMES BETA. MORE COMPLEX TRANSISTOR
- 5610 LPRINT "MODELS MAY BE CREATED BY ADDING EXTRA ELEMENTS IN SERIES AND PARALLEL
- 5620 LPRINT "WITH THE DEVICE TERMINALS. FOR EXAMPLE A RESISTOR CAN BE PUT IN SERIES
- 5630 LPRINT "WITH THE BASE TERMINAL TO SIMULATE THE EFFECT OF Rie, OR IN PARALLEL
- 5640 LPRINT "WITH THE COLLECTOR/EMITTER TERMINALS TO SIMULATE THE EFFECT OF Hoe.
- 5650 LPRINT "ACTIVE DEVICES CAN ALSO BE COMBINED TO MAKE EVEN MORE COMPLEX MODELS.
- 5660 LPRINT: LPRINT "IN THE DC CASE (F=0), A .7 VOLT SOURCE IS ADDED IN SERIES WITH THE
- 5670 LPRINT "BASE TERMINALS OF THE BIPOLAR TRANSISTOR MODELS, WITH THE APPROPRIATE
- 5680 LPRINT "POLARITY FOR EITHER PNP OR NPN DEVICES, AND TCAP CHECKS FOR CORRECT
- 5690 LPRINT "BIAS POLARITY. IN THE AC CASE (F>0), THE .7 VOLT BATTERY IS ELIMINATED
- 5700 LPRINT "AND ALL CIRCUIT VOLTAGE SOURCES ARE SET TO THE FREQUENCY SPECIFIED BY
- 5710 LPRINT "'F', I.E., SEPARATE CIRCUITS ARE NEEDED FOR BIAS (DC) AND AC CONDITIONS.
- 5730 LPRINT: LPRINT "THE OPERATIONAL AMPLIFIER IS A CONTROLLED VOLTAGE SOURCE WHOSE
- 5740 LPRINT "OUTPUT VOLTAGE IS THE PRODUCT OF THE VOLTAGE BETWEEN ITS (+) AND
- 5750 LPRINT "(-) TERMINALS TIMES GAIN. AN OPEN CIRCUIT (2 MEGOHMS) IS PRESENT BE-
- 5760 LPRINT "TWEEN THE (+) AND (-) TERMINALS WHICH ARE FLOATING RELATIVE TO THE
- 5770 LPRINT "OUTPUT. THE OUTPUT VOLTAGE SOURCE HAS EFFECTIVELY A ZERO IMPEDANCE AND
- 5780 LPRINT "IS CONNECTED TO GROUND (NODE 0). THE FET MODEL IS A CONTROLLED CURRENT
- 5790 LPRINT "SOURCE, WHOSE OUTPUT DEPENDS ON THE VOLTAGE AT THE GATE TERMINAL TIMES MU.
- 5800 LPRINT "IT HAS BOTH INFINITE INPUT AND OUTPUT IMPEDANCES. BOTH INPUT AND OUTPUT
- 5810 LPRINT "TERMINALS ARE REFERENCED TO THE SOURCE NODE. DC WISE, THE FET MODEL
- 5820 LPRINT "CAN BE CONSIDERED AN ENHANCEMENT TYPE FET, BUT NO CHECK IS MADE FOR
- 5830 LPRINT "CORRECT (LINEAR) BIAS CONDITIONS. THE CVS (CONTROLLED VOLTAGE SOURCE)
- 5840 LPRINT "IS SIMILAR TO THE OP-AMP, BUT HAS BOTH INPUT AND OUTPUT VOLTAGE
- 5850 LPRINT "REFERENCED TO ITS COMMON CATHODE NODE. IT HAS INFINITE INPUT
- 5860 LPRINT "AND ZERO OUTPUT IMPEDANCES. TO MAKE THE CVS MODEL A VACUUM TUBE, A
- 5870 LPRINT "LARGE RESISTOR SHOULD BE ADDED IN SERIES WITH THE PLATE NODE.
- 5880 LPRINT: LPRINT "OPTIONS:"
- 5890 LPRINT TAB(10), "A - ADD CIRCUIT COMPONTENT"
- 5900 LPRINT TAB(10), "B - CALCULATE BRANCH VOLTAGES AND CURRENTS"
- 5910 LPRINT TAB(10), "C - CHANGE AND SWEEP COMPONENT VALUE"
- 5920 LPRINT TAB(10), "D - DELETE CIRCUIT COMPONENT"
- 5930 LPRINT TAB(10), "F - SET OR SWEEP FREQUENCY"
- 5940 LPRINT TAB(10), "I - CALCULATE SOURCE CURRENTS"
- 5950 LPRINT TAB(10), "L - LIST PRESENT COMPONENTS"
- 5960 LPRINT TAB(10), "M - VOLTAGE MAGNITUDE IN dB"
- 5970 LPRINT TAB(10), "N - NEW CIRCUIT"
- 5980 LPRINT TAB(10), "R - REPLACE CIRCUIT COMPONENT": RETURN
- 5990 LPRINT TAB(10), "S - SAVE CIRCUIT FILE"
- 6000 LPRINT TAB(10), "V - CALCULATE NODE VOLTAGES"
- 6010 LPRINT TAB(10), "Z - CALCULATE NODE IMPEDANCE"
- 6020 LPRINT TAB(10), "END - END SESSION": RETURN
- 6025 REM *************************** HARD COPY NV, Z & I ************
- 6030 LPRINT: IF C$="I" THEN LPRINT F$,"CURRENT" ELSE IF C$="Z" THEN LPRINT F$, "IMPEDANCE" ELSE LPRINT F$, "VOLTAGE"
- 6040 LPRINT"FREQUENCY="W/P2: LPRINT
- 6050 LPRINT"NODE"TAB(11)"REAL"TAB(21)"IMAGINARY"TAB(33)"MAGNITUDE"R$TAB(44)"PHASE ANGLE"
- 6060 IF C$="I" THEN RETURN
- 6070 IF ND=0 THEN 6090
- 6080 L=ND: GOTO 6100
- 6090 FOR L=1 TO LS
- 6100 MG=SQR(Y(L,0)^2+X(L,0)^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10)
- 6110 IF Y(L,0)=0 THEN PA=90*SGN(X(L,0)) ELSE IF Y(L,0)>0 THEN PA=1/P6*ATN(X(L,0)/Y(L,0)) ELSE PA=1/P6*ATN(X(L,0)/Y(L,0))+180
- 6120 IF C$="I" THEN LPRINT N1(LQ)"-"N2(LQ);:GOTO 6140
- 6130 LPRINT L TAB(9);
- 6140 LPRINT USING "##.##^^^^ "; Y(L,0); X(L,0); MG;: LPRINT USING " ####.#"; PA
- 6160 IF ND<>0 THEN RETURN
- 6162 NEXT L: RETURN
- 6165 REM ************************ HARD COPY COMPONENT LIST ************
- 6170 LPRINT:LPRINT F$,"FREQUENCY="W/P2:LPRINT
- 6180 LPRINT"COMP."TAB(7)"NODE":LPRINT"NO."TAB(7)"CONNECTION"TAB(27)"TYPE"TAB(39)"VALUE"TAB(53)"PHASE ANGLE"
- 6190 FOR L=1 TO CT:LPRINT L;TAB(7);
- 6200 ON T(L) GOTO 6240,6250,6260,6270,6280,6290,6300,6310,6320,6330
- 6220 NEXT L: RETURN
- 6240 LPRINT N1(L)"-"N2(L)TAB(27)"RESISTOR"TAB(39)V(L):GOTO 6220
- 6250 LPRINT N1(L)"-"N2(L)TAB(27)"INDUCTOR"TAB(39)V(L):GOTO 6220
- 6260 LPRINT N1(L)"-"N2(L)TAB(27)"CAPACITOR"TAB(39)V(L):GOTO 6220
- 6270 LPRINT N1(L)"-"N2(L)TAB(27)"CURRENT"TAB(39)V(L)TAB(53)G(L):GOTO 6220
- 6280 LPRINT N1(L)"-"N2(L)TAB(27)"VOLTAGE"TAB(39)V(L)TAB(53)G(L):GOTO 6220
- 6290 LPRINT"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"NPN TRANS."TAB(39)" BETA="G(L):GOTO 6220
- 6300 LPRINT"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"PNP TRANS."TAB(39)" BETA="G(L):GOTO 6220
- 6310 LPRINT "O="N1(L)"-="N2(L)"+="V(L)TAB(27)"OP AMP"TAB(39)" GAIN="G(L):GOTO 6220
- 6320 LPRINT"G="N1(L)"S="N2(L)"D="V(L)TAB(27)"FET TRANS."TAB(39)" GM="G(L): GOTO 6220
- 6330 LPRINT"G="N1(L)"C="N2(L)"P="V(L)TAB(27)"CVS (TUBE)"TAB(39)" V. GAIN="G(L): GOTO 6220
- 6335 REM *********************** HARD COPY PLOT **********************
- 6340 LPRINT: IF LX=3 THEN LPRINT"LOG FREQUENCY PLOT"; ELSE LPRINT W$" PLOT";
- 6350 LPRINT TAB(35) F$: LPRINT: LF=LL-18: SN=0: SH=0: FOR I=1 TO M
- 6360 IF V$="V" THEN MG=SQR(FY(I)^2+FR(I)^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10): GOTO 6380 ELSE 6380
- 6370 IF FY(I)=0 THEN K=SGN(FR(I))*90 ELSE IF FY(I)>0 THEN K=1/P6*ATN(FR(I)/FY(I)) ELSE K=1/P6*ATN(FR(I)/FY(I))+180
- 6380 IF V$="V" THEN FP(I)=MG ELSE FP(I)=K
- 6390 IF FP(I)>SH THEN SH=FP(I)
- 6400 IF FP(I)<SN THEN SN=FP(I)
- 6405 NEXT I
- 6410 IF SN>0 THEN SN=0 ELSE SN=-SN
- 6420 IF SH<0 THEN SH=0
- 6430 SF=SH+SN: ZV=INT(LF*SN/SF+11)
- 6440 LPRINT F1$ TAB(LF/2+7) NA$
- 6450 I1=INT(LF/2): I2=INT(LF*SH/(2*SF)): I3=INT(LF*SN/(2*SF)): IQ=INT(LF/4): IH=INT(3*LF/4)
- 6460 IF SH=0 THEN LPRINT TAB(10) -SN TAB(IQ+10) -3*SN/4 TAB(I1+10) -SN/2 TAB(IH+10) -SN/4 TAB(LF+10) SH: GOTO 6510
- 6470 IF SN=0 THEN LPRINT TAB(10) SN TAB(IQ+10) SH/4 TAB(I1+10) SH/2 TAB(IH+10) 3*SH/4 TAB(LF+10) SH: GOTO 6510
- 6480 IF ZV<(LF/4+11) THEN LPRINT TAB(10) -SN TAB(ZV) "0" TAB(ZV+I2-1) SH/2 TAB(LF+10) SH: GOTO 6510
- 6490 IF ZV>(3*LF/4+11) THEN LPRINT TAB(10) -SN TAB(I3+10) -SN/2 TAB(ZV) "0" TAB(LF+10) SH: GOTO 6510
- 6500 LPRINT TAB(10) -SN TAB(I3+10) -SN/2 TAB(ZV) "0" TAB(ZV+I2-1) SH/2 TAB(LF+10) SH
- 6510 LPRINT STRING$(11,45) "+";
- 6520 IF SN=0 OR SH=0 THEN LPRINT STRING$(IQ-1,45) "+" STRING$(I1-IQ-1,45) "+" STRING$(IH-I1-1,45) "+" STRING$(LF-IH-1,45) "+": GOTO 6560
- 6530 IF ZV<(LF/4+11) THEN LPRINT STRING$(ZV-11,45) "+" STRING$(I2-1,45) "+" STRING$(LF-ZV-I2+10,45) "+": GOTO 6560
- 6540 IF ZV>(3*LF/4+11) THEN LPRINT STRING$(I3-1,45) "+" STRING$(ZV-I3-12,45) "+" STRING$(LF-ZV+10,45) "+": GOTO 6560
- 6550 LPRINT STRING$(I3-1,45) "+" STRING$(ZV-I3-12,45) "+" STRING$(I2-1,45) "+" STRING$(LF-ZV-I2+10,45) "+"
- 6560 CN=0: FOR I=1 TO M:VN=INT(LF*(SN+FP(I))/SF+11):LPRINT USING "####^^^^"; FF(I);
- 6570 IF VN>11 THEN LPRINT TAB(11)"|";
- 6580 IF VN=ZV THEN LPRINT TAB(ZV)"*": GOTO 6610
- 6590 IF VN>ZV AND ZV>11 THEN LPRINT TAB(ZV)"."TAB(VN)"*": GOTO 6610
- 6600 IF VN>ZV THEN LPRINT TAB(VN)"*" ELSE LPRINT TAB(VN)"*"TAB(ZV)"."
- 6610 NEXT I: RETURN
- 6615 REM ********************** HARD COPY SWEEP FUNC *******************
- 6620 LPRINT: LPRINT"VOLTAGE - "W$" TABULATION" TAB(50)F$: LPRINT
- 6630 LPRINT TAB(3) E$ TAB(14) "REAL" TAB(24) "IMAGINARY" TAB(36) "MAGNITUDE" R$ TAB(48)"PHASE ANGLE"
- 6640 FOR I=1 TO M: MG=SQR(FY(I)^2+FR(I)^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10)
- 6660 IF FY(I)=0 THEN K=SGN(FR(I))*90 ELSE IF FY(I)>0 THEN K=1/P6*ATN(FR(I)/FY(I)) ELSE K=1/P6*ATN(FR(I)/FY(I))+180
- 6665 LPRINT USING "###.#^^^^ "; FF(I);
- 6670 LPRINT USING "##.##^^^^ ";FY(I);FR(I);MG;: LPRINT USING " ####.#";K
- 6680 NEXT I: RETURN
-