home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Software / MINIMUF (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  5.6 KB  |  278 lines

  1. 1 REM--MINIMUF/CBM64/ALAN MEMLY,KE6UY
  2. 10 CLR
  3. 20 POKE53281,11
  4. 21 POKE53280,11
  5. 25 PRINT"[155]"
  6. 49 PRINT"[147]"
  7. 50 RESTORE
  8. 110 DIMM$(37),A$(4),M(12)
  9. 120 DATA31,28,31,30,31,30,31,31,30,31,30,31
  10. 130 FORX=1TO12:READM(X):NEXT
  11. 140 M$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
  12. 150 R0=(null)/180
  13. 155 P1=2*(null)
  14. 160 R1=180/(null)
  15. 170 P0=(null)/2
  16. 175 PRINT"[147]"
  17. 176 INPUT"XMTR AT HOME (Y/N):";Q$
  18. 180 PRINT"[147]":PRINT:PRINT:PRINT
  19. 185 IFQ$="N"THEN190
  20. 186 X1=41.9:Y1=87.6:GOTO270
  21. 190 INPUT"XMTR LAT, LONG :";X1,Y1
  22. 210 IFX1=>-90THEN212
  23. 211 GOTO220
  24. 212 IFX1=<90THEN240
  25. 220 PRINT"INVALID LATITUDE. MUST BE IN RANGE"
  26. 221 PRINT"OF -90 TO 90 DEGREES"
  27. 230 GOTO190
  28. 240 IFY1<-360THEN250
  29. 241 IFY1>360THEN250
  30. 242 GOTO270
  31. 250 PRINT"INVALID LONGITUDE. MUST BE IN RANGE -360 TO +360"
  32. 260 GOTO190
  33. 270 INPUT"RECEIVER LAT, LONG";X2,Y2
  34. 290 IFX2<-90THEN300
  35. 291 IFX2>90THEN300
  36. 292 GOTO320
  37. 300 PRINT"INVALID LATITUDE. MUST BE IN RANGE"
  38. 301 PRINT"OF -90 TO 90 DEGREES"
  39. 302 GOTO270
  40. 320 IFY2<-360THEN330
  41. 321 IFY2>360THEN330
  42. 323 GOTO350
  43. 330 PRINT"INVALID LONGITUDE. MUST BE IN RANGE -360 TO +360"
  44. 331 GOTO270
  45. 350 INPUT"DATE (DAY,MONTH):";D6,M0
  46. 370 IFM0<=12 THEN 400
  47. 380 PRINT"INVALID MONTH. MUST BE IN RANGE 1-12"
  48. 390 GOTO350
  49. 400 IFM(M0)-D6<0THEN410
  50. 405 GOTO430
  51. 410 PRINT"INVALID DAY"
  52. 420 GOTO350
  53. 430 INPUT"SOLAR FLUX NUMBER:";SF
  54. 440 INPUT"GRAPH OR TABLE(G/T):";C$
  55. 450 IFSF<0THEN460
  56. 455 S9=(-0.73+SQR((.73)^2-4*(.0008)*(65-SF)))/(2*.0008)
  57. 456 S9=INT(S9)
  58. 457 GOTO480
  59. 460 PRINT"INVALID. MUST BE NON-NEGATIVE":GOTO430
  60. 480 PRINT"[147]"
  61. 481 GOSUB3000
  62. 490 A$=MID$(M$,3*M0-2,3)
  63. 495 IFC$="G"THEN600
  64. 500 PRINT"[153]";"DATE:";D6;A$
  65. 510 PRINT"  TRANSMITTER LOCATION:"
  66. 520 PRINTTAB(7)"LATITUDE";X1;TAB(22);"LONGITUDE";Y1
  67. 530 PRINT"  RECEIVER LOCATION:"
  68. 540 PRINTTAB(7)"LATITUDE";X2;TAB(22);"LONGITUDE";Y2
  69. 545 PRINT"  DISTANCE =";DX;"MILES"
  70. 550 PRINT"  SUNSPOT NUMBER = ";S9
  71. 555 PRINT
  72. 560 PRINTTAB(4)"HOUR";TAB(11)"MUF";TAB(21)"HOUR";TAB(28)"MUF"
  73. 590 PRINT
  74. 600 L1=X1*R0
  75. 610 W1=Y1*R0
  76. 620 L2=X2*R0
  77. 630 W2=Y2*R0
  78. 635 IFC$="G"THEN2000
  79. 639 CO=0:PRINT"[158]"
  80. 640 FORT5=0TO23
  81. 641 CO=CO+1
  82. 650 GOSUB1000
  83. 653 J9=J9*10
  84. 654 J9=INT(J9)
  85. 655 J9=J9/10
  86. 658 IFCO=2THEN665
  87. 659 PRINT"[145]"
  88. 660 PRINTTAB(4)T5;TAB(10)J9
  89. 661 GOTO670
  90. 665 PRINT"[145][145]":PRINTTAB(21)T5;TAB(27)J9
  91. 666 CO=0
  92. 670 NEXTT5
  93. 680 PRINT""
  94. 691 INPUT"PERFORM NEXT CASE (Y/N):";B$
  95. 692 PRINT"[155]"
  96. 700 IFB$="Y"THEN175
  97. 709 PRINT"[147]"
  98. 710 END
  99. 1000 REM-MINIMUF 3.5
  100. 1010 K7=SIN(L1)*SIN(L2)+COS(L1)*COS(L2)*COS(W2-W1)
  101. 1020 IFK7=>-1THEN1050
  102. 1030 K7=-1
  103. 1040 GOTO1070
  104. 1050 IFK7<=1THEN1070
  105. 1060 K7=1
  106. 1070 G1=-ATN(K7/SQR(-K7*K7+1))+(null)/2
  107. 1080 K6=1.59*G1
  108. 1090 IFK6>=1THEN1110
  109. 1100 K6=1
  110. 1110 K5=1/K6
  111. 1120 J9=100
  112. 1130 FORK1=1/(2*K6)TO1-1/(2*K6)STEP0.9999-1/K6
  113. 1140 IFK5=1THEN1160
  114. 1150 K5=0.5
  115. 1160 P=SIN(L2)
  116. 1170 Q=COS(L2)
  117. 1180 A=(SIN(L1)-P*COS(G1))/(Q*SIN(G1))
  118. 1190 B=G1*K1
  119. 1200 C=P*COS(B)+Q*SIN(B)*A
  120. 1210 D=(COS(B)-C*P)/(Q*SQR(1-C^2))
  121. 1220 IFD>=-1THEN1250
  122. 1230 D=-1
  123. 1240 GOTO1270
  124. 1250 IFD<=1THEN1270
  125. 1260 D=1
  126. 1270 D=-ATN(D/SQR(-D*D+1))+(null)/2
  127. 1280 W0=W2+SGN(SIN(W1-W2))*D
  128. 1290 IFW0=>0THEN1310
  129. 1300 W0=W0+P1
  130. 1310 IFW0<P1THEN1330
  131. 1320 W0=W0-P1
  132. 1330 IFC=>-1THEN1360
  133. 1340 C=-1
  134. 1350 GOTO1380
  135. 1360 IFC<=1THEN1380
  136. 1370 C=1
  137. 1380 L0=P0-(-ATN(C/SQR(-C*C+1))+(null)/2)
  138. 1390 Y1=0.172*(10+(M0-1)*30.4+D6)
  139. 1400 Y2=0.409*COS(Y1)
  140. 1410 K8=3.82*W0+12+0.13*(SIN(Y1)+1.2*SIN(2*Y1))
  141. 1420 K8=K8-12*(1+SGN(K8-24))*SGN(ABS(K8-24))
  142. 1430 IFCOS(L0+Y2)>-0.26THEN1520
  143. 1440 K9=0
  144. 1450 G0=0
  145. 1460 M9=2.5*G1*K5
  146. 1470 IFM9<=P0THEN1490
  147. 1480 M9=P0
  148. 1490 M9=SIN(M9)
  149. 1500 M9=1+2.5*M9*SQR(M9)
  150. 1510 GOTO1770
  151. 1520 K9=(-0.26+SIN(Y2)*SIN(L0))/(COS(Y2)*COS(L0)+1.0E-3)
  152. 1530 K9=12-ATN(K9/SQR(ABS(1-K9*K9)))*7.639437
  153. 1540 T=K8-K9/2+12*(1-SGN(K8-K9/2))*SGN(ABS(K8-K9/2))
  154. 1550 T4=K8+K9/2-12*(1+SGN(K8+K9/2-24))*SGN(ABS(K8+K9/2-24))
  155. 1560 C0=ABS(COS(L0+Y2))
  156. 1570 T9=9.7*C0^9.6
  157. 1580 IFT9>0.1THEN1600
  158. 1590 T9=0.1
  159. 1600 M9=2.5*G1*K5
  160. 1610 IFM9<=P0THEN1630
  161. 1620 M9=P0
  162. 1630 M9=SIN(M9)
  163. 1640 M9=1+2.5*M9*SQR(M9)
  164. 1650 IFT4<TTHEN1680
  165. 1660 IF(T5-T)*(T4-T5)>0THEN1690
  166. 1670 GOTO1820
  167. 1680 IF(T5-T4)*(T-T5)>0THEN1820
  168. 1690 T6=T5+12*(1+SGN(T-T5))*SGN(ABS(T-T5))
  169. 1700 G9=(null)*(T6-T)/K9
  170. 1710 G8=(null)*T9/K9
  171. 1720 U=(T-T6)/T9
  172. 1730 G0=C0*(SIN(G9)+G8*(EXP(U)-COS(G9)))/(1+G8*G8)
  173. 1740 G7=C0*(G8*(EXP(-K9/T9)+1))*EXP((K9-24)/2)/(1+G8*G8)
  174. 1750 IFG0=>G7THEN1770
  175. 1760 G0=G7
  176. 1770 G2=(1+S9/250)*M9*SQR(6+58*SQR(G0))
  177. 1780 G2=G2*(1-0.1*EXP((K9-24)/3))
  178. 1790 G2=G2*(1+(1-SGN(L1)*SGN(L2))*0.1)
  179. 1800 G2=G2*(1-0.1*(1+SGN(ABS(SIN(L0))-COS(L0))))
  180. 1810 GOTO1880
  181. 1820 T6=T5+12*(1+SGN(T4-T5))*SGN(ABS(T4-T5))
  182. 1830 G8=(null)*T9/K9
  183. 1840 U=(T4-T6)/2
  184. 1850 U1=-K9/T9
  185. 1860 G0=C0*(G8*(EXP(U1)+1))*EXP(U)/(1+G8*G8)
  186. 1870 GOTO1770
  187. 1880 IFG2>J9THEN1900
  188. 1890 J9=G2
  189. 1900 NEXTK1
  190. 1910 J9=.93*J9
  191. 1915 RETURN
  192. 2000 PRINT"[147]":PRINT:PRINT:PRINT:PRINT"[150]"
  193. 2010 PRINT"";TAB(9)"                          "
  194. 2020 FORX=1TO18
  195. 2021 PRINT"";TAB(9)" ";TAB(34)" "
  196. 2022 NEXTX
  197. 2040 PRINT"";TAB(9)"                          "
  198. 2050 PRINTTAB(10)"[155]";"0";TAB(14)"4";TAB(18)"8";TAB(22)"12";TAB(26)"16";
  199. 2051 PRINTTAB(30)"20"
  200. 2055 PRINTTAB(19)"[158]";"HOUR"
  201. 2060 PRINT"";"";
  202. 2065 PRINT""
  203. 2070 FORX=38TO10STEP-2
  204. 2090 PRINT"[155]";TAB(6)X"------------------------"X
  205. 2100 NEXTX
  206. 2105 PRINTTAB(8)"8------------------------8"
  207. 2110 PRINTTAB(8)"6------------------------6"
  208. 2115 PRINTTAB(8)"4------------------------4"
  209. 2120 PRINT""
  210. 2130 FORX=1TO4:PRINT"":NEXT
  211. 2140 PRINT"[158]"
  212. 2160 PRINT"  ";TAB(3)"MUF"
  213. 2170 PRINT""
  214. 2180 PRINT"";"";"";"[153]";"XMTR"
  215. 2200 PRINTX1;"/"
  216. 2210 PRINTY1
  217. 2220 FORX=1TO5:PRINT"":NEXT:PRINT"RCVR"
  218. 2230 PRINTX2;"/"
  219. 2240 PRINTY2
  220. 2250 PRINT"";TAB(11)"DISTANCE =";DX"MILES[153]"
  221. 2270 PRINTTAB(12)"SUNSPOT NUMBER =";S9
  222. 2275 PRINT""
  223. 2276 GOSUB2700
  224. 2290 FORT5=0TO23
  225. 2300 GOSUB1000
  226. 2310 PRINT""
  227. 2320 J9=INT(J9):J9=J9/2:J9=INT(J9):J9=2*J9
  228. 2330 IFJ9>38THEN2350
  229. 2340 GOTO 2360
  230. 2350 J9=38
  231. 2360 PRINT"";
  232. 2380 SS=(38-J9)/2
  233. 2390 FORX=0TOSS
  234. 2392 PRINT"";
  235. 2395 NEXTX
  236. 2400 PRINT"";
  237. 2420 FORX=J9TO4STEP-2
  238. 2425 IFJ9<4THEN2440
  239. 2430 PRINT"";TAB(T5+10)" "
  240. 2440 NEXTX
  241. 2445 NEXTT5
  242. 2450 PRINT:PRINT:PRINT
  243. 2455 PRINT"[155]";
  244. 2460 INPUT"PERFORM NEXT CASE (Y/N)";N$
  245. 2465 POKEV+21,0
  246. 2470 IFN$="Y"THEN10
  247. 2480 PRINT"[147]":END
  248. 2700 V=53248:POKEV+21,1:POKE2040,13
  249. 2705 POKEV+39,4
  250. 2710 FORN=0TO62:READQ:POKE832+N,Q:NEXT
  251. 2712 POKEV+0,170:POKEV+1,100
  252. 2715 POKEV+29,1:POKEV+23,1
  253. 2720 DATA0,3,248,0,0,128,0,31,240,0,2,0,0,4,0,1,255,192,0,24,0,0,40,0
  254. 2730 DATA31,255,0,0,8,0,0,28,0,0,20,0,0,28,0,0,20,0,0,28,0,0,20,0,0,28,0,0,20,0
  255. 2740 DATA0,28,0,0,20,0,0,28,0
  256. 2750 RETURN
  257. 3000 RA=3956.75
  258. 3005 X7=RA*SIN((90-X1)*(null)/180)*COS(Y1*(null)/180)
  259. 3006 Y7=RA*SIN((90-X1)*(null)/180)*SIN(Y1*(null)/180)
  260. 3007 Z7=RA*COS((90-X1)*(null)/180)
  261. 3010 DE=((X7^2)+(Y7^2)+(Z7^2))^.5
  262. 3015 CA=X7/DE:CB=Y7/DE:CC=Z7/DE
  263. 3020 X8=RA*SIN((90-X2)*(null)/180)*COS(Y2*(null)/180)
  264. 3021 Y8=RA*SIN((90-X2)*(null)/180)*SIN(Y2*(null)/180)
  265. 3022 Z8=RA*COS((90-X2)*(null)/180)
  266. 3025 DG=((X8^2)+(Y8^2)+(Z8^2))^.5
  267. 3030 CD=X8/DG:CE=Y8/DG:CF=Z8/DG
  268. 3035 CT=((X7*X8)+(Y7*Y8)+(Z7*Z8))/(DG*DE)
  269. 3040 IFCT=0THENCT=.000000000001
  270. 3042 DI=((RA^2)+(RA^2)-2*RA*RA*CT)^.5
  271. 3043 IFDI>5656.85425THENGOTO3065
  272. 3050 SI=(1-(CT^2))^.5
  273. 3060 TA=SI/CT:T=ATN(TA)*180/(null):GOTO3075
  274. 3065 SI=-1*(1-(CT^2))^.5
  275. 3070 TA=SI/CT:T=180-ATN(TA)*180/(null)
  276. 3075 DX=69.055*T:DX=INT(DX)
  277. 3080 RETURN
  278.