home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / ee8 / mtwk.bas < prev    next >
BASIC Source File  |  1989-01-23  |  10KB  |  297 lines

  1. 1000 '     Name: MTWK
  2. 1010 CLEAR:CLS:GOSUB 3110
  3. 1020 INPUT"Enter number of nodes";Y:PRINT
  4. 1030 DIM A(Y,Y),A1(Y,Y),B(Y,Y),B1(Y,Y)
  5. 1040 DIM P(Y,Y),P1(Y,Y),Q(Y,Y),Q1(Y,Y)
  6. 1050 INPUT"Number of coax lines=";O:PRINT
  7. 1060 IF O=0 THEN 1070:DIM T(0-1,5)
  8. 1070 PI=3.14159265#:LGTEN=20/LOG(10)
  9. 1080 INPUT"Enter element symbol ";Z$
  10. 1090 E$=Z$:Z$=LEFT$(Z$,1):S$="RCLFNATE"
  11. 1100 Z=INSTR(1,S$,Z$):IF Z=0 OR E$="" THEN 1120
  12. 1110 ON Z GOSUB 1130,1160,1190,1220,1250,1290,1340,1400
  13. 1120 PRINT"Enter symbol from list!!!!!!":GOTO 1080
  14. 1130 INPUT"Nodes & ohms are";I,J,V
  15. 1140 IF PR THEN GOSUB 3410
  16. 1150 V=1/V:GOSUB 1930:GOTO 1080
  17. 1160 INPUT"Nodes and ufds are";I,J,V
  18. 1170 IF PR THEN GOSUB 3410
  19. 1180 V=V*.000001:GOSUB 2010:GOTO 1080
  20. 1190 INPUT"Nodes and henrys are";I,J,V
  21. 1200 IF PR THEN GOSUB 3410
  22. 1210 V=-1/V:GOSUB 2070:GOTO 1080
  23. 1220 INPUT"G,S,D,Nodes & A/V are";K,J,I,V
  24. 1230 IF PR THEN GOSUB 3420
  25. 1240 L=J:GOTO 1330
  26. 1250 INPUT"B,E,C,Beta & B-E ohms";K,J,I,B1,V
  27. 1260 IF PR THEN GOSUB 3430
  28. 1270 L=I:I=K:V=1/V:GOSUB 1930
  29. 1280 I=L:L=J:GOTO 1320
  30. 1290 PRINT"For the OP-AMP enter IN+,-,OUT+,-,Gain,ohms"
  31. 1300 INPUT K,L,J,I,B1,V:IF PR THEN GOSUB 3440
  32. 1310 V=1/V:GOSUB 1930
  33. 1320 V=B1*V
  34. 1330 GOSUB 2130:GOTO 1080
  35. 1340 IF O=0 THEN GOTO 1080
  36. 1350 FOR I=0 TO O-1:PRINT"IN,OUT,ZO,L,ER,a";
  37. 1360 INPUT T(I,0),T(I,1),T(I,2),T(I,3),T(I,4),T(I,5)
  38. 1370 IF PR THEN GOSUB 3450
  39. 1380 NEXT I:GOTO 1080
  40. 1390 '   Compute I/O ratios
  41. 1400 INPUT"Input & output nodes are ";E,F
  42. 1410 FOR I=0 TO N:FOR J=0 TO N
  43. 1420 P(I,J)=A(I,J):Q1(I,J)=B1(I,J)
  44. 1430 Q(I,J)=B(I,J):NEXT J:NEXT I
  45. 1440 IF PR THEN 3470 ELSE 1540
  46. 1450 PRINT:INPUT"Want printed results  Y/N";Z$:PRINT
  47. 1460 IF Z$="Y" OR Z$="y" THEN PR=1 ELSE PR=0
  48. 1470 INPUT"Want time delay list  Y/N";Z$:PRINT
  49. 1480 IF Z$="Y" OR Z$="y" THEN ND=0 ELSE ND=1
  50. 1490 INPUT"Want impedance format Y/N";Z$:PRINT
  51. 1500 IF Z$="Y" OR Z$="y" THEN QR=1 ELSE QR=0
  52. 1510 INPUT"Want new I/O nodes    Y/N";Z$
  53. 1520 IF Z$="Y" OR Z$="y" THEN 1530 ELSE 1540
  54. 1530 INPUT"Input & output nodes are";E,F
  55. 1540 PRINT"The frequency range is"
  56. 1550 INPUT"Start, end, increment";G,H,D
  57. 1560 IF PR THEN GOSUB 3500
  58. 1570 PRINT:IF QR=0 THEN GOSUB 3520
  59. 1580 IF QR=0 AND PR THEN GOSUB 3530
  60. 1590 IF QR THEN GOSUB 3740
  61. 1600 IF QR AND PR THEN GOSUB 3760
  62. 1610 IF D<0 THEN F2=-D ELSE F2=1+(H-G)/D
  63. 1620 IF D<0 THEN D=-((H/G)^(1/(-D-1)))
  64. 1630 F1=G:FOR I1=1 TO F2
  65. 1640 I2=0:IF ND OR QR THEN 1660
  66. 1650 FOR I2=0 TO 1
  67. 1660 W=2*PI*F1:D1=E:D2=F:GOSUB 2870
  68. 1670 V=B1:U=D2
  69. 1680 IF(-1)^(E+F)>0 THEN 1700
  70. 1690 U=U-180
  71. 1700 D1=E:D2=E:GOSUB 2870
  72. 1710 IF V=0 OR B1=0 THEN 1730
  73. 1720 V=V/B1:DB=LGTEN*LOG(V)
  74. 1730 U=U-D2:IF U>180 THEN U=U-360
  75. 1740 IF U<-180 THEN U=U+360
  76. 1750 IF QR THEN 1780
  77. 1760 IF PR=0 AND I2=0 THEN GOSUB 3560
  78. 1770 IF PR AND I2=0 THEN GOSUB 3640
  79. 1780 IF QR AND PR=0 THEN 3810
  80. 1790 IF QR AND PR THEN 3870
  81. 1800 DU=U1-U:U1=U:IF ND THEN 1840
  82. 1810 F1=F1*1.001:NEXT I2
  83. 1820 U2=DU/U3/360*1000
  84. 1830 IF PR THEN 3700 ELSE 3610
  85. 1840 IF PR THEN LPRINT ELSE PRINT
  86. 1850 '
  87. 1860 IF D<0 THEN F1=-U3*D ELSE F1=U3+D
  88. 1870 NEXT I1:IF PR THEN GOSUB 3950
  89. 1880 PRINT:INPUT"Want to continue  Y/N";Z$
  90. 1890 IF Z$="Y" OR Z$="y" THEN 1450
  91. 1900 PRINT"**Now in basic mode**"
  92. 1910 END
  93. 1920 '   Form element matrices
  94. 1930 IF I=0 THEN 1970
  95. 1940 A(I,I)=A(I,I)+V
  96. 1950 IF J=0 THEN 1980
  97. 1960 A(I,J)=A(I,J)-V:A(J,I)=A(J,I)-V
  98. 1970 A(J,J)=A(J,J)+V
  99. 1980 IF I>N THEN N=I
  100. 1990 IF J>N THEN N=J
  101. 2000 RETURN
  102. 2010 IF I=0 THEN 2050
  103. 2020 B(I,I)=B(I,I)+V
  104. 2030 IF J=0 THEN 1980
  105. 2040 B(I,J)=B(I,J)-V:B(J,I)=B(J,I)-V
  106. 2050 B(J,J)=B(J,J)+V
  107. 2060 GOTO 1980
  108. 2070 IF I=0 THEN 2110
  109. 2080 B1(I,I)=B1(I,I)+V
  110. 2090 IF J=0 THEN 1980
  111. 2100 B1(I,J)=B1(I,J)-V:B1(J,I)=B1(J,I)-V
  112. 2110 B1(J,J)=B1(J,J)+V
  113. 2120 GOTO 1980
  114. 2130 IF I<>0 AND K<>0 THEN A(I,K)=A(I,K)+V
  115. 2140 IF J<>0 AND L<>0 THEN A(J,L)=A(J,L)+V
  116. 2150 IF J<>0 AND K<>0 THEN A(J,K)=A(J,K)-V
  117. 2160 IF I<>0 AND L<>0 THEN A(I,L)=A(I,L)-V
  118. 2170 IF K>N THEN N=K
  119. 2180 IF L>N THEN N=L
  120. 2190 GOTO 1980
  121. 2200 X=W*T4*SQR(T5)/3E+08:X1=COS(X):X2=SIN(X)
  122. 2210 IF X=0 OR X=PI OR X=2*PI THEN X2=-.0000001
  123. 2220 M=T6*T4/LGTEN:M1=.5*(EXP(M)+EXP(-M))
  124. 2230 M2=.5*(EXP(M)-EXP(-M)):X=X2/T3/(M2*M2+X2*X2)
  125. 2240 M=M2/T3/(M2*M2+X2*X2):IF T1=0 THEN 2290
  126. 2250 P1(T1,T1)=P1(T1,T1)+M1*M:A1(T1,T1)=A1(T1,T1)+X1*X
  127. 2260 IF T2=0 THEN 2300
  128. 2270 P1(T1,T2)=P1(T1,T2)-X1*M:P1(T2,T1)=P1(T2,T1)-X1*M
  129. 2280 A1(T1,T2)=A1(T1,T2)-M1*X:A1(T2,T1)=A1(T2,T1)-M1*X
  130. 2290 P1(T2,T2)=P1(T2,T2)+M1*M:A1(T2,T2)=A1(T2,T2)+X1*X
  131. 2300 IF T1>N THEN N=T1
  132. 2310 IF T2>N THEN N=T2
  133. 2320 RETURN
  134. 2330 '   Compute determinate
  135. 2340 IF N>1 THEN 2360
  136. 2350 D1=A(N,N):D2=B(N,N):RETURN
  137. 2360 D1=1:D2=0:K=1
  138. 2370 L=K
  139. 2380 S=ABS(A(K,K))+ABS(B(K,K))
  140. 2390 FOR I=K TO N
  141. 2400 T=ABS(A(I,K))+ABS(B(I,K))
  142. 2410 IF S>=T THEN 2430
  143. 2420 L=I:S=T
  144. 2430 NEXT I
  145. 2440 IF L=K THEN 2520
  146. 2450 FOR J=1 TO N
  147. 2460 S=-A(K,J)
  148. 2470 A(K,J)=A(L,J)
  149. 2480 A(L,J)=S
  150. 2490 S1=-B(K,J)
  151. 2500 B(K,J)=B(L,J):B(L,J)=S1
  152. 2510 NEXT J
  153. 2520 L=K+1
  154. 2530 FOR I=L TO N
  155. 2540 S1=A(K,K)*A(K,K)+B(K,K)*B(K,K)
  156. 2550 S=(A(I,K)*A(K,K)+B(I,K)*B(K,K))/S1
  157. 2560 B(I,K)=(A(K,K)*B(I,K)-A(I,K)*B(K,K))/S1
  158. 2570 A(I,K)=S:NEXT I
  159. 2580 J2=K-1
  160. 2590 IF J2=0 THEN 2650
  161. 2600 FOR J=L TO N
  162. 2610 FOR I=1 TO J2
  163. 2620 A(K,J)=A(K,J)-A(K,I)*A(I,J)+B(K,I)*B(I,J)
  164. 2630 B(K,J)=B(K,J)-B(K,I)*A(I,J)-A(K,I)*B(I,J)
  165. 2640 NEXT I:NEXT J
  166. 2650 J2=K:K=K+1
  167. 2660 FOR I=K TO N
  168. 2670 FOR J=1 TO J2
  169. 2680 A(I,K)=A(I,K)-A(I,J)*A(J,K)+B(I,J)*B(J,K)
  170. 2690 B(I,K)=B(I,K)-B(I,J)*A(J,K)-A(I,J)*B(J,K)
  171. 2700 NEXT J:NEXT I
  172. 2710 IF K<>N THEN 2370
  173. 2720 L=1
  174. 2730 J2=INT(N/2)
  175. 2740 IF N=2*J2 THEN 2780
  176. 2750 L=0
  177. 2760 D1=A(N,N)
  178. 2770 D2=B(N,N)
  179. 2780 FOR I=1 TO J2
  180. 2790 J=N-I+L
  181. 2800 S=A(I,I)*A(J,J)-B(I,I)*B(J,J)
  182. 2810 S1=A(I,I)*B(J,J)+A(J,J)*B(I,I)
  183. 2820 T=D1*S-D2*S1
  184. 2830 D2=D2*S+D1*S1
  185. 2840 D1=T
  186. 2850 NEXT I
  187. 2860 RETURN
  188. 2870 FOR I=0 TO Y:FOR J=0 TO Y:P1(I,J)=0
  189. 2880 A1(I,J)=0:NEXT J:NEXT I
  190. 2890 FOR I=0 TO O-1:T1=T(I,0):T2=T(I,1)
  191. 2900 T3=T(I,2):T4=T(I,3):T5=T(I,4):T6=T(I,5)
  192. 2910 IF T1<>T2 THEN GOSUB 2200:NEXT I
  193. 2920 N1=N:N=N-1:I=0
  194. 2930 FOR K=1 TO N
  195. 2940 IF K<>D1 THEN 2960
  196. 2950 I=1
  197. 2960 J=0
  198. 2970 FOR L=1 TO N
  199. 2980 IF L<>D2 THEN 3000
  200. 2990 J=1
  201. 3000 A(K,L)=P(K+I,L+J)+P1(K+I,L+J)
  202. 3010 B(K,L)=W*Q(K+I,L+J)+Q1(K+I,L+J)/W-A1(K+I,L+J)
  203. 3020 NEXT L:NEXT K
  204. 3030 GOSUB 2340
  205. 3040 N=N1
  206. 3050 B1=SQR(D1*D1+D2*D2)
  207. 3060 IF D1=0 AND D2=0 THEN 3100
  208. 3070 IF D1<0 AND D2=0 THEN 3090
  209. 3080 D2=360/PI*ATN(D2/(B1+D1)):RETURN
  210. 3090 D2=180
  211. 3100 RETURN
  212. 3110 '   Info about pgm
  213. 3120 PRINT"The Network Element Format is"
  214. 3130 PRINT"R     (Resistor)"
  215. 3140 PRINT"From node #, to node #, ohms"
  216. 3150 PRINT"C     (Capacitor)"
  217. 3160 PRINT"From node #, to node #, ufds"
  218. 3170 PRINT"L     (Inductor)"
  219. 3180 PRINT"From node #, to node #, hrys"
  220. 3190 PRINT"F     (FET)"
  221. 3200 PRINT"Gate,Source,Drain,Gain(A/V)"
  222. 3210 PRINT"N     (NPN)"
  223. 3220 PRINT"Base,Emit,Coll,Beta,B-E ohms"
  224. 3230 PRINT"A     (OP AMP)"
  225. 3240 PRINT"+IN,-IN,+OUT,-OUT,Gain,Ohms out"
  226. 3250 PRINT"T     (COAX LINE)"
  227. 3260 PRINT"Nodes, ZO, L meters, ER, a db/m"
  228. 3270 '   Screen break
  229. 3280 PRINT"E     (Exit)"
  230. 3290 PRINT"Input node #, Output node #"
  231. 3300 PRINT"For log freq, use -D for number"
  232. 3310 PRINT"of frequencies wanted. In lines"
  233. 3320 PRINT"1810 & 1820, use 1E-5 & 1E5 for"
  234. 3330 PRINT"MSBASIC; 1E-3 & 1E3 for GWBASIC"
  235. 3340 PRINT:INPUT"Want printed results  Y/N";Z$
  236. 3350 PRINT:IF Z$="Y" OR Z$="y" THEN PR=1 ELSE PR=0
  237. 3360 INPUT"Want time delay list  Y/N";Z$:PRINT
  238. 3370 IF Z$="Y" OR Z$="y" THEN ND=0 ELSE ND=1
  239. 3380 INPUT"Want impedance format Y/N";Z$:PRINT
  240. 3390 IF Z$="Y" OR Z$="y" THEN QR=1 ELSE QR=0
  241. 3400 RETURN
  242. 3410 LPRINT E$;" =";I;J;V:RETURN
  243. 3420 LPRINT E$;" =";K;J;I;V:RETURN
  244. 3430 LPRINT E$;" =";K;J;I;B1;V:RETURN
  245. 3440 LPRINT E$;" =";K;L;J;I;B1;V:RETURN
  246. 3450 LPRINT "T";I+1;" =";T(I,0);T(I,1);T(I,2);
  247. 3460 LPRINT T(I,3);T(I,4);T(I,5):RETURN
  248. 3470 LPRINT:LPRINT"Network has";N;"nodes"
  249. 3480 LPRINT"Input & output nodes are";E;",";F
  250. 3490 GOTO 1540
  251. 3500 LPRINT:LPRINT"Frequency range is";
  252. 3510 LPRINT G;",";H;",";D:RETURN
  253. 3520 PRINT"   FREQ     DB   PHASE   DELAY":RETURN
  254. 3530 PRINT"**Wait for the printed results**"
  255. 3540 LPRINT:LPRINT"   FREQ         DB      ";
  256. 3550 LPRINT"PHASE     DELAY(SEC)":RETURN
  257. 3560 U3=F1:PRINT USING"##.##^^^^";F1;
  258. 3570 IF V=0 OR B1=0 THEN 3590
  259. 3580 PRINT USING"####.#";DB;:GOTO 3600
  260. 3590 PRINT"   inf";
  261. 3600 PRINT" ";:PRINT USING"####.#";U;:RETURN
  262. 3610 IF U2>0 THEN 3630
  263. 3620 PRINT"    NA":GOTO 1850
  264. 3630 PRINT" ";:PRINT USING"##.##^^^^";U2:GOTO 1850
  265. 3640 U3=F1:LPRINT USING"##.##^^^^";F1;
  266. 3650 LPRINT"   ";:IF V=0 OR B1=0 THEN 3670
  267. 3660 LPRINT USING"####.##";DB;:GOTO 3680
  268. 3670 LPRINT"   inf";
  269. 3680 LPRINT"    ";
  270. 3690 LPRINT USING"####.#";U;:RETURN
  271. 3700 IF U2>0 THEN 3720
  272. 3710 LPRINT"        NA":GOTO 1850
  273. 3720 LPRINT"     ";:LPRINT USING"##.##^^^^";U2
  274. 3730 GOTO 1850
  275. 3740 PRINT"The input impedance is":PRINT
  276. 3750 PRINT"   FREQ      REAL     IMAG":RETURN
  277. 3760 PRINT"**Wait for the printed results**"
  278. 3770 LPRINT"The input impedance is"
  279. 3780 LPRINT:LPRINT"   FREQ          REAL";
  280. 3790 LPRINT"        IMAG        AMPL";
  281. 3800 LPRINT"     ANGLE":RETURN
  282. 3810 U3=F1:U=(180+U)*PI/180
  283. 3820 PRINT USING"##.##^^^^";F1;
  284. 3830 IF V=0 OR B1=0 THEN 3860
  285. 3840 PRINT USING"#######.#";V*COS(U),V*SIN(U)
  286. 3850 GOTO 1850
  287. 3860 PRINT"      inf      inf":GOTO 1850
  288. 3870 U3=F1:U=(180+U)*PI/180
  289. 3880 LPRINT USING"##.##^^^^";F1;:LPRINT"    ";
  290. 3890 LPRINT USING"#######.#";V*COS(U);
  291. 3900 LPRINT"   ";
  292. 3910 LPRINT USING"#######.#";V*SIN(U);
  293. 3920 LPRINT"   ";
  294. 3930 LPRINT USING"#######.#";V;:LPRINT"   ";
  295. 3940 LPRINT USING"####.#";U*180/PI:GOTO 1850
  296. 3950 LPRINT:LPRINT:RETURN
  297.