home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1989-01-22 | 6.2 KB | 196 lines |
- 10 CLS: PRINT "PROGRAM FOR CALCULATING MICROSTRIP CHARACTERISTICS V2.6M 9/9/87"
- 20 PRINT
- 30 PRINT " *********************************************
- 40 PRINT " * *
- 50 PRINT " * BY DR. ALLEN KATZ, CHAIRMAN *
- 60 PRINT " * DEPT ELECTRONICS ENGINEERING TECHNOLOGY *
- 70 PRINT " * TRENTON STATE COLLEGE, CN550 *
- 80 PRINT " * TRENTON, NEW JERSEY 08650-4700 *
- 90 PRINT " * *
- 100 PRINT " * THE AUTHOR RESERVES RIGHTS TO THIS *
- 110 PRINT " * PROGRAM; HOWEVER, COPYING AND USE FOR *
- 120 PRINT " * EDUCATIONAL PURPOSES IS ENCOURAGED. *
- 130 PRINT " * *
- 140 PRINT " * PLEASE REPORTS ANY ERRORS OR PROBLEMS *
- 150 PRINT " * WITH THIS PROGRAM TO THE AUTHOR. *
- 160 PRINT " * TEL (609) 771 2487 *
- 170 PRINT " * *
- 180 PRINT " *********************************************
- 185 PRINT " USE ONLY CAPITALS!
- 190 PRINT
- 200 PI=4*ATN(1): HP=PI/2
- 210 PRINT: INPUT "SINGLE (S) OR COUPLED (C) MICROSTRIP"; Q1$
- 220 IF Q1$="C" THEN 700 ELSE IF Q1$<>"S" THEN 210
- 230 PRINT:INPUT "WANT TO CALC Z0, WIDTH (W) OR HIGHT (H)"; A$
- 240 PRINT: IF A$="Z0" THEN 610 ELSE IF A$="W" THEN 260
- 250 INPUT "WHAT IS LINE WIDTH IN INCHES"; W: GOTO 270
- 260 INPUT "WHAT IS BOARD HIGHT IN INCHES"; H
- 270 INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER
- 280 INPUT "WHAT IS DESIRED Z0"; Z0
- 290 INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
- 300 IF Q$="Y"THEN INPUT"STRIP THICKNESS IN INCHES";T
- 310 GOSUB 450
- 320 IF DV=0 THEN PRINT: PRINT "WIDTH ="; W; " HIGHT ="; H; " Z0 ="; ZT
- 322 IF DV=2 THEN LPRINT: LPRINT "WIDTH ="; W; " HIGHT ="; H; " Z0 ="; ZT
- 330 IF DV=2 AND W$="Y" THEN LPRINT: LPRINT, "FREQ= "F; TAB(18) "V.F.=" VF; TAB(34) "WAVELENGTH INCHES=" WL; TAB(54) "OPEN CORR=" DL: GOTO 420
- 340 IF DV=2 THEN 420
- 350 PRINT: INPUT "DO YOU WANT TO CALC WAVELENGTH (Y OR N)"; W$
- 360 PRINT: IF W$<>"Y" THEN 390 ELSE INPUT "FREQ IN MHZ"; F
- 370 VF=1/SQR(EF): WL=VF*11808/F: PRINT
- 380 PRINT "V.F. ="; VF, "WAVELENGTH INCHES ="; WL
- 381 DL=0.412*H*(EF+0.3)*(W/H+0.262)/(EF-0.258)/(W/H+0.813)
- 384 PRINT "OPEN END CORRECTION = "; DL
- 390 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 400 IF H$<>"Y"THEN 420 ELSE DV=2
- 410 LPRINT: LPRINT, "MICROSTRIP CHARACTERISTICS": GOTO 320
- 420 DV=0:PRINT:INPUT"DO YOU WANT TO CONTINUE (Y OR N)";Q$:PRINT
- 430 IF Q$<>"Y" THEN END ELSE 230
- 440 REM **************** SUB #1 ***************
- 450 A=Z0/60*SQR((ER+1)/2)+(ER-1)/(ER+1)*(0.23+0.11/ER)
- 460 B=377*PI/(2*Z0*SQR(ER))
- 470 R=2*(B-1-LOG(2*B-1)+(ER-1)*(LOG(B-1)+0.39-0.61/ER)/(2*ER))/PI
- 480 IF R>2 THEN 490 ELSE R=8*EXP(A)/(EXP(2*A)-2)
- 490 IF A$="H" THEN H=W/R ELSE W=R*H
- 500 X=1/R: GOSUB 560: IF Q$<>"Y" THEN RETURN
- 510 IF R>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
- 520 DR=1.25*T*(1+LOG(Q))/(PI*H): R=R-DR
- 530 IF A$="H" THEN H=W/R ELSE W=R*H
- 540 RETURN
- 550 REM ************** SUB #2 *******************
- 560 IF R<1 THEN 580 ELSE EF=(ER+1)/2+(ER-1)/(2*SQR(1+12*X))
- 570 ZT=120*PI/"<UNK! {00F7}>READ(EF<UNK! {0009}><CDATA<UNK! {0002}>`<UNK! {0004}><UNK! {0010}>D><UNK! {0002}>d
- 33987 <UNK! {0002}>`
- 16958 <UNK! {0001}><0xE1!>BSAVEB@STEP0SIN<0xE0!>CONT<UNK! {00FC}>POKE7<UNK! {0008}>CPOKE<UNK! {0004}><UNK! {0002}>dBSAVE<UNK! {0001}><0xE4!><UNK! {0002}>CPOKE<UNK! {0004}>
- 58369
- 1 8C<0xE4!><UNK! {0002}>pq
- 24578 p
- 17152 <0xE4!>
- 25600 B<UNK! {007F}>9<0xE0!>STOP<UNK! {00FC}><UNK! {0080}>END<UNK! {0008}>pA
- 58051
- 260 <0xE0!>B<UNK! {0001}>
- 6296 BSAVE@STEP0<UNK! {FF00}>`NEXT<UNK! {00FC}>0OCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSSTEP<UNK! {0080}>PRESETSTEPLLIST<UNK! {0010}>LLIST0FOR<UNK! {0004}>1<UNK! {0004}>OCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLSCLS<UNK! {FF00}>`RESTORE<UNK! {00FC}>8OTO<UNK! {0080}>2LLIST<UNK! {0001}>STEPCLEAR<UNK! {0004}>OPRINTCLEAR<UNK! {0010}>POKEO<UNK! {0080}>18ENDLISTTOCLSO<UNK! {0080}><UNK! {007F}><UNK! {00F9}><0xE0!><UNK! {0001}><UNK! {00FC}>8OTO<UNK! {0080}>2LLIST<UNK! {0001}>STEPCLEAR<UNK! {0004}>OOUTSTOP<UNK! {001E}><UNK! {0004}>CONTSTEPLISTCLEAR72ENDSTEPCLEAR<UNK! {0010}>STEPCLEAR<UNK! {0010}>OUT2POKE<UNK! {0004}>LCLSOLIST<UNK! {FFC2}>`
- 52303 <UNK! {0080}>2LLIST<UNK! {0001}>STEPCLEAR<UNK! {0004}>OOUTSTOP<UNK! {001E}><UNK! {00F7}><0xE2!>IF<UNK! {00F8}>SOUNDINPUTw<UNK! {0001}>RESTOREBSAVETROFF`<UNK! {0006}>GOTO5b<UNK! {0006}>IFF<UNK! {000A}>TROFF<0xB6!><UNK! {0006}>IFF<UNK! {0008}>TROFFOPTION<UNK! {0006}>IFF<UNK! {0006}>TROFFOPEN<UNK! {0006}><UNK! {FF76}><UNK! {000A}><UNK! {FF76}><UNK! {0008}><UNK! {FF76}><UNK! {0006}>10728<UNK! {0006}>GOTO/]LOCATE<UNK! {0006}>
- 33253 /<UNK! {0002}><UNK! {0001}>SOUND~<UNK! {0006}><UNK! {0006}>WGOSUBSAVE<UNK! {FEFE}>5WOPTION<UNK! {FF00}>P<0x9A!>N<UNK! {0006}>X0GOTOFCOMMONFGET/]LOCATE<UNK! {0004}>
- 12773 CLSTROFFB<UNK! {0006}>PRESET<UNK! {0006}>OPTION<UNK! {0004}>
- 57350 <UNK! {0005}>
- 49384 <UNK! {0002}><OUTXOROPTION!<UNK! {0005}>OPENPOINT4TROFF/<UNK! {0004}>GOTO5AND<UNK! {0004}>OPTION7<UNK! {0005}>OPENPOINT4TROFFXOR<UNK! {0004}>GOTO5IMP<UNK! {0004}>PSET<UNK! {0006}>v<UNK! {0005}>
- 1408
- 1506 <UNK! {0006}>
- 1508 <UNK! {000A}>
- 1658 <UNK! {0001}>
- 1652 <UNK! {0001}>
- 1654 <UNK! {0001}>
- 52061 <UNK! {0006}>S<0xCB!><UNK! {0080}>>THEN<UNK! {0006}><UNK! {FF75}>7<UNK! {0080}>>z<UNK! {0006}>ERASEu<UNK! {0006}>PSET<UNK! {0006}>THEN<UNK! {0006}>
- 52495 <UNK! {0010}>TRONTHEN<UNK! {0006}>OPTION@
- 4283
- 41479 TAB(<UNK! {0006}><UNK! {0080}>>PSET<UNK! {0006}><UNK! {0005}>t16000PSET<UNK! {0006}><UNK! {0007}>t<UNK! {0007}>$STEP&H2620LET<UNK! {0007}>BLOADUIF/SAVE<UNK! {0006}>
- 1610 ]<0xCB!>PSET<UNK! {0006}>THEN<UNK! {0006}><UNK! {FF55}>IF/3CLSRUN.PRESET<UNK! {0006}><UNK! {0080}>>PSET<UNK! {0006}><UNK! {0005}>u<UNK! {0002}><0xB5!><UNK! {0003}>RUN1733SOUND^<UNK! {0006}><0xB4!><UNK! {0001}>&<UNK! {0080}><UNK! {007F}>5
- 58418 SOUND<UNK! {001E}>\<UNK! {0006}>SAVE
- 18974 <UNK! {0006}>GOTO<UNK! {001E}>d<UNK! {0006}>RESTORE<UNK! {0006}>f<UNK! {0006}>]LOCATE<UNK! {0004}>
- 35820 F24203&H4E8B<UNK! {000A}>IFV<UNK! {0008}><UNK! {0080}>~<UNK! {0006}>
- 52352 <UNK! {0080}>SAVE8
- 1610 ]LOCATE<UNK! {000A}>
- 59628 LLOGF<UNK! {0006}><<UNK! {000A}>s<UNK! {0010}>TRONBEEP<UNK! {0006}><UNK! {FF36}><0xCB!><UNK! {0006}><UNK! {FF36}>KEY<UNK! {0006}><0x9A!>47POINT4SOUND<UNK! {001E}>KEY<UNK! {0006}>SAVE<UNK! {0002}>
- 1610 ]LOCATE<UNK! {0002}>
- 33004 >THEN<UNK! {0006}><UNK! {FF74}>#SAVE<UNK! {0006}>
- 1610 <UNK! {0080}>>z<UNK! {0006}>ERASEt4OPTION@
- 4283
- 9734 LET<UNK! {0007}>2<0xE4!>WIDTHTHEN<UNK! {0006}>THEN<UNK! {0010}>PSET<UNK! {0006}>THEN<UNK! {0006}><UNK! {FF5D}><0xCB!>UIF/RUNF<UNK! {0006}>2<0xE4!>PSAVE2
- 1610 &IF_&H18EB]LOCATE<UNK! {0002}>
- 35564 F<UNK! {0006}>2<0xE4!>PSAVE2
- 1610 &IF_<UNK! {000A}>X<0x9A!>BSAVE6POINT4]LOCATE<UNK! {0002}>
- 35564 F<UNK! {0006}>2<0xE4!>PSAVE2
- 1610 &IF_57579]LOCATE<UNK! {0002}>
- 35564 f<UNK! {0006}>LET&i<UNK! {0006}>WIDTHh<UNK! {0006}>SAVE<UNK! {001E}>
- 1610 PSET<UNK! {0006}>l<UNK! {0006}>&H5EC4<UNK! {0008}>OPTION<UNK! {FFFF}>SAVE
- 1610 ]LOCATE<UNK! {0006}>
- 35564 f<UNK! {0008}>RUNF<UNK! {0006}>SAVE*
- 1610 ]LOCATE<UNK! {0004}>
- 35820 F<UNK! {0008}>+F&H279<UNK! {00F7}>INSTR@<UNK! {0005}><UNK! {0007}>
- 59601 FN<PSAVE2
- 1610 &IF_<UNK! {0008}><0x9A!>BSAVE6POINT4[<UNK! {00F7}><0xE3!>IFN<UNK! {0006}>+N<UNK! {000A}>y<UNK! {0002}><UNK! {00F7}>'A<UNK! {00F7}><0xE1!><UNK! {0005}><UNK! {0006}>
- 53795 t<UNK! {0005}>OPTION<UNK! {FFFF}>IFUSR]LOCATE<UNK! {0008}>
- 50924 <UNK! {0006}>SOUND<UNK! {0006}><UNK! {FFC6}><UNK! {0006}>BEEP<UNK! {0006}>
- 1735 <UNK! {000A}>SOUND~<UNK! {000A}>&RUN<UNK! {0005}>TRONPSET<UNK! {0006}>"CLSu<UNK! {0008}><H
- 60166 %SOUND~<UNK! {0006}>&RUN<UNK! {0005}>TRONBEEP<UNK! {0006}>SOUND~<UNK! {000A}>&RUN02<UNK! {FF2E}>RUNREADLET<UNK! {001E}>TRONPRESET<UNK! {0006}>.RUNREADl<UNK! {001E}>TRONSOUND<UNK! {0006}>SOUND~58418&GOTO<UNK! {0005}>]LOCATE&H5500IF/<UNK! {FF36}>SOUND<UNK! {0006}><<UNK! {0008}>
- 1732 ]LOCATE<UNK! {0008}>
- 1147 ]SOUND~<UNK! {000A}>WIDTHPSET<UNK! {0006}>2<0xE4!><<UNK! {FF75}><UNK! {0002}>RUN<0xE0!>&GOTO<UNK! {0005}>2<0xE4!>WIDTHBEEP<UNK! {0006}>SOUND~<UNK! {0006}>&GOTO<UNK! {0005}>BLOAD3CLSPSET<UNK! {0006}>SOUND<UNK! {0006}>STRIGBEEP<UNK! {0006}>TRONPSET<UNK! {0006}>TRONPRESET<UNK! {0006}>TRONSCREEN<UNK! {0006}>TROFFKEY<UNK! {0006}>TROFF<0xCB!><UNK! {0006}>PSET<UNK! {0006}>THEN<UNK! {0006}>STRIGTAB(<UNK! {0006}><0xCB!>UIF/<d<UNK! {FDC4}>^<UNK! {0006}>GOTO<UNK! {001E}>KEY<UNK! {0006}>RESTORE<UNK! {0006}><0xCB!><UNK! {0006}>SAVE<UNK! {0002}>
- 1610 ]LOCATE<UNK! {0004}>
- 48876 <UNK! {0004}>
- 1610 ]<0xCB!>UIF/IFF<UNK! {0008}>IF^<UNK! {0006}>SAVE<UNK! {0008}>
- 1610 ]LOCATE<UNK! {0004}>
- 35820 F<UNK! {0008}>IF^<UNK! {0006}>SAVE<UNK! {000A}>
- 1610 ]LOCATE<UNK! {0004}>
- 35820 F&H5E8B<UNK! {000A}>IFN<UNK! {0008}>IFV<UNK! {0006}>SAVE&HFF00<UNK! {001E}>J<UNK! {0006}>]LOCATE<UNK! {0008}>
- 35820 N<UNK! {000A}>SOUND^<UNK! {0006}>OPTION<UNK! {0006}>
- 65280 <UNK! {001E}>J<UNK! {0006}>]LOCATE<UNK! {0006}>
- 35820 N<UNK! {000A}>SOUND^<UNK! {0006}>OPTION<UNK! {0007}>
- 65280 <UNK! {001E}>J<UNK! {0006}>]LOCATE<UNK! {0006}>
- 35820 F&H5E8B<UNK! {000A}>IFN<UNK! {0008}>IFV<UNK! {0006}>SAVE1
- 1610 ]LOCATE<UNK! {0008}>
- 35820 F<UNK! {0010}>IF^20107&H568B<UNK! {000A}>;MOTORr<UNK! {0001}>PRINT;VARPTRs<UNK! {0002}>READVARPTRQRSAVE<UNK! {0008}>
- 1610 [XIFN<UNK! {0008}>IFV<UNK! {0006}>SAVE<UNK! {0010}>
- 1610 ]LOCATE&H5500IF/IFF<UNK! {0010}>IF^2238
- 1610 IFF&H5E8B<UNK! {000A}>IFN<UNK! {0008}>IFV<UNK! {0006}>SAVE3
- 1610 ]LOCATE&H5500IF/IFF&H5E8B<UNK! {000A}>SAVE<UNK! {0008}>
- 1610 IFF<UNK! {0008}>IF^<UNK! {0006}>SAVE7
- 1610 OPTION
- 360 IFN<UNK! {0008}>IFV<UNK! {0006}>SAVE3
- 1610 ]LOCATE<UNK! {0008}>
- 35820 F<UNK! {0010}>IF^2238
- 1610 IFF&H5E8B<UNK! {000A}>IFN<UNK! {0008}>IFV<UNK! {0006}>SAVE5
- 1610 ]LOCATE&H5500IF/<UNK! {001E}>OPTION<UNK! {FFFF}>SAVE3
- 1610 IFMOD<UNK! {0006}>2.07735E+34ERASE-946.177F<UNK! {0006}>TRONh<UNK! {0006}>RUN&i<UNK! {0006}>SAVE<UNK! {001E}>
- 1610 ]LOCATE<UNK! {0002}>
- 13036 CLSSAVE:
- 1610 IFMOTOR]<0xCB!>UIF/2CLSSAVE:
- 1610 IFBLOAD]<0xCB!>UIF/LINE<UNK! {0001}>SAVE:
- 1610 RESTOREBSAVEIFBLOAD]<0xCB!>UIF/LINE<UNK! {0002}>IFN<UNK! {0006}>SAVE
- 18974 <UNK! {0006}>RESTOREBSAVEIFBLOAD]LOCATE<UNK! {0002}>
- 45292 <UNK! {0001}>SAVE
- 18974 <UNK! {0006}>IFMOTORH]<0xCB!>UIF/RUN^<UNK! {0006}>2<UNK! {FFB8}><UNK! {FFFF}>SAVE9
- 1610 ]LOCATE<UNK! {0002}>
- 35820 F&HCC80<UNK! {0080}>IF^<UNK! {000A}>IFN<UNK! {0008}>IFV<UNK! {0006}>SAVE9
- 1610 ]LOCATE<UNK! {0008}>
- 35820 F<UNK! {0008}>2<0xE4!>IF^<UNK! {0006}>SAVE9
- 1610 ]LOCATE<UNK! {0004}>
- 50412 ^<UNK! {0006}>CSAVE-256<UNK! {001E}>J<UNK! {0006}>]LOCATE<UNK! {0004}>
- 35820 F<UNK! {000A}>TRONk<UNK! {0006}>IF^<UNK! {0008}>RUNN<UNK! {0006}>LET17362^SAVE"
- 1610 ]LOCATE<UNK! {0006}>
- 35820 F<UNK! {000A}>IF^<UNK! {0008}>IFN<UNK! {0006}>SOUND6KEY<UNK! {0006}>&IF|&H8B26T806|<UNK! {0010}>NEXTOR<UNK! {0002}><UNK! {00FA}>READ=RESTOREERRRETURNSPC(<UNK! {00FB}>WUSAVE,
- 59461 -0.01 AND DO>0.01 THEN S1=S1+S1*(DO-DE): GOTO 920
- 1000 IF ABS(DE)<=0.01 AND ABS(DO)>0.01 THEN S1=S1+S1*DO: GOTO 920
- 1010 IF ABS(DO)<=0.01 AND ABS(DE)>0.01 THEN S1=S1-S1*DO: GOTO 920
- 1020 REM ************** FOUND *************************
- 1030 R=WE:GOSUB 490:TE=ZT*2:VT=EF:R=WO:GOSUB 490:OO=ZT*2:OT=EF
- 1040 R=W1: GOSUB 490: EF=SQR(VT*OT): S=S1*H
- 1050 IF DV=0 THEN PRINT:PRINT"WIDTH="W" HIGHT="H" SPACE="S" Z0="ZT" Zoe="TE" Zoo="OO
- 1052 IF DV=2 THEN LPRINT:LPRINT"WIDTH="W" HIGHT="H" SPACE="S" Z0="ZT" Zoe="TE" Zoo="OO
- 1060 IF DV=2 AND W$="Y" THEN LPRINT: LPRINT, "FREQ= "F; TAB(18) "V.F.=" VF; TAB(34) "WAVELENGTH INCHES=" WL; TAB(54) "OPEN CORR=" DL: GOTO 1150
- 1070 IF DV=2 THEN 1150
- 1080 PRINT: INPUT "DO YOU WANT TO CALC WAVELENGTH (Y OR N)"; W$
- 1090 PRINT: IF W$<>"Y" THEN 1120 ELSE INPUT "FREQ IN MHZ"; F
- 1100 VF=1/SQR(EF): WL=VF*11808/F: PRINT
- 1110 PRINT "V.F. ="; VF, "WAVELENGTH INCHES ="; WL
- 1111 DL=0.412*H*(EF+0.3)*(W/H+0.262)/(EF-0.258)/(W/H+0.813)
- 1114 PRINT "OPEN END CORRECTION = "; DL
- 1120 PRINT: INPUT "WANT HARD COPY (Y/N)"; H$
- 1130 IF H$<>"Y"THEN 1150 ELSE DV=2
- 1140 LPRINT:LPRINT,"COUPLED MICROSTRIP CHARACTERISTICS":GOTO 1050
- 1150 DV=0:PRINT:INPUT"DO YOU WANT TO CONTINUE (Y OR N)";Q$:PRINT
- 1160 IF Q$<>"Y" THEN END ELSE 210
- 1170 REM ************** COUPLED ANALYSIS *****************
- 1180 INPUT "WHAT IS LINE WIDTH"; W
- 1190 INPUT "WHAT IS LINE SPACING"; S
- 1200 INPUT "WHAT IS BOARD HIGHT IN INCHES"; H: RS=S/H
- 1210 INPUT "WHAT IS BOARD DIELECTRIC CONSTANT"; ER: RW=W/H
- 1220 IF ER<=6 THEN K=4/(PI*(1+ER/2)) ELSE K=1/PI
- 1230 INPUT "WANT TO CONSIDER STRIP THICKNESS (Y OR N)"; Q$
- 1240 IF Q$<>"Y" THEN 1270 ELSE INPUT "STRIP THICKNESS IN IN."; T
- 1250 IF RW>0.16 THEN Q=2*H/T ELSE Q=4*PI*W/T
- 1260 DR=T*(1+LOG(Q))/(PI*H): RW=RW-DR
- 1270 G=FNG(RS): HC=FNH(RW,RS):WE=FNAC((2*HC-G+1)/(G+1))/HP
- 1280 WO=FNAC((2*HC-G-1)/(G-1))/HP+K*FNAC(1+2*(RW/RS))
- 1290 R=WE:GOSUB 490:TE=ZT*2:VT=EF:R=WO:GOSUB 490:OO=ZT*2:OT=EF
- 1300 R=RW:GOSUB 490:EF=SQR(VT*OT):PRINT"Z0="ZT" Zoe="TE" Zoo="OO:GOTO 1080
-