home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / design2 / net85.asc < prev    next >
Text File  |  1986-10-27  |  15KB  |  516 lines

  1. 10 ' *** NET*85 ***
  2. 20 ' SEE EDN FEB 4, 1981 PP 126-133
  3. 30 ' TRANSLATED TO MICROSOFT BASIC BY R.B. KOLBLY
  4. 35 ' DISK FILES FOR SAVING AND RESTORING NETWORKS ADDED
  5. 36 ' DATA FILE OUTPUT CAPABILITY ADDED
  6. 40 ' GOLDEN RULE SYSTEMS - FEBRUARY 22,1985
  7. 50 P$="FREQ= ##.####^^^^  AMPL= ##.##^^^^  20LOG= ####.#  PHASE= ####.#"
  8. 60 K=INT(FRE(A)/4)-23
  9. 70 X=INT((SQR(169+24*K)-26)/12)-1
  10. 80 PRINT USING "You have a maximum of ## Nodes Available";X
  11. 90 INPUT "Number of Nodes Desired (CR=10)";Y
  12. 100 IF X>=10 AND Y=0 THEN X=10:GOTO 140
  13. 110 IF X<10 AND Y=0 THEN X=Y:GOTO 140
  14. 120 IF Y>X THEN 170
  15. 130 IF Y<X THEN X=Y
  16. 140 DIM A(X,X),B(X,X),P(X,X),Q(X,X),R(X,X)
  17. 150 DIM S(X,X),I(2*X)
  18. 160 DIM T(2*X),M(2*X),N(2*X),O(2*X),L(2*X),Z(2*X)
  19. 170 PRINT USING "You have selected a maximum of ## nodes";X
  20. 180 FOR J=1 TO X
  21. 190 FOR I=1 TO X
  22. 200 P(I,J)=0
  23. 210 Q(I,J)=0
  24. 220 R(I,J)=0
  25. 230 S(I,J)=0
  26. 240 NEXT I
  27. 250 NEXT J
  28. 260 NODES=X:X=1:T(X)=0
  29. 270 N=0
  30. 280 PRINT "1 - Resistor                   11 - Analyze Network"
  31. 290 PRINT "2 - Capacitor                  12 - Enable/Disable Printer"
  32. 300 PRINT "3 - Inductor                   13 - Restore Network from Disk"
  33. 310 PRINT "4 - Transmission Line          14 - Save Network to Disk"
  34. 320 PRINT "5 - Shorted Stub               15 - Generate ASCII Network File"
  35. 330 PRINT "6 - Open Stub                  16 - Load Network from ASCII File"
  36. 340 PRINT "7 - Operational Amplifier      17 -"
  37. 350 PRINT "8 - NPN Transistor             18 -"
  38. 360 PRINT "9 - Field-effect Transistor    19 -"
  39. 370 PRINT "                          10 - End "
  40. 410 PRINT
  41. 420 R6=0:INPUT "Select from list (<CR> for Menu)";R6
  42. 430 IF R6=1 THEN PRINT "(1) Resistor":GOTO 730
  43. 440 IF R6=2 THEN PRINT "(2) Capacitor":GOTO 810
  44. 450 IF R6=3 THEN PRINT "(3) Inductor":GOTO 770
  45. 460 IF R6=4 THEN PRINT "(4) Transmission Line":GOTO 560
  46. 470 IF R6=5 THEN PRINT "(5) Shorted Stub":GOTO 690
  47. 480 IF R6=6 THEN PRINT "(6) Open Stub":GOTO 710
  48. 490 IF R6=7 THEN PRINT "(7) Op Amp":GOTO 990
  49. 500 IF R6=8 THEN PRINT "(8) NPN Transistor":GOTO 880
  50. 510 IF R6=9 THEN PRINT "(9) FET Transistor":GOTO 840
  51. 520 IF R6=10 THEN PRINT "(10) Program Finish":CLS:END
  52. 530 IF R6=11 THEN PRINT "(11) Analysis":GOTO 1060
  53. 540 IF R6=12 THEN INPUT "(12) Hardcopy Output (Y/N)";H$:GOTO 4700
  54. 541 IF R6=13 THEN PRINT "(13) Restore Network from Disk":GOTO 3000
  55. 542 IF R6=14 THEN PRINT "(14) Save Network to Disk":GOTO 3500
  56. 543 IF R6=15 THEN PRINT "(15) Generate ASCII Network File":GOTO 5000
  57. 544 IF R6=16 THEN PRINT "(16) Load Network from ASCII File":GOTO 4000
  58. 550 GOTO 280
  59. 560 T(X)=1:INPUT "Shield in";M(X):REM *** TRANSMISSION LINE ***
  60. 570 INPUT "Center in";I(X):INPUT "Center out";O(X)
  61. 580 INPUT "Shield out";N(X):GOTO 610
  62. 590 INPUT "Node A";M(X)
  63. 600 INPUT "Node B";N(X)
  64. 610 INPUT "Z0";Z(X)
  65. 620 INPUT "Quarter-wave Frequency (Hz)";L(X)
  66. 630 IF I(X)>N THEN N=I(X)
  67. 640 IF M(X)>N THEN N=M(X)
  68. 650 IF N(X)>N THEN N=N(X)
  69. 660 IF O(X)>N THEN N=O(X)
  70. 670 X=X+1:T(X)=0
  71. 680 GOTO 420
  72. 690 T(X)=3: REM *** SHORTED STUB ***
  73. 700 GOTO 590
  74. 710 T(X)=2: REM *** OPEN STUB ***
  75. 720 GOTO 590
  76. 730 INPUT "Node A";I:INPUT "Node B";J:INPUT "Resistance (Ohms)";V
  77. 740 V=1/V
  78. 750 GOSUB 1430
  79. 760 GOTO 420
  80. 770 INPUT "Node A";I:INPUT "Node B";J:INPUT "Inductance (H)";V
  81. 780 V=1/V
  82. 790 GOSUB 1360
  83. 800 GOTO 420
  84. 810 INPUT "Node A";I:INPUT "Node B";J:INPUT "Capacitance (Farads)";V
  85. 820 GOSUB 1480
  86. 830 GOTO 420
  87. 840 INPUT "Gate";K:INPUT "Source";J:INPUT "Drain";I:INPUT "Gaim(Mho)";V
  88. 850 L=J
  89. 860 GOSUB 1530
  90. 870 GOTO 420
  91. 880 INPUT "Base";K:INPUT "Emitter";J:INPUT "Collector";I:INPUT "Beta";R5
  92. 890 INPUT "Rbe (Ohms)";V
  93. 900 V=1/V
  94. 910 L=I
  95. 920 I=K
  96. 930 GOSUB 1430
  97. 940 I=L
  98. 950 L=J
  99. 960 V=V*R5
  100. 970 GOSUB 1530
  101. 980 GOTO 420
  102. 990 INPUT "+In";K:INPUT "-In";L:INPUT "-Out";I:REM *** OP-AMP ***
  103. 1000 INPUT "+Out";J:INPUT "Gain(Vo/Vi)";R5:INPUT "Output Resistance(Ohms)";V
  104. 1010 V=1/V
  105. 1020 GOSUB 1430
  106. 1030 V=V*R5
  107. 1040 GOSUB 1530
  108. 1050 GOTO 420
  109. 1060 INPUT "Input Node";E:INPUT "Output Node";F:N=N-1
  110. 1070 INPUT "Start,Stop Frequencies (Hz)";G,H
  111. 1080 INPUT "# of Data Points";M
  112. 1090 INPUT "Frequency Sweep (0 for log, 1 for linear)";R6
  113. 1091 PFG=0:INPUT "Do you want output data files";Q$:Q$=LEFT$(Q$,1)
  114. 1092 IF Q$="Y" OR Q$="y" THEN GOSUB 7000
  115. 1093 IF H$<>"Y" THEN GOTO 1100
  116. 1094 IF LEN(H$)=0 THEN GOTO 1100
  117. 1095 LPRINT:LPRINT TOP$:LPRINT
  118. 1100 D=(H-G)/(M-1)
  119. 1110 R4=EXP(LOG(H/G)/(M-1))
  120. 1120 R0=G:R9=0
  121. 1130 R9=R9+1
  122. 1140 W=2*3.14159*R0
  123. 1150 O=E:Z=F
  124. 1160 GOSUB 2470
  125. 1170 GOSUB 2200
  126. 1180 V=R5:U=Z
  127. 1190 IF (E+F)/2=INT((E+F)/2) THEN 1210
  128. 1200 U=U-180
  129. 1210 O=E:Z=E
  130. 1220 GOSUB 2200
  131. 1230 U=U-Z
  132. 1240 IF V=0 THEN R7=-999:GOTO 1270
  133. 1250 IF R5=0 THEN R7=9999:GOTO 1270
  134. 1260 V=V/R5:R7=8.68589*LOG(V)
  135. 1270 IF U>180 THEN U=U-360
  136. 1280 IF U<-180 THEN U=U+360
  137. 1290 PRINT USING P$;R0,V,R7,U
  138. 1300 IF H$="Y" THEN LPRINT USING P$;R0,V,R7,U
  139. 1302 IF PFG=0 THEN GOTO 1310
  140. 1304 GOSUB 7200
  141. 1310 IF R6=0 THEN R0=R0*R4
  142. 1320 IF R6<>0 THEN R0=R0+D
  143. 1330 IF R9<>M THEN 1130
  144. 1340 N=N+1
  145. 1350 CLOSE:GOTO 420
  146. 1360 R(I,I)=R(I,I)+V:REM INDL
  147. 1370 R(J,J)=R(J,J)+V
  148. 1380 R(I,J)=R(I,J)-V
  149. 1390 R(J,I)=R(J,I)-V
  150. 1400 IF I>N THEN N=I
  151. 1410 IF J>N THEN N=J
  152. 1420 RETURN
  153. 1430 P(I,I)=P(I,I)+V:REM RESL
  154. 1440 P(J,J)=P(J,J)+V
  155. 1450 P(I,J)=P(I,J)-V
  156. 1460 P(J,I)=P(J,I)-V
  157. 1470 GOTO 1400
  158. 1480 Q(I,I)=Q(I,I)+V
  159. 1490 Q(J,J)=Q(J,J)+V:REM CAPL
  160. 1500 Q(I,J)=Q(I,J)-V
  161. 1510 Q(J,I)=Q(J,I)-V
  162. 1520 GOTO 1400
  163. 1530 P(I,K)=P(I,K)+V:REM TRANS
  164. 1540 P(J,L)=P(J,L)+V
  165. 1550 P(J,K)=P(J,K)-V
  166. 1560 P(I,L)=P(I,L)-V
  167. 1570 IF K>N THEN N=K
  168. 1580 IF L>K THEN N=L
  169. 1590 GOTO 1400
  170. 1600 IF N>1 THEN 1630: REM COMP
  171. 1610 O=A(1,1):Z=B(1,1)
  172. 1620 RETURN
  173. 1630 O=1
  174. 1640 Z=0
  175. 1650 K=1
  176. 1660 L=K
  177. 1670 S=ABS(A(K,K))+ABS(B(K,K))
  178. 1680 I=K-1
  179. 1690 I=I+1
  180. 1700 T=ABS(A(I,K))+ABS(B(I,K))
  181. 1710 IF S>=T THEN 1730
  182. 1720 L=I:S=T
  183. 1730 IF I<>N THEN 1690
  184. 1740 IF L=K THEN 1800
  185. 1750 J=0
  186. 1760 J=J+1
  187. 1770 S=-A(K,J):A(K,J)=A(L,J):A(L,J)=S
  188. 1780 A=-B(K,J):B(K,J)=B(L,J):B(L,J)=A
  189. 1790 IF J<>N THEN 1760
  190. 1800 L=K+1:I=L-1
  191. 1810 I=I+1
  192. 1820 A=A(K,K)*A(K,K)+B(K,K)*B(K,K)
  193. 1830 S=(A(I,K)*A(K,K)+B(I,K)*B(K,K))/A
  194. 1840 B(I,K)=(A(K,K)*B(I,K)-A(I,K)*B(K,K))/A
  195. 1850 A(I,K)=S
  196. 1860 IF I<>N THEN 1810
  197. 1870 C=K-1
  198. 1880 IF C=0 THEN 1960
  199. 1890 J=L-1
  200. 1900 J=J+1:I=0
  201. 1910 I=I+1
  202. 1920 A(K,J)=A(K,J)-A(K,I)*A(I,J)+B(K,I)*B(I,J)
  203. 1930 B(K,J)=B(K,J)-B(K,I)*A(I,J)-A(K,I)*B(I,J)
  204. 1940 IF C<>I THEN 1910
  205. 1950 IF J><N THEN 1900
  206. 1960 C=K
  207. 1970 K=K+1:I=K-1
  208. 1980 I=I+1:J=0
  209. 1990 J=J+1
  210. 2000 A(I,K)=A(I,K)-A(I,J)*A(J,K)+B(I,J)*B(J,K)
  211. 2010 B(I,K)=B(I,K)-B(I,J)*A(J,K)-A(I,J)*B(J,K)
  212. 2020 IF J<>C THEN 1990
  213. 2030 IF I<>N THEN 1980
  214. 2040 IF K<>N THEN 1660
  215. 2050 L=1
  216. 2060 C=INT(N/2)
  217. 2070 IF N=2*C THEN 2100
  218. 2080 L=0
  219. 2090 O=A(N,N):Z=B(N,N)
  220. 2100 I=0
  221. 2110 I=I+1
  222. 2120 J=N-I+L
  223. 2130 S=A(I,I)*A(J,J)-B(I,I)*B(J,J)
  224. 2140 A=A(I,I)*B(J,J)+A(J,J)*B(I,I)
  225. 2150 T=O*S-Z*A
  226. 2160 Z=Z*S+O*A
  227. 2170 O=T
  228. 2180 IF I<>C THEN 2110
  229. 2190 RETURN
  230. 2200 R5=N:REM DET
  231. 2210 N=N-1
  232. 2220 I=0
  233. 2230 K=0
  234. 2240 K=K+1
  235. 2250 IF K<>O THEN 2270
  236. 2260 I=1
  237. 2270 J=0:L=0
  238. 2280 L=L+1
  239. 2290 IF L<>Z THEN 2310
  240. 2300 J=1
  241. 2310 A(K,L)=P(K+I,L+J)
  242. 2320 B(K,L)=W*Q(K+I,L+J)-R(K+I,L+J)/W+S(K+I,L+J)
  243. 2330 IF L<>N THEN 2280
  244. 2340 IF K<>N THEN 2240
  245. 2350 GOSUB 1600
  246. 2360 N=R5
  247. 2370 R5=SQR(O*O+Z*Z)
  248. 2380 Y=Z
  249. 2390 IF O=0 THEN 2450
  250. 2400 Z=180/3.14159*ATN(Z/O)
  251. 2410 IF O>0 THEN RETURN
  252. 2420 Z=Z+SGN(Y)*180
  253. 2430 IF Y=0 THEN Z=180
  254. 2440 RETURN
  255. 2450 Z=90*SGN(Y)
  256. 2460 RETURN
  257. 2470 IF T(1)=0 THEN RETURN
  258. 2480 X=0
  259. 2490 R1=0
  260. 2500 R1=R1+1:R2=0
  261. 2510 R2=R2+1
  262. 2520 S(R1,R2)=0
  263. 2530 IF R2<>N+1 THEN 2510
  264. 2540 IF R1<>N+1 THEN 2500
  265. 2550 X=X+1
  266. 2560 IF X>20 THEN RETURN
  267. 2570 IF T(X)=0 THEN RETURN
  268. 2580 IF T(X)=1 THEN 2640
  269. 2590 IF T(X)=2 THEN 2830
  270. 2600 R1=-1/(Z(X)*TAN(.25*W/L(X)))
  271. 2610 Q=M(X):R=N(X)
  272. 2620 GOSUB 2870
  273. 2630 GOTO 2550
  274. 2640 R1=-1/(Z(X)*TAN(.25*W/L(X)))
  275. 2650 Q=M(X):R=I(X)
  276. 2660 GOSUB 2870
  277. 2670 Q=N(X):R=O(X):GOSUB 2870
  278. 2680 R1=1/(Z(X)*SIN(.25*W/L(X)))
  279. 2690 P=I(X)
  280. 2700 R=N(X)
  281. 2710 S(R,P)=S(R,P)-R1
  282. 2720 S(P,R)=S(P,R)-R1
  283. 2730 R=O(X)
  284. 2740 S(R,P)=S(R,P)+R1
  285. 2750 S(P,R)=S(P,R)+R1
  286. 2760 P=M(X)
  287. 2770 S(R,P)=S(R,P)-R1
  288. 2780 S(P,R)=S(P,R)-R1
  289. 2790 R=N(X)
  290. 2800 S(R,P)=S(R,P)+R1
  291. 2810 S(P,R)=S(P,R)+R1
  292. 2820 GOTO 2550
  293. 2830 R2=1/(Z(X)*TAN(.25*W/L(X)))
  294. 2840 R3=1/(Z(X)*SIN(.25*W/L(X)))
  295. 2850 R1=R3*R3/R2-R2
  296. 2860 GOTO 2610
  297. 2870 S(Q,Q)=S(Q,Q)+R1
  298. 2880 S(R,R)=S(R,R)+R1
  299. 2890 S(Q,R)=S(Q,R)-R1
  300. 2900 S(R,Q)=S(R,Q)-R1
  301. 2910 RETURN
  302. 2920 END
  303. 3000 INPUT "Name of File to load <CR> for Directory";F$:' LOAD FROM FILE
  304. 3010 IF LEN(F$)=0 THEN FILES:GOTO 3000
  305. 3020 IF F$="B:" THEN FILES "B:*.*":GOTO 3000
  306. 3030 IF F$="A:" THEN FILES "A:*.*":GOTO 3000
  307. 3040 OPEN "I",#1,F$
  308. 3050 INPUT #1,X
  309. 3060 ERASE A,B,P,Q,R,S,I,T,M,N,O,L,Z
  310. 3070 DIM A(X,X),B(X,X),P(X,X),Q(X,X),R(X,X)
  311. 3080 DIM S(X,X),I(2*X)
  312. 3090 DIM T(2*X),M(2*X),N(2*X),O(2*X),L(2*X),Z(2*X)
  313. 3095 INPUT #1,N
  314. 3100 FOR J=1 TO X
  315. 3110 INPUT #1,I(J),T(J),M(J),N(J),O(J),L(J),Z(J)
  316. 3120 FOR K=1 TO X
  317. 3130 INPUT #1,A(J,K),B(J,K),P(J,K),Q(J,K),R(J,K),S(J,K)
  318. 3140 NEXT K
  319. 3150 NEXT J
  320. 3160 CLOSE #1
  321. 3170 NODES=X:GOTO 420
  322. 3500 INPUT "Name of file to save <CR> for Directory";F$:' SAVE INTO FILE
  323. 3510 IF LEN(F$)=0 THEN FILES:GOTO 3500
  324. 3520 IF F$="B:" THEN FILES "B:*.*":GOTO 3500
  325. 3530 IF F$="A:" THEN FILES "A:*.*":GOTO 3500
  326. 3540 OPEN "O",#1,F$
  327. 3550 PRINT #1,NODES,N
  328. 3600 FOR J=1 TO NODES
  329. 3610 PRINT #1,I(J),T(J),M(J),N(J),O(J),L(J),Z(J)
  330. 3620 FOR K=1 TO NODES
  331. 3630 PRINT #1,A(J,K),B(J,K),P(J,K),Q(J,K),R(J,K),S(J,K)
  332. 3640 NEXT K
  333. 3650 NEXT J
  334. 3660 CLOSE #1
  335. 3670 GOTO 420
  336. 4000 INPUT "Name of file to load <cr> for directory";F$
  337. 4010 IF LEN(F$)=0 THEN FILES:GOTO 4000
  338. 4020 OPEN "I",#1,F$
  339. 4030 IF EOF(1) THEN CLOSE:GOTO 420
  340. 4035 R6$="":INPUT #1,R6$:R6$=LEFT$(R6$,1)
  341. 4040 IF R6$="1" THEN GOTO 4320
  342. 4050 IF R6$="2" THEN GOTO 4400
  343. 4060 IF R6$="3" THEN GOTO 4360
  344. 4070 IF R6$="4" THEN GOTO 4150
  345. 4080 IF R6$="5" THEN GOTO 4280
  346. 4090 IF R6$="6" THEN GOTO 4300
  347. 4100 IF R6$="7" THEN GOTO 4580
  348. 4110 IF R6$="8" THEN GOTO 4470
  349. 4120 IF R6$="9" THEN GOTO 4430
  350. 4130 IF EOF(1) THEN 420
  351. 4140 GOTO 4030
  352. 4150 T(X)=1:INPUT #1,M$:M(X)=VAL(M$):REM *** TRANSMISSION LINE ***
  353. 4160 INPUT #1,I$:I(X)=VAL(I$):INPUT #1,O$:O(X)=VAL(O$)
  354. 4170 INPUT #1,N$:N(X)=VAL(N$):GOTO 4200
  355. 4180 INPUT #1,M$:M(X)=VAL(M$)
  356. 4190 INPUT #1,N$:N(X)=VAL(N$)
  357. 4200 INPUT #1,Z$:Z(X)=VAL(Z$)
  358. 4210 INPUT #1,L$:L(X)=VAL(L$)
  359. 4220 IF I(X)>N THEN N=I(X)
  360. 4230 IF M(X)>N THEN N=M(X)
  361. 4240 IF N(X)>N THEN N=N(X)
  362. 4250 IF O(X)>N THEN N=O(X)
  363. 4260 X=X+1:T(X)=0
  364. 4270 GOTO 4030
  365. 4280 T(X)=3: REM *** SHORTED STUB ***
  366. 4290 GOTO 4180
  367. 4300 T(X)=2: REM *** OPEN STUB ***
  368. 4310 GOTO 4180
  369. 4320 INPUT #1,I$:I=VAL(I$):INPUT #1,J$:J=VAL(J$):INPUT #1,V$:V=VAL(V$)
  370. 4330 V=1/V
  371. 4340 GOSUB 1430
  372. 4350 GOTO 4030
  373. 4360 INPUT #1,I$:I=VAL(I$):INPUT #1,J$:J=VAL(J$):INPUT #1,V$:V=VAL(V$)
  374. 4370 V=1/V
  375. 4380 GOSUB 1360
  376. 4390 GOTO 4030
  377. 4400 INPUT #1,I$:I=VAL(I$):INPUT #1,J$:J=VAL(J$):INPUT #1,V$:V=VAL(V$)
  378. 4410 GOSUB 1480
  379. 4420 GOTO 4030
  380. 4430 INPUT #1,K$:K=VAL(K$):INPUT #1,J$:J=VAL(J$):INPUT #1,I$:I=VAL(I$):INPUT #1,V$:V=VAL(V$)
  381. 4440 L=J
  382. 4450 GOSUB 1530
  383. 4460 GOTO 4030
  384. 4470 INPUT "BASE";K:INPUT #1,J$:J=VAL(J$):INPUT #1,I$:I=VAL(I$):INPUT #1,R$:R5=VAL(R$)
  385. 4480 INPUT #1,V$:V=VAL(V$)
  386. 4490 V=1/V
  387. 4500 L=I
  388. 4510 I=K
  389. 4520 GOSUB 1430
  390. 4530 I=L
  391. 4540 L=J
  392. 4550 V=V*R5
  393. 4560 GOSUB 1530
  394. 4570 GOTO 4030
  395. 4580 INPUT #1,K$:K=VAL(K$):INPUT #1,L$:L=VAL(L$):INPUT #1,I$:I=VAL(I$)
  396. 4590 INPUT #1,J$:J=VAL(J$):INPUT #1,R$:R5=VAL(R$):INPUT #1,V$:V=VAL(V$)
  397. 4600 V=1/V
  398. 4610 GOSUB 1430
  399. 4620 V=V*R5
  400. 4630 GOSUB 1530
  401. 4640 GOTO 4030
  402. 4700 H$=LEFT$(H$,1)
  403. 4710 IF H$="y" THEN H$="Y"
  404. 4720 IF H$<>"Y" THEN GOTO 420
  405. 4730 LINE INPUT "Header for hardcopy output? ";TOP$
  406. 4740 GOTO 420
  407. 5000 INPUT "Name of file (<cr> for Directory)";F$
  408. 5010 IF LEN(F$)=0 THEN FILES:GOTO 5000
  409. 5020 OPEN "O",#1,F$
  410. 5200 PRINT "1   RESISTOR"
  411. 5210 PRINT "2   CAPACITOR"
  412. 5220 PRINT "3   INDUCTOR"
  413. 5230 PRINT "4   TRANSMISSION LINE"
  414. 5240 PRINT "5   SHORTED STUB"
  415. 5250 PRINT "6   OPEN STUB"
  416. 5260 PRINT "7   OPERATIONAL AMPLIFIER"
  417. 5270 PRINT "8   NPN TRANSISTOR"
  418. 5280 PRINT "9   FIELD-EFFECT TRANSISTOR"
  419. 5290 PRINT "10  STOP"
  420. 5360 R6=0:INPUT "SELECT FROM LIST";R6:R6$=STR$(R6)
  421. 5370 IF R6=1 THEN PRINT "(1) RESISTOR":GOTO 5690
  422. 5380 IF R6=2 THEN PRINT "(2) CAPACITOR":GOTO 5770
  423. 5390 IF R6=3 THEN PRINT "(3) INDUCTOR":GOTO 5730
  424. 5400 IF R6=4 THEN PRINT "(4) TRANSMISSION LINE":GOTO 5520
  425. 5410 IF R6=5 THEN PRINT "(5) SHORTED STUB":GOTO 5650
  426. 5420 IF R6=6 THEN PRINT "(6) OPEN STUB":GOTO 5670
  427. 5430 IF R6=7 THEN PRINT "(7) OP AMP":GOTO 5950
  428. 5440 IF R6=8 THEN PRINT "(8) NPN TRANSISTOR":GOTO 5840
  429. 5450 IF R6=9 THEN PRINT "(9) FET TRANSISTOR":GOTO 5800
  430. 5460 IF R6=10 THEN PRINT "(10) FILE COMPLETED":CLOSE #1:GOTO 420
  431. 5510 GOTO 5360
  432. 5520 INPUT "SHIELD IN";M$:REM *** TRANSMISSION LINE ***
  433. 5530 INPUT "CENTER IN";I$:INPUT "CENTER OUT";O$
  434. 5531 PRINT #1,R6$+" * TRANSMISSION LINE"
  435. 5532 PRINT #1,M$
  436. 5533 PRINT #1,I$
  437. 5534 PRINT #1,O$
  438. 5540 INPUT "SHIELD OUT";N$:PRINT #1,N$:GOTO 5570
  439. 5550 INPUT "NODE A";M$:PRINT #1,M$
  440. 5560 INPUT "NODE B";N$:PRINT #1,N$
  441. 5570 INPUT "Z0";Z$:PRINT #1,Z$
  442. 5580 INPUT "QUARTER-WAVE FREQUENCY (HZ)";L$:PRINT #1,L$
  443. 5640 GOTO 5360
  444. 5650 REM *** SHORTED STUB ***
  445. 5655 PRINT #1,R6$+" * SHORTED STUB"
  446. 5660 GOTO 5550
  447. 5670 PRINT #1,R6$+" * OPEN STUB":REM *** OPEN STUB ***
  448. 5680 GOTO 5550
  449. 5690 INPUT "NODE A";I$:INPUT "NODE B";J$:INPUT "RESISTANCE (OHMS)";V$
  450. 5700 PRINT #1,R6$+" * RESISTOR"
  451. 5702 PRINT #1,I$
  452. 5704 PRINT #1,J$
  453. 5706 PRINT #1,V$
  454. 5720 GOTO 5360
  455. 5730 INPUT "NODE A";I$:INPUT "NODE B";J$:INPUT "INDUCTANCE (H)";V$
  456. 5740 PRINT #1,R6$+" * INDUCTOR"
  457. 5742 PRINT #1,I$
  458. 5744 PRINT #1,J$
  459. 5746 PRINT #1,V$
  460. 5760 GOTO 5360
  461. 5770 INPUT "NODE A";I$:INPUT "NODE B";J$:INPUT "CAPACITANCE (FARADS)";V$
  462. 5775 PRINT #1,R6$+" * CAPACITOR"
  463. 5790 GOTO 5742
  464. 5800 INPUT "GATE";K$:INPUT "SOURCE";J$:INPUT "DRAIN";I$:INPUT "GAIN(MHO)";V$
  465. 5810 PRINT #1,R6$+" * FET"
  466. 5812 PRINT #1,K$
  467. 5814 PRINT #1,J$
  468. 5816 PRINT #1,I$
  469. 5818 PRINT #1,V$
  470. 5830 GOTO 5360
  471. 5840 INPUT "BASE";K$:INPUT "EMITTER";J$:INPUT "COLLECTOR";I$:INPUT "BETA";R5$
  472. 5850 INPUT "Rbe (OHMS)";V$
  473. 5860 PRINT #1,R6$+" * NPN TRANSISTOR"
  474. 5861 PRINT #1,K$
  475. 5862 PRINT #1,J$
  476. 5863 PRINT #1,I$
  477. 5864 PRINT #1,R5$
  478. 5865 PRINT #1,V$
  479. 5940 GOTO 5360
  480. 5950 INPUT "+IN";K$:INPUT "-IN";L$:INPUT "-OUT";I$:REM *** OP-AMP ***
  481. 5960 INPUT "+OUT";J$:INPUT "GAIN(V/V)";R5$:INPUT "OUTPUT RESISTANCE(OHMS)";V$
  482. 5970 PRINT #1,R6$+" * OP-AMP"
  483. 5972 PRINT #1,K$
  484. 5974 PRINT #1,L$
  485. 5976 PRINT #1,I$
  486. 5978 PRINT #1,J$
  487. 5980 PRINT #1,R5$
  488. 5990 PRINT #1,V$
  489. 6010 GOTO 5360
  490. 7000 DIM FL$(4,2)
  491. 7010 FOR J=1 TO 4:READ FL$(J,1):FL$(J,2)="N":NEXT J
  492. 7020 FOR J=1 TO 4
  493. 7030 IF FL$(J,2)="Y" THEN GOTO 7050
  494. 7040 PRINT STR$(J)+"- "+FL$(J,1)
  495. 7050 NEXT J
  496. 7060 PRINT
  497. 7070 INPUT "Choice (enter <cr> or 0 to exit)";C:C=INT(C)
  498. 7080 IF FL$(C,2)="Y" THEN PRINT "Already Selected!":GOTO 7070
  499. 7090 IF C=0 THEN RETURN
  500. 7100 PFG=1:INPUT "Name of Data File (<cr> for Directory)";F$
  501. 7110 IF LEN(F$)=0 THEN FILES:GOTO 7100
  502. 7120 FL$(C,2)="Y":OPEN "O",C,F$
  503. 7130 GOTO 7020
  504. 7140 DATA "Amplitude versus Frequency","Phase versus Frequency"
  505. 7150 DATA "Amplitude,Phase versus Frequency","Amplitude versus Phase"
  506. 7160 CLOSE
  507. 7200 FOR JJ=1 TO 4
  508. 7210 IF FL$(JJ,2)="N" THEN GOTO 7270
  509. 7220 ON JJ GOTO 7230,7240,7250,7260
  510. 7230 WRITE #1,R0,V:GOTO 7270
  511. 7240 WRITE #2,R0,U:GOTO 7270
  512. 7250 WRITE #3,R0,V,U:GOTO 7270
  513. 7260 WRITE #4,V,U
  514. 7270 NEXT JJ
  515. 7280 RETURN
  516.