10 PRINT "***PROGRAM STARFIX***" 11 VAR P,R1,F1,J,J1,A,R,D1,L1,L2,D,T,J0,T1,C1,T5,T2,S0=REAL.DOUBLE 12 VAR S1,A4,M1,H,C2,S2=REAL.DOUBLE 13 VAR F9,Y,M,D2,S,A1,A2,A3=REAL 14 VAR E$,A$,S$,N$=STRING 15 LPRINTER 20 LET F9=1 30 PRINT "OBJECT NAME: "; 40 REM THIS IS PROGRAM STARFIX 50 REM THIS VERSION RUNS ON NEVADA BASIC 12 BY ELLIS COMPUTING 60 REM THIS IS THE 12 DIGIT PRECISSION VERSION IN THE PACKAGE 70 REM IT WILL CALCULATE THE ALTITUDE AND AZMUTH OF ANY CELESTIAL BODY 80 REM GIVEN THE LATITUDE AND LONGITUDE OF THE OBSERVER, 90 REM THE RIGHT ASCENTION AND DECLINATION OF THE CELESTIAL BODY 100 REM AND THE SIDEARIAL TIME AT GREENWICH DETERMINED BY 110 REM THE IAU FORMULA FOR GST FROM UNIVERSAL TIME 120 REM THIS PROGRAM LOOPS BACK TO GET ANOTHER TIME FOR THE OBSERVATION 130 REM TO GET OUT OF LOOP ENTER -C. 140 REM THIS VERSION BY M. P. FINERTY, MAY 31, 1984 150 REM ALTITUDE AND AZMUTH FROM RA AND DEC + LST 160 LET P=3.141592654 170 LET R1=P/180 175 CONSOLE 180 PRINT "INPUT OBJECT NAME" 185 LPRINTER 190 INPUT N$ 200 PRINT N$ 205 CONSOLE 210 PRINT "INPUT RIGHT ASCENTION" 220 INPUT "H= ",A1 230 INPUT "M= ",A2 240 INPUT "S= ",A3 250 PRINT "RA = ";A1;" HRS ";A2;" MINS ";A3;" SECS" 260 PRINT "IS THIS CORRECT? Y?/N?" 270 INPUT A$ 280 IF A$="N" THEN 210 290 IF A$<>"Y" THEN 210 300 GOSUB 1340 310 LET R=A*15*R1 315 LPRINTER 320 PRINT "RIGHT ASCENTION IN DECIMAL DEGREES IS: ";R/R1 325 CONSOLE 330 PRINT "INPUT DECLINATION" 340 INPUT "DEGREES ",A1 350 INPUT "MINUTES ",A2 360 INPUT "SECONDS ",A3 370 PRINT "IS THIS NORTH OR SOUTH, N?/S?" 380 INPUT S$ 390 PRINT "DECLINATION = ";A1;" DEG ";A2;" MIN ";A3;" SEC ";S$ 400 PRINT "IS THIS CORRECT? Y?/N?" 410 INPUT A$ 420 IF A$="N" THEN 330 430 IF A$<>"Y" THEN 330 440 GOSUB 1340 450 LET D1=A*R1 460 IF F9=2 THEN RETURN 465 LPRINTER 470 PRINT "DECLINATION IN DECIMAL DEGREES IS: ";D1/R1 474 CONSOLE 480 PRINT "INPUT LATITUDE" 490 INPUT "DEGREES ",A1 500 INPUT "MINUTES ",A2 510 INPUT "SECONDS ",A3 520 PRINT "IS LATITUDE NORTH OR SOUTH? N?/S?" 530 INPUT S$ 540 PRINT "LATITUDE IS: ";A1;" DEGREES ";A2;" MINUTES ";A3;" SECONDS ";S$ 550 PRINT "IS THIS CORRECT? Y?/N?" 560 INPUT A$ 570 IF A$="N" THEN 480 580 IF A$<>"Y" THEN 480 590 GOSUB 1340 600 LET L1=A*R1 605 LPRINTER 610 PRINT "OBSERVERS POSITION" 620 PRINT "LATITUDE IN DECIMAL DEGREES IS: ";L1/R1 625 CONSOLE 630 PRINT "INPUT LONGITUDE" 640 INPUT "DEGREES ",A1 650 INPUT "MINUTES ",A2 660 INPUT "SECONDS ",A3 670 PRINT "IS LONGITUDE EAST OR WEST? E?/W?" 680 INPUT E$ 690 IF E$="E" THEN LET S$="N" ELSE LET S$="S" 700 PRINT "LONGITUDE IS: ";A1;" DEGREES ";A2;" MINUTES ";A3;" SECONDS ";E$ 710 PRINT "IS THIS CORRECT? Y?/N?" 720 INPUT A$ 730 IF A$="N" THEN 630 740 IF A$<>"Y" THEN 630 750 GOSUB 1340 760 LET L2=A*R1 765 LPRINTER 770 PRINT "LONGITUDE IN DECIMAL DEGREES IS: ";L2/R1 780 GOSUB 1370 790 GOSUB 1470 800 GOSUB 1740 810 LET A1=H 820 LET A2=M 830 LET A3=S 840 LET S$="N" 850 GOSUB 1340 860 LET T=A*15*R1 870 REM T5 IS LHA 880 LET T5=T-R+L2 890 IF T5<0 THEN LET T5=T5+2*P 900 IF T5>2*P THEN LET T5=T5-2*P 910 PRINT "LOCAL HOUR ANGLE: ";T5/R1;" DEGREES" 920 LPRINTER 930 PRINT "LOCAL HOUR ANGLE: ";T5/R1;" DEGREES" 940 REM CALCULATE AZMUTH (A) AND ALTITUDE(H) 950 LET S1=SIN(L1)*SIN(D1) 960 LET S1=S1+COS(L1)*COS(D1)*COS(T5) 970 LET C1=1-S1*S1 980 IF C1>0 THEN LET C1=SQR(C1) 990 IF C1<=0 THEN 1020 1000 LET H=ATN(S1/C1) 1010 GOTO 1030 1020 LET H=SGN(S1)*P/2 1030 LET C2=COS(L1)*SIN(D1) 1040 LET C2=C2-SIN(L1)*COS(D1)*COS(T5) 1050 LET S2=-(COS(D1)*SIN(T5)) 1060 IF C2=0 THEN LET A=SGN(S2)*P/2 1070 IF C2=0 THEN 1120 1080 LET A=ATN(S2/C2) 1090 IF S2<0 AND C2>0 THEN LET A=2*P-ABS(A) 1100 IF S2<0 AND C2<0 THEN LET A=P+ABS(A) 1110 IF S2>0 AND C2<0 THEN LET A=P-ABS(A) 1120 IF A<0 THEN LET A=A+2*P 1130 IF A>2*P THEN LET A=A-2*P 1135 CONSOLE 1140 PRINT "ALTITUDE: ";H/R1 1150 IF H<=0 THEN PRINT "DOWN" ELSE PRINT "UP" 1160 PRINT "AZMUTH: ";A/R1 1170 PRINT "--ooOOOoo--" 1180 PRINT 1190 PRINT 1195 LPRINTER 1200 PRINT 1210 PRINT "ALTITUDE IN DEGREES: ";H/R1;" AZMUTH IN DEGREES: ";A/R1 1220 PRINT "--ooOOOoo--" 1230 PRINT 1240 PRINT 1245 CONSOLE 1250 PRINT "DO YOU WANT ANOTHER TIME AND DAY? Y?/N?" 1260 INPUT A$ 1270 IF A$="Y" THEN 780 1280 PRINT "DO YOU WANT ANOTHER OBJECT?" 1290 INPUT A$ 1300 LET F9=2 1310 IF A$="Y" THEN GOSUB 30 ELSE END 1320 GOTO 870 1330 REM HERE BEGIN THE SUBROUTINES 1340 IF S$<>"S" THEN LET S=1 ELSE LET S=-1 1350 LET A=S*(A1+A2/60+A3/3600) 1360 RETURN 1370 REM CALCULATE GST 1375 CONSOLE 1380 PRINT "INPUT YEAR, MONTH, DAY, GREGORIAN CALENDAR" 1390 INPUT "YEAR ",Y 1400 INPUT "MONTH ",M 1410 INPUT "DAY ",D2 1420 PRINT Y;" YEAR ";M;" MONTH ";D2;" DAY " 1430 PRINT "IS THIS CORRECT? Y?/N?" 1440 INPUT A$ 1450 IF A$="N" THEN 1380 1460 RETURN 1470 IF A$<>"Y" THEN 1380 1475 LPRINTER 1480 PRINT "DATE OF OBSERVATION OR PROJECTION" 1490 PRINT D2;" DAY ";M;" MONTH,";Y 1500 REM CALCULATE FRACTION OF A DAY 1505 CONSOLE 1510 PRINT "INPUT HOURS MINUTES AND SECONDS, GREGORIAN CALANDAR" 1520 INPUT "HOURS ",A1 1530 INPUT "MINUTES ",A2 1540 INPUT "SECONDS ",A3 1550 PRINT A1;" HOURS ";A2;" MINUTES AND ";A3;" SECONDS" 1560 PRINT "IS THIS CORRECT? Y?/N?" 1570 INPUT A$ 1580 IF A$="N" THEN 1510 1590 IF A$<>"Y" THEN 1510 1595 LPRINTER 1600 PRINT "TIME OF OBSERVATION OR PROJECTION" 1610 PRINT A1;":";A2;":";A3 1620 LET F1=(A3+60*A2+3600*A1)/86400-0.5 1630 LET J=-INT(7*(INT((M+9)/12)+Y)/4) 1640 LET S=SGN(M-9) 1650 LET A4=ABS(M-9) 1660 LET J1=INT(Y+S*INT(A4/7)) 1670 LET J1=-INT((INT(J1/100)+1)*3/4) 1680 LET J=J+INT(275*M/9)+D2+J1 1690 LET J=J+1721028+367*Y 1695 CONSOLE 1700 PRINT "JULIAN DAY ";J;" FRACTION OF A DAY ";F1 1705 LPRINTER 1710 PRINT 1720 PRINT "JULIAN DAY NUMBER: ";J;" FRACTION OF DAY: ";F1 1730 RETURN 1740 REM CDOMPUTE GREENWICH MEAN SIDERIAL TIME 1750 LET D=J-2451545 1760 LET T=D/36525 1770 LET T1=INT(T) 1780 LET J0=T1*36525+2451545 1790 LET T2=(J-J0+0.5)/36525 1800 LET S0=24110.54841+184.812866*T1 1810 LET S0=S0+8640184.81286*T2 1820 LET S0=S0+(0.093104*T*T) 1830 LET S0=S0-(0.0000062*T*T*T) 1840 LET S0=S0/86400 1850 LET S1=INT(S0) 1860 LET S0=S0-S1 1870 LET S0=24*(S0+(F1+0.5)*1.002737909) 1880 IF S0<0 THEN LET S0=S0+24 1890 IF S0>24 THEN LET S0=S0-24 1900 LET H=INT(S0) 1910 LET M1=60*(S0-H) 1920 LET M=INT(M1) 1930 LET S=60*(M1-M) 1935 CONSOLE 1940 PRINT "GMST: ";H;" HOURS ";M;" MINUTES AND ";S;" SECONDS" 1950 RETURN