home *** CD-ROM | disk | FTP | other *** search
GW-BASIC | 1990-02-27 | 6.9 KB | 290 lines |
- 20 CLS
- 40 PI=3.14159:DEF FNA(X)=-ATN(X/SQR(-X*X+1))+(PI/2)
- 50 DIM M$(37),A$(4),M(12):FOR T=1 TO 12:READ M(T):NEXT T
- 60 DATA 31,28,31,30,31,30,31,31,30,31,30,31
- 70 'READ M
- 80 M$="JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC"
- 90 PRINT "ENTER:":PRINT" 1-5 VAL SM":PRINT" 2-9 VAL SM":PRINT" 3-ARBITRARY SM":PRINT" 4-3 VAL MUF"
- 100 INPUT Q
- 110 ZY$=RIGHT$(STR$(Q),1)
- 120 ON Q GOTO 250,200,130,1270
- 130 CLS
- 140 PRINT"ENTER NO. OF FREQS"
- 150 INPUT NF
- 160 DIM F0(NF),TA(NF),SM(NF)
- 170 PRINT"ENTER FREQS, HIT ENTER AFTER EACH"
- 180 FOR YY=1 TO NF:INPUT F0(YY):NEXT YY
- 190 GOTO 290
- 200 DIM F0(9),TA(9),SM(9)
- 210 FOR X=1 TO 9:READ F0(X):NEXT X
- 220 DATA 1.9,3.8,7.2,10.1,14.2,18.1,21.3,24.9,28.5
- 230 NF=9
- 240 GOTO 290
- 250 DIM F0(5),TA(5),SM(5)
- 260 FOR X=1 TO 9:READ OP:NEXT X:FOR X=1 TO 5:READ F0(X):NEXT X
- 270 DATA 3.8,7.2,14.2,21.3,28.5
- 280 NF=5
- 290 R0=PI/180
- 300 P1=2*PI
- 310 R1=180/PI
- 320 P0=PI/2
- 330 CLS
- 340 PRINT"ENTER NUM OF SF PTS,INCREMENT"
- 350 INPUT NS,SI
- 360 PRINT"NUMBER OF RUNS"
- 370 INPUT NR
- 380 DIM W6(NR),L6(NR),W7(NR),L7(NR),DA(NR),MM(NR),SS(NR),AN$(NR)
- 390 PRINT"STR FORMAT LAT,LON,LAT,LON,DAY,MO,SF START,ALPHA TITLE"
- 400 FOR ND=1 TO NR
- 410 PRINT"ENTER STRING NO.";ND
- 420 INPUT L6(ND),W6(ND),L7(ND),W7(ND),DA(ND),MM(ND),SS(ND),AN$(ND)
- 430 NEXT ND
- 440 PRINT "*"
- 450 FOR ZZ=1 TO 3:PRINT :NEXT
- 460 PRINT "FLUX PTS,INCR";NS;SI
- 470 PRINT "INPUT DATA STRINGS"
- 480 FOR NT=1 TO NR
- 490 PRINT L6(NT);W6(NT);L7(NT);W7(NT);DA(NT);MM(NT);SS(NT);AN$(NT)
- 500 NEXT NT
- 510 FOR ZZ=1 TO 3:PRINT :NEXT
- 520 INPUT"PRESS ENTER TO CONTINUE";PK$
- 530 FOR YY=1 TO(56-NR)
- 540 PRINT
- 550 NEXT YY
- 560 PRINT "*"
- 570 FOR NM=1 TO NR
- 580 L1=L6(NM)*R0
- 590 W1=W6(NM)*R0
- 600 L2=L7(NM)*R0
- 610 W2=W7(NM)*R0
- 620 D6=DA(NM)
- 630 M0=MM(NM)
- 640 SF=SS(NM)
- 650 FOR SV=1 TO NS
- 660 SU=SF+((SV-1)*SI)
- 670 S9=FIX((SU-60)/0.9)
- 680 CLS
- 690 A$=MID$(M$,(M0-1)*3+1,3)
- 700 PRINT "*"
- 710 FOR SS=1 TO 3:PRINT :NEXT SS
- 720 PRINT CHR$(31);"HFMAGIC 1.0";ZY$;" FOR ";AN$(NM);" BY W2KK.";CHR$(30)
- 730 PRINT
- 740 CLS:PRINT "DATE:";D6;A$
- 750 PRINT "TRANSMITTER LOCATION":PRINT " LATITUDE";L1/R0;" LONGITUDE";W1/R0
- 760 PRINT "RECEIVER LOCATION":PRINT " LATITUDE";L2/R0;" LONGITUDE";W2/R0
- 770 PRINT " SUNSPOT NUMBER= ";S9;" SOLAR FLUX= ";SU;" (WWV AT HR+18 MIN)"
- 780 PRINT
- 790 PRINT
- 800 PRINT " RECEIVED SIGNAL FOR 100W TRANSMITTED. PERFECT"
- 810 PRINT " NON DIRECTIVE ANTENNAS. DB OVER/UNDER S9"
- 820 PRINT
- 830 PRINT "UT FREQUENCY"
- 840 PRINT "HR MUF ";
- 850 FOR XX=1 TO NF:PRINT USING" ##.#";F0(XX);:NEXT XX
- 860 PRINT
- 870 PRINT "-- --- ";
- 880 FOR XX=1 TO NF:PRINT " ----";:NEXT XX
- 890 PRINT
- 900 FOR T5=0 TO 23
- 910 GOSUB 2060
- 920 HF=200
- 930 FOR X=1 TO NF
- 940 PC=ATN((SQR(HF*HF+2*HF*4000)/4000))
- 950 IF PC>(G1/2) THEN 980
- 960 SM(X)=-97
- 970 GOTO 1120
- 980 IF F0(X)<J9 GOTO 1010
- 990 SM(X)=-98
- 1000 GOTO 1120
- 1010 SL=SQR(2*4000*4000+HF*HF+2*4000*HF-(2*4000*(4000+HF)*COS(G1/2)))
- 1020 DA=((HF+4000)/SL)*SIN(G1/2)
- 1030 DL=FNA(DA)
- 1040 CF=COS(0.881*XI)
- 1050 IF CF<0 THEN CF=0
- 1060 II=(1+0.0037*S9)*(CF^1.3)
- 1070 LD=(658*II)/(F0(X)*F0(X)*(SIN(DL)^0.75))
- 1080 LF=0.434294
- 1090 TA(X)=LD+36.6+(20*LF*LOG(2*SL*F0(X)))
- 1100 SM(X)=123-TA(X)
- 1110 IF SM(X)<-99 THEN SM(X)=-99
- 1120 NEXT X
- 1130 PRINT USING"## ##.# ";T5;J9;
- 1140 FOR XX=1 TO NF:PRINT USING" ###";SM(XX);:NEXT XX
- 1150 PRINT
- 1160 NEXT T5
- 1170 PRINT
- 1180 PRINT "GRT CIR DIST= ";FIX(G1*20000/PI);"KM ";FIX(G1*12500/PI);"STAT MILES ";FIX(G1*12500/(1.15*PI));"NAUT MILES."
- 1190 PRINT "PATH MIDPOINT= ";FIX(W0*1800/PI)/10;" LON ";FIX(L0*1800/PI)/10;" LAT"
- 1200 PRINT
- 1210 PRINT "HFMAGIC 1.0 COPYRIGHT W2KK 2201 DUVALL RD. WOODBINE, MD 21797"
- 1220 FOR SS=1 TO 16:PRINT :NEXT SS
- 1230 PRINT "#"
- 1240 NEXT SV
- 1250 NEXT NM
- 1260 END
- 1270 REM
- 1280 R0=PI/180
- 1290 P1=2*PI
- 1300 R1=180/PI
- 1310 P0=PI/2
- 1320 CLS
- 1330 PRINT"NUMBER OF RUNS"
- 1340 INPUT NR
- 1350 DIM L6(NR),W6(NR),L7(NR),W7(NR),DA(NR),MM(NR),SU(NR),AN$(NR)
- 1360 PRINT "ENTER DATA STRINGS AS LAT,LON,LAT,LON,DAY MO,SFSTART,ALPHA STRING"
- 1370 FOR XX=1 TO NR
- 1380 PRINT"STRING";XX
- 1390 INPUT L6(XX),W6(XX),L7(XX),W7(XX),DA(XX),MM(XX),SU(XX),AN$(XX)
- 1400 NEXT XX
- 1410 PRINT "*"
- 1420 FOR ZZ=1 TO 3:PRINT :NEXT ZZ
- 1430 PRINT "DATA STRINGS FOR ";NR;" RUNS"
- 1440 FOR NT=1 TO NR
- 1450 PRINT L6(NT);W6(NT);L7(NT);W7(NT);DA(NT);MM(NT);SU(NT);AN$(NT)
- 1460 NEXT NT
- 1470 FOR ZZ=1 TO 3:PRINT :NEXT ZZ
- 1480 INPUT"IF DATA CORRECT,PRESS ENTER TO CONTINUE";PK$
- 1490 FOR XX=1 TO (57-NR):PRINT :NEXT XX
- 1500 PRINT "*"
- 1510 FOR NC=1 TO NR
- 1520 L1=L6(NC)
- 1530 W1=W6(NC)
- 1540 L2=L7(NC)
- 1550 W2=W7(NC)
- 1560 D6=DA(NC)
- 1570 M0=MM(NC)
- 1580 SO=SU(NC)
- 1590 FOR SI=1 TO 3
- 1600 SF(SI)=SO+30*(SI-1)
- 1610 SS(SI)=FIX((SF(SI)-60)/0.9)
- 1620 NEXT SI
- 1630 CLS
- 1640 A$=MID$(M$,(M0-1)*3+1,3)
- 1650 PRINT "*"
- 1660 FOR SS=1 TO 3:PRINT :NEXT SS
- 1670 PRINT CHR$(31);"MAGIC 9.";ZY$;" FOR ";AN$(NC);" BY W2KK.";CHR$(30)
- 1680 PRINT
- 1690 CLS:PRINT "DATE:";D6;A$
- 1700 PRINT "TRANSMITTER LOCATION":PRINT " LATITUDE";L1;" LONGITUDE";W1
- 1710 PRINT "RECEIVER LOCATION":PRINT " LATITUDE";L2;" LONGITUDE";W2
- 1720 PRINT
- 1730 PRINT " MAX. USABLE FREQUENCY AS A FUNCTION OF TIME"
- 1740 PRINT
- 1750 PRINT "UT (OBTAIN SOLAR FLUX FROM WWV AT HR+18 MIN)"
- 1760 PRINT "HR"
- 1770 PRINT "I"
- 1780 PRINT "I"
- 1790 PRINT "I"
- 1800 PRINT "I"
- 1810 PRINT "V"
- 1820 PRINT USING" ### ### ###";SF(1);SF(2);SF(3);:PRINT " <------ SOLAR FLUX"
- 1830 PRINT USING" ### ### ###";SS(1);SS(2);SS(3);:PRINT " <------ SUNSPOT NUMBER"
- 1840 PRINT "-- ---- ---- ----"
- 1850 L1=L1*R0
- 1860 W1=W1*R0
- 1870 L2=L2*R0
- 1880 W2=W2*R0
- 1890 FOR T5=0 TO 23
- 1900 FOR SI=1 TO 3
- 1910 S9=SS(SI)
- 1920 GOSUB 2060
- 1930 JJ(SI)=J9
- 1940 NEXT SI
- 1950 PRINT USING"## ##.# ##.# ##.#";T5,JJ(1),JJ(2),JJ(3)
- 1960 NEXT T5
- 1970 PRINT
- 1980 PRINT "GRT CIR DIST= ";FIX(G1*20000/PI);"KM ";FIX(G1*12500/PI);"STAT MILES ";FIX(G1*12500/(1.15*PI));"NAUT MILES."
- 1990 PRINT
- 2000 PRINT "COPYRIGHT W2KK"
- 2010 FOR SS=1 TO 13:PRINT :NEXT SS
- 2020 PRINT "*"
- 2030 NEXT NC
- 2040 END
- 2060 K7=SIN(L1)*SIN(L2)+COS(L1)*COS(L2)*COS(W2-W1)
- 2070 IF K7<=-1 THEN K7=-1
- 2080 IF K7>=1 THEN K7=1
- 2090 G1=FNA(K7)
- 2100 K6=1.59*G1
- 2110 IF K6<1 THEN K6=1
- 2120 K5=1/K6
- 2130 J9=100
- 2140 FOR K1=1/(2*K6) TO 1-1/(2*K6) STEP 0.9999-1/K6
- 2150 IF K5=1 THEN GOTO 2170
- 2160 K5=0.5
- 2170 P=SIN(L2)
- 2180 Q=COS(L2)
- 2190 A=(SIN(L1)-P*COS(G1))/(Q*SIN(G1))
- 2200 B=G1*K1
- 2210 C=P*COS(B)+Q*SIN(B)*A
- 2220 D=(COS(B)-C*P)/(Q*SQR(1-C*C))
- 2230 IF D<=-1 THEN D=-1
- 2240 IF D>=1 THEN D=1
- 2250 D=FNA(D)
- 2260 W0=W2+SGN(SIN(W1-W2))*D
- 2270 IF W0>=0 THEN 2290
- 2280 W0=W0+P1
- 2290 IF W0<P1 THEN 2310
- 2300 W0=W0-P1
- 2310 IF C<=-1 THEN C=-1
- 2320 IF C>=1 THEN C=1
- 2330 L0=P0-FNA(C)
- 2340 Y1=0.0172*(10+(M0-1)*30.4+D6)
- 2350 Y2=0.409*COS(Y1)
- 2360 LS=-Y2
- 2370 WS=PI*(T5/12-1)
- 2380 XF=SIN(L0)*SIN(LS)+COS(L0)*COS(LS)*COS(WS-W0)
- 2390 IF XF<=-1 THEN XF=-1
- 2400 IF XF>=1 THEN XF=1
- 2410 XI=FNA(XF)
- 2420 K8=3.82*W0+12+0.13*(SIN(Y1)+1.2*SIN(2*Y1))
- 2430 K8=K8-12*(1+SGN(K8-24))*SGN(ABS(K8-24))
- 2440 IF COS(L0+Y2)>-0.26 THEN 2520
- 2450 K9=0
- 2460 G0=0
- 2470 M9=2.5*G1*K5
- 2480 IF M9>P0 THEN M9=P0
- 2490 M9=SIN(M9)
- 2500 M9=1+2.5*M9*SQR(M9)
- 2510 GOTO 2760
- 2520 K9=(-0.26+SIN(Y2)*SIN(L0))/(COS(Y2)*COS(L0)+0.000999999)
- 2530 K9=12-ATN(K9/SQR(ABS(1-K9*K9)))*7.63944
- 2540 T=K8-K9/2+12*(1-SGN(K8-K9/2))*SGN(ABS(K8-K9/2))
- 2550 T4=K8+K9/2-12*(1+SGN(K8+K9/2-24))*SGN(ABS(K8+K9/2-24))
- 2560 C0=ABS(COS(L0+Y2))
- 2570 T9=9.7*C0^9.6
- 2580 IF T9>0.1 THEN 2600
- 2590 T9=0.1
- 2600 M9=2.5*G1*K5
- 2610 IF M9>P0 THEN M9=P0
- 2620 M9=SIN(M9)
- 2630 M9=1+2.5*M9*SQR(M9)
- 2640 IF T4<T THEN 2670
- 2650 IF (T5-T)*(T4-T5)>0 THEN 2680
- 2660 GOTO 2810
- 2670 IF (T5-T4)*(T-T5)>0 THEN 2810
- 2680 T6=T5+12*(1+SGN(T-T5))*SGN(ABS(T-T5))
- 2690 G9=PI*(T6-T)/K9
- 2700 G8=PI*T9/K9
- 2710 U=(T-T6)/T9
- 2720 G0=C0*(SIN(G9)+G8*(EXP(U)-COS(G9)))/(1+G8*G8)
- 2730 G7=C0*(G8*(EXP(-K9/T9)+1))*EXP((K9-24)/2)/(1+G8*G8)
- 2740 IF G0>=G7<UNK! {0009}>THEN 2760
- 2750 G0=G7
- 2760 G2=(1+S9/250)*M9*SQR(6+58*SQR(G0))
- 2770 G2=G2*(1-0.1*EXP((K9-24)/3))
- 2780 G2=G2*(1+(1-SGN(L1)*SGN(L2))*0.1)
- 2790 G2=G2*(1-0.1*(1+SGN(ABS(SIN(L0))-COS(L0))))
- 2800 GOTO 2870
- 2810 T6=T5+12*(1+SGN(T4-T5))*SGN(ABS(T4-T5))
- 2820 G8=PI*T9/K9
- 2830 U=(T4-T6)/2
- 2840 U1=-K9/T9
- 2850 G0=C0*(G8*(EXP(U1)+1))*EXP(U)/(1+G8*G8)
- 2860 GOTO 2760
- 2870 IF G2>J9 THEN 2890
- 2880 J9=G2
- 2890 NEXT K1
- 2900 IF J9<2 THEN J9=2
- 2920 RETURN
- 5000 FOR X=1 TO 66:PRINT :NEXT X
-