home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / ee3 / tcap.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1989-01-22  |  36.7 KB  |  693 lines

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