home *** CD-ROM | disk | FTP | other *** search
Wrap
GW-BASIC | 1986-03-21 | 32.1 KB | 488 lines
10 DEFINT C,K:C0=0:C1=1:C2=2:C3=3:C4=4:C5=5:C6=6:C7=7:C8=8:C9=9:C10=10:C11=11:C12=12:C13=13:C14=14:C19=19:C20=20:C39=39:CC=100:CK=1000:K9=-C1:L0=K9 20 DIM D(19,14),F(19,14),V(19,10),O(5,14) 30 FLAG$="NNNNNN":PI=3.14159:RD=180/PI:FI$=STRING$(C20," "):FO$=FI$:FILE$=STRING$(CC," "):L$=STRING$(39," "):WIDTH 40 40 E$="SHTOPNOSTSSTTRLCPLRLCRCLVCSCCSTFRRLPRCPLCPRLSRCSLCSRESINSCPSIMSTWOONEIMPCPPINPREPCLSCRSLRSCLPCRPLRPLCRCLRCAXCASSERPARBALINVEQUIMACEBCECEND":GOTO 2340 50 W5=W1*W3-W2*W4:W2=W1*W4+W2*W3:W1=W5:RETURN 60 W5=W3*W3+W4*W4:IF W5<0 THEN W5=0 70 W6=(W1*W3+W2*W4)/W5:W2=(W2*W3-W1*W4)/W5:W1=W6:RETURN 80 W3=W1*COS(W2):W2=W1*SIN(W2):W1=W3:RETURN 90 IF W1=C0 THEN W3=SGN(W2)*PI/C2:GOTO 110 100 W3=ATN(W2/W1)+PI*(W1<C0)*SGN(W1*W2) 110 W1=SQR(W1*W1+W2*W2):W2=W3:RETURN 120 W1=C0:FOR L1=D(K2,C3) TO C0 STEP -C1:W1=W1*F(K1,C0)+V(L2,L1):NEXT L1:RETURN 130 FOR L1=C0 TO K8-C1:IF D(L1,C1)<>K3 THEN NEXT L1 140 K3=L1:RETURN 150 FOR K0=C7 TO C9 STEP C2:W1=D(K5,K0):W2=D(K5,K0+C1):W3=D(K3,K0):W4=D(K3,K0+C1):GOSUB 50:F(K1,K0-C4)=W1:F(K1,K0-C3)=W2:NEXT K0 160 W1=D(K3,C5):W2=D(K3,C6):FOR K0=C7 TO C9 STEP C2:W3=D(K5,K0):W4=D(K5,K0+C1):GOSUB 50:NEXT K0:W8=W1:W9=W2 170 W1=D(K5,C11):W2=D(K5,C12):FOR K0=C7 TO C9 STEP C2:W3=D(K3,K0):W4=D(K3,K0+C1):GOSUB 50:NEXT K0:W6=W1:W7=W2 180 W1=C1+D(K3,C5):W2=D(K3,C6):W3=C1-D(K5,C11):W4=C0-D(K5,C12):GOSUB 50:W3=W1-D(K3,C5)+D(K5,C11):W4=W2-D(K3,C6)+D(K5,C12):W1=D(K5,C5):W2=D(K5,C6):GOSUB 50 190 F(K1,C1)=W1+W8:F(K1,C2)=W2+W9:W1=D(K3,C11):W2=D(K3,C12):GOSUB 50:F(K1,C7)=W1+W6:F(K1,C8)=W2+W7 200 FOR K0=C5 TO C11 STEP C2:W1=F(K1,K0-C4):W2=F(K1,K0-C3):GOSUB 60:D(K2,K0)=W1:D(K2,K0+C1)=W2:NEXT K0:RETURN 210 W1=D(K2,C9):W2=D(K2,C10):W3=D(K2,C7):W4=D(K2,C8):GOSUB 50:W6=W1:W7=W2:W1=-C1-D(K2,C5):W2=C0-D(K2,C6):W3=-C1-D(K2,C11) 220 W4=C0-D(K2,C12):D(K2,C11)=W1:D(K2,C12)=W2:GOSUB 50:D(K2,C5)=W3:D(K2,C6)=W4:W3=(W6-W1)/C2:W4=(W7-W2)/C2 230 FOR K0=C5 TO C11 STEP C2:W1=D(K2,K0):W2=D(K2,K0+C1):GOSUB 60:D(K2,K0)=W1+(K0=C5)+(K0=C11):D(K2,K0+C1)=W2:NEXT K0:RETURN 240 L9=L9-1:Q$=INKEY$:ON -(Q$="Q") GOTO 4370:IF L9>=0 THEN O(L9,5)=1.001*O(L9,5) 250 L8=L8+1:GOSUB 320:W1=0:FOR K1=0 TO K9:W2=F(K1,1)*F(K1,1)+F(K1,2)*F(K1,2):IF W2<0 THEN W2=0 260 W2=C10*LOG(W2)/LOG(C10)-F(K1,C9):W3=F(K1,C7)*F(K1,C7)+F(K1,C8)*F(K1,C8):IF W3<0 THEN W3=0 270 W3=C10*LOG(W3)/LOG(C10)-F(K1,C11):W4=F(K1,C3)*F(K1,C3)+F(K1,C4)*F(K1,C4):IF W4<0 THEN W4=0 280 W4=C10*LOG(W4)/LOG(C10)-F(K1,C13):IF F(K1,C14)<C0 AND W4<C0 THEN W4=C0 290 W1=W1-W2*W2*F(K1,C10)*(W2>C0)-W3*W3*F(K1,C12)*(W3>C0)+W4*W4*ABS(F(K1,C14)):NEXT K1:W1=W1/K1:IF W1=C0 THEN 4320 300 IF L9>=C0 THEN O(L9,5)=O(L9,5)/1.001:O(L9,6)=W1:GOTO 240 310 FOR L9=0 TO L0:O(L9,6)=1000*(O(L9,6)/W1-1):NEXT L9:RETURN 320 FOR K1=C0 TO L0:D(O(K1,C0),O(K1,C2))=O(K1,5):NEXT K1 330 FOR K1=C0 TO K9:OM=C2*PI*F(K1,C0):FOR K2=C0 TO K8-C1:K3=D(K2,C0)+C1:K4=K2:W1=C0:W2=W1:W3=W1:W4=W1 340 ON K3 GOTO 420,420,430,430,460,490,600,680,380,380,400,610,590,630,690,670,650,700,660,640,560 350 ON K3-21 GOTO 750,560,560,640,660,700,650,670,690,630,590,610,680,600 360 K4=D(K2,C4):IF K3<46 THEN K5=D(K2,C13):ON K3-35 GOTO 760,770,830,830,780,580,890,820,830,830 370 FOR K3=C1 TO C8:F(K1,K3)=D(K4,K3+C4):NEXT K3:GOTO 900 380 W2=D(K2,C3)/RD:W4=-(C2-98*(K3=C9))*D(K2,C2) 390 D(K2,C5)=C1+C2*(K3=C10):D(K2,C7)=W4*COS(W2):D(K2,C9)=C0:D(K2,C11)=C1:W4=W4*SIN(W2):GOTO 410 400 W2=D(K2,C2)/D(K2,C3):W3=W2*W2+C1:D(K2,C5)=(W3-C2)/W3:D(K2,C7)=C2*W2/W3:D(K2,C9)=D(K2,C7):D(K2,C11)=C0-D(K2,C5) 410 FOR K0=C3 TO C6:D(K2,C2*K0)=C0-W4*(K0=C4):NEXT K0:GOTO 900 420 W3=C1+C2*(K3=C1):GOTO 740 430 W3=OM*D(K2,C3)/(360*D(K2,C4)):W2=SIN(W3):W3=COS(W3):IF K3=C4 THEN W1=W2:W2=C0-W3:W3=W1 440 W2=25*W2/D(K2,C2):IF ABS(W3)<0 THEN W3=0 450 W5=W2/W3:W1=C1/(C1+W5*W5):W2=C0-W1*W5:W3=W2*W5:W4=W2:GOTO 740 460 W9=(D(K2,C2)-50)/(D(K2,C2)+50):W8=OM*D(K2,C3)/(D(K2,C4)*-360):W7=SIN(W8):W8=COS(W8):W1=C1-C2*W7*W7:W2=C2*W7*W8 470 W3=C1-W9*W9*W1:W4=C0-W9*W9*W2:W1=W9*(C1-W1):W2=C0-W9*W2:W9=C1-W9*W9:GOSUB 60 480 W0=W1:W1=W9*W8:W8=W2:W2=W9*W7:GOSUB 60:W3=W0:W4=W8:GOTO 740 490 W0=(D(K2,C2)-D(K2,C3))/(D(K2,C2)+D(K2,C3)):W1=OM/(C4*D(K2,C4)):W2=C1-W0*W0:W3=COS(W1) 500 W4=W0*W3:W0=SQR(D(K2,C2)*D(K2,C3)):W4=W2/(C1-W4*W4):W3=W3*SQR(W2):IF ABS(W3)<0 THEN W3=0 510 W0=(50-W0)/(50+W0):W8=SQR(W4):W6=SQR(C1-W4):W9=-PI*(W3<C0)-ATN(SIN(W1)/W3) 520 W7=PI/C2+W9:W1=W6*COS(W7):W2=W6*SIN(W7):W3=W8*COS(W9):W4=W8*SIN(W9):W8=(W1+W2)*(W1-W2)+(W3+W4)*(W3-W4) 530 W9=C2*(W1*W2+W3*W4):W6=C2*(W1*W3-W2*W4):W7=C2*(W1*W4+W2*W3):W1=W0*(W6+W7)*(W6-W7):W2=C2*W0*W6*W7 540 W3=W8-W0:W4=C1-W0*W8:W5=C0-W0*W9:W8=W3*W4-W5*W9+W1:W9=W3*W5+W4*W9+W2:W3=(W4+W5)*(W4-W5)-W0*W1 550 W4=C2*W4*W5-W0*W2:W0=C1-W0*W0:W1=W0*W6:W2=W0*W7:GOSUB 60:W6=(W8*W3+W9*W4)/W5:W4=(W9*W3-W8*W4)/W5:W3=W6:GOTO 740 560 L2=D(K2,C4)+C1:GOSUB 120:W2=W1:L2=L2-C1:GOSUB 120:IF K3<>23 THEN 710 570 D(K2,C5)=W1:D(K2,C6)=W2:FOR K3=C7 TO C12:D(K2,K3)=C0+(K3=C11):NEXT K3:GOTO 900 580 W3=C1-D(K5,C5):W4=C0-D(K5,C6):W1=50*(C2-W3):W2=50*W4:GOSUB 60:W1=W1-50:GOTO 710 590 W4=OM*D(K2,C3)/CK:GOTO 620 600 W4=OM*D(K2,C4)/CK 610 W4=W4-C1/(OM*D(K2,C3)) 620 W3=C1/D(K2,C2):W1=C1:GOSUB 60:GOTO 710 630 W2=OM*D(K2,C2)/(C1-OM*OM*D(K2,C2)*D(K2,C3)/CK):GOTO 710 640 W2=-CK/(OM*D(K2,C2)):GOTO 710 650 W2=-CK/(OM*D(K2,C3)) 660 W2=W2+OM*D(K2,C2):GOTO 710 670 W2=-CK/(OM*D(K2,C3)):GOTO 700 680 W2=-CK/(OM*D(K2,C4)) 690 W2=W2+OM*D(K2,C3) 700 W1=D(K2,C2) 710 W1=W1/CC:W2=W2/CC:IF K3>22 THEN W3=W1:W4=W2:W1=0.25:W2=C0:GOSUB 60 720 W3=C1+W1:W4=W2:GOSUB 60 730 W3=W1:W4=W2:W1=C1-W1:W2=C0-W2:IF K3>22 THEN W3=C0-W3:W4=C0-W4 740 D(K4,C5)=W3:D(K4,C6)=W4:D(K4,C7)=W1:D(K4,C8)=W2:D(K4,C9)=W1:D(K4,C10)=W2:D(K4,C11)=W3:D(K4,C12)=W4:GOTO 900 750 L2=D(K2,C4):FOR K3=C5 TO C12:GOSUB 120:D(K2,K3)=W1:L2=L2+C1:NEXT K3:GOTO 900 760 FOR L2=D(K2,C2)+C1 TO D(K2,C3):K3=L2:GOSUB 130:GOSUB 150:K5=K2:NEXT L2:GOTO 890 770 K3=D(K2,C14):GOSUB 150 :GOTO 890 780 W9=PI*F(K1,C0)*0.5/D(K2,C3):W8=COS(W9):W2=SIN(W9):W7=0.5/(C1-0.25*W8*W8):W1=SQR(0.5)*W8:GOSUB 90 790 W8=W2:W9=SQR(C1-W7):W1=W7-W9*W9:W2=-C2*W8:GOSUB 80:W3=W1:W4=W2:FOR K0=C5 TO C11 STEP C6 800 W1=D(K5,K0):W2=D(K5,K0+C1):GOSUB 50:D(K4,K0)=W1:D(K4,K0+C1)=W2:NEXT K0:W1=C2*SQR(W7)*W9:W2=-C2*W8+0.5*PI:GOSUB 80 810 W3=W1:W4=W2:FOR K0=C7 TO C9 STEP C2:W1=D(K5,K0):W2=D(K5,K0+C1):GOSUB 50:D(K4,K0)=W1:D(K4,K0+C1)=W2:NEXT K0:GOTO 900 820 FOR K0=C5 TO C11 STEP C2:FOR K3=C0 TO C1:D(K2,K0+K3)=D(K5,16-K0+K3):NEXT K3:NEXT K0:GOTO 890 830 FOR K0=C5 TO C12:D(K2,K0)=(C1+C2*(K3=38))*D(K5,K0):NEXT K0:GOSUB 210:ON 46-K3 GOTO 870,860 840 FOR K0=C5 TO C12:F(K1,K0-C4)=D(K2,K0):D(K2,K0)=(C1+C2*(K3=38))*D(D(K2,C14),K0):NEXT K0:GOSUB 210 850 FOR K0=C5 TO C12:D(K2,K0)=D(K2,K0)+F(K1,K0-C4):NEXT K0:GOSUB 210:GOTO 890 860 FOR K0=C7 TO C11 STEP C2:D(K2,C5)=D(K2,C5)+D(K2,K0):D(K2,C6)=D(K2,C6)+D(K2,K0+C1):NEXT K0:GOTO 880 870 FOR K0=C5 TO C9 STEP C2:D(K2,C11)=D(K2,C11)+D(K2,K0):D(K2,C12)=D(K2,C12)+D(K2,K0+C1):NEXT K0 880 FOR K0=C7 TO C9 STEP C2:D(K2,K0)=C0-D(K2,K0)-D(K2,C5-C6*(K3=44)):D(K2,K0+C1)=C0-D(K2,K0+C1)-D(K2,C6-C6*(K3=44)):NEXT K0:GOSUB 210 890 FOR K0=C5 TO C12:D(K4,K0)=(C1+C2*(K3=38))*D(K2-(K5-K2)*(K3=42),K0):NEXT K0 900 NEXT K2:NEXT K1:MID$(FLAG$,C2)="Y":RETURN 910 LPRINT " ERROR #";ERR;" OCCURRED IN LINE #";ERL;CHR$(C7):RESUME 2340 920 PRINT CHR$(7);"EXIT: Are you sure (Y/N)?":K0=ASC(INPUT$(1)):RETURN 930 INPUT "Disk directory:",FC$:IF FC$="" THEN RETURN 940 MID$(FLAG$,6)="N":ON ERROR GOTO 1050:CLS:PRINT " DISK DIRECTORY" 950 FILES FC$:FOR K1=0 TO 20:W1=SCREEN(K1+3,1):IF W1=32 THEN 970 960 NEXT K1 970 MID$(FLAG$,6)="N":PRINT " Wouldst thou like a hard copy (Y/N)?"; 980 LOCATE CSRLIN,1:C$=INPUT$(1):IF C$<>"Y" THEN RETURN 990 PRINT " Title ";:LOCATE CSRLIN,C7 1000 INPUT L$:LOCATE CSRLIN-1,1:L$=L$+STRING$(39-LEN(L$)," ") 1010 ON ERROR GOTO 1040:LPRINT L$:FOR K0=1 TO 2+K1:FOR K3=1 TO 39 1020 K4=SCREEN(K0,K3):MID$(L$,K3)=CHR$(K4):NEXT K3:LPRINT L$ 1030 L$=STRING$(39," "):NEXT K0:RETURN 1040 PRINT " PRINTER? WHAT PRINTER? ";CHR$(7):RESUME 1100 1050 IF ERR=53 THEN PRINT CHR$(7);" FILE ";FC$;" NOT FOUND.";:RESUME 1100 1060 IF ERR=61 OR ERR=67 THEN PRINT CHR$(7);" DISKETTE IS FULL. GET ANOTHER. ";:RESUME 1100 1070 IF ERR=70 THEN PRINT CHR$(7);" DISKETTE IS WRITE PROTECTED. ";:RESUME 1100 1080 IF ERR=71 THEN PRINT CHR$(7);" DISK DRIVE IS NOT READY. ";:RESUME 1100 1090 PRINT CHR$(7);" UNSPECIFIED I/O ERROR. ";:RESUME 1100 1100 FOR K0=1 TO 1000:FOR K3=1 TO 1000:IF INKEY$="" THEN NEXT K3:NEXT K0 1110 RETURN 1120 INPUT " Enter file name:",FC$:RETURN 1130 ON ERROR GOTO 1170:OPEN FD$ FOR INPUT AS #1:CLOSE #1 1140 PRINT CHR$(7);" Overwrite current ";FC$;" (Y/N)?"; 1150 LOCATE CSRLIN,1:K0=ASC(INPUT$(1)):IF K0<>89 THEN RETURN 1160 CLOSE #1:OPEN FD$ FOR OUTPUT AS #1:K0=89:RETURN 1170 ON -(ERR<>53) GOTO 1050:RESUME 1160 1180 IF MID$(FLAG$,C2,C1)="Y" THEN 1220 1190 IF MID$(FLAG$,C1,C1)="N" THEN PRINT " CAN'T, NO NETWORK.";CHR$(C7):GOTO 2490 1200 IF MID$(FLAG$,C5,C1)="N" THEN PRINT " CAN'T, NO FREQUENCIES.";CHR$(C7):GOTO 2390 1210 PRINT " PERFORMING RESPONSE ANALYSIS":GOSUB 330 1220 K5=C8:CLS:PRINT " RESPONSE MENU":PRINT:PRINT" 1 -Reflection S-parameters":PRINT" 2 -Transmission S-parameters":PRINT" 3 -Input/output impedances" 1230 PRINT" 4 -Return/transmission losses":PRINT" 5 -Save S-parameters on disk":PRINT" 6 -Input stability circles":PRINT" 7 -Output stability circles":PRINT" 8 -Plot reflection parameters" 1240 PRINT " 9 -Plot return losses":PRINT " 0 -Plot transmission losses":PRINT " RET -Return" 1250 CLOSE #1:ON ERROR GOTO 910:LOCATE 15,1:PRINT L$:PRINT L$:LOCATE 15,1:K0=ASC(INPUT$(1)):ON -(K0=13) GOTO 2340:IF K0=63 THEN GOSUB 930:GOTO 1220 1260 IF K0>47 THEN ON K0-47 GOSUB 2140,1300,1380,1340,1420,1450,1480,1480,1670,1940:GOTO 1220 1270 PRINT CHR$(7):GOTO 1250 1280 IF F(K1,C0)>=C1 THEN MID$(L$,C1,C7)=STR$(F(K1,C0)):RETURN 1290 MID$(L$,C2,C7)=MID$(STR$(F(K1,C0)+C1),C3):RETURN 1300 CLS:PRINT " FREQ S11 S22":PRINT " in GHz MAG ANGLE MAG ANGLE" 1310 FOR K1=C0 TO K9:FOR K2=C1 TO C7 STEP C6:W1=F(K1,K2):W2=F(K1,K2+C1):GOSUB 90 1320 K3=(15*K2+39)/C6:MID$(L$,K3,C6)=STR$(INT(CK*W1+0.5)/CK) 1330 MID$(L$,K3+C8,C7)=STR$(INT(CC*W2*RD+0.5)/CC):NEXT K2:GOSUB 1280:PRINT L$:L$=STRING$(C39," "):NEXT K1:GOTO 970 1340 CLS:PRINT " FREQ IMPEDANCES":PRINT" in GHz INPUT OUTPUT" 1350 FOR K1=C0 TO K9:GOSUB 1280:FOR K2=C1 TO C7 STEP C6:K3=(C8*K2+C19)/C3:W3=C1-F(K1,K2):W4=C0-F(K1,K2+C1):W1=5000*(C2-W3):W2=-5000*W4:GOSUB 60 1360 MID$(L$,K3,C6)=STR$(INT(W1+0.5)/CC):MID$(L$,K3+C6,C2)="+j":IF SGN(W2)<C0 THEN MID$(L$,K3+C6,C2)="-j" 1370 MID$(L$,K3+C8,C6)=STR$(ABS(INT(W2+0.5)/CC)):NEXT K2:PRINT L$:L$=STRING$(C39," "):NEXT K1:GOTO 970 1380 CLS:PRINT " FREQ S21 S12":PRINT " in GHz MAG ANGLE MAG ANGLE" 1390 FOR K1=C0 TO K9:GOSUB 1280:FOR K2=C3 TO C5 STEP C2:W1=F(K1,K2):W2=F(K1,K2+C1):GOSUB 90 1400 K3=(15*K2-27)/C2:MID$(L$,K3,C7)=STR$(INT(CK*W1+0.5)/CK) 1410 MID$(L$,K3+C8,C7)=STR$(INT(CC*W2*RD+0.5)/CC):NEXT K2:PRINT L$:L$=STRING$(C39," "):NEXT K1:GOTO 970 1420 CLS:PRINT " FREQ S11 S21 S12 S22":PRINT " in GHz in dB in dB in dB in dB" 1430 FOR K1=C0 TO K9:GOSUB 1280:FOR K2=C1 TO C7 STEP C2:K3=C4*K2+C5:W1=F(K1,K2)*F(K1,K2)+F(K1,K2+C1)*F(K1,K2+C1):IF W1<0 THEN W1=0 1440 MID$(L$,K3,C7)=STR$(INT(CK*LOG(W1)/LOG(C10)+0.5)/CC):NEXT K2:PRINT L$:L$=STRING$(C39," "):NEXT K1:GOTO 970 1450 GOSUB 1120:ON -(FC$="") GOTO 1250:FD$=FC$+".DAT":GOSUB 1130:ON -(K0<>89) GOTO 1250:ON ERROR GOTO 1250 1460 FOR K2=C0 TO K9:PRINT #C1,F(K2,C0):FOR K3=C1 TO C7 STEP C2:W1=F(K2,K3) 1470 W2=F(K2,K3+C1):GOSUB 90:PRINT #C1,W1:PRINT #C1,W2*RD:NEXT K3:NEXT K2:RETURN 1480 IF MID$(FLAG$,C3,C1)="Y" THEN 1590 1490 PRINT " PERFORMING STABILITY ANALYSIS":FOR K1=C0 TO K9:W1=F(K1,C5):W2=F(K1,C6):W3=F(K1,C3):W4=F(K1,C4):GOSUB 50 1500 W7=W1:W8=W2:W9=W1*W1+W2*W2:W9=SQR(W9-0*(W9<0)):W1=F(K1,C1):W2=F(K1,C2):L1=W1:L2=W2:L3=L1*L1+L2*L2:W0=(W3*W3+W4*W4)*(C1-L3) 1510 W3=F(K1,C7):W4=F(K1,C8):L4=W3:L5=W4:L6=L4*L4+L5*L5:GOSUB 50:W3=W1-W7:W4=W2-W8:W8=W3*W3+W4*W4 1520 W1=L4:W2=C0-L5:GOSUB 50:W5=L3-W8-0*(L3=W8):L7=L1-W1:W1=L7/W5:L8=L2-W2:W2=L8/W5:W6=W3:GOSUB 90 1530 W3=W6:W6=SQR(L3):D(K1,C5)=(C1-W5-L6)/(C2*W9-0*(W9=C0)) 1540 D(K1,C6)=W1:D(K1,C7)=-RD*W2:D(K1,C8)=ABS(W9/W5):MID$(FI$,K1+C1)=CHR$(73-C6*((W6<C1 AND W5>C0) OR (W6>C1 AND W5<C0))) 1550 W1=L1:W2=C0-L2:GOSUB 50:W5=L6-W8-0*(L6=W8):W1=(L4-W1)/W5:W2=(L5-W2)/W5:GOSUB 90:W6=SQR(L6) 1560 D(K1,C9)=W1:D(K1,C10)=-RD*W2:D(K1,C11)=ABS(W9/W5):MID$(FO$,K1+C1)=CHR$(73-C6*((W6<C1 AND W5>C0) OR (W6>C1 AND W5<C0))) 1570 IF D(K1,C5)>=C1 THEN W1=L1:W2=C0-L2:W3=L7:W4=L8:GOSUB 50:D(K1,C12)=C10*LOG(W0/(C1-L6+L3*(L3-W8)-C2*W1))/LOG(C10) 1580 FOR K2=C5 TO C12:D(K1,K2)=INT(CC*D(K1,K2)+0.5)/CC:NEXT K2:NEXT K1:MID$(FLAG$,C3)="Y" 1590 IF K0<>54 THEN 1630 1600 CLS:PRINT " FREQ INPUT STABILITY CIRCLES STAB":PRINT " in GHz DIST ANGLE RADIUS I/O FACTOR"; 1610 FOR K1=C0 TO K9:GOSUB 1280:FOR K2=C6 TO C8:K3=C7*K2-33:MID$(L$,K3,C6)=STR$(D(K1,K2)):NEXT K2 1620 MID$(L$,32,C1)=MID$(FI$,K1+C1):MID$(L$,34,C6)=STR$(D(K1,C5)):PRINT L$:L$=STRING$(C39," "):NEXT K1:GOTO 970 1630 CLS:PRINT " FREQ OUTPUT STABILITY CIRCLES Gmax":PRINT" in GHz DIST ANGLE RADIUS I/O in dB" 1640 FOR K1=C0 TO K9:GOSUB 1280:FOR K2=C9 TO C11:K3=C7*K2-54:MID$(L$,K3,C7)=STR$(D(K1,K2)):NEXT K2 1650 MID$(L$,32,C1)=MID$(FO$,K1+C1):IF D(K1,C5)>=C1 THEN MID$(L$,34,C6)=STR$(D(K1,C12)) 1660 PRINT L$:L$=STRING$(C39," "):NEXT K1:GOTO 970 1670 W5=C1:FOR K1=CO TO K9:IF ABS(F(K1,C1))>1.6 THEN W5=ABS(F(K1,C1))/1.6 1680 IF ABS(F(K1,C2))>C1 THEN W5=ABS(F(K1,C2)) 1690 IF ABS(F(K1,C7))>1.6 THEN W5=ABS(F(K1,C7))/1.6 1700 IF ABS(F(K1,C8))>C1 THEN W5=ABS(F(K1,C8)) 1710 NEXT K1:CLS:SCREEN C1,C0:COLOR C0,C1:PRINT "PRESS ANY KEY NORMALIZED TOTO RETURN 50 OHMS" 1720 CIRCLE (160,100),100/W5,3,,,0.99 1730 CIRCLE (160+100/W5,100*(1-1/W5)),100/W5,3,PI,248/RD,1 1740 CIRCLE (160+100/W5,100*(1+1/W5)),100/W5,3,112/RD,PI,1 1750 LINE (160-100/W5,100)-(160+100/W5,100),3 1760 CIRCLE (160+16/W5,100),83/W5,3,60/RD,300/RD,1 1770 CIRCLE (160+33/W5,100),67/W5,3,35/RD,325/RD,1 1780 CIRCLE (160+50/W5,100),50/W5,3,45/RD,315/RD,1 1790 CIRCLE (160+100/W5,100-50/W5),50/W5,3,142/RD,270/RD,1 1800 CIRCLE (160+100/W5,100+50/W5),50/W5,3,90/RD,218/RD,1 1810 CIRCLE (160+100/W5,100-19/W5),19/W5,3,113/RD,270/RD,1 1820 CIRCLE (160+100/W5,100+19/W5),19/W5,3,90/RD,247/RD,1 1830 CIRCLE (160+67/W5,100),33/W5,3,,,1 1840 CIRCLE (160+83/W5,100),17/W5,3,,,1 1850 CIRCLE (160+100/W5,100-200/W5),200/W5,3,218.5/RD,259/RD,1 1860 CIRCLE (160+100/W5,100+200/W5),200/W5,3,101/RD,141.5/RD,1 1870 CIRCLE (160+100/W5,100-500/W5),500/W5,3,245.5/RD,261.5/RD,1 1880 CIRCLE (160+100/W5,100+500/W5),500/W5,3,98.5/RD,114.5/RD,1 1890 PSET(160+100*F(0,1)/W5,100-100*F(0,2)/W5),3:IF K9>0 THEN FOR K1=1 TO K9:LINE -(160+100*F(K1,1)/W5,100-100*F(K1,2)/W5),3:NEXT K1 1900 LOCATE INT(12.5-11.5*F(K9,2)/W5),INT(20+12.5*F(K9,1)/W5):PRINT "S11";:IF K5<>8 THEN 1930 1910 PSET(160+100*F(0,7)/W5,100-100*F(0,8)/W5),3:IF K9>0 THEN FOR K1=1 TO K9:LINE -(160+100*F(K1,7)/W5,100-100*F(K1,8)/W5),3:NEXT K1 1920 LOCATE INT(12.5-11.5*F(K9,8)/W5),INT(20+12.5*F(K9,7)/W5):PRINT "S22"; 1930 C$=INPUT$(1):SCREEN 0,0:RETURN 1940 W1=F(0,1):W2=F(0,2):W1=INT(100*LOG(W1*W1+W2*W2)/LOG(10))/10:W2=W1+0.1 1950 W3=F(0,7):W4=F(0,8):W3=INT(100*LOG(W3*W3+W4*W4)/LOG(10))/10:W4=W3+0.1 1960 FOR K1=1 TO K9:W5=INT(100*LOG(F(K1,1)*F(K1,1)+F(K1,2)*F(K1,2))/LOG(10))/10 1970 IF W5<W1 THEN W1=W5 1980 W5=W5+0.1:IF W5>W2 THEN W2=W5 1990 W5=INT(100*LOG(F(K1,7)*F(K1,7)+F(K1,8)*F(K1,8))/LOG(10))/10 2000 IF W5<W3 THEN W3=W5 2010 W5=W5+0.1:IF W5>W4 THEN W4=W5 2020 NEXT K1:W7=LOG(F(K9,0))/LOG(10):W7=10^(1+(W7<0)*INT(W7)):W5=INT(W7*F(0,0))/W7 2030 W6=INT(W7*F(K9,0)):W6=(W6-(W6<W7*F(K9,0)))/W7:W7=(W2-W1)/5:W8=(W4-W3)/5:W9=(W6-W5)/5 2040 CLS:SCREEN 1,0:COLOR 0,1:FOR K1=1 TO 11:PRINT " . . . . . . . . . . .":PRINT:NEXT K1 2050 PSET (34,1):LINE -(34,166):LINE -(275,166):LINE -(275,1) 2060 FOR K1=0 TO 5:LOCATE K1*4+1,1:PRINT MID$(STR$(W2-K1*W7),2+((W2-K1*W7)<0),4) 2070 LOCATE K1*4+1,36:PRINT MID$(STR$(W4-K1*W8),2+((W4-K1*W8)<0),5):NEXT K1 2080 FOR K1=0 TO 5:LOCATE 22,K1*6+3:PRINT MID$(STR$(W5+K1*W9),2,5):NEXT K1 2090 W7=F(0,1):W8=F(0,2):PSET (35+INT(239*(F(0,0)-W5)/(W6-W5)),5+INT(160*(W2-10*LOG(W7*W7+W8*W8)/LOG(10))/(W2-W1))) 2100 FOR K1=1 TO K9:W7=F(K1,1):W8=F(K1,2):LINE -(35+INT(239*(F(K1,0)-W5)/(W6-W5)),5+INT(160*(W2-10*LOG(W7*W7+W8*W8)/LOG(10))/(W2-W1))):NEXT K1 2110 W7=F(0,7):W8=F(0,8):PSET (35+INT(239*(F(0,0)-W5)/(W6-W5)),5+INT(160*(W4-10*LOG(W7*W7+W8*W8)/LOG(10))/(W4-W3))) 2120 FOR K1=1 TO K9:W7=F(K1,7):W8=F(K1,8):LINE -(35+INT(239*(F(K1,0)-W5)/(W6-W5)),5+INT(160*(W4-10*LOG(W7*W7+W8*W8)/LOG(10))/(W4-W3))):NEXT K1 2130 LOCATE 23,1:PRINT " S11 Frequency in GHz S22":PRINT "in dB PRESS ANY KEY TO RETURN in dB";:C$=INPUT$(1):SCREEN 0,0:RETURN 2140 W1=F(0,3):W2=F(0,4):W1=INT(100*LOG(W1*W1+W2*W2)/LOG(10))/10:W2=W1+0.1 2150 W3=F(0,5):W4=F(0,6):W3=INT(100*LOG(W3*W3+W4*W4)/LOG(10))/10:W4=W3+0.1 2160 FOR K1=1 TO K9:W5=INT(100*LOG(F(K1,3)*F(K1,3)+F(K1,4)*F(K1,4))/LOG(10))/10 2170 IF W5<W1 THEN W1=W5 2180 W5=W5+0.1:IF W5>W2 THEN W2=W5 2190 W5=INT(100*LOG(F(K1,5)*F(K1,5)+F(K1,6)*F(K1,6))/LOG(10))/10 2200 IF W5<W3 THEN W3=W5 2210 W5=W5+0.1:IF W5>W4 THEN W4=W5 2220 NEXT K1:W7=LOG(F(K9,0))/LOG(10):W7=10^(1+(W7<0)*INT(W7)):W5=INT(W7*F(0,0))/W7 2230 W6=INT(W7*F(K9,0)):W6=(W6-(W6<W7*F(K9,0)))/W7:W7=(W2-W1)/5:W8=(W4-W3)/5:W9=(W6-W5)/5 2240 CLS:SCREEN 1,0:COLOR 0,1:FOR K1=1 TO 11:PRINT " . . . . . . . . . . .":PRINT:NEXT K1 2250 PSET (34,1):LINE -(34,166):LINE -(275,166):LINE -(275,1) 2260 FOR K1=0 TO 5:LOCATE K1*4+1,1:PRINT MID$(STR$(W2-K1*W7),2+((W2-K1*W7)<0),4) 2270 LOCATE K1*4+1,36:PRINT MID$(STR$(W4-K1*W8),2+((W4-K1*W8)<0),5):NEXT K1 2280 FOR K1=0 TO 5:LOCATE 22,K1*6+3:PRINT MID$(STR$(W5+K1*W9),2,5):NEXT K1 2290 W7=F(0,3):W8=F(0,4):PSET (35+INT(239*(F(0,0)-W5)/(W6-W5)),5+INT(160*(W2-10*LOG(W7*W7+W8*W8)/LOG(10))/(W2-W1))) 2300 FOR K1=1 TO K9:W7=F(K1,3):W8=F(K1,4):LINE -(35+INT(239*(F(K1,0)-W5)/(W6-W5)),5+INT(160*(W2-10*LOG(W7*W7+W8*W8)/LOG(10))/(W2-W1))):NEXT K1 2310 W7=F(0,5):W8=F(0,6):PSET (35+INT(239*(F(0,0)-W5)/(W6-W5)),5+INT(160*(W4-10*LOG(W7*W7+W8*W8)/LOG(10))/(W4-W3))) 2320 FOR K1=1 TO K9:W7=F(K1,5):W8=F(K1,6):LINE -(35+INT(239*(F(K1,0)-W5)/(W6-W5)),5+INT(160*(W4-10*LOG(W7*W7+W8*W8)/LOG(10))/(W4-W3))):NEXT K1 2330 LOCATE 23,1:PRINT " S21 Frequency in GHz S12":PRINT "in dB PRESS ANY KEY TO RETURN in dB";:C$=INPUT$(1):SCREEN 0,0:RETURN 2340 CLS:LOCATE 1,15:PRINT "ALMOND MENU":PRINT:PRINT" 1 -Edit network":PRINT" 2 -Enter frequency" 2350 PRINT " 3 -Determine response":PRINT" 4 -Optimize network":PRINT " 5 -End program" 2360 LOCATE 16,13:PRINT "COPYRIGHT 1983":PRINT:PRINT " MACADAMIA SOFTWARE" 2370 ON ERROR GOTO 910:LOCATE 11,1:PRINT L$:PRINT L$:LOCATE 11,1:K0=ASC(INPUT$(1)) 2380 ON (K0>48)*(48-K0) GOTO 2490,2390,1180,4000,2480:PRINT CHR$(7):GOTO 2370 2390 INPUT "FIRST FREQUENCY ";FC$:W1=VAL(FC$):ON -(W1=0) GOTO 2370:W3=0:K9=-1:MID$(FLAG$,2)="NNNYN" 2400 LOCATE 11,1:MID$(L$,1,14)= "LAST FREQUENCY":MID$(L$,19)=STR$(W1):PRINT L$ 2410 L$=STRING$(39," "):PRINT L$:K9=K9+1:F(K9,0)=W1:IF K9<19 THEN 2430 2420 LOCATE 12,1:PRINT "LIMIT REACHED";CHR$(7);L$:GOSUB 1100:GOTO 2370 2430 IF W3>F(K9,0) AND W1+W2<=W3 THEN W1=W1+W2:GOTO 2400 2440 LOCATE 12,1:INPUT "NEXT FREQUENCY ";FC$:W2=VAL(FC$):ON -(W2=0) GOTO 2370 2450 IF W2>W1 THEN W1=W2:GOTO 2400 2460 LOCATE 12,1:PRINT L$:LOCATE 12,1:INPUT "NEXT FREQUENCY ";FC$:W3=VAL(FC$) 2470 ON 2+(W3=0) GOTO 2370,2430 2480 GOSUB 920:ON -(K0<>89 AND K0<>121) GOTO 2370:WIDTH 80:END 2490 GOSUB 1120:ON -(FC$="") GOTO 2540:ON ERROR GOTO 3070:OPEN FC$+".NET" FOR INPUT AS #C1:MID$(FLAG$,C1)="FNN":FILE$=STRING$(CC," "):K6=C0:K7=C0:K8=C0:L0=-C1 2500 ON ERROR GOTO 3100:FOR K8=C0 TO C19:INPUT #C1,K1,W1:D(K8,C1)=W1:IF K1<C2 OR K1=45 THEN 2530 2510 IF K1>C19 AND K1<24 THEN INPUT #C1,FC$:K6=K6+C2-C6*(K1=21):K7=K7+C1:D(K8,C2)=K7:MID$(FILE$,C10*K7-C9,C10)=FC$:GOTO 2530 2520 FOR K3=C1 TO C1-(K1<17 OR (K1>26 AND K1<40))-(K1<C8 OR (K1>32 AND K1<35)):INPUT #C1,W1:D(K8,K3+C1)=W1:NEXT K3 2530 D(K8,C0)=K1:NEXT K8 2540 K1=C0:IF MID$(FLAG$,C6,C1)="Y" THEN 2590 2550 CLS:LOCATE C1,C13:PRINT"NETWORK EDITOR":LOCATE C14,C14:PRINT "EDITOR MENU":PRINT 2560 PRINT " 1 -Add an element 6 -New network":PRINT " 2 -Modify element 7 -Edit data files" 2570 PRINT " 3 -Delete element > -Page forward":PRINT " 4 -List network < -Page backward" 2580 PRINT " 5 -Save network RET -Return":MID$(FLAG$,C6)="Y" 2590 LOCATE C3,C1:MID$(L$,C2,C11)="LINE NUMBER":MID$(L$,C20,C3)=STR$(C1+K1):PRINT L$:L$=STRING$(39," "):MID$(L$,C2,C12)="ELEMENT TYPE":IF K1<K8 THEN K3=D(K1,C0):MID$(L$,21,C3)=MID$(E$,C3*K3+C1) 2600 PRINT L$:L$=STRING$(C39," "):MID$(L$,C2,C14)="ELEMENT NUMBER":IF K1<K8 THEN MID$(L$,C20,C3)=STR$(D(K1,C1)) 2610 PRINT L$:L$=STRING$(C39," "):K2=C1:IF K1>=K8 OR K3<C2 OR K3=45 THEN 2650 2620 IF K3>C19 AND K3<24 THEN MID$(L$,C2,C9)="FILE NAME":MID$(L$,21,C10)=MID$(FILE$,C10*D(K1,C2)-C9):PRINT L$:L$=STRING$(C39," "):GOTO 2650 2630 FOR K2=C1 TO C1-(K3<17 OR (K3>26 AND K3<40))-(K3<C8 OR (K3>32 AND K3<35)):MID$(L$,C2,C11)="PARAMETER #" 2640 MID$(L$,C13,C2)=STR$(K2):MID$(L$,C20,C10)=STR$(INT(D(K1,K2+C1)*CK+0.5)/CK):PRINT L$:L$=STRING$(C39," "):NEXT K2 2650 FOR K3=K2 TO C3:PRINT L$:NEXT K3 2660 CLOSE # C1:LOCATE C11,C1:PRINT L$:PRINT L$:LOCATE C11,C1:K0=ASC(INPUT$(C1)):IF K0=49 AND K8<C20 THEN 2760 2670 ON (K8>K1)*(K0>49)*(K0-49) GOTO 2930,2940:ON (K8>C0)*(K0>51)*(K0-51) GOTO 3110,3020 2680 ON (K0>53)*(53-K0) GOTO 3450,3460:ON (K0>59)*(59-K0) GOTO 2730,2700,2710,2750 2690 ON (K0=C13)*((K8>C0)+(MID$(FLAG$,C1,C1)<>"Y")) GOTO 3440,3180 2700 PRINT CHR$(C7):GOTO 2660 2710 IF K1>=K8 OR K1=C19 THEN K1=-C1 2720 K1=K1+C1:GOTO 2590 2730 IF K1=C0 THEN K1=K8-(K8=C0) 2740 K1=K1-C1:GOTO 2590 2750 GOSUB 930:GOTO 2540 2760 IF K1<K8 THEN FOR K3=C1 TO C2:LOCATE C3+K3,C19:PRINT " ":NEXT K3:PRINT L$:PRINT L$:PRINT L$ 2770 LOCATE C4,C19:INPUT C$: IF C$="" THEN 2590 2780 FOR K2=C0 TO 45:IF C$<>MID$(E$,C3*K2+C1,C3) THEN NEXT K2:GOTO 2920 2790 IF K1<K8 THEN FOR K3=K8-C1 TO K1 STEP -C1:FOR K4=C0 TO C4:D(K3+C1,K4)=D(K3,K4):NEXT K4:NEXT K3 2800 K8=K8+C1:D(K1,C0)=K2:L0=-C1:LOCATE C5,C19:INPUT FC$:ON -(FC$="") GOTO 3000:D(K1,C1)=INT(ABS(VAL(FC$))) 2810 IF MID$(FLAG$,C1,C1)<>"F" THEN MID$(FLAG$,C1)="N" 2820 LOCATE C6,C1:IF K2<C2 OR K2=45 THEN 2590 2830 IF K2<C20 OR K2>23 THEN 2880 2840 INPUT " FILE NAME ";FC$:IF FC$="" THEN ON (K0-48) GOTO 3000,2590 2850 MID$(FLAG$,C1)="F":IF K0<> 50 THEN K7=K7+C1:D(K1,C2)=K7:D(K1,C3)=K6:K6=K6+C2-C6*(K2=21) 2860 MID$(FLAG$,C2)="NN":MID$(FILE$,C10*K7-C9,C10)=" ":MID$(FILE$,C10*K7-C9,C10)=FC$:IF K6<C20 THEN 2590 2870 LOCATE C11,C1:PRINT " DATA STORAGE LIMIT EXCEEDED.";CHR$(C7):GOTO 2940 2880 K3=C1-(K2<17 OR (K2>26 AND K2<40))-(K2<C8 OR (K2>32 AND K2<35)) 2890 FOR K4=C1 TO K3:PRINT " PARAMETER #";K4;" ";:INPUT FC$:IF FC$="" AND K0=49 THEN 3000 2900 IF FC$<>"" THEN MID$(FLAG$,C2)="NN":D(K1,K4+C1)=ABS(VAL(FC$)*(K2<35 OR (K2>38 AND K4>C1))-INT(VAL(FC$))*((K2>34)-(K2>38 AND K4>C1))) 2910 NEXT K4:GOTO 2590 2920 LOCATE C11,C1:PRINT " NOT A VALID ELEMENT TYPE.";CHR$(C7):GOSUB 1100:GOTO 2590 2930 K2=D(K1,C0):ON C1-(K2>C1)-((K2>34 AND K2<43) OR (K2>C19 AND K2<24)) GOTO 2700,2820,2810 2940 IF MID$(FLAG$,C1,C1)<>"F" THEN MID$(FLAG$,C1)="NNN" 2950 L0=-C1:IF D(K1,C0)<C20 OR D(K1,C0)>23 THEN 3000 2960 K3=D(K1,C2):IF K3=K7 THEN 2990 2970 FOR K2=C0 TO K8:K4=D(K2,C0):K5=D(K2,C2):D(K2,C2)=D(K2,C2)+(K4>C19 AND K4<24 AND K5>K3):NEXT K2 2980 MID$(FILE$,C10*K3-C9)=MID$(FILE$,C10*K3+C1) 2990 K7=K7-C1:K6=K6-C2+C6*(D(K1,C0)=21) 3000 IF K1<K8-C1 THEN FOR K2=K1 TO K8-C2:FOR K3=C0 TO C4:D(K2,K3)=D(K2+C1,K3):NEXT K3:NEXT K2 3010 K8=K8-C1:GOTO 2590 3020 GOSUB 1120:ON -(FC$="") GOTO 2660:FD$=FC$+".NET":GOSUB 1130:ON -(K0<>89) GOTO 2660:ON ERROR GOTO 3070 3030 FOR K2=C0 TO K8-C1:K3=D(K2,C0):IF K3<C20 OR K3>23 THEN 3050 3040 PRINT #C1,K3:PRINT #C1,D(K2,C1):PRINT #C1,MID$(FILE$,C10*D(K2,C2)-C9,C10):GOTO 3060 3050 FOR K3=C0 TO C2-(K3<17 OR (K3>26 AND K3<40))-(K3<C8 OR (K3>32 AND K3<35))+C3*(K3<C2)+(K3=45):PRINT #C1,D(K2,K3):NEXT K3 3060 NEXT K2:GOTO 2660 3070 GOSUB 1050:GOTO 2540 3080 RESUME 3220 3090 RESUME 3300 3100 RESUME 2540 3110 CLS:PRINT " ELEMENT PARAMETER":PRINT" TYPE NUM #1 #2 #3":FOR K1=C0 TO K8-C1:MID$(L$,C1,C3)=STR$(C1+K1):ON ERROR GOTO 910 3120 K3=D(K1,C0):MID$(L$,C5,C3)=MID$(E$,C3*K3+C1):MID$(L$,C9,C3)=STR$(D(K1,C1)):IF K3<C2 OR K3=45 THEN 3160 3130 IF K3>C19 AND K3<24 THEN MID$(L$,16,C12)="FILE NAME = ":MID$(L$,28,C10)=MID$(FILE$,C10*D(K1,C2)-C9):GOTO 3160 3140 FOR K3=C1 TO C1-(K3<17 OR (K3>26 AND K3<40))-(K3<C8 OR (K3>32 AND K3<35)) 3150 MID$(L$,C8*K3+C7,C7)=STR$(INT(D(K1,K3+C1)*CK+0.5)/CK):NEXT K3 3160 IF K1=K2 AND MID$(FLAG$,C6,C1)="E" THEN COLOR C0,C7:PRINT CHR$(C7); 3170 PRINT L$:COLOR C7,C0:L$=STRING$(C39," "):NEXT K1:GOSUB 970:GOTO 2540 3180 L7=C0:FOR K2=C0 TO K8-C1:K1=D(K2,C0):ON -((K2=K8-C1)+(K1=45)) GOTO 3220 3190 K3=D(K2,C1):GOSUB 130:ON -(K1<35)*(C1-(K3=K2)) GOTO 3220,3250 3200 D(K2,C4)=K3:ON -(K1>35)-(K1=45)*(C1-(K3=K2)) GOTO 3230,3250,3220 3210 IF D(K2,C2)<D(K2,C3) THEN FOR K5=D(K2,C2) TO D(K2,C3):K3=K5:GOSUB 130:IF K3<K2 THEN NEXT K5:GOTO 3230 3220 MID$(FLAG$,C6)="E":GOTO 3110 3230 K3=D(K2,C2):GOSUB 130:D(K2,C13)=K3:IF K3>=K2 THEN 3220 3240 IF K1>35 AND K1<39 THEN K3=D(K2,C3):GOSUB 130:D(K2,C14)=K3:IF K3>=K2 THEN 3220 3250 NEXT K2:IF K7=C0 OR MID$(FLAG$,C1,C1)<>"F" THEN 3430 3260 ON ERROR GOTO 3080:FOR K2=C0 TO K8-C1:K1=D(K2,C0):IF K1>C19 AND K1<24 THEN FD$=MID$(FILE$,C10*D(K2,C2)-C9,C10):OPEN FD$+".DAT" FOR INPUT AS #C1:CLOSE #C1 3270 NEXT K2:FOR K2=C0 TO K8-C1:K1=D(K2,C0):IF K1<C20 OR K1>23 THEN 3420 3280 K4=C1-C6*(K1=21):FD$=MID$(FILE$,C10*D(K2,C2)-C9,C10):OPEN FD$+".DAT" FOR INPUT AS #C1 3290 ON ERROR GOTO 3090:FOR K3=C0 TO C19:INPUT #C1,W1:F(K3,C13)=W1:FOR K5=C0 TO K4:INPUT #C1,W1:D(K3,C5+K5)=W1:NEXT K5:NEXT K3 3300 ON ERROR GOTO 910:CLOSE #C1:L6=INT((K3+(K3>C6))/C2-(K3>C2)):D(K2,C3)=L6:D(K2,C4)=L7:IF K1=C20 OR K1=23 THEN 3320 3310 FOR L1=C0 TO K3-C1:FOR L2=C5 TO C5+K4 STEP C2:W1=D(L1,L2):W2=D(L1,L2+C1)/RD:GOSUB 80 :D(L1,L2)=W1:D(L1,L2+C1)=W2:NEXT L2:NEXT L1 3320 IF K3=C1 THEN FOR L1=C5 TO C5+K4:V(L7,C0)=D(C0,L1):L7=L7+C1:NEXT L1:GOTO 3420 3330 FOR L1=C5 TO C5+K4:FOR L2=C0 TO C2*L6-C1:F(L2,C14)=C0:NEXT L2:FOR L2=C0 TO L6:F(L2,L6+C1)=C0:NEXT L2 3340 FOR L2=C0 TO K3-C1:W1=C1:FOR L3=C0 TO C2*L6-C1:W1=W1*F(L2,C13):F(L3,C14)=F(L3,C14)+W1:NEXT L3 3350 F(C0,L6+C1)=F(C0,L6+C1)+D(L2,L1):W1=C1:FOR L3=C1 TO L6:W1=W1*F(L2,C13):F(L3,L6+C1)=F(L3,L6+C1)+W1*D(L2,L1):NEXT L3:NEXT L2 3360 F(C0,C0)=K3:FOR L2=C0 TO L6:FOR L3=C0 TO L6:IF L2+L3 THEN F(L2,L3)=F(L2+L3-C1,C14) 3370 NEXT L3:NEXT L2:FOR L2=C0 TO L6-C1:L4=L2+C1:L5=L2:FOR L3=L4 TO L6:IF ABS(F(L3,L2))>ABS(F(L5,L2)) THEN L5=L3 3380 NEXT L3:IF L5<>L2 THEN FOR L3=L2 TO L6+C1:W1=F(L2,L3):F(L2,L3)=F(L5,L3):F(L5,L3)=W1:NEXT L3 3390 FOR L3=L4 TO L6:W1=F(L3,L2)/F(L2,L2):FOR L5=L4 TO L6+C1:F(L3,L5)=F(L3,L5)-W1*F(L2,L5):NEXT L5:NEXT L3:NEXT L2 3400 V(L7,L6)=F(L6,L6+C1)/F(L6,L6):FOR L2=L6-C1 TO C0 STEP -C1:W2=C0:FOR L3=L2+C1 TO L6:W2=W2+F(L2,L3)*V(L7,L3):NEXT L3 3410 V(L7,L2)=(F(L2,L6+C1)-W2)/F(L2,L2):NEXT L2:L7=L7+C1:NEXT L1 3420 NEXT K2:MID$(FLAG$,C4)="NN" 3430 MID$(FLAG$,C1)="Y" 3440 MID$(FLAG$,C6)="N":GOTO 2340 3450 K6=0:K7=0:K8=0:L0=0:MID$(FLAG$,1)="NNN":FILE$=STRING$(CC," "):GOTO 2490 3460 MID$(FLAG$,C6)="N" 3470 PRINT" Will this be 2-port data (Y/N)?":K0=ASC(INPUT$(1)):ON -(K0=13 AND MID$(FLAG$,6)="Y") GOTO 3570:K2=0:K5=2-6*(K0=89 OR K0=121) 3480 GOSUB 1120:ON -(FC$="") GOTO 3500:ON ERROR GOTO 3820:OPEN FC$+".DAT" FOR INPUT AS #1:MID$(FLAG$,2)="NNSN" 3490 ON ERROR GOTO 3830:FOR K2=C0 TO C19:FOR K1=C0 TO K5:INPUT #C1,W1:F(K2,K1)=W1:NEXT K1:NEXT K2 3500 K1=C0:IF MID$(FLAG$,C6,C1)="N" THEN CLS:LOCATE C1,C11:PRINT "DATA FILE EDITOR" 3510 LOCATE C4,C1:MID$(FLAG$,C6)="Y":IF K5=C2 THEN PRINT " REAL IMAG":PRINT" or ";CHR$(179);CHR$(226);CHR$(179);" or /";CHR$(226);" ":PRINT L$:PRINT L$:GOTO 3530 3520 PRINT " ";CHR$(179);"S11";CHR$(179);" /S11 ":PRINT" ";CHR$(179);"S21";CHR$(179);" /S21 ":PRINT" ";CHR$(179);"S12";CHR$(179);" /S12":PRINT" ";CHR$(179);"S22";CHR$(179);" /S22" 3530 LOCATE C13,C14:PRINT "EDITOR MENU":PRINT:PRINT" 1 -Insert data 6 -Start new file":PRINT" 2 -Modify data 7 -Plot data" 3540 PRINT" 3 -Delete data > -Page forward":PRINT" 4 -List data file < -Page backward":PRINT" 5 -Save data file RET -Return" 3550 MID$(L$,C2)="LINE NUMBER":MID$(L$,C13,C3)=STR$(K1+C1):MID$(L$,C20)="FREQUENCY":IF K1<K2 THEN MID$(L$,30)=STR$(F(K1,C0)) 3560 LOCATE C3,C1:PRINT L$:L$=STRING$(C39," ") 3570 FOR K3=C1 TO K5/C2:FOR K4=C0 TO C1:FD$=MID$(L$,C1,C11):IF K1<K2 THEN MID$(FD$,C2)=STR$(INT(CK*F(K1,C2*K3+K4-C1)+0.5)/CK) 3580 LOCATE C3+K3,C7+18*K4:PRINT FD$:NEXT K4:NEXT K3 3590 CLOSE #C1:LOCATE C10,C1:PRINT L$:PRINT L$:PRINT L$:LOCATE C10,C1:K0=ASC(INPUT$(C1)):IF K0=49 AND K2<C20 THEN 3700 3600 ON (K0>49)*(K2>K1)*(K0-49) GOTO 3790,3840:ON (K0>51)*(K2>C0)*(K0-51) GOTO 3860,3800:ON (K0>53)*(53-K0) GOTO 3470,3960 3610 ON (K0>59)*(59-K0) GOTO 3670,3620,3650,3690 3620 IF K0<>13 THEN PRINT CHR$(7):GOTO 3590 3630 IF MID$(FLAG$,4,1)<>"S" THEN GOSUB 920:IF K0<>89 AND K0<>121 THEN 3590 3640 MID$(FLAG$,6)="N":GOTO 2540 3650 IF K1>=K2 OR K1=C19 THEN K1=-C1 3660 K1=K1+C1:GOTO 3550 3670 IF K1=C0 THEN K1=K2-(K2=C0) 3680 K1=K1-C1:GOTO 3550 3690 GOSUB 930:GOTO 3500 3700 IF K1<K2 THEN LOCATE C3,30:PRINT " ":FOR K3=C1 TO K5/C2:FOR K4=C0 TO C1:LOCATE C3+K3,C7+C19*K4:PRINT " ":NEXT K4:NEXT K3 3710 LOCATE 3,29:INPUT FC$:IF FC$="" THEN 3550 3720 IF K1<K2 THEN FOR K3=K2 TO K1+1 STEP -1:FOR K4=0 TO K5:F(K3,K4)=F(K3-1,K4):NEXT K4:NEXT K3 3730 K2=K2+1 3740 F(K1,C0)=ABS(VAL(FC$)) 3750 MID$(FLAG$,2)="NNNN":FOR K3=1 TO K5/2:FOR K4=0 TO 1 3760 LOCATE 3+K3,7+18*K4:INPUT FC$:IF FC$="" AND K0=49 THEN 3840 3770 IF FC$<>"" THEN F(K1,2*K3+K4-1)=VAL(FC$) 3780 NEXT K4:NEXT K3:GOTO 3550 3790 LOCATE 3,29:INPUT FC$:ON 1-(FC$="") GOTO 3740,3750 3800 GOSUB 1120:ON -(FC$="") GOTO 3590:FD$=FC$+".DAT":GOSUB 1130:ON -(K0<>89) GOTO 3590:ON ERROR GOTO 3820 3810 FOR K3=0 TO K2-1:FOR K4=0 TO K5:PRINT #1,F(K3,K4):NEXT K4:NEXT K3:MID$(FLAG$,4)="S":GOTO 3590 3820 GOSUB 1050:GOTO 3500 3830 RESUME 3500 3840 IF K1<K2-C1 THEN FOR K3=K1 TO K2-C2:FOR K4=C0 TO K5:F(K3,K4)=F(K3+C1,K4):NEXT K4:NEXT K3 3850 K2=K2-C1:GOTO 3550 3860 IF K5=C2 THEN 3940 3870 CLS:PRINT " FREQ S11 S22":PRINT " in GHz MAG ANGLE MAG ANGLE":FOR K1=C0 TO K2-C1 3880 GOSUB 1280:FOR K4=C1 TO C7 STEP C6:K0=(15*K4+39)/C6:MID$(L$,K0,C7)=STR$(INT(CK*F(K1,K4)+0.5)/CK) 3890 MID$(L$,K0+C8,C7)=STR$(INT(CC*F(K1,K4+C1)+0.5)/CC):NEXT K4:PRINT L$:L$=STRING$(C39," "):NEXT K1:GOSUB 970 3900 CLS:PRINT" FREQ S21 S12":PRINT" GHz MAG ANGLE MAG ANGLE":FOR K1=C0 TO K2-C1 3910 GOSUB 1280:FOR K4=C3 TO C5 STEP C2:K0=(15*K4-27)/C2:MID$(L$,K0+C8,C7)=STR$(INT(F(K1,K4+C1)*CK+0.5)/CK) 3920 MID$(L$,K0,C7)=STR$(INT(F(K1,K4)*CC+0.5)/CC-(F(K1,K4)<0.01)):IF F(K1,K4)<0.01 THEN MID$(L$,K0+C1,C1)="0" 3930 NEXT K4:PRINT L$:L$=STRING$(C39," "):NEXT K1:GOSUB 970:GOTO 3500 3940 CLS:PRINT" FREQ REAL IMAGINARY":PRINT" in GHz or";CHR$(179);CHR$(226);CHR$(179);" or /";CHR$(226):FOR K1=C0 TO K2-C1:MID$(L$,C1,C7)=STR$(F(K1,C0)) 3950 FOR K4=C1 TO C2:K0=C8*K4+C1:MID$(L$,K0,C7)=STR$(INT(CK*F(K1,K4)+0.5)/CK):NEXT K4:PRINT L$:L$=STRING$(C39," "):NEXT K1:GOSUB 970:GOTO 3500 3960 ON -(K2<C2) GOTO 3620:K9=K2-C1:FOR K1=C0 TO K9:FOR K4=C1 TO K5/C2:W1=F(K1,K4*C2-C1):W2=F(K1,K4*C2)/RD:GOSUB 80 3970 F(K1,K4*C2-C1)=W1:F(K1,K4*C2)=W2:NEXT K4:NEXT K1:GOSUB 1670:IF K5=C8 THEN GOSUB 2140 3980 FOR K1=C0 TO K9:FOR K4=C1 TO K5/C2:W1=F(K1,K4*C2-C1):W2=F(K1,K4*C2):GOSUB 90 3990 F(K1,K4*C2-C1)=W1:F(K1,K4*C2)=W2*RD:NEXT K4:NEXT K1:MID$(FLAG$,C6,C1)="N":GOTO 3500 4000 CLS:LOCATE C1,C14:PRINT"OPTIMIZATION":PRINT:PRINT" ELEMENT PARAMETER LOCAL" 4010 PRINT" TYPE NUM NUM VALUE GRADIENT":LOCATE 17,C11:PRINT"OPTIMIZATION MENU":PRINT:PRINT" 1 -Add an element 5 -Optimization" 4020 PRINT" 2 -Reset an element 6 -Sensitivity":PRINT" 3 -Delete an element 7 -Objectives" 4030 PRINT" 4 -List elements RET -Return" 4040 ON ERROR GOTO 910:LOCATE C6,C1:IF L0<C0 THEN 4070 4050 FOR K1=C0 TO L0:MID$(L$,C1,C2)=STR$(K1+1):MID$(L$,C5,C3)=MID$(E$,C3*D(O(K1,C0),C0)+C1):MID$(L$,C10,C3)=STR$(O(K1,C1)):MID$(L$,15,C2)=STR$(O(K1,C2)-C1) 4060 O(K1,C3)=D(O(K1,C0),O(K1,C2)):MID$(L$,C20,C9)=STR$(INT(CK*O(K1,C3)+0.5)/CK):PRINT L$:L$=STRING$(C39," "):NEXT K1 4070 PRINT L$:PRINT L$:PRINT L$ 4080 LOCATE C14,C1:PRINT L$:PRINT L$:LOCATE C14,C1:K0=ASC(INPUT$(C1)):IF K0=49 AND L0<5 THEN ON C1-(MID$(FLAG$,C1,C1)="N") GOTO 4110,1190 4090 ON -(K0=55) GOTO 4480:ON (L0>=0)*(K0>49)*(K0-49) GOTO 4240,4210,4260,4470,4470:IF K0=C13 THEN 2340 4100 PRINT CHR$(C7):GOTO 4080 4110 LOCATE L0+C7,C1:PRINT L$:LOCATE L0+C7,C1:PRINT C2+L0:LOCATE L0+C7,C9:INPUT FC$:ON -(FC$="") GOTO 4040:K2=VAL(FC$):K3=K2:GOSUB 130:IF K3<K8-C1 THEN 4140 4120 LOCATE C14,C0:PRINT "THAT ELEMENT DOESN'T EXIST.";CHR$(C7) 4130 GOSUB 1100:GOTO 4040 4140 K0=D(K3,C0):C$=MID$(E$,C3*K0+C1,C3):LOCATE L0+C7,C5:PRINT C$ 4150 IF (K0>C1 AND K0<C8) OR (K0>C10 AND K0<C20) OR (K0>23 AND K0<35) THEN 4180 4160 LOCATE C14,C1:PRINT "YOU CAN'T OPTIMIZE ";C$;" ELEMENTS.";CHR$(C7):GOTO 4130 4170 LOCATE C14,C2:PRINT C$;" ELEMENTS DON'T HAVE":PRINT " A PARAMETER #";CHR$(C7);K4:GOTO 4130 4180 LOCATE L0+C7,C14:INPUT FC$:ON -(FC$="") GOTO 4040:K4=VAL(FC$):IF K4<C1 OR (((K0>C7 AND K0<17) OR (K0>26 AND K0<33)) AND K4>C2) THEN 4170 4190 IF ((K0<C8 OR K0>32) AND K4>C3) OR ((K0>16 AND K0<27) AND K4>C1) THEN 4170 4200 L0=L0+C1:O(L0,C0)=K3:O(L0,C1)=K2:O(L0,C2)=K4+C1:O(L0,C3)=D(K3,K4):GOTO 4040 4210 PRINT" Select element to be deleted (1";-L0-C1;"):";:K1=VAL(INPUT$(1)):IF K1<1 OR K1>L0+1 THEN 4080 4220 IF K1<=L0 THEN FOR K2=K1 TO L0:FOR K3=0 TO 3:O(K2-1,K3)=O(K2,K3):NEXT K3:NEXT K2 4230 L0=L0-1:GOTO 4040 4240 PRINT " Select element to be reset (1";-L0-1;"):";:K1=VAL(INPUT$(1))-1:IF K1<0 OR K1>L0 THEN 4080 4250 PRINT K1+1:LOCATE K1+6,19:INPUT FC$:ON -(FC$="") GOTO 4040:MID$(FLAG$,2)="NN":W1=VAL(FC$):O(K1,3)=ABS(W1):D(O(K1,0),O(K1,2))=ABS(W1):GOTO 4040 4260 K1=L0+6:GOSUB 1010:GOTO 4080 4270 DEL=4:PRINT " Listings of results (Y/N)? ";:C$=INPUT$(1):PRINT C$:IF C$=CHR$(13) THEN 4080 4280 PRINT" Number of random searches (0-9):";:FC$=INPUT$(1):ON -(FC$=CHR$(13)) GOTO 4080:L6=VAL(FC$):PRINT L6:ON ERROR GOTO 910 4290 IF DEL=CK THEN PRINT " PERFORMING SENSITIVITY ANALYSIS" 4300 FOR L9=0 TO L0:O(L9,5)=O(L9,3)*(1-(L8>0)*(RND(1)-0.5)/5):NEXT L9:L8=L8-L0-2:L6=-(L8>0)-L6 4310 GOSUB 240:IF W1>=E1 AND L8>0 AND L6>=0 THEN ON C1-(L6>0) GOTO 4390,4300 4320 LOCATE 6,1:FOR L9=0 TO L0:MID$(L$,1,2)=STR$(L9+1):MID$(L$,5,3)=MID$(E$,3*D(O(L9,0),0)+1):MID$(L$,10,3)=STR$(O(L9,1)) 4330 MID$(L$,15,2)=STR$(O(L9,2)-1):MID$(L$,20,9)=STR$(INT(1000*O(L9,5)+0.5)/1000):MID$(L$,30,9)=STR$(INT(1000*O(L9,6)*W1/O(L9,5)+0.5)/1000) 4340 PRINT L$:L$=STRING$(39," "):NEXT L9:PRINT:IF L8>0 THEN PRINT " ITERATION #";L8;" "; 4350 PRINT " ERROR =";INT(10*W1+0.5)/10;" ":IF C$="Y" THEN K1=L0+6:GOSUB 1010:ON ERROR GOTO 910 4360 L6=ABS(L6):IF W1>C0 THEN IF E1/(E1-W1)<CC AND DEL<CC THEN E1=W1:GOTO 4430 4370 L8=(Q$="Q"):IF W1>E0 THEN FOR L9=0 TO L0:O(L9,5)=O(L9,3):NEXT L9:GOSUB 320 4380 ON C1-L8 GOTO 4080,4040 4390 W2=0:FOR K1=0 TO L0:W2=W2+O(K1,4)*O(K1,4):O(K1,5)=O(K1,3):NEXT K1:W2=SQR(W2)*DEL 4400 W3=0:W4=0:FOR K1=0 TO L0:W5=0:FOR K2=0 TO L0:F(K2,K1+1)=(K1=K2)*O(K1,4)-O(K1,4)*O(K2,4)/W2 4410 W5=W5+F(K2,K1+1)*O(K2,3):NEXT K2:W3=W3+O(K1,4)*W5:W4=W4+O(K1,6)*W5:NEXT K1:W5=3*(E0-W1)/W2+W3+W4 4420 W6=SQR(W5*W5-W3*W4):W2=W2/DEL:DEL=DEL/(1-(W4+W6-W5)/(W4-W3+2*W6)):W2=W2*DEL:GOTO 4450 4430 W2=0:FOR K1=0 TO L0:W3=O(K1,6):W2=W2+W3*W3:IF L8=0 OR E1<=E0 THEN O(K1,3)=O(K1,5):O(K1,4)=W3:E0=E1 4440 NEXT K1:W2=DEL*SQR(W2):FOR K1=0 TO L0:FOR K2=0 TO L0:F(K2,K1+1)=(K1=K2)*O(K1,6)-O(K1,6)*O(K2,6)/W2:NEXT K2:NEXT K1 4450 FOR K1=0 TO L0:F(L0+1,K1+1)=O(K1,5):FOR K2=0 TO L0:F(K2,K1+1)=-(K1=K2)+F(K2,K1+1)/W2:NEXT K2:NEXT K1 4460 FOR L9=0 TO L0:W1=0:FOR K2=0 TO L0:W1=W1+F(K2,L9+1)*F(L0+1,K2+1):NEXT K2:O(L9,5)=W1:NEXT L9:GOTO 4310 4470 C$="N":L8=0:DEL=CK:E1=C0:ON (MID$(FLAG$,4,1)="Y")*(52-K0) GOTO 4270,4290:PRINT " CAN'T, NO OBJECTIVES.";CHR$(7) 4480 IF MID$(FLAG$,4,1)="N" THEN K9=-1 4490 GOSUB 1120:ON -(FC$="") GOTO 4510:ON ERROR GOTO 4810:OPEN FC$+".OBJ" FOR INPUT AS #1:MID$(FLAG$,2)="NNNN" 4500 ON ERROR GOTO 4820:FOR K9=-1 TO 18:INPUT #1,W1:F(K9+1,0)=W1:FOR K2=9 TO 14:INPUT #1,W1:F(K9+1,K2)=W1:NEXT K2:NEXT K9 4510 K1=0:IF MID$(FLAG$,6,1)="Y" THEN 4570 4520 CLS:LOCATE 2,12:PRINT"OBJECTIVES EDITOR":PRINT:PRINT 4530 PRINT CHR$(179);"S11";CHR$(179);" dB WEIGHTING":PRINT CHR$(179);"S22";CHR$(179);" dB WEIGHTING":PRINT CHR$(179);"S21";CHR$(179);" dB WEIGHTING" 4540 LOCATE 13,15:PRINT"EDITOR MENU":PRINT:PRINT" 1 -Add an objective 6 -Start new file" 4550 PRINT " 2 -Modify objective > -Page forward":PRINT " 3 -Delete objective < -Page backward" 4560 PRINT " 4 -List objectives RET -Return":PRINT " 5 -Save objectives":MID$(FLAG$,6)="Y" 4570 MID$(L$,2,11)="LINE NUMBER":MID$(L$,13,3)=STR$(1+K1):MID$(L$,20,9)="FREQUENCY":IF K1<=K9 THEN MID$(L$,32)=STR$(F(K1,0)) 4580 LOCATE 4,1:PRINT L$:L$=STRING$(39," "):FOR K3=1 TO 3:FOR K4=0 TO 1:FC$=MID$(L$,1,8):IF K1<=K9 THEN MID$(FC$,2)=STR$(F(K1,2*K3+K4+7)) 4590 LOCATE 4+K3,10+21*K4:PRINT FC$:NEXT K4:NEXT K3 4600 ON ERROR GOTO 4630:CLOSE #1:LOCATE 10,1:PRINT L$:PRINT L$:LOCATE 10,1:K0=ASC(INPUT$(1)):IF K0=49 AND K9<19 THEN 4690 4610 ON (K9>=K1)*(K0>49)*(K0-49) GOTO 4780,4830:ON (K9>-1)*(K0>51)*(K0-51) GOTO 4850,4790:IF K0=54 THEN K9=-1:GOTO 4490 4620 ON (K0>59)*(59-K0) GOTO 4660,4630,4640,4680:IF K0=13 THEN MID$(FLAG$,4)=CHR$(89+11*(K9<0)):MID$(FLAG$,5)=MID$(FLAG$,4,1):MID$(FLAG$,6)="N":GOTO 4000 4630 PRINT CHR$(7):GOTO 4600 4640 IF K1>K9 OR K1=19 THEN K1=-1 4650 K1=K1+1:GOTO 4570 4660 IF K1=0 THEN K1=K9+1-(K9=-1) 4670 K1=K1-1:GOTO 4570 4680 GOSUB 930:GOTO 4510 4690 LOCATE 4,31:PRINT " ":FOR K3=1 TO 3:FOR K4=0 TO 1:LOCATE 4+K3,10+21*K4:PRINT " ":NEXT K4:NEXT K3 4700 LOCATE 4,31:INPUT FC$:IF FC$="" THEN 4570 4710 IF K1<=K9 THEN FOR K3=K9 TO K1 STEP -1:FOR K4=0 TO 14:F(K3+1,K4)=F(K3,K4):NEXT K4:NEXT K3 4720 K9=K9+1 4730 MID$(FLAG$,2)="NNNNY":F(K1,0)=ABS(VAL(FC$)) 4740 FOR K3=1 TO 3:FOR K4=0 TO 1:LOCATE 4+K3,10+21*K4:INPUT FC$:IF FC$="" AND K0=49 THEN 4830 4750 IF FC$<>"" THEN F(K1,2*K3+K4+7)=VAL(FC$) 4760 NEXT K4:NEXT K3 4770 FOR K3=9 TO 12:F(K1,K3)=(1+2*(K3/2<>INT(K3/2)))*ABS(F(K1,K3)):NEXT K3:GOTO 4570 4780 LOCATE 4,31:INPUT FC$:ON 1-(FC$="") GOTO 4730,4740 4790 GOSUB 1120:ON -(FC$="") GOTO 4600:FD$=FC$+".OBJ":GOSUB 1130:ON -(K0<>89) GOTO 4600:ON ERROR GOTO 4810 4800 FOR K3=0 TO K9:PRINT #1,F(K3,0):FOR K4=9 TO 14:PRINT #1,F(K3,K4):NEXT K4:NEXT K3:GOTO 4600 4810 GOSUB 1050:GOTO 4510 4820 RESUME 4510 4830 IF K1<K9 THEN FOR K3=K1 TO K9-1:FOR K4=0 TO 14:F(K3,K4)=F(K3+1,K4):NEXT K4:NEXT K3 4840 MID$(FLAG$,2)="NNNNY":K9=K9-1:GOTO 4570 4850 CLS:PRINT " FREQ S11 S22 S21":PRINT" in GHz dB WGT dB WGT dB WGT":FOR K1=0 TO K9:MID$(L$,1,3)=STR$(K1+1) 4860 MID$(L$,4,6)=STR$(F(K1,0)):FOR K3=9 TO 14:K4=(K3-9)*5+11:MID$(L$,K4,4)=STR$(F(K1,K3)):NEXT K3 4870 PRINT L$:L$=STRING$(39," "):NEXT K1:GOSUB 970:GOTO 4510