1 MODE6 2 3 *FX11,0 4 REM Auto-repeat off 5 DIMCON$(9) 6 DIMDMY%(3),P(7,30),S(16),M(21),PL(7),P$(7) 7 DATA MERCURY,241,VENUS,242,MARS,244,JUPITER,245,SATURN,246,URANUS,247,NEPTUNE,248,PLUTO,249 8 RESTORE7:FORH=0TO7:READP$(H):READPL(H):NEXT 9 KK=0 10 SET=0 11 Y$="" 12 PROCMAINPROG 13 KK=0 14 PROCLOCALCRD 15 DATA 2445560.5 16 DATA.00434,174.4,102.2648,.9999905,.9856232,.0167437,321.38720,0,0,1.00004 17 DATA7.00181,47.6964,76.7307,.3870985,4.092341,.2056374,240.94954,6.74,1.918E-6,.24085 18 DATA3.3938,76.1382,130.729,.7233394,1.602107,.0067782,313.33155,16.92,1.721E-5,.61521 19 DATA1.84726,49.0766,335.3363,1.5236736,.5240422,.0933607,98.67011,9.36,4.539E-6,1.88089 20 DATA1.30659,100.0409,14.7956,5.203215,.08308138,.0480099,256.43502,196.74,1.994E-4,11.86224 21 DATA2.48793,113.1366,94.2774,9.57322,.03327967,.0510509,209.12289,165.6,1.74E-4,29.45771 22 DATA.77276,73.8393,176.9431,19.31568,.01161043,.0490657,242.33216,65.8,7.768E-5,84.01247 23 DATA1.77501,131.2142,353.752,30.27707,.005916224,.0050252,268.28073,62.2,7.597E-5,164.79558 24 DATA17.13506,109.7165,223.4787,39.84063,.003919363,.2557689,214.63826,8.2,4.073E-6,246.378 25 DEF PROCHEADING 26 CLS 27 PRINT'DATE$" Jul.date ";JD 28 PRINT'"Latitude ";FNDEGDMSP(LAT,3)'"Longitude ";FNDEGDMSP(LON,3) 29 PRINT"........................................" 30 ENDPROC 31 32 DEF PROCSUNMOON 33 PROCHEADING 34 PRINT"THE SUN ";CHR$239;" "CON$(8) 35 IFS(7)=-1000THENPRINT"is above the horizon all night." 36 IFS(7)=1000THENPRINT"is below the horizon all day." 37 IF ABS(S(7))<>1000THENPRINT"sets at ";FNDEGHMSP(15*S(7),2);" this evening, and"'"rises at ";FNDEGHMSP(15*S(11),2);" tomorrow." 38 PRINT'"THE MOON ";CHR$240;" "CON$(9) 39 IF M(13)=0 THEN PRINT"sets at ";FNDEGHMSP(15*M(14),2);" on bearing ";FNCOM(AZS(4))'"and rises at ";FNDEGHMSP(15*M(15),2);" on bearing ";FNCOM(AZR(4)) 40 IFM(13)=1 THEN PRINT"rises at ";FNDEGHMSP(15*M(12),2);" on bearing "FNCOM(AZR(4))'"and sets at ";FNDEGHMSP(15*M(17),2);" on bearing ";FNCOM(AZS(4)) 41 IFM(13)=1000 AND LAT>=0 THEN PRINT"is above the horizon"'"all night." 42 IFM(13)=-1000 AND LAT>=0 THEN PRINT"is below the horizon"'"all night.":ELSE IF ABS(M(13))=1000 AND LAT<0 THEN PRINT"does not rise or set tonight." 43 PRINT'"The phase of the moon is ";(INT(M(9)*100));"%" 44 PRINT"........................................" 45 PRINT"Midnight Co-ordinates" 46 VDU240,224,32:PRINTFNDEGHMSP(M(4),2);TAB(15);:VDU239,224,32:PRINTFNDEGHMSP(S(3),2) 47 VDU240,225,32:PRINTFNDEGDMSP(M(5),2);TAB(15);:VDU239,225,32:PRINTFNDEGDMSP(S(4),2) 48 VDU240,229,32:PRINTFNDEGDMSP(M(11),3) 49 VDU240,228,32:PRINTFNDEGDMSP(M(10),3) 50 PRINT'"(Press ""M"" to return to menu)" 51 ENDPROC 52 DEFPROCCHARS:ENDPROC 53 54 DEF PROCPLANETS(X$):X=VAL(X$):PROCHEADING:PRINTP$(X);" ";CHR$(PL(X));" ";CON$(X)' 55 IF P(X,16)=0 THEN PRINT"sets at ";FNDEGHMSP(15*P(X,17),2);" on bearing ";INT(P(X,24));CHR$230'"("FNCOM(P(X,24));") and rises at ";FNDEGHMSP(15*P(X,18),2);" on"'"bearing ";INT(P(X,23));CHR$230;"(";FNCOM(P(X,23));")" 56 IF P(X,16)=1THEN PRINT"rises at ";FNDEGHMSP(15*P(X,15),2);" on bearing ";INT(P(X,23));CHR$230'"("FNCOM(P(X,23));") and sets at ";FNDEGHMSP(15*P(X,20),2);" on"'"bearing ";INT(P(X,24));CHR$230;"(";FNCOM(P(X,24));")" 57 IF P(X,16)=1000 AND LAT>=0 THEN PRINT"is above the horizon"'"all night." 58 IF P(X,16)=-1000 AND LAT>=0THEN PRINT"is below the horizon"'"all night.":ELSE IF ABS(P(X,16))=1000 AND LAT<0 THEN PRINT"does not rise or set tonight." 59 IF ABS(P(X,16))<>1000 THEN PRINT"It transits at ";FNDEGHMSP((15*P(X,15)+15*P(X,20))/2-180*(P(X,16)=1),2) 60 PRINT"........................................" 61 Q$=CHR$(PL(X)) 62 VDU224,236,32:PRINTFNDEGHMSP(P(X,7),2);TAB(15);:VDU224,237,32:PRINTFNDEGHMSP(P(X,10),2):VDU225,236,32:PRINTFNDEGDMSP(P(X,8),2);TAB(15);:VDU225,237,32:PRINTFNDEGDMSP(P(X,11),2) 63 PRINT"Distance ";(INT(P(X,6)*1000)/1000);" AU"'"Ang.Diam. ";FNDEGDMSP(P(X,12),4)'"Phase ";INT(P(X,13)*100+.5);"%"'"Magnitude ";INT(P(X,14)+.5)'"Elong'n ";FNDEGDMSP(P(X,29),2)''"(Press ""M"" to return to menu)" 64 ENDPROC 65 66 REM MOON 67 DEF PROCMOON(X$) 68 DATA 2442412.5,124.8756,145.9601,248.6441,0,5.1453964,.0549005,.5181 69 RESTORE68 70 READ EPDT,LO,PO,NO,ELON,INC,ECC,THM 71 DG=JD-EPDT:MSUN=FNR360(356.45502+.98560026*(JD-2445334.5)):LM=FNR360(13.17624801*DG+LO):MM=LM-.1113702015*DG-PO:NM=NO-.052962186*DG:EV=1.274*SIN(RAD(2*(LM-S(3))-MM)):AE=.186*SIN(RAD(MSUN)) 72 A3=.37*SIN(RAD(MSUN)):MBM=MM+EV-AE-A3:EK=6.289*SIN(RAD(MBM)):LB=LM+EV-AE+EK:VV=.658*SIN(RAD(2*(LB-S(3)))):LBB=FNR360(LB+VV):NB=NM-.16*SIN(RAD(MSUN)):LAM=FNR360(DEG(ATN(TAN(RAD(LBB-NB))*COS(RAD(INC))))+NB) 73 IFABS(LBB-LAM)>25 AND ABS(LBB-LAM)<335 THEN LAM=FNR360(LAM+180) 74 BETA=DEG(ASN(SIN(RAD(LBB-NB))*SIN(RAD(INC)))):PM=(1-ECC^2)/(1+ECC*COS(RAD(MBM+ECC))):TH=THM/PM:PA=3422.451/3600/PM:F=.5*(1+COS(RAD(180-S(3)+LBB))):PROCEQEC(LAM,BETA,1):RA=C1:DEC=C2:IFX$="RISE"THEN ENDPROC 75 M(1)=LAM:M(2)=BETA:M(3)=PM:M(4)=RA:M(5)=DEC:M(9)=F:M(10)=TH:M(11)=PA:ENDPROC 76 DEF PROCMOONRISE 77 DIMR(4),D(4),GR(4),GS(4),AZR(4),AZS(4):JDO=JD:FORY=1TO4:JD=JDO-1.5+Y/2:PROCMOON("RISE"):R(Y)=RA:D(Y)=DEC:CS=SIN(RAD(D(Y)))/COS(RAD(LAT)):IFCS>=1 OR CS<=-1THENFORG=12TO21:M(G)=1000*SGNCS:NEXT:Y=5:NEXT:GOTO92 78 AZR(Y)=DEG(ACS(CS)) 79 AZS(Y)=360-DEG(ACS(CS)) 80 TT=DEG(ACS(-TAN(RAD(LAT))*TAN(RAD(D(Y)))))/15 81 GSTR=FNR24(RA/15-TT) 82 GSTS=FNR24(RA/15+TT) 83 GR(Y)=FNR24(FNGSGM(GSTR,JDO-(1*(JDB THEN =1 ELSE=0 96 DEF PROCSUN 97 S(5)=FNR360(E3+180):REM LAM 98 OB=23.4458 99 PROCEQEC(S(5),0,1) 100 S(1)=C1:REM RA 101 S(2)=C2:REM DEC 102 RA=C1:DEC=C2 103 PROCPREC(1950,DMY%(2)+DMY%(1)/12) 104 S(3)=RA1 105 S(4)=DEC1 106 REM RISE/SET 107 TT=(-TAN(RAD(LAT))*TAN(RAD(DEC1))) 108 IFABS(TT)>1THEN S(7)=1000*SGN(TT):GOTO115 109 GSTR=FNR24(RA1/15-DEG(ACS(TT))/15) 110 GMTR=FNGSGM(GSTR,JD)+LON/15 111 GSTS=FNR24(RA1/15+DEG(ACS(TT))/15) 112 GMTS=FNGSGM(GSTS,JD-1)+LON/15 113 S(7)=GMTS 114 S(11)=GMTR 115 REM 116 PROCELONG 117 ENDPROC 118 119 DEF PROCELONG 120 FORC=0TO7 121 P(C,29)=DEG(ACS(SIN(RAD(P(C,11)))*SIN(RAD(S(4)))+COS(RAD(P(C,10)-S(3)))*COS(RAD(P(C,11)))*COS(RAD(S(4))))) 122 NEXT 123 ENDPROC 124 125 DEF PROCPLANCOORD 126 RESTORE 15 127 READ ED 128 DG=JD-ED 129 OB=23.4458 130 FOR PLANET=1 TO 9 131 READ INC,OHM,W,SMA,N,ECC,ML,TH,A,TP 132 MA=.98562628336/TP*DG+ML-W 133 MA=FNR360(MA) 134 EA=MA 135 DX=RAD(EA)-ECC*SIN(RAD(EA))-RAD(MA) 136 IFDX>-1E-6 AND DX<1E-6 THEN GOTO140 137 DY=DX/(1-ECC*COS(RAD(EA))) 138 EA=DEG(RAD(EA)-DY) 139 GOTO135 140 REM EA NOW KNOWN 141 TV2=SQR((1+ECC)/(1-ECC))*TAN(RAD(EA/2)) 142 TA=DEG(2*ATN(TV2)) 143 L=TA+W 144 L=FNR360(L) 145 RV=SMA*(1-ECC^2)/(1+ECC*COS(RAD(TA))) 146 IFPLANET=1THEN E3=L:E1=RV:NEXT PLANET 147 B=DEG(ASN(SIN(RAD(L-OHM))*SIN(RAD(INC)))) 148 LB=FNR360(DEG(ATN(TAN(RAD(L-OHM))*COS(RAD(INC))))+OHM) 149 IF ABS(LB-L)>1THEN REPEAT:LB=LB-180*SGN(LB-L):UNTILABS(LB-L)<90 150 LB=FNR360(LB) 151 RVB=RV*COS(RAD(B)) 152 IF PLANET>3THEN LAM=DEG(ATN(E1*SIN(RAD(LB-E3))/(RVB-E1*COS(RAD(E3-LB)))))+LB:ELSE LAM =180+E3+DEG(ATN(RVB*SIN(RAD(E3-LB))/(E1-RVB*COS(RAD(E3-LB))))) 153 LAM=FNR360(LAM) 154 BETA=DEG(ATN(RVB*TAN(RAD(B))*SIN(RAD(LAM-LB))/(E1*SIN(RAD(LB-E3))))) 155 PP=SQR(E1^2+RVB^2-2*E1*RVB*COS(RAD(L-E3))) 156 THP=TH/PP/3600 157 PHASE=.5*(1+COS(RAD(LAM-L))) 158 Z=PLANET-2:P(Z,1)=L:P(Z,2)=B:P(Z,3)=RV:P(Z,4)=LAM:P(Z,5)=BETA:P(Z,6)=PP:PROCEQEC(LAM,BETA,1):P(Z,7)=C1:P(Z,8)=C2:RA=C1:DEC=C2:PROCPREC(1950,DMY%(2)+DMY%(1)/12):P(Z,10)=RA1:P(Z,11)=DEC1:P(Z,12)=THP:P(Z,13)=PHASE 159 REM PLANET RISE+SET 160 CS=SIN(RAD(DEC1))/COS(RAD(LAT)) 161 IFCS>=1 OR CS<=-1THENFORG=15TO24:P(Z,G)=1000*SGNCS:NEXT:GOTO176 162 P(Z,23)=DEG(ACS(CS)) 163 P(Z,24)=360-DEG(ACS(CS)) 164 TT=DEG(ACS(-TAN(RAD(LAT))*TAN(RAD(DEC1))))/15 165 GSTR=FNR24(RA1/15-TT) 166 P(Z,15)=FNGSGM(GSTR,JD-1)+LON/15 167 P(Z,18)=FNGSGM(GSTR,JD)+LON/15 168 GSTS=FNR24(RA1/15+TT) 169 P(Z,17)=FNGSGM(GSTS,JD-1)+LON/15 170 P(Z,20)=FNGSGM(GSTS,JD)+LON/15 171 P(Z,16)=FNSORT(P(Z,15),P(Z,17),P(Z,18),P(Z,20)) 172 REM MAGNITUDE 173 MAG=5*LOG(P(Z,3)*P(Z,6)/(A*SQR(P(Z,13))))-27.5 174 P(Z,14)=MAG 175 176 REM dont remove 177 NEXT PLANET 178 ENDPROC 179 DEF FNJD(x$) 180 LOCAL K,D,M,Y 181 DMY%(0)=INT(VAL(x$)):DMY%(1)=VAL(MID$(x$,3-(DMY%(0)>9),2)):K=VAL(RIGHT$(x$,4)):IFK<>INT(K)THENK=(K-INT(K))*100+1900 182 DMY%(2)=K:D=DMY%(0):M=DMY%(1):Y=DMY%(2):=367*Y-INT(7*(Y+INT((M+9)/12))/4)+INT(275*M/9)+D+1721013.5 183 184 185 DEF PROCEQEC(a,b,c) 186 C1=DEG(ATN(TAN(RAD(a))*COS(RAD(OB))-c*TAN(RAD(b))*SIN(RAD(OB))/COS(RAD(a)))) 187 IF ABS(C1-a)>90THENC1=C1+180*SGN(a-C1):GOTO187 188 C1=FNR360(C1):C2=DEG(ASN(SIN(RAD(b))*COS(RAD(OB))+c*COS(RAD(b))*SIN(RAD(OB))*SIN(RAD(a)))):ENDPROC 189 190 191 192 DEF FNDMSDEG(d,m,s):=(ABS(d)+m/60+s/3600)*SGN(d) 193 194 DEF FNHMSDEG(h,m,s):=15*(ABS(h)+m/60+s/3600)*SGN(h) 195 196 DEF FNDEGHMSP(x,y) 197 LOCAL HMS$,PT$:x=x/15:HMS$=STR$((x-(y=1)*.5) MOD 24)+CHR$233:IFy>1THENHMS$=HMS$+STR$(ABS(x*60-(y=2)*.5)MOD 60)+CHR$234 198 IFy>2THENHMS$=HMS$+STR$((ABS(x*3600-(y=3)*.5))MOD 60)+CHR$235 199 PT$=STR$(ABS((x*360000)+.5)MOD 100):IFy>3 AND VAL(PT$)<10THENHMS$=HMS$+".0"+PT$:ELSE IFy>3 THENHMS$=HMS$+"."+PT$ 200 =HMS$ 201 202 203 DEF FNDEGDMSP(x,y) 204 S=SGN(x) 205 x=ABS(x) 206 LOCAL DMS$,PT$:DMS$=STR$((x-(y=1)*.5) MOD 360)+CHR$230:IFy>1THENDMS$=DMS$+STR$(ABS(x*60-(y=2)*.5)MOD 60)+CHR$231 207 IFy>2THENDMS$=DMS$+STR$((ABS(x*3600-(y=3)*.5))MOD 60)+CHR$232 208 PT$=STR$(ABS((x*360000)+.5)MOD 100):IFy>3 AND VAL(PT$)<10THENDMS$=DMS$+".0"+PT$:ELSE IFy>3 THENDMS$=DMS$+"."+PT$ 209 IFS=-1THENDMS$="-"+DMS$ 210 =DMS$ 211 212 DEF FNR360(x):LOCAL K:K=(x/360-x DIV 360)*360:=K-360*(K<0) 213 214 DEF FNR24(x):LOCAL K:K=(x/24-x DIV 24)*24:=K-24*(K<0) 215 216 DEF FNGMGS(GM,JDT):=(FNR24(6.67170278+.0657098232*(JDT-2433282.5)+GM+GM*.0027379093)) 217 218 DEF FNGSGM(GS,JDT):LOCAL K:K=(.997252*FNR24(GS+17.32829722-.0657098232*(JDT-2433282.5))):FLAG1=0:IFK<.06583333THEN FLAG1=1 219 =K 220 221 222 DEF FNGSLS(GS,LO):=FNR24(GS-LO/15) 223 224 DEF FNLSGS(LS,LO):=FNR24(LS+LO/15) 225 226 DEF FNRAGH(RIAS,GS):=FNR24(GS-RIAS/15) 227 228 DEF FNGHRA(GH,GS):=FNR360((GS-GH)*15) 229 230 231 232 DEF PROCPREC(c,d) 233 T0=(c-1900)/100:T1=(d-1900)/100-T0 234 SIG=((2304.25+1.396*T0)*T1+.302*T1^2+.018*T1^3)/3600 235 ZED=SIG+(.791*T1^2)/3600 236 THETA=((2004.682-.853*T0)*T1-.426*T1^2-.042*T1^3)/3600 237 DEC1=DEG(ASN(COS(RAD(THETA))*SIN(RAD(DEC))+SIN(RAD(THETA))*COS(RAD(DEC))*COS(RAD(RA+SIG)))) 238 RA1=FNR360(DEG(ASN((COS(RAD(DEC))*SIN(RAD(RA+SIG))/COS(RAD(DEC1)))))) 239 IF ABS(RA-RA1)>1.5THENRA1=FNR360(180-RA1) 240 RA1=FNR360(RA1)+ZED 241 ENDPROC 242 REM::::::::::::::::::::::::::::::: 243 DEF FNCOM(AZ) 244 LOCALA$,B$,C$,D$,PT%,CO$,F,E$,MI$ 245 A$="11111122222333333333334444411111":B$="-0122210-0322230-0344430-0144410":C$="-220-021-320-022-440-043-140-044":D$="---1-2-----2-3-----3-4-----4-1--" 246 PT%=(1.5+FNR360(AZ)/11.2) 247 CO$=MID$(A$,PT%,1)+MID$(B$,PT%,1)+MID$(C$,PT%,1)+MID$(D$,PT%,1) 248 COM$="" 249 FORF=1TO4:MI$=MID$(CO$,F,1):E$="" 250 IFMI$="0"THENE$="by " 251 IFMI$="1"THENE$="N." 252 IFMI$="2"THENE$="E." 253 IFMI$="3"THENE$="S." 254 IFMI$="4"THENE$="W." 255 COM$=COM$+E$:NEXT 256 IFAZ>=352.8THENCOM$="N." 257 =COM$ 258 REM::::::::::::::::::::::::::::::: 259 DEF PROCSETCLK 260 LOCAL a,b,c,GMT,GS,L 261 PROCHEADING 262 PRINT''"TO SET THE INTERNAL CLOCK"'' 263 D%=JD 264 INPUT''"Input the correct time GMT"''"HOURS "a,'"MINUTES "b,'"SECONDS "c:TIME=0:T%=(c+60*b+3600*a)*100:GMT=FNR24(T%/360000) 265 GS=FNR24(FNGMGS(GMT,D%+.5)):G%=GS*360000 266 S%=LON*24000 267 INPUT''"Now input the local time correction in"''"hours. (BST is +1)"'L:L=L MOD 24:L%=T%+L*360000 268 Y$="E" 269 PRINT'"(Press ""M"" to return to menu)" 270 ENDPROC 271 REM::::::::::::::::::::::::::::::: 272 DEF PROCDISCLK 273 CLS 274 LOCAL TIM,T$,H,M,S 275 VDU23;8202;0;0;0; 276 PRINTTAB(0,12);"ADJUSTING THE CLOCK IF IT IS OUT:"'''"If it is severely wrong, press ""B"""'''"If only slightly out, then repeatedly"''"press ""F"" to make the clock go forwards"''"or press ""S"" to make the clock go back."'''' 277 PRINT"(Press ""M"" to return to menu)" 278 PRINT TAB(0,2);"Long. ";FNDEGDMSP(S%/24000,3) 279 REPEAT 280 TIM=TIME+T%:GOSUB298 281 IF TIM<0THEND%=D%-1:TIME=TIME +8640000 282 IF TIM>8640000THEND%=D%+1:TIME=TIME - 8640000 283 PRINT TAB(27,0);"GMT ";T$ 284 TIM=TIME+L%:TIM=TIM-864000*(TIM<0):GOSUB298 285 PRINT TAB(27,1);"LMT ";T$ 286 TIM=G%+TIME*.997257:GOSUB298 287 PRINT TAB(27,2);"GST ";T$ 288 TIM=G%+TIME*.997257+S%:GOSUB298 289 PRINT TAB(27,3);"LST ";T$ 290 PRINT TAB(0,3);"JD ";D%+.5 291 PRINT TAB(0,4);FNDATE(D%+.5) 292 Y$=INKEY$(0) 293 *FX15,0 294 IF Y$="F"THEN TIME =TIME +75:ELSE IF Y$="S"THEN TIME =TIME -100:ELSE IF Y$="B"THEN PROCSETCLK:ENDPROC:ELSE IF Y$="M"THEN ENDPROC 295 Y$="" 296 UNTILFALSE 297 DATA 2442412.5,124.87L.9520, 298 IFTIM<0THEN REPEAT:TIM=TIM+8640000:UNTILTIM>=0 299 H=(TIM DIV 360000)MOD 24:M=(TIM DIV 6000)MOD 60:S=(TIM DIV 100)MOD 60 300 IFH<10THENT$="0"+STR$(H) ELSE T$=STR$(H) 301 T$=T$+CHR$233 302 IFM<10THENT$=T$+"0"+STR$(M) ELSE T$=T$+STR$(M) 303 T$=T$+CHR$234 304 IFS<10THENT$=T$+"0"+STR$(S) ELSE T$=T$+STR$(S) 305 T$=T$+CHR$235 306 RETURN 307 REM::::::::::::::::::::::::::::::: 308 DEF FNILON 309 CLS 310 LOCAL D,M,S 311 PRINT''"Input your longitude:"''"West of Greenwich, 0 to +180"'"East of Greenwich, 0 to -180"''"Input either in Decimal degs (eg 7.292)"''"or in deg,min,sec, each followed by"''"""RETURN""" 312 INPUT'"Degrees "D:IFABS(D)>180THENGOTO314 313 INPUT'"Minutes "M'"Seconds "S 314 IFABS(D)>180OR ABS(M)>59 ORABS(S)>59THEN CLS:PRINT"Let's try again, properly this time...":GOTO311 315 IFD<0THEN=D-ABS(M/60)-ABS(S/3600):ELSE=D+M/60+S/3600 316 317 DEF FNILAT 318 CLS 319 PRINT''"Input your latitude:"''"North, 0 to +90"'"South, 0 to -90"''"Input either in Decimal degs (eg 1.226)"''"or in deg,min,sec, each followed by"''"""RETURN""" 320 INPUT'"Degrees "D:IFABS(D)>90THENS=0:M=0:GOTO323 321 IF D<>INT(D)THEN =D 322 INPUT'"Minutes "M'"Seconds "S 323 IFABS(D)>90ORABS(M)>60ORABS(S)>60THENCLS:PRINT'"Try again please....":GOTO319 324 IFD<0THEN=D-ABS(M/60)-ABS(S/3600):ELSE=D+M/60+S/3600 325 DEF FNDATE(x):LOCAL Y,DD,L,MO,Z,N,M,D:Y=1900+INT((x-2415019.5)/365.25):DD=1+x-(367*Y-INT(1.75*Y)+1721044.5):L=0:IFY/4=INT(Y/4)THEN L=1 326 DATA32,60+L,91+L,121+L,152+L,182+L,213+L,244+L,274+L,305+L,335+L,366+L 327 RESTORE326:MO=1:Z=32:REPEAT:N=Z:READZ:MO=MO+1:UNTIL DD8 OR MID$(RIGHT$(DATE$,3),1,1)<>"."THEN PRINT'"Sorry, not accetable. Try again:"':GOTO335 337 ENDPROC 338 DEF PROCCLOCK 339 IF SET=0THEN PROCSETCLK:SET=1:ELSEPROCDISCLK 340 ENDPROC 341 REM:::::::::::::::::::::::::::::: 342 DEF PROCMAINPROG 343 PROCINPDATE 344 JD=FNJD(DATE$) 345 LAT=FNILAT 346 LON=FNILON 347 CLS 348 PRINT''"Please be patient..." 349 PROCPLANCOORD 350 PROCSUN 351 PROCMOON("COORD") 352 PROCMOONRISE 353 PROCCONS 354 REM DATA ALL WORKED NOW 355 *KEY0 8 356 *KEY1 0 357 *KEY2 1 358 *KEY3 9 359 *KEY4 2 360 *KEY5 3 361 *KEY6 4 362 *KEY7 5 363 *KEY8 6 364 *KEY9 7 365 REM MENU 366 PROCHEADING 367 PRINT'"BASIC PLANETARY DATA"' 368 PRINT"KEY"'"f0 Sun/Moon"'"f1 Mercury"'"f2 Venus"'"f3 The Clock"'"f4 Mars"'"f5 Jupiter"'"f6 Saturn"'"f7 Uranus"'"f8 Neptune"'"f9 Pluto" 369 PRINT'"OR...Press ""X"" to move onto the next"'"part of the program." 370 REPEAT:X$=GET$:UNTIL X$="M" OR X$="X" OR (X$>="0" AND X$<="9") 371 Y$="" 372 IFX$="X"ANDKK=1THEN RETURN 373 IF X$="X"THEN ENDPROC 374 IFX$="M"THEN GOTO 366 375 IF X$="8"THEN PROCSUNMOON:ELSEIF X$="9"THEN PROCCLOCK:ELSE IF X$<>"8"ANDX$<>"9"THEN PROCPLANETS(X$) 376 IFY$="M"THENGOTO365 377 GOTO370 378 379 DEFPROCALTAZ(LH,DC) 380 ALT=DEG(ASN(SIN(RAD(DC))*SIN(RAD(LAT))+COS(RAD(DC))*COS(RAD(LAT))*COS(RAD(LH*15)))) 381 AZ=DEG(ACS((SIN(RAD(DC))-SIN(RAD(LAT))*SIN(RAD(ALT)))/(COS(RAD(LAT))*COS(RAD(ALT))))) 382 IF SIN(RAD(LH*15))>=0THEN AZ=360-AZ 383 AZ=FNR360(AZ) 384 ENDPROC 385 DEF PROCLOCALCRD 386 PROCHEADING 387 PRINT'"You now have the basic co-ordinates of"'"the planets for tonight, and can thus"'"find their positions on a star map."''"You may wish to know exactly where they lie at a particular time (GMT) tonight,"'"and Local Coordinates"; 388 PRINT" will be given as"'"follows:" 389 PRINT'"Compass Bearing"'"Altitude and Azimuth"'"Local Hour angle and Declination"''"Press ""RETURN""" 390 INPUTK$ 391 PROCHEADING 392 PRINT'"What time (GMT) do you wish the"'"co-ordinates to be calculated for ?" 393 INPUT''"HOURS "a,'"MINUTES "b,'"SECONDS "c:GMT=(c+60*b+3600*a)/3600 394 GST=FNGMGS(GMT,JD+1*(GMT>12)) 395 LST=FNGSLS(GST,LON) 396 REM NEW MENU 397 PROCHEADING 398 PRINT"LOCALISED PLANETARY CO-ORDINATES FOR" 399 PRINT"GMT ";FNDEGHMSP(GMT*15,3) 400 PRINT'"KEY"'"f0 Moon"'"f1 Mercury"'"f2 Venus"'"f3 Clock"'"f4 Mars"'"f5 Jupiter"'"f6 Saturn"'"f7 Uranus"'"f8 Neptune"'"f9 Pluto" 401 PRINT"B Return to basic co-ord data"'"L Calc. Local Co-ords for new time"'"R Re-run the program for a new date" 402 V$=GET$:V=VAL(V$) 403 IFV=9THENPROCCLOCK 404 IFV=8THENPROCLOCALMOON 405 IFV$>="0"ANDV$<="7"THEN PROCLOCPLAN(V) 406 IFV$="R"THEN RUN 407 IFV$="L"THEN GOTO386 408 IFV$="B"THEN KK=1:GOSUB365 409 IFY$="E"THENGOTO 397 410 IFKK=1THENKK=0:GOTO397 411 IFV$="M"THENGOTO397 412 GOTO402 413 DEFPROCLOCPLAN(V) 414 PROCHEADING 415 PRINTP$(V)," "CHR$PL(V);" ";CON$(V)''"CO-ORDINATES FOR GMT ";FNDEGHMSP(GMT*15,3) 416 P(V,27)=FNRAGH(P(V,10),GST) 417 P(V,28)=FNRAGH(P(V,10),LST) 418 PROCALTAZ(P(V,28),P(V,11)) 419 P(V,25)=ALT 420 P(V,26)=AZ 421 PRINT"GHA ";FNDEGHMSP(P(V,27)*15,2) 422 PRINT"LHA ";FNDEGHMSP(P(V,28)*15,2) 423 PRINT"Dec. ";FNDEGDMSP(P(V,11),2) 424 PRINT'"Altitude ";FNDEGDMSP(P(V,25),2) 425 PRINT"Azimuth ";FNDEGDMSP(P(V,26),2) 426 PRINT'"Bearing ";FNCOM(P(V,26)) 427 PRINT'"(Press ""M"" to return to menu)" 428 ENDPROC 429 DEFPROCLOCALMOON 430 PROCHEADING 431 PRINT"The Moon ";CON$(9)''"Co-ordinates for ";FNDEGHMSP(GMT*15,3) 432 MGH=FNRAGH(M(4),GST) 433 MLH=FNRAGH(M(4),LST) 434 PROCALTAZ(MLH,M(5)) 435 PRINT"GHA ";FNDEGHMSP(MGH*15,2) 436 PRINT"LHA ";FNDEGHMSP(MLH*15,2) 437 PRINT"Dec. ";FNDEGDMSP(M(5),2) 438 PRINT'"Altitude ";FNDEGDMSP(ALT,2) 439 PRINT"Azimuth ";FNDEGDMSP(AZ,2) 440 PRINT'"Bearing ";FNCOM(AZ) 441 PRINT'"(Press ""M"" to return to menu)" 442 ENDPROC 443 DEF FNCON(RA) 444 DATAPisces,1.8,Aries,3.5,Taurus,6,Gemini,8,Cancer,9.3,Leo,11.6,Virgo,14.3,Libra,16.3,Scorpio,17.6,Saggitarius,20,Capricorn,22,Aquarius,24 445 RESTORE444 446 REPEAT 447 READB$,A 448 UNTILA>RA/15 449 =B$ 450 DEF PROCCONS 451 FORH=0TO7 452 CON$(H)=FNCON(P(H,7)) 453 NEXT 454 CON$(8)=FNCON(S(1)) 455 CON$(9)=FNCON(M(4)) 456 ENDPROC 457 DEF FNA(B) 458 IFB>3=2 459 REM ERROR CORRECTION 460 CLS:PRINT''"Well done! You have stopped the program "'"trying or not."''"Press ""RETURN"" to restart it." 461 INPUTA$:IFA$="Z"THEN ONERROR OFF:STOP 462 RUN 463 PRINT"SPACE USED: ";INT((TOP-PAGE)/10.24)/100;"K"'"SPACE LEFT: ";INT((HIMEM-TOP)/10.24)/100;"K"