home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / HAMRADIO / HFPROP.BAS < prev    next >
BASIC Source File  |  2000-06-30  |  13KB  |  254 lines

  1. 10 '
  2. 20 ' ***********************************************************************
  3. 30 ' ** BY L.A. GERIG, R.R.#1, MONROEVILLE, IND  46773                    **
  4. 40 ' ** DOCUMENTATION IN MAY '86 HAM RADIO MAGAZINE                       **
  5. 50 ' **                  NOV '86 COMMUNICATIONS MAGAZINE                  **
  6. 60 ' ** Authorized MBASIC 5.0 Adaptation by Jim Lill 1 May 87             **
  7. 61 ' ** Distribution Rights retained by original author and limited to    **
  8. 62 ' ** free and non-commercial usage.                                    **
  9. 70 ' ***********************************************************************
  10. 80 '
  11. 90 CLS$=CHR$(26):PRINT CLS$: ' CLEARSCREEN FOR YOUR TERMINAL
  12. 100 WA=2000:' DELAY VALUE FOR DISPLAYS
  13. 110 PRINT:PRINT "3.5-50 MHZ GROUND-WAVE PROPAGATION PROGRAM"
  14. 120 PRINT:PRINT "Adapted for CP/M by Jim Lill, WA2ZKD"
  15. 130 PRINT "Original by LYNN A. GERIG, WA9GFR"
  16. 140 FOR J=1 TO WA:NEXT J
  17. 150 PRINT CLS$
  18. 160 PRINT"THIS PROGRAM CALCULATES EXPECTED RANGES FOR FREQUENCY BANDS OF"
  19. 170 PRINT"3.5, 7, 14, 28, AND 50 MHZ.  THE APPROXIMATE DYNAMIC RANGE IS FOR"
  20. 180 PRINT"PATH LOSSES OF 100 TO 200 DB, COVERING MOST APPLICATIONS FOR RCVR"
  21. 190 PRINT"SENS OF .2 TO 10 MICRO-VOLTS AND XMTR POWER OF .1 TO 1000 WATTS."
  22. 200 PRINT"PROGRAM COVERS ANTENNA HEIGHTS FROM GROUND LEVEL TO 150 FEET."
  23. 210 PRINT:PRINT:PRINT"PROGRAM DEFAULTS TO RCVR SENS AND XMTR PWR IN DBM."
  24. 220 PRINT"WOULD YOU RATHER WORK WITH MICRO-VOLTS AND WATTS (Y=YES)";:INPUT D$
  25. 230 IF D$="y" THEN D$="Y"
  26. 240 PRINT:INPUT"WHAT IS DESIRED TITLE FOR HARDCOPY";T$
  27. 250 GOSUB 1460:' READ DATA
  28. 260 GOSUB 700:' SELECT FREQUENCY BAND
  29. 270 GOSUB 790:' SELECT XMTR PWR & RCVR SENS
  30. 280 GOSUB 950:' SELECT PROPAGATION PATH
  31. 290 GOSUB 1080:' SELECT ANTENNA PARAMETERS
  32. 300 ' MAIN PROGRAM CALCULATIONS
  33. 310 IF (H1=0 OR H2=0) AND PO=2 THEN GOSUB 1080
  34. 320 H$=H$(PO,PP,FB):' DATA FOR SELECTED POLARIZATION, PATH & FREQ
  35. 330 FOR J=1 TO 12:X=6*(J-1):P(J)=VAL(MID$(H$,X+1,3))
  36. 340 D(J)=VAL(MID$(H$,X+4,3)):NEXT J
  37. 350 IF D(12)=999 THEN D(10)=1050:D(11)=1050:D(12)=1050
  38. 360 HX=HG(PO,PP,FB,H1):' XMIT ANTENNA HEIGHT GAIN
  39. 370 HR=HG(PO,PP,FB,H2):' RCVR ANTENNA HEIGHT GAIN
  40. 380 PL=PD-RD+HX+HR+GX+GR-LL:' PATH IN DB
  41. 390 PRINT CLS$:PRINT"GROUND WAVE PROPAGATION AT";F(FB);"MHZ"
  42. 400 PRINT:PRINT PO$(PO);" POLARIZATION OVER "; PP$(PP)
  43. 410 PRINT:PRINT"TRANSMITTER POWER OUT:";PD;TAB(30);"DBM"
  44. 420 PRINT TAB(23);PW;TAB(30);"WATTS"
  45. 430 PRINT:PRINT"RECEIVER SENSITIVITY: ";RD;TAB(30);"DBM"
  46. 440 PRINT TAB(23);RM;TAB(30);"UV"
  47. 450 PRINT:PRINT"TRANSMITTING ANTENNA: ";GX;"DB GAIN"
  48. 460 PRINT TAB(25);"AT";H(H1);"FEET"
  49. 470 PRINT:PRINT"RECEIVING ANTENNA:    ";GR;"DB GAIN"
  50. 480 PRINT;TAB(25);"AT";H(H2);"FEET"
  51. 490 PRINT:PRINT"SYSTEM LOSSES:        ";LL;"DB":PRINT
  52. 500 IF PL<P(1) THEN PRINT"RANGE NOT IN PROGRAM:  <";D(1);"MILES":GOTO 560
  53. 510 IF PL>=P(12) THEN PRINT"RANGE NOT IN PROGRAM:  >";D(12);"MILES":GOTO 560
  54. 520 FOR J=1 TO 11:X=J+1
  55. 530 IF PL>=P(J) AND PL<P(X) THEN DI=D(J)+(D(X)-D(J))*(PL-P(J))/(P(X)-P(J))
  56. 540 NEXT J:DI=INT(10*DI+.5)/10
  57. 550 PRINT"MAXIMUM EXPECTED RANGE: ";DI;"MILES"
  58. 560 PRINT:PRINT LL$
  59. 570 PRINT"F=NEW FREQ BAND                 R=RUN AGAIN                Q=QUIT"
  60. 580 PRINT"A=MODIFY ANTENNAS               X=MODIFY R/T SENS/PWR"
  61. 590 PRINT"N=NEW PATH OR POLARIZATION      P=PRINTER DUMP";
  62. 600 INPUT"             YOUR CHOICE";A$
  63. 610 PRINT:PRINT
  64. 620 IF A$="R" OR A$="r" THEN 260
  65. 630 IF A$="N" OR A$="n" THEN GOSUB 950
  66. 640 IF A$="A" OR A$="a" THEN GOSUB 1080
  67. 650 IF A$="X" OR A$="x" THEN GOSUB 790
  68. 660 IF A$="F" OR A$="f" THEN GOSUB 700
  69. 670 IF A$="P" OR A$="p" THEN GOSUB 1280
  70. 680 IF A$="Q" OR A$="q" THEN STOP
  71. 690 GOTO 300
  72. 700 PRINT CLS$:PRINT"SELECT FREQUENCY BAND FROM MENU":PRINT
  73. 710 PRINT TAB(9);" 1 =  3.5 MHZ"
  74. 720 PRINT TAB(9);" 2 =  7   MHZ"
  75. 730 PRINT TAB(9);" 3 = 14   MHZ"
  76. 740 PRINT TAB(9);" 4 = 30   MHZ"
  77. 750 PRINT TAB(9);" 5 = 50   MHZ":PRINT
  78. 760 INPUT"WHAT IS YOUR CHOICE";FB
  79. 770 IF FB<>1 AND FB<>2 AND FB<>3 AND FB<>4 AND FB<>5 THEN 700
  80. 780 PRINT:PRINT:RETURN
  81. 790 IF D$="Y" THEN INPUT"INPUT XMTR POWER (IN WATTS)";PW:GOTO 850
  82. 800 INPUT"INPUT XMTR POWER (IN DBM)";PD
  83. 810 PW=(PD-30)/10:PW=10^PW
  84. 820 IF PW>=1 THEN PW=INT(PW*10+.5)/10
  85. 830 IF PW<1 THEN PW=INT(PW*1000+.5)/1000
  86. 840 GOTO 860
  87. 850 PD=10*LOG(PW)/LOG(10)+30:PD=INT(PD*10+.5)/10
  88. 860 IF D$="Y" THEN INPUT"RCVR SENSITIVITY (IN MICRO-VOLTS)";RM:GOTO 930
  89. 870 INPUT"RCVR SENSITIVITY (IN DBM)";RD
  90. 880 IF RD>0 THEN PRINT"<1 MW IS A NEGATIVE NUMBER"
  91. 890 IF RD>0 THEN GOTO 870
  92. 900 RM=(RD+107)/20:RM=10^RM
  93. 910 IF RM>=1 THEN RM=INT(RM*10+.5)/10:GOTO 940
  94. 920 IF RM<1 THEN RM=INT(RM*100+.5)/100:GOTO 940
  95. 930 RD=20*LOG(RM)/LOG(10)-107:RD=INT(RD*10+.5)/10
  96. 940 RETURN
  97. 950 ' SELECT POLARIZATION & PROPAGATION PATH
  98. 960 PRINT:PRINT"VERTICAL OR HORIZONTAL POLARIZATION "
  99. 970 INPUT"(V OR H)";PO$
  100. 980 IF PO$="V" OR PO$="v" THEN PO=1
  101. 990 IF PO$="H" OR PO$="h" THEN PO=2
  102. 1000 IF PO$<>"V" AND PO$<>"H" AND PO$<>"v" AND PO$<>"h" THEN GOTO 970
  103. 1010 PRINT:PRINT"SELECT PROPAGATION PATH FROM MENU":PRINT
  104. 1020 PRINT" 1 = POOR SOIL"
  105. 1030 PRINT" 2 = GOOD SOIL"
  106. 1040 PRINT" 3 = SEA WATER":PRINT
  107. 1050 INPUT"WHAT IS YOUR CHOICE";PP
  108. 1060 IF PP<>1 AND PP<>2 AND PP<>3 THEN 1010
  109. 1070 RETURN
  110. 1080 ' ANTENNA PARAMETERS
  111. 1090 PRINT CLS$:PRINT"CHOOSE ANTENNA FEEDPOINT HEIGHT ABOVE"
  112. 1100 PRINT"GROUND FROM THE FOLLOWING MENU:":PRINT:PRINT
  113. 1110 IF PO=1 THEN PRINT"0 =  GROUNDED VERTICAL"
  114. 1120 PRINT"1 =  10'    4 =  40'    7 =  80'"
  115. 1130 PRINT"2 =  20'    5 =  50'    8 = 100'"
  116. 1140 PRINT"3 =  30'    6 =  60'    9 = 150'":PRINT:PRINT
  117. 1150 INPUT"SELECT HEIGHT OF TRANSMIT ANTENNA";H1:H1=INT(H1)
  118. 1160 INPUT"SELECT HEIGHT OF RECEIVE ANTENNA";H2:H2=INT(H2)
  119. 1170 IF H1<0 OR H2<0 OR H1>9 OR H2>9 THEN PRINT"NOT IN MENU"
  120. 1180 IF H1<0 OR H2<0 OR H1>9 OR H2>9 THEN GOTO 1150
  121. 1190 IF PO=2 AND (H1=0 OR H2=0) THEN PRINT "NOT IN MENU"
  122. 1200 IF PO=2 AND (H1=0 OR H2=0) THEN GOTO 1150
  123. 1210 PRINT:PRINT:PRINT
  124. 1220 INPUT"ENTER GAIN OF XMIT ANTENNA (IN DB)";GX
  125. 1230 INPUT"ENTER GAIN OF RCV ANTENNA (IN DB)";GR
  126. 1240 PRINT:PRINT:PRINT"ENTER TOTAL LOSSES AT TRANSMITTING AND"
  127. 1250 PRINT"RECEIVING ENDS OF THE LINK.  INCLUDE"
  128. 1260 INPUT"COAX CABLE LOSSES, ETC. (IN DB)";LL
  129. 1270 PRINT CLS$:RETURN
  130. 1280 LPRINT M$;LL$:LPRINT:LPRINT:LPRINT M$;"TITLE:  ";T$:LPRINT
  131. 1290 LPRINT M$;"GROUND WAVE PROPAGATION AT";F(FB);"MHZ"
  132. 1300 LPRINT M$;PO$(PO);" POLARIZATION OVER ";PP$(PP)
  133. 1310 LPRINT:LPRINT M$;"TRANSMITTER POWER OUT:";PD;TAB(37);"DBM"
  134. 1320 LPRINT TAB(29);PW;TAB(37);"WATTS
  135. 1330 LPRINT:LPRINT M$;"RECEIVER SENSITIVITY: ";RD;TAB(37);"DBM"
  136. 1340 LPRINT TAB(29);RM;TAB(37);"UV"
  137. 1350 LPRINT:LPRINT M$;"TRANSMITTING ANTENNA: ";GX;"DB GAIN"
  138. 1360 LPRINT TAB(31);"AT";H(H1);"FEET"
  139. 1370 LPRINT:LPRINT M$;"RECEIVING ANTENNA:    ";GR;"DB GAIN"
  140. 1380 LPRINT TAB(31);"AT";H(H2);"FEET"
  141. 1390 LPRINT:LPRINT M$;"SYSTEM LOSSES:        ";LL;"DB":LPRINT
  142. 1400 IF PL<P(1) THEN LPRINT M$;"RANGE NOT IN PROGRAM:  <";D(1);"MILES"
  143. 1410 IF PL>P(12) THEN LPRINT M$;"RANGE NOT IN PROGRAM;  >";D(12);"MILES"
  144. 1420 IF PL<P(1) OR PL>P(12) THEN 1440
  145. 1430 LPRINT M$;"MAXIMUM EXPECTED RANGE:";DI;"MILES"
  146. 1440 LPRINT:LPRINT M$;LL$:LPRINT:LPRINT
  147. 1450 RETURN
  148. 1460 RD=7:PRINT:PRINT:PRINT:PRINT"READING DATA ";RD;
  149. 1470 DIM HG(2,3,5,9):DIM H$(2,3,5):DIM P(12):DIM D(12)
  150. 1480 FOR PO=1 TO 2:' 1=VERT 2=HORIZ
  151. 1490 FOR PP=1 TO 3:' 1=POOR SOIL 2=GOOD SOIL 3=SEA WATER
  152. 1500 FOR FB=1 TO 5:' 1=3.5 2=7 3=14 4=28 5=50MHZ
  153. 1510 FOR AH=1 TO 9:' 1=10' 2=20 3=30 ... 6=60 7=80 8=100 9=150'
  154. 1520 READ HG(PO,PP,FB,AH):' HEIGHT GAIN IN DB
  155. 1530 NEXT AH:NEXT FB:RD=RD-1:PRINT RD;:NEXT PP:NEXT PO
  156. 1540 DATA 0,0,0,0,0,0,0,0,0
  157. 1550 DATA -1,-1,0,.5,1,2,3,4,7
  158. 1560 DATA 0,1.5,3,5,7,8,10,12,15
  159. 1570 DATA 2,6,8,11,12.5,14,16.5,18.5,22
  160. 1580 DATA 6,11,14,17,18.5,20,22.5,24,28
  161. 1590 DATA 0,0,0,0,0,0,0,0,0
  162. 1600 DATA 0,0,0,0,0,0,0,0,0
  163. 1610 DATA -.5,-1,-1,-.5,0,1,2,4,7
  164. 1620 DATA 0,1,2,3.5,5,6,8,10,13
  165. 1630 DATA 1,4,7,9,11,13,15,17,20
  166. 1640 DATA 0,0,0,0,0,0,0,0,0
  167. 1650 DATA 0,0,0,0,0,0,0,0,0
  168. 1660 DATA 0,0,0,0,0,0,0,0,0
  169. 1670 DATA 0,0,0,0,0,0,0,0,0
  170. 1680 DATA -1,-1.5,-2,-2.5,-3,-3,-2,-1.5,1
  171. 1690 DATA 0,2,4,6,7,8,10.5,12,15.5
  172. 1700 DATA 0,3,6,7.5,9,11,13,15,18.5
  173. 1710 DATA 0,4,8,11,13,14,16,18,22
  174. 1720 DATA 0,5.5,9,12,14,15,17,19.5,23
  175. 1730 DATA 0,6,9.5,12.5,14.5,15.5,17.5,20,23.5
  176. 1740 DATA 0,4,7.5,10,11.5,13,16,18,21
  177. 1750 DATA 0,5,8,11,13,15,17,19,22
  178. 1760 DATA 0,6,10,12,14,16,18,20,23
  179. 1770 DATA 0,6,10,12,14,16,18,20,23
  180. 1780 DATA 0,6,10,12,14,16,18,20,23
  181. 1790 DATA 0,6,9.5,12,14,15.5,18,20,23
  182. 1800 DATA 0,6,9.5,12,14,15.5,18,20,23
  183. 1810 DATA 0,6,9.5,12,14,15.5,18,20,23
  184. 1820 DATA 0,6,9.5,12,14,15.5,18,20,23
  185. 1830 DATA 0,6,9.5,12,14,15.5,18,20,23
  186. 1840 H$(1,1,1)="099007109012119020129035139054149088159125"
  187. 1850 H$(1,1,1)=H$(1,1,1)+"169170179210189250199290209320"
  188. 1860 H$(1,1,2)="1054.51157.6125013135023145037155055165088"
  189. 1870 H$(1,1,2)=H$(1,1,2)+"175120185160195190205230215270"
  190. 1880 H$(1,1,3)="1112.51214.5131008141013151023161037171053"
  191. 1890 H$(1,1,3)=H$(1,1,3)+"181080191105201130211150221180"
  192. 1900 H$(1,1,4)="1181.81283.11385.5148010158016168025178040"
  193. 1910 H$(1,1,4)=H$(1,1,4)+"188058198078208096218120228130"
  194. 1920 H$(1,1,5)="1231.31332.2143004153007163012173018183030"
  195. 1930 H$(1,1,5)=H$(1,1,5)+"193043203058213075223090233110"
  196. 1940 H$(1,2,1)="099027109045119060129110139150149190159230"
  197. 1950 H$(1,2,1)=H$(1,2,1)+"169270179310189340199380209420"
  198. 1960 H$(1,2,2)="105014115023125032135060145090155125165160"
  199. 1970 H$(1,2,2)=H$(1,2,2)+"175200185225195240205270215300"
  200. 1980 H$(1,2,3)="1115.7121011131021141032151050161070171094"
  201. 1990 H$(1,2,3)=H$(1,2,3)+"181120191140201160211180221200"
  202. 2000 H$(1,2,4)="1184.21287.5138013148022158035168050178069"
  203. 2010 H$(1,2,4)=H$(1,2,4)+"188089198110208130218150228170"
  204. 2020 H$(1,2,5)="123003133005143010153015163024173037183050"
  205. 2030 H$(1,2,5)=H$(1,2,5)+"193067203083213100223120233140"
  206. 2040 H$(1,3,1)="099190109290119380129470139570149650159740"
  207. 2050 H$(1,3,1)=H$(1,3,1)+"169820179920189999189999189999"
  208. 2060 H$(1,3,2)="105150115215125280135350145425155500165580"
  209. 2070 H$(1,3,2)=H$(1,3,2)+"175640185700195780205840215900"
  210. 2080 H$(1,3,3)="111083121115131150141185151220161260171300"
  211. 2090 H$(1,3,3)=H$(1,3,3)+"181340191370201410211450221480"
  212. 2100 H$(1,3,4)="118035128050138070148090158110168130178150"
  213. 2110 H$(1,3,4)=H$(1,3,4)+"188170198190208210218230228250"
  214. 2120 H$(1,3,5)="123017133027143040153054163070173085183100"
  215. 2130 H$(1,3,5)=H$(1,3,5)+"193117203130213150223170233185"
  216. 2140 H$(2,1,1)="0991.51092.61194.81298.1139015149025159042"
  217. 2150 H$(2,1,1)=H$(2,1,1)+"169060179090189125199162209200"
  218. 2160 H$(2,1,2)="1051.51152.61254.81358.1145015155025165042"
  219. 2170 H$(2,1,2)=H$(2,1,2)+"175060185080195115205140215170"
  220. 2180 H$(2,1,3)="1111.51212.61314.81418.1151015161025171042"
  221. 2190 H$(2,1,3)=H$(2,1,3)+"181056191078201100211122221145"
  222. 2200 H$(2,1,4)="1181.81283.21385.9148010158016168030178040"
  223. 2210 H$(2,1,4)=H$(2,1,4)+"188060198080208096218116228136"
  224. 2220 H$(2,1,5)="1232.41334.11437.2153013163022173032183045"
  225. 2230 H$(2,1,5)=H$(2,1,5)+"193060203071213082223100233120"
  226. 2240 H$(2,2,1)="0990.71091.31192.3129004139007149013159022"
  227. 2250 H$(2,2,1)=H$(2,2,1)+"169036179055189080199110209150"
  228. 2260 H$(2,2,2)="1050.91151.61252.91350051458.8155016165026"
  229. 2270 H$(2,2,2)=H$(2,2,2)+"175042185066195090205120215150"
  230. 2280 H$(2,2,3)="1111.31212.1131004141007151013161021171035"
  231. 2290 H$(2,2,3)=H$(2,2,3)+"181050191075201095211120221142"
  232. 2300 H$(2,2,4)="1181.81283.21385.21489.5158016168026178040"
  233. 2310 H$(2,2,4)=H$(2,2,4)+"188058198076208094218116228135"
  234. 2320 H$(2,2,5)="1232.41334.21437.4153012163020173031183045"
  235. 2330 H$(2,2,5)=H$(2,2,5)+"193058203074213090223110233120"
  236. 2340 H$(2,3,1)="0990.61091.01191.71290031395.51499.5159017"
  237. 2350 H$(2,3,1)=H$(2,3,1)+"169028179046189072199108209140"
  238. 2360 H$(2,3,2)="1050.81151.41252.41354.31457.7155013165023"
  239. 2370 H$(2,3,2)=H$(2,3,2)+"175038185059195084205115215150"
  240. 2380 H$(2,3,3)="1111.21212.11313.81416.8151012161020171033"
  241. 2390 H$(2,3,3)=H$(2,3,3)+"181050191070201095211120221140"
  242. 2400 H$(2,3,4)="1181.71283.01385.41489.4158016168026178040"
  243. 2410 H$(2,3,4)=H$(2,3,4)+"188056198076208098218116228130"
  244. 2420 H$(2,3,5)="1232.41334.11437.2153012163020173032183045"
  245. 2430 H$(2,3,5)=H$(2,3,5)+"193060203076213090223110233125"
  246. 2440 F(1)=3.5:F(2)=7:F(3)=14:F(4)=30:F(5)=50
  247. 2450 RD=RD-1:PRINT RD
  248. 2460 PO$(1)="VERTICAL":PO$(2)="HORIZONTAL"
  249. 2470 PP$(1)="POOR SOIL":PP$(2)="GOOD SOIL":PP$(3)="SEA WATER"
  250. 2480 LL$="---------------------------------------":M$="       "
  251. 2490 H(0)=0:H(1)=10:H(2)=20:H(3)=30:H(4)=40:H(5)=50
  252. 2500 H(6)=60:H(7)=80:H(8)=100:H(9)=150
  253. 2510 RETURN
  254.