10 REM MOON TRACKING PROGRAM 20 REM PROGRAM ORIGINATED BY WB7CCI. THIS VERSION CONVERTED TO DISC BASIC BY 30 REM G3RWL. WORKS OK WITH GWBASIC. 40 REM 50 REM THIS PROGRAM PRINTS AZ/EL FIGURES AT SET INTERVALS. SAMPLE RUN FOR 31ST 60 REM DECEMBER 1983 COMMENCING 0100 UTC AND 30 MINUTE INTERVALS GAVE AOS AT 70 REM 0500 AZ=118.6 EL=-2.6 THRU MAXIMUM EL AT 0930 AZ=176.9 EL=18.2 TO LOS 80 REM AT 1430 AZ=241.3 EL=-4.2. USE THIS AS WORKED EXAMPLE WITH LAT/LONG GIVEN 85 REM BEFORE CHANGING TO *YOUR* QTH. 90 P1=3.14159:PC=P1/180:PD=2*P1 100 DEF FNC(Z)=ATN(Z/SQR(-Z*Z+1)):REM ARCSIN 110 L5=51.65*PC:L6=.1*PC:REM STATION LAT/LONG L5/L6 120 CLS:PRINT TAB(25)"MoonTrack":PRINT TAB(25)"=========":PRINT 130 INPUT "Year number in full ",Y 140 IF Y<1980 OR Y>1999 OR Y<>INT(Y) THEN 130 150 INPUT " Month number ",M 160 IF M<1 OR M>12 OR M<>INT(M) THEN 150 170 INPUT " Day number ",D 180 IF D<1 OR D>31 OR D<>INT(D) THEN 170 190 M1=M+12:YA=Y-1:IF M>2 THEN M1=M:YA=Y 200 A=INT(Y/100):BZ=2-A+INT(A/4):J=INT(365.25*YA)+INT(30.6001*(M1+1))+D+BZ 210 INPUT "Start time UTC HHMM ",B 220 IF B<0 OR B>2400 OR B<>INT(B) THEN 210 230 PRINT:PRINT "Time step usually 15 minutes, "; 240 INPUT "enter new value if required or press return ",ST 250 IF ST=0 THEN ST=15:PRINT ELSE PRINT 260 INPUT "Type P for printer, V for vdu or B for both ",P$ 270 IF P$="b"THEN P$="B" ELSE IF P$="p"THEN P$="P" ELSE IF P$="v" THEN P$="V" 280 IF P$="B" OR P$="P" OR P$="V" THEN 290 ELSE 260 290 T1=J-17472.5-676553!:IF P$<>"P" THEN CLS 300 IF P$="V" OR P$="B" THEN PRINT TAB(21)"Moontrack by WB7CCI" 310 IF P$="P" OR P$="B" THEN LPRINT TAB(21)"Moontrack by WB7CCI" 320 IF P$="V" OR P$="B" THEN PRINT TAB(21)"===================":PRINT 330 IF P$="P" OR P$="B" THEN LPRINT TAB(21)"===================":LPRINT 340 IF P$="V" OR P$="B" THEN PRINT:PRINT TAB(20)"Date ";D;"/";M;"/";Y 350 IF P$="P" OR P$="B" THEN LPRINT:LPRINT TAB(20)"Date ";D;"/";M;"/";Y 360 IF P$="P" THEN PRINT:PRINT "Printout being produced":PRINT 370 GOSUB 930 380 D9=(B-((INT(B/100))*100))+INT(B/100)*60 390 T=D9/1440:T2=T1+T:X1=.751213+.0366011*T2 400 K1=(X1-INT(X1))*PD:X2=.822513+.0362917*T2 410 K2=(X2-INT(X2))*PD:X4=.974271+.0338632*T2 420 K4=(X4-INT(X4))*PD:X3=.995766+2.73779E-03*T2 430 K3=(X3-INT(X3))*PD:X5=.0312525+.0367482*T2 440 K5=(X5-INT(X5))*PD 450 L8=K1+(.658*SIN(2*K4)+6.289*SIN(K2))*PC 460 L8=L8-(1.274*SIN(K2-2*K4)+.186*SIN(K3))*PC 470 L8=L8+(.214*SIN(2*K2)-.114*SIN(2*K5))*PC 480 L8=L8-(.059*SIN(2*K2-2*K4)+.057*SIN(K2+K3-2*K4))*PC 490 K6=K5+(.6593*SIN(2*K4)+6.2303*SIN(K2-1.272)*SIN(K2-2*K4))*PC 500 L7=(5.144*SIN(K6)-.146*SIN(K5-2*K4))*PC 510 D1=COS(L7)*SIN(L8)*.397821+SIN(L7)*.917463:D1=FNC(D1) 520 A2=COS(L7)*COS(L8)/COS(D1) 530 A1=(COS(L7)*SIN(L8)*.917463-SIN(L7)*.397821)/COS(D1) 540 A=ATN(A1/A2):GOSUB 830:R1=A:L1=.0657098*T1 550 L=T*24*1.00274+6.64606+(L1-INT(L1/24)*24) 560 L=L-INT(L/24)*24:G=(L/24)*PD-R1:IF G59 THEN B=B+40 720 IF B<2400 THEN 380 730 IF P$="V" OR P$="B" THEN PRINT 740 IF P$="P" OR P$="B" THEN LPRINT 750 INPUT "Next Day ? (Y/N) ",N$ 760 IF LEFT$(N$,1)="Y" OR LEFT$(N$,1)="y" THEN 770 ELSE END 770 T1=T1+1:D=D+1:IF P$="V" OR P$="B" THEN PRINT:PRINT TAB(20)"Date: "; 780 IF P$="P" OR P$="B" THEN LPRINT:LPRINT TAB(20)"Date: "; 790 IF P$="V" OR P$="B" THEN PRINT D;"/";M;"/";Y 800 IF P$="P" OR P$="B" THEN LPRINT D;"/";M;"/";Y 810 IF P$="P" THEN PRINT:PRINT "Printout being produced":PRINT 820 GOSUB 930:B=B-2400:GOTO 380 830 IF A=0 THEN 840 ELSE 860 840 IF A2<0 THEN 850 ELSE RETURN 850 A=P1:RETURN 860 IF A>0 THEN 900 870 IF A2<0 THEN 890 880 A=A+PD:RETURN 890 A=A+P1:RETURN 900 IF A2>=0 THEN RETURN ELSE A=A+P1:RETURN 910 T$=STR$(B):T$=RIGHT$(T$,(LEN(T$)-1)) 920 T$=RIGHT$(("0000"+T$),4):RETURN 930 IF P$="V" OR P$="B" THEN PRINT TAB(12)"UTC";TAB(26)"Azimuth";TAB(42)"Elev" 940 IF P$="P" OR P$="B" THEN LPRINT TAB(12)"UTC";TAB(26)"Azimuth";TAB(42)"Elev" 950 RETURN