home *** CD-ROM | disk | FTP | other *** search
- 0 'COAXATTN.BAS ++ FIND COAXIAL LINE ATTENUATION
- 5 'BY USING AN INTERPOLATION ALGORITHM ++
- 10 'BY RONALD F. BALONIS MARCH 18, 1989
- 15 'From: BROADCAST MANAGEMENT ENGINEERING
- 20 ' August 1989 issue, COMPUTE, page 98
- 30 '
- 40 TLE$=" ++ Coaxial Line Attenuation ++
- 45 READ K,N:DIM X(N),Y(K,N),C(N),D(N),COAX$(K)
- 50 CLS:PRINT "COAXATTN.BAS ";TLE$:PRINT
- 55 FOR I=1 TO K:READ COAX$(I):NEXT I
- 60 FOR I=1 TO K:READ A$:'------------- READ the kinds of Coax
- 61 COAX$(I)=COAX$(I)+"-"+A$
- 62 NEXT I
- 65 FOR I=1 TO K:READ A$:'------------- Show the kinds of Coax
- 66 PRINT USING"<##>\ \";I;COAX$(I)+" ("+A$+")";
- 67 NEXT I:PRINT:PRINT
- 70 FOR I=1 TO N
- 71 READ X(I):SUM=SUM+X(I):'--------- Frequency on the X axis
- 72 FOR J=1 TO K
- 73 READ Y(J,I):SUM=SUM+Y(J,I):'-- Attenuation on the Y axis
- 74 NEXT J
- 75 NEXT I
- 80 READ CKSUM:CKSUM=INT(CKSUM):SUM=INT(100*SUM)
- 90 IF CKSUM<>SUM THEN PRINT "** DATA ERROR **":STOP
- 95 '
- 100 PRINT"ENTER <Freq. Length Coax> separated by a space."
- 105 PRINT
- 110 PRINT:LOCATE CSRLIN-1,1:PRINT SPACE$(79)
- 115 PRINT"<>Quit or <###mHz ###FT/M #>: ";:DAT$="":L=0
- 120 LINE INPUT DAT$:IF DAT$="" THEN STOP:' OR SYSTEM
- 125 I=INSTR(DAT$," ")
- 130 IF I=0 THEN 250:'-- ELSE PARSE THE COMMAND LINE FOR DATA
- 135 FRQ=VAL(MID$(DAT$,1,I)):'-------- Frequency in mHz
- 140 IF FRQ<X(1) OR FRQ>X(N) THEN 250:'-- Too BIG/small
- 145 II=INSTR(I+1,DAT$," ")
- 150 IF II=0 THEN 250
- 155 '
- 160 LGTH=VAL(MID$(DAT$,I,II-I)):'---- Length in FT or M only
- 165 IF LGTH<1 OR LGHT>5000 THEN 250:'--- Too BIG or too tall
- 170 FOR J=I TO II:A$=MID$(DAT$,J,1):'-is it FEET OR METERS?
- 175 IF A$="F" THEN L=1:A$=A$+"T":J=II
- 180 IF A$="M" THEN L=2:J=II
- 185 NEXT J
- 190 IF L=0 THEN 250:'---------- What kind of UNITS? FT or M
- 195 IF L=2 THEN L=3.28:'--- IF METERS then Convert to Feet
- 200 '
- 205 COAX=VAL(MID$(DAT$,II,3)):'---- kind of coax, a (#)
- 215 IF COAX>=1 AND COAX<=N THEN 500:'-------- COAX # OK
- 220 '
- 250 '--- ELSE CLEAR THE PROMPT LINE ON AN ERROR
- 255 LOCATE CSRLIN-1,1:PRINT SPACE$(79):BEEP
- 260 LOCATE CSRLIN-1,1:GOTO 115:'----- GO TRY AGAIN
- 300 '
- 500 '----- INTERPOLATE COAX DATA to find the Attenuation
- 505 XX=FRQ:YY=0:K=COAX:J=1:DPD=0:DF=0:NDF=ABS(XX-X(J))
- 510 FOR I=1 TO N
- 515 DF=ABS(XX-X(I))
- 520 IF DF=0 THEN YY=Y(K,I):I=N:'----- IF DATA THEN DONE
- 525 IF DF<NDF THEN J=I:NDF=DF
- 530 C(I)=Y(K,I):D(I)=Y(K,I)
- 535 NEXT I
- 540 IF DF=0 THEN 595:'---------------- IF DATA THEN DONE
- 545 YY=Y(K,J):J=J-1
- 550 FOR M=1 TO N-1:'------- ELSE INTERPOLATE BETWEEN TWO
- 555 NM=N-M
- 560 FOR I=1 TO NM
- 565 II=I+1:T=(X(I)-XX)*D(I)/(X(I+M)-XX):DD=T-C(II)
- 570 IF DD=0! THEN DD=1E-25:'--------- NO Zeros ALLOWED
- 575 DD=(C(II)-D(I))/DD:D(I)=C(II)*DD:C(I)=T*DD
- 580 NEXT I
- 582 IF C(J+1)<.00001 OR D(J)<.00001 THEN M=N-1:'- CLOSE
- 585 IF 2*J<NM THEN YY=YY+C(J+1) ELSE YY=YY+D(J):J=J-1
- 590 NEXT M
- 595 ATTN=L*YY*LGTH/100:EFF=100/10^(ATTN/10)
- 598 '
- 600 LOCATE CSRLIN-2,1:'--- WRITE OVER PROMPT LINE
- 605 PRINT USING"At ####.##mHz ####.##\\ ";FRQ;LGTH;A$;
- 610 PRINT USING"of \ \ : ";COAX$(K);
- 615 PRINT USING" ATTEN.=###.###dB EFF%=###.##";ATTN;EFF
- 620 GOTO 110:'------------ THEN GO FOR MORE
- 700 '
- 800 '-------------- COAXIAL TRANSMISSION LINE DATA -----------------
- 802 DATA 11, 18:'-- # OF COAX, # OF DATA Data in dB/100ft
- 805 DATA FHJ1,FSJ1,FSJ4,LDF2,LDF4,LDF5,LDF6,LDF7, RG,RG,RG
- 806 DATA 50, 50, 50B, 50, 50A, 50A, 50, 50A,"8 ","58U ","59U "
- 807 DATA 1/4, 1/4, 1/2, 3/8, 1/2, 7/8,1-1/4,1-5/8,.402,.196,.242
- 810 DATA .5,.130,.130,.073,.073,.047,.026,.019,.015,.102,.200,.190
- 812 DATA 1,.163,.180,.101,.100,.066,.035,.026,.021,.150,.310,.258
- 814 DATA 2,.230,.250,.143,.140,.094,.050,.037,.030,.215,.470,.408
- 816 DATA 3,.305,.305,.185,.185,.118,.061,.046,.038,.275,.595,.506
- 818 DATA 5,.400,.400,.225,.225,.165,.080,.060,.049,.360,.800,.695
- 820 DATA 7,.480,.480,.280,.280,.187,.093,.071,.058,.410,.980,.810
- 822 DATA 10,.530,.560,.332,.330,.210,.112,.084,.068,.502,1.25,.995
- 824 DATA 20,.800,.800,.480,.480,.300,.170,.120,.099,.715,1.77,1.42
- 826 DATA 30,0.93,0.99,.563,.570,.370,.197,.150,.122,.900,2.30,1.77
- 828 DATA 50,1.20,1.29,.732,.750,.480,.260,.192,.158,1.22,3.10,2.30
- 830 DATA 70,1.70,1.70,.900,.900,.590,.310,.226,.192,1.40,3.85,2.80
- 832 DATA 100,1.72,1.85,1.05,1.05,.680,.369,.275,.225,1.70,4.78,3.40
- 834 DATA 200,2.50,2.66,1.65,1.50,.980,.535,.397,.330,2.45,7.10,4.90
- 836 DATA 300,3.45,3.45,1.92,1.92,1.25,.680,.500,.407,3.00,8.05,6.05
- 838 DATA 500,4.52,4.52,2.55,2.55,1.70,.895,.670,.550,3.95,11.8,8.00
- 840 DATA 700,5.55,5.55,2.96,2.96,1.97,1.08,.800,.685,4.70,15.0,9.60
- 842 DATA 1000,6.20,6.50,3.58,3.50,2.34,1.31,.967,.819,5.6,18.00,11.5
- 844 DATA 2000,9.40,9.70,5.31,5.10,3.46,1.97,1.45,1.25,8.05,27.0,16.0
- 846 DATA 537477:'DATA CHECKSUM ----- END OF DATA and END of PROGRAM.