home *** CD-ROM | disk | FTP | other *** search
/ Antennas / Antennas_CD-ROM_Walnut_Creek_September_1996.iso / net94 / basic / net94.asc < prev   
Text File  |  1996-06-30  |  17KB  |  517 lines

  1. 1 REM $DYNAMIC
  2. 2 ON ERROR GOTO 60000
  3. 3 CLS
  4. 10 PRINT " ************  NETWORK ANALYSIS 94  ************"
  5. 11 PRINT " *       SEE EDN FEB 4,1981, PP 126-133        *"
  6. 12 PRINT " *      EXTENDED BY R.B.KOLBY, FEB. 1985       *"
  7. 13 PRINT " *       AND BY R.P.HAVILAND 1986, 1994        *"
  8. 14 PRINT " ***********************************************"
  9. 15 PRINT
  10. 20 PRINT "   THIS PROGRAM ANALYZES A MULTI-MODE NETWORK"
  11. 21 PRINT "    IDENTIFY NODES BY SERIAL NUMBER"
  12. 22 PRINT "     PREPARE NODE LIST BEFORE STARTING INPUT,"
  13. 23 PRINT "      HIGHEST NODE NUMBER=SIGNAL COMMON"
  14. 24 PRINT "   VARIABLES ARE OHMS, FARADS, HENRIES, HERTZ"
  15. 25 PRINT "    USE EXPONENT FORM IN INPUT, E-3, E-6, E9, ETC."
  16. 26 PRINT
  17. 40 DEF FNP (X) = INT(X * 1000 + .5) / 1000
  18. 41 PI = 3.14159265#
  19. 42 C$ = CHR$(44)
  20. 43 SO$ = CHR$(14): SI$ = CHR$(15): PO$ = CHR$(16): ESC$ = CHR$(27)
  21. 50 P$ = " FREQ       OUT/IN          DB            PHASE          REAL         IMAG"
  22. 60 K = FRE(-1): IF K < 0 THEN K = K + 2 ^ 16
  23. 61 K = INT(K / 5) - 23
  24. 62 X = INT((SQR(169 + 24 * K) - 26) / 12) - 1: K = 0
  25. 63 COMP = 0
  26. 70 PRINT "   MAXIMUM NODES POSSIBLE WITH AVAILABLE MEMORY="; X
  27. 71 INPUT "    NUMBER OF NODES TO ANALYZE, 0=FROM FILE"; Y
  28. 80 IF Y = 0 GOTO 3100
  29. 90 IF Y > X THEN 70
  30. 100 IF Y < X THEN X = Y
  31. 110 INPUT "   ENTER NAME OF NET TO ANALYZE"; NA$
  32. 120 INPUT "    ENTER REFERENCE DATE AS DDMMYY"; DA$
  33. 140 DIM A(X, X), B(X, X), P(X, X), Q(X, X), R(X, X), S(X, X), A$(22)
  34. 150 DIM I(2 * X), L(2 * X), M(2 * X), N(2 * X), O(2 * X), T(2 * X), Z(2 * X)
  35. 160 IF X > 5 THEN PRINT "  WAIT FOR ARRAY SET-UP"
  36. 180 FOR J = 1 TO X
  37. 190 FOR I = 1 TO X
  38. 200 P(I, J) = 0
  39. 210 Q(I, J) = 0
  40. 220 R(I, J) = 0
  41. 230 S(I, J) = 0
  42. 240 NEXT I
  43. 250 NEXT J
  44. 260 N = 0
  45. 270 NODES = X: X = 1: T(X) = 0
  46. 300 A$(1) = "  RESISTOR"
  47. 305 A$(2) = "  CAPACITOR"
  48. 310 A$(3) = "  INDUCTOR"
  49. 315 A$(4) = "  TRANSMISSION LINE"
  50. 320 A$(5) = "  SORTED STUB"
  51. 325 A$(6) = "  OPEN STUB"
  52. 330 A$(7) = "  OP-AMP"
  53. 335 A$(8) = "  NPN TRANSISTOR"
  54. 340 A$(9) = "  FET"
  55. 345 A$(10) = " TRIODE"
  56. 350 A$(11) = " TETRODE, PENTODE"
  57. 355 A$(12) = " STOP"
  58. 360 A$(13) = " ANALYZE NETWORK"
  59. 365 A$(14) = " SET PRINTER MODE"
  60. 370 A$(15) = " LOAD NETWORK FROM DISK"
  61. 375 A$(16) = " SAVE NETWORK TO DISK"
  62. 376 A$(17) = " RERUN PROGRAM"
  63. 377 A$(18) = " REPEAT ANALYSIS"
  64. 400 PRINT
  65. 410 CLS : PRINT
  66. 411 PRINT "    COMPONENT TO ENTER"; TAB(30); "  ACTION TO TAKE"
  67. 412 FOR K = 1 TO 11
  68. 413 PRINT K; A$(K);
  69. 414 IF K + 11 > 18 THEN PRINT : GOTO 416
  70. 415 PRINT TAB(30); K + 11; A$(K + 11)
  71. 416 NEXT K
  72. 420 PRINT : R6 = 0: INPUT " ENTER COMPONENT 1-11 OR ACTION 12-17"; R6
  73. 421 IF R6 < 1 OR R6 > 18 THEN 420
  74. 422 IF R6 > 11 THEN 429
  75. 423 IF S$ <> "Y" THEN 429
  76. 424 COMP = COMP + 1
  77. 425 LPRINT "COMPONENT #"; COMP; ", ";
  78. 429 CLS
  79. 430 ON R6 GOTO 730, 810, 770, 560, 690, 710, 990, 880, 840, 6000, 6200
  80. 440 ON (R6 - 11) GOTO 61010, 1060, 8000, 3000, 3500, 3010, 1059
  81. 450 GOTO 420
  82. 560 T(X) = 1: INPUT " SHIELD INPUT END NODE #="; M(X)
  83. 570 INPUT "  CENTER INPUT NODE #="; I(X): INPUT "   CENTER OUTPUT NODE #="; O(X)
  84. 580 INPUT "   SHIELD OUTPUT NODE #="; N(X)
  85. 585 IF S$ = "Y" THEN LPRINT "  TLINE CENTER IN="; I(X); "  CENTER OUT="; O(X)
  86. 586 IF S$ = "Y" THEN LPRINT "        SHIELD IN="; M(X); "  SHIELD OUT="; N(X)
  87. 587 GOTO 610
  88. 590 INPUT "NODE A="; M(X)
  89. 600 INPUT "NODE B="; N(X)
  90. 610 INPUT "ZO="; Z(X)
  91. 620 INPUT " FREQUENCY AT WHICH LINE IS A QUARTER WAVE LONG"; L(X)
  92. 625 IF S$ = "Y" THEN LPRINT , "A="; M(X); "  B="; N(X); "  ZO="; Z(X); "  LENGTH="; L(X)
  93. 630 IF I(X) > N THEN N = I(X)
  94. 640 IF M(X) > N THEN N = M(X)
  95. 650 IF N(X) > N THEN N = N(X)
  96. 660 IF O(X) > N THEN N = O(X)
  97. 670 X = X + 1: T(X) = 0
  98. 680 GOTO 410
  99. 690 T(X) = 3:
  100. 691 IF S$ = "Y" THEN LPRINT "SHORTED-STUB";
  101. 692 GOTO 590
  102. 710 T(X) = 2
  103. 711 IF S$ = "Y" THEN LPRINT "OPEN-STUB";
  104. 712 GOTO 590
  105. 730 INPUT " RESISTANCE, OHMS="; V: INPUT "  END A NODE="; I: INPUT "   END B NODE="; J
  106. 735 IF S$ = "Y" THEN LPRINT "RESISTOR="; V; "OHMS,  A END="; I; "  B END="; J
  107. 740 V = 1 / V
  108. 750 GOSUB 1430
  109. 760 GOTO 410
  110. 770 INPUT " L,HENRIES="; V: INPUT "  END A NODE="; I: INPUT "   END B NODE="; J
  111. 775 IF S$ = "Y" THEN LPRINT "INDUCTOR="; V; "HENRIES,  A END="; I; "  B END="; J
  112. 780 V = 1 / V
  113. 790 GOSUB 1360
  114. 800 GOTO 410
  115. 810 INPUT " C FARADS="; V: INPUT "  END A NODE="; I: INPUT "   END B NODE="; J
  116. 815 IF S$ = "Y" THEN LPRINT "CAPACITOR="; V; "FARADS,  A END="; I; "  B END="; J
  117. 820 GOSUB 1480
  118. 830 GOTO 410
  119. 840 INPUT " GATE NODE="; K: INPUT "  SOURCE NODE="; J: INPUT "   DRAIN NODE="; I
  120. 850 INPUT "    FET GAIN, MHOS="; V: L = J
  121. 855 IF S$ = "Y" THEN LPRINT "FET GAIN="; V, " GATE="; K, " SOURCE="; J, " DRAIN="; I
  122. 860 GOSUB 1530
  123. 870 GOTO 410
  124. 880 INPUT " BASE NODE="; K: INPUT "  EMITTER NODE="; J
  125. 881 INPUT "   COLLECTOR NODE="; I
  126. 890 INPUT " BETA="; R5
  127. 891 INPUT "  EMITTER  CURRENT, * MILLAMPERES * ="; ECUR
  128. 892 RD = 26 / ECUR 
  129. 893 PRINT "  NPN BASE RESISTANCE="; RD
  130. 894 V= RD*(R5+1)
  131. 895 IF S$ = "Y" THEN LPRINT "NPN BASE RESISTANCE="; RD; "  NPN BETA="; R5
  132. 896 IF S$ = "Y" THEN LPRINT "  BASE,EMITTER,COLLECTOR="; K; C$; J; C$; I
  133. 900 V = 1 / V
  134. 910 L = I
  135. 920 I = K
  136. 930 GOSUB 1430
  137. 940 I = L
  138. 950 L = J
  139. 960 V = V * R5
  140. 970 GOSUB 1530
  141. 971 INPUT " PRESS RETURN TO CONTINUE"; C$
  142. 980 GOTO 410
  143. 990 INPUT " OPAMP +IN NODE="; K: INPUT "       -IN NODE="; L
  144. 991 INPUT "       -OUT NODE="; I: INPUT "        +OUT NODE="; J
  145. 1000 INPUT " GAIN="; R5: INPUT "  OUT RESISTANCE="; V
  146. 1005 IF S$ = "Y" THEN LPRINT " OPAMP GAIN="; R5, " ROUT="; V
  147. 1006 IF S$ = "Y" THEN LPRINT " +,-INPUT NODES="; K; C$; L
  148. 1007 IF S$ = "Y" THEN LPRINT " +,-OUTPUT NODES="; J; C$; I
  149. 1010 V = 1 / V
  150. 1020 GOSUB 1430
  151. 1030 V = V * R5
  152. 1040 GOSUB 1530
  153. 1050 GOTO 410
  154. 1059 IF M > 0 THEN N = N - 1: GOTO 1093
  155. 1060 INPUT " SIGNAL INPUT NODE="; E: INPUT "   SIGNAL OUTPUT NODE="; F: N = N - 1
  156. 1070 INPUT "  ENTER START, STOP FREQUENCIES,HZ"; G, H
  157. 1080 INPUT "   ENTER # DATA POINTS"; M: IF M <= 2 THEN M = 2
  158. 1090 INPUT "    ENTER 0=LOG,1=LINEAR FREQ.SCALE"; FS
  159. 1891 INPUT " SAVE OUTPUT DATA FILE, Y/N"; Q$
  160. 1092 IF Q$ = "Y" THEN GOSUB 7000
  161. 1093 CLS
  162. 1094 PRINT , "FILE "; NA$; " OF "; DA$
  163. 1095 PRINT , " INPUT NODE="; E, "  OUTPUT NODE="; F
  164. 1096 PRINT P$
  165. 1100 D = (H - G) / (M - 1)
  166. 1110 R4 = EXP(LOG(H / G) / (M - 1))
  167. 1120 R0 = G: R9 = 0
  168. 1130 R9 = R9 + 1
  169. 1140 W = 2 * PI * R0
  170. 1150 O = E: Z = F
  171. 1160 GOSUB 2470
  172. 1170 GOSUB 2200
  173. 1180 V = R5: U = Z
  174. 1190 IF (E + F) / 2 = INT((E + F) / 2) THEN 1210
  175. 1200 U = U - 180
  176. 1210 O = E: Z = E
  177. 1220 GOSUB 2200
  178. 1230 U = U - Z
  179. 1240 IF V = 0 THEN R7 = -999: GOTO 1270
  180. 1250 IF R5 = 0 THEN R7 = 9999: GOTO 1270
  181. 1260 V = V / R5: R7 = 8.68589 * LOG(V)
  182. 1270 IF U > 180 THEN U = U - 360
  183. 1280 IF U < -180 THEN U = U + 360
  184. 1281 REAL = V * COS(U / 57.29578)
  185. 1282 IMG = V * SIN(U / 57.27578)
  186. 1290 PRINT USING "##.###^^^^"; R0; : PRINT TAB(13); FNP(V); TAB(26); FNP(R7);
  187. 1291 PRINT TAB(39); FNP(U); TAB(52); FNP(REAL); TAB(65); FNP(IMG)
  188. 1300 IF H$ = "Y" THEN LPRINT USING "##.###^^^^"; R0; : LPRINT TAB(13); FNP(V);
  189. 1301 IF H$ = "Y" THEN LPRINT TAB(26); FNP(R7); TAB(39); FNP(U);
  190. 1302 IF H$ = "Y" THEN LPRINT TAB(52); FNP(REAL); TAB(65); FNP(IMG)
  191. 1303 IF Q$ = "Y" THEN PRINT #4, USING "##.##^^^^"; R0;
  192. 1304 IF Q$ = "Y" THEN PRINT #4, FNP(V), FNP(R7), FNP(U), FNP(REAL), FNP(IMG)
  193. 1305 IF Z$ = "Y" THEN LPRINT USING "##.##^^^^"; R0; : LPRINT TAB(12);
  194. 1306 IF Z$ = "Y" THEN LPRINT FNP(V), FNP(R7), FNP(REAL), FNP(IMG)
  195. 1308 IF G$ = "Y" THEN GOSUB 9500 'PRINT GRAPHS
  196. 1310 IF FS = 0 THEN R0 = R0 * R4
  197. 1320 IF FS <> 0 THEN R0 = R0 + D
  198. 1330 IF R9 <> M THEN 1130
  199. 1340 N = N + 1
  200. 1350 PRINT " PRESS RETURN TO CONTINUE"
  201. 1351 INPUT C$
  202. 1352 IF Q$ = "Y" THEN CLOSE 4: Q$ = "N"
  203. 1353 IF G$ = "Y" THEN GOSUB 9070: LPRINT : LPRINT
  204. 1354 IF H$ = "Y" OR S$ = "Y" OR Z$ = "Y" THEN LPRINT : LPRINT
  205. 1355 GOTO 410
  206. 1360 R(I, I) = R(I, I) + V' IND
  207. 1370 R(J, J) = R(J, J) + V
  208. 1380 R(I, J) = R(I, J) - V
  209. 1390 R(J, I) = R(J, I) - V
  210. 1400 IF I > N THEN N = I
  211. 1410 IF J > N THEN N = J
  212. 1420 RETURN
  213. 1430 P(I, I) = P(I, I) + V 'RES, NPN
  214. 1440 P(J, J) = P(J, J) + V
  215. 1450 P(I, J) = P(I, J) - V
  216. 1460 P(J, I) = P(J, I) - V
  217. 1470 GOTO 1400
  218. 1480 Q(I, I) = Q(I, I) + V 'CAP
  219. 1490 Q(J, J) = Q(J, J) + V
  220. 1500 Q(I, J) = Q(I, J) - V
  221. 1510 Q(J, I) = Q(J, I) - V
  222. 1520 GOTO 1400
  223. 1530 P(I, K) = P(I, K) + V 'FET, NPN
  224. 1540 P(J, L) = P(J, L) + V
  225. 1550 P(J, K) = P(J, K) - V
  226. 1560 P(I, L) = P(I, L) - V
  227. 1570 IF K > N THEN N = K
  228. 1580 IF L > K THEN N = L
  229. 1590 GOTO 1400
  230. 1600 IF N > 1 THEN 1630     'COMP
  231. 1610 O = A(1, 1): Z = B(1, 1)
  232. 1620 RETURN
  233. 1630 O = 1
  234. 1640 Z = 0
  235. 1650 K = 1
  236. 1660 L = K
  237. 1670 S = ABS(A(K, K)) + ABS(B(K, K))
  238. 1680 I = K - 1
  239. 1690 I = I + 1
  240. 1700 T = ABS(A(I, K)) + ABS(B(I, K))
  241. 1710 IF S >= T THEN 1730
  242. 1720 L = I: S = T
  243. 1730 IF I <> N THEN 1690
  244. 1740 IF L = K THEN 1800
  245. 1750 J = 0
  246. 1760 J = J + 1
  247. 1770 S = -A(K, J): A(K, J) = A(L, J): A(L, J) = S
  248. 1780 A = -B(K, J): B(K, J) = B(L, J): B(L, J) = A
  249. 1790 IF J <> N THEN 1760
  250. 1800 L = K + 1: I = L - 1
  251. 1810 I = I + 1
  252. 1820 A = A(K, K) * A(K, K) + B(K, K) * B(K, K)
  253. 1830 S = (A(I, K) * A(K, K) + B(I, K) * B(K, K)) / A
  254. 1840 B(I, K) = (A(K, K) * B(I, K) - A(I, K) * B(K, K)) / A
  255. 1850 A(I, K) = S
  256. 1860 IF I <> N THEN 1810
  257. 1870 C = K - 1
  258. 1880 IF C = 0 THEN 1960
  259. 1890 J = L - 1
  260. 1900 J = J + 1: I = 0
  261. 1910 I = I + 1
  262. 1920 A(K, J) = A(K, J) - A(K, I) * A(I, J) + B(K, I) * B(I, J)
  263. 1930 B(K, J) = B(K, J) - B(K, I) * A(I, J) - A(K, I) * B(I, J)
  264. 1940 IF C <> I THEN 1910
  265. 1950 IF J <> N THEN 1900
  266. 1960 C = K
  267. 1970 K = K + 1: I = K - 1
  268. 1980 I = I + 1: J = 0
  269. 1990 J = J + 1
  270. 2000 A(I, K) = A(I, K) - A(I, J) * A(J, K) + B(I, J) * B(J, K)
  271. 2010 B(I, K) = B(I, K) - B(I, J) * A(J, K) - A(I, J) * B(J, K)
  272. 2020 IF J <> C THEN 1990
  273. 2030 IF I <> N THEN 1980
  274. 2040 IF K <> N THEN 1660
  275. 2050 L = 1
  276. 2060 C = INT(N / 2)
  277. 2070 IF N = 2 * C THEN 2100
  278. 2080 L = 0
  279. 2090 O = A(N, N): Z = B(N, N)
  280. 2100 I = 0
  281. 2110 I = I + 1
  282. 2120 J = N - I + L
  283. 2130 S = A(I, I) * A(J, J) - B(I, I) * B(J, J)
  284. 2140 A = A(I, I) * B(J, J) + A(J, J) * B(I, I)
  285. 2150 T = O * S - Z * A
  286. 2160 Z = Z * S + O * A
  287. 2170 O = T
  288. 2180 IF I <> C THEN 2110
  289. 2190 RETURN
  290. 2200 R5 = N       'DETERMINANT
  291. 2210 N = N - 1
  292. 2220 I = 0
  293. 2230 K = 0
  294. 2240 K = K + 1
  295. 2250 IF K <> O THEN 2270
  296. 2260 I = 1
  297. 2270 J = 0: L = 0
  298. 2280 L = L + 1
  299. 2290 IF L <> Z THEN 2310
  300. 2300 J = 1
  301. 2310 A(K, L) = P(K + I, L + J)
  302. 2320 B(K, L) = W * Q(K + I, L + J) - R(K + I, L + J) / W + S(K + I, L + J)
  303. 2330 IF L <> N THEN 2280
  304. 2340 IF K <> N THEN 2240
  305. 2350 GOSUB 1600
  306. 2360 N = R5
  307. 2370 R5 = SQR(O * O + Z * Z)
  308. 2380 Y = Z
  309. 2390 IF O = 0 THEN 2450
  310. 2400 Z = 180 / PI * ATN(Z / O)
  311. 2410 IF O > 0 THEN RETURN
  312. 2420 Z = Z + SGN(Y) * 180
  313. 2430 IF Y = 0 THEN Z = 180
  314. 2440 RETURN
  315. 2450 Z = 90 * SGN(Y)
  316. 2460 RETURN
  317. 2470 IF T(1) = 0 THEN RETURN
  318. 2480 X = 0
  319. 2490 R1 = 0
  320. 2500 R1 = R1 + 1: R2 = 0
  321. 2510 R2 = R2 + 1
  322. 2520 S(R1, R2) = 0
  323. 2530 IF R2 <> N + 1 THEN 2510
  324. 2540 IF R1 <> N + 1 THEN 2500
  325. 2550 X = X + 1
  326. 2560 IF X > 20 THEN RETURN
  327. 2570 IF T(X) = 0 THEN RETURN
  328. 2580 IF T(X) = 1 THEN 2640
  329. 2590 IF T(X) = 2 THEN 2830
  330. 2600 R1 = -1 / (Z(X) * TAN(.25 * W / L(X)))
  331. 2610 Q = M(X): R = N(X)
  332. 2620 GOSUB 2870
  333. 2630 GOTO 2550
  334. 2640 R1 = -1 / (Z(X) * TAN(.25 * W / L(X)))
  335. 2650 Q = M(X): R = I(X)
  336. 2660 GOSUB 2870
  337. 2670 Q = N(X): R = O(X): GOSUB 2870
  338. 2680 R1 = 1 / (Z(X) * SIN(.25 * W / L(X)))
  339. 2690 P = I(X)
  340. 2700 R = N(X)
  341. 2710 S(R, P) = S(R, P) - R1
  342. 2720 S(P, R) = S(P, R) - R1
  343. 2730 R = O(X)
  344. 2740 S(R, P) = S(R, P) + R1
  345. 2750 S(P, R) = S(P, R) + R1
  346. 2760 P = M(X)
  347. 2770 S(R, P) = S(R, P) - R1
  348. 2780 S(P, R) = S(P, R) - R1
  349. 2790 R = N(X)
  350. 2800 S(R, P) = S(R, P) + R1
  351. 2810 S(P, R) = S(P, R) + R1
  352. 2820 GOTO 2550
  353. 2830 R2 = 1 / (Z(X) * TAN(.25 * W / L(X)))
  354. 2840 R3 = 1 / (Z(X) * SIN(.25 * W / L(X)))
  355. 2850 R1 = R3 * R3 / R2 - R2
  356. 2860 GOTO 2610
  357. 2870 S(Q, Q) = S(Q, Q) + R1
  358. 2880 S(R, R) = S(R, R) + R1
  359. 2890 S(Q, R) = S(Q, R) - R1
  360. 2900 S(R, Q) = S(R, Q) - R1
  361. 2910 RETURN
  362. 2920 STOP
  363. 3000 PRINT "  *** WARNING- ALL ARRAYS WILL BE ERASED ***"
  364. 3010 INPUT "   CONTINUE, OR RETURN TO MENU FOR SAVE, Y/N"; T$
  365. 3020 IF T$ <> "Y" THEN RETURN
  366. 3030 ERASE A, B, P, Q, R, S, T, I, M, N, O, L, Z, A$
  367. 3040 IF R6 = 17 THEN GOTO 2
  368. 3100 INPUT " NAME OF FILE TO LOAD, .NET IS ADDED (*.*=DIR)"; FAN$
  369. 3110 INPUT "  FILEPATH FOR LOAD, INCLUDE ANY : AND \"; FAP$
  370. 3120 IF FAN$ <> "*.*" THEN 3200
  371. 3130 FILES (FAP$ + FAN$)
  372. 3140 GOTO 3100
  373. 3200 OPEN FAP$ + FAN$ + ".NET" FOR INPUT AS #2
  374. 3210 INPUT #2, X, N
  375. 3220 DIM A(X, X), B(X, X), P(X, X), Q(X, X), R(X, X), S(X, X), A$(22)
  376. 3230 DIM I(2 * X), L(2 * X), M(2 * X), N(2 * X), O(2 * X), T(2 * X), Z(2 * X)
  377. 3300 FOR J = 1 TO X
  378. 3310 INPUT #2, I(J), T(J), M(J), N(J), O(J), L(J), Z(J)
  379. 3320 FOR K = 1 TO X
  380. 3330 INPUT #2, A(J, K), B(J, K), P(J, K), Q(J, K), R(J, K), S(J, K)
  381. 3340 NEXT K
  382. 3450 NEXT J
  383. 3400 INPUT #2, NA$, DA$
  384. 3410 CLOSE 2
  385. 3420 NODES = X
  386. 3430 GOTO 270
  387. 3500 INPUT " NAME OF FILE TO SAVE, .NET IS ADDED "; FAN$
  388. 3510 INPUT "  FILEPATH FOR SAVE, INCLUDE ANY : AND \"; FAP$
  389. 3520 D$ = CHR$(13)
  390. 3530 OPEN FAP$ + FAN$ + ".NET" FOR OUTPUT AS #2
  391. 3550 PRINT #2, NODES; C$; N
  392. 3600 FOR J = 1 TO NODES
  393. 3610 PRINT #2, I(J); C$; T(J); C$; M(J); C$; N(J); C$; O(J); C$; L(J); C$; Z(J)
  394. 3620 FOR K = 1 TO NODES
  395. 3630 PRINT #2, A(J, K); C$; B(J, K); C$; P(J, K); C$; Q(J, K); C$; R(J, K); C$; S(J, K)
  396. 3640 NEXT K
  397. 3650 NEXT J
  398. 3700 PRINT #2, NA$
  399. 3710 PRINT #2, DA$
  400. 3720 CLOSE 2
  401. 3730 GOTO 410
  402. 4000 PRINT " SPARE ": GOTO 410
  403. 5000 PRINT " SPARE ": GOTO 410
  404. 6000 IF S$ = "Y" THEN LPRINT " TRIODE"
  405. 6010 INPUT " GRID NODE="; K
  406. 6020 IF S$ = "Y" THEN LPRINT " GRID NODE="; K
  407. 6030 INPUT "  PLATE NODE="; I
  408. 6040 IF S$ = "Y" THEN LPRINT "  PLATE NODE="; I
  409. 6050 INPUT "   CATHODE NODE="; J
  410. 6060 IF S$ = "Y" THEN LPRINT "   CATHODE NODE="; J: L = J
  411. 6070 INPUT " TRIODE MU-FACTOR="; MU
  412. 6080 IF S$ = "Y" THEN LPRINT " TRIODE MU-FACTOR="; MU
  413. 6090 INPUT "  PLATE RESISTANCE, OHMS="; PRES
  414. 6100 IF S$ = "Y" THEN LPRINT "  PLATE RESISTANCE, OHMS="; PRES
  415. 6110 V = MU / PRES
  416. 6120 GOSUB 1530
  417. 6130 V = 1 / PRES
  418. 6140 GOSUB 1430
  419. 6150 GOTO 410
  420. 6200 IF S$ = "Y" THEN LPRINT "TETRODE,PENTODE"
  421. 6210 INPUT " CONTROL GRID NODE="; K
  422. 6220 IF S$ = "Y" THEN LPRINT " CONTROL GRID NODE="; K
  423. 6230 INPUT "  PLATE NODE="; I
  424. 6240 IF S$ = "Y" THEN LPRINT "  PLATE NODE="; I
  425. 6250 INPUT "   CATHODE NODE="; J: L = J
  426. 6260 IF S$ = "Y" THEN LPRINT "   CATHODE NODE="; J
  427. 6270 INPUT " TRANSCONDUCTANCE, MHOS, ="; V
  428. 6280 IF S$ = "Y" THEN LPRINT " TRANSCONDUCTANCE, MHOS, ="; V
  429. 6290 INPUT "  PLATE RESISTANCE, OHMS="; PRES
  430. 6300 IF S$ = "Y" THEN LPRINT "  PLATE RESISTANCE, OHMS="; PRES
  431. 6310 GOSUB 1530
  432. 6320 V = 1 / PRES
  433. 6330 GOSUB 1430
  434. 6340 GOTO 410
  435. 7000 PRINT " OUTPUT DATA WILL SAVED AS "; NA$; "+.OUT"
  436. 7010 INPUT "  ENTER FILEPATH TO USE, INCLUDE ANY : AND \"; OFP$
  437. 7020 OPEN OFP$ + NA$ + ".OUT" FOR OUTPUT AS #4
  438. 7030 RETURN
  439. 8000 PRINT " SELECT PRINTER MODE"
  440. 8010 PRINT "   1= OUTPUT TABLE ON"
  441. 8020 PRINT "   2=        TABLE OFF"
  442. 8030 PRINT "   3= OUTPUT GRAPH ON"
  443. 8040 PRINT "   4=        GRAPH OFF"
  444. 8050 PRINT "   5= REAL/IMAG TABLE ON"
  445. 8060 PRINT "   6=           TABLE OFF"
  446. 8070 PRINT "   7= COMPONENT LIST ON"
  447. 8080 PRINT "   8=           LIST OFF"
  448. 8090 INPUT T$
  449. 8100 LPRINT SI$
  450. 8110 LPRINT ESC$; "Q"; CHR$(120)
  451. 8200 IF T$ = "1" THEN H$ = "Y": G$ = "N": Z$ = "N": S$ = "N": GOSUB 9400
  452. 8210 IF T$ = "2" THEN H$ = "N"
  453. 8220 IF T$ = "3" THEN G$ = "Y": Z$ = "N": S$ = "N": H$ = "N": GOSUB 9000
  454. 8230 IF T$ = "4" THEN G$ = "N"
  455. 8240 IF T$ = "5" THEN Z$ = "Y": G$ = "N": H$ = "N": S$ = "N": GOSUB 9300
  456. 8250 IF T$ = "6" THEN Z$ = "N"
  457. 8260 IF T$ = "7" THEN S$ = "Y": H$ = "N": G$ = "N": Z$ = "N": GOSUB 9200
  458. 8270 IF T$ = "8" THEN S$ = "N"
  459. 8300 GOTO 410
  460. 9000 LPRINT "          FILE "; NA$; "  OF DATE "; DA$
  461. 9010 LPRINT : LPRINT , "INPUT NODE="; E, "OUTPUT NODE="; F
  462. 9020 LPRINT : LPRINT P$: LPRINT
  463. 9030 LPRINT "GAIN(*)   -40       DB       -20        DB        0";
  464. 9040 LPRINT "       DB        +20"
  465. 9050 LPRINT "ANGLE(+) -180            DEG           0";
  466. 9060 LPRINT "              DEG           180"
  467. 9070 LPRINT : LPRINT "           ";
  468. 9071 FOR B = 1 TO 6
  469. 9072 FOR BB = 1 TO 9
  470. 9073 LPRINT "+";
  471. 9074 NEXT BB
  472. 9075 LPRINT "X";
  473. 9076 NEXT B
  474. 9077 LPRINT
  475. 9080 RETURN
  476. 9200 LPRINT
  477. 9210 LPRINT " COMPONENT CONNECTION LIST FOR "; NA$; " OF "; DA$
  478. 9220 LPRINT
  479. 9230 RETURN
  480. 9300 LPRINT "          FILE "; NA$; "  OF DATE "; DA$
  481. 9310 LPRINT : LPRINT , "INPUT NODE="; E, "OUTPUT NODE="; F
  482. 9320 LPRINT : LPRINT
  483. 9330 LPRINT "FREQUENCY      OUT/IN      ANGLE          REAL         IMAG."
  484. 9340 RETURN
  485. 9400 LPRINT "          FILE "; NA$; "  OF DATE "; DA$
  486. 9410 LPRINT : LPRINT , "INPUT NODE="; E, "OUTPUT NODE="; F
  487. 9420 LPRINT : LPRINT P$: LPRINT
  488. 9430 RETURN
  489. 9500 T1 = LOG(R0) / LOG(10): T1 = INT(T1)
  490. 9510 T2 = R0 / 10 ^ T1: T2 = INT(1000 * T2 + .00000001#) / 1000
  491. 9520 T$ = STR$(T2) + " E" + STR$(T1)
  492. 9530 LPRINT T$;
  493. 9540 LPRINT TAB(12); "|";
  494. 9550 Y1 = R7 + 52: Y1 = INT(Y1)
  495. 9560 Q$ = "*": QQ$ = "+"
  496. 9570 IF Y1 < 13 THEN Y1 = 13: Q$ = "<"
  497. 9580 IF Y1 > 80 THEN Y1 = 80: Q$ = ">"
  498. 9590 Y2 = U / 6 + 42: Y2 = INT(Y2): IF Y2 < 13 THEN Y2 = 13: QQ$ = "^"
  499. 9595 IF Y1 = Y2 THEN LPRINT TAB(Y1); "%": GOTO 9670
  500. 9600 IF Y1 > Y2 THEN 9650
  501. 9610 LPRINT TAB(Y1); Q$;
  502. 9630 LPRINT TAB(Y2); QQ$;
  503. 9640 GOTO 9670
  504. 9650 LPRINT TAB(Y2); QQ$;
  505. 9660 LPRINT TAB(Y1); Q$;
  506. 9670 LPRINT TAB(0);
  507. 9680 RETURN
  508. 60000 PRINT "   ERROR "; ERR; " AT LINE "; ERL
  509. 60010 IF ERL = 3240 THEN PRINT " FILE NOT FOUND": RESUME 3000
  510. 60020 IF ERL = 3540 THEN PRINT " FILE CREATION FAILURE": RESUME 3500
  511. 60030 IF ERR = 9 THEN PRINT " NODE ENTRY ERROR": GOTO 410
  512. 60040 IF ERR = 7 THEN PRINT " TOO MANY NODES- REDUCE #, OR INCREASE MEMORY"
  513. 60050 RESUME 411
  514. 61000 LPRINT ESC$; "@"
  515. 61010 STOP
  516.  
  517.