home *** CD-ROM | disk | FTP | other *** search
- 1000 ' Name: MTWK
- 1010 CLEAR:CLS:GOSUB 3110
- 1020 INPUT"Enter number of nodes";Y:PRINT
- 1030 DIM A(Y,Y),A1(Y,Y),B(Y,Y),B1(Y,Y)
- 1040 DIM P(Y,Y),P1(Y,Y),Q(Y,Y),Q1(Y,Y)
- 1050 INPUT"Number of coax lines=";O:PRINT
- 1060 IF O=0 THEN 1070:DIM T(0-1,5)
- 1070 PI=3.14159265#:LGTEN=20/LOG(10)
- 1080 INPUT"Enter element symbol ";Z$
- 1090 E$=Z$:Z$=LEFT$(Z$,1):S$="RCLFNATE"
- 1100 Z=INSTR(1,S$,Z$):IF Z=0 OR E$="" THEN 1120
- 1110 ON Z GOSUB 1130,1160,1190,1220,1250,1290,1340,1400
- 1120 PRINT"Enter symbol from list!!!!!!":GOTO 1080
- 1130 INPUT"Nodes & ohms are";I,J,V
- 1140 IF PR THEN GOSUB 3410
- 1150 V=1/V:GOSUB 1930:GOTO 1080
- 1160 INPUT"Nodes and ufds are";I,J,V
- 1170 IF PR THEN GOSUB 3410
- 1180 V=V*.000001:GOSUB 2010:GOTO 1080
- 1190 INPUT"Nodes and henrys are";I,J,V
- 1200 IF PR THEN GOSUB 3410
- 1210 V=-1/V:GOSUB 2070:GOTO 1080
- 1220 INPUT"G,S,D,Nodes & A/V are";K,J,I,V
- 1230 IF PR THEN GOSUB 3420
- 1240 L=J:GOTO 1330
- 1250 INPUT"B,E,C,Beta & B-E ohms";K,J,I,B1,V
- 1260 IF PR THEN GOSUB 3430
- 1270 L=I:I=K:V=1/V:GOSUB 1930
- 1280 I=L:L=J:GOTO 1320
- 1290 PRINT"For the OP-AMP enter IN+,-,OUT+,-,Gain,ohms"
- 1300 INPUT K,L,J,I,B1,V:IF PR THEN GOSUB 3440
- 1310 V=1/V:GOSUB 1930
- 1320 V=B1*V
- 1330 GOSUB 2130:GOTO 1080
- 1340 IF O=0 THEN GOTO 1080
- 1350 FOR I=0 TO O-1:PRINT"IN,OUT,ZO,L,ER,a";
- 1360 INPUT T(I,0),T(I,1),T(I,2),T(I,3),T(I,4),T(I,5)
- 1370 IF PR THEN GOSUB 3450
- 1380 NEXT I:GOTO 1080
- 1390 ' Compute I/O ratios
- 1400 INPUT"Input & output nodes are ";E,F
- 1410 FOR I=0 TO N:FOR J=0 TO N
- 1420 P(I,J)=A(I,J):Q1(I,J)=B1(I,J)
- 1430 Q(I,J)=B(I,J):NEXT J:NEXT I
- 1440 IF PR THEN 3470 ELSE 1540
- 1450 PRINT:INPUT"Want printed results Y/N";Z$:PRINT
- 1460 IF Z$="Y" OR Z$="y" THEN PR=1 ELSE PR=0
- 1470 INPUT"Want time delay list Y/N";Z$:PRINT
- 1480 IF Z$="Y" OR Z$="y" THEN ND=0 ELSE ND=1
- 1490 INPUT"Want impedance format Y/N";Z$:PRINT
- 1500 IF Z$="Y" OR Z$="y" THEN QR=1 ELSE QR=0
- 1510 INPUT"Want new I/O nodes Y/N";Z$
- 1520 IF Z$="Y" OR Z$="y" THEN 1530 ELSE 1540
- 1530 INPUT"Input & output nodes are";E,F
- 1540 PRINT"The frequency range is"
- 1550 INPUT"Start, end, increment";G,H,D
- 1560 IF PR THEN GOSUB 3500
- 1570 PRINT:IF QR=0 THEN GOSUB 3520
- 1580 IF QR=0 AND PR THEN GOSUB 3530
- 1590 IF QR THEN GOSUB 3740
- 1600 IF QR AND PR THEN GOSUB 3760
- 1610 IF D<0 THEN F2=-D ELSE F2=1+(H-G)/D
- 1620 IF D<0 THEN D=-((H/G)^(1/(-D-1)))
- 1630 F1=G:FOR I1=1 TO F2
- 1640 I2=0:IF ND OR QR THEN 1660
- 1650 FOR I2=0 TO 1
- 1660 W=2*PI*F1:D1=E:D2=F:GOSUB 2870
- 1670 V=B1:U=D2
- 1680 IF(-1)^(E+F)>0 THEN 1700
- 1690 U=U-180
- 1700 D1=E:D2=E:GOSUB 2870
- 1710 IF V=0 OR B1=0 THEN 1730
- 1720 V=V/B1:DB=LGTEN*LOG(V)
- 1730 U=U-D2:IF U>180 THEN U=U-360
- 1740 IF U<-180 THEN U=U+360
- 1750 IF QR THEN 1780
- 1760 IF PR=0 AND I2=0 THEN GOSUB 3560
- 1770 IF PR AND I2=0 THEN GOSUB 3640
- 1780 IF QR AND PR=0 THEN 3810
- 1790 IF QR AND PR THEN 3870
- 1800 DU=U1-U:U1=U:IF ND THEN 1840
- 1810 F1=F1*1.001:NEXT I2
- 1820 U2=DU/U3/360*1000
- 1830 IF PR THEN 3700 ELSE 3610
- 1840 IF PR THEN LPRINT ELSE PRINT
- 1850 '
- 1860 IF D<0 THEN F1=-U3*D ELSE F1=U3+D
- 1870 NEXT I1:IF PR THEN GOSUB 3950
- 1880 PRINT:INPUT"Want to continue Y/N";Z$
- 1890 IF Z$="Y" OR Z$="y" THEN 1450
- 1900 PRINT"**Now in basic mode**"
- 1910 END
- 1920 ' Form element matrices
- 1930 IF I=0 THEN 1970
- 1940 A(I,I)=A(I,I)+V
- 1950 IF J=0 THEN 1980
- 1960 A(I,J)=A(I,J)-V:A(J,I)=A(J,I)-V
- 1970 A(J,J)=A(J,J)+V
- 1980 IF I>N THEN N=I
- 1990 IF J>N THEN N=J
- 2000 RETURN
- 2010 IF I=0 THEN 2050
- 2020 B(I,I)=B(I,I)+V
- 2030 IF J=0 THEN 1980
- 2040 B(I,J)=B(I,J)-V:B(J,I)=B(J,I)-V
- 2050 B(J,J)=B(J,J)+V
- 2060 GOTO 1980
- 2070 IF I=0 THEN 2110
- 2080 B1(I,I)=B1(I,I)+V
- 2090 IF J=0 THEN 1980
- 2100 B1(I,J)=B1(I,J)-V:B1(J,I)=B1(J,I)-V
- 2110 B1(J,J)=B1(J,J)+V
- 2120 GOTO 1980
- 2130 IF I<>0 AND K<>0 THEN A(I,K)=A(I,K)+V
- 2140 IF J<>0 AND L<>0 THEN A(J,L)=A(J,L)+V
- 2150 IF J<>0 AND K<>0 THEN A(J,K)=A(J,K)-V
- 2160 IF I<>0 AND L<>0 THEN A(I,L)=A(I,L)-V
- 2170 IF K>N THEN N=K
- 2180 IF L>N THEN N=L
- 2190 GOTO 1980
- 2200 X=W*T4*SQR(T5)/3E+08:X1=COS(X):X2=SIN(X)
- 2210 IF X=0 OR X=PI OR X=2*PI THEN X2=-.0000001
- 2220 M=T6*T4/LGTEN:M1=.5*(EXP(M)+EXP(-M))
- 2230 M2=.5*(EXP(M)-EXP(-M)):X=X2/T3/(M2*M2+X2*X2)
- 2240 M=M2/T3/(M2*M2+X2*X2):IF T1=0 THEN 2290
- 2250 P1(T1,T1)=P1(T1,T1)+M1*M:A1(T1,T1)=A1(T1,T1)+X1*X
- 2260 IF T2=0 THEN 2300
- 2270 P1(T1,T2)=P1(T1,T2)-X1*M:P1(T2,T1)=P1(T2,T1)-X1*M
- 2280 A1(T1,T2)=A1(T1,T2)-M1*X:A1(T2,T1)=A1(T2,T1)-M1*X
- 2290 P1(T2,T2)=P1(T2,T2)+M1*M:A1(T2,T2)=A1(T2,T2)+X1*X
- 2300 IF T1>N THEN N=T1
- 2310 IF T2>N THEN N=T2
- 2320 RETURN
- 2330 ' Compute determinate
- 2340 IF N>1 THEN 2360
- 2350 D1=A(N,N):D2=B(N,N):RETURN
- 2360 D1=1:D2=0:K=1
- 2370 L=K
- 2380 S=ABS(A(K,K))+ABS(B(K,K))
- 2390 FOR I=K TO N
- 2400 T=ABS(A(I,K))+ABS(B(I,K))
- 2410 IF S>=T THEN 2430
- 2420 L=I:S=T
- 2430 NEXT I
- 2440 IF L=K THEN 2520
- 2450 FOR J=1 TO N
- 2460 S=-A(K,J)
- 2470 A(K,J)=A(L,J)
- 2480 A(L,J)=S
- 2490 S1=-B(K,J)
- 2500 B(K,J)=B(L,J):B(L,J)=S1
- 2510 NEXT J
- 2520 L=K+1
- 2530 FOR I=L TO N
- 2540 S1=A(K,K)*A(K,K)+B(K,K)*B(K,K)
- 2550 S=(A(I,K)*A(K,K)+B(I,K)*B(K,K))/S1
- 2560 B(I,K)=(A(K,K)*B(I,K)-A(I,K)*B(K,K))/S1
- 2570 A(I,K)=S:NEXT I
- 2580 J2=K-1
- 2590 IF J2=0 THEN 2650
- 2600 FOR J=L TO N
- 2610 FOR I=1 TO J2
- 2620 A(K,J)=A(K,J)-A(K,I)*A(I,J)+B(K,I)*B(I,J)
- 2630 B(K,J)=B(K,J)-B(K,I)*A(I,J)-A(K,I)*B(I,J)
- 2640 NEXT I:NEXT J
- 2650 J2=K:K=K+1
- 2660 FOR I=K TO N
- 2670 FOR J=1 TO J2
- 2680 A(I,K)=A(I,K)-A(I,J)*A(J,K)+B(I,J)*B(J,K)
- 2690 B(I,K)=B(I,K)-B(I,J)*A(J,K)-A(I,J)*B(J,K)
- 2700 NEXT J:NEXT I
- 2710 IF K<>N THEN 2370
- 2720 L=1
- 2730 J2=INT(N/2)
- 2740 IF N=2*J2 THEN 2780
- 2750 L=0
- 2760 D1=A(N,N)
- 2770 D2=B(N,N)
- 2780 FOR I=1 TO J2
- 2790 J=N-I+L
- 2800 S=A(I,I)*A(J,J)-B(I,I)*B(J,J)
- 2810 S1=A(I,I)*B(J,J)+A(J,J)*B(I,I)
- 2820 T=D1*S-D2*S1
- 2830 D2=D2*S+D1*S1
- 2840 D1=T
- 2850 NEXT I
- 2860 RETURN
- 2870 FOR I=0 TO Y:FOR J=0 TO Y:P1(I,J)=0
- 2880 A1(I,J)=0:NEXT J:NEXT I
- 2890 FOR I=0 TO O-1:T1=T(I,0):T2=T(I,1)
- 2900 T3=T(I,2):T4=T(I,3):T5=T(I,4):T6=T(I,5)
- 2910 IF T1<>T2 THEN GOSUB 2200:NEXT I
- 2920 N1=N:N=N-1:I=0
- 2930 FOR K=1 TO N
- 2940 IF K<>D1 THEN 2960
- 2950 I=1
- 2960 J=0
- 2970 FOR L=1 TO N
- 2980 IF L<>D2 THEN 3000
- 2990 J=1
- 3000 A(K,L)=P(K+I,L+J)+P1(K+I,L+J)
- 3010 B(K,L)=W*Q(K+I,L+J)+Q1(K+I,L+J)/W-A1(K+I,L+J)
- 3020 NEXT L:NEXT K
- 3030 GOSUB 2340
- 3040 N=N1
- 3050 B1=SQR(D1*D1+D2*D2)
- 3060 IF D1=0 AND D2=0 THEN 3100
- 3070 IF D1<0 AND D2=0 THEN 3090
- 3080 D2=360/PI*ATN(D2/(B1+D1)):RETURN
- 3090 D2=180
- 3100 RETURN
- 3110 ' Info about pgm
- 3120 PRINT"The Network Element Format is"
- 3130 PRINT"R (Resistor)"
- 3140 PRINT"From node #, to node #, ohms"
- 3150 PRINT"C (Capacitor)"
- 3160 PRINT"From node #, to node #, ufds"
- 3170 PRINT"L (Inductor)"
- 3180 PRINT"From node #, to node #, hrys"
- 3190 PRINT"F (FET)"
- 3200 PRINT"Gate,Source,Drain,Gain(A/V)"
- 3210 PRINT"N (NPN)"
- 3220 PRINT"Base,Emit,Coll,Beta,B-E ohms"
- 3230 PRINT"A (OP AMP)"
- 3240 PRINT"+IN,-IN,+OUT,-OUT,Gain,Ohms out"
- 3250 PRINT"T (COAX LINE)"
- 3260 PRINT"Nodes, ZO, L meters, ER, a db/m"
- 3270 ' Screen break
- 3280 PRINT"E (Exit)"
- 3290 PRINT"Input node #, Output node #"
- 3300 PRINT"For log freq, use -D for number"
- 3310 PRINT"of frequencies wanted. In lines"
- 3320 PRINT"1810 & 1820, use 1E-5 & 1E5 for"
- 3330 PRINT"MSBASIC; 1E-3 & 1E3 for GWBASIC"
- 3340 PRINT:INPUT"Want printed results Y/N";Z$
- 3350 PRINT:IF Z$="Y" OR Z$="y" THEN PR=1 ELSE PR=0
- 3360 INPUT"Want time delay list Y/N";Z$:PRINT
- 3370 IF Z$="Y" OR Z$="y" THEN ND=0 ELSE ND=1
- 3380 INPUT"Want impedance format Y/N";Z$:PRINT
- 3390 IF Z$="Y" OR Z$="y" THEN QR=1 ELSE QR=0
- 3400 RETURN
- 3410 LPRINT E$;" =";I;J;V:RETURN
- 3420 LPRINT E$;" =";K;J;I;V:RETURN
- 3430 LPRINT E$;" =";K;J;I;B1;V:RETURN
- 3440 LPRINT E$;" =";K;L;J;I;B1;V:RETURN
- 3450 LPRINT "T";I+1;" =";T(I,0);T(I,1);T(I,2);
- 3460 LPRINT T(I,3);T(I,4);T(I,5):RETURN
- 3470 LPRINT:LPRINT"Network has";N;"nodes"
- 3480 LPRINT"Input & output nodes are";E;",";F
- 3490 GOTO 1540
- 3500 LPRINT:LPRINT"Frequency range is";
- 3510 LPRINT G;",";H;",";D:RETURN
- 3520 PRINT" FREQ DB PHASE DELAY":RETURN
- 3530 PRINT"**Wait for the printed results**"
- 3540 LPRINT:LPRINT" FREQ DB ";
- 3550 LPRINT"PHASE DELAY(SEC)":RETURN
- 3560 U3=F1:PRINT USING"##.##^^^^";F1;
- 3570 IF V=0 OR B1=0 THEN 3590
- 3580 PRINT USING"####.#";DB;:GOTO 3600
- 3590 PRINT" inf";
- 3600 PRINT" ";:PRINT USING"####.#";U;:RETURN
- 3610 IF U2>0 THEN 3630
- 3620 PRINT" NA":GOTO 1850
- 3630 PRINT" ";:PRINT USING"##.##^^^^";U2:GOTO 1850
- 3640 U3=F1:LPRINT USING"##.##^^^^";F1;
- 3650 LPRINT" ";:IF V=0 OR B1=0 THEN 3670
- 3660 LPRINT USING"####.##";DB;:GOTO 3680
- 3670 LPRINT" inf";
- 3680 LPRINT" ";
- 3690 LPRINT USING"####.#";U;:RETURN
- 3700 IF U2>0 THEN 3720
- 3710 LPRINT" NA":GOTO 1850
- 3720 LPRINT" ";:LPRINT USING"##.##^^^^";U2
- 3730 GOTO 1850
- 3740 PRINT"The input impedance is":PRINT
- 3750 PRINT" FREQ REAL IMAG":RETURN
- 3760 PRINT"**Wait for the printed results**"
- 3770 LPRINT"The input impedance is"
- 3780 LPRINT:LPRINT" FREQ REAL";
- 3790 LPRINT" IMAG AMPL";
- 3800 LPRINT" ANGLE":RETURN
- 3810 U3=F1:U=(180+U)*PI/180
- 3820 PRINT USING"##.##^^^^";F1;
- 3830 IF V=0 OR B1=0 THEN 3860
- 3840 PRINT USING"#######.#";V*COS(U),V*SIN(U)
- 3850 GOTO 1850
- 3860 PRINT" inf inf":GOTO 1850
- 3870 U3=F1:U=(180+U)*PI/180
- 3880 LPRINT USING"##.##^^^^";F1;:LPRINT" ";
- 3890 LPRINT USING"#######.#";V*COS(U);
- 3900 LPRINT" ";
- 3910 LPRINT USING"#######.#";V*SIN(U);
- 3920 LPRINT" ";
- 3930 LPRINT USING"#######.#";V;:LPRINT" ";
- 3940 LPRINT USING"####.#";U*180/PI:GOTO 1850
- 3950 LPRINT:LPRINT:RETURN