home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / math / coaxattn / coaxattn.bas
Encoding:
BASIC Source File  |  1989-09-06  |  4.8 KB  |  106 lines

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