D\->G IF \=/ THEN DROP J # D01h DOERR END \>> \>> JD\->G \<< DUP IF 0 < THEN "Negative Julian Day" DOERR END .5 + DUP IP DUP ROT FP SWAP 1867216.25 - 36524.25 / IP 3 PICK IF 2299161 < THEN DROP SWAP ELSE DUP 4 / IP - 1 + ROT + END 1524 + DUP 122.1 - 365.25 / IP DUP 365.25 * IP DUP 4 PICK SWAP - 30.6001 / IP SWAP 4 ROLL SWAP - SWAP DUP 30.6001 * IP ROT SWAP - 4 ROLL + SWAP DUP IF 13.5 < THEN 1 - ELSE 13 - END DUP IF 2.5 > THEN ROT 4716 - ELSE ROT 4715 - END DUP IF 0 \<= THEN 1 - END SWAP ROT 100 / + 100 / SWAP DUP SIGN SWAP ABS ROT + * \>> JD \<< GTDIF TIME HMS+ 4 RND HMS\-> 24 / DUP FP 10000 / SWAP IP DATE SWAP DATE+ \->YMD SWAP + G\->JD \>> LSIDT \<< 6.66452 LONG 15 / - GTDIF 1.002738 * + .0002 + RCLF 3 FIX CLLCD "Local Siderial Time." 5 DISP "Local Time." 1 DISP SWAP \-> a \<< DO a DATE 1.012 DDAYS 15.21842 / - \-> Y \<< WHILE IF 0 KEY == THEN TIME .00005 HMS+ DUP HMS\-> DUP 4 TRNC ELSE 0 0 END 0 \=/ REPEAT SWAP 4 TRNC ATIME 2 DISP 1.002738 * Y + 24 MOD \->HMS 4 TRNC RCLF SWAP -41 SF ATIME 6 DISP STOF END \>> UNTIL 0 == END \>> DROP STOF \>> SETUP \<< { :GMT: 0 :EST: 5 :EDT: 4 :CST: 6 :CDT: 5 :MST: 7 :MDT: 6 :PST: 8 :PDT: 7 :AST: 9 :ADT: 8 } \-> TZ \<< { } ASPAR DUP TYPE IF 5 \=/ SWAP SIZE 4 \=/ OR THEN :GMT: 0 ELSE ASPAR 1 GET END { "SELECT A TIME ZONE" } TZ ROT POS + 0 + \<< \>> + TZ BROWSE 1 GET SWAP DROP \>> + "ENTER Your longitude" 10 CHR + "as deg . min sec" + { } ":Long.:" IFERR ASPAR 2 GET DTAG THEN "" END + + -8 + V + INPUT OBJ\-> + "ENTER Your latitude." 10 CHR + "as deg . min sec" + { } ":Lat.:" IFERR ASPAR 3 GET DTAG THEN "" END + + -7 + V + INPUT OBJ\-> + "ENTER Your altitude" 10 CHR + "in meters." + { } ":ELEV.:" IFERR ASPAR 4 GET DTAG OBJ\-> DROP THEN "" END + + -7 + V + INPUT OBJ\-> '1_m ' \->UNIT "ELEV." \->TAG + 'ASPAR' STO \>> ADATE \<< DUP 1 TSTR 1 10 SUB SWAP 100 * FP 10000 * + \>> ASOK \<< ASPAR DUP TYPE IF 5 \=/ SWAP SIZE 4 \=/ OR THEN SETUP END \>> ASPAR { :CDT: 5 :Long.: 93.104213 :Lat.: 44.57546 :ELEV.: '278.9_m' } ATIME \<< HMS\-> \->HMS IF -41 FC? THEN 24 MOD END DUP SIGN SWAP ABS DUP IP SWAP DUP DUP 4 TRNC - 10000 * SWAP FP 1.1 SWAP IF -41 FC? THEN 4 PICK + END TSTR -41 IF FS? THEN 17 22 SUB SWAP DUP IF 0 == THEN DROP ELSE \->STR IF DUP "E" POS 0 == THEN DUP DUP "." POS SWAP SIZE SUB + ELSE DROP END END ELSE DUP 14 21 SUB " " + SWAP 22 22 SUB + "M" + SWAP DROP END SWAP IF -41 FS? THEN \->STR DUP 1 SWAP "." POS 1 - DUP IF 1 < THEN DROP OVER SIZE END SUB SWAP + ELSE DROP END SWAP IF 0 < THEN "-" SWAP + END \>> \GdDAYS \<< G\->JD SWAP G\->JD - \>> ELEV \<< ASOK ASPAR 4 GET \>> GTDIF \<< ASOK ASPAR 1 GET HMS\-> \>> \->h$ \<< RCLF STD SWAP HMS\-> \->HMS DUP FP \->STR SIZE DUP 4 IF \<= THEN DROP 4 FIX ELSE 1 - FIX END \->STR DUP "." POS SWAP OVER "h" REPL DUP 3 PICK 2 + OVER SIZE SUB 1 "m" REPL ROT 3 + DUP 4 ROLLD SWAP REPL "s" + SWAP 2 + OVER OVER OVER SIZE DUP2 IF \>= THEN 4 DROPN ELSE SUB 1 "." REPL SWAP 1 + SWAP REPL END SWAP STOF \>> JD\->LSIDT \<< GTDIF 24 / - \-> J \<< 1.002738 6.66452 LONG 15 / - OVER GTDIF * + J JD\->G YMD\-> 1.012 DDAYS 15.218442 / - SWAP J JD\->G 10000 * FP 24 * * + 24 MOD \->HMS \>> \>> JDOW \<< 0 RND 1 + 7 MOD "SUNMONTUEWEDTHUFRISAT" SWAP DUP 3 * 1 + SWAP 1 + 3 * SUB \>> LAT \<< ASOK ASPAR 3 GET HMS\-> \>> LONG \<< ASOK ASPAR 2 GET HMS\-> \>> OBJECTS DIR SolarSystem { { "Sun" 91 0 } { "Moon" 92 0 } } BrightStars { { "\Ga Tau:Aldebaran" 4.3555 16.3033 } { "\Gb Per:Algol" 3.081 40.5721 } { "\Ga Aql:Altair" 19.5046 8.5206 } { "\Ga Sco:Antares" 16.2924 -26.2555 } { "\Ga Boo:Arcturus" 14.1539 19.1057 } { "\Gg Ori:Bellatrix" 5.2507 6.2059 } { "\Ga Ori:Betelguese" 5.551 7.2426 } { "\Ga Car:Canopus" 6.2357 -45.5651 } { "\Ga Aur:Capella" 5.1641 45.5953 } { "\Ga Cyg:Deneb" 20.4125 45.1649 } { "\Gb Tau:Elnath" 5.2617 28.3627 } { "\Ga PsA:Fomalhaut" 22.5738 -29.372 } { "\Gs Cet:Mira" 2.1921 60.291 } { "\Ga UMi:Polaris" 2.315 89.1551 } { "\Gb Gem:Pollux" 7.4518 28.0134 } { "\Ga CMi:Procyon" 7.3918 5.133 } { "\Ga Leo:Regulus" 10.0822 11.5802 } { "\Gb Ori:Rigel" 5.1432 -8.1206 } { "\Ga Sgr:Rukbat" 19.2353 -40.3658 } { "\Ga CMa:Sirius" 6.4508 -16.4258 } { "\Ga Vir:Spica" 13.2511 -11.0941 } { "\Ga Lyr:Vega" 18.3656 38.4701 } { "\Ga Cen" 14.3935 -60.5013 } { "\Gt Cet" 1.4404 -15.5615 } } Messier { { "M1:Crab Nebula" 5.34 22.01 } { "M31:Andromeda" .43 41.16 } { "M42:Orion Nebula" 5.35 -5.27 } { "M45:Pleiades" 3.47 24.07 } } END P\->R \<< DUP2 COS * "x" \->TAG 3 ROLLD SIN * "y" \->TAG \>> R\->P \<< R\->C DUP ABS "r" \->TAG SWAP ARG "\<)" \->TAG \>> YMD\-> \<< 4 TRNC IF -42 FC? THEN \->YMD \->YMD 100 / ELSE DUP IP SWAP FP 100 * DUP IP SWAP FP 100 * SWAP ROT 10000 / + 100 / + END \>> \->YMD \<< DUP IP SWAP FP 100 * DUP IP SWAP FP 10000 * IF -42 FC? THEN ROT ROT ELSE SWAP ROT END 100 / + 100 / + \>> YMD$ \<< DUP SIGN SWAP ABS DUP IP SWAP DUP DUP 4 TRNC - 10000 * SWAP FP 1.1 SWAP TSTR -41 IF FS? THEN 17 22 ELSE 16 21 END SUB SWAP RCLF SWAP STD DUP IF 0 == THEN DROP ELSE ROT " " + SWAP 24 * \->HMS 4 RND ATIME + SWAP END STOF + SWAP IF 0 < THEN "-" SWAP + END 1 2 START DUP ":" POS "/" REPL NEXT \>> \->\^o$ \<< RCLF STD SWAP HMS\-> \->HMS DUP FP \->STR SIZE DUP 4 IF \<= THEN DROP 4 FIX ELSE 1 - FIX END \->STR DUP "." POS SWAP OVER "\^o" REPL DUP 3 PICK 2 + OVER SIZE SUB 1 "'" REPL ROT 3 + DUP 4 ROLLD SWAP REPL 34 CHR + SWAP 2 + OVER OVER OVER SIZE DUP2 IF \>= THEN 4 DROPN ELSE SUB 1 "." REPL SWAP 1 + SWAP REPL END SWAP STOF \>> END