1000  DIM B[20],D[20,20]
1010  DIM L$[3],Q$[6],A$[7]
1020  READ R$
1030  PRINT "GRAPHICAL OUTPUT (HP 7200A PLOTTER): (Y OR N)";
1040  INPUT G$
1050  PRINT 
1060  P=3.14159
1070  READ M,N,J5
1080  MAT A=ZER[N,N]
1090  MAT C=ZER[N,N]
1100  MAT F=ZER[N,N]
1110  MAT D=ZER[2*N,2*N]
1120  MAT B=ZER[2*N]
1130  MAT G=ZER[N]
1140  MAT X=ZER[N]
1150  MAT Y=ZER[N]
1160  IF J5>0 THEN 1190
1170  IF J5=0 THEN 1230
1180  GOTO 1450
1190  J6=J5
1200  FOR I=1 TO J6
1210  READ G[I]
1220  NEXT I
1230  IF R$="A" THEN 1260
1240  READ L5,F1,F2,S
1250  GOTO 1270
1260  READ L$,F1,F2,S
1270  F9=F1
1280  FOR L=1 TO M
1290  IF R$="A" THEN 1380
1300  READ I5
1310  IF I5=2 THEN 1470
1320  IF I5=3 THEN 1560
1330  IF I5=4 THEN 1650
1340  IF I5=5 THEN 1770
1350  IF I5=1 THEN 1860
1360  IF I5=7 THEN 1950
1370  GOTO 1450
1380  READ Q$
1390  IF Q$[1,1]="C" THEN 1470
1400  IF Q$[1,1]="L" THEN 1770
1410  IF Q$[1,1]="R" THEN 1860
1420  IF Q$[1,3]="TRF" THEN 1950
1430  IF Q$[1,2]="IV" THEN 1650
1440  IF Q$[1,1]="I" THEN 1560
1450  PRINT "DATA ERR"
1460  STOP 
1470  READ J,K,G
1480  IF K=0 THEN 1510
1490  C[K,K]=C[K,K]+G
1500  IF J=0 THEN 2280
1510  C[J,J]=C[J,J]+G
1520  IF K=0 THEN 2280
1530  C[J,K]=C[J,K]-G
1540  C[K,J]=C[K,J]-G
1550  GOTO 2280
1560  READ J,K,I1,I2
1570  IF K=0 THEN 1590
1580  IF J=0 THEN 1620
1590  B[J]=B[J]+I1
1600  B[J+N]=B[J+N]+I2
1610  IF K=0 THEN 2280
1620  B[K]=B[K]-I1
1630  B[K+N]=B[K+N]-I2
1640  GOTO 2280
1650  READ N1,N2,N3,N4,M1
1660  IF N1=0 THEN 1710
1670  IF N3=0 THEN 1690
1680  A[N1,N3]=A[N1,N3]-M1
1690  IF (N4)=0 THEN 1710
1700  A[N1,N4]=A[N1,N4]+M1
1710  IF N2=0 THEN 2280
1720  IF N3=0 THEN 1740
1730  A[N2,N3]=A[N2,N3]+M1
1740  IF N4=0 THEN 2280
1750  A[N2,N4]=A[N2,N4]-M1
1760  GOTO 2280
1770  READ J,K,G
1780  IF K=0 THEN 1810
1790  F[K,K]=F[K,K]+1/G
1800  IF J=0 THEN 2280
1810  F[J,J]=F[J,J]+1/G
1820  IF K=0 THEN 2280
1830  F[J,K]=F[J,K]-1/G
1840  F[K,J]=F[K,J]-1/G
1850  GOTO 2280
1860  READ J,K,G
1870  IF K=0 THEN 1900
1880  A[K,K]=A[K,K]+1/G
1890  IF J=0 THEN 2280
1900  A[J,J]=A[J,J]+1/G
1910  IF K=0 THEN 2280
1920  A[K,J]=A[K,J]-1/G
1930  A[J,K]=A[J,K]-1/G
1940  GOTO 2280
1950  READ N1,N2,N3,N4,L1,L2,K1
1960  M1=SQR(K1*K1*L1*L2)
1970  R=1/(1-K1*K1)
1980  R1=R*M1/(L1*L2)
1990  R2=-R/L2
2000  R3=-R/L1
2010  IF N1=0 THEN 2120
2020  F[N1,N1]=F[N1,N1]-R3
2030  IF N2=0 THEN 2060
2040  F[N1,N2]=F[N1,N2]+R3
2050  F[N2,N1]=F[N2,N1]+R3
2060  IF N3=0 THEN 2090
2070  F[N1,N3]=F[N1,N3]-R1
2080  F[N3,N1]=F[N3,N1]-R1
2090  IF N4=0 THEN 2120
2100  F[N1,N4]=F[N1,N4]+R1
2110  F[N4,N1]=F[N4,N1]+R1
2120  IF N2=0 THEN 2200
2130  F[N2,N2]=F[N2,N2]-R3
2140  IF N3=0 THEN 2160
2150  F[N2,N3]=F[N2,N3]+R1
2160  F[N3,N2]=F[N3,N2]+R1
2170  IF N4=0 THEN 2200
2180  F[N2,N4]=F[N2,N4]-R1
2190  F[N4,N2]=F[N4,N2]-R1
2200  IF N3=0 THEN 2250
2210  F[N3,N3]=F[N3,N3]-R2
2220  IF N4=0 THEN 2250
2230  F[N3,N4]=F[N3,N4]+R2
2240  F[N4,N3]=F[N4,N3]+R2
2250  IF N4=0 THEN 2280
2260  F[N4,N4]=F[N4,N4]-R2
2270  GOTO 2280
2280  NEXT L
2290  IF G$="N" THEN 2370
2300  PRINT "ORDINATE: (VOLTAGE, DB, OR PHASE)";
2310  INPUT A$
2320  PRINT 
2330  PRINT "EXTREMES OF ORDINATE: MAX, MIN";
2340  INPUT Y9,Y8
2350  PRINT "PLTL"
2360  GOTO 2380
2370  PRINT "NODE   FREQUENCY      VOLTAGE        DB             PHASE"
2380  PRINT 
2390  F0=F1
2400  W1=2*P*F0
2410  FOR I6=1 TO N
2420  FOR I7=1 TO N
2430  D[I6,I7]=A[I6,I7]
2440  D[I6+N,I7+N]=A[I6,I7]
2450  D[I6+N,I7]=C[I6,I7]*W1-F[I6,I7]/W1
2460  D[I6,I7+N]=-D[I6+N,I7]
2470  NEXT I7
2480  NEXT I6
2490  MAT D=INV(D)
2500  REM END OF MAT SOLN
2510  IF J5=0 THEN 2540
2520  I0=J6
2530  GOTO 2550
2540  I0=N
2550  FOR I9=1 TO I0
2560  IF J5>0 THEN 2590
2570  N1=I9
2580  GOTO 2600
2590  N1=G[I9]
2600  MAT X=ZER[N]
2610  MAT Y=ZER[N]
2620  FOR J8=1 TO 2*N
2630  X[N1]=X[N1]+D[N1,J8]*B[J8]
2640  Y[N1]=Y[N1]+D[N1+N,J8]*B[J8]
2650  NEXT J8
2660  X1=SQR(X[N1]^2+Y[N1]^2)
2670  IF X[N1] <> 0 THEN 2740
2680  IF Y[N1]=0 THEN 2760
2690  IF Y[N1]>0 THEN 2720
2700  Y1=-P/2
2710  GOTO 2770
2720  Y1=P/2
2730  GOTO 2770
2740  Y1=ATN(Y[N1]/X[N1])
2750  GOTO 2770
2760  Y1=0
2770  Y1=180*Y1/P
2780  IF X[N1] >= 0 THEN 2830
2790  IF Y[N1]>0 THEN 2820
2800  Y1=Y1-180
2810  GOTO 2830
2820  Y1=Y1+180
2830  Y1=INT(Y1*100+.5)/100
2840  IF X1=0 THEN 2880
2850  X5=20*LOG(X1)/LOG(10)
2860  X5=INT(X5*1000+.5)/1000
2870  GOTO 2890
2880  X5=-9999
2890  IF G$="N" THEN 3150
2900  IF A$[1,1]="V" THEN 3000
2910  IF A$[1,1]="D" THEN 3020
2920  IF A$[1,1]="P" THEN 3040
2930  PRINT "INPUT ERROR--REENTER ORDINATE: (V, D, OR P)";
2940  INPUT A$
2950  PRINT "REENTER EXTREMES: MAX, MIN";
2960  INPUT Y9,Y8
2970  PRINT "PLTL"
2980  PRINT 
2990  GOTO 2900
3000  Y0=X1
3010  GOTO 3050
3020  Y0=X5
3030  GOTO 3050
3040  Y0=Y1
3050  Y0=9999*(Y0-Y8)/(Y9-Y8)
3060  IF R$="A" THEN 3090
3070  IF L5=1 THEN 3120
3080  GOTO 3100
3090  IF L$="LOG" THEN 3120
3100  X0=9999*(F0-F1)/(F2-F1)
3110  GOTO 3130
3120  X0=9999*(LOG(F0)-LOG(F1))/(LOG(F2)-LOG(F1))
3130  PRINT INT(X0);INT(Y0)
3140  GOTO 3160
3150  PRINT N1;F0;TAB(21);X1;TAB(36);X5;TAB(51);Y1
3160  NEXT I9
3170  IF R$="A" THEN 3200
3180  IF L5=1 THEN 3230
3190  GOTO 3210
3200  IF L$="LOG" THEN 3230
3210  F0=F0+S
3220  GOTO 3240
3230  F0=F0*10^(1/S)
3240  IF J5=1 THEN 3270
3250  IF F9=F0 THEN 3270
3260  PRINT 
3270  LET F9=F0
3280  IF F0 <= F2 THEN 2400
3290  IF G$="N" THEN 3310
3300  PRINT "PLTT"
3310  END 
