home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / rf3 / tcap-ibm.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1986-08-18  |  36.0 KB  |  687 lines

  1. 10  CLS: WIDTH 80: ON ERROR GOTO 1275
  2. 20  PRINT:PRINT"TSC ELECTRICAL CIRCUIT ANALYSIS PROGRAM V3.3.6M 7/2/86"
  3. 30  PRINT "      *********************************************
  4. 40  PRINT "      *                                           *
  5. 50  PRINT "      *  BY DR. ALLEN KATZ, CHAIRMAN              *
  6. 60  PRINT "      *  DEPT ELECTRONICS ENGINEERING TECHNOLOGY  *
  7. 70  PRINT "      *  TRENTON STATE COLLEGE, CN550             *
  8. 80  PRINT "      *  TRENTON, NEW JERSEY 8625                 *
  9. 90  PRINT "      *                                           *
  10. 100  PRINT "      *  THE AUTHOR RESERVES RIGHTS TO THIS       *
  11. 110  PRINT "      *  PROGRAM; HOWEVER, COPYING AND USE FOR    *
  12. 120  PRINT "      *  EDUCATIONAL PURPOSES IS ENCOURAGED.      *
  13. 130  PRINT "      *                                           *
  14. 140  PRINT "      *  PLEASE REPORT ANY ERRORS OR PROBLEMS     *
  15. 150  PRINT "      *  WITH THIS PROGRAM TO THE AUTHOR.         *
  16. 160  PRINT "      *  TEL (609) 771 2487                       *
  17. 170  PRINT "      *                                           *
  18. 180  PRINT "      *********************************************
  19. 190  PRINT "ALL UNITS IN VOLTS, AMPS, OHMS, FARADS, HENRIES, HZ, ETC."
  20. 200  PRINT "NODE VOLTAGES AND IMPEDANCES REFERENCED TO NODE 0 (ground)."
  21. 210  PRINT "ALL CALC ASSUMED AT DC (0 FREQ) UNLESS FREQ SET WITH 'F' OPTION."
  22. 220  PRINT "MAXIMUM NUMBER OF SWEEP POINTS=100. IF ERROR 'GOTO 1290'.
  23. 230  PRINT: INPUT "WANT ADDITIONAL INFORMATION (Y/N)"; B$: IF B$<>"Y" GOTO 1170
  24. 240  CLS: PRINT "TCAP IS A PROGRAM FOR THE ANALYSIS OF ELECTRICAL CIRCUITS CONSISTING"
  25. 250  PRINT "OF RESISTORS, CAPACITORS, INDUCTORS AND SEVERAL COMMON ACTIVE DEVICES.
  26. 260  PRINT "FIRST DRAW THE CIRCUIT TO BE ANALAYZED ON A SHEET OF PAPER. ASSIGN A
  27. 270  PRINT "NUMBER TO EACH ELEMENT OF THE CIRCUIT. THIS IS THE COMPONENT NUMBER.
  28. 280  PRINT "NEXT ASSIGN A NUMBER TO EACH NETWORK NODE. A NODE IS PRESENT AT THE
  29. 290  PRINT "CONNECTION BETWEEN ELEMENTS. NO TWO ELEMENTS MAY BE CONNECTED WITHOUT
  30. 300  PRINT "A NODE BETWEEN THEM. EVERY ELEMENT MUST BEGIN AND END AT A NODE. ANY
  31. 310  PRINT "NUMBER OF ELEMENTS MAY BE CONNECTED TO A COMMON NODE.": PRINT:
  32. 320  PRINT "ONCE ALL THE ELEMENTS AND NODES ARE NUMBERED, YOU ARE READY TO ENTER
  33. 330  PRINT "YOUR NETWORK INTO TCAP.": PRINT
  34. 340  PRINT "TCAP WILL FIRST ASK WHETHER YOU WISH TO READ A FILE. TCAP ALLOWS YOU
  35. 350  PRINT "TO SAVE ON DISK CIRCUIT FILES ('S') YOU HAVE PREVIOUSLY WORKED ON. IF
  36. 360  PRINT "YOU DO NOT HAVE A PREVIOUS FILE YOU WISH TO WORK ON, TYPE 'N' OR
  37. 370  PRINT "HIT CARRIAGE RETURN AND TCAP WILL PUT YOU IN THE NEW FILE MODE. IN
  38. 380  PRINT "THE NEW FILE MODE, TCAP WILL FIRST ASK FOR THE HIGHEST NODE NUMBER."
  39. 390  PRINT "NEXT TCAP WILL ASK FOR THE NUMBER OF VOLTAGE SOURCES. IT WILL THEN
  40. 400  PRINT "ASK FOR THE NUMBER OF COMPONENTS. THIS NUMBER INCLUDES THE VOLTAGE
  41. 410  PRINT "SOURCES. YOU ARE THEN READY TO ENTER THE CIRCUIT ELEMENTS. THEY MAY
  42. 420  PRINT "BE ENTERED IN ANY ORDER. ENTER NODE AND ELEMENT VALUES SEPARATED BY
  43. 430  PRINT "COMMAS AS DIRECTED BY TCAP. FOR EXAMPLE A RESISTOR (COMPONENT TYPE #1)
  44. 440  PRINT "BETWEEN NODES 2 AND 3 OF 120 OHMS WOULD BE ENTERED AS '2,3,120'.
  45. 450  INPUT "PRESS <CR> TO CONTINUE"; Q$: PRINT
  46. 452  PRINT "SAMPLE FILES: SAMPLE-1 AND SAMPLE-2 ARE NORMALLY INCLUDED WITH TCAP
  47. 454  PRINT "TO ILLUSTRATE HOW FILES ARE CREATED. LOAD AND LIST THESE FILES WITH
  48. 456  PRINT "WITH THE 'L' FUNCTION BEFORE ATTEMPTING TO ENTER A CIRCUIT OF YOUR OWN.": PRINT
  49. 460  PRINT "TCAP INITIALLY ASSUMES CALCULATIONS ARE TO BE AT DC (0 Hz). FOR CALCULATIONS
  50. 470  PRINT "AT OTHER FREQUENCIES, THE FREQUENCY MUST BE SET WITH THE 'F' COMMAND.
  51. 480  PRINT "TCAP CAN PERFORM NODE VOLTAGE CALCULATIONS AT A SINGLE FREQUENCY OR OVER
  52. 490  PRINT "A RANGE OF FREQUENCIES (SWEEP). WHEN PERFORMING A NON-SWEEP CALCULATION,
  53. 500  PRINT "IT WILL ALWAYS RETURN TO THE LAST SINGLE FREQUENCY SPECIFIED. TCAP CAN
  54. 510  PRINT "ALSO CALCULATE OVER A 'SWEEP' OF COMPONENT VALUES WITH THE 'C' FUNCTION.
  55. 520  PRINT "AFTER A COMPONENT SWEEP CALCULATION, TCAP WILL RETURN TO THE ORIGINAL
  56. 530  PRINT "COMPONENT VALUE. TCAP ALWAYS TABULATES THE RESULTS OF A SWEEP CALCULATION,
  57. 540  PRINT "BUT IT CAN ALSO DISPLAY THESE RESULTS IN GRAPHICAL FORM.
  58. 550  PRINT: INPUT "DO YOU WANT ADDITIONAL INFORMATION ON FUNCTIONS (Y/N)"; Q$
  59. 560  IF Q$<>"Y" THEN 770 ELSE PRINT
  60. 570  PRINT "TCAP CALCULATES NODE VOLTAGES WITH THE 'V' FUNCTION. THE 'I' FUNCTION
  61. 580  PRINT "CALCULATES THE CURRENT SUPPLIED BY ALL NETWORK VOLTAGE AND CURRENT SOURCES,
  62. 590  PRINT "BUT DOES NOT CALCULATE THE CURRENT THROUGH INDIVIDUAL NETWORK ELEMENTS.
  63. 600  PRINT "TO DETERMINE THE VOLTAGE ACROSS AND THE CURRENT THROUGH AN ELEMENT
  64. 610  PRINT "(OR NETWORK BRANCH), THE 'B' COMMAND IS USED. THIS FUNCTION WILL PROVIDE
  65. 620  PRINT "THE VOLTAGES ACROSS ALL 2-TERMINAL NETWORK ELEMENTS AND THE CURRENTS
  66. 630  PRINT "THROUGH THESE ELEMENTS (EXCEPT FOR SOURCES - PROVIDED BY THE 'I' COMMAND).
  67. 640  PRINT "VOLTAGE IS DEFINED AS POSITIVE AT THE FIRST NODE RELATIVE TO THE SECOND
  68. 650  PRINT "NODE. THE 'Z' FUNCTION PROVIDES THE IMPEDANCE BETWEEN A SPECIFIED NODE AND
  69. 660  PRINT "GROUND (NODE 0) WITH ALL VOLTAGE SOURCES SHORTED AND ALL CURRENT SOURCES
  70. 670  PRINT "OPEN CIRCUITED. TO CALCULATE THE INPUT (OR OUTPUT) IMPEDANCE OF A
  71. 680  PRINT "NETWORK, DRIVE THE NETWORK WITH A 1 AMP CURRENT SOURCE. THE VOLTAGE
  72. 690  PRINT "AT THE NODE OF THE CURRENT SOURCE EQUALS THE DESIRED IMPEDANCE. THIS
  73. 700  PRINT "IMPEDANCE MAY BE PLOTTED USING THE 'F' COMMAND AND SWEEP FUNCTION.": PRINT
  74. 710  PRINT "UPTO TEN COMPONENTS (EXCLUDING VOLTAGE SOURCES) MAY BE ADDED TO
  75. 720  PRINT "A NETWORK WITH THE 'A' FUNCTION JUST AS LONG AS NO ADDITIONAL NODES
  76. 730  PRINT "ARE ADDED. 'R' AND 'D' ALLOW THE SUBSTITUTION AND DELETION OF COMPONENTS.": PRINT
  77. 740  PRINT "THE 'M' FUNCTION CAUSES TCAP TO DISPLAY THE MAGNITUDES OF VOLTAGES IN
  78. 750  PRINT "dB. A REFERENCE VOLTAGE MUST BE SUPPLIED FOR THE 20 LOG(V/VREF) CALC.
  79. 760  PRINT "THE M FUNCTION IS TURNED OFF BY ENTERING A VREF=0.
  80. 770  PRINT: INPUT "DO YOU WANT INFORMATION ON ACTIVE DEVICES (Y/N)"; Q$
  81. 780  IF Q$<>"Y" THEN 1170
  82. 790  CLS: PRINT "TCAP HAS 5 ACTIVE DEVICE MODELS: PNP, NPN AND FET TRANSISTORS, A
  83. 800  PRINT "CONTROLLED VOLTAGE SOURCE (WHICH CAN BE MADE TO ACT LIKE A TUBE) AND
  84. 810  PRINT "AN OPERATIONAL AMPLIFIER. FOR AC PROBLEMS THE PNP AND NPN MODELS ARE
  85. 820  PRINT "INDENTICAL AND CONSIST OF A .001 OHM RESISTANCE (SHORT) CONNECTED
  86. 830  PRINT "BETWEEN THE BASE AND EMITTER TERMINALS AND A CONTROLLED CURRENT
  87. 840  PRINT "SOURCE BETWEEN THE COLLECTOR AND EMITTER TERMINALS. THE CURRENT
  88. 850  PRINT "PRODUCED BY THIS CURRENT SOURCE IS THE PRODUCT OF THE CURRENT 
  89. 860  PRINT "FLOWING INTO THE BASE TERMINAL TIMES BETA. MORE COMPLEX TRANSISTOR
  90. 870  PRINT "MODELS MAY BE CREATED BY ADDING EXTRA ELEMENTS IN SERIES AND PARALLEL
  91. 880  PRINT "WITH THE DEVICE TERMINALS. FOR EXAMPLE A RESISTOR CAN BE PUT IN SERIES
  92. 890  PRINT "WITH THE BASE TERMINAL TO SIMULATE THE EFFECT OF Rie, OR IN PARALLEL
  93. 900  PRINT "WITH THE COLLECTOR/EMITTER TERMINALS TO SIMULATE THE EFFECT OF Hoe.
  94. 910  PRINT "ACTIVE DEVICES CAN ALSO BE COMBINED TO MAKE EVEN MORE COMPLEX MODELS.
  95. 920  PRINT: PRINT "IN THE DC CASE (F=0), A .7 VOLT SOURCE IS ADDED IN SERIES WITH THE
  96. 930  PRINT "BASE TERMINALS OF THE BIPOLAR TRANSISTOR MODELS, WITH THE APPROPRIATE
  97. 940  PRINT "POLARITY FOR EITHER PNP OR NPN DEVICES, AND TCAP CHECKS FOR CORRECT
  98. 950  PRINT "BIAS POLARITY. IN THE AC CASE (F>0), THE .7 VOLT BATTERY IS ELIMINATED
  99. 960  PRINT "AND ALL CIRCUIT VOLTAGE SOURCES ARE SET TO THE FREQUENCY SPECIFIED BY
  100. 970  PRINT "'F', I.E., SEPARATE CIRCUITS ARE NEEDED FOR BIAS (DC) AND AC CONDITIONS.
  101. 980  PRINT: INPUT "PRESS <CR> TO CONTINUE"; Q$: PRINT
  102. 990  PRINT "THE OPERATIONAL AMPLIFIER IS A CONTROLLED VOLTAGE SOURCE WHOSE
  103. 1000  PRINT "OUTPUT VOLTAGE IS THE PRODUCT OF THE VOLTAGE BETWEEN ITS (+) AND
  104. 1010  PRINT "(-) TERMINALS TIMES GAIN. AN OPEN CIRCUIT (2 MEGOHMS) IS PRESENT BE-
  105. 1020  PRINT "TWEEN THE (+) AND (-) TERMINALS WHICH ARE FLOATING RELATIVE TO THE
  106. 1030  PRINT "OUTPUT. THE OUTPUT VOLTAGE SOURCE HAS EFFECTIVELY A ZERO IMPEDANCE AND
  107. 1040  PRINT "IS CONNECTED TO GROUND (NODE 0). THE FET MODEL IS A CONTROLLED CURRENT
  108. 1050  PRINT "SOURCE, WHOSE OUTPUT DEPENDS ON THE VOLTAGE AT THE GATE TERMINAL TIMES MU.
  109. 1060  PRINT "IT HAS BOTH INFINITE INPUT AND OUTPUT IMPEDANCES. BOTH INPUT AND OUTPUT
  110. 1070  PRINT "TERMINALS ARE REFERENCED TO THE SOURCE NODE. DC WISE, THE FET MODEL
  111. 1080  PRINT "CAN BE CONSIDERED AN ENHANCEMENT TYPE FET, BUT NO CHECK IS MADE FOR 
  112. 1090  PRINT "CORRECT (LINEAR) BIAS CONDITIONS. THE CVS (CONTROLLED VOLTAGE SOURCE)
  113. 1100  PRINT "IS SIMILAR TO THE OP-AMP, BUT HAS BOTH INPUT AND OUTPUT VOLTAGE
  114. 1110  PRINT "REFERENCED TO ITS COMMON CATHODE NODE. IT HAS INFINITE INPUT
  115. 1120  PRINT "AND ZERO OUTPUT IMPEDANCES. TO MAKE THE CVS MODEL A VACUUM TUBE, A
  116. 1130  PRINT "LARGE RESISTOR SHOULD BE ADDED IN SERIES WITH THE PLATE NODE.
  117. 1150  PRINT: INPUT "WANT HARD COPY OF ABOVE INFORMATION (Y/N)"; Q$: IF Q$="Y" THEN GOSUB 5030
  118. 1170  CLEAR: PI=3.14159: P2=PI*2: P6=PI/180
  119. 1180  PRINT: INPUT "DO YOU WANT TO ENTER A FILE (Y/N)"; A$
  120. 1190  IF A$="Y" THEN 1630
  121. 1200  PRINT: INPUT "WHAT IS THE HIGHEST NODE NUMBER"; LS
  122. 1210  IF LS<1 OR LS<>INT(LS) THEN 1200
  123. 1220  INPUT "HOW MANY VOLTAGE SOURCES ARE IN THE CIRCUIT"; LV
  124. 1230  IF LV<0 OR LV<>INT(LV) THEN 1220 ELSE NO=LS+LV
  125. 1250  INPUT "HOW MANY COMPONENTS ARE IN THE CIRCUIT"; CT
  126. 1260  IF CT<1 OR CT<>INT(CT) THEN 1250
  127. 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)
  128. 1270  FOR CR=1 TO CT: GOSUB 2190: NEXT: GOTO 1470
  129. 1275  PRINT: PRINT "A TCAP PROGRAM ERROR HAS OCCURED": ON ERROR GOTO 1275
  130. 1280  REM******************** MENU ********************
  131. 1290  W=WB: PRINT: PRINT "FREQUENCY=" W/P2
  132. 1300  PRINT:INPUT"YOUR SELECTION (A/B/C/D/END/F/H<ELP>/I/L/M/N/R/S/V/Z)";C$
  133. 1310  IF C$="END" THEN PRINT: PRINT "END TSC CAP": END
  134. 1320  C$=LEFT$(C$,2)
  135. 1330  IF C$="A" THEN GOSUB 2180
  136. 1340  IF C$="B" THEN GOSUB 4360
  137. 1350  IF C$="N" THEN 1170
  138. 1360  IF C$="S" THEN GOSUB 1710
  139. 1370  IF C$="F" THEN GOSUB 1770
  140. 1380  IF C$="I" THEN GOSUB 4260
  141. 1390  IF C$="L" THEN GOSUB 4070
  142. 1400  IF C$="V" THEN GOSUB 2550
  143. 1410  IF C$="D" THEN GOSUB 3170
  144. 1420  IF C$="Z" THEN GOSUB 3280
  145. 1430  IF C$="R" THEN GOSUB 2160
  146. 1440  IF C$="C" THEN GOSUB 3350
  147. 1450  IF C$="M" THEN GOSUB 3210
  148. 1460  IF LEFT$(C$,1)<>"H" THEN 1290
  149. 1470  PRINT: PRINT "OPTIONS:"
  150. 1480  PRINT TAB(10), "A - ADD CIRCUIT COMPONTENT"
  151. 1490  PRINT TAB(10), "B - CALCULATE BRANCH VOLTAGES AND CURRENTS"
  152. 1500  PRINT TAB(10), "C - CHANGE AND SWEEP COMPONENT VALUE"
  153. 1510  PRINT TAB(10), "D - DELETE CIRCUIT COMPONENT"
  154. 1520  PRINT TAB(10), "F - SET OR SWEEP FREQUENCY"
  155. 1530  PRINT TAB(10), "I - CALCULATE SOURCE CURRENTS"
  156. 1540  PRINT TAB(10), "L - LIST PRESENT COMPONENTS"
  157. 1550  PRINT TAB(10), "M - VOLTAGE MAGNITUDE IN dB"
  158. 1560  PRINT TAB(10), "N - NEW CIRCUIT"
  159. 1570  PRINT TAB(10), "R - REPLACE CIRCUIT COMPONENT"
  160. 1580  PRINT TAB(10), "S - SAVE CIRCUIT FILE"
  161. 1590  PRINT TAB(10), "V - CALCULATE NODE VOLTAGES"
  162. 1600  PRINT TAB(10), "Z - CALCULATE NODE IMPEDANCE"
  163. 1610  PRINT TAB(10), "END - END SESSION": GOTO 1290
  164. 1620  REM ************ FILE LOAD ******************
  165. 1630  CLEAR:PI=3.14159:P2=PI*2:P6=PI/180:PRINT:INPUT "FILE NAME, FILES OR QUIT"; F$
  166. 1640  IF F$="FILES" THEN FILES "*.CAP": PRINT: GOTO 1630 ELSE IF F$="QUIT" THEN 1290
  167. 1650  F$=F$+".CAP": OPEN "I",#1,F$
  168. 1660  INPUT#1, CT, LS, LV: NO=LS+LV
  169. 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)
  170. 1680  FOR P=1 TO CT: INPUT#1,T(P),N1(P),N2(P),V(P),G(P): NEXT
  171. 1690  CLOSE#1: GOTO 1280
  172. 1700  REM ************ FILE SAVE ******************
  173. 1710  PRINT: INPUT "FILE NAME"; F$: F$=F$+".CAP"
  174. 1720  OPEN "O",#1,F$
  175. 1730  PRINT#1, CT, LS, LV
  176. 1740  FOR P=1 TO CT: PRINT#1,T(P),N1(P),N2(P),V(P),G(P): NEXT
  177. 1750  CLOSE#1: RETURN
  178. 1760  REM ************* FREQ SWEEP MODULE *****************
  179. 1770  PRINT: PRINT "MODES:"
  180. 1780  PRINT TAB(10), "1 - SINGLE FREQUENCY"
  181. 1790  PRINT TAB(10), "2 - LINEAR FREQUENCY SWEEP"
  182. 1800  PRINT TAB(10), "3 - LOG FREQUENCY SWEEP"
  183. 1810  PRINT: INPUT "FREQUENCY MODE"; LX
  184. 1820  IF LX<1 OR LX>3 THEN 1770
  185. 1830  IF LX>1 THEN 1860
  186. 1840  PRINT: INPUT "DESIRED FREQUENCY"; W
  187. 1850  PRINT" FREQUENCY SET TO "W" FOR ALL <B>, <I>, <V>, <Z> AND <C> CALCULATIONS": W=P2*W: WB=W: RETURN
  188. 1860  PRINT: W$="FREQUENCY": E$="FREQ"
  189. 1870  PRINT:INPUT "MIN FREQ, MAX FREQ AND # OF POINTS";F1,F2,IN
  190. 1880  IF F1>=0 AND F2>=0 AND F2>=F1 THEN 1900
  191. 1890  PRINT"IMPROPER ENTRY": GOTO 1870
  192. 1900  PRINT "WHICH NODE? ( 1 -"LS")  ";:INPUT ND
  193. 1910  IF ND>LS OR ND<1 THEN PRINT"NODES ARE FROM 1 TO"LS"ONLY.":GOTO1900
  194. 1920  IF LX=2 THEN F3=F1: F4=F2: GOTO 1940
  195. 1930  F4=LOG(F2)/LOG(10):IF F1=0 THEN F3=0 ELSE F3=LOG(F1)/LOG(10)
  196. 1940  PRINT: PRINT "WORKING";: I=0: M=IN+1: II=(F4-F3)/IN: EP=0.01*II
  197. 1950  FOR P=0 TO IN+1: FP(P)=0: FR(P)=0: FY(P)=0: FF(P)=0: NEXT P
  198. 1960  FOR FX=F3 TO F4+EP STEP II: I=I+1: PRINT I;
  199. 1970  IF LX=3 THEN IF FX<>0 THEN W=P2*10^FX ELSE W=0
  200. 1980  IF LX=2 THEN W=P2*FX
  201. 1990  IF LX=3 AND FX<>0 THEN FF(I)=10^FX ELSE FF(I)=FX
  202. 2000  GOSUB 3560: GOSUB 2740
  203. 2010  FY(I)=Y(ND,0): FR(I)=X(ND,0): NEXT FX: W=0: PRINT CHR$(26)
  204. 2020  PRINT: PRINT"VOLTAGE - "W$" TABULATION" TAB(50)F$: PRINT
  205. 2030  PRINT TAB(3) E$ TAB(14) "REAL" TAB(24) "IMAGINARY" TAB(36) "MAGNITUDE" R$ TAB(48) "PHASE ANGLE":CN=0
  206. 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)
  207. 2050  IF CN<>0 AND CN/20=INT(CN/20) THEN INPUT"PRESS <CR> TO CONTINUE"; A$
  208. 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
  209. 2065  PRINT USING "###.#^^^^  "; FF(I);
  210. 2070  PRINT USING "##.##^^^^   ";FY(I);FR(I);MG;: PRINT USING "   ####.#";K
  211. 2080  NEXT I: PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN GOSUB 6620
  212. 2090  PRINT: INPUT "WANT TO PLOT VOLTAGE (Y/N)";Q$ :IF Q$<>"Y" THEN 2110
  213. 2100  V$="V": IF RF>0 THEN NA$="VOLTAGE RATIO IN dB": GOTO 2130 ELSE NA$="VOLTAGE": GOTO 2130
  214. 2110  PRINT:INPUT"WANT TO PLOT PHASE ANGLE (Y/N)";Q$:IF Q$="Y" THEN NA$="ANGLE ":V$="P":GOTO 2130
  215. 2120  RETURN
  216. 2130  PRINT: INPUT "LINE WIDTH (TYP 80)"; LL: IF LL=0 THEN LL=80
  217. 2140  XX=LL: GOTO 4680
  218. 2150  REM *********** COMPONENT INPUT/ADD/REPLACE **************
  219. 2160  PRINT: INPUT "COMPONENT NUMBER";L
  220. 2170  IF L<=CT AND L>0 THEN ZN=L: GOTO 2210 ELSE PRINT"INVALID COMPONENT NUMBER. ENTRY IGNORED.":RETURN
  221. 2180  ZN=CT: CT=CT+1
  222. 2190  ZN=ZN+1: IF CR>1 THEN 2210
  223. 2200  PRINT: PRINT "COMPONENT SELECTION SECTION"
  224. 2210  PRINT: PRINT "1 = RESISTOR"
  225. 2220  PRINT "2 = INDUCTOR"
  226. 2230  PRINT "3 = CAPACITOR"
  227. 2240  PRINT "4 = CURRENT SOURCE"
  228. 2250  PRINT "5 = VOLTAGE SOURCE"
  229. 2260  PRINT "6 = NPN TRANSISTOR"
  230. 2270  PRINT "7 = PNP TRANSISTOR"
  231. 2280  PRINT "8 = FIELD EFFECT TRANSISTOR"
  232. 2290  PRINT "9 = CONT. VOLT. SOURCE (TUBE)
  233. 2300  PRINT "10 = OPERATIONAL AMPLIFIER": PRINT
  234. 2310  INPUT "TYPE OF CIRCUIT ELEMENT"; TY
  235. 2320  IF TY<1 OR TY>10 THEN 2210 ELSE 2380
  236. 2330  INPUT N1(ZN), N2(ZN), V(ZN)
  237. 2340  IF V(ZN)<0 THEN INPUT "ELEMENT VALUE MUST BE GREATER THAN 0, PROPER VALUE"; V(ZN)
  238. 2350  IF N1(ZN)<=LS AND N2(ZN)<=LS AND N1(ZN)>=0 AND N2(ZN)>=0 THEN RETURN
  239. 2360  PRINT "IMPROPER NODE VALUE. ENTRY IGNORED"
  240. 2370  T(ZN)=0:ZN=ZN-1:RETURN
  241. 2380  PRINT: PRINT "COMPONENT #"; ZN: PRINT
  242. 2390  T(ZN)=TY: ON TY GOTO 2400,2410,2420,2430,2460,2470,2470,2490,2500,2480
  243. 2400  PRINT"NODE A","NODE B","RESISTANCE";:GOTO 2330
  244. 2410  PRINT"NODE A","NODE B","INDUCTANCE";:GOTO 2330
  245. 2420  PRINT"NODE A","NODE B","CAPACITANCE";:GOTO 2330
  246. 2430  PRINT"- NODE","+NODE","CURRENT MAG.","PHASE ANGLE";
  247. 2440  INPUT N1(ZN), N2(ZN), V(ZN), G(ZN)
  248. 2450  IF N1(ZN)<=LS AND N2(ZN)<=LS AND N1(ZN)>=0 AND N2(ZN)>=0 THEN RETURN ELSE 2360
  249. 2460  PRINT"- NODE","+ NODE","VOLTAGE MAG.","PHASE ANGLE";:GOTO 2440
  250. 2470  PRINT"BASE NODE","EMITTER NODE","COLLECTOR NODE","BETA";:GOTO 2440
  251. 2480  PRINT"OUTPUT","- INPUT","+ INPUT","GAIN FACTOR";:GOTO 2440
  252. 2490  PRINT"GATE NODE","SOURCE NODE","DRAIN NODE","GM";:GOTO 2440
  253. 2500  PRINT"GRID NODE","CATHODE NODE","PLATE NODE","VOLTAGE GAIN";:GOTO 2440
  254. 2510  REM *************** NODE VOLTAGE CALC ****************
  255. 2520  PRINT: PRINT" NODE? (0 -"LS")  ";: INPUT ND
  256. 2530  IF ND>LS THEN PRINT"THE HIGHEST NODE NUMBER IS "LS: GOTO 2520
  257. 2540  IF ND>=0 THEN 2560
  258. 2550  PRINT:PRINT"ENTER NUMBER FROM 0-";LS;"AN ENTRY OF 0 WILL PROVIDE SOLUTION AT ALL NODES"
  259. 2551  GOTO 2520
  260. 2560  PRINT: PRINT "WORKING": GOSUB 3560: GOSUB 2740
  261. 2570  PRINT: IF C$="I" THEN PRINT F$,"CURRENT" ELSE IF C$="Z" THEN PRINT F$, "IMPEDANCE" ELSE PRINT F$, "VOLTAGE"
  262. 2580  PRINT"FREQUENCY="W/P2: PRINT
  263. 2585  IF C$="Z" THEN RK=RF: RF=0: GOSUB 3260
  264. 2590  PRINT"NODE"TAB(11)"REAL"TAB(21)"IMAGINARY"TAB(33)"MAGNITUDE"R$TAB(44)"PHASE ANGLE"
  265. 2600  IF C$="I" THEN RETURN
  266. 2610  IF ND=0 THEN 2630
  267. 2620  L=ND: GOTO 2640
  268. 2630  FOR L=1 TO LS
  269. 2640  MG=SQR(Y(L,0)^2+X(L,0)^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10)
  270. 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
  271. 2660  IF C$="I" THEN PRINT N1(LQ)"-"N2(LQ);:GOTO 2680
  272. 2670  PRINT L TAB(9);
  273. 2680  PRINT USING "##.##^^^^   "; Y(L,0); X(L,0); MG;: PRINT USING " ####.#"; PA
  274. 2690  IF L/20=INT(L/20)THEN PRINT: INPUT"PRESS <CR> TO CONTINUE";FR:PRINT
  275. 2695  IF ND<>0 THEN 2710
  276. 2700  NEXT L
  277. 2710  IF C$="I" THEN RETURN
  278. 2720  PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN GOSUB 6030
  279. 2725  IF C$="Z" THEN RF=RK: GOSUB 3260
  280. 2730  RETURN
  281. 2740  FOR L=1 TO NO: IF Y(L,L)^2+X(L,L)^2<>0 THEN 2770
  282. 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
  283. 2742  NEXT LT: IF Y(L,NO+1)^2+X(L,NO+1)^2<>0 THEN 2770 ELSE Y(L,L)=1
  284. 2770  NEXT L: FOR L=1 TO NO
  285. 2780  DE=Y(L,L)^2+X(L,L)^2: IF DE>0 OR (L=NO AND DE<>0) THEN 2860
  286. 2790  IF L=NO THEN 2830
  287. 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
  288. 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
  289. 2820  NEXT LT
  290. 2830  PRINT "ONE OF THE FOLLOWING PROBLEMS EXIST:"
  291. 2840  PRINT "(1) IMPROPER CONNECTION AT ";:IF L>LS THEN PRINT"VOLTAGE SOURCE" ELSE PRINT"NODE"L
  292. 2850  PRINT"(2) CIRCUIT WILL NOT OPERATE AT A FREQUENCY OF"W/P2" RECHECK CIRCUIT CONNECTIONS USING THE 'L' COMMAND.":PRINT:RETURN
  293. 2860  DR=Y(L,L)/DE:DI=-X(L,L)/DE
  294. 2870  FOR J=1 TO NO
  295. 2880  IF J=L THEN 2960
  296. 2890  IF ND=0 THEN 2910
  297. 2900  IF J>=L THEN 2910 ELSE IF J<>ND THEN 2960
  298. 2910  IF Y(J,L)=0 AND X(J,L)=0 THEN 2960
  299. 2920  FR=Y(J,L)*DR-X(J,L)*DI:FI=X(J,L)*DR+Y(J,L)*DI
  300. 2930  FOR P=L+1 TO NO+1
  301. 2940  TR=Y(L,P)*FR-X(L,P)*FI:TI=X(L,P)*FR+Y(L,P)*FI
  302. 2950  Y(J,P)=Y(J,P)-TR:X(J,P)=X(J,P)-TI: NEXT P
  303. 2960  NEXT J: NEXT L
  304. 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
  305. 2980  X(L,0)=(X(L,NO+1)*Y(L,L)-Y(L,NO+1)*X(L,L))/DF:NEXT L
  306. 2990  IF W<>0 THEN RETURN
  307. 3000  FOR RL=1 TO CT:IF T(RL)>5 AND T(RL)<11 THEN 3020
  308. 3010  NEXT RL: RETURN
  309. 3020  Y(0,0)=0:X(0,0)=0
  310. 3030  DP=SGN(Y(N1(RL),0))*SQR(Y(N1(RL),0)^2+X(N1(RL),0)^2)
  311. 3040  DM=SGN(Y(N2(RL),0))*SQR(Y(N2(RL),0)^2+X(N2(RL),0)^2)
  312. 3050  SP=SGN(Y(V(RL),0))*SQR(Y(V(RL),0)^2+X(V(RL),0)^2)
  313. 3060  DP=INT(1000*DP)/1000:DM=INT(1000*DM)/1000:SP=INT(1000*SP)/1000
  314. 3070  ON T(RL)-5 GOTO 3090,3130
  315. 3080  GOTO 3010
  316. 3090  IF DP>=DM+0.7 THEN 3110
  317. 3100  PRINT"BASE-EMITTER JUNCTION OF TRANSISTOR AT B="N1(RL)"E="N2(RL)"C="V(RL):GOTO 3150
  318. 3110  IF SP>=DP THEN 3010
  319. 3120  PRINT"BASE-COLLECTOR JUNCTION OF TRANSISTOR AT B="N1(RL)"E="N2(RL)"C="V(RL):GOTO 3150
  320. 3130  IF DM-0.7<DP THEN 3100
  321. 3140  IF SP>DP THEN 3120 ELSE 3010
  322. 3150  PRINT"IS REVERSE BIASED.  LINEAR CIRCUIT ANALYSIS IS NOT POSSIBLE.":RETURN
  323. 3160  REM *************** REMOVE ELEMENT *******************
  324. 3170  PRINT: INPUT "COMPONENT NUMBER";L
  325. 3180  IF L<=CT AND L>0 THEN 3190 ELSE PRINT"INVALID COMPONENT NUMBER. ENTRY IGNORED.":RETURN
  326. 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
  327. 3200  T(CT)=0:CT=CT-1:RETURN
  328. 3210  REM ************** MAG IN dB SET **********************
  329. 3220  PRINT: PRINT "ALL VOLTAGE MAGNITUDES WILL BE IN dB RELATIVE TO REFERENCE."
  330. 3230  PRINT "TO RESET TO NORMAL MODE ENTER ZERO OR CARRIAGE RETURN."
  331. 3240  INPUT "REFERENCE VOLTAGE FOR dB CALC"; RF
  332. 3250  IF RF<0 THEN PRINT: PRINT "dB REF MUST BE > 0!": GOTO 3240
  333. 3260  R$=" dB": IF RF=0 THEN R$="": RETURN ELSE RETURN
  334. 3270  REM ************** Z CALC *****************************
  335. 3280  PRINT: PRINT"IMPEDANCE AT WHICH NODE?  ( 1 -"LS")  ";:INPUT ND: IF ND<1 OR ND>LS THEN 3280
  336. 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
  337. 3300  CR=CT:FOR CT=1 TO CR
  338. 3310  IF T(CT)=5 THEN Y=1E+10:GOSUB 3650
  339. 3320  IF T(CT)<>5 THEN GOSUB 3590
  340. 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
  341. 3340  X(L,NO+1)=0:NEXT L:GOSUB 2740: GOTO 2570
  342. 3350  REM ************* CHANGE COMPONENT VALUES ***************
  343. 3360  PRINT: PRINT "VARIABLE COMPONENT MODE"
  344. 3370  W$="COMPONENT VALUE": E$="VALUE"
  345. 3380  PRINT "FREQUENCY SHOULD BE PRE-SET WITH <F> MODE <1>"
  346. 3390  PRINT: INPUT "COMPONENT # TO BE VARIED"; ZN
  347. 3400  IF ZN>CT OR ZN<1 THEN PRINT "POINT OUT OF RANGE": RETURN
  348. 3410  INPUT "MIN VALUE, MAX VALUE AND # OF POINTS"; C1,C2,IN
  349. 3420  IF C1>=0 AND C2>=0 AND C2>C1 THEN 3440
  350. 3430  PRINT "IMPROPER ENTRY": GOTO 3410
  351. 3440  PRINT "WHICH NODE? ( 1 -"LS")  ";:INPUT ND
  352. 3450  IF ND>LS OR ND<1 THEN PRINT"NODES ARE FROM 1 TO"LS"ONLY.":GOTO3440
  353. 3460  PRINT: PRINT "WORKING";: I=0: M=IN+1: EP=0.01*(C2-C1)/IN
  354. 3470  FOR P=0 TO IN+1: FP(P)=0: FR(P)=0: FY(P)=0: FF(P)=0: NEXT P
  355. 3480  IF T(ZN)<6 THEN TV=V(ZN) ELSE TV=G(ZN)
  356. 3490  FOR CX=C1 TO C2+EP STEP (C2-C1)/IN: I=I+1: PRINT I;
  357. 3500  IF T(ZN)<6 THEN V(ZN)=CX ELSE G(ZN)=CX
  358. 3510  FF(I)=CX: GOSUB 3560: GOSUB 2740
  359. 3515  FY(I)=Y(ND,0): FR(I)=X(ND,0): NEXT CX
  360. 3520  IF T(ZN)<6 THEN V(ZN)=TV ELSE G(ZN)=TV
  361. 3530  GOTO 2020
  362. 3540  REM <BACK TO FREQ SWEEP TAB MODULE> ****
  363. 3550  REM ********************* MAT **********************
  364. 3560  FOR L=1 TO NO:FOR P=1 TO NO+1:Y(L,P)=0:X(L,P)=0:NEXT P:NEXT L
  365. 3570  LP=1:CR=CT:FOR CT=1 TO CR:GOSUB 3590
  366. 3580  NEXT CT: CT=CR: RETURN
  367. 3590  ON T(CT) GOTO 3600,3620,3640,3760,3810,3840,3850,4030,4040,4000
  368. 3600  IF V(CT)=0 THEN Y=1E+10 ELSE Y=1/V(CT)
  369. 3610  X=0:GOTO 3650
  370. 3620  IF W<>0 THEN X=-1/(W*V(CT)) ELSE X=1E+10
  371. 3630  Y=0:GOTO 3650
  372. 3640  Y=0:X=W*V(CT)
  373. 3650  IF X^2+Y^2<0 AND X^2+Y^2<>0 THEN PRINT "ADMITTANCE UNDERFLOW. COMPONENT NUMBER";CT: GOTO 1290
  374. 3660  IF Y=0 THEN 3710
  375. 3670  Y(N1(CT),N1(CT))=Y(N1(CT),N1(CT))+Y
  376. 3680  Y(N1(CT),N2(CT))=Y(N1(CT),N2(CT))-Y
  377. 3690  Y(N2(CT),N1(CT))=Y(N2(CT),N1(CT))-Y
  378. 3700  Y(N2(CT),N2(CT))=Y(N2(CT),N2(CT))+Y
  379. 3710  IF X=0 THEN RETURN
  380. 3720  X(N1(CT),N1(CT))=X(N1(CT),N1(CT))+X
  381. 3730  X(N1(CT),N2(CT))=X(N1(CT),N2(CT))-X
  382. 3740  X(N2(CT),N1(CT))=X(N2(CT),N1(CT))-X
  383. 3750  X(N2(CT),N2(CT))=X(N2(CT),N2(CT))+X:RETURN
  384. 3760  Y=V(CT)*COS(P6*G(CT)):X=V(CT)*SIN(P6*G(CT))
  385. 3770  Y(N1(CT),NO+1)=Y(N1(CT),NO+1)-Y
  386. 3780  X(N1(CT),NO+1)=X(N1(CT),NO+1)-X
  387. 3790  Y(N2(CT),NO+1)=Y(N2(CT),NO+1)+Y
  388. 3800  X(N2(CT),NO+1)=X(N2(CT),NO+1)+X:RETURN
  389. 3810  Y(N1(CT),LS+LP)=Y(N1(CT),LS+LP)+1:Y(N2(CT),LS+LP)=Y(N2(CT),LS+LP)-1
  390. 3820  Y(LS+LP,N1(CT))=Y(LS+LP,N1(CT))-1:Y(LS+LP,N2(CT))=Y(LS+LP,N2(CT))+1
  391. 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
  392. 3840  DP=N1(CT):SP=V(CT):DM=N2(CT):SM=N2(CT):GOTO 3860
  393. 3850  DP=N2(CT):SP=N2(CT):DM=N1(CT):SM=V(CT)
  394. 3860  Y(SP,DP)=Y(SP,DP)+G(CT)*1000
  395. 3870  Y(SP,DM)=Y(SP,DM)-G(CT)*1000
  396. 3880  Y(SM,DM)=Y(SM,DM)+G(CT)*1000
  397. 3890  Y(SM,DP)=Y(SM,DP)-G(CT)*1000
  398. 3900  IF W<>0 THEN 3950
  399. 3910  Y(SP,NO+1)=Y(SP,NO+1)+700*G(CT)
  400. 3920  Y(SM,NO+1)=Y(SM,NO+1)-700*G(CT)
  401. 3930  Y(DP,NO+1)=Y(DP,NO+1)+700
  402. 3940  Y(DM,NO+1)=Y(DM,NO+1)-700
  403. 3950  Y=1000 :X=0: GOTO 3670
  404. 3960  Y(SP,DM)=Y(SP,DM)-G(CT)
  405. 3970  Y(SP,DP)=Y(SP,DP)+G(CT)
  406. 3980  Y(SM,DP)=Y(SM,DP)-G(CT)
  407. 3990  Y(SM,DM)=Y(SM,DM)+G(CT):RETURN
  408. 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
  409. 4010  G(CT)=G(CT)*1E+10:DP=N2(CT):SP=N1(CT):DM=V(CT):SM=0:GOSUB 3960
  410. 4020  G(CT)=G(CT)*0:RETURN
  411. 4030  DP=N1(CT):SP=V(CT):DM=N2(CT):SM=N2(CT):GOTO 3960
  412. 4040  DP=N1(CT):SP=V(CT):DM=N2(CT):SM=N2(CT): G(CT)=G(CT)*1E+10: GOSUB 3960
  413. 4050  G(CT)=G(CT)*0: Y=1E+10: X=0: NN=N1(CT): N1(CT)=V(CT): GOSUB 3670: N1(CT)=NN: RETURN
  414. 4060  REM **************** LIST CIRCUIT *******************
  415. 4070  PRINT:PRINT F$,"FREQUENCY="W/P2:PRINT
  416. 4080  PRINT"COMP."TAB(7)"NODE":PRINT"NO."TAB(7)"CONNECTION"TAB(27)"TYPE"TAB(39)"VALUE"TAB(53)"PHASE ANGLE"
  417. 4090  FOR L=1 TO CT:PRINT L;TAB(7);
  418. 4100  ON T(L) GOTO 4150,4160,4170,4180,4190,4200,4210,4230,4240,4220
  419. 4120  IF L/20=INT(L/20) THEN INPUT"PRESS <CR> TO CONTINUE";ZZ
  420. 4130  NEXT L
  421. 4135  PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN GOSUB 6170
  422. 4140  RETURN
  423. 4150  PRINT N1(L)"-"N2(L)TAB(27)"RESISTOR"TAB(39)V(L):GOTO 4120
  424. 4160  PRINT N1(L)"-"N2(L)TAB(27)"INDUCTOR"TAB(39)V(L):GOTO 4120
  425. 4170  PRINT N1(L)"-"N2(L)TAB(27)"CAPACITOR"TAB(39)V(L):GOTO 4120
  426. 4180  PRINT N1(L)"-"N2(L)TAB(27)"CURRENT"TAB(39)V(L)TAB(53)G(L):GOTO 4120
  427. 4190  PRINT N1(L);"-";N2(L);TAB(27);"VOLTAGE";TAB(39);V(L);TAB(53);G(L)
  428. 4191  GOTO 4120
  429. 4200  PRINT"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"NPN TRANS."TAB(39)" BETA="G(L):GOTO 4120
  430. 4210  PRINT"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"PNP TRANS."TAB(39)" BETA="G(L):GOTO 4120
  431. 4220  PRINT "O="N1(L)"-="N2(L)"+="V(L)TAB(27)"OP AMP"TAB(39)" GAIN="G(L):GOTO 4120
  432. 4230  PRINT"G="N1(L)"S="N2(L)"D="V(L)TAB(27)"FET TRANS."TAB(39)" GM="G(L): GOTO 4120
  433. 4240  PRINT"G="N1(L)"C="N2(L)"P="V(L)TAB(27)"CVS (TUBE)"TAB(39)" V. GAIN="G(L): GOTO 4120
  434. 4250  REM **************** CURRENT CALC *******************
  435. 4260  PRINT:PRINT "WORKING":PRINT:ND=0:GOSUB 3560:GOSUB 2740:GOSUB 2570
  436. 4280  ND=LS: FOR LQ=1 TO CT: IF T(LQ)=5 THEN ND=ND+1: GOSUB 2620
  437. 4290  NEXT LQ
  438. 4310  PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN GOSUB 6030 ELSE RETURN
  439. 4320  ND=LS: FOR LQ=1 TO CT: IF T(LQ)=5 THEN ND=ND+1: GOSUB 6080
  440. 4322  NEXT LQ: RETURN
  441. 4350  REM ********************* BRANCH V & I CALC **********
  442. 4360  PRINT:PRINT "ENTER A COMPONENT NUMBER FROM 0-"CT" ONLY TWO NODE ELEMENTS WILL BE CALCULATED.": ND=0: D=0
  443. 4370  PRINT "ENTRY OF '0' WILL PROVIDE A SOLUTION FOR ALL VALID BRANCHS."
  444. 4380  PRINT: PRINT" COMPONENT? (0-"CT")  ";: INPUT LB: CC=1: PRINT
  445. 4390  IF LB>CT THEN PRINT "THE HIGHEST ELEMENT NUMBER IS "CT: GOTO 4380
  446. 4400  IF LB<0 THEN 4360
  447. 4410  PRINT "WORKING":GOSUB 3560:GOSUB 2740
  448. 4412  IF D=0 THEN PRINT: PRINT "COMP #" TAB(11) "REAL" TAB(21) "IMAGINARY" TAB(33) "MAGNITUDE" R$ TAB(45) "PHASE ANGLE"
  449. 4413  IF D=2 THEN LPRINT: LPRINT "COMP #" TAB(11) "REAL" TAB(21) "IMAGINARY" TAB(33) "MAGNITUDE" R$ TAB(45) "PHASE ANGLE"
  450. 4415  IF D=0 THEN PRINT: PRINT "BRANCH VOLTAGE(S):"
  451. 4416  IF D=2 THEN LPRINT: LPRINT "BRANCH VOLTAGE(S):"
  452. 4420  IF LB>0 THEN LT=LB: GOTO 4440
  453. 4430  FOR LT=1 TO CT: CC=CC+1
  454. 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)
  455. 4450  IF N2(LT)=0 THEN YB=Y(N1(LT),0): XB=X(N1(LT),0)
  456. 4460  IF N1(LT)=0 THEN YB=-Y(N2(LT),0): XB=-X(N2(LT),0)
  457. 4470  MG=SQR(YB^2+XB^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10)
  458. 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
  459. 4490  IF D=0 THEN PRINT LT TAB(9);: PRINT USING "##.##^^^^   ";YB;XB;MG;: PRINT USING "####.#";PA
  460. 4492  IF D=2 THEN LPRINT LT TAB(9);: LPRINT USING "##.##^^^^   ";YB;XB;MG;: LPRINT USING "####.#";PA
  461. 4500  IF D=0 AND CC/20=INT(CC/20) THEN PRINT: INPUT"PRESS <CR> TO CONTINUE";FR: PRINT
  462. 4510  IF LB<>0 THEN 4520
  463. 4515  NEXT LT
  464. 4520  IF D=0 THEN PRINT "BRANCH CURRENT(S): (EXCLUDING SOURCES - USE 'I' COMMAND FOR SOURCES)
  465. 4522  IF D=2 THEN LPRINT "BRANCH CURRENT(S):
  466. 4530  IF LB>0 THEN 4550
  467. 4540  FOR LT=1 TO CT: CC=CC+1
  468. 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)
  469. 4560  IF N2(LT)=0 THEN YB=Y(N1(LT),0): XB=X(N1(LT),0)
  470. 4570  IF N1(LT)=0 THEN YB=-Y(N2(LT),0): XB=-X(N2(LT),0)
  471. 4580  IF T(LT)=1 THEN YB=YB/V(LT): XB=XB/V(LT)
  472. 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))
  473. 4600  IF T(LT)=3 THEN TB=YB: YB=-XB*W*V(LT): XB=TB*W*V(LT)
  474. 4610  MG=SQR(YB^2+XB^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10)
  475. 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
  476. 4630  IF D=0 THEN PRINT LT TAB(9);: PRINT USING "##.##^^^^   ";YB;XB;MG;: PRINT USING "####.#";PA
  477. 4632  IF D=2 THEN LPRINT LT TAB(9);: LPRINT USING "##.##^^^^   ";YB;XB;MG;: LPRINT USING "####.#";PA
  478. 4640  IF D=0 AND CC/20=INT(CC/20) THEN PRINT: INPUT"PRESS <CR> TO CONTINUE";FR: PRINT
  479. 4650  IF LB<>0 THEN 4654
  480. 4652  NEXT LT
  481. 4654  IF D=0 THEN PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN D=2: GOTO 4412
  482. 4660  D=0: RETURN
  483. 4670  REM ********************* PLOT ROUTEEN ************
  484. 4680  PRINT: IF LX=3 THEN PRINT"LOG FREQUENCY PLOT"; ELSE PRINT W$" PLOT";
  485. 4690  PRINT TAB(35) F$: PRINT: LF=LL-18: SN=0: SH=0: FOR I=1 TO M
  486. 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
  487. 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
  488. 4720  IF V$="V" THEN FP(I)=MG ELSE FP(I)=K
  489. 4730  IF FP(I)>SH THEN SH=FP(I)
  490. 4740  IF FP(I)<SN THEN SN=FP(I)
  491. 4745  NEXT I
  492. 4750  IF SN>0 THEN SN=0 ELSE SN=-SN
  493. 4760  IF SH<0 THEN SH=0
  494. 4770  SF=SH+SN: ZV=INT(LF*SN/SF+11)
  495. 4780  PRINT F1$ TAB(LF/2+7) NA$
  496. 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)
  497. 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
  498. 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
  499. 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
  500. 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
  501. 4840  PRINT TAB(10) -SN TAB(I3+10) -SN/2 TAB(ZV) "0" TAB(ZV+I2-1) SH/2 TAB(LF+10) SH
  502. 4850  PRINT STRING$(11,45) "+";
  503. 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
  504. 4870  IF ZV<(LF/4+11) THEN PRINT STRING$(ZV-11,45) "+" STRING$(I2-1,45) "+" STRING$(LF-ZV-I2+10,45) "+": GOTO 4900
  505. 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
  506. 4890  PRINT STRING$(I3-1,45) "+" STRING$(ZV-I3-12,45) "+" STRING$(I2-1,45) "+" STRING$(LF-ZV-I2+10,45) "+"
  507. 4900  CN=0: FOR I=1 TO M:VN=INT(LF*(SN+FP(I))/SF+11):PRINT USING "####^^^^"; FF(I);
  508. 4910  IF VN>11 THEN PRINT TAB(11)"|";
  509. 4920  IF VN=ZV THEN PRINT TAB(ZV)"*": GOTO 4950
  510. 4930  IF VN>ZV AND ZV>11 THEN PRINT TAB(ZV)"."TAB(VN)"*": GOTO 4950
  511. 4940  IF VN>ZV THEN PRINT TAB(VN)"*" ELSE PRINT TAB(VN)"*"TAB(ZV)"."
  512. 4950  IF CN<>0 AND CN/20=INT(CN/20) THEN INPUT"PRESS <CR> TO CONTINUE"; A$
  513. 4960  CN=CN+1
  514. 4970  NEXT I: PRINT: INPUT "WANT HARD COPY (Y/N)"; Q$: IF Q$="Y" THEN LL=74: GOSUB 6340
  515. 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
  516. 4990  IF V$="P" AND P$<>"Y" THEN PRINT: INPUT "WANT TO PLOT VOLTAGE (Y/N)";Q$ ELSE RETURN
  517. 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
  518. 5020  REM ********************* HARD COPY TEXT ***********************
  519. 5030  LPRINT: LPRINT "TCAP IS A PROGRAM FOR THE ANALYSIS OF ELECTRICAL CIRCUITS CONSISTING"
  520. 5040  LPRINT "OF RESISTORS, CAPACITORS, INDUCTORS AND SEVERAL COMMON ACTIVE DEVICES.
  521. 5050  LPRINT "FIRST DRAW THE CIRCUIT TO BE ANALAYZED ON A SHEET OF PAPER. ASSIGN A
  522. 5060  LPRINT "NUMBER TO EACH ELEMENT OF THE CIRCUIT. THIS IS THE COMPONENT NUMBER.
  523. 5070  LPRINT "NEXT ASSIGN A NUMBER TO EACH NETWORK NODE. A NODE IS PRESENT AT THE
  524. 5080  LPRINT "CONNECTION BETWEEN ELEMENTS. NO TWO ELEMENTS MAY BE CONNECTED WITHOUT
  525. 5090  LPRINT "A NODE BETWEEN THEM. EVERY ELEMENT MUST BEGIN AND END AT A NODE. ANY
  526. 5100  LPRINT "NUMBER OF ELEMENTS MAY BE CONNECTED TO A COMMON NODE.": LPRINT:
  527. 5110  LPRINT "ONCE ALL THE ELEMENTS AND NODES ARE NUMBERED, YOU ARE READY TO ENTER
  528. 5120  LPRINT "YOUR NETWORK INTO TCAP.": LPRINT
  529. 5130  LPRINT "TCAP WILL FIRST ASK WHETHER YOU WISH TO READ A FILE. TCAP ALLOWS YOU
  530. 5140  LPRINT "TO SAVE ON DISK CIRCUIT FILES ('S') YOU HAVE PREVIOUSLY WORKED ON. IF
  531. 5150  LPRINT "YOU DO NOT HAVE A PREVIOUS FILE YOU WISH TO WORK ON, TYPE 'N' OR
  532. 5160  LPRINT "HIT CARRIAGE RETURN AND TCAP WILL PUT YOU IN THE NEW FILE MODE. IN
  533. 5170  LPRINT "THE NEW FILE MODE, TCAP WILL FIRST ASK FOR THE HIGHEST NODE NUMBER."
  534. 5180  LPRINT "NEXT TCAP WILL ASK FOR THE NUMBER OF VOLTAGE SOURCES. IT WILL THEN
  535. 5190  LPRINT "ASK FOR THE NUMBER OF COMPONENTS. THIS NUMBER INCLUDES THE VOLTAGE
  536. 5200  LPRINT "SOURCES. YOU ARE THEN READY TO ENTER THE CIRCUIT ELEMENTS. THEY MAY
  537. 5210  LPRINT "BE ENTERED IN ANY ORDER. ENTER NODE AND ELEMENT VALUES SEPARATED BY
  538. 5220  LPRINT "COMMAS AS DIRECTED BY TCAP. FOR EXAMPLE A RESISTOR (COMPONENT TYPE #1)
  539. 5230  LPRINT "BETWEEN NODES 2 AND 3 OF 120 OHMS WOULD BE ENTERED AS '2,3,120'.": LPRINT
  540. 5240  LPRINT "TCAP INITIALLY ASSUMES CALCULATIONS ARE TO BE AT DC (0 Hz). FOR CALCULATIONS
  541. 5250  LPRINT "AT OTHER FREQUENCIES, THE FREQUENCY MUST BE SET WITH THE 'F' COMMAND.
  542. 5260  LPRINT "TCAP CAN PERFORM NODE VOLTAGE CALCULATIONS AT A SINGLE FREQUENCY OR OVER
  543. 5270  LPRINT "A RANGE OF FREQUENCIES (SWEEP). WHEN PERFORMING A NON-SWEEP CALCULATION,
  544. 5280  LPRINT "IT WILL ALWAYS RETURN TO THE LAST SINGLE FREQUENCY SPECIFIED. TCAP CAN
  545. 5290  LPRINT "ALSO CALCULATE OVER A 'SWEEP' OF COMPONENT VALUES WITH THE 'C' FUNCTION.
  546. 5300  LPRINT "AFTER A COMPONENT SWEEP CALCULATION, TCAP WILL RETURN TO THE ORIGINAL
  547. 5310  LPRINT "COMPONENT VALUE. TCAP ALWAYS TABULATES THE RESULTS OF A SWEEP CALCULATION,
  548. 5320  LPRINT "BUT IT CAN ALSO DISPLAY THESE RESULTS IN GRAPHICAL FORM.
  549. 5330  LPRINT: LPRINT "TCAP CALCULATES NODE VOLTAGES WITH THE 'V' FUNCTION. THE 'I' FUNCTION
  550. 5340  LPRINT "CALCULATES THE CURRENT SUPPLIED BY ALL NETWORK VOLTAGE AND CURRENT SOURCES,
  551. 5350  LPRINT "BUT DOES NOT CALCULATE THE CURRENT THROUGH INDIVIDUAL NETWORK ELEMENTS.
  552. 5360  LPRINT "TO DETERMINE THE VOLTAGE ACROSS AND THE CURRENT THROUGH AN ELEMENT
  553. 5370  LPRINT "(OR NETWORK BRANCH), THE 'B' COMMAND IS USED. THIS FUNCTION WILL PROVIDE
  554. 5380  LPRINT "THE VOLTAGES ACROSS ALL 2-TERMINAL NETWORK ELEMENTS AND THE CURRENTS
  555. 5390  LPRINT "THROUGH THESE ELEMENTS (EXCEPT FOR SOURCES - PROVIDED BY THE 'I' COMMAND).
  556. 5400  LPRINT "VOLTAGE IS DEFINED AS POSITIVE AT THE FIRST NODE RELATIVE TO THE SECOND
  557. 5410  LPRINT "NODE. THE 'Z' FUNCTION PROVIDES THE IMPEDANCE BETWEEN A SPECIFIED NODE AND
  558. 5420  LPRINT "GROUND (NODE 0) WITH ALL VOLTAGE SOURCES SHORTED AND ALL CURRENT SOURCES
  559. 5430  LPRINT "OPEN CIRCUITED. TO CALCULATE THE INPUT (OR OUTPUT) IMPEDANCE OF A
  560. 5440  LPRINT "NETWORK, DRIVE THE NETWORK WITH A 1 AMP CURRENT SOURCE. THE VOLTAGE
  561. 5450  LPRINT "AT THE NODE OF THE CURRENT SOURCE EQUALS THE DESIRED IMPEDANCE. THIS
  562. 5460  LPRINT "IMPEDANCE MAY BE PLOTTED USING THE 'F' COMMAND AND SWEEP FUNCTION.": LPRINT
  563. 5470  LPRINT "ANY NUMBER OF COMPONENTS (EXCLUDING VOLTAGE SOURCES) MAY BE ADDED TO
  564. 5480  LPRINT "A NETWORK WITH THE 'A' FUNCTION JUST AS LONG AS NO ADDITIONAL NODES
  565. 5490  LPRINT "ARE ADDED. 'R' AND 'D' ALLOW THE SUBSTITUTION AND DELETION OF COMPONENTS.": LPRINT
  566. 5500  LPRINT "THE 'M' FUNCTION CAUSES TCAP TO DISPLAY THE MAGNITUDES OF VOLTAGES IN
  567. 5510  LPRINT "dB. A REFERENCE VOLTAGE MUST BE SUPPLIED FOR THE 20 LOG(V/VREF) CALC.
  568. 5520  LPRINT "THE M FUNCTION IS TURNED OFF BY ENTERING A VREF=0.
  569. 5530  LPRINT CHR$(12): LPRINT "TCAP HAS 5 ACTIVE DEVICE MODELS: PNP, NPN AND FET TRANSISTORS, A
  570. 5540  LPRINT "CONTROLLED VOLTAGE SOURCE (WHICH CAN BE MADE TO ACT LIKE A TUBE) AND
  571. 5550  LPRINT "AN OPERATIONAL AMPLIFIER. FOR AC PROBLEMS THE PNP AND NPN MODELS ARE
  572. 5560  LPRINT "INDENTICAL AND CONSIST OF A .001 OHM RESISTANCE (SHORT) CONNECTED
  573. 5570  LPRINT "BETWEEN THE BASE AND EMITTER TERMINALS AND A CONTROLLED CURRENT
  574. 5580  LPRINT "SOURCE BETWEEN THE COLLECTOR AND EMITTER TERMINALS. THE CURRENT
  575. 5590  LPRINT "PRODUCED BY THIS CURRENT SOURCE IS THE PRODUCT OF THE CURRENT 
  576. 5600  LPRINT "FLOWING INTO THE BASE TERMINAL TIMES BETA. MORE COMPLEX TRANSISTOR
  577. 5610  LPRINT "MODELS MAY BE CREATED BY ADDING EXTRA ELEMENTS IN SERIES AND PARALLEL
  578. 5620  LPRINT "WITH THE DEVICE TERMINALS. FOR EXAMPLE A RESISTOR CAN BE PUT IN SERIES
  579. 5630  LPRINT "WITH THE BASE TERMINAL TO SIMULATE THE EFFECT OF Rie, OR IN PARALLEL
  580. 5640  LPRINT "WITH THE COLLECTOR/EMITTER TERMINALS TO SIMULATE THE EFFECT OF Hoe.
  581. 5650  LPRINT "ACTIVE DEVICES CAN ALSO BE COMBINED TO MAKE EVEN MORE COMPLEX MODELS.
  582. 5660  LPRINT: LPRINT "IN THE DC CASE (F=0), A .7 VOLT SOURCE IS ADDED IN SERIES WITH THE
  583. 5670  LPRINT "BASE TERMINALS OF THE BIPOLAR TRANSISTOR MODELS, WITH THE APPROPRIATE
  584. 5680  LPRINT "POLARITY FOR EITHER PNP OR NPN DEVICES, AND TCAP CHECKS FOR CORRECT
  585. 5690  LPRINT "BIAS POLARITY. IN THE AC CASE (F>0), THE .7 VOLT BATTERY IS ELIMINATED
  586. 5700  LPRINT "AND ALL CIRCUIT VOLTAGE SOURCES ARE SET TO THE FREQUENCY SPECIFIED BY
  587. 5710  LPRINT "'F', I.E., SEPARATE CIRCUITS ARE NEEDED FOR BIAS (DC) AND AC CONDITIONS.
  588. 5730  LPRINT: LPRINT "THE OPERATIONAL AMPLIFIER IS A CONTROLLED VOLTAGE SOURCE WHOSE
  589. 5740  LPRINT "OUTPUT VOLTAGE IS THE PRODUCT OF THE VOLTAGE BETWEEN ITS (+) AND
  590. 5750  LPRINT "(-) TERMINALS TIMES GAIN. AN OPEN CIRCUIT (2 MEGOHMS) IS PRESENT BE-
  591. 5760  LPRINT "TWEEN THE (+) AND (-) TERMINALS WHICH ARE FLOATING RELATIVE TO THE
  592. 5770  LPRINT "OUTPUT. THE OUTPUT VOLTAGE SOURCE HAS EFFECTIVELY A ZERO IMPEDANCE AND
  593. 5780  LPRINT "IS CONNECTED TO GROUND (NODE 0). THE FET MODEL IS A CONTROLLED CURRENT
  594. 5790  LPRINT "SOURCE, WHOSE OUTPUT DEPENDS ON THE VOLTAGE AT THE GATE TERMINAL TIMES MU.
  595. 5800  LPRINT "IT HAS BOTH INFINITE INPUT AND OUTPUT IMPEDANCES. BOTH INPUT AND OUTPUT
  596. 5810  LPRINT "TERMINALS ARE REFERENCED TO THE SOURCE NODE. DC WISE, THE FET MODEL
  597. 5820  LPRINT "CAN BE CONSIDERED AN ENHANCEMENT TYPE FET, BUT NO CHECK IS MADE FOR 
  598. 5830  LPRINT "CORRECT (LINEAR) BIAS CONDITIONS. THE CVS (CONTROLLED VOLTAGE SOURCE)
  599. 5840  LPRINT "IS SIMILAR TO THE OP-AMP, BUT HAS BOTH INPUT AND OUTPUT VOLTAGE
  600. 5850  LPRINT "REFERENCED TO ITS COMMON CATHODE NODE. IT HAS INFINITE INPUT
  601. 5860  LPRINT "AND ZERO OUTPUT IMPEDANCES. TO MAKE THE CVS MODEL A VACUUM TUBE, A
  602. 5870  LPRINT "LARGE RESISTOR SHOULD BE ADDED IN SERIES WITH THE PLATE NODE.
  603. 5880  LPRINT: LPRINT "OPTIONS:"
  604. 5890  LPRINT TAB(10), "A - ADD CIRCUIT COMPONTENT"
  605. 5900  LPRINT TAB(10), "B - CALCULATE BRANCH VOLTAGES AND CURRENTS"
  606. 5910  LPRINT TAB(10), "C - CHANGE AND SWEEP COMPONENT VALUE"
  607. 5920  LPRINT TAB(10), "D - DELETE CIRCUIT COMPONENT"
  608. 5930  LPRINT TAB(10), "F - SET OR SWEEP FREQUENCY"
  609. 5940  LPRINT TAB(10), "I - CALCULATE SOURCE CURRENTS"
  610. 5950  LPRINT TAB(10), "L - LIST PRESENT COMPONENTS"
  611. 5960  LPRINT TAB(10), "M - VOLTAGE MAGNITUDE IN dB"
  612. 5970  LPRINT TAB(10), "N - NEW CIRCUIT"
  613. 5980  LPRINT TAB(10), "R - REPLACE CIRCUIT COMPONENT": RETURN
  614. 5990  LPRINT TAB(10), "S - SAVE CIRCUIT FILE"
  615. 6000  LPRINT TAB(10), "V - CALCULATE NODE VOLTAGES"
  616. 6010  LPRINT TAB(10), "Z - CALCULATE NODE IMPEDANCE"
  617. 6020  LPRINT TAB(10), "END - END SESSION": RETURN
  618. 6025  REM *************************** HARD COPY NV, Z & I ************
  619. 6030  LPRINT: IF C$="I" THEN LPRINT F$,"CURRENT" ELSE IF C$="Z" THEN LPRINT F$, "IMPEDANCE" ELSE LPRINT F$, "VOLTAGE"
  620. 6040  LPRINT"FREQUENCY="W/P2: LPRINT
  621. 6050  LPRINT"NODE"TAB(11)"REAL"TAB(21)"IMAGINARY"TAB(33)"MAGNITUDE"R$TAB(44)"PHASE ANGLE"
  622. 6060  IF C$="I" THEN RETURN
  623. 6070  IF ND=0 THEN 6090
  624. 6080  L=ND: GOTO 6100
  625. 6090  FOR L=1 TO LS
  626. 6100  MG=SQR(Y(L,0)^2+X(L,0)^2): IF RF>0 THEN MG=20*LOG(MG/RF+0)/LOG(10)
  627. 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
  628. 6120  IF C$="I" THEN LPRINT N1(LQ)"-"N2(LQ);:GOTO 6140
  629. 6130  LPRINT L TAB(9);
  630. 6140  LPRINT USING "##.##^^^^   "; Y(L,0); X(L,0); MG;: LPRINT USING " ####.#"; PA
  631. 6160  IF ND<>0 THEN RETURN
  632. 6162  NEXT L: RETURN
  633. 6165  REM ************************ HARD COPY COMPONENT LIST ************
  634. 6170  LPRINT:LPRINT F$,"FREQUENCY="W/P2:LPRINT
  635. 6180  LPRINT"COMP."TAB(7)"NODE":LPRINT"NO."TAB(7)"CONNECTION"TAB(27)"TYPE"TAB(39)"VALUE"TAB(53)"PHASE ANGLE"
  636. 6190  FOR L=1 TO CT:LPRINT L;TAB(7);
  637. 6200  ON T(L) GOTO 6240,6250,6260,6270,6280,6290,6300,6310,6320,6330
  638. 6220  NEXT L: RETURN
  639. 6240  LPRINT N1(L)"-"N2(L)TAB(27)"RESISTOR"TAB(39)V(L):GOTO 6220
  640. 6250  LPRINT N1(L)"-"N2(L)TAB(27)"INDUCTOR"TAB(39)V(L):GOTO 6220
  641. 6260  LPRINT N1(L)"-"N2(L)TAB(27)"CAPACITOR"TAB(39)V(L):GOTO 6220
  642. 6270  LPRINT N1(L)"-"N2(L)TAB(27)"CURRENT"TAB(39)V(L)TAB(53)G(L):GOTO 6220
  643. 6280  LPRINT N1(L)"-"N2(L)TAB(27)"VOLTAGE"TAB(39)V(L)TAB(53)G(L):GOTO 6220
  644. 6290  LPRINT"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"NPN TRANS."TAB(39)" BETA="G(L):GOTO 6220
  645. 6300  LPRINT"B="N1(L)"E="N2(L)"C="V(L)TAB(27)"PNP TRANS."TAB(39)" BETA="G(L):GOTO 6220
  646. 6310  LPRINT "O="N1(L)"-="N2(L)"+="V(L)TAB(27)"OP AMP"TAB(39)" GAIN="G(L):GOTO 6220
  647. 6320  LPRINT"G="N1(L)"S="N2(L)"D="V(L)TAB(27)"FET TRANS."TAB(39)" GM="G(L): GOTO 6220
  648. 6330  LPRINT"G="N1(L)"C="N2(L)"P="V(L)TAB(27)"CVS (TUBE)"TAB(39)" V. GAIN="G(L): GOTO 6220
  649. 6335  REM *********************** HARD COPY PLOT **********************
  650. 6340  LPRINT: IF LX=3 THEN LPRINT"LOG FREQUENCY PLOT"; ELSE LPRINT W$" PLOT";
  651. 6350  LPRINT TAB(35) F$: LPRINT: LF=LL-18: SN=0: SH=0: FOR I=1 TO M
  652. 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
  653. 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
  654. 6380  IF V$="V" THEN FP(I)=MG ELSE FP(I)=K
  655. 6390  IF FP(I)>SH THEN SH=FP(I)
  656. 6400  IF FP(I)<SN THEN SN=FP(I)
  657. 6405  NEXT I
  658. 6410  IF SN>0 THEN SN=0 ELSE SN=-SN
  659. 6420  IF SH<0 THEN SH=0
  660. 6430  SF=SH+SN: ZV=INT(LF*SN/SF+11)
  661. 6440  LPRINT F1$ TAB(LF/2+7) NA$
  662. 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)
  663. 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
  664. 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
  665. 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
  666. 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
  667. 6500  LPRINT TAB(10) -SN TAB(I3+10) -SN/2 TAB(ZV) "0" TAB(ZV+I2-1) SH/2 TAB(LF+10) SH
  668. 6510  LPRINT STRING$(11,45) "+";
  669. 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
  670. 6530  IF ZV<(LF/4+11) THEN LPRINT STRING$(ZV-11,45) "+" STRING$(I2-1,45) "+" STRING$(LF-ZV-I2+10,45) "+": GOTO 6560
  671. 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
  672. 6550  LPRINT STRING$(I3-1,45) "+" STRING$(ZV-I3-12,45) "+" STRING$(I2-1,45) "+" STRING$(LF-ZV-I2+10,45) "+"
  673. 6560  CN=0: FOR I=1 TO M:VN=INT(LF*(SN+FP(I))/SF+11):LPRINT USING "####^^^^"; FF(I);
  674. 6570  IF VN>11 THEN LPRINT TAB(11)"|";
  675. 6580  IF VN=ZV THEN LPRINT TAB(ZV)"*": GOTO 6610
  676. 6590  IF VN>ZV AND ZV>11 THEN LPRINT TAB(ZV)"."TAB(VN)"*": GOTO 6610
  677. 6600  IF VN>ZV THEN LPRINT TAB(VN)"*" ELSE LPRINT TAB(VN)"*"TAB(ZV)"."
  678. 6610  NEXT I: RETURN
  679. 6615  REM ********************** HARD COPY SWEEP FUNC *******************
  680. 6620  LPRINT: LPRINT"VOLTAGE - "W$" TABULATION" TAB(50)F$: LPRINT
  681. 6630  LPRINT TAB(3) E$ TAB(14) "REAL" TAB(24) "IMAGINARY" TAB(36) "MAGNITUDE" R$ TAB(48)"PHASE ANGLE"
  682. 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)
  683. 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
  684. 6665  LPRINT USING "###.#^^^^  "; FF(I);
  685. 6670  LPRINT USING "##.##^^^^   ";FY(I);FR(I);MG;: LPRINT USING "   ####.#";K
  686. 6680  NEXT I: RETURN
  687.