home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / misc / hfmagic1 / hfmagic1.fnl (.txt) < prev    next >
Encoding:
GW-BASIC  |  1990-02-27  |  6.9 KB  |  290 lines

  1. 20  CLS
  2. 40  PI=3.14159:DEF FNA(X)=-ATN(X/SQR(-X*X+1))+(PI/2)
  3. 50  DIM M$(37),A$(4),M(12):FOR  T=1 TO 12:READ M(T):NEXT T
  4. 60  DATA 31,28,31,30,31,30,31,31,30,31,30,31
  5. 70  'READ M
  6. 80  M$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
  7. 90  PRINT "ENTER:":PRINT"  1-5 VAL SM":PRINT"  2-9 VAL SM":PRINT"  3-ARBITRARY SM":PRINT"  4-3 VAL MUF"
  8. 100  INPUT Q
  9. 110  ZY$=RIGHT$(STR$(Q),1)
  10. 120  ON Q GOTO 250,200,130,1270
  11. 130  CLS
  12. 140  PRINT"ENTER NO. OF FREQS"
  13. 150  INPUT NF
  14. 160  DIM F0(NF),TA(NF),SM(NF)
  15. 170  PRINT"ENTER FREQS, HIT ENTER AFTER EACH"
  16. 180  FOR YY=1 TO NF:INPUT F0(YY):NEXT YY
  17. 190  GOTO 290
  18. 200  DIM F0(9),TA(9),SM(9)
  19. 210  FOR X=1 TO 9:READ F0(X):NEXT X
  20. 220  DATA 1.9,3.8,7.2,10.1,14.2,18.1,21.3,24.9,28.5
  21. 230  NF=9
  22. 240  GOTO 290
  23. 250  DIM F0(5),TA(5),SM(5)
  24. 260  FOR X=1 TO 9:READ OP:NEXT X:FOR X=1 TO 5:READ F0(X):NEXT X
  25. 270  DATA 3.8,7.2,14.2,21.3,28.5
  26. 280  NF=5
  27. 290  R0=PI/180
  28. 300  P1=2*PI
  29. 310  R1=180/PI
  30. 320  P0=PI/2
  31. 330  CLS
  32. 340  PRINT"ENTER NUM OF SF PTS,INCREMENT"
  33. 350  INPUT NS,SI
  34. 360  PRINT"NUMBER OF RUNS"
  35. 370  INPUT NR
  36. 380  DIM W6(NR),L6(NR),W7(NR),L7(NR),DA(NR),MM(NR),SS(NR),AN$(NR)
  37. 390  PRINT"STR FORMAT LAT,LON,LAT,LON,DAY,MO,SF START,ALPHA TITLE"
  38. 400  FOR ND=1 TO NR
  39. 410  PRINT"ENTER STRING NO.";ND
  40. 420  INPUT L6(ND),W6(ND),L7(ND),W7(ND),DA(ND),MM(ND),SS(ND),AN$(ND)
  41. 430  NEXT ND
  42. 440  PRINT "*"
  43. 450  FOR ZZ=1 TO 3:PRINT :NEXT
  44. 460  PRINT "FLUX PTS,INCR";NS;SI
  45. 470  PRINT "INPUT DATA STRINGS"
  46. 480  FOR NT=1 TO NR
  47. 490  PRINT L6(NT);W6(NT);L7(NT);W7(NT);DA(NT);MM(NT);SS(NT);AN$(NT)
  48. 500  NEXT NT
  49. 510  FOR ZZ=1 TO 3:PRINT :NEXT
  50. 520  INPUT"PRESS ENTER TO CONTINUE";PK$
  51. 530  FOR YY=1 TO(56-NR)
  52. 540  PRINT
  53. 550  NEXT YY
  54. 560  PRINT "*"
  55. 570  FOR NM=1 TO NR
  56. 580  L1=L6(NM)*R0
  57. 590  W1=W6(NM)*R0
  58. 600  L2=L7(NM)*R0
  59. 610  W2=W7(NM)*R0
  60. 620  D6=DA(NM)
  61. 630  M0=MM(NM)
  62. 640  SF=SS(NM)
  63. 650  FOR SV=1 TO NS
  64. 660  SU=SF+((SV-1)*SI)
  65. 670  S9=FIX((SU-60)/0.9)
  66. 680  CLS
  67. 690  A$=MID$(M$,(M0-1)*3+1,3)
  68. 700  PRINT "*"
  69. 710  FOR SS=1 TO 3:PRINT :NEXT SS
  70. 720  PRINT CHR$(31);"HFMAGIC 1.0";ZY$;" FOR ";AN$(NM);" BY W2KK.";CHR$(30)
  71. 730  PRINT
  72. 740  CLS:PRINT "DATE:";D6;A$
  73. 750  PRINT "TRANSMITTER LOCATION":PRINT " LATITUDE";L1/R0;" LONGITUDE";W1/R0
  74. 760  PRINT "RECEIVER LOCATION":PRINT " LATITUDE";L2/R0;" LONGITUDE";W2/R0
  75. 770  PRINT "  SUNSPOT NUMBER= ";S9;"  SOLAR FLUX= ";SU;" (WWV AT HR+18 MIN)"
  76. 780  PRINT
  77. 790  PRINT
  78. 800  PRINT "         RECEIVED SIGNAL FOR 100W TRANSMITTED. PERFECT"
  79. 810  PRINT "         NON DIRECTIVE ANTENNAS. DB OVER/UNDER S9"
  80. 820  PRINT
  81. 830  PRINT "UT             FREQUENCY"
  82. 840  PRINT "HR  MUF  ";
  83. 850  FOR XX=1 TO NF:PRINT USING" ##.#";F0(XX);:NEXT XX
  84. 860  PRINT
  85. 870  PRINT "--  ---  ";
  86. 880  FOR XX=1 TO NF:PRINT " ----";:NEXT XX
  87. 890  PRINT
  88. 900  FOR T5=0 TO 23
  89. 910  GOSUB 2060
  90. 920  HF=200
  91. 930  FOR X=1 TO NF
  92. 940  PC=ATN((SQR(HF*HF+2*HF*4000)/4000))
  93. 950  IF PC>(G1/2) THEN 980
  94. 960  SM(X)=-97
  95. 970  GOTO 1120
  96. 980  IF F0(X)<J9 GOTO 1010
  97. 990  SM(X)=-98
  98. 1000  GOTO 1120
  99. 1010  SL=SQR(2*4000*4000+HF*HF+2*4000*HF-(2*4000*(4000+HF)*COS(G1/2)))
  100. 1020  DA=((HF+4000)/SL)*SIN(G1/2)
  101. 1030  DL=FNA(DA)
  102. 1040  CF=COS(0.881*XI)
  103. 1050  IF CF<0 THEN CF=0
  104. 1060  II=(1+0.0037*S9)*(CF^1.3)
  105. 1070  LD=(658*II)/(F0(X)*F0(X)*(SIN(DL)^0.75))
  106. 1080  LF=0.434294
  107. 1090  TA(X)=LD+36.6+(20*LF*LOG(2*SL*F0(X)))
  108. 1100  SM(X)=123-TA(X)
  109. 1110  IF SM(X)<-99 THEN SM(X)=-99
  110. 1120  NEXT X
  111. 1130  PRINT USING"## ##.#  ";T5;J9;
  112. 1140  FOR XX=1 TO NF:PRINT USING"  ###";SM(XX);:NEXT XX
  113. 1150  PRINT
  114. 1160  NEXT T5
  115. 1170  PRINT
  116. 1180  PRINT "GRT CIR DIST= ";FIX(G1*20000/PI);"KM  ";FIX(G1*12500/PI);"STAT MILES  ";FIX(G1*12500/(1.15*PI));"NAUT MILES."
  117. 1190  PRINT "PATH MIDPOINT= ";FIX(W0*1800/PI)/10;" LON   ";FIX(L0*1800/PI)/10;" LAT"
  118. 1200  PRINT
  119. 1210  PRINT "HFMAGIC 1.0 COPYRIGHT W2KK 2201 DUVALL RD. WOODBINE, MD 21797"
  120. 1220  FOR SS=1 TO 16:PRINT :NEXT SS
  121. 1230  PRINT "#"
  122. 1240  NEXT SV
  123. 1250  NEXT NM
  124. 1260  END
  125. 1270  REM
  126. 1280  R0=PI/180
  127. 1290  P1=2*PI
  128. 1300  R1=180/PI
  129. 1310  P0=PI/2
  130. 1320  CLS
  131. 1330  PRINT"NUMBER OF RUNS"
  132. 1340  INPUT NR
  133. 1350  DIM L6(NR),W6(NR),L7(NR),W7(NR),DA(NR),MM(NR),SU(NR),AN$(NR)
  134. 1360  PRINT "ENTER DATA STRINGS AS LAT,LON,LAT,LON,DAY MO,SFSTART,ALPHA STRING"
  135. 1370  FOR XX=1 TO NR
  136. 1380  PRINT"STRING";XX
  137. 1390  INPUT L6(XX),W6(XX),L7(XX),W7(XX),DA(XX),MM(XX),SU(XX),AN$(XX)
  138. 1400  NEXT XX
  139. 1410  PRINT "*"
  140. 1420  FOR ZZ=1 TO 3:PRINT :NEXT ZZ
  141. 1430  PRINT "DATA STRINGS FOR ";NR;" RUNS"
  142. 1440  FOR NT=1 TO NR
  143. 1450  PRINT L6(NT);W6(NT);L7(NT);W7(NT);DA(NT);MM(NT);SU(NT);AN$(NT)
  144. 1460  NEXT NT
  145. 1470  FOR ZZ=1 TO 3:PRINT :NEXT ZZ
  146. 1480  INPUT"IF DATA CORRECT,PRESS ENTER TO CONTINUE";PK$
  147. 1490  FOR XX=1  TO (57-NR):PRINT :NEXT XX
  148. 1500  PRINT "*"
  149. 1510  FOR NC=1 TO NR
  150. 1520  L1=L6(NC)
  151. 1530  W1=W6(NC)
  152. 1540  L2=L7(NC)
  153. 1550  W2=W7(NC)
  154. 1560  D6=DA(NC)
  155. 1570  M0=MM(NC)
  156. 1580  SO=SU(NC)
  157. 1590  FOR SI=1 TO 3
  158. 1600  SF(SI)=SO+30*(SI-1)
  159. 1610  SS(SI)=FIX((SF(SI)-60)/0.9)
  160. 1620  NEXT SI
  161. 1630  CLS
  162. 1640  A$=MID$(M$,(M0-1)*3+1,3)
  163. 1650  PRINT "*"
  164. 1660  FOR SS=1 TO 3:PRINT :NEXT SS
  165. 1670  PRINT CHR$(31);"MAGIC 9.";ZY$;" FOR ";AN$(NC);" BY W2KK.";CHR$(30)
  166. 1680  PRINT
  167. 1690  CLS:PRINT "DATE:";D6;A$
  168. 1700  PRINT "TRANSMITTER LOCATION":PRINT " LATITUDE";L1;" LONGITUDE";W1
  169. 1710  PRINT "RECEIVER LOCATION":PRINT " LATITUDE";L2;" LONGITUDE";W2
  170. 1720  PRINT
  171. 1730  PRINT "     MAX. USABLE FREQUENCY AS A FUNCTION OF TIME"
  172. 1740  PRINT
  173. 1750  PRINT "UT    (OBTAIN SOLAR FLUX FROM WWV AT HR+18 MIN)"
  174. 1760  PRINT "HR"
  175. 1770  PRINT "I"
  176. 1780  PRINT "I"
  177. 1790  PRINT "I"
  178. 1800  PRINT "I"
  179. 1810  PRINT "V"
  180. 1820  PRINT USING"        ###   ###   ###";SF(1);SF(2);SF(3);:PRINT "  <------ SOLAR FLUX"
  181. 1830  PRINT USING"        ###   ###   ###";SS(1);SS(2);SS(3);:PRINT "  <------ SUNSPOT NUMBER"
  182. 1840  PRINT "--     ----  ----  ----"
  183. 1850  L1=L1*R0
  184. 1860  W1=W1*R0
  185. 1870  L2=L2*R0
  186. 1880  W2=W2*R0
  187. 1890  FOR T5=0 TO 23
  188. 1900  FOR SI=1 TO 3
  189. 1910  S9=SS(SI)
  190. 1920  GOSUB 2060
  191. 1930  JJ(SI)=J9
  192. 1940  NEXT SI
  193. 1950  PRINT USING"##     ##.#  ##.#  ##.#";T5,JJ(1),JJ(2),JJ(3)
  194. 1960  NEXT T5
  195. 1970  PRINT
  196. 1980  PRINT "GRT CIR DIST= ";FIX(G1*20000/PI);"KM ";FIX(G1*12500/PI);"STAT MILES ";FIX(G1*12500/(1.15*PI));"NAUT MILES."
  197. 1990  PRINT
  198. 2000  PRINT "COPYRIGHT W2KK"
  199. 2010  FOR SS=1 TO 13:PRINT :NEXT SS
  200. 2020  PRINT "*"
  201. 2030  NEXT NC
  202. 2040  END
  203. 2060  K7=SIN(L1)*SIN(L2)+COS(L1)*COS(L2)*COS(W2-W1)
  204. 2070  IF K7<=-1 THEN K7=-1
  205. 2080  IF K7>=1 THEN K7=1
  206. 2090  G1=FNA(K7)
  207. 2100  K6=1.59*G1
  208. 2110  IF K6<1 THEN K6=1
  209. 2120  K5=1/K6
  210. 2130  J9=100
  211. 2140  FOR K1=1/(2*K6) TO 1-1/(2*K6) STEP 0.9999-1/K6
  212. 2150  IF K5=1 THEN GOTO 2170
  213. 2160  K5=0.5
  214. 2170  P=SIN(L2)
  215. 2180  Q=COS(L2)
  216. 2190  A=(SIN(L1)-P*COS(G1))/(Q*SIN(G1))
  217. 2200  B=G1*K1
  218. 2210  C=P*COS(B)+Q*SIN(B)*A
  219. 2220  D=(COS(B)-C*P)/(Q*SQR(1-C*C))
  220. 2230  IF D<=-1 THEN D=-1
  221. 2240  IF D>=1 THEN D=1
  222. 2250  D=FNA(D)
  223. 2260  W0=W2+SGN(SIN(W1-W2))*D
  224. 2270  IF W0>=0 THEN 2290
  225. 2280  W0=W0+P1
  226. 2290  IF W0<P1  THEN 2310
  227. 2300  W0=W0-P1
  228. 2310  IF C<=-1 THEN C=-1
  229. 2320  IF C>=1 THEN C=1
  230. 2330  L0=P0-FNA(C)
  231. 2340  Y1=0.0172*(10+(M0-1)*30.4+D6)
  232. 2350  Y2=0.409*COS(Y1)
  233. 2360  LS=-Y2
  234. 2370  WS=PI*(T5/12-1)
  235. 2380  XF=SIN(L0)*SIN(LS)+COS(L0)*COS(LS)*COS(WS-W0)
  236. 2390  IF XF<=-1 THEN XF=-1
  237. 2400  IF XF>=1 THEN XF=1
  238. 2410  XI=FNA(XF)
  239. 2420  K8=3.82*W0+12+0.13*(SIN(Y1)+1.2*SIN(2*Y1))
  240. 2430  K8=K8-12*(1+SGN(K8-24))*SGN(ABS(K8-24))
  241. 2440  IF COS(L0+Y2)>-0.26 THEN 2520
  242. 2450  K9=0
  243. 2460  G0=0
  244. 2470  M9=2.5*G1*K5
  245. 2480  IF M9>P0 THEN M9=P0
  246. 2490  M9=SIN(M9)
  247. 2500  M9=1+2.5*M9*SQR(M9)
  248. 2510  GOTO 2760
  249. 2520  K9=(-0.26+SIN(Y2)*SIN(L0))/(COS(Y2)*COS(L0)+0.000999999)
  250. 2530  K9=12-ATN(K9/SQR(ABS(1-K9*K9)))*7.63944
  251. 2540  T=K8-K9/2+12*(1-SGN(K8-K9/2))*SGN(ABS(K8-K9/2))
  252. 2550  T4=K8+K9/2-12*(1+SGN(K8+K9/2-24))*SGN(ABS(K8+K9/2-24))
  253. 2560  C0=ABS(COS(L0+Y2))
  254. 2570  T9=9.7*C0^9.6
  255. 2580  IF T9>0.1 THEN 2600
  256. 2590  T9=0.1
  257. 2600  M9=2.5*G1*K5
  258. 2610  IF M9>P0  THEN M9=P0
  259. 2620  M9=SIN(M9)
  260. 2630  M9=1+2.5*M9*SQR(M9)
  261. 2640  IF T4<T  THEN 2670
  262. 2650  IF (T5-T)*(T4-T5)>0 THEN 2680
  263. 2660  GOTO 2810
  264. 2670  IF (T5-T4)*(T-T5)>0 THEN 2810
  265. 2680  T6=T5+12*(1+SGN(T-T5))*SGN(ABS(T-T5))
  266. 2690  G9=PI*(T6-T)/K9
  267. 2700  G8=PI*T9/K9
  268. 2710  U=(T-T6)/T9
  269. 2720  G0=C0*(SIN(G9)+G8*(EXP(U)-COS(G9)))/(1+G8*G8)
  270. 2730  G7=C0*(G8*(EXP(-K9/T9)+1))*EXP((K9-24)/2)/(1+G8*G8)
  271. 2740  IF G0>=G7<UNK! {0009}>THEN 2760
  272. 2750  G0=G7
  273. 2760  G2=(1+S9/250)*M9*SQR(6+58*SQR(G0))
  274. 2770  G2=G2*(1-0.1*EXP((K9-24)/3))
  275. 2780  G2=G2*(1+(1-SGN(L1)*SGN(L2))*0.1)
  276. 2790  G2=G2*(1-0.1*(1+SGN(ABS(SIN(L0))-COS(L0))))
  277. 2800  GOTO 2870
  278. 2810  T6=T5+12*(1+SGN(T4-T5))*SGN(ABS(T4-T5))
  279. 2820  G8=PI*T9/K9
  280. 2830  U=(T4-T6)/2
  281. 2840  U1=-K9/T9
  282. 2850  G0=C0*(G8*(EXP(U1)+1))*EXP(U)/(1+G8*G8)
  283. 2860  GOTO 2760
  284. 2870  IF G2>J9  THEN 2890
  285. 2880  J9=G2
  286. 2890  NEXT K1
  287. 2900  IF J9<2 THEN J9=2
  288. 2920  RETURN
  289. 5000  FOR X=1 TO 66:PRINT :NEXT X
  290.