home *** CD-ROM | disk | FTP | other *** search
- 10 REM LOWPASS SYNTHESIS PROGRAM FILSYP.BAS
- 20 REM LINKED FROM DESIGN PROGRAM....FILDES.BAS
- 30 REM
- 40 Z=0:HCP=0:K$="N"
- 50 PRINT "NOW RUNNING THE LOWPASS PROTOTYPE SYNTHESIS PROGRAM"
- 60 OPEN "I",1,"PROTO"
- 70 INPUT #1,R,G,HCP,F1,F2,A1,Z
- 80 IF HCP=1 THEN K$="Y"
- 90 IF Z=1 THEN INPUT #1,N:Z$="Y":GOTO 120
- 100 Z$="N"
- 110 INPUT #1,A2
- 120 IF R<3 THEN INPUT #1,FC,FS:GOTO 140
- 130 INPUT #1,BW,SW,FCNTR
- 140 IF EOF(1) THEN CLOSE #1
- 150 GOSUB 3650
- 160 DEFDBL D,H:DEFINT I
- 170 DIM F(5),X(5),P(5),Z(5),Q(5),DO(30),DS(30),DA(30),DB(30),DC(30)
- 180 DIM D(30),V$(5),PR(5)
- 190 DE=.4342944819#:DEF FN LGT(X)=LOG(X)*DE:DPI=3.141592654000005#
- 200 AA=0:H1$=Z$
- 210 ON G GOSUB 500,910,1280
- 220 IF K$="Y" THEN GOSUB 3230
- 230 IF Z$="N" GOTO 260
- 240 IF K$="Y" THEN LPRINT:LPRINT "Attenuation of this "R$" at FS will be: "A"db"
- 250 PRINT:PRINT "Attenuation of this "R$" at FS will be: "A"db":GOTO 360
- 260 IF R>2 THEN NX=2*N:GOTO 280
- 270 NX=N
- 280 IF NX=1 THEN S$="st"
- 290 IF NX=2 THEN S$="nd"
- 300 IF NX=3 THEN S$="rd"
- 310 IF NX>3 THEN S$="th"
- 320 PRINT:PRINT "This "R$" will require a"NX S$" Order implementation"
- 330 IF K$="Y" THEN LPRINT:LPRINT "This "R$" will require a"NX S$" Order Implementation"
- 340 PRINT:PRINT "Actual Attenuation at FS will be "A"db"
- 350 IF K$="Y" THEN LPRINT:LPRINT "Actual Attenuation at FS will be "A"db"
- 360 IF N>10 THEN PRINT:PRINT "PROGRAM CANNOT ACCOMODATE THIS HIGH OF AN ORDER!!":GOTO 400
- 370 IF A<A2 THEN PRINT:PRINT "ORDER IS TOO HIGH!!!":GOTO 400
- 380 PRINT:PRINT: INPUT "IS THIS SATISFACTORY";H$:H$=LEFT$(H$,1)
- 390 GOTO 410
- 400 PRINT:PRINT "Re-Enter the entire filter.....":GOTO 480
- 410 IF H$="N" THEN PRINT "RE-ENTER ENTIRE FILTER......":GOTO 480
- 420 IF H$<>"Y" THEN GOTO 380
- 430 IF H$="Y" THEN ON G GOSUB 590,990,2620
- 440 IF R=1 GOTO 470
- 450 PRINT:PRINT "Now Transforming the Lowpass Prototype for the Required "R$
- 460 RUN "FILTRP.EXE"
- 470 PRINT:PRINT"DESIGN COMPLETE......"
- 472 PRINT" PRESS T - TRY ANOTHER FILTER"
- 474 PRINT" R - CALCULATE GAIN AND PHASE RESPONSE OF THIS FILTER"
- 476 PRINT" E - END (EXIT TO OPERATING SYSTEM)"
- 478 INPUT V$
- 480 IF V$="T" OR V$="t" THEN RUN "FILDES.EXE"
- 482 IF V$="R" OR V$="r" THEN RUN "FILPLT.EXE"
- 484 IF V$="E" OR V$="e" THEN SYSTEM
- 486 GOTO 472
- 490 REM END
- 500 REM BUTTERWORTH ORDER OR ATT
- 510 IF H1$="N" THEN 540
- 520 A2=10*FN LGT(1+(10^(.1*A1)-1)*(F2/F1)^(2*N)):A=A2
- 530 GOTO 570
- 540 N=FN LGT((10^(.1*A2)-1)/(10^(.1*A1)-1))/(2*FN LGT(F2/F1))
- 550 IF INT(N)<>N THEN N=INT(N)+1
- 560 A=10*FN LGT(1+(10^(.1*A1)-1)*(F2/F1)^(2*N))
- 570 RETURN
- 580 REM BUTTERWORTH FC & Q
- 590 M=INT (N/2)
- 600 F3=F1/(((10^(.1*A1)-1)/(10^.3-1))^(1/(2*N)))
- 610 FOR I=1 TO M:F(I)=F3:NEXT I
- 620 IF N>2*M THEN F(M+1)=F3
- 630 IF N=2*M THEN FOR I=1 TO M:O(I)=(DPI/(2*N))*(2*I-1):NEXT I
- 640 IF N<>2*M THEN FOR I=1 TO M:O(I)=DPI*I/N:NEXT I
- 650 FOR I=1 TO M:Q(I)=1/(2*COS(O(I))):NEXT I
- 660 IF K$="Y" THEN GOSUB 3030
- 670 OPEN "O",2,"IDATA"
- 680 PRINT #2,F1,0,M
- 690 IF M*2<>N THEN PRINT #2,1,F(M+1) ELSE PRINT #2,0
- 700 FOR I=1 TO M: PRINT#2, F(I),Q(I):NEXT I
- 710 CLOSE 2
- 720 IF R=1 AND K$="Y" THEN LPRINT:LPRINT "Required Resonant Frequencies:"
- 730 IF R=1 THEN PRINT:PRINT "Required Resonant Frequencies:":GOTO 750
- 740 PRINT:PRINT "Normalized Prototype Parameters:"
- 750 PRINT " F Q"
- 760 IF K$="Y" THEN LPRINT " F Q"
- 770 IF R=1 GOTO 840
- 780 FOR I=1 TO M : PRINT F(I),Q(I)
- 790 IF K$="Y" THEN LPRINT F(I),Q(I)
- 800 NEXT I
- 810 IF N/2 <> M THEN PRINT F(M+1) ELSE GOTO 890
- 820 IF K$="Y" THEN LPRINT F(M+1)
- 830 GOTO 890
- 840 OPEN "O",3,"PLTDATA"
- 841 IF N/2 <> M THEN PRINT #3,1,1,M+1 ELSE PRINT #3,1,1,M
- 843 FOR I=1 TO M:PRINT F(I)*FC,Q(I)
- 850 IF K$="Y" THEN LPRINT F(I)*FC,Q(I)
- 855 PRINT #3,F(I)*FC,Q(I)
- 860 NEXT I
- 870 IF N/2<>M THEN PRINT F(M+1)*FC ELSE 888
- 880 IF K$="Y" THEN LPRINT F(M+1)*FC
- 885 PRINT #3,F(M+1)*FC,0
- 888 CLOSE 3
- 890 RETURN
- 900 REM CHEBYCHEV ORDER OR ATT
- 910 Y=F2/F1:YY=LOG(Y+SQR(Y^2-1))
- 920 IF H1$="Y" THEN 960
- 930 E=10^(.1*A1)-1:F=10^(.1*A2)-1
- 940 X=SQR(F/E):XX=LOG(X+SQR(X^2-1))
- 950 N=XX/YY:IF INT(N)<>N THEN N=INT(N)+1
- 960 T=(EXP(N*YY)+EXP(-N*YY))/2:E=10^(.1*A1)-1
- 970 A=10*FN LGT(1+E*T^2):IF H1$="Y" THEN A2=A
- 980 RETURN
- 990 REM CHEBYCHEV F & Q
- 1000 NN=N:V=0
- 1010 GOSUB 1960
- 1020 IF K$="Y" THEN GOSUB 3090
- 1030 IF R=1 AND K$="Y" THEN LPRINT:LPRINT "Required Resonant Frequencies are:"
- 1040 IF R=1 THEN PRINT:PRINT "Required Resonant Frequencies are:":GOTO 1070
- 1050 PRINT:PRINT "Normalized Prototype Parameters are:"
- 1060 IF K$="Y" THEN LPRINT:LPRINT "Normalized Prototype Prameters are:"
- 1070 PRINT " F Q"
- 1080 IF K$="Y" THEN LPRINT " F Q"
- 1090 IF R=1 GOTO 1160
- 1100 FOR I=1 TO INT(N/2):PRINT P(I),Q(I)
- 1110 IF K$="Y" THEN LPRINT P(I),Q(I)
- 1120 NEXT I
- 1130 IF INT(N/2)<>N/2 THEN PRINT F(INT(N/2)+1) ELSE GOTO 1210
- 1140 IF K$="Y" THEN LPRINT F(INT(N/2)+1)
- 1150 GOTO 1210
- 1160 OPEN "O",3,"PLTDATA"
- 1162 IF N/2<>INT(N/2) THEN PRINT #3,1,2,INT(N/2)+1 ELSE PRINT #3,1,2,INT(N/2)
- 1167 FOR I=1 TO INT(N/2):PRINT P(I)*FC,Q(I)
- 1170 IF K$="Y" THEN LPRINT P(I)*FC,Q(I)
- 1175 PRINT #3,P(I)*FC,Q(I)
- 1180 NEXT I
- 1190 IF INT(N/2)<>N/2 THEN PRINT F(INT(N/2)+1)*FC ELSE GOTO 1207
- 1200 IF K$="Y" THEN LPRINT F(INT(N/2)+1)*FC
- 1205 PRINT #3,F(INT(N/2)+1)*FC,0
- 1207 CLOSE 3
- 1210 OPEN "O",2,"IDATA"
- 1220 PRINT #2,F1,0,INT(N/2)
- 1230 IF N/2<>INT (N/2) THEN PRINT #2,1,F(INT(N/2)+1)ELSE PRINT #2,0
- 1240 FOR I=1 TO N/2: PRINT #2, P(I),Q(I): NEXT I
- 1250 CLOSE 2
- 1260 RETURN
- 1270 REM ELLIPTIC ORDER OR ATT
- 1280 HE=10^(.1*A1)-1:HX=F2/F1
- 1290 PRINT:PRINT "BE PATIENT.....ELLIPTICS TAKE A WHILE!!!"
- 1300 H=SQR(1-1/HX/HX):GOSUB 1550
- 1310 H3=H4
- 1320 H =1/HX:GOSUB 1550
- 1330 H0=H4
- 1340 IF H1$="Y" THEN 1460
- 1350 HL=SQR((10^(.1*A2)-1)/HE)
- 1360 IF 1/HL<.001 THEN GOSUB 3260
- 1370 IF AA=1 THEN 1540
- 1380 H=1/HL
- 1390 GOSUB 1550
- 1400 H1=H4
- 1410 H=SQR(1-1/HL/HL)
- 1420 IF H=1 THEN H=1!
- 1430 GOSUB 1550
- 1440 H2=H4:H=1/HX:H4=H0
- 1450 N=INT(H2/H1*H4/H3)+1
- 1460 NN=0:HR=1
- 1470 IF N=2*INT(N/2) THEN NN=1
- 1480 FOR I=1 TO INT(N/2): GOSUB 1820:NEXT I
- 1490 FOR I=1 TO N/2: HR=HR*(1-Z(I)^2)/(1-X(I)^2): NEXT I
- 1500 HC=1/HR:X=HX:HR=HC*X^(1-NN)
- 1510 FOR I=1 TO N/2:HR=HR*(X^2-Z(I)^2)/(X^2-X(I)^2):NEXT I
- 1520 A=10*FN LGT(1+HE*HR^2)
- 1530 IF H1$="Y" THEN A2=A
- 1540 RETURN
- 1550 REM CALCULATE H4 COMPLETE INTEGRAL
- 1560 IF H=1 THEN DA(0)=DPI/2 ELSE DA(0)=ATN(H/SQR(1-H^2))
- 1570 DO(0)=DPI/2:HP=1:I=0
- 1580 DQ=DA(I):GOSUB 3380
- 1590 DV=2/(1+DQ1)-1
- 1600 DVW=DQ1
- 1610 DQ=DO(I):GOSUB 3380
- 1620 DW=DVW*DQ1
- 1630 IF DV=0 THEN DV=.0000001
- 1640 DA(I+1)=ATN(SQR(1-DV^2)/DV)
- 1650 IF SQR(1-DW^2)=0 THEN DO(I+1)=.5*(DO(I)+DPI/2):GOTO 1670
- 1660 DO(I+1)=.5*(DO(I)+ATN(DW/SQR(1-DW^2)))
- 1670 DZ=1-(DA(I+1)*2/DPI):I=I+1
- 1680 IF DZ>.0000001 THEN 1580
- 1690 FOR J=1 TO I
- 1700 DQ=DA(J)
- 1710 GOSUB 3510
- 1720 HP=HP*(1+DQ1)
- 1730 NEXT J
- 1740 DV=DPI/4+DO(I)/2
- 1750 DQ=DV:GOSUB 3380
- 1760 DSN=DQ1:DQ=DV:GOSUB 3510
- 1770 DCN=DQ1:IF DCN<0 THEN DCN=-1*DCN
- 1780 DTN=DSN/DCN
- 1790 H4=LOG(DTN)*HP
- 1800 RETURN
- 1810 REM ZERO LOCATIONS
- 1820 HU=(2*I-NN)*H4/N:GOSUB 1860
- 1830 Z(I)=HS:X(I)=HX/HS:F(I)=F1*X(I)
- 1840 RETURN
- 1850 REM SU(U,K)
- 1860 HQ=EXP(-DPI*H3/H4)
- 1870 HV=DPI/2*HU/H4:HS=0:J=0
- 1880 HW=HQ^(J+.5)
- 1890 Q=(2*J+1)*HV
- 1900 Q1=SIN(Q): IF Q1=0 THEN Q1=.0000001
- 1910 HS=HS+HW*Q1/(1-HW^2):J=J+1
- 1920 IF HW>.0000001 THEN 1880
- 1930 HS=HS*2*DPI/H/H4
- 1940 RETURN
- 1950 REM POLE AND Q CALCULATION
- 1960 D1=10^(.1*A1)-1:DE=SQR(D1):DF=F1*F1
- 1970 M=NN+2*V:MM=2*INT(M/2):D2=2*DPI
- 1980 DK=0:RG=0:T=M
- 1990 IF V=0 THEN 2010
- 2000 FOR I=1 TO V:Z(I)=SQR(1-DF/F(I)/F(I)):NEXT I
- 2010 GOSUB 2110
- 2020 GOSUB 2260
- 2030 IF M>MM THEN DC(2*M)=0
- 2040 FOR I=0 TO 2*M STEP 2:DA(M-I/2)=DC(I)+D(I):NEXT I
- 2050 GOSUB 2420
- 2060 RG=RG+1:D=1+P(RG)+Q(RG):DB(RG)=(1+P(RG)/2)*DF/D
- 2070 P(RG)=F1/D^.25:Q(RG)=1/SQR(2*(1-DB(RG)/P(RG)^2))
- 2080 IF RG<MM/2 THEN 2060
- 2090 IF M>MM THEN F(RG+1)=SQR(DF/(A-1))
- 2100 RETURN
- 2110 FOR I=1 TO NN:DS(I)=1:NEXT I
- 2120 IF V=0 THEN 2150
- 2130 FOR I=NN+1 TO NN+V:DS(I)=Z(I-NN):NEXT I
- 2140 FOR I=NN+V+1 TO NN+2*V:DS(I)=Z(I-NN-V):NEXT I
- 2150 SS=I-1:GOSUB 2340
- 2160 FOR I=0 TO MM STEP 2:DA(I)=DE*DB(I):NEXT I
- 2170 FOR I=0 TO 2*MM STEP 2:GOSUB 2190:NEXT I
- 2180 RETURN
- 2190 IF I=>MM+2 THEN 2210
- 2200 J1=0:J2=I
- 2210 IF I<=MM THEN 2230
- 2220 J1=I-MM:J2=MM
- 2230 DC(I)=0
- 2240 FOR J=J1 TO J2 STEP 2:DC(I)=DC(I)+DA(J)*DA(I-J):NEXT J
- 2250 RETURN
- 2260 FOR I=1 TO NN:DS(I)=-1:NEXT I
- 2270 IF V=0 THEN 2300
- 2280 FOR I=NN+1 TO NN+V:DS(I)=-Z(I-NN)^2:NEXT I
- 2290 FOR I=NN+V+1 TO NN+2*V:DS(I)=DS(I-V):NEXT I
- 2300 SS=M:GOSUB 2340
- 2310 Z=INT(NN):NN=Z:DD=(-1)^Z
- 2320 FOR I=0 TO 2*M STEP 2:D(I)=DD*DB(I/2):NEXT I
- 2330 RETURN
- 2340 DB(0)=DS(1):DB(1)=1:J=1
- 2350 J=J+1
- 2360 DA(0)=DS(J)*DB(0)
- 2370 FOR I=1 TO J-1:DA(I)=DB(I-1)+DS(J)*DB(I):NEXT I
- 2380 FOR I=0 TO J-1:DB(I)=DA(I):NEXT I
- 2390 DB(J)=1
- 2400 IF J<SS THEN 2350
- 2410 RETURN
- 2420 FOR I=1 TO T:DA(I)=DA(I)/DA(0):NEXT I
- 2430 DA(0)=1:DB(0)=1:DC(0)=1:I1=0
- 2440 IF T=2 THEN 2570
- 2450 HP=0:DQ=0:I1=I1+1
- 2460 DB(1)=DA(1)-HP:DC(1)=DB(1)-HP
- 2470 FOR I=2 TO T:DB(I)=DA(I)-HP*DB(I-1)-DQ*DB(I-2):NEXT I
- 2480 FOR I=2 TO T-1:DC(I)=DB(I)-HP*DC(I-1)-DQ*DC(I-2):NEXT I
- 2490 X1=T-1:X2=T-2:X3=T-3:D4=DC(X2)^2+DC(X3)*(DB(X1)-DC(X1))
- 2500 IF D4=0 THEN D4=.001
- 2510 D1=(DB(X1)*DC(X2)-DB(T)*DC(X3))/D4:HP=HP+D1
- 2520 D2=(DB(T)*DC(X2)-DB(X1)*(DC(X1)-DB(X1)))/D4:DQ=DQ+D2
- 2530 IF ABS(D1)+ABS(D2)>.000001 THEN 2460
- 2540 P(I1)=HP:Q(I1)=DQ:DA(1)=DA(1)-HP:T=T-2
- 2550 FOR I=2 TO T:DA(I)=DA(I)-HP*DA(I-1)-DQ*DA(I-2):NEXT I
- 2560 IF T> 2 THEN 2450
- 2570 IF T<> 2 THEN 2590
- 2580 I1=I1 + 1:P(I1)=DA(1):Q(I1)=DA(2)
- 2590 IF T=1 THEN A=-DA(1)
- 2600 RETURN
- 2610 REM ELLIPTIC F & Q
- 2620 V=INT(N/2)
- 2630 IF N/2=INT(N/2) THEN NN=0 ELSE NN=1
- 2640 GOSUB 1960
- 2650 IF K$="Y" THEN GOSUB 3150
- 2660 IF R=1 AND K$="Y" THEN LPRINT:LPRINT "Required Resonant Frequencies are:"
- 2670 IF R=1 THEN PRINT:PRINT "Required Resonant Frequencies are:":GOTO 2700
- 2680 PRINT:PRINT "Normalized Prototype Parameters are:"
- 2690 IF K$="Y" THEN LPRINT:LPRINT "Normalized Prototype Parameters are:"
- 2700 PRINT :PRINT " F Q"
- 2710 IF K$="Y" THEN LPRINT:LPRINT " F Q"
- 2720 IF R=1 GOTO 2790
- 2730 FOR I=1 TO V:PRINT P(I),Q(I)
- 2740 IF K$="Y" THEN LPRINT P(I),Q(I)
- 2750 NEXT I
- 2760 IF INT(N/2)<>N/2 THEN PRINT F(V+1) ELSE GOTO 2860
- 2770 IF K$="Y" THEN LPRINT F(V+1)
- 2780 GOTO 2860
- 2790 OPEN "O",3,"PLTDATA"
- 2792 IF INT(N/2)<>N/2 THEN PRINT #3,1,3,2*V+1 ELSE PRINT #3,1,3,2*V
- 2798 FOR I=1 TO V:PRINT P(I)*FC,Q(I)
- 2800 IF K$="Y" THEN LPRINT P(I)*FC,Q(I)
- 2805 PRINT #3,P(I)*FC,Q(I)
- 2810 NEXT I
- 2820 IF INT(N/2)<>N/2 THEN PRINT F(V+1)*FC ELSE GOTO 2840
- 2830 IF K$="Y" THEN LPRINT F(V+1)*FC
- 2835 PRINT #3,F(V+1)*FC,0
- 2840 PRINT:PRINT "Required zeros (or Notches) are:"
- 2850 IF K$="Y" THEN LPRINT:LPRINT "Required zeros (or Notches) are:"
- 2860 PRINT " Z"
- 2870 IF K$="Y" THEN LPRINT " Z"
- 2880 IF R=1 GOTO 2930
- 2890 FOR I=1 TO V:PRINT F(I)
- 2900 IF K$="Y" THEN LPRINT F(I)
- 2910 NEXT I
- 2920 GOTO 2955
- 2930 FOR I=1 TO V:PRINT F(I)*FC
- 2940 IF K$="Y" THEN LPRINT F(I)*FC
- 2944 PRINT #3,F(I)*FC,-1
- 2950 NEXT I
- 2955 CLOSE 3
- 2960 OPEN "O",2,"IDATA"
- 2970 PRINT #2,F1,INT(N/2),INT(N/2)
- 2980 IF N/2<>INT(N/2) THEN PRINT #2,1,F(V+1) ELSE PRINT #2,0
- 2990 FOR I=1 TO V:PRINT #2,1,0,F(I):NEXT I
- 3000 FOR I=1 TO V:PRINT #2,P(I),Q(I):NEXT I
- 3010 CLOSE
- 3020 RETURN
- 3030 REM BUTTERWORTH
- 3040 PRINT #1," F Q "
- 3050 FOR I=1 TO N/2:PRINT #1,F(I),Q(I):NEXT I
- 3060 IF INT(N/2)<>N/2 THEN PRINT #1,F(N/2+1)
- 3070 CLOSE 1
- 3080 RETURN
- 3090 REM CHEBYCHEV
- 3100 PRINT #1," F Q"
- 3110 FOR I=1 TO N/2: PRINT #1,P(I),Q(I):NEXT I
- 3120 IF INT(N/2)<>N/2 THEN PRINT #1,F(INT(N/2)+1)
- 3130 CLOSE 1
- 3140 RETURN
- 3150 REM ELLIPTIC
- 3160 PRINT #1," F Q"
- 3170 FOR I=1 TO V:PRINT #1,P(I),Q(I):NEXT I
- 3180 IF N/2<>V THEN PRINT #1,F(V+1)
- 3190 PRINT #1," Z"
- 3200 FOR I=1 TO V:PRINT #1,F(I):NEXT I
- 3210 CLOSE 1
- 3220 RETURN
- 3230 OPEN "O",#1,"LPT1"
- 3240 FOR I=0 TO 5:PRINT #1,V$(I),PR(I):NEXT I
- 3250 RETURN
- 3260 AA=1:N=2
- 3270 IF N=10 THEN PRINT " ORDER TOO HIGH FOR PROGRAM!!!":GOTO 3360
- 3280 N=N+1:NN=0:HR=1
- 3290 IF N=2*INT(N/2) THEN NN=1
- 3300 FOR I=1 TO INT(N/2):GOSUB 1820:NEXT I
- 3310 FOR I=1 TO N/2:HR=HR*(1-Z(I)^2)/(1-X(I)^2):NEXT I
- 3320 HC=1/HR:X=HX:HR=HC*X^(1-NN)
- 3330 FOR I=1 TO N/2:HR=HR*(X^2-Z(I)^2)/(X^2-X(I)^2):NEXT I
- 3340 A=10*FN LGT(1+HE*HR^2)
- 3350 IF A<A2 THEN 3270
- 3360 RETURN
- 3370 REM SERIES EXPANSION OF SIN(X)
- 3380 DFACT=1:SN=-1:DQ1=DQ
- 3390 FOR K=3 TO 15 STEP 2
- 3400 DFACT1=K*(K-1)
- 3410 DFACT=DFACT*DFACT1
- 3420 DZ=1
- 3430 FOR Q=1 TO K
- 3440 DZ=DZ*DQ
- 3450 NEXT Q
- 3460 DQX1=(DZ/DFACT)*SN
- 3470 DQ1=DQ1+DQX1
- 3480 SN=-1*SN
- 3490 NEXT K
- 3500 RETURN
- 3510 REM SERIES EXPANSION OF COS(X)
- 3520 DFACT=1:SN=-1:DQ1=1
- 3530 FOR K=2 TO 14 STEP 2
- 3540 DFACT1=K*(K-1)
- 3550 DFACT=DFACT*DFACT1
- 3560 DZ=1
- 3570 FOR Q=1 TO K
- 3580 DZ=DZ*DQ
- 3590 NEXT Q
- 3600 DQX1=(DZ/DFACT)*SN
- 3610 DQ1=DQ1+DQX1
- 3620 SN=-1*SN
- 3630 NEXT K
- 3640 RETURN
- 3650 IF R=1 THEN R$="LOWPASS"
- 3660 IF R=2 THEN R$="HIGHPASS"
- 3670 IF R=3 THEN R$="BANDPASS"
- 3680 IF R=4 THEN R$="NOTCH"
- 3690 IF G=1 THEN T$="BUTTERWORTH"
- 3700 IF G=2 THEN T$="CHEBYSHEV"
- 3710 IF G=3 THEN T$="ELLIPTIC"
- 3720 IF R=1 AND K$="Y" THEN LPRINT:LPRINT "Design for a "T$" Lowpass with:"
- 3730 IF R=1 THEN PRINT:PRINT "Design for an "T$" Lowpass with:":GOTO 3920
- 3740 PRINT:PRINT "Lowpass Prototype for this "T$" "R$" filter with:"
- 3750 IF K$="Y" THEN LPRINT:LPRINT "Lowpass Prototype for this "T$" "R$" filter with:"
- 3760 IF R=2 GOTO 3920
- 3770 PRINT:PRINT "Fcenter="FCNTR" Pass Bandwidth="BW" Stop Bandwidth="SW
- 3780 IF K$="Y" THEN LPRINT:LPRINT "Fcenter="FCNTR" Pass Bandwidth="BW" Stop Bandwidth="SW
- 3790 IF K$="Y" AND Z$="Y" THEN LPRINT:LPRINT "Amax="A1" Order="N
- 3800 IF Z$="Y" THEN PRINT:PRINT "Amax="A1" Order="N:GOTO 3830
- 3810 IF K$="Y" THEN LPRINT:LPRINT "Amax="A1" Amin="A2
- 3820 PRINT:PRINT "Amax="A1" Amin="A2
- 3830 PRINT:PRINT "Normalized Parameters are:"
- 3840 IF K$="Y" THEN LPRINT:LPRINT "Normalized Parameters are:"
- 3850 PRINT:PRINT "FC="F1" FS="F2" Amax="A1" ";
- 3860 IF K$="Y" THEN LPRINT:LPRINT "FC="F1" FS="F2" Amax="A1" ";
- 3870 IF K$="Y" AND Z$="Y" THEN LPRINT "N="N/2
- 3880 IF Z$="Y" THEN PRINT "N="N/2:N=N/2:GOTO 3910
- 3890 IF K$="Y" THEN LPRINT "Amin="A2
- 3900 PRINT "Amin="A2
- 3910 RETURN
- 3920 PRINT:PRINT "Corner Frequency="FC" Stop Frequency="FS" ";
- 3930 IF K$="Y" THEN LPRINT:LPRINT "Corner Frequency="FC" Stop Frequency="FS" ";
- 3940 IF K$="Y" AND Z$="Y" THEN LPRINT "Order="N" Amax="A1
- 3950 IF Z$="Y" THEN PRINT "Order="N" Amax="A1:GOTO 3980
- 3960 IF K$="Y" THEN LPRINT "Amax="A1" Amin="A2
- 3970 PRINT "Amax="A1" Amin="A2
- 3980 PRINT:PRINT "Normalized Parameters are:"
- 3990 IF K$="Y" THEN LPRINT:LPRINT "Normalized Parameters are:"
- 4000 PRINT:PRINT "FC="F1" FS="F2" Amax="A1" ";
- 4010 IF K$="Y" THEN LPRINT:LPRINT "FC="F1" FS="F2" Amax="A1" ";
- 4020 IF K$="Y" AND Z$="Y" THEN LPRINT "N="N
- 4030 IF Z$="Y" THEN PRINT "N="N:GOTO 4060
- 4040 PRINT "Amin="A2
- 4050 IF K$="Y" THEN LPRINT "Amin="A2
- 4060 RETURN