100 CLS 110 A$=STRING$(80,205) 120 PRINT A$ 130 PRINT TAB(30)"DISTAR 7005-A.BAS " 140 COLOR 23,0,0 150 PRINT :PRINT :PRINT TAB(38)"IPCO" 160 COLOR 7,0,0 170 PRINT :PRINT :PRINT TAB(29)"INTERNATIONAL PC OWNERS" 180 PRINT :PRINT :PRINT TAB(17)"p.o. box 10426, pittsburgh, pennsylvania 15234" 190 PRINT A$ 200 PRINT :PRINT :PRINT :PRINT :PRINT 210 PRINT TAB(28)"PRESS ANY KEY TO CONTINUE" 220 A$=INKEY$:IF A$="" THEN 220 230 CLS 240 KEY OFF ' "DISTAR" of August 9, 1982, For Pittsburgh in 1982 JJS 250 C1=5:P=57.29578:LAT1=42.48/P:LONG1=80.22/P:IN=99.3324 '0Z Dec 30 81 260 CLS:PRINT TAB(24);CHR$(34);"DISTAR";CHR$(34);" computes:": LOCATE 3,5 270 PRINT "1. Great Circle Distance and the Initial Heading.": Y2=0 280 PRINT TAB(5);"2. Current Position of a star, given its celestial address." 290 PRINT: INPUT " Enter your choice ", CHOICE 300 IF CHOICE <>1 AND CHOICE <>2 THEN 240 ELSE PRINT 310 PRINT " Entries can be made either in decimal degrees or in " 320 PRINT " Degrees, Minutes and Seconds, separated by colons." 330 PRINT: PRINT TAB(5);"Hit 'Enter' if the reference point is to be "; 340 PRINT "the Pittsburgh Airport" :PRINT 350 INPUT " Otherwise enter Latitude of new reference point ",A$ 360 IF A$="" THEN LOCATE 13: PRINT SPC(23);: GOTO 400 370 GOSUB 1010: LAT1=L/P: PRINT TAB(36); 380 INPUT "and its Longitude ",A$: GOSUB 1010: IF L<0 THEN L=L+360 390 LONG1=L/P:PRINT TAB(20) 400 IF CHOICE=2 THEN PRINT " Both date and time are necessary":PRINT:GOTO 510 410 PRINT TAB(24);:INPUT "Enter Latitude of destination ",A$:GOSUB 1010:LAT2=L/P 420 PRINT TAB(42);:INPUT "& longitude ",A$:GOSUB 1010:PRINT:IF L<0 THEN L=L+360 430 LONG2=L/P:IF ABS(LAT1)>1.58 OR ABS(LAT2)>1.58 THEN PRINT "Where?":GOTO 490 440 GOSUB 1080:SM=INT(NM*11.5+.5)/10:KM=INT(NM*18.5+.5)/10:N=INT(10*NM+.5)/10 450 IF NM>3 THEN 470 ELSE PRINT:PRINT "Distance is";CINT(100*NM)/100;"NM, or"; 460 PRINT CINT(NM*6076.1);"feet and, the direction is";CINT(AZ): GOTO 490 470 LOCATE 19:PRINT "Great Circle Distance is ";N;"NM ";SM;"SM ";KM;"KM" 480 PRINT:PRINT "Initial Heading is ";:PRINT USING "###";AZ;:PRINT CHR$(248) 490 LOCATE 24:LINE INPUT "'A' for another, anything else for the Menu ";Y$ 500 IF Y$<>"A" AND Y$<>"a" THEN 250 ELSE CLS: LOCATE 13,1: GOTO 410 510 PRINT "The computer date is ";DATE$;:INPUT " Correct or hit Enter ",D$ 520 IF D$="" THEN 530 ELSE DATE$=D$+"-82" 530 PRINT "Computer time EST is ";TIME$;:INPUT " Correct or hit Enter ",T$ 540 Z2$="###.#"+CHR$(248):Z1$="+##.#"+CHR$(248): IF T$<>"" THEN TIME$=T$ 550 PRINT: INPUT "Enter Sidereal Hour Angle in Degrees ",A$:GOSUB 1010: SHA=L 560 INPUT " Also, enter declination with sign ",A$:GOSUB 1010: DEC=L 570 ' DAYS ELAPSED SINCE START OF YEAR 580 X = VAL(LEFT$(DATE$,2)): LAT2=DEC/P:IF ABS(LAT2)>1.565 THEN 490 590 IF X>1 THEN D= 31: IF X> 2 THEN D= 59:IF X> 3 THEN D= 90:IF X>4 THEN D=120 600 IF X>5 THEN D=151: IF X> 6 THEN D=181:IF X> 7 THEN D=212:IF X>8 THEN D=243 610 IF X>9 THEN D=273: IF X>10 THEN D=304:IF X>11 THEN D=334 620 D1=D + VAL(MID$(DATE$,4,2)):GOSUB 940:CLS:GOSUB 740: P$=DATE$ 630 ' SCREEN PRINTING ROUTINE 640 IF P$<>DATE$ THEN 570 650 IF Y2<1 AND ABS(H)<.01 THEN H=-H:Y2=2:GOSUB 740 660 LOCATE 3,2:PRINT "EST time is ";TIME$;TAB(30);"LHA of Aries is "; 670 PRINT USING Z2$;R2;:PRINT TAB(59);"GHA of Aries is ";: PRINT USING Z2$;R1 680 LOCATE 7,10:PRINT "For a celestial object of SHA ";:PRINT USING Z2$;SHA; 690 PRINT " and Declination of ";:PRINT USING "+##.#";DEC: LOCATE 11,3 700 PRINT "Its Elevation is ";:PRINT USING Z1$;H;:PRINT " at an Azimuth of "; 710 PRINT USING Z2$;AZ;:PRINT " and Local Hour Angle of ";:PRINT USING Z2$;LHA 720 Z$=INKEY$:IF Z$="A" OR Z$="a" THEN CLS:LOCATE 10,10:GOTO 550 730 IF Z$>CHR$(31) THEN 250 ELSE GOSUB 940: GOTO 630 740 ' RISING AND SETTING 750 LOCATE 15,4:W1=ABS((LAT1-LAT2)*P):W2=ABS((LAT1+LAT2)*P) 760 IF W1>90 THEN PRINT "And it never rises at this latitude": GOTO 920 770 IF W2>90 THEN PRINT "And it never sets at this latitude": GOTO 920 780 X=SIN(LAT2)/COS(LAT1):GOSUB 1190:AZR=CINT(Z*P):AZS=360-AZR:K=15.04107 790 X=SIN(Z)/COS(LAT2):IF ABS(X)<.99999 THEN GOSUB 1210 ELSE Z=0 800 Z1=90/P-Z:E1=Z1*P:IF DEC>0 THEN E1=180-E1 810 IF H<0 THEN TR=T+(360-E1-LHA)/K:TS=TR-(360-2*E1)/K: GOTO 840 820 IF LHA>180 THEN TR=T-(E1-360+LHA)/K ELSE TR=T-(E1+LHA)/K 830 TS=TR+2*E1/K:IF TS>24 THEN TS=TS-24 840 IF TR<0 THEN TR=TR+24 850 IF TR>24 THEN TR=TR-24 860 IF TS<0 THEN TS=TS+24 870 B=TR:GOSUB 930: HR$=B$: MR$=C$:B=TS:GOSUB 930: IF H>0 THEN 900 880 PRINT " It set at ";B$;":";C$;" Az of ";AZS; 890 PRINT " and will rise at ";HR$;":";MR$;" Az of ";AZR: GOTO 920 900 PRINT " It rose at ";HR$;":";MR$;" Az of ";AZR; 910 PRINT " and will set at ";B$;":";C$;" Az of ";AZS: 920 LOCATE 24,14:PRINT DATE$;" 'A' for another, otherwise the Menu";:RETURN 930 B$=STR$(INT(B)):C=(B-INT(B))*60+100.1:C$=MID$(STR$(C),3,2):RETURN 940 ' COMPUTE ARIES 950 A$=TIME$:GOSUB 1010:T=L:IF T>T3 AND Q1<1 THEN Q1=2:GOTO 570 960 R1=IN+D1*.985646+(T+C1)*15.041:R1=(R1/360-INT(R1/360))*360 'GHA of Aries 970 R2=R1-LONG1*P: IF R2<0 THEN R2=R2+360 'LHA of Aries 980 LHA=R2+SHA: IF LHA>360 THEN LHA=LHA-360 'LHA of star 990 LONG2 =LHA/P+LONG1:IF LONG2>360/P THEN LONG2=LONG2-360/P 1000 GOSUB 1080: H=(90-(NM/60)): RETURN 1010 ' TO ACCEPT EITHER DECIMALS OR D,M,S 1020 L$="":L1=0:L2=0:L3=0:GOSUB 1040:IF VAL(A$)>=0 THEN L=L1+L2+L3: RETURN 1030 L=L1-L2-L3: RETURN 1040 FOR N=1 TO LEN (A$): IF ASC(MID$(A$,N,1))=58 THEN 1060 1050 L$=L$+MID$(A$,N,1): L1=VAL(L$): NEXT:RETURN 1060 L2=VAL(MID$(A$,N+1,2))/60: IF LEN(A$)<>N+5 THEN RETURN 1070 L3=VAL(MID$(A$,N+4,2))/3600:RETURN 1080 ' COMPUTE NM AND Az 1090 DIF=LONG2-LONG1:X=SIN(LAT1)*SIN(LAT2)+COS(LAT1)*COS(DIF)*COS(LAT2) 1100 AZ=0: IF ABS(X)<.9995 THEN GOSUB 1210:NM=Z*P*60: GOTO 1130 1110 NM=P*60*SQR((LAT1-LAT2)^2+((DIF)*COS(LAT1))^2):IF NM=0 THEN RETURN 1120 X=(LAT2-LAT1)*P*60/NM:IF ABS(X)<.999995 THEN GOSUB 1210:AZ=Z*P: GOTO 1170 1130 IF ABS(LAT2-LAT1)<.001 THEN AZ=90: GOTO 1170 1140 IF ABS(DIF)<.001 OR ABS(LAT1)>89.9/P THEN 1150 ELSE 1160 1150 IF LAT2>LAT1 THEN RETURN ELSE AZ=180:RETURN 1160 X=(SIN(LAT2)-SIN(LAT1)*COS(Z))/(COS(LAT1)*SIN(Z)):GOSUB 1210:AZ=Z*P 1170 IF SIN(DIF)=<0 THEN RETURN 1180 AZ=360-AZ: RETURN 1190 IF ABS(X)<.9999999 THEN 1210 ELSE IF LAT2>LAT1 THEN AZ=0:RETURN 1200 AZ=180: RETURN 1210 Z=(1.570796-ATN(X/SQR(1-X*X))): RETURN BS(X)<.9999999 THEN 1210 ELSE IF LAT2>LAT1 THEN AZ=0:RETURN 1200 AZ=180: RETURN 1210