home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
tech
/
ee7
/
iftloop.bas
< prev
next >
Wrap
BASIC Source File
|
1989-01-22
|
14KB
|
619 lines
5 DEFSNG A-H: DEFINT I-N: DEFDBL O-Z: PI=3.141592653589794#
10 DIM D%(20),PR(20),PJ(20),ZR(20),ZJ(20),TPR(20),TPJ(20),TZR(20),TZJ(20)
12 DIM C#(2048),P(20),CXPLOT(1026),CYPLOT(1026)
15 CLS
20 PRINT"MENU"
30 PRINT
40 PRINT"MAKE PROGRAM CHOICE BELOW"
50 PRINT
60 PRINT"TYPE A TO LOAD FREQUENCY VARIABLES FROM FILE"
70 PRINT
80 PRINT"TYPE B TO LOAD FREQUENCY VARIABLES FROM KEYBOARD"
90 PRINT
100 PRINT"TYPE C TO EDIT FREQUENCY VARIABLE LIST"
110 PRINT
120 PRINT"TYPE D TO RUN POLYNOMIAL FILTER SYNTHESIS"
130 PRINT
140 PRINT"TYPE E TO RUN OPEN & CLOSED LOOP FREQUENCY RESPONSE"
150 PRINT
160 PRINT"TYPE F TO DETERMINE CLOSED LOOP NOISE BANDWIDTH"
170 PRINT
180 PRINT"TYPE G TO RUN CLOSED LOOP TRANSIENT RESPONSE"
190 PRINT
192 PRINT"TYPE Q TO QUIT"
194 PRINT
200 INPUT"PROGRAM CHOICE";A$
210 PRINT
220 IF A$="A" THEN 300
230 IF A$="B" THEN 320
240 IF A$="C" THEN 340
250 IF A$="D" THEN 360
260 IF A$="E" THEN 380
270 IF A$="F" THEN 400
280 IF A$="G" THEN 420
282 IF A$="Q" THEN 430
290 GOTO 15
300 GOSUB 1000
310 GOTO 15
320 GOSUB 5000
330 GOTO 15
340 GOSUB 10000
350 GOTO 15
360 GOSUB 15000
370 GOTO 15
380 GOSUB 20000
390 GOTO 15
400 GOSUB 25000
410 GOTO 15
420 GOSUB 30000
425 GOTO 15
430 PRINT
435 INPUT"QUIT (Y/N)";B$
440 IF B$="Y" THEN 460
450 GOTO 15
460 PRINT
470 INPUT"DO YOU WANT TO SAVE THE FREQUENCY VARIABLES IN A FILE (Y/N)";C$
480 IF C$="N" THEN 610
490 PRINT
500 INPUT"DECLARE FILENAME";D$
510 OPEN D$ FOR OUTPUT AS #1
515 WRITE #1,NZ%
520 IF NZ%=0 THEN 565
530 FOR I=1 TO NZ%
540 WRITE #1,ZR(I)
550 WRITE #1,ZJ(I)
560 NEXT I
565 WRITE #1,NP%
570 FOR I=1 TO NP%
580 WRITE #1,PR(I)
590 WRITE #1,PJ(I)
600 NEXT I
610 END
1000 CLS
1010 INPUT"DECLARE FILENAME";F$
1020 OPEN F$ FOR INPUT AS #1
1030 INPUT #1,NZ%
1040 IF NZ%=0 THEN 1090
1050 FOR I=1 TO NZ%
1060 INPUT #1,ZR(I)
1070 INPUT #1,ZJ(I)
1080 NEXT I
1090 INPUT #1,NP%
1100 FOR I=1 TO NP%
1110 INPUT #1,PR(I)
1120 INPUT #1,PJ(I)
1130 NEXT I
1135 CLOSE #1
1270 RETURN
5000 CLS
5010 PRINT"INPUT # OF ZEROS";
5020 INPUT NZ%
5030 PRINT"INPUT # OF POLES";
5040 INPUT NP%
5050 PRINT
5060 IF NZ%=0 THEN 5150
5070 FOR I=1 TO NZ%
5080 PRINT"ZERO #";I;"REAL PART";
5090 INPUT ZR(I)
5100 PRINT"ZERO #";I;"IMAGINARY PART";
5110 INPUT ZJ(I)
5130 NEXT I
5140 PRINT
5150 FOR I=1 TO NP%
5160 PRINT"POLE #";I;"REAL PART";
5170 INPUT PR(I)
5180 PRINT"POLE #";I;"IMAGINARY PART";
5190 INPUT PJ(I)
5200 NEXT I
5210 RETURN
10000 CLS
10010 PRINT"THERE ARE";NZ%;"ZEROES AND";NP%;"POLES"
10020 PRINT
10030 IF NZ%=0 THEN 10090
10040 FOR I=1 TO NZ%
10050 PRINT"ZERO #";I;"REAL PART IS";ZR(I)
10060 PRINT"ZERO #";I;"IMAGINARY PART IS";ZJ(I)
10070 NEXT I
10080 PRINT
10090 FOR I=1 TO NP%
10100 PRINT"POLE #";I;"REAL PART IS";PR(I)
10110 PRINT"POLE #";I;"IMAGINARY PART IS";PJ(I)
10120 NEXT I
10130 PRINT
10140 PRINT"EDIT ZEROES (Y/N)";
10150 INPUT B$
10160 PRINT
10170 IF B$="N" THEN 10750
10180 PRINT"ADD,DELETE,OR SUBSTITUTE (A,D,S)";
10190 INPUT C$
10200 PRINT
10210 IF C$="S" THEN 10630
10220 IF C$="D" THEN 10380
10230 IF C$="A" THEN 10240 ELSE 10180
10240 PRINT"HOW MANY";
10250 INPUT NC%
10260 ND%=NZ%+NC%
10270 PRINT
10280 FOR I=1 TO ND%
10290 IF I>NZ% THEN 10310
10300 GOTO 10350
10310 PRINT"ZER0 #";I;"REAL PART";
10320 INPUT ZR(I)
10330 PRINT"ZERO #";I;"IMAGINARY PART";
10340 INPUT ZJ(I)
10350 NEXT I
10360 NZ%=NZ%+NC%
10370 GOTO 10750
10380 PRINT"HOW MANY";
10390 INPUT NC%
10400 PRINT
10410 FOR J=1 TO NC%
10420 INPUT"DELETE ZERO #";D%(J)
10430 NEXT J
10440 M=0
10450 FOR J=1 TO NC%
10460 FOR I=1 TO NZ%
10470 IF I=D%(J) THEN 10510
10480 M=M+1
10490 TZR(M)=ZR(I)
10500 TZJ(M)=ZJ(I)
10510 NEXT I
10520 NEXT J
10530 NZ%=NZ%-NC%
10560 FOR I=1 TO NZ%
10570 ZR(I)=TZR(I)
10580 ZJ(I)=TZJ(I)
10590 NEXT I
10620 GOTO 10750
10630 FOR I=1 TO NZ%
10640 PRINT"ZERO #";I;"IS";ZR(I);"AND J";ZJ(I)
10650 PRINT
10660 PRINT"CHANGE (Y/N)";
10670 INPUT D$
10675 PRINT
10680 IF D$="N" THEN 10740
10700 PRINT"ZERO #";I;"REAL PART";
10710 INPUT ZR(I)
10720 PRINT"ZERO #";I;"IMAGINARY PART";
10730 INPUT ZJ(I)
10740 NEXT I
10750 PRINT
10760 PRINT"EDIT POLES (Y/N)";
10770 INPUT A$
10780 IF A$="N" THEN 11380
10790 PRINT
10800 REM START POLE EDIT
10810 PRINT"ADD,DELETE,OR SUBSTITUTE POLES (A,D,S)";
10820 INPUT A$
10830 PRINT
10840 IF A$="S" THEN 11260
10850 IF A$="D" THEN 11010
10860 IF A$="A" THEN 10870 ELSE 10810
10870 PRINT"HOW MANY";
10880 INPUT NC%
10890 ND%=NP%+NC%
10900 PRINT
10910 FOR I=1 TO ND%
10920 IF I>NP% THEN 10940
10930 GOTO 10980
10940 PRINT"POLE #";I;"REAL PART";
10950 INPUT PR(I)
10960 PRINT"POLE #";I;"IMAGINARY PART";
10970 INPUT PJ(I)
10980 NEXT I
10990 NP%=NP%+NC%
11000 GOTO 11380
11010 PRINT"HOW MANY";
11020 INPUT NC%
11030 PRINT
11040 FOR J=1 TO NC%
11050 INPUT"DELETE POLE #";D%(J)
11060 NEXT J
11070 M=O
11080 FOR J=1 TO NC%
11090 FOR I=1 TO NP%
11100 IF I=D%(J) THEN 11140
11110 M=M+1
11120 TPR(M)=PR(I)
11130 TPJ(M)=PJ(I)
11140 NEXT I
11150 NEXT J
11160 NP%=NP%-NC%
11190 FOR I=1 TO NP%
11200 PR(I)=TPR(I)
11210 PJ(I)=TPJ(I)
11220 NEXT I
11250 GOTO 11380
11260 FOR I=1 TO NP%
11270 PRINT"POLE #";I;"IS";PR(I);"AND J";PJ(I)
11280 PRINT
11290 PRINT"CHANGE (Y/N)";
11300 INPUT C$
11305 PRINT
11310 IF C$="N" THEN 11370
11330 PRINT"POLE #";I;"REAL PART";
11340 INPUT PR(I)
11350 PRINT"POLE #";I;"IMAGINARY PART";
11360 INPUT PJ(I)
11370 NEXT I
11380 RETURN
15000 CLS
15010 PRINT"REQUIRED ATTENUATION IN dB";
15020 INPUT Z21
15040 PRINT
15050 PRINT"INPUT CUTTOFF FREQUENCY RATIO OF REQUIRED ATTENUATION";
15060 INPUT W
15070 IF W<=1# THEN 15050
15080 PRINT
15090 PRINT"PERMISSABLE PASSBAND RIPPLE IN dB , 0dB FOR BUTTERWORTH";
15100 INPUT R
15120 K#=10#^(Z21/10#)
15125 IF R=0 THEN 15440
15130 RES=(10#^(R/10#))-1#
15140 RE=SQR(RES)
15150 TW=SQR((K#-1#)/RES)
15160 FOR I=1 TO 20
15170 KA#=((W+SQR(W^2#-1#))^I+(W+SQR(W^2#-1#))^(1#/I))/2#
15180 IF KA#=>TW THEN 15200
15190 NEXT I
15200 PRINT
15210 PRINT"N=";I
15230 PRINT
15240 PRINT"RESULTS SATISFACTORY (Y/N)";
15250 INPUT A$
15260 IF A$="Y" THEN 15270 ELSE 15000
15270 X=(SQR((1#/RES)+1#)+1#/RE)^(1#/I)
15280 Y=1#/X
15290 SINH=(X-Y)/2#
15300 COSH#=(X+Y)/2#
15310 N%=I-1
15320 PRINT
15330 PRINT"FREQUENCY SCALE FACTOR";
15340 INPUT KF#
15350 PRINT
15370 PRINT
15380 FOR J=0 TO N%
15390 PR(J+1+NP%)=KF#*(-SINH*(SIN(((2#*J+1#)*PI)/(2#*I))))
15400 PJ(J+1+NP%)=KF#*(COSH#*(COS(((2#*J+1#)*PI)/(2#*I))))
15420 NEXT J
15430 GOTO 15610
15440 FOR I=1 TO 20
15450 KA#=1+W^(2#*I)
15460 IF KA#=>K# THEN 15480
15470 NEXT I
15480 PRINT
15490 PRINT"N=";I
15500 PRINT
15510 INPUT"RESULTS SATISFACTORY";A$
15520 IF A$="Y" THEN 15530 ELSE 15000
15530 PRINT
15540 INPUT"FREQUENCY SCALE FACTOR";KF#
15550 N%=I
15560 FOR J=1 TO N%
15570 P(J)=PI/2#+(PI/(2#*N%))*(2#*J-1#)
15580 PR(J+NP%)=KF#*(COS(P(J)))
15590 PJ(J+NP%)=KF#*(SIN(P(J)))
15600 NEXT J
15610 N=I
15620 J=0
15622 FOR L=1 TO N
15624 TPR(L)=PR(NP%+L)
15626 TPJ(L)=PJ(NP%+L)
15628 NEXT L
15630 FOR L=1 TO N
15640 J=J+1
15670 IF ABS(TPJ(L))=>ABS((10^-6)*TPR(L)) THEN 15680 ELSE 15750
15680 IF TPJ(L)<0 THEN 15770
15690 PR(NP%+J)=TPR(L)
15700 PJ(NP%+J)=TPJ(L)
15710 PR(NP%+J+1)=TPR(L)
15720 PJ(NP%+J+1)=-TPJ(L)
15730 J=J+1
15740 GOTO 15770
15750 PR(NP%+J)=TPR(L)
15760 PJ(NP%+J)=0#
15770 NEXT L
15780 NP%=NP%+I
15790 RETURN
20000 CLS
20010 KN#=1#
20020 IF NZ%=0 THEN 20080
20030 FOR I=1 TO NZ%
20040 ZT=ABS(ZR(I))+ABS(ZJ(I))
20050 IF ZT=0 THEN 20070
20060 KN#=KN#*SQR(ZR(I)^2+ZJ(I)^2)
20070 NEXT I
20080 KD#=1#
20090 FOR I=1 TO NP%
20100 PT=ABS(PR(I))+ABS(PJ(I))
20110 IF PT=0 THEN 20130
20120 KD#=KD#*SQR(PR(I)^2+PJ(I)^2)
20130 NEXT I
20140 PRINT
20150 PRINT"INPUT LOOP GAIN";
20160 INPUT U
20170 K#=(KD#/KN#)*U
20172 PRINT
20174 INPUT"PLOT (Y/N)";P$
20180 PRINT
20190 PRINT "START FREQ.";
20200 INPUT WS
20210 PRINT"NUMBER OF DECADES";
20220 INPUT WF
20222 IF P$="Y" THEN 20252
20230 PRINT"DECADE INCREMENT";
20240 INPUT WD
20250 N%=WF/WD
20251 GOTO 20260
20252 N%=500:WD=WF/500
20260 PRINT
20270 PRINT
20272 IF P$="Y" THEN 20290
20280 PRINT USING"\ \";"W","H(W)-dB","THETA(W)","H(W)'-dB","THETA(W)'"
20290 FOR I=0 TO N%
20300 W=WS*(10^(I*WD))
20310 PM=1
20320 PT=0
20330 TD=0
20340 FOR J=1 TO NP%
20350 PM=PM/(SQR(PR(J)^2+(W-PJ(J))^2))
20360 IF PR(J)=0 THEN 20390
20370 PT=PT+ATN((W-PJ(J))/PR(J))
20380 GOTO 20400
20390 PT=PT-PI/2
20400 NEXT J
20410 IF NZ%=0 THEN 20490
20420 FOR H=1 TO NZ%
20430 PM=PM*SQR(ZR(H)^2+(W-ZJ(H))^2)
20440 IF ZR(H)=0 THEN 20470
20450 PT=PT-ATN((W-ZJ(H))/ZR(H))
20460 GOTO 20480
20470 PT=PT+PI/2
20480 NEXT H
20490 PM=PM*K#
20500 R=PM*COS(PT)
20510 S=PM*SIN(PT)
20520 R=R+1
20530 MC#=PM/(SQR(R*R+S*S))
20540 X=R/(SQR(R*R+S*S))
20550 IF 1-X*X=0 THEN 20570
20560 PC=PT-SGN(S)*(PI/2-ATN(X/SQR(1-X*X)))
20570 XM=8.68589*LOG(PM)
20580 XC=8.68589*LOG(MC#)
20582 IF P$="Y" THEN 20592
20590 PRINT USING"##.###^^^^ ";W,XM,PT,XC,PC
20591 GOTO 20600
20592 CXPLOT(I)=W:CYPLOT(I)=XC
20600 NEXT I
20601 IF P$="Y" THEN 20602 ELSE 20610
20602 CLS
20603 NCURVES!=1
20604 NPOINTS!=500
20605 CALL PLOT((NCURVES!),(NPOINTS!),CXPLOT(),CYPLOT())
20610 PRINT
20620 PRINT"NEW GAIN VALUE (Y/N)";
20630 INPUT A$
20640 PRINT
20650 IF A$="Y" THEN 20150
20660 RETURN
25000 CLS
25010 KN#=1#
25020 IF NZ%=0 THEN 25080
25030 FOR I=1 TO NZ%
25040 ZT=ABS(ZR(I))+ABS(ZJ(I))
25050 IF ZT=0 THEN 25070
25060 KN#=KN#*SQR(ZR(I)^2+ZJ(I)^2)
25070 NEXT I
25080 KD#=1#
25090 FOR I=1 TO NP%
25100 PT=ABS(PR(I))+ABS(PJ(I))
25110 IF PT=0 THEN 25130
25120 KD#=KD#*SQR(PR(I)^2+PJ(I)^2)
25130 NEXT I
25140 PRINT
25150 PRINT"INPUT LOOP GAIN";
25160 INPUT U
25170 K#=(KD#/KN#)*U
25180 PRINT
25190 PRINT"INPUT APPROXIMATE -3dB RADIAN FREQUENCY";
25200 INPUT WC
25210 PRINT
25220 XN=0
25230 FOR A%=1 TO 3
25240 IF A%=1 THEN 25270
25250 WD=WC*(10^(A%-3))
25260 GOTO 25540
25270 FOR B%=1 TO 100
25280 WD=WC/100#
25290 W=WD*B%
25300 PM=1
25310 PT=0
25320 FOR J=1 TO NP%
25330 PM=PM/(SQR(PR(J)^2+(W-PJ(J))^2))
25340 IF PR(J)=0 THEN 25370
25350 PT=PT+ATN((W-PJ(J))/PR(J))
25360 GOTO 25380
25370 PT=PT-PI/2
25380 NEXT J
25390 IF NZ%=0 THEN 25470
25400 FOR H=1 TO NZ%
25410 PM=PM*SQR(ZR(H)^2+(W-ZJ(H))^2)
25420 IF ZR(H)=0 THEN 25450
25430 PT=PT-ATN((W-ZJ(H))/ZR(H))
25440 GOTO 25460
25450 PT=PT+PI/2
25460 NEXT H
25470 PM=PM*K#
25472 IF PM=>1# AND ABS(PT)>PI THEN 25474 ELSE 25480
25474 PRINT
25476 PRINT"THE SYSTEM IS UNSTABLE"
25478 GOTO 25810
25480 R=PM*COS(PT)
25490 S=PM*SIN(PT)
25500 R=R+1
25510 XN=XN+((PM*PM)/(R*R+S*S))*WD
25520 NEXT B%
25530 IF A%=1 THEN 25790
25540 FOR C%=1 TO 90
25550 W=WD*(10+C%)
25560 PM=1
25570 PT=0
25580 FOR J=1 TO NP%
25590 PM=PM/(SQR(PR(J)^2+(W-PJ(J))^2))
25600 IF PR(J)=0 THEN 25630
25610 PT=PT+ATN((W-PJ(J))/PR(J))
25620 GOTO 25640
25630 PT=PT-PI/2
25640 NEXT J
25650 IF NZ%=0 THEN 25730
25660 FOR H=1 TO NZ%
25670 PM=PM*SQR(ZR(H)^2+(W-ZJ(H))^2)
25680 IF ZR(H)=0 THEN 25710
25690 PT=PT-ATN((W-ZJ(H))/ZR(H))
25700 GOTO 25720
25710 PT=PT+PI/2
25720 NEXT H
25730 PM=PM*K#
25740 R=PM*COS(PT)
25750 S=PM*SIN(PT)
25760 R=R+1
25770 XN=XN+((PM*PM)/(R*R+S*S))*WD
25780 NEXT C%
25790 NEXT A%
25800 PRINT "THE LOOP NOISE BANDWIDTH IS";XN;"RAD/SEC"
25810 PRINT
25820 PRINT"NEW LOOP GAIN (Y/N)";
25830 INPUT A$
25840 PRINT
25850 IF A$="N" THEN 25860 ELSE 25150
25860 RETURN
30000 CLS
30010 KN#=1
30020 IF NZ%=0 THEN 30080
30030 FOR I=1 TO NZ%
30040 ZT=ABS(ZR(I))+ABS(ZJ(I))
30050 IF ZT=0 THEN 30070
30060 KN#=KN#*SQR(ZR(I)^2+ZJ(I)^2)
30070 NEXT I
30080 KD#=1
30090 FOR I=1 TO NP%
30100 PT=ABS(PR(I))+ABS(PJ(I))
30110 IF PT=0 THEN 30130
30120 KD#=KD#*SQR(PR(I)^2+PJ(I)^2)
30130 NEXT I
30140 PRINT
30150 PRINT"INPUT LOOP GAIN";
30160 INPUT U
30170 K#=(KD#/KN#)*U
30180 PRINT
30190 INPUT"AUTOSCALE TIME BASE (Y/N)";Q$
30200 IF Q$="N" THEN 30590
30210 NO%=0
30220 FOR I=1 TO NP%
30230 IF PR(I)=0 AND PJ(I)=0 THEN 30240 ELSE 30250
30240 NO%=NO%+1
30250 NEXT I
30260 IF NO%=0 THEN 30570
30270 WS=U^(1/NO%)
30280 WL=WS/1024
30290 WU=0
30300 FOR I=20 TO 0 STEP -1
30310 W=WL*(2#^I)+WU
30320 PM=1
30330 PT=0
30340 TD=0
30350 FOR J=1 TO NP%
30360 PM=PM/(SQR(PR(J)^2+(W-PJ(J))^2))
30370 IF PR(J)=0 THEN 30400
30380 PT=PT+ATN((W-PJ(J))/PR(J))
30390 GOTO 30410
30400 PT=PT-PI/2
30410 NEXT J
30420 IF NZ%=0 THEN 30500
30430 FOR H=1 TO NZ%
30440 PM=PM*SQR(ZR(H)^2+(W-ZJ(H))^2)
30450 IF ZR(H)=0 THEN 30480
30460 PT=PT-ATN((W-ZJ(H))/ZR(H))
30470 GOTO 30490
30480 PT=PT+PI/2
30490 NEXT H
30500 PM=PM*K#
30510 IF PM<1# THEN 30530
30520 WU=WU+W
30530 NEXT I
30540 WS=.025#*PI*WU
30550 T=(2#*PI)/WS
30560 GOTO 30620
30570 PRINT
30580 PRINT"CANNOT AUTOSCALE TIME BASE"
30590 PRINT
30600 INPUT"FULL SCALE TIME BASE (IN SECONDS)";T
30610 WS=(2#*PI)/T
30620 PRINT
30630 INPUT"STEP OR IMPULSE RESPONSE (S/I)";A$
30640 PRINT
30650 C#(0)=1#
30660 C#(1)=0#
30670 FOR I=1 TO 1023
30680 W=WS*I
30690 PM=1
30700 PT=0
30710 TD=0
30720 FOR J=1 TO NP%
30730 PM=PM/(SQR(PR(J)^2+(W-PJ(J))^2))
30740 IF PR(J)=0 THEN 30770
30750 PT=PT+ATN((W-PJ(J))/PR(J))
30760 GOTO 30780
30770 PT=PT-PI/2
30780 NEXT J
30790 IF NZ%=0 THEN 30870
30800 FOR H=1 TO NZ%
30810 PM=PM*SQR(ZR(H)^2+(W-ZJ(H))^2)
30820 IF ZR(H)=0 THEN 30850
30830 PT=PT-ATN((W-ZJ(H))/ZR(H))
30840 GOTO 30860
30850 PT=PT+PI/2
30860 NEXT H
30870 PM=PM*K#
30880 IF PM =>1# AND ABS(PT)>PI THEN 30890 ELSE 30920
30890 PRINT
30900 PRINT"THE SYSTEM IS UNSTABLE"
30910 GOTO 31230
30920 R=PM*COS(PT)
30930 S=PM*SIN(PT)
30940 R=R+1
30950 MC#=PM/(SQR(R*R+S*S))
30955 MC#=MC#*(1/(1+(W/(WS*316))^6))
30960 X=R/(SQR(R*R+S*S))
30970 IF 1-X*X=0 THEN 30990
30980 PC=PT-SGN(S)*(PI/2-ATN(X/SQR(1-X*X)))
30990 PC=PC-(80*PI*I)/1023
31000 C#(2*I)=MC#*COS(PC)
31010 C#(2*I+1)=MC#*SIN(PC)
31020 NEXT I
31030 PRINT
31040 N%=10
31050 NORM%=2
31060 SCALE=1#
31070 CALL RIFT(C#(0),N%,NORM%,SCALE)
31080 PRINT
31090 PRINT
31100 IF A$="I" THEN 31140
31110 FOR I=1 TO 1023
31120 C#(I)=C#(I)+C#(I-1)-C#(0)
31130 NEXT I
31132 FOR I=1 TO 1023
31134 C#(I)=C#(I)/C#(1023)
31136 NEXT I
31140 FOR I=1 TO 1024
31150 CYPLOT(I)=C#(I-1):CXPLOT(I)=(I-1)*(T/1023)
31160 NEXT I
31162 CLS
31170 NCURVES!=1
31180 NPOINTS!=1024
31190 CALL PLOT((NCURVES!),(NPOINTS!),CXPLOT(),CYPLOT())
31200 INPUT"NEW LOOP GAIN";A$
31210 IF A$="N" THEN 31230
31220 GOTO 30000
31230 RETURN