You are on page 1of 73

Recopilation by AMA BASIC Programs fromSky & Telescope pág.

1 / 73

BASIC Programs from Sky & Telescope

Sky & Telescope magazine is pleased to make available in machine-readable form the programs that
have been published in its monthly Astronomical Computing department, which first appeared in April 1984,
and later in the Computers in Astronomy department. These are offered as-is and without support.

The table on the following three pages lists the programs in reverse chronological order. Each name is a
hyperlink; if you select the name and your Web browser supports simple ASCII file transfers, you'll
automatically download the BASIC program.

Whenever possible the programs are written in simple generic BASIC, but there are unavoidable
variations from one interpreter to another. In case of difficulties, check your BASIC manual. A few programs
require specific graphics adapters or printers. To run these programs, you will need a BASIC interpreter for
your computer. If you do not know if your computer has one, see Stuart Goldman's article, "BASICally
Speaking," adapted from the April 1996 issue of S&T.

At the end of each program is a block indicating the issue of the magazine in which the program
appeared together with supporting text and instructions. If you have any questions, please consult the
original articles.
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 2 / 73

Listado de programas ordenados por publicación, de más reciente a más antiguo.

Nº File Name Brief Description Issue page


001 ROCKET.BAS Travel time for a space trip at relativistic speed Feb 02 066
002 DAYSOLD.BAS Determine date after input number of days after birthday Nov 01 063
003 LOOKBAK2.BAS Cosmological quantities of an accelerating universe Aug 01 062
004 PILLAR.BAS Simulate the appearance of a Sun pillar May 99 071
005 MSACHART.BAS Millennium Star Atlas chart number Oct 98 063
006 SUPERNUM.BAS Emergence angles of supernumerary rainbows Sep 98 070
007 VISLIMIT.BAS Visual limiting magnitude from any site May 98 057
008 CCDLIMI2.BAS Limiting magnitude of a CCD camera May 98 117
009 LOOKBACK.BAS Age and distance of a galaxy of known redshift Sep 97 059
010 SOLAROSC.BAS Visualize global solar oscillation modes Jun 97 092
011 SUNDOG.BAS Simulate the appearance of sundogs Jan 97 103
012 CRATER.BAS Find the dimensions of an impact crater Nov 96 090
013 BLKHOLE1.BAS Determine the mass of a black hole May 96 092
014 BLKHOLE2.BAS Calculate black-hole tidal forces May 96 092
015 BLKHOLE3.BAS Generate a black-hole "accelergram" May 96 092
016 FACECIRC.BAS Print setting-circle disks on a LaserJet Mar 96 084
017 SCALES.BAS Print setting-circle strips on a LaserJet Mar 96 084
018 AGEUNIV.BAS Age of the universe since the Big Bang Jan 96 092
019 PULSAR.BAS Relativistic precession in binary orbits Oct 95 086
020 CHANCE.BAS Odds of witnessing certain astronomical events Jun 95 086
021 SATRINGS.BAS Saturn ring-plane crossings May 95 092
022 JACK.BAS Demo of perturbed planetary motion Sep 94 078
023 SUNUP.BAS Times of sunrise/set at any place on Earth Aug 94 084
024 MOONFX.BAS Moon phase and distance on any given date Apr 94 086
025 CAPTURE.BAS Best film/camera combos for capturing meteors Feb 94 085
026 SUNTAN.BAS Effects of ozone, haze, on suntanning time Jul 93 083
027 ASTEROID.BAS The size of an asteroid from its brightness Jun 93 083
028 CCDLIMIT.BAS Compute the signal-to-noise ratio of a CCD Feb 93 084
029 OCCVIS.BAS Compute the visibility of a star near the Moon Jan 93 089
030 ROTATE.BAS Field rotation in a misaligned telescope Sep 92 318
031 GFLASH.BAS Simulate the appearance of the "green flash" Feb 92 200
032 PRECESS.BAS Rigorous precession of a star's coordinates Oct 91 408
033 LIST.BAS Make index lists of objects on star atlases Aug 91 182
034 SOLARECL.BAS Predictions of July 11, 1991, solar eclipse Jul 91 071
035 FIREBALL.BAS Calculate descent of a fireball Jun 91 640
036 RONCHI.BAS Ronchi test simulation Apr 91 416
037 RAINBOW.BAS Graphic simulation of a rainbow Feb 91 199
038 SPIRAL.BAS Modeling spiral galaxies Dec 90 654
039 MARS.BAS Physical ephemeris of Mars Sep 90 296
040 MARCHE.BAS Astrometric positions of a comet or asteroid Jul 90 071
041 MALLAM.BAS Precession of a satellite's orbit May 90 543
042 ORIGAM.BAS Make a paper model of a comet orbit Apr 90 424
043 MIRROR.BAS Foucault mirror test analysis Feb 90 195
044 HARTLEY.BAS Globe- and grid-drawing program (Macintosh) Jan 90 086
045 JMERID.BAS Jupiter's central meridian for any date/time Dec 89 640
046 LIMMAG.BAS Limiting magnitude of a telescope Nov 89 522
047 GOSS.BAS Light curves of eclipsing binaries Oct 89 410
048 SHOWER.BAS Dates of meteor showers Aug 89 195
049 SINE.BAS Demonstration of chaotic behavior Aug 89 139
050 MOONUP.BAS Compute moonrise-moonset times for any place Jul 89 078
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 3 / 73

051 GALISA.BAS Plot Galilean moons of Jupiter (Apple II) Jun 89 650
052 SPACE.BAS Space motion of a star May 89 531
053 CHART.BAS Find atlas charts for any celestial coordinates Apr 89 420
054 REFR1.BAS Compute atmospheric refraction Mar 89 311
055 TAKI.BAS How to aim an alt-az (Dobsonian) telescope Feb 89 194
056 FRACTS.BAS Represent a decimal as a continued fraction Jan 89 080
057 PERIOD.BAS Period search by Fourier transform Sep 88 288
058 LUNAR.BAS Compute dates of lunar eclipses Jun 88 640
059 SHADOW.BAS Modeling mountain shadows Apr 88 417
060 CIRCLE.BAS Make setting circles and scales on a printer Mar 88 304
061 DIAL.BAS Design a vertical sundial Dec 87 646
062 PERIAP.BAS Compute lunar apogee and perigee Nov 87 527
063 STEREO.BAS Plot stars in stereographic projection Oct 87 407
064 DIFPAT.BAS Compute and display diffraction patterns Sep 87 294
065 BINARY.BAS Orbital ephemeris of a binary star Jul 87 071
066 CLOCK.BAS Add Moon to a real-time clock (Apple II) May 87 535
067 ORBITS.BAS Positions in near-parabolic orbits May 87 535
068 EXTINC.BAS Compute extinction of starlight Apr 87 426
069 PATH.BAS Interpolate comet positions Feb 87 196
070 METEOR.BAS Compute flight of meteors Jan 87 083
071 OBSCUR.BAS Obscuration at a solar eclipse Nov 86 515
072 SURF.BAS Surface brightness of an extended object Oct 86 392
073 SPHE.BAS Measure radius of curvature with a spherometer Sep 86 278
074 REACT.BAS Test your personal reaction time Aug 86 174
075 ALTAZ2.BAS How to correct altitudes for refraction Jul 86 070
076 MODEL.BAS Create model of star cluster Apr 86 398
077 EASTER.BAS Compute date of Easter Mar 86 294
078 TRACK.BAS Astrophoto tracking tolerances Feb 86 190
079 COMET.BAS Compute the ephemeris of a comet Dec 85 590
080 XYZ.BAS X,Y,Z coordinates of the Sun Nov 85 470
081 SAROS.BAS Saros numbers for solar eclipses Oct 85 366
082 HELIAC.BAS Heliacal rise and set times Sep 85 261
083 KEPLER.BAS Solve Kepler's equation (celestial mechanics) Aug 85 158
084 CALENDAR.BAS Perpetual calendar (Gregorian) Jul 85 062
085 SHUTTR.BAS Shutter speeds for astrophotography Jun 85 158
086 WAVEL.BAS Positions of absorption lines in a spectrum Jun 85 544
087 STEPPR.BAS Controlling a stepper motor Apr 85 350
088 MOONS.BAS Dates and times of new and full Moon Mar 85 254
089 PHOTOM.BAS Reducing photometric observations Feb 85 158
090 LHEIGHT.BAS Compute heights of lunar features Jan 85 062
091 GLOB1.BAS Distribution of globular clusters (Apple II) Dec 84 555
092 GLOB2.BAS Distribution of globular clusters (Apple II) Dec 84 555
093 LENS.BAS Calculate curves for an aplanatic lens Nov 84 450
094 GWMONTH.BAS Convert month number to name Oct 84 347
095 SUNSHINE.BAS Hours of sunshine for a specific latitude Sep 84 254
096 ANGSEP.BAS Angular separation of two celestial objects Aug 84 159
097 STAY.BAS Comet's time spent inside Earth's orbit Jul 84 062
098 ALTAZ.BAS Star altitude and azimuth at a given time Jun 84 558
099 GMST.BAS Sidereal time for Greenwich meridian Jun 84 558
100 CALJD.BAS Convert calendar date to Julian day May 84 454
101 JDCAL.BAS Convert Julian day to calendar date May 84 454
102 ADDMAG.BAS Combined magnitude of two or more stars Apr 84 359
103 INTERP.BAS Lagrange interpolation (multiple data points) Apr 84 359
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 4 / 73

Listado de programas en orden ascendente por nombre.

Nº File Name Brief Description Issue page


102 ADDMAG.BAS Combined magnitude of two or more stars Apr 84 359
018 AGEUNIV.BAS Age of the universe since the Big Bang Jan 96 092
098 ALTAZ.BAS Star altitude and azimuth at a given time Jun 84 558
075 ALTAZ2.BAS How to correct altitudes for refraction Jul 86 070
096 ANGSEP.BAS Angular separation of two celestial objects Aug 84 159
027 ASTEROID.BAS The size of an asteroid from its brightness Jun 93 083
065 BINARY.BAS Orbital ephemeris of a binary star Jul 87 071
013 BLKHOLE1.BAS Determine the mass of a black hole May 96 092
014 BLKHOLE2.BAS Calculate black-hole tidal forces May 96 092
015 BLKHOLE3.BAS Generate a black-hole "accelergram" May 96 092
084 CALENDAR.BAS Perpetual calendar (Gregorian) Jul 85 062
100 CALJD.BAS Convert calendar date to Julian day May 84 454
025 CAPTURE.BAS Best film/camera combos for capturing meteors Feb 94 085
008 CCDLIMI2.BAS Limiting magnitude of a CCD camera May 98 117
028 CCDLIMIT.BAS Compute the signal-to-noise ratio of a CCD Feb 93 084
020 CHANCE.BAS Odds of witnessing certain astronomical events Jun 95 086
053 CHART.BAS Find atlas charts for any celestial coordinates Apr 89 420
060 CIRCLE.BAS Make setting circles and scales on a printer Mar 88 304
066 CLOCK.BAS Add Moon to a real-time clock (Apple II) May 87 535
079 COMET.BAS Compute the ephemeris of a comet Dec 85 590
012 CRATER.BAS Find the dimensions of an impact crater Nov 96 090
002 DAYSOLD.BAS Determine date after input number of days after birthday Nov 01 063
061 DIAL.BAS Design a vertical sundial Dec 87 646
064 DIFPAT.BAS Compute and display diffraction patterns Sep 87 294
077 EASTER.BAS Compute date of Easter Mar 86 294
068 EXTINC.BAS Compute extinction of starlight Apr 87 426
016 FACECIRC.BAS Print setting-circle disks on a LaserJet Mar 96 084
035 FIREBALL.BAS Calculate descent of a fireball Jun 91 640
056 FRACTS.BAS Represent a decimal as a continued fraction Jan 89 080
051 GALISA.BAS Plot Galilean moons of Jupiter (Apple II) Jun 89 650
031 GFLASH.BAS Simulate the appearance of the "green flash" Feb 92 200
091 GLOB1.BAS Distribution of globular clusters (Apple II) Dec 84 555
092 GLOB2.BAS Distribution of globular clusters (Apple II) Dec 84 555
099 GMST.BAS Sidereal time for Greenwich meridian Jun 84 558
047 GOSS.BAS Light curves of eclipsing binaries Oct 89 410
094 GWMONTH.BAS Convert month number to name Oct 84 347
044 HARTLEY.BAS Globe- and grid-drawing program (Macintosh) Jan 90 086
082 HELIAC.BAS Heliacal rise and set times Sep 85 261
103 INTERP.BAS Lagrange interpolation (multiple data points) Apr 84 359
022 JACK.BAS Demo of perturbed planetary motion Sep 94 078
101 JDCAL.BAS Convert Julian day to calendar date May 84 454
045 JMERID.BAS Jupiter's central meridian for any date/time Dec 89 640
083 KEPLER.BAS Solve Kepler's equation (celestial mechanics) Aug 85 158
093 LENS.BAS Calculate curves for an aplanatic lens Nov 84 450
090 LHEIGHT.BAS Compute heights of lunar features Jan 85 062
046 LIMMAG.BAS Limiting magnitude of a telescope Nov 89 522
033 LIST.BAS Make index lists of objects on star atlases Aug 91 182
009 LOOKBACK.BAS Age and distance of a galaxy of known redshift Sep 97 059
003 LOOKBAK2.BAS Cosmological quantities of an accelerating universe Aug 01 062
058 LUNAR.BAS Compute dates of lunar eclipses Jun 88 640
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 5 / 73

041 MALLAM.BAS Precession of a satellite's orbit May 90 543


040 MARCHE.BAS Astrometric positions of a comet or asteroid Jul 90 071
039 MARS.BAS Physical ephemeris of Mars Sep 90 296
070 METEOR.BAS Compute flight of meteors Jan 87 083
043 MIRROR.BAS Foucault mirror test analysis Feb 90 195
076 MODEL.BAS Create model of star cluster Apr 86 398
024 MOONFX.BAS Moon phase and distance on any given date Apr 94 086
088 MOONS.BAS Dates and times of new and full Moon Mar 85 254
050 MOONUP.BAS Compute moonrise-moonset times for any place Jul 89 078
005 MSACHART.BAS Millennium Star Atlas chart number Oct 98 063
071 OBSCUR.BAS Obscuration at a solar eclipse Nov 86 515
029 OCCVIS.BAS Compute the visibility of a star near the Moon Jan 93 089
067 ORBITS.BAS Positions in near-parabolic orbits May 87 535
042 ORIGAM.BAS Make a paper model of a comet orbit Apr 90 424
069 PATH.BAS Interpolate comet positions Feb 87 196
062 PERIAP.BAS Compute lunar apogee and perigee Nov 87 527
057 PERIOD.BAS Period search by Fourier transform Sep 88 288
089 PHOTOM.BAS Reducing photometric observations Feb 85 158
004 PILLAR.BAS Simulate the appearance of a Sun pillar May 99 071
032 PRECESS.BAS Rigorous precession of a star's coordinates Oct 91 408
019 PULSAR.BAS Relativistic precession in binary orbits Oct 95 086
037 RAINBOW.BAS Graphic simulation of a rainbow Feb 91 199
074 REACT.BAS Test your personal reaction time Aug 86 174
054 REFR1.BAS Compute atmospheric refraction Mar 89 311
001 ROCKET.BAS Travel time for a space trip at relativistic speed Feb 02 066
036 RONCHI.BAS Ronchi test simulation Apr 91 416
030 ROTATE.BAS Field rotation in a misaligned telescope Sep 92 318
081 SAROS.BAS Saros numbers for solar eclipses Oct 85 366
021 SATRINGS.BAS Saturn ring-plane crossings May 95 092
017 SCALES.BAS Print setting-circle strips on a LaserJet Mar 96 084
059 SHADOW.BAS Modeling mountain shadows Apr 88 417
048 SHOWER.BAS Dates of meteor showers Aug 89 195
085 SHUTTR.BAS Shutter speeds for astrophotography Jun 85 158
049 SINE.BAS Demonstration of chaotic behavior Aug 89 139
034 SOLARECL.BAS Predictions of July 11, 1991, solar eclipse Jul 91 071
010 SOLAROSC.BAS Visualize global solar oscillation modes Jun 97 092
052 SPACE.BAS Space motion of a star May 89 531
073 SPHE.BAS Measure radius of curvature with a spherometer Sep 86 278
038 SPIRAL.BAS Modeling spiral galaxies Dec 90 654
097 STAY.BAS Comet's time spent inside Earth's orbit Jul 84 062
087 STEPPR.BAS Controlling a stepper motor Apr 85 350
063 STEREO.BAS Plot stars in stereographic projection Oct 87 407
011 SUNDOG.BAS Simulate the appearance of sundogs Jan 97 103
095 SUNSHINE.BAS Hours of sunshine for a specific latitude Sep 84 254
026 SUNTAN.BAS Effects of ozone, haze, on suntanning time Jul 93 083
023 SUNUP.BAS Times of sunrise/set at any place on Earth Aug 94 084
006 SUPERNUM.BAS Emergence angles of supernumerary rainbows Sep 98 070
072 SURF.BAS Surface brightness of an extended object Oct 86 392
055 TAKI.BAS How to aim an alt-az (Dobsonian) telescope Feb 89 194
078 TRACK.BAS Astrophoto tracking tolerances Feb 86 190
007 VISLIMIT.BAS Visual limiting magnitude from any site May 98 057
086 WAVEL.BAS Positions of absorption lines in a spectrum Jun 85 544
080 XYZ.BAS X,Y,Z coordinates of the Sun Nov 85 470
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 6 / 73

240 PRINT " Hubble constant Omega zero


ADDMAG.BAS ; 102; Omega lambda"
Combined magnitude of two or more stars 250 LOCATE 23,17: PRINT USING " ###
(km/s)/Mpc ";H0;
260 PRINT USING " ##.####
10 REM ADDING MAGNITUDES ###.##########";OZ;OL;
15 REM 270 LINE (0,5)-(639,260),7,B: TL=-5#:
20 B=100^.2: N=2: C=LOG(10) TR=5#
25 INPUT "1ST STAR MAG";M1 280 LOCATE 1,29: COLOR 15: PRINT " Scale
30 INPUT "2ND STAR MAG";M2 Factor vs. Time "
35 M = B^-M1 + B^-M2 290 FOR I=1 TO 4: TN=0#: RN=1#: DN=1#
40 M = -2.5*LOG(M)/C 300 COLOR 12: IF I=4 THEN COLOR 9
45 PRINT "TOTAL MAG: ";M 310 HN=.0025#: IF I=1 OR I=3 THEN HN=-HN
50 M1=M: N=N+1: PRINT 320 T=TN: R=RN: D=DN: DP=DN: TP=TN
55 INPUT "ANOTHER STAR";M$ 330 F=OL*R-OZ/(2#*R*R): K1=HN*F: L1=HN*D
60 IF M$="X" THEN 75 340 T=TN+HN/2#: R=RN+L1/2#: D=DN+K1/2#
70 M2=VAL(M$): GOTO 35 350 F=OL*R-OZ/(2#*R*R): K2=HN*F: L2=HN*D
75 PRINT "STAR COUNT: ";N-1 360 T=TN+HN/2#: R=RN+L2/2#: D=DN+K2/2#
80 END 370 F=OL*R-OZ/(2#*R*R): K3=HN*F: L3=HN*D
81 REM ------------------------ 380 T=TN+HN: R=RN+L3: D=DN+K3
82 REM APPEARED IN ASTRONOMICAL 390 F=OL*R-OZ/(2#*R*R): K4=HN*F: L4=HN*D
83 REM COMPUTING, SKY & TELE- 400 TN=TN+HN: RP=RN: DP=DN
84 REM SCOPE, APRIL, 1984 410 RN=RN+(L1+2#*L2+2#*L3+L4)/6#
85 REM ------------------------ 420 DN=DN+(K1+2#*K2+2#*K3+K4)/6#
430 IF RN<0# OR RN>3# OR TN<TL OR TN>TR
THEN GOTO 460
440 IF I>2 THEN PSET (640*(TN-TL)/(TR-
TL),260-RN*85)
AGEUNIV.BAS ; 018; 450 GOTO 320
Age of the universe since the Big Bang 460 IF I=1 THEN TL=TN
470 IF I=2 THEN TR=TN*1.1#
480 IF I=2 THEN XP=640/(1-TR/TL): CIRCLE
10 ' AGE OF THE UNIVERSE (XP,175),3,14
20 ' 490 IF I=2 THEN LINE (XP,260)-(XP,250),15
30 DEFDBL A-H,J-Z: DEFINT I: SCREEN 9: 500 IF I=3 THEN LOCATE 19,XP/16: COLOR
KEY OFF 12: PRINT "PAST";
40 LOCATE 15,1: PRINT "Hubble constant 510 IF I=3 AND RN<0# THEN LOCATE 20,1:
[ 25 to 150 (km/s)/Mpc ] "; COLOR 7: PRINT "0";
50 INPUT H0: IF H0<25# OR H0>150# THEN 520 A=XP/8-2: IF ABS(A-32)>30 THEN
CLS: GOTO 40 A=32+30*SGN(A-32)
60 HT=(3.085678D+19)/(H0*31557600#) 530 T=TN-HN-RP/DP: IF OZ>0# THEN T=T+RP/
70 LOCATE 17,1: PRINT "Omega zero [ 0 to (3#*DP)
5 ]"; 540 LOCATE 20,A: COLOR 14: AG=ABS(T*HT/10
80 PRINT SPC(40);: LOCATE 17,23 ^ 9)
90 INPUT OZ: PRINT: IF OZ<0# OR OZ>5# 550 IF I=3 AND RN<0# THEN PRINT USING
THEN GOTO 70 "###.# billion years"; AG;
100 IF OZ=0# THEN OS=1#: GOTO 180 560 IF I=4 THEN LOCATE 19,37+XP/16: COLOR
110 IF OZ=1# THEN OS=1.5#*SQR(3#): GOTO 9: PRINT "FUTURE";
180 570 NEXT I
120 IF OZ<=.5# THEN GM=(1#-OZ+SQR(1#- 580 LOCATE 22,1: END
2#*OZ))/OZ 900 REM *******************************
130 IF OZ<=.5# THEN X=.5#*(GM^(1#/3#) 910 REM THIS PROGRAM COMPUTES THE AGE OF
+GM^(-1#/3#)) THE UNIVERSE
140 IF OZ>.5# THEN AL=ATN(SQR(2#*OZ-1#)/ 920 REM FOR DIFFERENT VALUES OF THE
(1#-OZ)) HUBBLE PARAMETER,
150 IF AL<0# THEN AL=AL+4#*ATN(1#) 930 REM DENSITY PARAMETER, AND
160 IF OZ>.5# THEN X=COS(AL/3#) COSMOLOGICAL CONSTANT.
170 OS=4#*OZ*X*X*X 940 REM FROM SKY & TELESCOPE, JANUARY
180 PRINT USING "Omega lambda < 1996, PAGE 92.
#.########## gives Big Bang"; OS 950 REM *******************************
190 PRINT USING "Omega lambda >
#.########## gives no Big Bang"; OS
200 LOCATE 22,1: PRINT "Omega lambda [
-10 to 10 ]";
210 PRINT SPC(40);: LOCATE 22,28: INPUT ALTAZ.BAS ; 098;
OL Star altitude and azimuth at a given time
220 IF OL<-10# OR OL>10# THEN GOTO 200
230 CLS: LOCATE 22,17
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 7 / 73

10 REM ALTITUDE AND AZIMUTH 48 C2=COS(B)*SIN(D)


12 REM 50 C2=C2-SIN(B)*COS(D)*COS(T5)
14 P=3.14159265: R1=P/180 52 S2=-COS(D)*SIN(T5)
16 INPUT "R A (H,M,S) ";A$,A2,A3 54 IF C2=0 THEN A=SGN(S2)*P/2
18 GOSUB 72: R=A*15*R1 56 IF C2=0 THEN 62
20 INPUT "DEC (D,M,S) ";A$,A2,A3 58 A=ATN(S2/C2)
22 GOSUB 72: D=A*R1 60 IF C2<0 THEN A=A+P
24 INPUT "LAT, LONG ";B,L 62 IF A<0 THEN A=A+2*P
26 B=B*R1: L=L*R1 64 PRINT
28 INPUT "GST (H,M,S) ";A$,A2,A3 65 GOSUB 200
30 GOSUB 72: T=A*15*R1 66 PRINT "ALTITUDE: ";H/R1
32 T5=T-R+L: REM LHA 68 PRINT "AZIMUTH: ";A/R1
34 S1=SIN(B)*SIN(D) 70 END
36 S1=S1+COS(B)*COS(D)*COS(T5) 72 REM SEXAGESIMAL TO DECIMAL
38 C1=1-S1*S1 74 REM
40 IF C1>0 THEN C1=SQR(C1) 76 S=1: A1=ABS(VAL(A$))
42 IF C1<=0 THEN 46 78 IF LEFT$(A$,1)="-" THEN S=-1
44 H=ATN(S1/C1): GOTO 48 80 A=S*(A1+A2/60+A3/3600)
46 H=SGN(S1)*P/2 82 RETURN
48 C2=COS(B)*SIN(D) 200 REM TRUE ALT TO APP ALT
50 C2=C2-SIN(B)*COS(D)*COS(T5) 210 REM
52 S2=-COS(D)*SIN(T5) 220 H5=H/R1
54 IF C2=0 THEN A=SGN(S2)*P/2 230 V5=(H5+10.3/(H5+5.11))*R1
56 IF C2=0 THEN 62 240 R5=1.02*COS(V5)/SIN(V5)
58 A=ATN(S2/C2) 250 H=H+R5*R1/60
60 IF C2<0 THEN A=A+P 260 RETURN
62 IF A<0 THEN A=A+2*P 284 REM ------------------------
64 PRINT 286 REM APPEARED IN ASTRONOMICAL
66 PRINT "ALTITUDE: ";H/R1 288 REM COMPUTING, SKY & TELE-
68 PRINT "AZIMUTH: ";A/R1 290 REM SCOPE, JUNE, 1984,
70 END 292 REM AND MODIFIED IN THE JULY,
72 REM SEXAGESIMAL TO DECIMAL 294 REM 1986, ISSUE TO CONVERT
74 REM 296 REM FROM TRUE TO APPARENT
76 S=1: A1=ABS(VAL(A$)) 298 REM ALTITUDE
78 IF LEFT$(A$,1)="-" THEN S=-1 300 REM ------------------------
80 A=S*(A1+A2/60+A3/3600)
82 RETURN
84 REM ------------------------
86 REM APPEARED IN ASTRONOMICAL
88 REM COMPUTING, SKY & TELE- ANGSEP.BAS ; 096;
90 REM SCOPE, JUNE, 1984 Angular separation of two celestial objects
92 REM ------------------------

10 REM ANGULAR SEPARATION


12 REM
14 P=3.14159265: C=P/180
ALTAZ2.BAS ; 075; 16 PRINT "FIRST STAR --"
How to correct altitudes for refraction 18 INPUT "R A (H,M,S) ";A$,A2,A3
20 GOSUB 60 : R1=A*15*C
22 INPUT "DEC (D,M,S) ";A$,A2,A3
10 REM ALTITUDE AND AZIMUTH 24 GOSUB 60 : D1=A*C
12 REM 26 PRINT
14 P=3.14159265: R1=P/180 28 PRINT "SECOND STAR --"
16 INPUT "R A (H,M,S) ";A$,A2,A3 30 INPUT "R A (H,M,S) ";A$,A2,A3
18 GOSUB 72: R=A*15*R1 32 GOSUB 60 : R2=A*15*C
20 INPUT "DEC (D,M,S) ";A$,A2,A3 34 INPUT "DEC (D,M,S) ";A$,A2,A3
22 GOSUB 72: D=A*R1 36 GOSUB 60 : D2=A*C
24 INPUT "LAT, LONG ";B,L 38 REM
26 B=B*R1: L=L*R1 40 D=SIN((D1-D2)/2): H1=D*D
28 INPUT "GST (H,M,S) ";A$,A2,A3 42 A=SIN((R1-R2)/2): H2=A*A
30 GOSUB 72: T=A*15*R1 44 H3=H1+COS(D1)*COS(D2)*H2
32 T5=T-R+L: REM LHA 46 S1=SQR(H3): C1=SQR(1-S1*S1)
34 S1=SIN(B)*SIN(D) 48 S=2*ATN(S1/C1)/C
36 S1=S1+COS(B)*COS(D)*COS(T5) 50 PRINT
38 C1=1-S1*S1 52 PRINT "SEPARATION --"
40 IF C1>0 THEN C1=SQR(C1) 54 PRINT "IN DEGREES: ";S
42 IF C1<=0 THEN 46 56 PRINT "IN ARC SEC: ";S*3600
44 H=ATN(S1/C1): GOTO 48 58 END
46 H=SGN(S1)*P/2 60 REM SEXAGESIMAL TO DECIMAL
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 8 / 73

62 REM
64 F=1: A1=ABS(VAL(A$)) BINARY.BAS ; 065;
66 IF LEFT$(A$,1)="-" THEN F=-1 Orbital ephemeris of a binary star
68 A=F*(A1+A2/60+A3/3600)
70 RETURN
80 REM ------------------------ 10 REM BINARY STAR ORBIT
85 REM APPEARED IN ASTRONOMICAL 12 REM
90 REM COMPUTING, SKY & TELE- 14 P1=4*ATN(1): R1=180/P1
95 REM SCOPE, AUGUST, 1984 16 C=2*P1: A1=0.0000005
99 REM ------------------------ 18 REM
20 INPUT "SEMIMAJOR AXIS";A
22 INPUT "ECCENTRICITY ";E0
24 IF INT(E0)=0 THEN 30
26 PRINT "NOT VALID; REENTER"
ASTEROID.BAS ; 027; 28 GOTO 22
The size of an asteroid from its brightness 30 INPUT "EPOCH OF PERIASTRON";T
32 INPUT "PERIOD IN YEARS ";P
34 INPUT "INCLINATION ";I
10 ' The Size of an Asteroid 36 INPUT "ARG OF PERIASTRON ";W
20 ' 38 INPUT "P.A. OF ASC NODE ";L
30 RD=180/3.14159: ' Radians to degrees 40 I=I/R1: W=W/R1: L=L/R1
40 INPUT "Apparent visual magnitude, V";V 42 REM
50 INPUT "Distance from Sun (au) ";R0 44 INPUT "DATE OF OBS (YR) ";D
60 INPUT "Distance from Earth (au) ";D0 46 T1=D-T: M=C*T1/P
70 INPUT "Earth-Sun distance (au) ";R 48 E=M+E0*SIN(M)+E0*E0*SIN(2*M)/2
80 PRINT "Asteroid type --" 50 N=E-E0*SIN(E): G=M-N
90 INPUT " C, S, or O(ther)";T$ 52 F=G/(1-E0*COS(E)): E=E+F
100 IF T$="c" OR T$="C" THEN P=.037 54 IF ABS(G)>A1 THEN 50
110 IF T$="s" OR T$="S" THEN P=.14 56 U=(1+E0)/(1-E0): H=COS(E/2)
120 IF T$="o" OR T$="O" THEN INPUT "What 58 IF H=0 THEN V=P1: GOTO 62
is the albedo";P 60 V=2*ATN(SQR(U)*SIN(E/2)/H)
130 IF P>1 OR P<=0 THEN 120 62 K=V+W: Y=SIN(K)*COS(I)
140 PRINT "Now enter the photometric 64 X=COS(K): Q=ATN(Y/X)
slope" 66 IF X<0 THEN Q=Q+P1
142 PRINT "parameter (G), or if unknown" 68 IF X<0 THEN 72
143 INPUT "enter 0.15. Value of G ";G 70 IF Y<0 THEN Q=Q+C
150 PRINT 72 P2=Q+L: IF P2>C THEN P2=P2-C
160 CI=(R0^2+D0^2-R^2)/(2*R0*D0) 74 R=A-A*E0*COS(E)
170 F=ATN(SQR(1-CI*CI)/CI) 76 S=R*X/COS(Q)
180 IF CI<0 THEN F=F+3.14159 78 P3=INT(P2*R1*10+0.5)/10
190 ' F = solar phase angle in radians 80 S3=INT(S*100+0.5)/100
200 PRINT USING "Solar phase angle, phi: 82 PRINT "P.A. ";P3;" DEG"
###.#";F*RD 84 PRINT "SEP. ";S3;" ARC SEC"
210 P1=EXP(-3.33*(TAN(F/2))^.63) 86 PRINT
220 P2=EXP(-1.87*(TAN(F/2))^1.22) 88 INPUT "ANOTHER (Y OR N)";Q$
230 H=V-5*LOG(D0*R0)/LOG(10)+2.5*LOG((1- 90 IF Q$<>"N" THEN 44
G)*P1+G*P2)/LOG(10) 92 REM ====================
240 PRINT USING "Absolute mag (H): 94 REM FROM "ASTRONOMICAL
###.#";H 96 REM COMPUTING," SKY & TELE-
250 LD=3.12-.2*H-.5*LOG(P)/LOG(10) 98 REM SCOPE, JULY, 1987
260 D=10^LD 100 REM ====================
270 PRINT USING "Diameter (km): 102 END
####.#";D
280 END
290 '
300 ' Basil Rowe's program calculates the
size of an asteroid from BLKHOLE1.BAS ; 013;
310 ' its apparent brightness and an Determine the mass of a black hole
assumption about its reflectivity
320 ' (albedo). The calculation is
explained on page 83 of the 10 REM Compute Mass of Black Hole
330 ' June 1993 issue of Sky & Telescope. 20 REM Print Data for M vs C vs P Plot
Carbonaceous asteroids 30 REM C0 = orbital circumference, km
340 ' have albedos of about 0.04, while 40 REM P0 = orbital period, seconds
S-type (stony) asteroids 50 REM G = gravitational constant
350 ' reflect about 0.14 of the light. 60 G=1.327E11
70 P=3.14159
80 OPEN "OUTPUT.TXT" FOR OUTPUT AS #1
90 FOR C0=1E5 TO 1E7 STEP 2E5
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 9 / 73

100 PRINT#1, "C0 is: "; C0 150 D=SQR((X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-


110 FOR P0=10 TO 1000 STEP 10 Y1))
120 M=C0*C0*C0/(2*P*G*P0*P0) 160 REM Don't plot vectors too small to
130 PRINT#1, P0, M see
140 NEXT P0 170 REM Print end-points for plot package
150 NEXT C0 180 IF D<.001 THEN GOTO 200
160 CLOSE#1 190 PRINT#1, USING A$;X1;Y1;X2;Y2
170 REM ====================== 200 NEXT I
180 REM FROM "ASTRONOMICAL 210 CLOSE#1
190 REM COMPUTING," SKY & TELE- 220 REM ======================
200 REM SCOPE, MAY 1996 230 REM FROM "ASTRONOMICAL
210 REM ====================== 240 REM COMPUTING," SKY & TELE-
220 END 250 REM SCOPE, MAY 1996
260 REM ======================
270 END

BLKHOLE2.BAS ; 014;
Calculate black-hole tidal forces
CALENDAR.BAS ; 084;
Perpetual calendar (Gregorian)
10 REM Compute Black-Hole Tidal Force
Upon Body
20 REM G = Grav. constant 10 REM PERPETUAL GREGORIAN CALENDAR
30 REM M = Mass, solar masses 12 REM
40 REM L = separation, km 14 DIM C$(42), D$(31), E(12)
50 REM C = circumference, km 16 FOR I=1 TO 31: READ D$(I): NEXT I
60 REM A = difference in acceleration, 18 FOR I=1 TO 12: READ E(I): NEXT I
km/sec**2 20 DATA " 1"," 2"," 3"," 4"," 5","
70 C=100000 6"," 7"," 8"," 9"," 10"
80 G=1.327E11 22 DATA " 11"," 12"," 13"," 14"," 15","
90 P=3.14159 16"," 17"," 18"," 19"," 20"
100 M=303 24 DATA " 21"," 22"," 23"," 24"," 25","
110 FOR L=.002 TO .004 STEP .001 26"," 27"," 28"," 29"," 30"," 31"
120 A=16*P*P*P*G*M*L/(C*C*C) 26 DATA 31, 28, 31, 30, 31, 30, 31, 31,
130 REM Convert to meters and g units 30, 31, 30, 31
140 L1=L*1000: A=(A*1000)/9.81 28 PRINT: INPUT "MONTH, YEAR";M,Y: IF
150 PRINT USING "Length: ###.# meters, Y<100 THEN Y=Y+1900
Tidal Force: ###.# g";L1;A 30 PRINT: PRINT " SU MO TU WE TH FR SA":
160 NEXT L PRINT
170 REM ====================== 32 J=367*Y-
180 REM FROM "ASTRONOMICAL INT(7*(Y+INT((M+9)/12))/4)+INT(275*M/9
190 REM COMPUTING," SKY & TELE- )+1721031
200 REM SCOPE, MAY 1996 34 K=0: IF M<=2 THEN K=-1
210 REM ====================== 36 J=J-INT(3*(INT((Y+K)/100)+1)/4)
220 END 38 K=E(M): IF M<>2 THEN 48
40 W=INT(Y-100*INT(Y/100)): X=INT(Y-
4*INT(Y/4)): Z=INT(Y-400*INT(Y/400))
42 IF X<>0 THEN 48
44 IF W=0 AND Z<>0 THEN 48
BLKHOLE3.BAS ; 015; 46 K=29
Generate a black-hole "accelergram" 48 X=J-7*INT(J/7)
50 FOR I=1 TO 42: C$(I)=" ": NEXT I
52 FOR I=1 TO K: C$(I+X)=D$(I): NEXT I
10 REM Compute Black-Hole Accelergram 54 FOR I=1 TO 6: J=7*I
20 P = 3.14159 56 PRINT C$(J-6);C$(J-5);C$(J-4);C$(J-
30 A$="##.### ##.### ##.### ##.###" 3);C$(J-2);C$(J-1);C$(J)
40 OPEN "OUTPUT.TXT" FOR OUTPUT AS #1 58 NEXT I
50 FOR I=0 TO 1000 60 PRINT: INPUT "ANOTHER";A$: IF A$="Y"
60 REM Generate random circumference THEN 28
70 C=2!*P*RND 62 END
80 REM Generate random angle 63 REM -------------------------
90 T=2!*P*RND: R=C/(2!*P) 64 REM APPEARED IN ASTRONOMICAL
100 X1=R*COS(T): Y1=R*SIN(T) COMPUTING, SKY & TELESCOPE, JULY, 1985
110 REM Determine vector length 65 REM -------------------------
120 R=R-.001/(C*C*C)
130 IF R<0 THEN R=0
140 X2=R*COS(T): Y2=R*SIN(T)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 10 / 73

CALJD.BAS ; 100; 320 E=K*AP^2*S/((1+X)*FL^N)


Convert calendar date to Julian day 330 PRINT USING "Efficiency ####.#";E
340 PRINT
350 INPUT "Another (y or n)";Q$
800 REM CALENDAR --> JD 360 IF Q$<>"n" THEN GOTO 40
805 REM 370 END
810 INPUT "Y,M,D ";Y,M,D 380 '
815 INPUT "JC (0) OR GC (1) ";G 390 ' Written by Roger W. Sinnott, this
820 D1=INT(D): F=D-D1-0.5 program calculates the relative
825 J=-INT(7*(INT((M+9)/12)+Y)/4) 400 ' efficiency of any given camera lens
830 IF G=0 THEN 850 and film format for capturing
835 S=SGN(M-9): A=ABS(M-9) 410 ' meteors. The efficiency is
840 J1=INT(Y+S*INT(A/7)) expressed as a number that ranges from
845 J1=-INT((INT(J1/100)+1)*3/4) 420 ' less than 10 for poor combinations
850 J=J+INT(275*M/9)+D1+G*J1 (such as a 35-mm camera with a
855 J=J+1721027+2*G+367*Y 430 ' long telephoto lens) to more than
860 IF F>=0 THEN 870 1,000 for highly specialized systems
865 F=F+1: J=J-1 440 ' such as the Baker Super-Schmidt.
870 PRINT "J.D.: ";J;F The program was described in
875 END 450 ' Sky & Telescope for February 1994,
880 REM ------------------------ page 85.
885 REM APPEARED IN ASTRONOMICAL
890 REM COMPUTING, SKY & TELE-
895 REM SCOPE, MAY, 1984
900 REM ------------------------
CCDLIMI2.BAS ; 008;
Limiting magnitude of a CCD camera

CAPTURE.BAS ; 025; 10 ' CCDLIMIT.BAS CCD Limits


Best film/camera combos for capturing meteors 20 ' by Bradley E. Schaefer
30 FOR I=1 TO 5 : READ WA(I) : NEXT I
40 DATA 0.365, 0.44, 0.55, 0.7, 0.9
10 'A Camera's Efficiency for Meteors 50 FOR I=1 TO 5 : READ Q(I) : NEXT I
20 ' 60 DATA 15.0, 25.0, 40.0, 56.0, 26.0
30 RD=180/3.14159 70 FOR I=1 TO 5 : READ MO(I) : NEXT I
35 C=4*RD^2 80 DATA -10.93, -10.45, -11.05, -11.90,
40 L=0: W=0: Q=0 -12.70
50 K=0.003667: ' Constant 90 ' Input for position
60 N=1: ' Exponent for focal length 100 RD=3.14159/180.0
70 X=0: ' Closed/open ratio 110 INPUT "Zenith distance (deg.) : ";Z
80 INPUT "F/ratio ";FR 120 AM=180.0 : REM Moon phase (deg.;
90 INPUT "Focal length (mm)"; FL 0=FM, 90=FQ/LQ, 180=NM)
100 AP=FL/FR: ' Aperture in mm 130 ZM=180.0 : REM Zenith distance of
110 PRINT "Select film/image format:" Moon (deg.)
120 PRINT " (1) 35-mm" 140 RM=180.0 : REM Angular distance to
130 PRINT " (2) 120 square" Moon (deg.)
140 PRINT " (3) 4 x 5" 150 ZS=180.0 : REM Zenith distance of Sun
150 PRINT " (4) 8 x 10" (deg.)
160 PRINT " (5) Special area" 160 RS=180.0 : REM Angular distance to
170 PRINT " (6) Fisheye (180 deg)" Sun (deg.)
180 INPUT "Selection";Q 170 ' Input for the Site and Date
190 IF Q<1 OR Q>6 THEN GOTO 180 180 TS=1.0 : REM FWHM of seeing in V at
200 ON Q GOTO 210,220,230,240,250,260 zenith
210 L=36: W=24: GOTO 270 190 RH=40.0 : REM relative humidity (%)
220 L=55: W=55: GOTO 270 200 TE=15.0 : REM Air temperature (deg.
230 L=119: W=94: GOTO 270 C)
240 L=240: W=190: GOTO 270 210 LA=30.0 : REM Latitude (deg.)
250 INPUT "Sky area (sq deg)";S 220 AL=1000.0 : REM Altitude above sea
255 GOTO 310 level (m)
260 S=20626: GOTO 290 230 M=2.0 : REM Month (1=Jan, 12=Dec)
265 ' 240 Y=1998.0 : REM Year
266 ' Compute sky area covered 250 ' Input for the telescope and
267 ' by a rectangular film frame detector
270 S=C*ATN(0.5*L/FL)*ATN(0.5*W/FL) 260 D=20.32 : REM Telescope aperture
280 IF S>50 THEN S=INT(S+0.5) (cm)
290 PRINT "Sky area (sq deg): ";S 270 TP=.91 : REM Pixel size (")
300 ' 280 DS=4.0 : REM Diameter of secondary
310 ' Now, evaluate McKinley formula (cm)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 11 / 73

290 NM=2 : REM Number of mirrors (-) 1160 KA=.1*((WA(I)/.55)^-1.3)*EXP(-


300 NL=2 : REM Number of lens/glass in 1*AL/1500)
path (-) 1170
310 RN=15.0 : REM Read noise of CCD KA=KA*((1-.32/LOG(RH/100.0))^1.33)*(1+
(electrons) SL*SIN(RA))
320 INPUT "Enter V-band magnitude of 1180 KO=OZ(I)*(3.0+.4*(LT*COS(RA)-
star: ";MV COS(3*LT)))/3.0
330 CI=.7 : REM Color index [B-V] for 1190
star (mag) KW=WT(I)*.94*(RH/100.0)*EXP(TE/15)*EXP
340 INPUT "Exposure time (seconds): ";E (-1*AL/8200)
350 NR=1 : REM Number of CCD readouts 1200 K(I)=KR+KA+KO+KW
(-) 1210 DM(I)=KR*XG+KA*XA+KO*XO+KW*XG
360 TA=1.0 : REM Radius of photometry 1220 NEXT I
aperture (") [best : TA=~TS] 1230 ' Write results and return
370 GOSUB 1000 : REM Extinction 1240 PRINT : PRINT "Airmass (gas,
subroutine aerosol, ozone): ";
380 GOSUB 2000 : REM Sky subroutine 1250 PRINT USING "####.## "; XG, XA, XO
390 REM Calculate counts from star and 1260 PRINT "Extinction Coefficients
sky (UBVRI): ";
400 MA(1)=MV+2.35*CI-.6 : REM U 1270 PRINT USING "####.## "; K(1), K(2),
410 MA(2)=MV+CI : REM B K(3), K(4), K(5)
420 MA(3)=MV : REM V 1280 PRINT "Total Extinction (UBVRI):
430 MA(4)=MV-.75*CI : REM R ";
440 MA(5)=MV-1.6*CI : REM I 1290 PRINT USING "####.## "; DM(1),
450 GOSUB 3000 : REM CT subroutine DM(2), DM(3), DM(4), DM(5)
460 ' Calculate SNR (see PASP article 1300 RETURN
for exact formula) 2000 ' SKY Subroutine
470 P=3.14159*(TA/TP)^2 2010 FOR I=1 TO 5: READ BO(I): NEXT I
480 IF P<1.0 THEN P=1.0 2020 DATA 8.0E-14, 7.0E-14, 1.0E-13,
490 FOR I=1 TO 5 1.0E-13, 3.0E-13
500 VA=NS(I)+P*NB(I)+P*NR*RN*RN 2030 FOR I=1 TO 5: READ CM(I): NEXT I
510 SN(I)=NS(I)/SQR(VA) 2040 DATA 1.36, 0.91, 0.00, -0.76, -1.17
520 SI(I)=1.086/SN(I) 2050 FOR I=1 TO 5: READ MS(I): NEXT I
530 NEXT I 2060 DATA -25.96, -26.09, -26.74, -27.26,
540 PRINT : PRINT "For star with U, B, V, -27.55
R, I "; 2070 X=1/(COS(ZZ)+.025*EXP(-
550 PRINT USING " #####.##"; MA(1), 11*COS(ZZ))) : REM air mass
MA(2), MA(3), MA(4), MA(5) 2080 XM=1/(COS(ZM*RD)+.025*EXP(-
560 PRINT " their respective SNR are 11*COS(ZM*RD))) : REM air mass Moon
"; 2090 IF ZM>90.0 THEN XM=40.0
570 PRINT USING " #####.##"; SN(1), 2100 XS=1/(COS(ZS*RD)+.025*EXP(-
SN(2), SN(3), SN(4), SN(5) 11*COS(ZS*RD))) : REM air mass Sun
580 PRINT " with 1-sigma errors (mag.) of 2110 IF ZS>90.0 THEN XS=40.0
"; 2120 FOR I=1 TO 5
590 PRINT USING " #####.##"; SI(1), 2130 REM Dark night sky brightness
SI(2), SI(3), SI(4), SI(5) 2140 BN=BO(I)*(1+.3*COS(6.283*(Y-
600 END 1992)/11))
1000 ' Extinction Subroutine 2150
1010 FOR I=1 TO 5: READ OZ(I): NEXT I BN=BN*(.4+.6/SQR(1.0-.96*((SIN(ZZ))^2)
1020 DATA 0.000, 0.000, 0.031, 0.008, ))
0.000 2160 BN=BN*(10^(-.4*K(I)*X))
1030 FOR I=1 TO 5: READ WT(I): NEXT I 2170 ' Moonlight brightness
1040 DATA 0.074, 0.045, 0.031, 0.020, 2180 MM=-12.73+.026*ABS(AM)+4E-
0.015 09*(AM^4) : REM moon mag in V
1050 LT=LA*RD 2190 MM=MM+CM(I) : REM Moon mag
1060 RA=(M-3)*30.0*RD 2200 C3=10.0^(-.4*K(I)*XM)
1070 SL=LA/ABS(LA) 2210 FM=6.2E+07*(RM^-2)+(10^(6.15-RM/40))
1080 REM Airmass for each component 2220 FM=FM+(10^5.36)*(1.06+
1090 ZZ=Z*RD ((COS(RM*RD))^2))
1100 XG=1/(COS(ZZ)+.0286*EXP(- 2230 BM=10^(-.4*(MM-MO(I)+43.27))
10.5*COS(ZZ))) 2240 BM=BM*(1-10^(-.4*K(I)*X))
1110 XA=1/(COS(ZZ)+.0123*EXP(- 2250 BM=BM*(FM*C3+440000.0*(1-C3))
24.5*COS(ZZ))) 2260 ' Twilight brightness
1120 XO=1/SQR(1.0-(SIN(ZZ)/ 2270 HS=90.0-ZS : REM Height of Sun
(1.0+(20.0/6378.0)))^2) 2280 BT=10^(-.4*(MS(I)-MO(I)+32.5-HS-(Z/
1130 REM UBVRI extinction for each (360*K(I)))))
component 2290 BT=BT*(100/RS)*(1.0-10.0^(-.4*K(I)))
1140 FOR I=1 TO 5 2300 REM Daylight brightness
1150 KR=.1066*EXP(- 2310 C4=10.0^(-.4*K(I)*XS)
1*AL/8200)*((WA(I)/.55)^-4) 2320 FS=6.2E+07*(RS^-2)+(10^(6.15-RS/40))
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 12 / 73

2330 FS=FS+(10^5.36)*(1.06+
((COS(RS*RD))^2))
2340 BD=10^(-.4*(MS(I)-MO(I)+43.27)) CCDLIMIT.BAS ; 028;
2350 BD=BD*(1-10^(-.4*K(I)*X)) Compute the signal-to-noise ratio of a CCD
2360 BD=BD*(FS*C4+440000.0*(1-C4))
2370 REM Total sky brightness
2380 IF BD>BT THEN GOTO 2410 10 ' Program to compute the signal-to-
2390 B(I)=BN+BD noise ratio
2400 GOTO 2420 20 ' for a stellar image in a CCD
2410 B(I)=BN+BT camera.
2420 IF ZM<90.0 THEN B(I)=B(I)+BM 30 ' Written by Anthony Mallama,
2430 NEXT I September 1992.
2440 PRINT "Sky brightness (UBVRI):"; 40 '
2450 PRINT USING " ##.#^^^^"; B(1), B(2), 50 DIM SN(5): PI=3.14159
B(3), B(4), B(5) 60 S0=2000000: ' Star-signal constant
2460 RETURN (the number of
3000 ' Subroutine CT 70 ' electrons per second for a 0-
3010 FOR I=1 TO 5 : READ DL(I) : NEXT I magnitude
3020 DATA 0.068, 0.098, 0.089, 0.22, 0.24 80 ' star and a 1-inch scope)
3030 FOR I=1 TO 5 : READ RE(I) : NEXT I 90 SB=18: ' Sky brightness in mag per sq
3040 DATA 0.83, 0.86, 0.88, 0.87, 0.90 arc second
3050 FOR I=1 TO 5 : READ TR(I) : NEXT I 100 PS=1.5: ' Pixel size in arc seconds
3060 DATA 0.970, 0.983, 0.987, 0.983, of sky
0.980 110 DD=3: ' Detection diameter in arc
3070 FOR I=1 TO 5 : READ TF(I) : NEXT I seconds
3080 DATA 0.70, 0.70, 0.70, 0.70, 0.70 120 RN=100: ' Readout noise in electrons
3090 ' Seeing per pixel
3100 FOR I=1 TO 5 130 TH=70: ' Thermal electrons/pixel/sec
3110 X=1.0/(COS(Z/57.28)) 140 AP=8: ' Aperture of telescope in
3120 T1=(TS^2)*(X^1.2)*((WA(I)/.55)^-.4) inches
3130 150 ET=100: ' Time before a readout in
T2=5.54*((3600.0*57.28*(WA(I)/10000.0) seconds
/D)^2) 160 PRINT'
3140 TT(I)=SQR(T1+T2) : REM TOTAL SEEING 170 PRINT "Signal-to-noise ratios for
FWHM (") stellar CCD images,"
3150 NEXT I 180 PRINT "based on:"
3160 ' Efficiencies 190 PRINT USING " A) #####.# inch
3170 FOR I=1 TO 5 aperture scope";AP
3180 200 PRINT USING " B) #####.# mag per sq
EF(I)=(Q(I)/100.0)*TF(I)*(RE(I)^NM)*(T arcsec of sky";SB
R(I)^(2.0*NL)) 210 PRINT USING " C) ####### arcsec
3190 F(I)=1-EXP(-2.77*((TA/TT(I))^2)) : detection circle";DD
REM Fraction in photometry aperture 220 PRINT USING " D) ####### sec longest
3200 NEXT I single exp.";ET
3210 A=(3.14159/4.0)*(D^2-DS^2) : REM 230 PRINT USING " E) #####.# arcsec-per-
Light-collecting area pixel scale";PS
3220 ' Source and sky counts 240 PRINT USING " F) ####### elec/pixel
3230 FOR I=1 TO 5 readout noise";RN
3240 IN=10^(-.4*(MA(I)-MO(I)+DM(I))) 250 PRINT USING " G) ####### thermal
3250 PE=(WA(I)/10000.0)/(6.62E- elec/pixel/sec";TH
27*2.997E+10) 260 PRINT USING " H) ####### star-signal
3260 NS(I)=IN*F(I)*A*EF(I)*E*DL(I)*PE constant";S0
3270 NB(I)=B(I)*A*EF(I)*E*DL(I)*PE*(TP^2) 270 PRINT " Q) Quit"
3280 NEXT I 280 PRINT
3290 PRINT : PRINT "Star counts in 290 INPUT "Choose a letter or type '/' to
photometry aperture (UBVRI):"; continue";P$
3300 PRINT USING " #####."; NS(1), NS(2), 300 IF P$="A" OR P$="a" THEN INPUT AP
NS(3), NS(4), NS(5) 310 IF P$="B" OR P$="b" THEN INPUT SB
3310 PRINT "Sky counts per pixel (UBVRI): 320 IF P$="C" OR P$="c" THEN INPUT DD
"; 330 IF P$="D" OR P$="d" THEN INPUT ET
3320 PRINT USING " #####."; NB(1), NB(2), 340 IF P$="E" OR P$="e" THEN INPUT PS
NB(3), NB(4), NB(5) 350 IF P$="F" OR P$="f" THEN INPUT RN
3330 RETURN 360 IF P$="G" OR P$="g" THEN INPUT TH
9991 ' ============================ 370 IF P$="H" OR P$="h" THEN INPUT S0
9992 ' FROM "ASTRONOMICAL COMPUTING," 380 IF P$="Q" OR P$="q" THEN 720
9993 ' SKY & TELESCOPE, MAY 1998 390 IF P$="/" THEN GOTO 410
9994 ' ============================ 400 GOTO 160
410 PRINT
420 AR=PI*(DD/2)^2: 'Detection area in
square arcsec
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 13 / 73

430 PX=AR/PS^2: 'Detection area in pixels 100 A7$=" "


440 IF PX>1 GOTO 500 110 '
450 PRINT "Warning: Detection area 120 ' Get input and print header
is less" 130 PRINT:PRINT
460 PRINT "than 1 pixel. Increase 140 INPUT "Event rate (lambda)";L
size." 150 INPUT "Interval (t)";T
470 PRINT 160 IF EXP(-L*T)>0 THEN 190
480 INPUT "Press <Enter> to 170 PRINT "Sorry, out of range"
continue";X$ 180 GOTO 420
490 GOTO 160 190 PRINT:PRINT SPC(29); A1$
500 EN=DD/10 ' Fraction of star's total 200 PRINT:PRINT A2$;A7$;A3$
image encircled 210 PRINT A4$;A7$;A5$
510 ' by the detection or measurement 220 PRINT A6$;A6$;A6$
area 230 '
520 IF EN>1 THEN EN=1 240 ' Initialize loop variables
530 PRINT " Mag. 1 sec 10s 100s "; 250 N=0
540 PRINT "1000s 10000s" 260 MU=L*T
550 FOR M=10 TO 20 270 PF=0: ' Prob of fewer than n
560 L=1/(10^(M/2.5)): ' Luminosity 280 PE=100*EXP(-MU): ' Prob of exactly n
570 PRINT USING " ##.#"; M; 290 '
580 FOR I=1 TO 5 300 ' Compute Probabilities (and odds)
590 S=10^(I-1): ' Exposure time in 310 '
seconds 320 PG=100-PF-PE: ' Prob of greater than
600 SG=L*S*S0*EN*AP^2: ' Signal total n
610 SK=S*S0*AR*AP^2/10^(SB/2.5): ' Sky 330 IF PG>99.999 THEN 380
total 340 PRINT USING " ##"; N;
620 TT=TH*PX*S: ' Thermal total 350 P=PF: C=13: GOSUB 440
630 N=S/ET: ' Total number of frames 360 P=PE: C=34: GOSUB 440
640 IF N<>INT(N) THEN N=INT(N)+1 370 P=PG: C=55: GOSUB 440: PRINT
650 SN(I)=SG/SQR(SG+TT+SK+N*PX*RN^2) 380 N=N+1
660 NEXT I 390 PF=PF+PE
670 PRINT USING 400 PE=PE*MU/N
"######";SN(1);SN(2);SN(3);SN(4);SN(5) 410 IF PG>=MP THEN 320
680 NEXT M 420 END
690 PRINT 430 '
700 INPUT "Press <Enter> to continue";X$ 440 ' Print probability (and odds)
710 GOTO 160 450 PRINT TAB(C);
720 END 460 IF P>.001 AND P<99.999 THEN 480
730 ' 470 PRINT " - - -";: GOTO 560
740 ' This program computes the signal- 480 PRINT USING "###.#% (";P;
to-noise (SNR) ratio expected 490 IF P>50 THEN 530
750 ' when a CCD camera is used under 500 PRINT " 1 :";
specific conditions and 510 V=((100-P)/P)
760 ' with a given telescope. Since an 520 GOSUB 580: GOTO 550
SNR of at least 3 is needed 530 V=(P/(100-P))
770 ' for reliable visiblity of a star 540 GOSUB 580: PRINT ": 1 ";
image, the program can be 550 PRINT ")";
780 ' used to estimate the magnitude 560 RETURN
limit reached. It was written 570 '
790 ' by Anthony Mallama and appeared in 580 ' Format odds
Sky & Telescope for 590 IF V>=9.5 THEN 620
800 ' February 1993, page 84. 600 PRINT USING " #.# ";V;
610 GOTO 630
620 PRINT INT(V+.5);
630 RETURN
640 '
CHANCE.BAS ; 020; 650 ' Poisson statistics are used to
Odds of witnessing certain astronomical events 660 ' predict how likely it is for
bunches or
670 ' gaps to occur in a stream of random
10 ' Poisson Distribution 680 ' events, such as appearances of
20 ' by Mark Gingrich bright
30 MP=.1 690 ' comets, novae, cosmic rays,
40 A1$="Probability (and odds) of..." meteors, or
50 A2$="# events fewer than" 700 ' even the way stars are sprinkled
60 A3$="exactly greater than" across
70 A4$=" (n) n events " 710 ' a section of sky. By comparing
80 A5$="n events n events " this
90 A6$ = "-------------------------" 720 ' program's output to actual
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 14 / 73

730 ' observations, it is often possible 580 IF D<0 THEN U=U+90


to 590 GOTO 900
740 ' decide whether the events of a 600 U=125+INT(H*1.875+.5)
given 610 IF U=170 THEN U=125
750 ' class do, in fact, have a random 620 IF D<0 THEN U=U+180
760 ' distribution in time or space. 630 GOTO 900
Mark 640 IF ABS(D)>=39 THEN 690
770 ' Gingrich explores this subject in 650 U=89+INT(H*1.5+.5)
his 660 IF U=125 THEN U=89
780 ' article, "Great Comets, Novae, and 670 IF D<0 THEN U=U+261
Lady 680 GOTO 900
790 ' Luck," in Sky & Telescope for June 690 U=59+INT(H/.8+.5)
800 ' 1995, pages 86-89. 700 IF U=89 THEN U=59
710 IF D<0 THEN U=U+327
720 GOTO 900
730 IF ABS(D)>=72.5 THEN 830
740 IF ABS(D)>=61 THEN 790
CHART.BAS ; 053; 750 U=35+INT(H+.5)
Find atlas charts for any celestial coordinates 760 IF U=59 THEN U=35
770 IF D<0 THEN U=U+381
780 GOTO 900
100 REM CHART NUMBER PROGRAM 790 U=15+INT(H/1.2+.5)
110 REM 800 IF U=35 THEN U=15
120 PRINT 810 IF D<0 THEN U=U+425
130 PRINT "Enter 2000.0 position" 820 GOTO 900
140 PRINT 830 IF ABS(D)>=84.5 THEN 880
150 INPUT "R.A. hrs.";H 840 U=3+INT(H/2+1/2.4)
160 IF H<0 OR H>=24 THEN 150 850 IF U=15 THEN U=3
170 INPUT "R.A. min.";M 860 IF D<0 THEN U=U+457
180 IF M<0 OR M>=60 THEN 170 870 GOTO 900
190 H=H+M/60 880 U=1+INT(H/12)
200 PRINT 890 IF D<0 THEN U=474-U
210 INPUT " + or - ";D$ 900 PRINT: PRINT
220 IF LEN(D$)>1 THEN 210 910 PRINT "SKY ATLAS 2000.0 --"
230 INPUT "DEC. degrees";D 920 PRINT " Chart ";S
240 IF D<0 OR D>90 THEN 230 930 PRINT
250 INPUT "DEC. min. ";M 940 PRINT "URANOMETRIA 2000.0 --"
260 IF M<0 OR M>=60 THEN 250 950 PRINT " Chart ";U;" in ";V$
270 D=D+M/60 960 PRINT
280 IF D$="-" THEN D=-D 970 REM ***********************
290 REM 975 REM FROM SKY & TELESCOPE'S
300 REM 980 REM ASTRONOMICAL COMPUTING
310 REM SKY ATLAS 2000.0 985 REM FOR APRIL, 1989, P. 420
320 REM 990 REM ***********************
330 IF ABS(D)>=18.5 THEN 370 995 END
340 S=9+INT(H/3+1/1.2)
350 IF S=9 THEN S=17
360 GOTO 460
370 IF ABS(D)>=52 THEN 410
380 S=4+INT(H/4) CIRCLE.BAS ; 060;
390 IF D<0 THEN S=S+14 Make setting circles and scales on a printer
400 GOTO 460
410 S=1+INT(H/8)
420 IF D<0 THEN S=S+23 10 REM CIRCLE-DIVIDING PROGRAM
430 REM 12 REM
440 REM URANOMETRIA 2000.0 14 N=9: DIM P1(N), P2(N)
450 REM 16 I0=180: C$=CHR$(27)+"3"+CHR$(1)
460 IF ABS(D)>=5.5 THEN 510 18 H=8: REM MINIMUM VERTICAL
470 U=215+INT(H*1.875+.5) 20 REM LETTER SPACE IN MM
480 IF U=260 THEN U=215 22 DATA 4,6,9,12,18,36,72,180,360
490 V$="Volume I & II" 24 FOR I=1 TO N: READ P1(I): NEXT
500 GOTO 900 26 DATA 9,6,8,6,4,5,10,8,6
510 IF D>0 THEN V$="Volume I" 28 FOR I=1 TO N: READ P2(I): NEXT
520 IF D<0 THEN V$="Volume II" 30 REM
530 IF ABS(D)>=50 THEN 730 32 INPUT "SCALE LENGTH (MM)";S
540 IF ABS(D)>=28 THEN 640 34 IF S<30 THEN 32
550 IF ABS(D)>=17 THEN 600 36 I1=0
560 U=170+INT(H*1.875+.5): 38 I1=I1+1: IF I1=N THEN 42
570 IF U=215 THEN U=170 40 IF S>=P1(I1)*H THEN 38
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 15 / 73

42 PRINT "PRINTING...": LPRINT C$ 902 REM COMPUTERS ONLY. MERGE WITH


44 FOR I=1 TO I0/4: LPRINT: NEXT CALJD.BAS (MAY, 1984, PAGE 455).
46 LPRINT S;" MM STRIP DIVIDED "; 903 REM ****************************
48 LPRINT "INTO ";P1(I1);" PARTS"
50 FOR I=1 TO I0/4: LPRINT: NEXT
52 REM
54 REM PRINTING LOOP
55 REM SET UP FOR DOT-MATRIX PRINTERS COMET.BAS ; 079;
56 W=0: S0=INT(360/P1(I1)) Compute the ephemeris of a comet
58 S1=S*I0/(25.4*360)
60 FOR I=0 TO 360 STEP S0
62 B=INT(I*S1-W): F=W 5 GOSUB 69: GOTO 200
64 FOR J=0 TO P2(I1) 10 REM KEPLER'S EQUATION
66 I3=INT(J*B/P2(I1)-F) 11 REM
68 IF I3<0 THEN 76 12 P1=3.14159265: R1=180/P1
70 FOR K=1 TO I3: LPRINT: NEXT K 13 K=0.01720209895
72 IF I3<=0 OR J>=P2(I1) THEN 76 18 IF E0>=0.95 THEN GOTO 40
74 LPRINT " -"; 19 IF E0>=1 THEN 85
76 F=F+I3 20 A1=Q/(1-E0): M=K*T*A1^(-1.5)
78 NEXT J 21 REM
80 LPRINT USING " #### --";I; 22 REM BINARY SEARCH
82 W=W+B 23 REM
84 NEXT I 24 F=SGN(M): M=ABS(M)/(2*P1)
86 FOR I=1 TO I0/4: LPRINT: NEXT 25 M=(M-INT(M))*2*P1*F
88 INPUT "ANOTHER (Y/N)";Q$ 26 IF M<0 THEN M=M+2*P1
90 IF Q$="Y" THEN 32 27 F=1: IF M>P1 THEN F=-1
92 END 28 IF M>P1 THEN M=2*P1-M
94 REM ************************* 29 E=P1/2: D=P1/4
96 REM ASTRONOMICAL COMPUTING 30 FOR I1=1 TO 23
97 REM SKY & TELESCOPE, MARCH 88 31 M1=E-E0*SIN(E)
98 REM ************************* 32 E=E+SGN(M-M1)*D: D=D/2
33 NEXT I1
34 V=SQR((1+E0)/(1-E0)): E=E*F
35 V=2*ATN(V*SIN(E/2)/COS(E/2))
36 R=A1*(1-E0*COS(E))
CLOCK.BAS ; 066; 38 GOTO 81
Add Moon to a real-time clock (Apple II) 39 REM
40 REM GAUSS METHOD
41 REM
200 REM BEFORE RUNNING THESE LINES, 43 A=SQR((1+9*E0)/10)
READ THE CLOCK AND OBTAIN THE 44 B=5*(1-E0)/(1+9*E0)
210 REM UT DATE AND TIME IN THE FORM 45 C=SQR(5*(1+E0)/(1+9*E0))
Y,M,D,H1,M1,S1 46 B1=3*A*K*T/SQR(2*Q*Q*Q)
220 REM 47 B2=1: REM INITIAL VALUE
230 D=D+H1/24+M1/1440+S1/86400 48 W1=B2*B1: B3=ATN(2/W1)
250 G=1: GOSUB 820: V=(J+F)/29.53058868: 49 T1=SIN(B3/2)/COS(B3/2)
C=V-INT(V) 50 S1=SGN(T1): T1=ABS(T1)
260 IF C<0.02 THEN 340 51 T2=T1^(1/3)*S1: G=ATN(T2)
270 IF C<0.11 THEN PRINT "LAST QUARTER 52 S=2*COS(2*G)/SIN(2*G)
MOON": GOTO 350 53 A2=B*S*S: B0=B2: B2=0
280 IF C<0.27 THEN PRINT "MOON IS A 54 IF ABS(A2)>0.3 THEN 19
MORNING CRESCENT": GOTO 350 55 FOR J=0 TO 7
290 IF C<0.35 THEN PRINT "NEW MOON": GOTO 56 B2=B2+B(J)*A2^J
350 57 NEXT J
300 IF C<0.51 THEN PRINT "MOON IS AN 58 IF ABS(B2-B0)>1E-8 THEN 48
EVENING CRESCENT": GOTO 350 59 C1=0
310 IF C<0.61 THEN PRINT "FIRST QUARTER 60 FOR J=0 TO 7
MOON": GOTO 350 61 C1=C1+S(J)*A2^J
320 IF C<0.77 THEN PRINT "MOON IS WAXING 62 NEXT J
GIBBOUS": GOTO 350 63 C1=SQR(1/C1)
330 IF C<0.85 THEN PRINT "FULL MOON": 64 V1=C*C1*S: D1=1/(1+A2*C1*C1)
GOTO 350 65 V=2*ATN(V1): R=Q*D1*(1+V1*V1)
340 PRINT "MOON IS WANING GIBBOUS" 67 GOTO 81
350 END 68 REM
867 RETURN 69 REM COEFFICIENTS
900 REM **************************** 70 FOR J=0 TO 7: READ B(J): NEXT
901 REM FROM SKY & TELESCOPE, MAY, 71 FOR J=0 TO 7: READ S(J): NEXT
1987, PAGE 536-537. FOR APPLE 72 RETURN
73 DATA 1,0,-0.017142857
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 16 / 73

74 DATA -0.003809524, -0.001104267 362 P8=P8-W1*I1*E1


75 DATA -0.000367358,-0.000131675 365 P9=(W2*N1+W1*N2*I2)*E1
76 DATA -0.000049577,1,-0.8 368 P9=P9+W1*I1*E2
77 DATA 0.04571429,0.01523810 371 Q7=-W1*N2-W2*N1*I2
78 DATA 0.00562820, 0.00218783 374 Q8=(-W1*N1+W2*N2*I2)*E2
79 DATA 0.00087905,0.00036155 377 Q8=Q8-W2*I1*E1
80 RETURN 380 Q9=(-W1*N1+W2*N2*I2)*E1
81 IF V<0 THEN V=V+2*P1 383 Q9=Q9+W2*I1*E2
84 GOTO 86 386 RETURN
85 PRINT "OUT OF RANGE" 389 REM
86 RETURN 392 REM 1950.0 --> 2000.0
200 REM COMET POSITION IN SKY 395 A7=+0.9999257: A8=-0.0111789
203 REM 398 A9=-0.0048590: B7=+0.0111789
206 PRINT "PERI DATE "; 401 B8=+0.9999375: B9=-0.0000272
207 GOSUB 800: J9=J: F9=F 404 C7=+0.0048590: C8=-0.0000272
208 INPUT "PERI DIST Q ";Q 407 C9=+0.9999882
209 INPUT "ECCENTRICITY ";E0 410 X4=A7*X3+A8*Y3+A9*Z3
212 INPUT "ARG OF PERIHELION ";W 413 Y4=B7*X3+B8*Y3+B9*Z3
215 INPUT "LONG OF ASC NODE ";N 416 Z4=C7*X3+C8*Y3+C9*Z3
218 INPUT "INCLINATION ";I 419 X3=X4: Y3=Y4: Z3=Z4
233 P1=3.14159265: R1=P1/180 422 RETURN
236 E=23.4457889*R1: REM OBLIQUITY 500 REM X,Y,Z OF THE SUN
239 W=W*R1: N=N*R1: I=I*R1 501 REM (EQUINOX 1950.0)
242 GOSUB 338 502 REM
245 PRINT 504 J8=J-2415020: R1=3.14159265/180
246 PRINT "DATE "; 505 T=(J8+F)/36525
247 GOSUB 800: J1=J: F1=F 506 P0=1.396041+0.000308*(T+0.5)
248 GOSUB 500: T=(J1-J9)+(F1-F9) 507 P0=P0*(T-0.499998)
249 GOSUB 10 508 A=100:GOSUB 529:G0=A+358.475833
251 REM POSITION IN ORBIT PLANE 509 L0=A+279.696678-P0
254 X1=R*COS(V): Y1=R*SIN(V) 510 A=1336: GOSUB 529
257 REM 511 C0=A+270.434164-P0
260 REM HELIOCENTRIC EQUATORIAL 512 A=162: GOSUB 529
261 REM COORDINATES 513 V0=A+212.603219
263 X2=P7*X1+Q7*Y1 514 A=53:GOSUB 529: M0=A+319.529425
266 Y2=P8*X1+Q8*Y1 515 A=8: GOSUB 529: J0=A+225.444651
269 Z2=P9*X1+Q9*Y1 516 G=G0+T*(-0.950250-0.000150*T)
272 REM 517 C=C0+T*(307.883142-0.001133*T)
275 REM GEOCENTRIC EQUATORIAL 518 L=L0+T*(0.768920+0.000303*T)
276 REM COORDINATES 519 V=V0+T*(197.803875+0.001286*T)
278 X3=X+X2: Y3=Y+Y2: Z3=Z+Z2 520 M=M0+T*(59.8585+0.000181*T)
281 GOSUB 392: REM FOR 2000.0! 521 J=J0+T*154.906654
284 D3=SQR(X3*X3+Y3*Y3+Z3*Z3) 522 G=G*R1: C=C*R1: L=L*R1
287 R1=P1/180 523 V=V*R1: M=M*R1: J=J*R1
290 A=ATN(Y3/X3)/(15*R1) 524 GOSUB 532
293 IF X3<0 THEN A=A+12 528 RETURN
296 IF A<0 THEN A=A+24 529 REM NORMALIZATION
299 D=ATN(Z3/SQR(X3*X3+Y3*Y3))/R1 530 A=360*(A*T-INT(A*T)): RETURN
301 REM NOW ROUND OFF 531 REM
302 A=A+0.05/60 532 X=0.000011*COS(2*G-L-2*J)
305 H=INT(A): M=60*(A-H) 533 X=X+0.000011*COS(2*G+L-2*V)
308 M=INT(10*M)/10 534 X=X-0.000012*COS(G+L-V)
311 S=SGN(D): D=ABS(D)+0.5/60 535 X=X-0.000012*COS(4*G-L-8*M+3*J)
314 D1=INT(D): M1=INT(60*(D-D1)) 536 X=X+0.000012*COS(4*G+L-8*M+3*J)
317 S$="+": IF S=-1 THEN S$="-" 537 X=X-0.000014*COS(C-2*L)
320 PRINT "R.A. ";H;"H ";M;"M" 538 X=X+0.000017*COS(C)
323 PRINT "DEC. ";S$;D1;"D ";M1;"M" 539 X=X+0.000018*SIN(2*G+L-2*V)
326 PRINT "COMET-EARTH DIST:";D3 540 X=X-0.000021*T*COS(G+L)
329 PRINT "COMET-SUN DIST: ";R 541 X=X-0.000026*SIN(G-L-J)
330 INPUT "ANOTHER (Y OR N) ";Q$ 542 X=X+0.000035*COS(2*G-L)
331 IF Q$="Y" THEN 245 543 X=X+0.000063*T*COS(G-L)
332 END 544 X=X+0.000105*COS(2*G+L)
335 REM 545 X=X+0.008374*COS(G+L)
338 REM P'S AND Q'S 546 X=X-0.025127*COS(G-L)
344 W1=SIN(W): W2=COS(W) 547 X=X+0.999860*COS(L)
347 N1=SIN(N): N2=COS(N) 548 REM
350 I1=SIN(I): I2=COS(I) 549 Y=0.000010*SIN(2*G+L-2*V)
353 E1=SIN(E): E2=COS(E) 550 Y=Y-0.000010*SIN(2*G-L-2*J)
356 P7=W2*N2-W1*N1*I2 551 Y=Y-0.000011*SIN(G+L-V)
359 P8=(W2*N1+W1*N2*I2)*E2 552 Y=Y+0.000011*SIN(4*G-L-8*M+3*J)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 17 / 73

553 Y=Y+0.000011*SIN(4*G+L-8*M+3*J) 160 PRINT USING " KE ##.##^^^^ J";


554 Y=Y+0.000013*SIN(C-2*L) KE
555 Y=Y+0.000016*SIN(C) 170 PRINT USING " ##.##^^^^ kT
556 Y=Y-0.000017*COS(2*G+L-2*V) TNT"; KT
557 Y=Y-0.000019*T*SIN(G+L) 180 CD=2*CR1*KT^.3*GF: CA=CD*1.25
558 Y=Y-0.000024*COS(G-L-J) 190 CZ=CD1*KT^.3*GF: CL=CZ*1.25
559 Y=Y-0.000032*SIN(2*G-L) 200 CV=.5*PI*CD*CD/4*CZ
560 Y=Y-0.000057*T*SIN(G-L) 210 CE=2.15*CD
561 Y=Y+0.000097*SIN(2*G+L) 220 PRINT: PRINT "Crater Parameters"
562 Y=Y+0.007683*SIN(G+L) 230 PRINT " Diameter --"
563 Y=Y+0.023053*SIN(G-L) 240 PRINT USING " Actual ###### m";
564 Y=Y+0.917308*SIN(L) CD
565 REM 250 PRINT USING " Apparent ###### m";
566 Z=-0.000010*COS(G-L-J) CA
567 Z=Z-0.000014*SIN(2*G-L) 260 PRINT " Depth --"
568 Z=Z-0.000025*T*SIN(G-L) 270 PRINT USING " Actual ##### m";
569 Z=Z+0.000042*SIN(2*G+L) CZ
570 Z=Z+0.003332*SIN(G+L) 280 PRINT USING " Apparent ##### m";
571 Z=Z+0.009998*SIN(G-L) CL
572 Z=Z+0.397825*SIN(L) 290 PRINT USING " Target removed
573 RETURN ##.##^^^^ m^3"; CV
800 REM CALENDAR --> JD 300 PRINT USING " Ejecta spread
805 REM ###### m"; CE
810 INPUT "Y,M,D ";Y,M,D 310 REM ========================
815 G=1 320 REM FROM "ASTRONOMICAL
820 D1=INT(D): F=D-D1-0.5 330 REM COMPUTING," SKY & TELE-
825 J=-INT(7*(INT((M+9)/12)+Y)/4) 340 REM SCOPE, NOVEMBER 1996
830 IF G=0 THEN 850 350 REM ========================
835 S=SGN(M-9): A=ABS(M-9) 360 END
840 J3=INT(Y+S*INT(A/7))
845 J3=-INT((INT(J3/100)+1)*3/4)
850 J=J+INT(275*M/9)+D1+G*J3
855 J=J+1721027+2*G+367*Y
860 IF F>=0 THEN 870 DAYSOLD.BAS ; 002;
865 F=F+1: J=J-1 Determine date after input number of days after
870 RETURN birthday
875 END
880 REM ------------------------
890 REM APPEARED IN ASTRONOMICAL 10 REM DAYSOLD.BAS
900 REM COMPUTING, SKY & TELE- 20 INPUT "Enter your birthday
910 REM SCOPE, DECEMBER, 1985 (M,D,Y)";M,D,Y
920 REM ------------------------ 30 REM Compute Julian Day Number
40 J=-INT(7*(INT((M+9)/12)+Y)/4)
50 S=SGN(M-9)
60 A=ABS(M-9)
70 J1=INT(Y+S*INT(A/7))
CRATER.BAS ; 012; 80 J1=-INT((INT(J1/100)+1)*3/4)
Find the dimensions of an impact crater 90 J=J+INT(275*M/9)+D+J1
100 J=J+1721028+367*Y
110 INPUT "Enter desired age in days ";A9
10 REM - IMPACT CRATER DIMENSIONS 120 IF A9=0 THEN 280
20 CLS : PI=3.14159 130 REM Compute calendar date from new JD
30 CR1=18: CD1=9 number
40 PRINT "Terrestrial Impact Crater" 140 J2=J+A9+1
50 INPUT " Impactor diameter (m)";ID 150 A1=INT((J2/36524.25)-51.12264)
60 INPUT " Impactor density (kg/m^3)";IR 160 A=J2+1+A1-INT(A1/4)
70 INPUT " Impactor velocity (km/s)";IK 170 B=A+1524
80 INPUT " Graze angle (deg. from 180 C=INT((B/365.25)-0.3343)
horiz.)";GA 190 D=INT(365.25*C)
90 IV=IK*1000: VI=PI*ID*ID*ID/6 200 E=INT((B-D)/30.61)
100 GF=(SIN(GA/180*PI))^.33 210 D=B-D-INT(30.61*E)
110 MI=IR*VI: KE=.5*MI*IV*IV 220 M=E-1
120 KT=KE/4.2E+12: REM impactor KE in kT 230 Y=C-4716
TNT 240 IF E>13.5 THEN M=M-12
130 PRINT: PRINT "Impactor Parameters" 250 IF M<2.5 THEN Y=Y+1
140 PRINT USING " Volume ##.##^^^^ m^3"; 260 PRINT USING "You will be ##### days
VI old on ##/##/####";A9;M;D;Y
150 PRINT USING " Mass ##.##^^^^ kg"; 270 GOTO 110
MI 280 END
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 18 / 73

900 REM --------------------------- 66 IF H1>12 THEN H1=H1-12


910 REM APPEARED IN COMPUTERS IN 67 H1$=STR$(H1)
920 REM ASTRONOMY, SKY & TELESCOPE, 68 IF H1<10 THEN H1$=" "+H1$
930 REM NOVEMBER 2001, PAGE 63 69 D=INT(D*1000+0.5)/1000
940 REM --------------------------- 70 PRINT H1$;M1$;P$;
71 PRINT TAB(15);D$;D
72 RETURN
73 REM COMPUTE END OF STYLE
74 P5=TAN(P1/2-B1)*H5
DIAL.BAS ; 061; 75 Z=SIN(F1)*P5
Design a vertical sundial 76 Z=INT(Z*1000+0.5)/1000
77 X=S*TAN(P1/2-F1)*Z
78 X=INT(X*1000+0.5)/1000
10 REM VERTICAL SUNDIALS 79 Y=-H5
11 INPUT "LAT, LONG ";B,L 80 PRINT "STYLE END COORDINATES:"
12 IF B<0 THEN 11 81 PRINT "X=";X;", Y=";Y;", Z=";Z
13 INPUT "TIME-ZONE MERIDIAN";L0 82 RETURN
14 INPUT "AZIMUTH DIAL FACES";F 83 REM *************************
15 IF F<=90 OR F>=270 THEN 14 84 REM FROM "ASTRONOMICAL COM-
16 P1=3.14159265: R1=P1/180 85 REM PUTING," SKY & TELESCOPE
17 B1=B*R1: S=0 86 REM DECEMEBR, 1987
18 INPUT "SUN E OR W";S$ 87 REM *************************
19 IF S$="E" THEN S=-1
20 IF S$="W" THEN S=1
21 IF S=0 THEN 18
22 INPUT "DIAL HEIGHT";H5
23 INPUT "WIDTH OF THIS PART";W5 DIFPAT.BAS ; 064;
24 INPUT "STEP SIZE IN MIN";G Compute and display diffraction patterns
25 F1=P1/2+S*R1*(180-F): PRINT
26 R5=W5/H5: Z5=S*R1*(L0-L)
27 PRINT "LAT: ";B;" LONG: ";L; 10 REM DIFFRACTION PATTERN
28 PRINT " MERID: ";L0 20 REM
29 PRINT "DIAL FACES AZIMUTH ";F 40 DIM I(40,24),A(40,24),B(40,24)
30 GOSUB 73 50 R=3: REM 6-INCH APERTURE
31 PRINT "SUN ";S$;" ";W5; 60 L=.000022: REM WAVELENGTH
32 PRINT "WIDE BY";H5;"HIGH" 70 GOSUB 530
33 PRINT: H=12-S: G=S*G/60 80 INPUT "HOW MANY RAYS";H
34 REM 90 FOR I1=1 TO H
35 REM CALCULATING LOOP 100 X=R*(2*RND-1)
36 Q=Z5+S*P1*(H-12)/12 110 Y=R*(2*RND-1)
37 IF Q<0 THEN 47 115 REM NOTE THAT THE RND STATEMENT
38 IF H<4 OR H>20 THEN 48 OPERATES
39 IF Q<>0 THEN 41 117 REM DIFFERENTLY ON DIFFERENT MACHINES
40 K=0: GOTO 45 120 GOSUB 390
41 K0=SIN(F1)*TAN(P1/2-Q) 130 IF F=0 THEN 100
42 K1=COS(F1)*SIN(B1)+K0 140 PRINT "DOING RAY ";I1
43 IF K1=0 THEN K1=1E-10 150 GOSUB 450
44 K=COS(B1)/K1 160 NEXT
45 GOSUB 52 170 REM
46 IF K>=0 THEN GOSUB 57 180 PRINT "NOW FINDING INTENSITY"
47 H=H+G: GOTO 35 190 C=I(20,12)^2
48 PRINT 200 FOR I=0 TO 40: FOR J=0 TO 24
49 INPUT "AGAIN (Y OR N)";Q$ 210 I(I,J)=I(I,J)*I(I,J)/C
50 S=0: IF Q$="Y" THEN 18 220 NEXT J: NEXT I
51 END 230 REM
52 REM DECIDE X OR Y 240 REM PRINT PICTURE
53 D=S*K*H5: D$=" X=" 250 REM
54 IF K<R5 THEN 56 260 INPUT "PRINTER ON";Q$
55 D=-W5/K: D$=" *Y=" 270 I$=" ./:;XH8M#": GOSUB 620
56 RETURN 280 FOR J=0 TO 24: LPRINT "I";
57 REM PRINT A LINE 290 FOR I=0 TO 40
58 H0=H+0.002 300 V=INT(9.99*I(I,J)^.47)+1
59 H1=INT(H0): M1=INT(60*(H0-H1)) 310 LPRINT MID$(I$,V,1);
60 M1$=STR$(100+M1) 320 NEXT I
61 M1$=":"+RIGHT$(M1$,2) 330 LPRINT "I": NEXT J
62 P$=" PM " 340 GOSUB 620
63 IF H1<12 THEN P$=" AM " 350 LPRINT
64 IF H1<>12 THEN 66 360 LPRINT "1 ARC SEC: I---------I"
65 IF M1=0 THEN P$=" NOON" 370 GOTO 720
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 19 / 73

380 REM 62 END


390 REM APERTURE FILTER 70 REM ------------------------
400 REM 80 REM APPEARED IN ASTRONOMICAL
410 F=1 90 REM COMPUTING, SKY & TELE-
420 R1=SQR(X*X+Y*Y) 95 REM SCOPE, MARCH, 1986
430 IF R1>R THEN F=0 99 REM ------------------------
440 RETURN
450 REM PHASE CALCULATION
460 REM
470 FOR I=0 TO 40
480 FOR J=0 TO 24 EXTINC.BAS ; 068;
490 P=X*A(I,J)+Y*B(I,J) Compute extinction of starlight
500 I(I,J)=I(I,J)+COS(P)
510 NEXT J: NEXT I
520 RETURN 10 REM EXTINCTION ANGLE
530 REM COMPUTE COEFFICIENTS 12 REM
540 REM 14 R=180/3.14159265
550 K=2*3.14159265#/(L*206265!) 16 INPUT "STAR'S MAG";M
560 FOR I=0 TO 40: FOR J=0 TO 24 18 INPUT "LIM MAG AT ZEN";M0
570 A(I,J)=K*(I-20)/10 20 INPUT "EXT COEFF, K";K
580 B(I,J)=K*(12-J)/6 22 REM FIND BACKGROUND
590 NEXT J: NEXT I 24 K0=0.0126: K1=M0+K
600 RETURN 26 IF K1<4.21 THEN K0=0.00000126
610 REM 28 C=-9.80
620 REM PRINT A LINE 30 IF M0+K<4.21 THEN C=-8.35
630 LPRINT " "; 32 X0=(M0+16.57+K+2.5*C)/(-5.0)
640 FOR I=0 TO 40: LPRINT "-"; 34 B0=(10^X0-1)^2/K0-K*118/0.2
650 NEXT: LPRINT 36 REM FIND DESIRED AIRMASS
660 RETURN 38 B=B0+236*(K/0.20)
670 REM ======================= 40 K0=0.0126
680 REM FROM "ASTRONOMICAL 42 IF B>1650 THEN K0=0.00000126
690 REM COMPUTING," SKY & TELE- 44 C=-9.80
700 REM SCOPE, SEPTEMBER, 1987 46 IF B>1650 THEN C=-8.35
710 REM ======================= 48 I=C+2*LOG(1+SQR(K0*B))/LOG(10)
720 END 50 A=(M+16.57+2.5*I)/(-K)
52 REM FIND EXT ANGLE
54 Z=90.1/R: D=0.1/R
56 Z=Z-D
58 X=COS(Z)+0.025*EXP(-11*COS(Z))
EASTER.BAS ; 077; 60 IF (1/X)>A THEN 56
Compute date of Easter 62 Z=Z*R
64 PRINT "EXT ANGLE: ";Z
66 END
10 REM EASTER 68 REM ******************************
12 REM 70 REM FROM ASTRONOMICAL COMPUTING,
14 INPUT "YEAR ";Y 72 REM SKY & TELESCOPE, APRIL, 1987,
16 IF Y<1583 THEN 14 74 REM PAGE 426
18 Y1=Y/19 76 REM ******************************
20 A=INT((Y1-INT(Y1))*19+.001)
22 B1=Y/100: B=INT(B1)
24 C=INT((B1-INT(B1))*100+.001)
26 D1=B/4: D=INT(D1)
28 E=INT((D1-INT(D1))*4+.001) FACECIRC.BAS ; 016;
30 F=INT(((B+8)/25)+.001) Print setting-circle disks on a LaserJet
32 G=INT((B-F+1)/3)
34 H1=(19*A+B-D-G+15)/30
36 H=INT((H1-INT(H1))*30+.001) 10 REM - FACECIRC.BAS
38 C1=C/4: I=INT(C1) 20 CLS
40 K=INT((C1-I)*4+.001) 30 REM - Constants
42 L1=(32+2*E+2*I-H-K)/7 40 A = 4080: C = 5100: HF = 180: PLU =
44 L=INT((L1-INT(L1))*7+.001) 40: E = 80: FA = 1: FB = 10: FC = 350
46 M=INT((A+11*H+22*L)/451) 50 K = .017453293#: REM - This is PI/180
48 N1=(H+L-7*M+114)/31: N=INT(N1) 60 INPUT "Please Enter the Outside
50 P=INT((N1-N)*31+.001) DIAMETER in MM - "; DIA: OR1 = DIA /
52 N$="APRIL" 2: PRINT : PRINT
54 IF N=3 THEN N$="MARCH" 70 IR1 = OR1 - 3: PRINT : PRINT
56 PRINT "EASTER IS ON ";N$;P+1 80 IR2 = IR1 - 2: IR3 = IR1 - 1
58 INPUT "ANOTHER (Y OR N) ";Q$ 90 REM - Radius is converted to plotter
60 IF Q$="Y" THEN 14 units (PLU)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 20 / 73

100 OR2 = OR1 * PLU: IR4 = IR1 * PLU: IR5 610 LPRINT "PA"; A + SIN(J * K) * IR5;
= IR2 * PLU: IR6 = IR3 * PLU ","; C + COS(J * K) * IR5; ";"
110 PRINT : PRINT "Do you want the scale 620 LPRINT "DI"; COS(-J * K); ","; SIN(-J
in Degrees or Hours and Minutes?" * K); ";"
120 INPUT " Please indicate 'd' 630 IF J = 90 THEN LPRINT "DI0,-1;"
for Degrees or 'h' for Hours... "; A$: 640 IF J = 180 THEN LPRINT "DI-1,0;"
PRINT 650 IF J = 270 THEN LPRINT "DI0,1;"
130 IF A$ = "h" OR A$ = "H" THEN QQ = 1 660 IF QQ = 1 THEN LPRINT "LB"; INT(J /
140 REM - Clear, set into HP-GL/2 mode, 15); "*;": GOTO 680
and initialize the printer 670 LPRINT "LB"; INT(J); "*;"
150 LPRINT CHR$(27); "E": LPRINT 680 LPRINT "PU;"
CHR$(27); "%0B": LPRINT "IN;" 690 NEXT J
160 REM - Select a pen and set the width 700 REM - Reset the printer
170 LPRINT "SP1;": LPRINT "PW.1;" 710 LPRINT CHR$(27); "%0A": LPRINT
180 PRINT : PRINT : PRINT CHR$(27); "E"
"Printing......." 720 END
190 PRINT : PRINT "NOTE: This will take 900 REM ******************************
up to 70 seconds to print." 910 REM THIS PROGRAM BY RONALD KOCELA
200 REM - Plot outside and inside circles PRODUCES CIRCULAR
210 LPRINT "PA"; A; ","; C; ";": LPRINT 920 REM SETTING CIRCLES ON HP LASERJET
"CI"; OR2; : LPRINT "PU;" PRINTERS.
220 LPRINT "PA"; A; ","; C; ";": LPRINT 930 REM FROM SKY & TELESCOPE, MARCH
"CI"; IR4; : LPRINT "PU;" 1996, PAGE 84.
230 REM - Put in the Degrees or Hours 940 REM ******************************
240 IF QQ = 1 THEN FA = 1.25
250 FOR I = -HF TO HF STEP FA
260 LPRINT "PU;"
270 LPRINT "PA"; A + SIN(I * K) * IR4;
","; C + COS(I * K) * IR4; ";" FIREBALL.BAS ; 035;
280 LPRINT "PD;" Calculate descent of a fireball
290 LPRINT "PA"; A + SIN(I * K) * OR2;
","; C + COS(I * K) * OR2; ";"
300 LPRINT "PU;" 10 REM FIREBALL
310 NEXT I 12 PRINT
320 REM - Put in longer tick marks 14 INPUT "INITIAL MASS (KG) ";MM
330 IF QQ = 1 THEN FB = 15 16 INPUT "DENSITY (KG/M^3) ";D
340 FOR I = -HF TO HF STEP FB 18 INPUT "SPEED (KM/S) ";V
350 LPRINT "PU;" 20 INPUT "ZENITH ANGLE (DEG) ";Z
360 LPRINT "PA"; A + SIN(I * K) * IR5; 22 INPUT "TIME STEP (SEC) ";DT
","; C + COS(I * K) * IR5; ";" 24 GOSUB 98: PRINT: GOSUB 114
370 LPRINT "PD;" 26 A=1.2: L=.001: G=1: H0=.2
380 LPRINT "PA"; A + SIN(I * K) * OR2; 28 H1=500000: SG=H0/(2*G*H1)
","; C + COS(I * K) * OR2; ";" 30 H=155000: T=0: FM=10: FL=FM
390 LPRINT "PU;" 32 M=MM: V=V*1000
400 NEXT I 34 RE=6371000: ZR=Z*3.14159/180
410 REM - Put in shorter tick marks 36 VV=-V*COS(ZR): VH=V*SIN(ZR)
420 FOR I = -HF TO HF STEP 5 38 REM DENSITY OF ATMOSPHERE
430 LPRINT "PU;" 40 I=INT(H/10000)
440 LPRINT "PA"; A + SIN(I * K) * IR6; 42 IF I>15 THEN I=15
","; C + COS(I * K) * IR6; ";" 44 FR=(H/10000)-I
450 LPRINT "PD;" 46 R=10^(LR(I)*(1-FR)+FR*LR(I+1))
460 LPRINT "PA"; A + SIN(I * K) * OR2; 48 REM RATES OF CHANGE
","; C + COS(I * K) * OR2; ";" 50 A2=G*A*R*V*V/(M*D*D)^.33333
470 LPRINT "PU;" 52 GV=9.810001/(1+H/RE)^2
480 NEXT I 54 AV=-GV-A2*VV/V+VH*VH/(RE+H)
490 REM - Select Font and Label 56 AH=-A2*VH/V-VV*VH/(RE+H)
500 LPRINT "SD1,21,2,1,4,8,7,4148;" 58 M0=SG*M*V*A2
510 IF QQ = 1 THEN GOTO 530 60 IF FL=FM THEN GOSUB 76
520 IF OR1 < 45 THEN LPRINT "DV1;" 62 REM INCREMENT VARIABLES
530 LPRINT "DT*,1;" 64 T=T+DT: S=S+VH*DT*RE/(RE+H)
540 LPRINT "SS;" 66 H=H+VV*DT: M=M-M0*DT
550 LPRINT "LO16;" 68 VV=VV+AV*DT: VH=VH+AH*DT
560 IF QQ = 1 THEN FC = 345: FB = 15 70 V=SQR(VH*VH+VV*VV)
570 FOR J = 0 TO FC STEP FB 72 IF M<0 OR H<0 THEN END
580 LPRINT "PU;" 74 FL=FL+1: GOTO 38
590 IF QQ = 1 THEN GOTO 610 76 REM OUTPUT
600 IF OR1 < 45 THEN LPRINT "PA"; A + 78 PRINT INT(.5+T*10)/10;
SIN(J * K) * (IR5 + E); ","; C + COS(J 80 PRINT TAB(10);INT(.5+S/1000);
* K) * (IR5 + E); ";": GOTO 620 82 PRINT TAB(20);INT(.5+H/1000);
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 21 / 73

84 PRINT TAB(30);INT(.5+V/100)/10; 82 RETURN


86 PRINT TAB(40);INT(.5+A2); 100 REM ************************
88 PRINT TAB(50);INT(.5+100*M/MM); 110 REM FROM SKY & TELESCOPE'S
90 LV=.5*V*V*M0*L*1E+10/(H*H) 120 REM ASTRONOMICAL COMPUTING
92 MV=6.8-1.086*LOG(LV) 130 REM FOR JANUARY, 1989
94 PRINT TAB(60);INT(.5+10*MV)/10 140 REM ************************
96 FL=0: RETURN
98 REM LOG(DENSITY) OF ATMOSPHERE
100 DIM LR(16)
102 FOR I=0 TO 16: READ LR(I): NEXT
104 DATA .09,-.38,-1.05,-1.74,-2.39 GALISA.BAS ; 051;
106 DATA -2.98,-3.50,-4.07,-4.72 Plot Galilean moons of Jupiter (Apple II)
108 DATA -5.45,-6.30,-7.00,-7.62
110 DATA -7.97,-8.32,-8.67,-8.81
112 RETURN 10 REM GALISAT
114 REM HEADING 15 REM
116 PRINT" GROUND"; 20 TEXT: HOME: PRINT
118 PRINT TAB(39);"ATMOS" 25 PRINT "WHICH IS TOWARD LEFT:"
120 PRINT"TIME TRACK HEIGHT"; 30 INPUT "EAST OR WEST? ";A$
122 PRINT TAB(30);"SPEED DECEL"; 35 IF LEFT$(A$,1)="W" THEN 50
124 PRINT TAB(50);"MASS VISUAL" 40 IF LEFT$(A$,1)="E" THEN 60
126 PRINT" (S) (KM) (KM)"; 45 GOTO 30
128 PRINT TAB(30);"(KM/S) (M/S/S)"; 50 L=1: L$="WEST": R$="EAST"
130 PRINT TAB(50);" (%) MAG" 55 GOTO 65
132 RETURN 60 L=-1: L$="EAST": R$="WEST"
65 GOSUB 800
70 N=J-2415020+F
75 PI=3.14159265: P=PI/180
80 VTAB 21: INVERSE: PRINT L$;
FRACTS.BAS ; 056; 85 HTAB 37: PRINT R$: NORMAL
Represent a decimal as a continued fraction 90 VTAB 21:HTAB 7:PRINT "YEAR ";Y;
95 HTAB 19: PRINT "MONTH ";M;
100 HTAB 30: PRINT "DAY "
10 REM REPRESENTING A DECIMAL 105 V=0: HGR : HCOLOR=3
12 REM VALUE BY A CONTINUED 110 GOSUB 295
14 REM FRACTION 115 DL=INT((N-INT(N))*20+0.5)/20
16 REM 120 IF DL=0.5 THEN GOSUB 335
18 DEFDBL A-H,K-Z 125 MT=(358.476+0.9856003*N)*P
20 DEFINT I,J 130 MJ=(225.328+0.0830853*N)*P
22 C1=1: O=99999 135 JJ=221.647+0.9025179*N
24 O1$="##### ########## /" 140 VT=1.92*SIN(MT)+0.02*SIN(2*MT)
26 O2$="= ##.#############" 145 VJ=5.55*SIN(MJ)+0.17*SIN(2*MJ)
28 REM 150 K=(JJ+VT-VJ)*P
30 P=1E12 155 DT=SQR(28.07-10.406*COS(K))
32 DIM F(100) 160 Z=SIN(K)/DT
34 INPUT "DECIMAL VALUE";K 165 I=ATN(Z/SQR(1-Z*Z))
36 PRINT 170 I=I/P
38 I=-1 175 F=(N-DT/173)
40 I=I+1 180 F1=I-VJ
42 F(I)=INT(K): IF I>=1 THEN 46 185 U1=84.5506+203.405863*F+F1
44 N=F(I): D=1: GOTO 48 190 U2=41.5015+101.2916323*F+F1
46 GOSUB 68 195 U3=109.9770+50.2345169*F+F1
48 R=N/D 200 U4=176.3586+21.4879802*F+F1
50 IF ABS(N)>P THEN 66 205 X1=5.906*SIN(U1*P+PI)
52 IF ABS(D)>P THEN 66 210 X=X1: GOSUB 315
54 PRINT USING O1$;F(I);N; 215 X2=9.397*SIN(U2*P+PI)
56 PRINT D;TAB(30); 220 X=X2: GOSUB 315
58 PRINT USING O2$;R 225 X3=14.989*SIN(U3*P+PI)
60 K1=K-INT(K): IF K1=0 THEN 66 230 X=X3: GOSUB 315
62 IF ABS(R-O)<1/P THEN 66 235 X4=26.364*SIN(U4*P+PI)
64 K=C1/K1: O=R: GOTO 40 240 X=X4: GOSUB 315
66 END 245 V=V+1: N=N+0.05
68 D=F(I): N=1 250 IF V>=155 THEN 265
70 FOR J=I-1 TO 0 STEP -1 255 IF D>=33 THEN 275
72 N1=D 260 GOTO 115
74 D1=F(J)*D+N 265 INPUT "CONTINUE (Y OR N)?";A$
76 N=N1: D=D1 270 IF A$<>"N" THEN 105
78 NEXT J 275 INPUT "ANOTHER MONTH? ";A$
80 N=D1: D=N1 280 IF A$<>"N" THEN 20
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 22 / 73

285 TEXT: HOME 120 D=0: ' Sun's declination in


290 END degrees
291 REM 130 MP=1: ' Planet's mass in Earth
295 REM JUPITER DISPLAY masses
300 HPLOT 136,0 TO 136,155 140 PE=1: ' Planet's rotation
305 HPLOT 142,0 TO 142,155 period in days
310 RETURN 150 R0=1: ' Planet's radius in
315 REM SATELLITE DISPLAY Earth radii
320 X=139+L*INT(X*3.5+0.5) 160 L=40: ' Observer's latitude in
325 HPLOT X,V degrees
330 RETURN 170 P=1: ' Sea-level pressure,
335 REM CHANGE OF DATE bars
340 VTAB 21: HTAB 34: PRINT D 180 T0=10: ' Air temperature in
345 HPLOT 5,V TO 25,V degrees Celsius
350 HPLOT 255,V TO 275,V 190 OZ=3: ' Ozone layer thickness
355 D=D+1 (mm at STP)
360 RETURN 200 HS=12: ' Ozone ht. (miles above
365 REM sea level)
800 REM CALENDAR --> JD 210 AA=-1.3: ' Aerosol exponent
805 REM (unitless)
810 INPUT "Y,M,D? ";Y,M,D 220 AH=1: ' Aerosol scale height
811 D=INT(D) (miles)
815 G=1: IF Y<=1582 THEN G=0 230 PP(1)=78: ' Nitrogen percentage by
820 D1=INT(D): F=D-D1-0.5 volume
825 J=-INT(7*(INT((M+9)/12)+Y)/4) 240 PP(2)=22: ' Oxygen percentage
830 IF G=0 THEN 850 250 PP(3)=0: ' Carbon dioxide
835 S=SGN(M-9): A=ABS(M-9) 260 PP(4)=0: ' Hydrogen
840 J1=INT(Y+S*INT(A/7)) 270 PP(5)=0: ' Helium
845 J1=-INT((INT(J1/100)+1)*3/4) 280 PP(6)=0: ' Methane
850 J=J+INT(275*M/9)+D1+G*J1 290 PP(7)=0: ' Ammonia
855 J=J+1721027+2*G+367*Y 300 PP(8)=0: ' Argon
860 IF F>=0 THEN 870 310 '
865 F=F+1: J=J-1 330 ' Convert input data to cgs
870 RETURN units
900 REM ********************** 340 DS=DS*1.496E+13: RS=RS*6.96E+10: ' cm
910 REM THIS PROGRAM COMPUTES 350 R0=R0*6.378E+8: H=H*30.48: ' cm
920 REM POSITIONS OF THE FOUR 360 HS=HS*1.609E+5: AH=AH*1.609E+5: ' cm
930 REM BRIGHT MOONS OF JUPITER 370 D=D*PI/180: L=L*PI/180: Z0=Z0*PI/180:
940 REM ON APPLE II COMPUTERS. ' radians
950 REM IT IS DESCRIBED IN SKY 380 MP=MP*5.976E+27: ' grams
960 REM & TELESCOPE MAGAZINE, 390 PE=PE*24*3600: ' seconds
970 REM JUNE, 1989, PAGE 650. 400 T0=T0+273.1: ' degrees Kelvin
980 REM ********************** 410 '
420 ' Calculate average molecular
weight
430 MW=0
440 FOR IG=1 TO 8:
GFLASH.BAS ; 031; MW=MW+MX(IG)*PP(IG)*.01: NEXT IG
Simulate the appearance of the "green flash" 450 '
460 ' Calculate atmospheric
parameters
10 ' THE GREEN FLASH 470 G=6.67E-8*MP*(R0^-2):' Acceleration
20 ' of gravity
30 INPUT "Height of observer in feet";H 480 S=8.31E+7*T0/(G*MW): ' Atmospheric
40 INPUT "Zenith dist. of occulting edge scale height
(deg)";Z0 490 LA=-.4*T0/S: ' Adiabatic
50 INPUT "Aerosol extinction (mag/air lapse rate
mass)";KD 500 '
60 INPUT "Occult bottom (B) or top (T) of 510 ' Choose a color
Sun";Q$ 520 FOR IC=1 TO 11
70 TB=1: IF Q$="T" OR Q$="t" THEN TB=- 530 W=(IC*500+2500)*1E-8
1 540 ' Calculate index of
80 PRINT: GOSUB 1590 refraction
90 DS=1: ' Sun's distance in a.u. 550 N0=0
100 RS=1: ' Sun's radius in solar 560 FOR IG=1 TO 8
radii 570 NS=(A(IG)*.00001)*(1+(B(IG)*1E-
110 TS=5700: ' Sun's temperature 11)/(W^2))
(Kelvin) 580 N0=N0+NS*PP(IG)*.01*P*273.1/T0
590 NEXT IG
600 N=1+N0*EXP(-H/S): ' At observer
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 23 / 73

610 N0=N0+1: ' At sea level 1070 ZA=ZA-R(IC): ' Zenith distance of
620 ' Sun
630 ' Calc. refraction and air mass 1080 '
for each color 1090 ' Calculate the fraction of disk
640 GOSUB 1510: ' Refraction visible
subroutine 1100 CC=(ZA-Z0)*TB*DS/RS
650 IF RF>RX THEN RX=RF 1110 IF CC>1 THEN CC=1: ' If nothing
660 IF RF<RN THEN RN=RF visible
670 R(IC)=RF: XR=AM 1120 TH(IC)=ATN(SQR(1-CC*CC)/CC)
680 ' 1130 IF CC<0 THEN TH(IC)=TH(IC)+PI
690 ' Calc. air transmission at 1140 FR=(TH(IC)-CC*SIN(TH(IC)))/PI
occulting object 1150 '
700 KR=1.13E-11*((N-1)^2)*(W^-4) 1160 ' Calculate visible flux from
710 KA=KD*((W/.000055)^AA): CZ=COS(Z0) Sun
720 XA=1/ 1170 F(IC)=FA(IC)*TR(IC)*FR
(CZ+.8*SQR(AH/R0)*EXP(-.38*CZ*SQR(R0/A 1180 NEXT IC
H))) 1190 '
730 KO=KS(IC)*OZ/3 1200 ' (Could print out flux, F(IC)
740 XO=1/SQR(1-(SIN(Z0)/(1+((HS- [ergs/cm2/s/A],
H)/R0)))^2) 1210 ' as well as the Sun's stellar
750 KX=KR*XR+KA*XA+KO*XO: IF KX>90 THEN magnitude,
KX=90 1220 ' M(IC)=-2.5*LOG(F(IC))/B0-(M0(IC)
760 TR(IC)=10^(-.4*KX) +20),
770 ' 1230 ' as a function of the color IC,
780 ' Calculate Sun's flux above where
atmosphere 1240 ' 1=3000A, 2=3500A, 3=4000A, ... ,
790 BB=.0000374*(W^-5)/(EXP(1.43/ 11=8000A.)
(W*TS))-1) 1250 '
800 FA(IC)=((RS/DS)^2)*BB*1E-8: ' in 1260 XX=0: YY=0: ZZ=0
erg/cm2/s/A 1270 FOR IC=1 TO 11
810 NEXT IC 1280 XX=XX+X1(IC)*F(IC): ' X from CIE
820 ' standard
830 ' Pick relevant time range for 1290 YY=YY+Y1(IC)*F(IC): ' Y from CIE
calculations standard
840 CZ=COS(Z0+RN+TB*RS/DS) 1300 ZZ=ZZ+Z1(IC)*F(IC): ' Z from CIE
850 HC=(CZ-SIN(D)*SIN(L))/(COS(D)*COS(L)) standard
860 HA=ATN(SQR(1-HC*HC)/HC): IF HC<0 THEN 1310 NEXT IC
HA=HA+PI 1320 IF XX+YY+ZZ=0 THEN 1480
870 T1=HA*PE*.5/PI: ' Time when lowest 1330 X=XX/(XX+YY+ZZ): ' x
disk sets 1340 Y=YY/(XX+YY+ZZ): ' y
880 CZ=COS(Z0+RX+TB*RS/DS) 1350 IF Y<=.01 THEN 1480: ' If invisible
890 HC=(CZ-SIN(D)*SIN(L))/(COS(D)*COS(L)) to eye
900 HA=ATN(SQR(1-HC*HC)/HC): IF HC<0 THEN 1360 PH=ATN((.333-X)/(Y-.333)): ' Angle
HA=HA+PI from white
910 T2=HA*PE*.5/PI: ' Time when highest 1370 IF (Y-.333)<0 THEN PH=PH+PI:' in
disk sets color diagram
920 DT=(T2-T1)/50: ' Choose a time 1380 CO$="Violet"
increment 1390 IF PH<4.229 THEN CO$= " Blue"
930 T0=T1-DT: ' Define a fiducial 1400 IF PH<2.580 THEN CO$= " Green"
time 1410 IF PH<1.106 THEN CO$= "Yellow"
940 PRINT " Time x y V mag. 1420 IF PH<0.359 THEN CO$= "Orange"
Color" 1430 IF PH<0.000 THEN CO$= " Red"
950 ' 1440 V=-2.5*LOG(.034*YY/2.54E-10)/B0: '
960 ' ***** Main loop starts here Visual mag.
***** 1450 PRINT USING "##.## ";TT;
970 FOR IT=-1 TO 48 1460 PRINT USING "##.## ##.## ###.#
980 T=T1+IT*DT: ' Choose a time ";X;Y;V;
990 TT=T-T0: ' Seconds from start 1470 PRINT CO$
time 1480 NEXT IT
1000 ' 1490 END
1010 ' Cycle through wavelengths 1500 '
1020 FOR IC=1 TO 11 1510 ' Refraction subroutine (quick
1030 ' Calc. altitude of solar disk version)
for that color 1520 N=1+(N0-1)*EXP(-H/S): ' At
1040 HA=2*PI*T/PE: ' Hour angle of Sun observer
1050 CZ=SIN(D)*SIN(L) 1530 BS=R0*SIN(Z0)/(R0+.5*S):
+COS(D)*COS(L)*COS(HA) BE=ATN(BS/SQR(1-BS*BS))
1060 ZA=ATN(SQR(1-CZ*CZ)/CZ): IF CZ<0 1540 R5=N*BS: RF=ATN(R5/SQR(1-R5*R5))-BE:
THEN ZA=ZA+PI CZ=COS(Z0)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 24 / 73

1560 AM=1/ 2070 ' is discussed in detail in Sky &


(CZ+.8*SQR(S/R0)*EXP(-.38*CZ*SQR(R0/S) Telescope,
)) 2080 ' February 1992, page 200.
1570 RETURN
1580 '
1590 ' Constants and data
statements
1600 RX=-1: RN=1 GLOB1.BAS ; 091;
1610 PI=3.14159: B0=LOG(10): ' Pi and Distribution of globular clusters (Apple II)
log-10 factor
1620 DIM
A(8),B(8),PP(8),MX(8),KS(11),M0(11),X1 10 REM GLOBULAR CLUSTER PLOT
(11) 12 REM
1630 DIM 14 R1=3.14159265/180
Y1(11),Z1(11),R1(11),G1(11),B1(11),M(1 16 M0=+0.6: REM RR LYRAE STARS
1) 18 GOSUB 66
1640 DIM 20 PRINT
R(11),TR(11),F(11),FA(11),LF(11),TH(11 22 INPUT "NAME ";N$
) 24 INPUT "APPAR. MAG. (H.B.)";M1
1650 FOR I=1 TO 8: READ A(I): NEXT I 26 INPUT "VISUAL EXTINCTION ";M2
1660 DATA 29.1, 26.6, 43.9, 13.6, 3.5, 28 D=10^(.2*(M1-M2-M0)-2)
43, 37, 27.9 30 D=D*3262: REM LIGHT-YEARS
1670 FOR I=1 TO 8: READ B(I): NEXT I 32 INPUT "LONGITUDE";L
1680 DATA 7.7, 5.1, 6.4, 7.5, 2.3, 6.0, 34 INPUT "LATITUDE ";B
12.0, 5.6 36 L=L*R1: B=B*R1
1690 FOR I=1 TO 8: READ MX(I): NEXT I 38 PRINT
1700 DATA 28, 32, 44, 2, 4, 16, 17, 39.9 40 PRINT "DISTANCE = ";D
1710 FOR I=1 TO 11: READ KS(I): NEXT I 42 IF S>2 THEN 50
1720 DATA 3.2, .005, 0, .001, .012, .031, 44 X=D*COS(L)*COS(B)
.044 46 PRINT " X = ";X
1730 DATA .023, .008, .005, .001 48 IF S<2 THEN 56
1740 FOR I=1 TO 11: READ M0(I): NEXT I 50 Y=D*SIN(L)*COS(B)
1750 DATA 1.19, 0.95, 0.52, 0.46, 0.74, 52 PRINT " Y = ";Y
1.06, 1.33 54 IF S=2 THEN 60
1760 DATA 1.6, 1.88, 2.1, 2.3 56 Z=D*SIN(B)
1770 FOR I=1 TO 11: READ X1(I): NEXT I 58 PRINT " Z + ";Z
1780 DATA 0, 0, .014, .336, .005, .433, 60 INPUT "ANOTHER (Y OR N) ";Q$
1.062 62 IF Q$<>"N" THEN 20
1790 DATA .283, .011, 0, 0 64 END
1800 FOR I=1 TO 11: READ Y1(I): NEXT I 66 PRINT "(1) X-Z EDGE-ON VIEW"
1810 DATA 0, 0, .0004, .038, .323, .995, 68 PRINT "(2) X-Y FACE-ON VIEW"
.631 70 PRINT "(3) Y-Z EDGE-ON VIEW"
1820 DATA .107, .004, .0001, 0 72 PRINT
1830 FOR I=1 TO 11: READ Z1(I): NEXT I 74 INPUT "YOUR SELECTION ";S
1840 DATA 0, 0, .068, 1.773, .272, .009, 76 RETURN
0,0,0,0,0 80 REM ------------------------
1850 FOR I=1 TO 11: READ R1(I): NEXT I 82 REM APPEARED IN ASTRONOMICAL
1860 DATA 0, 0, .025, -.039, -1.16, .097 84 REM COMPUTING, SKY & TELE-
1870 DATA .847, .989, 1, 0, 0 86 REM SCOPE, DECEMBER, 1984
1880 FOR I=1 TO 11: READ G1(I): NEXT I 88 REM ------------------------
1890 DATA 0, 0, -.011, .0218, 1.39, .905,
.154
1900 DATA .011, 0, 0, 0
1910 FOR I=1 TO 11: READ B1(I): NEXT I
1920 DATA 0, 0, .986, 1.017, .778, -.0025 GLOB2.BAS ; 092;
1930 DATA -.0012, 0, 0, 0, 0
Distribution of globular clusters (Apple II)
1940 RETURN
2000 '
2010 ' GFLASH.BAS -- This program by 13 DIM X(30),Y(30),Z(30)
Dr. Bradley 15 J=0
2020 ' E. Schaefer predicts how the 23 J=J+1
"green flash" 45 X(J)=X
2030 ' should look to an observer 51 Y(J)=Y
watching the 57 Z(J)=Z
2040 ' setting Sun. Inputs can be 64 GOTO 100
varied to see 100 PRINT: PRINT: PRINT
2050 ' the effect of different 110 FOR I=1 TO J
atmospheric conditions 120 IF S=1 THEN Y(I)=Z(I)
2060 ' and elevation above sea level. 130 IF S=3 THEN X(I)=-Y(I): Y(I)=Z(I)
The program
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 25 / 73

140 NEXT 716 S=24110.54841+184.812866*T1


150 HGR: C=0.00105: X=100: Y=70 718 S=S+8640184.812866*T2
160 IF S=3 THEN X=130 720 S=S+0.093104*T*T
170 GOSUB 370: DX=0: DY=0: GOTO 240 722 S=S-0.0000062*T*T*T
180 DX=0: DY=0: GET C$ 724 S=S/86400: S=S-INT(S)
190 IF C$="L" THEN DX=-1 726 S=24*(S+(F-0.5)*1.002737909)
200 IF C$="U" THEN DY=-1 728 IF S<0 THEN S=S+24
210 IF C$="D" THEN DY=+1 730 IF S>24 THEN S=S-24
220 IF C$="R" THEN DX=+1 732 H=INT(S): M1=60*(S-H)
230 IF DX=0 AND DY=0 THEN 180 734 M=INT(M1): S=60*(M1-M)
240 FOR I=1 TO J: GOSUB 290: NEXT: GOSUB 736 PRINT "GMST: ";H;M;S
480 738 END
250 X=X+DX: Y=Y+DY: HCOLOR=3: GOSUB 500: 740 REM ------------------------
IF S=3 THEN 180 745 REM APPERAED IN ASTRONOMICAL
260 D=SQR((XC-X)*(XC-X)+(YC-Y)*(YC-Y))/C: 750 REM COMPUTING, SKY & TELE-
VTAB 22: HTAB 1 755 REM SCOPE. JUNE, 1984
270 PRINT "DISTANCE TO CENTER: ";INT(D);" 760 REM ------------------------
L.Y. ": GOTO 180
280 REM
290 X0=X(I)*C+X: Y0=-Y(I)*C+Y
300 IF X0<0 OR X0>279 OR Y0<0 OR Y0>160
THEN 320 GOSS.BAS ; 047;
310 HCOLOR=0: HPLOT X0,Y0 Light curves of eclipsing binaries
320 X0=X0+DX: YO=Y0+DY
330 IF X0<0 OR X0>279 OR Y0<0 OR Y0>160
THEN 350 10 REM LIGHT-CURVE PROGRAM
340 HCOLOR=3: HPLOT X0,Y0 20 REM APPLE II VERSION
350 RETURN 30 GOSUB 1500
360 REM 32 SCREEN 0: SCREEN 1: COLOR ,1 : REM
370 HCOLOR=3: REM MILKY WAY 40 PRINT "TYPE OF BINARY SYSTEM:"
380 RM=5*5: XC=140: YC=80: XR=50: 50 PRINT " 1. BINARY DWARF"
YR=0.03*XR 60 PRINT " 2. CONTACT BINARY"
390 IF S=2 THEN YR=XR 70 PRINT " 3. SEMI-DETACHED"
400 HPLOT XR+XC,YC 80 PRINT " 4. DETACHED BINARY"
410 FOR T=0 TO 6.3 STEP 0.1 90 X1=0: INPUT "CHOICE ";Q
420 X1=XR*COS(T): Y1=YR*SIN(T) 200 IF Q<>1 THEN 210
430 IF X1*X1+Y1*Y1<RM THEN Y1=SQR(RM- 205 X1=.6: X2=.6: E=.1
X1*X1)*SGN(Y1) 210 IF Q<>2 THEN 220
440 X1=X1+XC: Y1=Y1+YC: HPLOT TO X1,Y1 215 X1=.8: X2=.4: E=.05
450 NEXT 220 IF Q<>3 THEN 230
460 GOSUB 480 225 X1=.8: X2=.4: E=.02
470 RETURN 230 IF Q<>4 THEN 240
480 HPLOT 139,80 TO 141,80: HPLOT 140,79 235 X1=.8: X2=.4: E=0
TO 140,81 240 IF X1=0 THEN 90
490 COLOR=0 250 GOSUB 1500
500 HPLOT X-1,Y-1 TO X+1,Y-1 TO X+1,Y+1 260 PRINT "LIMB-DARKENING COEFFS:"
TO X-1,Y+1 TO X-1,Y-1 265 PRINT " FOR LARGER STAR ";X1
510 RETURN 270 PRINT " FOR SECONDARY ";X2
520 REM ------------------------- 280 PRINT
530 REM APPEARED IN ASTRONOMICAL 290 PRINT "OBLATENESS COEFF: ";E
COMPUTING, SKY & TELESCOPE, 300 PRINT
540 REM DECEMBER, 1984 320 INPUT "CHANGES (Y OR N) ";A$
550 REM ------------------------- 330 IF A$<>"Y" THEN 460
340 PRINT "ENTER NEW LIMB-DARKEN-"
341 PRINT "ING COEFFICIENTS:"
350 INPUT " FOR LARGER STAR ";X1
360 INPUT " FOR SECONDARY ";X2
GMST.BAS ; 099; 410 PRINT: PRINT
Sidereal time for Greenwich meridian 430 INPUT "OBLATENESS COEFF ";E
450 REM
460 REM GET CHARACTERISTICS
700 REM GREENWICH MEAN 480 GOSUB 1500
702 REM SIDEREAL TIME 490 INPUT "ORBITAL RADIUS ";R
704 REM 500 INPUT "INCLINATION ";I
706 INPUT "J,F ";J,F 520 INPUT "PRIMARY'S RADIUS ";R1
708 D=J-2451545 530 INPUT " LUMINOSITY ";L1
710 T=D/36525: T1=INT(T) 540 INPUT "SECONDARY RADIUS ";R2
712 J0=T1*36525+2451545 560 INPUT " LUMINOSITY ";L2
714 T2=(J-J0+0.5)/36525 570 P=100
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 26 / 73

580 REM : REM HGR: HCOLOR=3 1240 REM


582 GOSUB 1500: LOCATE 21 : REM GOSUB 1250 REM CORRECT FOR INCLINATION
1500: VTAB 21 1260 K3=SIN((90-I)*DR)
590 REM 1270 OP=R*SIN((V-90)*DR)*K3
600 REM PLOT AXES 1280 S=SQR(OP^2+D^2): D=S
620 LINE (35,159)-(235,159) : REM HPLOT 1300 RETURN
35,159 TO 235,159 1310 REM
630 FOR J=0 TO 10 1320 REM CORRECT FOR L-DARKENING
640 PSET (20*J+35,158) : REM HPLOT (20*J) 1340 C1=1-X1+X1*ABS(COS(V*DR))
+35,158 1350 C2=1-X2+X2*ABS(COS(V*DR))
650 NEXT J 1360 RETURN
660 LINE (35,159)-(35,9) : REM HPLOT 1370 REM
35,159 TO 35,9 1380 REM CORRECT FOR OBLATENESS
670 FOR K=0 TO 10 1390 K4=(SIN(I*DR))^2*(COS(V*DR))^2
680 PSET (36,159-15*K) : REM HPLOT 1400 OL=1-E*K4
36,159-(15*K) 1410 RETURN
690 NEXT K 1420 REM
700 PI=3.14159: RD=180/PI: DR=1/RD 1430 REM CORRECT FOR REFLECTION
710 REM 1440 REM AND RERADIATION
720 REM COMPUTE STAR POSITION 1450 SH=.4*L1*R2^2: SC=.4*L2*R1^2
740 FOR V=1.8 TO 360 STEP 1.8 1460 SI=SIN(I*DR): CV=ABS(COS(V*DR))
750 D=R*SIN(V*DR) 1470 DL=.5*(SC+SH)+(SC-SH)*SI*CV
760 IF V>=180 THEN D=ABS(D) 1471 DL=DL+.5*(SC+SH)*SI^2*CV^2
770 REM 1475 DL=DL/3
780 REM COMPUTE LUMINOSITIES FOR 1480 RETURN
781 REM TOTAL & ANNULAR ECLIPSES 1490 REM
800 IF I<90 THEN GOSUB 1250 1500 REM BLANK THE SCREEN
810 GOSUB 1320 1510 CLS: RETURN : REM HOME: RETURN
820 IF D>=(R1-R2) THEN 850 1530 END
830 IF V>90 AND V<270 THEN B=L1-L2 1540 REM ******************************
835 IF V>90 AND V<270 THEN 850 1550 REM APPEARED IN ASTRONOMICAL
840 K5=L1*(PI*R1^2-PI*R2^2) COMPUTING
845 B=L2+C1*K5/(PI*R1^2) 1560 REM SKY & TELESCOPE - OCTOBER 1989
850 IF D>=(R1+R2) THEN B=L1+L2 ISSUE
860 IF D<(R1+R2) THEN GOSUB 970 1570 REM ******************************
870 PV=(V/1.8)+35
880 GOSUB 1380: GOSUB 1430
900 B0=139
905 B=B0-((B*OL)-DL)*P
910 B=INT(B+.5) GWMONTH.BAS ; 094;
920 IF V<>1.8 THEN 930 Convert month number to name
925 PSET (PV,B): GOTO 940 : REM HPLOT
PV,B: GOTO 940
930 LINE -(PV,B) : REM HPLOT TO PV,B 10 REM NAME OF MONTH
940 NEXT V 20 REM
950 GOTO 1530 25 DIM A$(150)
960 REM 27 DIM M$(25)
970 REM COMPUTE OBSCUR'N ANGLES 30 LET
980 K0=(R2^2)/(2*D*R1) A$="320125799653785534469788JANUARYFEB
990 C5=K0*((D/R2)^2+(R1/R2)^2-1) RUARYMARCHAPRILMAYJUNEJULYAUGUSTSEPTEM
1000 D1=R1*C5: D2=D-D1 BEROCTOBERNOVEMBERDECEMBER"
1020 H=SQR(R1*R1-D1*D1): S5=H/R1 40 INPUT A
1050 A1=ABS(ATN(S5/C5))*RD 50 LET M$=MID$(A$,(A*6+22-VAL(MID$
1060 C6=D2/R2: S6=H/R2 (A$,A,1))),VAL(MID$(A$,A+12,1)))
1090 A2=ABS(ATN(S6/C6))*RD 60 PRINT M$
1100 REM 70 REM
1110 REM COMPUTE SECTOR AREAS & ***********************************
1120 REM PARTIAL ECLIPSES 80 REM APPEARED IN ASTRONOMICAL COMPUTING
1130 T1=(H*D1)/2: T2=(H*D2)/2 90 REM SKY & TELESCOPE, OCTOBER 1984
1150 S2=PI*R2^2*2*A2/360 ISSUE
1160 S1=PI*R1^2*2*A1/360 100 REM
1170 OB=(S1-T1)+(S2-T2) **********************************
1180 IF V>90 AND V<270 THEN 1205
1190 K1=L1*C1*(PI*R1^2-OB)
1195 B=L2+K1/(PI*R1^2)
1200 GOTO 1230
1205 K2=L2*C2*(PI*R2^2-OB) HARTLEY.BAS ; 044;
1210 B=L1+K2/(PI*R2^2)
Globe- and grid-drawing program (Macintosh)
1220 IF V=360 THEN 1530
1230 RETURN
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 27 / 73

740 REM STARTING LONGITUDE LINE


10 REM GLOBE-DRAWING PROGRAM 750 X=RM*SIN(LO)*COS(TH)+XC
15 REM 760 Y1=RM*SIN(TH)
20 FF=1: REM FLATTENING FACTOR 770 Z1=RM*COS(LO)*COS(TH)
40 RM=80: REM RADIUS OF GLOBE 780 Y=-Z1*ST+Y1*CT+YC: XS=X: YS=Y
50 INPUT "TILT ANGLE ";T 790 RETURN
60 DR=3.14159/180: TI=T*DR 800 REM This program is used
80 XC=250: YC=150: REM SCR CENTER 810 REM to draw an outline of a
90 CT=COS(TI): ST=SIN(TI) 811 REM planet's disk with latitude
95 REM 812 REM and longitude lines as an
100 REM DRAW LATITUDE LINES 813 REM aid to sketching in features
110 FOR LA=-75 TO 75 STEP 15 814 REM at the telescope and identi-
120 IF T>0 THEN 150 815 REM fying them on a published map.
130 IF 90+T<LA THEN 270 816 REM How it works is discussed by
140 GOTO 160 817 REM Charles Hartley in the Jan-
150 IF T-90>LA THEN 270 818 REM uary, 1990, issue of Sky &
160 L=LA*DR:SL=SIN(L):R=RM*COS(L) 819 REM Telescope magazine. Intended
170 GOSUB 570 820 REM for Macintosh, but works on
190 FOR P1=PS+5 TO -PS STEP 5 821 REM IBM PC's with very little
200 P=P1*DR: X=R*SIN(P)+XC 822 REM modification. For example,
210 Y1=RM*SL: Z1=R*COS(P) 823 REM add line 95 SCREEN 9 if you
220 Z=Z1*CT+Y1*ST 824 REM have VGA graphics, and try
225 Y=-Z1*ST+Y1*CT+YC 825 REM setting FF=0.7 in line 20 to
230 IF Z<0 THEN 250 826 REM get a disk that looks right.
240 LINE (XS,YS*FF)-(X,Y*FF)
250 XS=X: YS=Y
260 NEXT P1
270 NEXT LA
280 REM DRAW LONGITUDE LINES HELIAC.BAS ; 082;
290 FOR L=-180 TO 165 STEP 15 Heliacal rise and set times
300 LO=L*DR
310 IF TI<0 THEN 340
320 TH=90*DR: DT=-5*DR: GOTO 350 10 REM HELIACAL RISE AND SET
340 TH=-90*DR: DT=5*DR 11 P1=3.14159265 : R=P1/180
350 GOSUB 750 12 P2=P1/2 : P3=1.5*P1 : P4=2*P1
360 Z=1: TH=TH+DT 13 A8=LOG(10) : R1=.017202
380 CH=COS(TH): X=RM*SIN(LO)*CH+XC 14 INPUT "EXTINCTION";K
390 Y1=RM*SIN(TH):Z1=RM*COS(LO)*CH 15 INPUT "LIMITING MAG";M0
400 Z=Y1*ST+Z1*CT:Y=Y1*CT-Z1*ST+YC 16 INPUT "STAR MAG.";M
410 IF Z<0 THEN 430 17 INPUT "STAR R.A. (HOURS)";A1
420 LINE (XS,YS*FF)-(X,Y*FF) 18 INPUT " DEC. (DEG.) ";D1
430 XS=X: YS=Y: TH=TH+DT 19 INPUT "OBS LATITUDE ";L
440 IF Z>=0 THEN 380 20 A1=A1*15*R : D1=D1*R : L=L*R
450 NEXT L 21 S1=SIN(D1) : C1=COS(D1)
460 REM DRAW LIMB OF GLOBE 22 S7=SIN(L) : C7=COS(L)
470 XS=RM+XC: YS=YC 23 INPUT "RISE OR SET";R$
480 FOR I=0 TO 360 STEP 10 24 R$=LEFT$(R$,1)
490 IA=I*DR: X=RM*COS(IA)+XC 25 IF R$="R" THEN F=1
500 Y=RM*SIN(IA)+YC 26 IF R$="S" THEN F=-1
510 LINE (XS,YS*FF)-(X,Y*FF) 27 V1=-S7*S1/(C7*C1)
520 XS=X: YS=Y 28 IF V1=0 THEN H1=P1/2
530 NEXT I 29 IF V1=0 THEN 32
540 INPUT A$ 30 IF V1<-1 THEN V1=-1
550 END 31 H1=ATN(SQR(1-V1*V1)/V1)
560 REM STARTING LATITUDE LINE 32 IF V1<0 THEN H1=H1+P1
570 CP=-ST*SIN(L)/(CT*COS(L)) 33 H1=A1-F*H1
580 IF CP>=1 OR CP<=-1 THEN 640 34 X=-.2*(M0-7.93+K)
590 IF CP*CP>.001 THEN 620 35 B0=79.4*(10^X-1)^2-K*589
600 P=-90*DR: GOTO 650 36 D=80+A1*58.13-60*F
620 TP=SQR(1-CP*CP)/CP: P=ATN(TP) 37 D=D+F : G=D*R1-.062
630 GOTO 650 38 PRINT " TRIAL DAY: ";INT(D)
640 P=0 39 L0=D*R1-1.406+.033*SIN(G)
650 IF P<=0 THEN 680 40 A0=ATN(.917*SIN(L0)/COS(L0))
660 P=-P: GOTO 690 41 D0=.398*SIN(L0)
680 P=-180*DR-P 42 D0=ATN(D0/SQR(1-D0*D0))
690 X=R*SIN(P)+XC 43 IF L0<P2 OR L0>P3 THEN 45
700 Y1=RM*SIN(L): Z1=R*COS(P) 44 A0=A0+P1
710 Y=-Z1*SIN(TI)+Y1*COS(TI)+YC 45 IF L0>P3 THEN A0=A0+P4
720 XS=X: YS=Y: PS=P/DR 46 C0=-S7*SIN(D0)/(C7*COS(D0))
730 RETURN
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 28 / 73

47 H0=ATN(SQR(1-C0*C0)/C0) 42 INPUT "DESIRED X";X$


48 IF C0<0 THEN H0=H0+P1 44 IF X$="X" THEN 78
49 H0=A0-F*H0 48 X=VAL(X$): F1=0
50 IF F*(H1-H0)>0 THEN 37 50 FOR I=1 TO N
51 N=-100 : T=H1-F/30 52 IF X<>X(I) THEN 56
52 T=T+F/30 54 F=F(I): F1=1
53 IF F*(T-H0)>0 THEN 37 56 NEXT I
54 N0=N : REM LIMITING MAG. 58 IF F1=1 THEN 74
55 A9=S7*S1+C7*C1*COS(A1-T) 60 T=1: F=0
56 IF A9<-1 THEN A9=-1 62 FOR I=1 TO N
57 IF A9=0 THEN Z1=P1/2 64 T=T*(X-X(I))
58 IF A9=0 THEN 60 66 NEXT I
59 Z1=ATN(SQR(1-A9*A9)/A9) 68 FOR I=1 TO N
60 A9=C7*COS(D0)*COS(T-A0) 70 F=F+L(I)*T/(X-X(I))
61 A9=A9+S7*SIN(D0) 72 NEXT I
62 H5=ATN(A9/SQR(1-A9*A9)) 74 PRINT "F: ";F
63 A9=C1*COS(D0)*COS(A0-A1) 76 PRINT: GOTO 42
64 C2=A9+S1*SIN(D0) 78 END
65 A9=C2-COS(Z1)*SIN(H5) 80 REM ------------------------
66 A9=A9/(SIN(Z1)*COS(H5)) 85 REM APPEARED IN ASTRONOMICAL
67 IF A9<-1 THEN A9=-1 90 REM COMPUTING, SKY & TELE-
68 T1=ATN(SQR(1-A9*A9)/A9) 95 REM SCOPE, APRIL, 1984
69 A5=.025*EXP(-11*COS(Z1)) 99 REM ------------------------
70 A5=1/(COS(Z1)+A5)
71 L5=H5*(8.2*Z1+12)+2.86*Z1
72 L5=4.75-T1*Z1/3+L5
73 B=B0+(K/.2)*(10^L5)
74 IF L5<2.07 THEN B=B0+K*589 JACK.BAS ; 022;
75 C5=4.466E-09 : K5=1.258E-06 Demo of perturbed planetary motion
76 IF B<1649 THEN C5=1.58E-10
77 IF B<1649 THEN K5=.0126
78 N=C5*(1+SQR(K5*B))^2 10 ' Orbit of Jack
79 N=-16.57-K*A5-2.5*LOG(N)/A8 11 '
80 IF N>N0 THEN 52 12 DEFDBL A-Z
81 IF N0<M THEN 37 20 SR=5/7
82 IF D>=366 THEN D=D-365.25 30 X0=320
83 PRINT "DAY OF YEAR: ";INT(D) 40 Y0=175
84 PRINT "STAR: ";INT(90.5-Z1/R) 50 CLS
85 PRINT "SUN: ";INT(H5/R+.5) 60 PI=3.14159
86 END 70 INPUT "Days in A's year ";YA
87 REM ------------------------ 80 INPUT "Mass of A ";K
88 REM APPEARED IN ASTRONOMICAL 90 INPUT "Jack's initial velocity ";VY
89 REM COMPUTING, SKY & TELE- 100 CLS
90 REM SCOPE, SEPTEMBER, 1985 110 M=70
91 REM ------------------------ 120 W=2*PI/YA
130 RA=200
140 X=100
150 Y=0
160 T=0
INTERP.BAS ; 103; 170 VX=0
Lagrange interpolation (multiple data points) 180 SCREEN 9
190 LINE(1,Y0)-(630,Y0)
200 LINE(X0-1,Y0+1)-(X0+1,Y0+1)
10 REM LAGRANGE INTERPOLATION 201 LINE(X0-1,Y0-1)-(X0+1,Y0-1)
12 REM 210 AX=RA*COS(W*T)
14 INPUT "HOW MANY POINTS";N 220 AY=RA*SIN(W*T)
16 PRINT 230 T=T+1
18 DIM X(N),F(N),L(N) 240 R3=(X^2+Y^2)^1.5
20 FOR I=1 TO N 250 Z3=((X-AX)^2+(Y-AY)^2)^1.5
22 INPUT "X,F";X(I),F(I) 260 VX=VX-M*X/R3+K*(AX-X)/Z3
24 NEXT I 270 VY=VY-M*Y/R3+K*(AY-Y)/Z3
26 FOR I=1 TO N: L(I)=1 280 X=X+VX
28 FOR J=1 TO N 290 Y=Y+VY
30 IF J=I THEN 34 300 PSET (X0+PX,Y0-PY*SR),0
32 L(I)=L(I)*(X(I)-X(J)) 310 PSET (X0+QX,Y0-QY*SR),6
34 NEXT J 320 PSET (X0+X,Y0-Y*SR)
36 L(I)=F(I)/L(I) 330 PSET (X0+AX,Y0-AY*SR)
38 NEXT I 340 PX=AX
40 PRINT 350 PY=AY
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 29 / 73

360 QX=X 970 E=INT((B-D)/30.61)


370 QY=Y 975 D=B-D-INT(30.61*E)+F
380 IF Y<0 THEN SB=0 980 M=E-1: Y=C-4716
390 IF Y>0 AND SB=0 THEN 410 985 IF E>13.5 THEN M=M-12
400 GOTO 210 990 IF M<2.5 THEN Y=Y+1
410 SB=1 995 PRINT "DATE: ";Y;M;D
420 R$=INKEY$ 997 END
430 IF R$<>"" THEN 500 1000 REM ------------------------
450 PB=T-TA 1001 REM APPEARED IN ASTRONOMICAL
460 TA=T 1002 REM COMPUTING, SKY & TELE-
470 LOCATE 24,30 1003 REM SCOPE, MAY, 1984
480 PRINT "Jack's period is ";PB;" days"; 1004 REM ------------------------
490 GOTO 210
500 END
510 '
520 ' Written by Caxton Foster, this
program displays the motion of JMERID.BAS ; 045;
530 ' two planets around a central star Jupiter's central meridian for any date/time
in a hypothetical solar system.
540 ' The inner planet is called Jack;
it is considered to have negligible 100 REM JUPITER'S CENTRAL MERIDIAN
550 ' mass, but you can specify its 105 REM
starting velocity (a number from 0 to 110 DT=57: REM Value of ET-UT (sec)
560 ' 1.6 works best -- if the velocity 111 REM in 1990; change DT for
is greater than 1.6, Jack escapes 112 REM other years as needed!!
570 ' the solar system). The outer 115 P1=3.14159265
planet moves in a circular orbit, and 120 P2=2*P1: RD=180/P1: DR=1/RD
580 ' you can specify its period 125 GOSUB 330: REM Get date and UT
(typically 300 to 2,000 "days") and 130 D=(J-2451545)+F
mass 135 D=D+DT/86400: REM UT to ET
590 ' (10 or less). No matter what 140 GOSUB 405
period you select, its orbit is a 145 READ A1,A2,D1,D2
600 ' circular one with a radius twice 150 T=T-1: REM Cent from 2000.0
that of Jack's starting orbit. 155 A1=A1+A2*T
610 ' (Thus, Kepler's laws apply to 160 D1=D1+D2*T
Jack, but not to this arbitrary outer 165 Q=A1: GOSUB 710: A1=Q*DR
620 ' planet.) The program runs on IBM 170 Q=D1: GOSUB 710: D1=Q*DR
PCs or clones with VGA color 175 D9=COS(D5)*SIN(A1-A5)
630 ' graphics. By playing around with 180 N9=SIN(D1)*COS(D5)*COS(A1-A5)
input values it is possible to 185 N9=N9-COS(D1)*SIN(D5)
640 ' make Jack's orbit have resonance, 190 K=RD*ATN(N9/D9)
show apsidal motion, or put it on a 195 IF D9<0 THEN K=K+180
650 ' near-collision course with planet 200 REM
A that ejects Jack from the solar 205 READ W0,W1,W2: REM System I
660 ' system. The program is discussed 210 GOSUB 245
on page 660 of the September 1994 215 PRINT "C-MERID (I): ";C
670 ' issue of Sky & Telescope. 220 REM
225 READ W0,W1,W2: REM System II
230 GOSUB 245
235 PRINT "C-MERID (II): ";C
240 END
JDCAL.BAS ; 101; 245 REM Rotations from epoch
Convert Julian day to calendar date 250 W=W0+W1*(D-.0057755*RR)+W2*T
255 Q=W-K: GOSUB 710: C=Q
260 C=INT(100*C+.5)/100
900 REM JD --> CALENDAR 265 RETURN
905 REM 275 REM North Pole R.A.
910 INPUT "J,F ";J,F 280 DATA 268.05, +0.107
915 INPUT "JC (0) OR GC (1) ";G 285 REM North Pole Dec.
920 F=F+0.5 290 DATA 64.49, -0.015
925 IF F<1 THEN 935 295 REM System I
930 F=F-1: J=J+1 300 DATA 67.10, 877.9000, 1.291
935 IF G=1 THEN 945 305 REM System II
940 A=J: GOTO 955 310 DATA 43.30, 870.2700, 1.291
945 A1=INT((J/36524.25)-51.12264) 315 REM
950 A=J+1+A1-INT(A1/4) 320 REM Calendar --> JD
955 B=A+1524 325 REM
960 C=INT((B/365.25)-0.3343) 330 INPUT "YR,MO,DAY ";Y,M,D
965 D=INT(365.25*C) 335 INPUT "UT (H,M,S) ";H1,M1,S1
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 30 / 73

340 D=D+H1/24+M1/1440+S1/86400 690 S=S+COS(BB)*SIN(E)*SIN(LL)


345 G=1: IF Y<1582 THEN G=0 695 D5=ATN(S/SQR(1-S*S))
350 D1=INT(D): F=D-D1-.5 700 RETURN
355 J=-INT(7*(INT((M+9)/12)+Y)/4) 705 REM
360 IF G=0 THEN 380 710 REM Normalize Degrees
365 S=SGN(M-9): A=ABS(M-9) 715 Q=Q/360: Q=Q-INT(Q): Q=Q*360
370 J3=INT(Y+S*INT(A/7)) 720 RETURN
375 J3=-INT((INT(J3/100)+1)*3/4) 800 REM This program computes the
380 J=J+INT(275*M/9)+D1+G*J3 longtude of Jupiter's central
385 J=J+1721027+2*G+367*Y 810 REM meridian for any date and time.
390 IF F>=0 THEN 400 From SKY & TELESCOPE
395 F=F+1: J=J-1 820 REM magazine for December, 1989,
400 RETURN page 641.
405 REM Fundamental Arguments
410 REM
415 T=D/36525+1
420 REM T=Centuries from 1900.0
425 L0=.779072+.00273790931*D KEPLER.BAS ; 083;
430 G0=.993126+.0027377785*D Solve Kepler's equation (celestial mechanics)
435 L5=.089608+.00023080893*D
440 G5=.056531+.00023080893*D
445 G6=.882987+.00009294371*D 10 REM KEPLER'S EQUATION
450 L0=(L0-INT(L0))*P2 20 REM
455 G0=(G0-INT(G0))*P2 30 P1=PI \ D7=P1/180 \ R1=1/D7
460 L5=(L5-INT(L5))*P2 40 K=.01720209895
465 G5=(G5-INT(G5))*P2 50 GOSUB 1060
470 G6=(G6-INT(G6))*P2 60 REM
475 REM Sun 70 PRINT "PERIHELION DISTANCE Q: "; \
480 L=6910*SIN(G0) INPUT Q
485 L=L+72*SIN(2*G0) 90 PRINT "ECCENTRICITY "; \
490 L=L-17*T*SIN(G0) INPUT E0
495 L=L-7*COS(G0-G5) 92 PRINT "STARTING AND ENDING T "; \
500 R=1.00014-.01675*COS(G0) INPUT T7,T8
505 R=R-.00014*COS(2*G0) 95 FOR T=T7 TO T8 STEP .1
510 L=L0+L/206265 100 A1=Q/(1-E0) \ IF A1<0 THEN M=0 \ GO
515 REM Jupiter TO 120
520 J=19934*SIN(G5) 110 N0=K*A1^(-1.5) \ M=N0*T
525 J=J+5023*T+2511 120 PRINT "MEAN ANOMALY IS ";M*R1;"
530 J=J+1093*COS(2*G5-5*G6) DEGREES"
535 J=J+601*SIN(2*G5) 122 PRINT \ PRINT
540 J=J-479*SIN(2*G5-5*G6) 123 PRINT "METHOD I V
545 J=J-185*SIN(2*G5-2*G6) R"
550 J=J+137*SIN(3*G5-5*G6) 124 PRINT
555 J=J-131*SIN(G5-2*G6) 130 IF A1<0 THEN 205
560 B=-4692*COS(G5) 140 IF E0>.99 THEN 170
565 B=B+259*SIN(G5) 150 PRINT "SIMPLE ";
570 B=B+227-227*COS(2*G5) 160 GOSUB 490 \ GOSUB 400
575 B=B+30*T*SIN(G5) 170 PRINT "ENCKE ";
580 R5=5.20883-.25122*COS(G5) 180 GOSUB 560 \ GOSUB 400
585 R5=R5-.00604*COS(2*G5) 190 PRINT "BINARY ";
590 R5=R5+.0026*COS(2*G5-2*G6) 200 GOSUB 260 \ GOSUB 400
595 R5=R5-.0017*COS(3*G5-5*G6) 205 REM
600 R5=R5-.00106*SIN(2*G5-2*G6) 210 PRINT "HERRICK ";
605 R5=R5-.00091*T*SIN(G5) 220 GOSUB 640 \ GOSUB 440
610 R5=R5-.00084*T*COS(G5) 230 PRINT "GAUSS ";
615 L5=L5+J/206265: B5=B/206265 240 GOSUB 850 \ GOSUB 440
620 N9=R5*COS(B5)*SIN(L5-L) 245 NEXT T
625 D9=R5*COS(B5)*COS(L5-L)+R 250 GO TO 2000
630 L1=ATN(N9/D9) 260 REM BINARY METHOD
635 IF D9<0 THEN L1=L1+P1 270 REM
640 LL=L1+L 280 F=SGN(M) \ M=ABS(M)/(2*P1) \ M=(M-
645 V=N9*N9+D9*D9 INT(M))*2*P1*F
650 RR=SQR(V+(R5*SIN(B5))^2) 290 IF M<0 THEN M=M+2*P1
655 S=R5*SIN(B5)/RR 300 F=1 \ IF M>P1 THEN M=2*P1-M \ F=-1
660 BB=ATN(S/SQR(1-S*S)) 310 E=P1/2 \ D=P1/4
665 E=(84428-47*T)/206265 320 FOR I1=1 TO 47
670 N9=SIN(LL)*COS(E)-TAN(BB)*SIN(E) 330 M1=E-E0*SIN(E)
675 D9=COS(LL): A5=ATN(N9/D9) 340 E=E+SGN(M-M1)*D \ D=D/2
680 IF D9<0 THEN A5=A5+P1 350 E1=E
685 S=SIN(BB)*COS(E)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 31 / 73

360 NEXT I1 950 S1=SGN(T1) \ T1=ABS(T1) \


370 E=E*F \ I=I1-1 T2=T1^(1/3)*S1
380 RETURN 960 G=ATN(T2) \ S=2/(SIN(2*G)/COS(2*G))
390 REM 970 A2=B*S*S
400 REM TRUE ANOMALY FROM ECCENTRIC 980 B0=B2 \ B2=0
ANOMALY 982 FOR J=0 TO 7 \ B2=B2+B(J)*A2^J \ NEXT
410 REM J
420 V=2*ATN(SQR((1+E0)/(1- 984 I=I+1
E0))*SIN(E/2)/COS(E/2)) 990 IF ABS(B2-B0)>1.0000000000000E-13
430 R=A1*(1-E0*COS(E)) THEN 930
440 PRINT USING " #### ###.###### 1000 C1=0 \ FOR J=0 TO 7 \
##.#######";I;V*R1;R C1=C1+G(J)*A2^J \ NEXT J
470 RETURN 1010 V1=C*C1*S
480 REM 1020 D1=1/(1+A2*C1*C1) \ R=Q*D1*(1+V1*V1)
490 REM SIMPLE ITERATION 1030 V=2*ATN(V1)
500 REM 1040 RETURN
510 E=M \ I=0 1050 REM
520 E1=M+E0*SIN(E) \ I=I+1 1060 REM COEFFICIENTS
530 IF ABS(E-E1)>1.0000000000000E-10 THEN 1080 FOR J=0 TO 7 \ READ B(J) \ NEXT J
E=E1 \ GO TO 520 1090 FOR J=0 TO 7 \ READ G(J) \ NEXT J
540 RETURN 1100 FOR J=0 TO 7 \ READ S(J) \ NEXT J
550 REM 1110 RETURN
560 REM ENCKE ITERATION 1120 DATA 1,0,-0.017142857,-0.003809524,-
570 REM 0.001104267
580 E=M \ I=0 1130 DATA -0.000367358,-0.000131675,-
590 E1=E+(M+E0*SIN(E)-E)/(1-E0*COS(E)) \ 0.000049577
I=I+1 1140 DATA
600 IF ABS(E-E1)>1.0000000000000E-10 THEN 1,0.4,0.21714286,0.12495238,0.07339814
E=E1 \ GO TO 590 1150 DATA
610 RETURN 0.04351610,0.02592289,0.01548368
620 REM 1160 DATA 1,-
640 REM HERRICK'S METHOD 0.8,0.04571429,0.01523810,0.00562820
650 REM 1170 DATA
660 REM ENTER WITH T,E0,Q 0.00218783,0.00087905,0.00036155
670 REM EXIT WITH TRUE ANOMALY 2000 END
680 REM 2010 REM -------------------------
682 I=0 2020 REM APPEARED IN ASTRONOMICAL
690 P=Q*(1+E0) COMPUTING, SKY &
700 C=K*(1+E0)*(1+E0)/(2*P^1.5) 2030 REM TELESCOPE, AUGUST, 1985
710 X=SGN(T) \ REM ASSUME V +90 OR -90 2040 REM -------------------------
TO START
720 L=(1-E0)/(1+E0)
730 D2=C*(1+L*X*X)/(1+X*X)
740 C2=X/(1+L*X*X) \ K1=X*X*X/(1+E0)
750 C2=C2+K1*(1/(1+L*X*X)-1/3) LENS.BAS ; 093;
760 N=0 \ S=-1 Calculate curves for an aplanatic lens
770 N=N+1
775 I=I+1
780 S=-S 10 REM APLANATIC DOUBLET DESIGN
790 F=K1*S*(L*X*X)^N/(2*N+3) 12 REM
800 C2=C2+F \ IF ABS(F)>1.0000000000000E- 14 INPUT "FRONT INDEXES";A,B,C
12 THEN 770 16 INPUT "REAR INDEXES ";D,E,F
810 D3=T-C2/C \ IF 18 INPUT "FOCAL LENGTH ";FL
ABS(D3)<1.0000000000000E-10 THEN 830 20 PRINT
820 X=X+D2*D3 \ GO TO 730 22 G=B/(B-1): H=E/(E-1)
830 V=2*ATN(X) \ R=Q*(1+E0)/(1+E0*COS(V)) 24 I=(B-1)/(C-A): J=(E-1)/(F-D)
840 RETURN 26 K=I^2: L=I^3: M=J^2: N=J^3
850 REM GAUSS METHOD 28 O=(3-2/G)*I: P=(3-2/H)*J
860 REM 30 Q=(3*G-1)*K
870 REM ENTER WITH T,E0,Q; EXIT WITH 32 R=(8-4/H)*I*J-(3*H-1)*M
V,R 34 S=(G^2)*L-(5-2/H)*K*J
880 REM 36 T=(4*H-1)*I*M-(H^2)*N
882 I=0 38 U=(2-1/G)*I: V=(2-1/H)*J
890 A=SQR((1+9*E0)/10) \ B=5*(1-E0)/ 40 W=G*K-(3-1/H)*I*J+H*M
(1+9*E0) 42 X=(U^2)*P-(V^2)*O
900 C=SQR(5*(1+E0)/(1+9*E0)) 44 Y=2*U*W*P-(V^2)*Q+U*V*R
910 B1=3*A*K*T/SQR(2*Q*Q*Q) 46 Z=(W^2)*P-(V^2)*(S+T)+V*W*R
920 B2=1 \ REM INITIAL ASSUMPTION 48 A1=(Y-SQR(Y^2-4*X*Z))/(2*X)
930 W1=B2*B1 50 A2=(U*A1)/V-W/V
940 B3=ATN(2/W1) \ T1=SIN(B3/2)/COS(B3/2)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 32 / 73

52 R1=((I-J)/A1)*FL 570 M1 = (MR*SH/P)-1


54 R2=((I-J)/(A1-(I*(G-1))))*FL 580 M2 = (MR*SH/P)*((MR/P)-2*SH)
56 R3=((I-J)/A2)*FL 590 H = (M1+SQR(M1*M1-M2))*RM
58 R4=((I-J)/(A2+(J*(H-1))))*FL 600 H = H*5280: H = INT(H)
60 PRINT "R1 = ";R1 610 PRINT "HEIGHT = ";H;" FEET"
62 PRINT "R2 = ";R2 620 PRINT: PRINT "DO ANOTHER "
64 PRINT "R3 = ";R3 630 PRINT "FROM SAME PHOTO";
66 PRINT "R4 = ";R4 640 INPUT " (Y/N) ";YN$
68 END 650 IF YN$="Y" THEN GOTO 310
70 REM ------------------------ 660 END
80 REM APPEARED IN ASTRONOMICAL 670 REM *****************************
90 REM COMPUTING, SKY & TELE- 680 REM APPEARED IN ASTRONOMICAL
92 REM SCOPE, NOVEMBER, 1984 COMPUTING
94 REM ------------------------ 690 REM SKY & TELESCOPE, JANUARY 1985
ISSUE
700 REM *****************************

LHEIGHT.BAS ; 090;
Compute heights of lunar features
LIMMAG.BAS ; 046;
Limiting magnitude of a telescope
100 REM COMPUTING LUNAR HEIGHTS
110 REM
120 INPUT "HALF-HEIGHT CHORD (MM) ";L1 100 REM LIMITING MAGNITUDE OF A TELESCOPE
130 INPUT "SEGMENT ";L2 110 REM
140 PRINT 120 INPUT "SCOPE APERTURE ";D : REM IN
150 PRINT "USE VALUES IN DEGREES" INCHES
160 PRINT 130 INPUT "POWER ";MG : REM SCOPE'S
170 INPUT "EARTH SEL. LONG. ";LE MAGNIFICATION
180 INPUT "EARTH SEL. LAT. ";BE 140 INPUT "LIM MAG AT ZENITH ";MZ : REM
190 INPUT "SUN SEL. COLONG. ";CS FOR NAKED-EYE
200 INPUT "SUN SEL. LAT. ";BS 150 INPUT "OBSERVER'S AGE ";AG : REM IN
210 REM CONVERT DEGREES TO RADIANS YEARS
220 DR = 3.14159/180 160 INPUT "TELESCOPE TYPE (1-3) ";TT :
230 LS = 90-CS REM 1=REFR, 2=REFL, 3=SCT
240 IF LS<O THEN LS=450-CS 170 INPUT "CLEANLINESS (1-9) ";CL: REM
250 BE = BE*DR: LE = LE*DR 1=FILTHY, 9=CLEAN
260 BS = BS*DR: LS = LS*DR 180 INPUT "COLOR INDEX OF STAR ";CI : REM
270 CS = CS*DR B-V MAGNITUDE
280 RM = 1080 190 INPUT "ZENITH DISTANCE ";Z : REM IN
290 EM = 23900 DEGREES
300 SM = 93000000 200 INPUT "EXTINCTION COEFF ";KV : REM IN
310 PRINT V-BAND
320 PRINT "ENTER FEATURE DATA" 210 INPUT "SEEING DISK RADIUS ";SE : REM
330 INPUT " SEL. LONGITUDE ";LO IN ARC-SECONDS
340 INPUT " SEL. LATITUDE ";BO 220 INPUT "EXPERIENCE (1-9) ";EX : REM
350 INPUT " SHADOW (MM) ";MQ 1=NOVICE, 9=VERY EXPER.
360 BO = BO*DR 230 D=D*25.4 : REM CONVERT TO MM
370 I1 = SIN(BE)*SIN(BO) 240 IF TT=1 THEN DS=0 : REM NO
380 I2 = SIN(BE)*SIN(BS) OBSTRUCTION
390 I3 = SIN(BS)*SIN(BO) 250 IF TT=2 THEN DS=0.15*D : REM NEWT
400 I4 = COS(BE)*COS(BO) SECONDARY DIAM
410 I5 = COS(BE)*COS(BS) 260 IF TT=3 THEN DS=0.35*D : REM TYPICAL
420 I6 = COS(BS)*COS(BO) DIAM OF SCHMIDT-
430 EI = I1+I4*COS(LO-LE) 270 REM CASS SECONDARY
440 ER = I2+I5*COS(LE-LS) 280 Z=Z/57.296 : REM CONVERT TO RADIANS
450 SI = I3+I6*COS(LO-LS) 290 CC=1.58E-10 : REM NIGHT-VISION
460 RX = L1/SIN(2*ATN(L1/L2)) CONSTANT
470 MR = MQ/RX 300 KK=0.0126 : REM NIGHT-VISION CONSTANT
480 I7 = RM*RM: I8 = EM*EM 310 K=1.2*KV : REM CORRECT KV TO 5100 A
490 I9 = SM*SM 320 X=1.0/COS(Z) : REM AIR MASS
500 XE = SQR(I7+I8-2*RM*EM*EI) 330 IF TT=1 THEN FL=0.99^4 : REM 4 COATED
510 ES = SQR(I8+I9-2*EM*SM*ER) SURFACES
520 XS = SQR(I7+I9-2*RM*SM*SI) 340 IF TT=2 THEN FL=0.88^2 : REM 2
530 S = (XE+ES+XS)/2 ALUMINIZED MIRRORS
540 P = S*(S-ES)*(S-XE)*(S-XS) 350 IF TT=3 THEN FL=(0.99*0.88)^2 : REM
550 P = (2/(XE*XS))*SQR(P) CORRECTOR & 2 MIRRORS
560 SH = I3+I6*SIN(CS+LO)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 33 / 73

360 FD=1.0-(DS/D)^2 : REM ALLOW FOR


OBSTRUCTION
370 FO=0.99^4 : REM EYEPIECE (4 COATED
375 REM AIR-GLASS SURFACES)
380 DE=7*EXP(-0.5*(AG/100)^2) : REM DIAM LIST.BAS ; 033;
EYE PUPIL IN MM Make index lists of objects on star atlases
390 DP=D/MG : REM DIAM OF EXIT PUPIL
400 TH=2*SE*MG : REM APPARENT DIAMETER OF
410 REM SEEING DISK (ARC-SEC) 10 REM INDEX-PRINTING PROGRAM
420 REM CORRECTIONS 20 OPEN "R",1,"NGC2000.DAT",24
430 FB=SQR(2) : REM BINOCULAR VISION 22 OPEN "R",2,"INDEX.DAT",2
440 FE=10^(0.4*K*X) : REM ATMOSPHERIC 24 FIELD 1,5 AS N$,1 AS T$,2 AS H$,3 AS
EXTINCTION M$,3 AS D$,2 AS M1$,4 AS S$
450 FT=1/(FL*FD*FO-0.01*(9-CL)) : REM 26 FIELD 2,2 AS I$
TOTAL TRANSMISSION 30 WIDTH "LPT1:",132
460 REM OF TELESCOPE 40 LPRINT
470 FP=1.0 : REM LIGHT OUTSIDE PUPIL CHR$(15);SPC(25);"OBJECT";SPC(4);"R.A.
480 IF DE<DP THEN FP=(DP/DE)^2 ";SPC(12);"DEC";SPC(14);"ATLAS
490 FA=(DE/D)^2 : REM LIGHT-COLLECTING 2000";SPC(5);"URANOMETRIA"
AREA 50 LPRINT
500 FM=MG^2 : REM SPREAD OF SKY PHOTONS 60 FOR I=1 TO 50
510 FR=1.0 : REM POINT SOURCE CAN 70 GET #2,I: J=CVI(I$): GET#1,J
520 IF TH>900 THEN FR=SQR(TH/900) : REM 80 K$=LEFT$(M$,2)+"."+RIGHT$(M$,1)
APPEAR EXTENDED 90 H=VAL(H$):M=VAL(K$):D=VAL(D$)
530 FC=10^(0.4*(CI/2-1)) : REM COLOR OF 100 H=H+M/60:M1=VAL(M1$):D=D+M1/60
STAR 110 IF D$="-" THEN D=-D
540 FS=1.0 : REM OBSERVER'S SENSITIVITY 200 IF ABS(D)>18.5 THEN 280
550 REM 250 S=9+INT(H/3+1/1.2)
560 REM CALCULATE SKY BRIGHTNESS 260 IF S=9 THEN S=17
570 REM 270 GOTO 340
580 IF MZ>=(7-K) THEN 620 : REM 280 IF ABS(D)>=52 THEN 320
590 XX=0.2*(8.68-K-MZ) : REM FS ASSUMED = 290 S=4+INT(H/4)
1 300 IF D<0 THEN S=S+14
600 BS=39.7*(10^XX-1)^2 : REM SKY 310 GOTO 340
BRIGHTNESS FOR MZ 320 S=1+INT(H/8)
610 GOTO 650 330 IF D<0 THEN S=S+23
620 BS=54 : REM BEST POSS. SKY BRIGHT- 340 IF ABS(D)>=5.5 THEN 390
630 FS=10^(0.4*(7-K-MZ)) : REM NESS & 350 U=215+INT(H*1.875+.5)
GOOD EYESIGHT 360 IF U=260 THEN U=215
640 REM 370 V$="Vol I,II"
650 BS=BS*(Z*Z*0.5+1) : REM ZENITH HAS 380 GOTO 780
DARKEST SKY 390 IF D>0 THEN V$="Vol I"
660 B=BS/(FB*FT*FP*FA*FM*FC) : REM 400 IF D<0 THEN V$="Vol II"
BACKGROUND BRIGHTNESS 410 IF ABS(D)>=50 THEN 610
670 REM IN TELESCOPE 420 IF ABS(D)>=28 THEN 520
690 REM CALCULATE LIMITING MAGNITUDE 430 IF ABS(D)>=17 THEN 480
700 REM 440 U=170+INT(H*1.875+.5)
710 I=CC*(1+SQR(KK*B))^2 : REM Hecht 450 IF U=215 THEN U=170
(JOSA,v37,p59,1947) 460 IF D<0 THEN U=U+90
720 IS=I*FB*FE*FT*FP*FA*FR*FC*FS : REM 470 GOTO 780
FOR NO SCOPE, NO AIR 480 U=125+INT(H*1.875+.5)
730 M=-16.57-2.5*LOG(IS)/LOG(10) : REM 490 IF U=170 THEN U=125
INTENSITY TO V MAG 500 IF D<0 THEN U=U+180
740 M=M+(EX-6)*0.16 : REM EMPIRICAL 510 GOTO 780
EXPERIENCE 520 IF ABS(D)>=39 THEN 570
750 REM CORRECTION 530 U=89+INT(H*1.5+.5)
760 PRINT "VISUAL LIMITING MAGNITUDE = 540 IF U=125 THEN U=89
";M 550 IF D<0 THEN U=U+261
770 END 560 GOTO 780
800 REM 570 U=59+INT(H/.8+.5)
810 REM This program by Bradley Schaefer 580 IF U=89 THEN U=59
calculates the 590 IF D<0 THEN U=U+327
820 REM limiting stellar magnitude an 600 GOTO 780
observer can expect 610 IF ABS(D)>=72.5 THEN 710
830 REM to see with various types and 620 IF ABS(D)>= 61 THEN 670
sizes of telescopes, 630 U=35+INT(H+.5)
840 REM and under various conditions. It 640 IF U=59 THEN U=35
is fully discussed 650 IF D<0 THEN U=U+381
850 REM in SKY & TELESCOPE magazine, 660 GOTO 780
November, 1989, page 522.
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 34 / 73

670 U=15+INT(H/1.2+.5) 140 INPUT "Enter age of the universe THEN


680 IF U=35 THEN U=15 in billions of years"; TT
690 IF D<0 THEN U=U+425 150 TT = TT * 1E+09: SC = (TN / TT) ^
700 GOTO 780 (2 / 3): RS = SC - 1: IF RS < RM GOTO
710 IF ABS(D)>= 84.5 THEN 760 230
720 U=3+INT(H/2+1/2.4) 160 SM = RM + 1: TM = TN / (SM ^ 1.5)
730 IF U=15 THEN U=3 170 PRINT : PRINT USING "You can't look
740 IF D<0 THEN U=U+457 back to a time earlier than #######
750 GOTO 780 years"; TM
760 U=1+INT(H/12) 180 PRINT : GOTO 110
770 IF D<0 THEN U=474-U 190 INPUT "Enter redshift value for the
780 LPRINT SPC(25);N$;SPC(4);H$;"hrs light we see NOW"; RS
";K$;"min. ";SPC(2);D$;"deg 200 SC = RS + 1: TT = TN / (SC ^ 1.5): IF
";M1$;"min. RS < RM GOTO 230
";SPC(3);"CHART";S;TAB(84);"CHART";U;V 210 PRINT : PRINT USING "Redshift value
$ too large; nothing at redshift beyond
790 K=K+1: IF K<25 THEN 850 ##### can be seen"; RM
810 LPRINT 220 GOTO 160
820 LPRINT 230 PRINT : PRINT USING "Age of the
CHR$(15);SPC(25);"OBJECT";SPC(4);"R.A. universe NOW = ###.#### billion
";SPC(12);"DEC";SPC(14);"ATLAS years"; TN / 1E+09
2000";SPC(5);"URANOMETRIA" 240 PRINT USING "Age of the universe THEN
830 K=0: LPRINT = ###.#### billion years"; TT / 1E+09
850 NEXT I 250 TV = TN - TT
860 WIDTH "LPT1:",80 260 PRINT USING "Light travel time
870 LPRINT CHR$(18): END = ###.#### billion years"; TV / 1E+09
900 ' 270 SC = (TN / TT) ^ (2 / 3)
910 ' Written by Tim Hunter, MD, this 280 PRINT USING "Scale of the universe
program for IBM PC and compatible NOW versus THEN = ####.###"; SC
920 ' machines prints an index that 290 RS = SC - 1
tells which charts in Sky Atlas 2000.0 300 PRINT USING "Redshift of the light we
930 ' and Uranometria 2000.0 show see NOW = ####.###"; RS
various NGC and IC objects. To work, 310 DT = 3 * TT * ((TN / TT) ^ (1 / 3) -
it 1)
940 ' assumes you have the machine- 320 PRINT USING "Distance of object THEN
readable version of NGC 2000.0 = ##.### billion light-years"; DT /
(available 1E+09
950 ' separately from Sky Publishing 330 DN = DT * SC
Corp.) in the same directory. For 340 PRINT USING "Distance of object NOW
960 ' more about the program, see Sky & = ##.### billion light-years"; DN /
Telescope, August 1991, p. 182. 1E+09
350 ST = 2 * ((TN / TT) ^ (1 / 3) - 1)
360 PRINT USING "Speed away from us THEN
= ##.### x speed of light"; ST
370 SN = 2 * ((TN / TT) ^ (1 / 3) - 1) /
LOOKBACK.BAS ; 009; (TN / TT) ^ (1 / 3)
Age and distance of a galaxy of known redshift 380 PRINT USING "Speed away from us NOW
= ##.### x speed of light"; SN
390 HT = (2 / 3) / TT * 9.7781E+11
10 REM LOOKBACK.BAS - Lookback Time 400 PRINT USING "Hubble parameter THEN =
20 REM by Thomas A. Weil #######.# km/sec/megaparsec"; HT
30 RM = 3700 / 2.7-1 410 HN = (2 / 3) / TN * 9.7781E+11
40 INPUT "Will you enter the (A)ge of the 420 PRINT USING "Hubble parameter NOW =
universe or the (H)ubble parameter"; #######.# km/sec/megaparsec"; HN
AH$ 500 REM ========================
50 IF AH$ = "H" OR AH$ = "h" GOTO 90 510 REM FROM "ASTRONOMICAL
60 IF AH$ <> "A" AND AH$ <> "a" GOTO 40 520 REM COMPUTING," SKY & TELE-
70 INPUT "Enter age of the universe NOW 530 REM SCOPE, SEPTEMBER 1997
in billions of years"; TN 540 REM ========================
80 TN = TN * 1E+09: GOTO 110 550 END
90 INPUT "Enter Hubble parameter in
km/sec/Mpc"; HN
100 TN = (2 / 3) / (HN / 9.7781E+11)
110 INPUT "Enter (T)ime THEN or
(R)edshift of the light we see NOW"; LOOKBAK2.BAS ; 003;
TR$ Cosmological quantities of an accelerating universe
120 IF TR$ = "R" OR TR$ = "r" GOTO 190
130 IF TR$ <> "T" AND TR$ <> "t" GOTO 110
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 35 / 73

100 REM LOOKBAK2.BAS - May 2001; Updated 310 NEXT J


Sept. 2003 320 TN=AGEFAC/HN*HFAC
110 REM by Thomas A. Weil, 330 INPUT "Will you enter (T)ime THEN or
taweil@aol.com (R)edshift of the light we see NOW";
112 REM Now handles user-specified TR$
values for both OmegaM and OmegaL. 340 IF TR$="R" OR TR$="r" GOTO 470
114 REM Includes some code from Ned 350 IF TR$<>"T" AND TR$<>"t" GOTO 330
Wright's Cosmology Calculator, 360 INPUT "Enter Age of the universe
116 REM THEN, in billions of years"; TTT
http://www.astro.ucla.edu/~wright/Cosm 370 TTT=TTT*1E+09 : IF TTT>299999 GOTO
oCalc.html 410
120 INPUT "Enter Matter Density of the 380 PRINT
universe, OmegaM (0 - 2.0)"; OMG 390 PRINT " You cannot see back to a time
130 IF OMG<0 OR OMG>2 GOTO 120 earlier than about 300,000 years"
140 INPUT "Enter Cosmological Constant, 392 REM My first article in S&T,
OmegaL (0. - 1.0)"; LAM Sept. 1997, page 59, explains why.
150 IF LAM<0 OR LAM>1 GOTO 140 400 PRINT : GOTO 330
160 INPUT "Will you enter (A)ge of the 410 PRINT " Finding what redshift matches
universe or (H)ubble constant"; AH$ Age THEN ......" : Z=(TN-TTT)/TN
170 IF AH$="H" OR AH$="h" GOTO 210 420 AZ=1/(1+Z) : TRS=0 : FOR I=1 TO N :
180 IF AH$<>"A" AND AH$<>"a" GOTO 160 A=AZ*(I-.5)/N
190 INPUT "Enter Age of the universe NOW 430 TRS=TRS+1/SQR(OMC+OMG/A+ORD/(A*A)
in billions of years"; TN +LAM*A*A) : NEXT I
200 TN=TN*1E+09 : HN=60 : M=8 : GOTO 220 440 TT=TRS/N*HFAC/HN*AZ : TOL=TOL+DELTA
210 INPUT "Enter Hubble constant in 450 IF TT/TTT>1-TOL AND TT/TTT<1+TOL GOTO
km/sec/Mpc"; HN : M=1 480
212 REM N is the number of iterations to 452 REM If Time Then (TT) doesn't match
be used in each FOR-NEXT. yet, adjust Z accordingly
214 REM Ned Wright's Cosmology 460 Z=Z*(.2+.8*TT/TTT) : GOTO 420
Calculator uses N=1000, but N=200 470 INPUT "Enter redshift value for the
216 REM is faster and still seems to be light we see NOW"; Z
quite accurate. 472 REM Calculate Distances
218 REM HFAC converts the Hubble 480 DCMR=0 : AZ=1/(1+Z) : FOR I=1 TO N
constant to units of km/sec/Mpc from 490 A=AZ+(1-AZ)*(I-.5)/N : ADOT=SQR(OMC+
speed (OMG/A)+(ORD/(A*A))+(LAM*A*A))
219 REM as a fraction of the speed of 500 DCMR=DCMR+1/(A*ADOT) : NEXT I
light per light year of distance. 510 DCMR=(1-AZ)*DCMR/N :
220 N=200 : DELTA=.0000001 : X=SQR(ABS(OMC))*DCMR : IF X<=.1 GOTO
HFAC=9.7782E+11 : E=2.718282 : 550
PARSEC=3.2616 520 IF OMC>0 GOTO 540
222 REM For user-specified TN, we now 530 RATIO=SIN(X)/X : GOTO 580
calculate HN, but since ORD depends 540 RATIO=.5*(E^X-E^(-X))/X : GOTO 580
224 REM on HN, we need to iterate AgeFac 550 Y=X*X : IF OMC>=0 GOTO 570
until the results converge. 560 Y=(-Y)
226 REM AgeFac is the factor to multiply 570 RATIO=1+Y/6+Y*Y/120
the inverse of the Hubble 580 DL=AZ*RATIO*DCMR/(AZ*AZ)*977.82/HN :
228 REM constant by to determine the age DN=DL/(1+Z) : DT=DN/(1+Z)
of the universe. 582 REM Calculate Time Then (TT) at
230 FOR J=1 TO M redshift Z
232 REM OMC is Omega(Curvature); OMC=0 590 AZ=1/(1+Z) : AGE=0 : FOR I=1 TO N
gives us a "flat" universe. 600 A=AZ*(I-.5)/N :
234 REM ORD is Omega(Radiation), which AGE=AGE+1/SQR(OMC+OMG/A+ORD/(A*A)
is radiation pressure, which was a +LAM*A*A) : NEXT I
236 REM major contributor to expansion 610 TT=HFAC/HN*AZ*AGE/N : TV=TN-TT :
when the universe was very young. DMOD=5*.4343*LOG(DL*1E+09/(10*PARSEC))
240 ORD=.4165/(HN*HN) : OMC=1-OMG-LAM-ORD 620 IF TT<300000 GOTO 380
: Z=5 : AZ=1/(1+Z) : AA=0 630 HT=HN*SQR(OMG*(1+Z)^3+(1-OMG-LAM-
242 REM Calc. age at redshift Z, and ORD)*(1+Z)^2+LAM+ORD*(1+Z)^4)
lookback time, and add them to get Age 640 ST=HT*DT/977.82 : SC=Z+1 :
244 REM Now (TN). For this calculation SN=HN*DN*1E+09/HFAC
we assume Z=5, but any value would do. 650 PRINT USING "Age Factor NOW
250 TRS=0 : TLB=0 : FOR I=1 TO N : (Age=Fac/H0) = ##.####";AGEFAC
A=AZ*(I-.5)/N : AA=AZ+(1-AZ)*(I-.5)/N 660 PRINT USING "Age of the universe NOW
260 TRS=TRS+1/SQR(OMC+(OMG/A)+(ORD/(A*A)) =####.#### billion years"; TN/1E+09
+(LAM*A*A)) 670 PRINT USING "Age of the universe THEN
270 TLB=TLB+1/SQR(OMC+(OMG/AA)+(ORD/ =####.#### billion years"; TT/1E+09
(AA*AA))+(LAM*AA*AA)) : NEXT I 680 PRINT USING "Light travel time
280 AGEFAC=TLB/N*(1-AZ)+TRS/N*AZ =####.#### billion years"; TV/1E+09
290 IF AH$="H" OR AH$="h" GOTO 310 690 PRINT USING "Redshift of the light we
300 HN=AGEFAC/TN*HFAC see NOW =#####.###"; Z
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 36 / 73

700 PRINT USING "Scale of the universe 1110 REM Distance Modulus =
NOW versus THEN =#####.###"; SC 45.741
710 PRINT USING "Distance of object THEN 1120 REM Speed away from us THEN =
= #####.### billion light-years"; DT 1.078 x speed of light*
720 PRINT USING "Distance of object NOW 1130 REM Speed away from us NOW =
= ######.### billion light-years"; DN 1.060 x speed of light*
730 PRINT USING "Luminosity Distance NOW 1140 REM Hubble constant THEN =
=#######.### billion light-years"; DL 167.55 km/sec/megaparsec
740 PRINT USING "Distance Modulus = 1150 REM Hubble constant NOW =
######.###"; DMOD 61.00 km/sec/megaparsec
750 PRINT USING "Speed away from us THEN 1160 REM * Not the object's own speed,
=####.### x speed of light*"; ST but caused by the expansion of space.
760 PRINT USING "Speed away from us NOW
=####.### x speed of light*"; SN
770 PRINT USING "Hubble constant THEN
=########.## km/sec/megaparsec"; HT
780 PRINT USING "Hubble constant NOW LUNAR.BAS ; 058;
=########.## km/sec/megaparsec"; HN Compute dates of lunar eclipses
790 PRINT " * Not the object's own speed,
but caused by the expansion of space."
800 END 10 Rem NEW AND FULL MOONS
900 REM --------------------------- 12 Rem
910 REM APPEARED IN COMPUTERS IN 14 Rem
ASTRONOMY, 16 R1 = 3.14159265 / 180: U = 0
920 REM SKY & TELESCOPE, AUGUST 2001, 18 INPUT "YEAR ";Y
PAGE 62. 19 G = 1: If Y < 1583 Then G = 0
930 REM Corrections made Sept. 2003 to 20 Print
lines 232, 550, and 630, with 22 K0 = Int((Y - 1900) * 12.3685)
932 REM many thanks to Bruce Nelson, a 24 T = (Y - 1899.5) / 100
great mathematician whose hobby 26 T2 = T * T: T3 = T * T * T
934 REM is cosmology and who decided to 28 J0 = 2415020 + 29 * K0
re-derive all these equations! 30 F0 = 0.0001178 * T2 - 0.000000155 * T3
936 REM The updates give smoother 32 F0 = F0 + 0.75933 + 0.53058868 * K0
results when OMC is small and more 34 F0 = F0 - 0.000837 * T - 0.000335 * T2
938 REM accurate results for HT and ST 36 J0 = J0 + Int(F0): F0 = F0 - Int(F0)
for very large values of Z. 38 M0 = K0 * 0.08084821133
940 REM --------------------------- 40 M0 = 360 * (M0 - Int(M0)) + 359.2242
950 REM ** SAMPLE RUN, for OmegaM=.35, 42 M0 = M0 - 0.0000333 * T2
OmegaL=.65, H0=61, and Z=1.7 ** 44 M0 = M0 - 0.00000347 * T3
960 REM Enter Matter Density of the 46 M1 = K0 * 0.07171366128
Universe, OmegaM (0 - 2.0)? .35 48 M1 = 360 * (M1 - Int(M1)) + 306.0253
970 REM Enter Cosmological Constant, 50 M1 = M1 + 0.0107306 * T2
OmegaL (0. - 1.0)? .65 52 M1 = M1 + 0.00001236 * T3
980 REM Will you enter (A)ge of the 54 B1 = K0 * 0.08519585128
universe or (H)ubble constant? H 56 B1 = 360 * (B1 - Int(B1)) + 21.2964
990 REM Enter Hubble constant in 58 B1 = B1 - 0.0016528 * T2
km/sec/Mpc? 61 60 B1 = B1 - 0.00000239 * T3
1000 REM Will you enter (T)ime THEN or 62 For K9 = 1 To 27 Step 2
(R)edshift of the light we see NOW? R 64 J = J0 + 14 * K9: F = F0 + 0.765294 *
1010 REM Enter redshift value for the K9
light we see NOW? 1.7 66 K = K9 / 2
1020 REM Age Factor NOW (Age=Fac/H0) = 68 M5 = (M0 + K * 29.10535608) * R1
0.9226 69 M6 = (M1 + K * 385.81691806) * R1
1030 REM Age of the universe NOW = 70 B6 = (B1 + K * 390.67050646) * R1
14.7887 billion years 71 F = F - 0.4068 * Sin(M6)
1040 REM Age of the universe THEN = 72 F = F + (0.1734 - 0.000393 * T) *
4.0054 billion years Sin(M5)
1050 REM Light travel time = 73 F = F + 0.0161 * Sin(2 * M6)
10.7833 billion years 74 F = F - 0.0104 * Sin(2 * B6)
1060 REM Redshift of the light we see NOW 75 F = F - 0.0074 * Sin(M5 - M6)
= 1.700 76 F = F - 0.0051 * Sin(M5 + M6)
1070 REM Scale of the universe NOW versus 77 F = F + 0.0021 * Sin(2 * M5)
THEN = 2.700 81 F = F + 0.5 / 1440
1080 REM Distance of object THEN = 82 J = J + Int(F): F = F - Int(F)
6.292 billion light-years 86 GoSub 100
1090 REM Distance of object NOW = 92 Next
16.987 billion light-years 94 GoTo 999
1100 REM Luminosity Distance NOW = 100 Rem LUNAR ECLIPSE SUBROUTINE
45.865 billion light-years 102 D7 = 0
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 37 / 73

104 If Abs(Sin(B6)) > 0.36 Then GoTo 196 1001 Rem THIS IS THE *COMPLETE*
106 S = 5.19595 - 0.0048 * Cos(M5) 1002 Rem PROGRAM FOR PREDICTING
108 S = S + 0.002 * Cos(2 * M5) 1003 Rem LUNAR ECLIPSES (SEE
110 S = S - 0.3283 * Cos(M6) 1004 Rem SKY & TELESCOPE, JUNE,
112 S = S - 0.006 * Cos(M5 + M6) 1005 Rem 1988, PAGE 640)
114 S = S + 0.0041 * Cos(M5 - M6) 1006 Rem ***********************
116 C1 = 0.207 * Sin(M5)
118 C1 = C1 + 0.0024 * Sin(2 * M5)
120 C1 = C1 - 0.039 * Sin(M6)
122 C1 = C1 + 0.0115 * Sin(2 * M6) MALLAM.BAS ; 041;
124 C1 = C1 - 0.0073 * Sin(M5 + M6) Precession of a satellite's orbit
126 C1 = C1 - 0.0067 * Sin(M5 - M6)
128 C1 = C1 + 0.0117 * Sin(2 * B6)
130 D9 = Abs(S * Sin(B6) + C1 * Cos(B6)) 10 REM PRECESSION OF A SATELLITE'S ORBIT
132 U = 0.0059 + 0.0046 * Cos(M5) DUE TO J2
134 U = U - 0.0182 * Cos(M6) 20 REM
136 U = U + 0.0004 * Cos(2 * M6) 30 GOSUB 260: J=0
138 U = U - 0.0005 * Cos(M5 + M6) 40 INPUT "Planet's name"; P$
140 RP = 1.2847 + U: RU = 0.7404 - U 50 FOR K=1 TO 9
142 MP = (1.5572 + U - D9) / 0.545 60 IF P$=PL$(K) THEN J=K
144 If MP < 0 Then GoTo 196 70 NEXT
146 MU = (1.0129 - U - D9) / 0.545 80 IF J=0 THEN 40
148 D5 = 1.5572 + U: D6 = 1.0129 - U 90 REM
150 D7 = 0.4679 - U 100 INPUT "Altitude of the satellite
152 N = (0.5458 + 0.04 * Cos(M6)) / 60 orbit (km)"; A
154 D5 = Sqr(D5 * D5 - D9 * D9) / N 110 INPUT "Inclination to the equator
156 If MU <= 0 Then GoTo 164 (degrees)"; I
158 D6 = Sqr(D6 * D6 - D9 * D9) / N 120 I=I/RD: REM Convert to radians
160 If MU <= 1 Then GoTo 164 130 REM
162 D7 = Sqr(D7 * D7 - D9 * D9) / N 140 K1=R(J)*R(J) * (R(J)+A)^-3.5 *
164 GoSub 900: Print SQR(GM(J))
166 Print "ECLIPSE DATE: "; Y; M; D1 150 N=-1.5*K1*J2(J)*COS(I)
168 Print " MAXIMUM PHASE: "; 160 P=.75*K1*J2(J) * (5*COS(I)*COS(I)-1)
170 Print H1; "h "; M9; "m UT" 170 N=N*RD*S: P=P*RD*S: REM Radians/sec
172 MP = Int(1000 * MP + 0.5) / 1000 to deg/day
174 Print " PENUMBRAL MAG: "; MP 180 REM
176 If MU <= 0 Then GoTo 182 190 PRINT "Precession of the node: "
178 MU = Int(1000 * MU + 0.5) / 1000 200 PRINT " ";N;"deg/day,
180 Print " UMBRAL MAG: "; MU ";N*Y;"deg/yr"
182 Print " SEMIDURATIONS --" 210 PRINT
184 D5 = Int(D5 + 0.5): Rem ROUND OFF 220 PRINT "Precession of pericenter: "
186 Print " PENUMBRA: "; D5; "m" 230 PRINT " ";P;"deg/day,
188 If MU < 0 Then GoTo 196 ";P*Y;"deg/yr"
190 D6 = Int(D6 + 0.5): D7 = Int(D7 + 240 REM
0.5) 250 END
192 Print " UMBRA: "; D6; "m" 260 REM READ IN DATA
194 Print " TOTALITY: "; D7; "m" 270 DIM PL$(9), GM(9), J2(9), R(9)
196 Return 280 RD=180/3.14159265#: REM Radians to
900 Rem JD --> CALENDAR degrees
905 Rem 290 Y=365.2422: REM Days per year
920 F = F + 0.5 300 S=86400: REM Seconds per day
925 If F < 1 Then GoTo 935 310 REM
930 F = F - 1: J = J + 1 320 DATA
935 If G = 1 Then GoTo 945 "MERCURY","VENUS","EARTH","MOON","MARS
940 A = J: GoTo 955 "
945 A1 = Int((J / 36524.25) - 51.12264) 330 DATA
950 A = J + 1 + A1 - Int(A1 / 4) "JUPITER","SATURN","URANUS","NEPTUNE"
955 B = A + 1524 340 FOR J=1 TO 9: READ PL$(J): NEXT
960 C = Int((B / 365.25) - 0.3343) 350 REM
965 D = Int(365.25 * C) 360 REM PLANETARY GM'S (KM^3/S^2)
970 E = Int((B - D) / 30.61) 370 DATA 22032, 324860, 398600, 4902,
975 D = B - D - Int(30.61 * E) + F 42828
980 M = E - 1: Y = C - 4716 380 DATA 125680000, 37931000, 5793900,
985 If E > 13.5 Then M = M - 12 6835000
990 If M < 2.5 Then Y = Y + 1 390 FOR J=1 TO 9: READ GM(J): NEXT
993 D1 = Int(D): H = 24 * (D - D1) 400 REM
994 H1 = Int(H): M9 = Int(60 * (H - H1)) 410 REM PLANETARY J2'S
997 Return 420 DATA 0.00006, 0.0000186, 0.001083,
999 End 0.0002027
1000 Rem ***********************
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 38 / 73

430 DATA 280 R(J,3)=X(J)*Y(J): R3=R3+R(J,3)


0.00196,0.014736,0.016480,0.003345,0.0 285 R(J,7)=Y1(J)-Y(J)/L: R7=R7+R(J,7)
043 290 R(J,8)=R(J,7)*X(J): R8=R8+R(J,8)
440 FOR J=1 TO 9: READ J2(J): NEXT 295 R(J,9)=R(J,7)*Y(J): R9=R9+R(J,9)
450 REM 300 NEXT J
460 REM PLANETARY RADII (KM) 305 REM Now solve for D, E, F, by
470 DATA 2440, 6050, 6378, 1738, 3398 Cramer's Rule
480 DATA 71492, 60268, 25559, 24760 310 DD=R1*(R2*N-YS*YS)-R3*(R3*N-XS*YS)
490 FOR J=1 TO 9: READ R(J): NEXT +XS*(R3*YS-XS*R2)
500 RETURN 315 D=R8*(R2*N-YS*YS)-R3*(R9*N-R7*YS)
510 REM +XS*(R9*YS-R7*R2)
520 REM This program by Anthony Mallama 320 E=R1*(R9*N-R7*YS)-R8*(R3*N-XS*YS)
predicts how +XS*(R3*R7-XS*R9)
530 REM a satellite in a low orbit 325 F=R1*(R2*R7-YS*R9)-R3*(R3*R7-
around the Earth XS*R9)+R8*(R3*YS-XS*R2)
540 REM or any other planet will change 330 D=D/DD: E=E/DD: F=F/DD
due to the 335 REM
550 REM planet's equatorial bulge. It 340 R4=0: R5=0: R6=0
is described 345 FOR J=1 TO N
560 REM fully in Sky & Telescope, May, 350 R(J,4)=X1(J)-X(J)/L: R4=R4+R(J,4)
1990, page 543. 355 R(J,5)=R(J,4)*X(J): R5=R5+R(J,5)
360 R(J,6)=R(J,4)*Y(J): R6=R6+R(J,6)
365 NEXT J
370 REM Now solve for A ,B, C, by
Cramer's Rule
MARCHE.BAS ; 040; 375 A=R5*(R2*N-YS*YS)-R3*(R6*N-R4*YS)
Astrometric positions of a comet or asteroid +XS*(R6*YS-R4*R2)
380 B=R1*(R6*N-R4*YS)-R5*(R3*N-XS*YS)
+XS*(R3*R4-XS*R6)
100 REM ASTROMETRIC REDUCTION 385 C=R1*(R2*R4-YS*R6)-R3*(R3*R4-
105 REM XS*R6)+R5*(R3*YS-XS*R2)
110 DIM X(10),Y(10),X1(10),Y1(10) 390 A=A/DD: B=B/DD: C=C/DD
115 DIM A(10),D(10),R(10,9),RA(10),RD(10) 395 PRINT
120 DEFDBL A-H,K-Z 400 PRINT " Plate Constants "
125 PI=3.141592653589793: DR=PI/180 405 PRINT " R.A. Dec.
130 INPUT "Camera focal length";L 410 PRINT USING "A = ##.##### D =
135 PRINT "R.A. of plate center (h,m,s)"; ##.#####";A;D
140 GOSUB 630: A0=V*15*DR 415 PRINT USING "B = ##.##### E =
145 PRINT "Dec. of plate center (d,m,s)"; ##.#####";B;E
150 GOSUB 630: D0=V*DR: SD=SIN(D0): 420 PRINT USING "C = ##.##### F =
CD=COS(D0) ##.#####";C;F
160 INPUT "Equinox, epoch";EQ,EP 425 REM
165 T=EP-EQ 430 REM NOW FIND RESIDUALS
170 INPUT "How many stars (4-10)";N 435 AS=0: DS=0
175 FOR J=1 TO N 440 FOR J=1 TO N
180 PRINT 445 RA(J)=X(J)-L*(X1(J)-(A*X(J)+B*Y(J)
185 PRINT "R.A. of star ";J;"(h,m,s)"; +C))
190 GOSUB 630 450 RD(J)=Y(J)-L*(Y1(J)-(D*X(J)+E*Y(J)
195 INPUT "Proper motion (sec/yr)";M1 +F))
200 A(J)=(V+T*M1/3600)*15*DR 455 AS=AS+((RA(J)/L)*3600/
205 PRINT "Dec. (d,m,s)"; (DR*15*COS(D0)))^2
210 GOSUB 630 460 DS=DS+((RD(J)/L)*3600/DR)^2
215 INPUT "Proper motion (arcsec/yr)";M2 465 NEXT J
220 D(J)=(V+T*M2/3600)*DR: SJ=SIN(D(J)): 470 S1=SQR(AS/(N-3)): S2=SQR(DS/(N-3))
CJ=COS(D(J)) 475 PRINT
225 H=SJ*SD+CJ*CD*COS(A(J)-A0) 480 PRINT "Residuals R.A.
230 X1(J)=CJ*SIN(A(J)-A0)/H Dec."
235 Y1(J)=(SJ*CD-CJ*SD*COS(A(J)-A0))/H 482 A$=" Star ## #.##### #.#####"
240 INPUT "Measured X,Y";X(J),Y(J) 485 FOR J=1 TO N
245 NEXT J 490 PRINT USING A$;J;RA(J);RD(J)
250 PRINT 495 NEXT J
255 INPUT "Measured X,Y of target";X,Y 500 PRINT
260 R1=0: R2=0: R3=0: R7=0: R8=0: R9=0: 505 REM Find standard coordinates of
XS=0: YS=0 target
265 FOR J=1 TO N 510 XX=A*X+B*Y+C+X/L: YY=D*X+E*Y+F+Y/L
270 XS=XS+X(J): YS=YS+Y(J): 515 B=CD-YY*SD: G=SQR(XX*XX+B*B)
R(J,1)=X(J)*X(J) 520 REM
275 R1=R1+R(J,1): R(J,2)=Y(J)*Y(J): 525 REM Find right ascension of target
R2=R2+R(J,2) 530 A5=ATN(XX/B): IF B<0 THEN A5=A5+PI
535 A6=A5+A0: IF A6>2*PI THEN A6=A6-2*PI
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 39 / 73

540 IF A6<0 THEN A6=A6+2*PI 165 Q=A1: GOSUB 710: A1=Q*DR


545 V=A6/(DR*15): GOSUB 660: A1=V1: 170 Q=D1: GOSUB 710: D1=Q*DR
A2=V2: A3=V3 175 D9=COS(D5)*SIN(A1-A5)
550 REM 180 N9=SIN(D1)*COS(D5)*COS(A1-A5)
555 REM Find declination of target 185 N9=N9-COS(D1)*SIN(D5)
560 D6=ATN((SD+YY*CD)/G): V=D6/DR: GOSUB 190 K=RD*ATN(N9/D9)
660 195 IF D9<0 THEN K=K+180
570 D1=V1: D2=V2: D3=V3 205 READ W0,W1,W2: GOSUB 304
575 REM 215 REM
580 PRINT "For target:" 220 REM Planetocentric decl. Earth
585 PRINT 222 SD=-SIN(D1)*SIN(D5)
590 PRINT "Right ascension "; 224 SD=SD-COS(D1)*COS(D5)*COS(A1-A5)
592 PRINT USING "## ## ##.###";A1;A2;A3 226 DE=RD*ATN(SD/SQR(1-SD*SD))
595 PRINT USING " Std. dev. 228 REM
##.###";S1 230 REM P.A. of Axis
600 PRINT 232 SP=COS(D1)*SIN(A1-A5)
605 PRINT "Declination ";S$; 234 CP=SIN(D1)*COS(D5)
610 PRINT USING "## ## ##.##";D1;D2;D3 236 CP=CP-COS(D1)*SIN(D5)*COS(A1-A5)
615 PRINT USING " Std. dev. 238 PA=RD*ATN(SP/CP)
##.##";S2 240 IF CP<0 THEN PA=PA+180
620 END 242 IF PA<0 THEN PA=PA+360
625 REM 244 IF PA>=360 THEN PA=PA-360
630 REM Input of sexagesimal values 248 REM
635 INPUT V$,V2,V3 250 REM Phase and magnitude
640 S=1: IF LEFT$(V$,1)="-" THEN S=-1 252 K4=((R4+RR)^2-R*R)/(4*R4*RR)
645 V1=ABS(VAL(V$)): 254 CI=(R4*R4+RR*RR-R*R)/(2*R4*RR)
V=S*(V1+V2/60+V3/3600) 256 I=RD*ATN(SQR(1-CI*CI)/CI)
655 RETURN 258 M4=5*LOG(RR*R4)/LOG(10)
660 REM Output of sexagesimal values 260 M4=-1.52+.016*I+M4
665 S$="+": IF V<0 THEN S$="-" 262 REM
670 V=ABS(V): V1=INT(V): VM=60*(V-V1) 270 A1$="Central meridian: ###.##"
675 V2=INT(VM): V3=60*(VM-V2) 272 A2$="P.A. of axis: ###.##"
680 RETURN 274 A3$="Decl. of Earth: ###.##"
690 REM 276 A4$="Angular diameter: ###.#"
700 REM This program is used to analyze 278 A5$="Phase: ###.###"
measurements 280 A6$="Magnitude: ###.#"
710 REM of minor planet or comet 282 PRINT USING A1$;C
positions on a 284 PRINT USING A2$;PA
720 REM photographic plate and deduce 286 PRINT USING A3$;DE
precise 288 PRINT USING A4$;9.359999/RR
730 REM coordinates. Written by Jordan 290 PRINT USING A5$;K4
D. Marche 292 PRINT USING A6$;M4
740 REM and explained by him in Sky & 300 END
Telescope 304 REM Rotations from epoch
750 REM for July, 1990, page 71. 305 W=W0+W1*(D-.0057755*RR)+W2*T
306 Q=W-K: GOSUB 710: C=Q
308 RETURN
309 REM North Pole R.A.
310 DATA 317.681, +0.678
MARS.BAS ; 039; 311 REM North Pole Dec.
Physical ephemeris of Mars 312 DATA 52.886, +0.352
313 REM Rotation
314 DATA 176.655,350.8919830,0.62
100 REM PHYSICAL EPHEMERIS OF MARS 315 REM
105 REM 320 REM Calendar --> JD
106 DEFDBL A-Z 325 REM
110 DT=57: REM Value of ET-UT (sec) 330 INPUT "YR,MO,DAY ";Y,M,D
111 REM in 1990; change DT for 335 INPUT "UT (H,M,S) ";H1,M1,S1
112 REM other years as needed!! 340 D=D+H1/24+M1/1440+S1/86400!
115 P1=3.14159265# 345 G=1: IF Y<1582 THEN G=0
120 P2=2*P1: RD=180/P1: DR=1/RD 350 D1=INT(D): F=D-D1-.5
125 GOSUB 330: REM Get date and UT 355 J=-INT(7*(INT((M+9)/12)+Y)/4)
130 D=(J-2451545!)+F 360 IF G=0 THEN 380
135 D=D+DT/86400!: REM UT to ET 365 S=SGN(M-9): A=ABS(M-9)
140 GOSUB 405: PRINT 370 J3=INT(Y+S*INT(A/7))
145 READ A1,A2,D1,D2 375 J3=-INT((INT(J3/100)+1)*3/4)
150 T=T-1: REM Cent from 2000.0 380 J=J+INT(275*M/9)+D1+G*J3
155 A1=A1+A2*T 385 J=J+1721027!+2*G+367*Y
160 D1=D1+D2*T 390 IF F>=0 THEN 400
395 F=F+1: J=J-1
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 40 / 73

400 RETURN 710 REM Normalize Degrees


405 REM Fundamental Arguments 715 Q=Q/360: Q=Q-INT(Q): Q=Q*360
410 REM 720 RETURN
415 T=D/36525!+1 800 REM This program computes
420 REM T=Centuries from 1900.0 810 REM a number of interesting
425 L0=.779072+.00273790931#*D 811 REM things about Mars' tele-
430 G0=.993126+.0027377785#*D 812 REM scopic appearance at any
431 L4=.987353+.00145575328#*D 813 REM date and time (UT). Valid
432 G4=.053856+.00145561327#*D 814 REM for several centuries, pro-
433 F4=.849694+.00145569465#*D 815 REM vided that you reset
435 L5=.089608+.00023080893#*D 816 REM the value of 'Delta-T' in
440 G5=.056531+.00023080893#*D 817 REM line 110 to an appropriate
445 G6=.882987+9.294371E-05*D 818 REM value. Written by Roger
450 L0=(L0-INT(L0))*P2 819 REM Sinnott, this program is
455 G0=(G0-INT(G0))*P2 820 REM explained more fully in
456 L4=(L4-INT(L4))*P2 821 REM Sky & Telescope magazine
457 G4=(G4-INT(G4))*P2 822 REM for Sept. 1990, page 296.
458 F4=(F4-INT(F4))*P2
460 L5=(L5-INT(L5))*P2
465 G5=(G5-INT(G5))*P2
470 G6=(G6-INT(G6))*P2
475 REM Sun METEOR.BAS ; 070;
480 L=6910*SIN(G0) Compute flight of meteors
485 L=L+72*SIN(2*G0)
490 L=L-17*T*SIN(G0)
495 L=L-7*COS(G0-G5) 10 REM METEOR FLIGHT
500 R=1.00014-.01675*COS(G0) 12 PRINT
505 R=R-.00014*COS(2*G0) 14 INPUT "INITIAL MASS (KG)";MM
510 L=L0+L/206265! 16 INPUT "DENSITY (KG PER CUBIC METER)";D
515 REM Mars 18 INPUT "SPEED AT ENTRY (KM/S)";V
520 M=38451!*SIN(G4) 20 INPUT "ZENITH ANGLE (DEG)";Z
525 M=M+2238*SIN(2*G4) 22 A=1: L=0.001: G=0.75: H0=0.2:
530 M=M+181*SIN(3*G4) H1=500000
535 M=M-52*SIN(2*F4) 24 H=150000: T=0: T9=0.01: T0=0: T1=0.1
540 M=M+37*T*SIN(G4) 26 M=MM: Z=COS(Z*3.1416/180): V=V*1000
545 M=M-22*COS(G4-2*G5) 28 PRINT: GOSUB 64
550 M=M-19*SIN(G4-G5) 30 R=EXP(-H/6500): IF H<=130000 THEN GOTO
555 M=M+17*COS(G4-G5) 34
556 M=M+17*SIN(4*G4) 32 R=2E-9*EXP(-(H-130000)/40000)
557 M=M-16*COS(2*G4-2*G5) 34 A2=G*A*R*V*V/((M^0.33333)*(D^0.66667))
558 M=M+13*COS(G0-2*G4) 36 M0=H0*A*R*V*V*V*((M/D)^0.66667)/(2*H1)
559 M=M-10*SIN(G4-2*F4) 38 V9=A2*T9: M9=M0*T9: T=T+T9: H=H-V*T9*Z
560 M=M+7*COS(G0-G4) 40 V=V-V9: M=M-M9
561 M=M-7*COS(2*G0-3*G4) 42 IF V<100 OR M<0 OR H<0 THEN GOTO 82
564 B=6603*SIN(F4) 44 IF M0/M<0.1 AND T0=0 THEN GOTO 30
565 B=B+622*SIN(G4-F4) 46 IF (T-T0)<T1 THEN GOTO 30
570 B=B+615*SIN(G4+F4) 48 PRINT INT(T*100)/100;: REM TIME
575 B=B+64*SIN(2*G4+F4) 50 PRINT TAB(9);INT(H/100)/10;: REM
580 R4=1.53031-.1417*COS(G4) HEIGHT
585 R4=R4-.0066*COS(2*G4) 52 PRINT TAB(18);INT(V/100)/10;: REM
590 R4=R4-.00047*COS(3*G4) SPEED
615 L4=L4+M/206265!: B4=B/206265! 54 PRINT TAB(27);INT(A2);: REM
620 N9=R4*COS(B4)*SIN(L4-L) DECELERATION
625 D9=R4*COS(B4)*COS(L4-L)+R 56 PRINT TAB(36);INT(M*10000/MM)/100;:
630 L1=ATN(N9/D9) REM PERCENT OF MASS
635 IF D9<0 THEN L1=L1+P1 58 MV=6.8-1.086*LOG(0.5*V*V*M0*L*1E10/
640 LL=L1+L (H*H))
645 V=N9*N9+D9*D9 60 PRINT TAB(45);INT(10*MV)/10: REM
650 RR=SQR(V+(R4*SIN(B4))^2) VISUAL MAGNITUDE
655 S=R4*SIN(B4)/RR 62 T0=T: GOTO 30
660 BB=ATN(S/SQR(1-S*S)) 64 REM HEADING
665 E=(84428!-47*T)/206265! 66 PRINT " TIME HEIGHT SPEED
670 N9=SIN(LL)*COS(E)-TAN(BB)*SIN(E) DECEL MASS VISUAL"
675 D9=COS(LL): A5=ATN(N9/D9) 68 PRINT " (S) (KM) (KM/S)
680 IF D9<0 THEN A5=A5+P1 (M/S/S) (%) MAG"
685 S=SIN(BB)*COS(E) 70 RETURN
690 S=S+COS(BB)*SIN(E)*SIN(LL) 71 REM *************************
695 D5=ATN(S/SQR(1-S*S)) 72 REM FROM "SKY & TELESCOPE"
700 RETURN ASTRONOMICAL COMPUTING
705 REM
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 41 / 73

73 REM JANUARY, 1987, PAGE 83 410 IF Q$<>"y" AND Q$<>"Y" THEN 440
74 REM ************************* 420 INPUT "New value for D";D
82 END 430 HI=0: LO=0: GOTO 270
440 END
450 REM Solve 4 linear equations for 4
unknowns
460 REM (BYTE, August, 1983, page
MIRROR.BAS ; 043; 396)
Foucault mirror test analysis 470 DE=1
480 Y=N+1: FOR X=1 TO N: Y=Y+1: M(X,Y)=1:
NEXT X
10 ' FOUCAULT MIRROR TEST AT FOUR ZONES 490 FOR G=1 TO N
20 ' 500 J=2*N+1: DV=M(G,G): DE=DE*DV
30 DIM A(4,9) 510 FOR H=1 TO J: M(G,H)=M(G,H)/DV: NEXT
40 INPUT "Mirror's diameter ";W H
50 INPUT "Radius of curvature";RR 520 FOR S=1 TO N
60 R=W/2 530 Q=M(S,G): IF S=G THEN 550
70 Z1=.3: Z2=.6: Z3=.8: Z4=.95: REM 540 FOR T=1 TO J: M(S,T)=M(S,T)-M(G,T)*Q:
ZONES NEXT T
80 X1=Z1*R: X2=Z2*R: X3=Z3*R: X4=Z4*R 550 NEXT S: NEXT G
90 L=.000022: REM WAVELENGTH IN INCHES 560 RETURN
100 INPUT "Four zonal 570 REM PREPARE CHART
measurements";V1,V2,V3,V4 580 CLS: SCREEN 9 : Y1=85: Y2=95: YC=90
110 F1=(X1/(2*RR*RR*L))*(X1*X1/RR-V1) 590 W1=400: H0=100: H1=110: H3=H0+W1
120 F2=(X2/(2*RR*RR*L))*(X2*X2/RR-V2) 600
130 F3=(X3/(2*RR*RR*L))*(X3*X3/RR-V3) P1=H0+W1*Z1:P2=H0+W1*Z2:P3=H0+W1*Z3:P4
140 F4=(X4/(2*RR*RR*L))*(X4*X4/RR-V4) =H0+W1*Z4
150 A1=(X1)^7: B1=(X1)^5: C1=(X1)^3: 610 LINE (H0,10)-(H0,170): LINE (H0,YC)-
D1=X1 (H3,YC)
160 A2=(X2)^7: B2=(X2)^5: C2=(X2)^3: 620 LINE (H0,10)-(H1,10): LINE (H0,50)-
D2=X2 (H1,50)
170 A3=(X3)^7: B3=(X3)^5: C3=(X3)^3: 630 LINE (H0,130)-(H1,130): LINE
D3=X3 (H0,170)-(H1,170)
180 A4=(X4)^7: B4=(X4)^5: C4=(X4)^3: 640 LINE (P1,Y1)-(P1,Y2): LINE (P2,Y1)-
D4=X4 (P2,Y2)
190 M(1,1)=A1: M(1,2)=B1: M(1,3)=C1: 650 LINE (P3,Y1)-(P3,Y2): LINE (P4,Y1)-
M(1,4)=D1 (P4,Y2)
200 M(2,1)=A2: M(2,2)=B2: M(2,3)=C2: 660 LINE (H3,Y1)-(H3,Y2)
M(2,4)=D2 670 LOCATE 1,1: PRINT "+0.2 wave"
210 M(3,1)=A3: M(3,2)=B3: M(3,3)=C3: 680 LOCATE 4,1: PRINT "+0.1 wave"
M(3,4)=D3 690 LOCATE 7,1: PRINT " 0 wave"
220 M(4,1)=A4: M(4,2)=B4: M(4,3)=C4: 700 LOCATE 10,1: PRINT "-0.1 wave"
M(4,4)=D4 710 LOCATE 13,1: PRINT "-0.2 wave"
230 M(1,5)=F1: M(2,5)=F2: M(3,5)=F3: 720 LOCATE 14,13: PRINT "Center"
M(4,5)=F4 730 LOCATE 14,61: PRINT "Edge"
240 N=4: GOSUB 480: H=0: L=0 740 RETURN
250 A=M(1,5): B=M(2,5): C=M(3,5): 800 REM
D=M(4,5) 810 REM For IBM PCs with VGA graphics,
260 D=-A*R^6/4-B*R^4/3-C*R^2/2 this
270 GOSUB 570: LINE (H0,YC)-(H0+1,YC) 820 REM program analyzes the results of
280 FOR I=0 TO 1.001 STEP .05 a
290 X=I*R: 830 REM Foucault knife-edge test of a
Y=A*X^8/8+B*X^6/6+C*X^4/4+D*X^2/2 parab-
300 LINE -(H0+I*W1,YC-Y*W1) 840 REM oloidal telescope mirror, giving
310 REM PRINT "Zone ";I;TAB(20);"Surface the
error ";Y 850 REM surface and wavefront error in
320 IF Y>HI THEN HI=Y wave-
330 IF Y<LO THEN LO=Y 860 REM lengths of light. Written by
340 NEXT I Roger
350 PRINT 870 REM Sinnott, it is discussed in Sky
360 PRINT USING "Coefficient D: &
###.####";D 880 REM Telescope magazine for February,
370 PRINT USING "Surface error: 1990,
###.###";HI-LO 890 REM page 195.
380 PRINT USING "Wavefront
error:###.###";2*(HI-LO)
390 PRINT
400 INPUT "Want to try a different D (y
or n)";Q$ MODEL.BAS ; 076;
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 42 / 73

Create model of star cluster 60 MM=M+9: IF MM>=12 THEN MM=MM-12


70 K1=INT(365.25*(YY+4712))
80 K2=INT(30.6*MM+.5)
10 REM MAKE A GLOBULAR 90 K3=INT(INT((YY/100)+49)*.75)-38
12 REM 100 J=K1+K2+D+59: ' JD for dates in
14 R0=20: R2=R0*R0: R3=R2*R0 Julian calendar
16 P1=3.14159265# 110 IF J>2299160# THEN J=J-K3: ' For
18 C0=P1*P1*R3/4 Gregorian calendar
20 R1=R0/SQR(2) 120 ' J is the Julian date at 12h UT on
22 XM=512: YM=512 day in question
24 X2=XM/2: Y2=YM/2: S=5 130 '
26 INPUT "HOW MANY STARS ";T 140 ' Calculate illumination (synodic)
27 RANDOMIZE TIMER phase
28 CLS: REM CLEAR SCREEN 150 V=(J-2451550.1#)/29.530588853#: GOSUB
30 FOR I=1 TO T 400: IP=V
32 C=C0*RND: R=R1 160 AG=IP*29.53: ' Moon's age in days
34 REM 170 IP=IP*P2: ' Convert phase to
36 REM NOW FIND R radians
38 FOR K=1 TO 5 180 '
40 GOSUB 100 190 ' Calculate distance from
42 R=R+(C-C1)/D anomalistic phase
44 NEXT K 200 V=(J-2451562.2#)/27.55454988#: GOSUB
46 REM 3-DIMENSIONAL PLACE 400: DP=V
48 X=RND-.5 210 DP=DP*P2: ' Convert to radians
50 Y=RND-.5 220 DI=60.4-3.3*COS(DP)-.6*COS(2*IP-
52 Z=RND-.5 DP)-.5*COS(2*IP)
54 S1=SQR(X*X+Y*Y+Z*Z) 230 '
56 IF S1>.5 THEN GOTO 48 240 ' Calculate latitude from nodal
58 REM POINT IS NOW IN SPHERE (draconic) phase
60 R=R*S1: X=X*R: Y=Y*R: Z=Z*R 250 V=(J-2451565.2#)/27.212220817#: GOSUB
62 GOSUB 200 400: NP=V
64 NEXT I 260 NP=NP*P2: ' Convert to radians
66 END 270 LA=5.1*SIN(NP)
68 REM 280 '
100 REM NEWTON-RAPHSON ITERATION 290 ' Calculate longitude from sidereal
105 A=R/R0 motion
110 C1=ATN(A)*.5*R3 300 V=(J-2451555.8#)/27.321582241#: GOSUB
115 A=1+A*A 400: RP=V
120 C1=C1+R*.5*R2/A 310 LO=360*RP+6.3*SIN(DP)
125 C1=P1*(C1-R*R2/(A*A)) +1.3*SIN(2*IP-DP)+.7*SIN(2*IP)
130 D=4*P1*R*R/(A*A*A) 320 '
135 RETURN 330 PRINT USING "Moon's age from new
140 REM (days): ###";AG
200 REM 2-DIMENSIONAL PLOT 340 PRINT USING "Distance (Earth radii):
203 SCREEN 9 ###";DI
205 X=X*S+X2: Y=Y*S+Y2 350 PRINT USING "Ecliptic latitude
210 IF X<0 OR Y<0 THEN 225 (degrees): ###";LA
215 IF X>=XM OR Y>=YM THEN 225 360 PRINT USING "Ecliptic longitude
220 PSET(X,Y) (degrees): ###";LO
225 RETURN 370 PRINT: INPUT "Continue (y or n)";Q$
230 REM ------------------------ 380 IF Q$<>"N" AND Q$<>"n" THEN GOTO 40
240 REM APPEARED IN ASTRONOMICAL 390 END
250 REM COMPUTING, SKY & TELE- 400 ' Normalize values to range 0 to 1
260 REM SCOPE, APRIL, 1986 410 V=V-INT(V): IF V<0 THEN V=V+1
270 REM ------------------------ 420 RETURN
430 '
440 ' This program helps anyone who needs
to know the Moon's
450 ' phase (age), distance, and position
MOONFX.BAS ; 024; along the ecliptic on
Moon phase and distance on any given date 460 ' any date within several thousand
years in the past or future.
470 ' To illustrate its application,
10 ' MOON EFFECTS by Bradley E. Schaefer Bradley Schaefer applied it
20 DEFDBL A-Z 480 ' to a number of famous events
30 P2=2*3.14159: ' Radians in a full influenced by the Moon in
circle 490 ' World War II. His article appeared
40 INPUT "Year, month, day";Y,M,D in Sky & Telescope for
50 YY=Y-INT((12-M)/10) 500 ' April 1994, page 86.
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 43 / 73

25 INPUT "TIME ZONE (HRS)";H


30 L5=L5/360: Z0=H/24
35 GOSUB 760: T=(J-2451545)+F
MOONS.BAS ; 088; 40 GOSUB 245: T=T+Z0
Dates and times of new and full Moon 45 REM
50 REM POSITION LOOP
55 FOR I=1 TO 3
10 REM NEW AND FULL MOONS 60 GOSUB 495: M(I,1)=A5
12 REM 65 M(I,2)=D5: M(I,3)=R5: T=T+0.5
14 REM 70 NEXT
16 R1=3.14159265/180: U=0 75 IF M(2,1)>M(1,1) THEN 85
18 INPUT "YEAR ";Y 80 M(2,1)=M(2,1)+P2
20 PRINT 85 IF M(3,1)>M(2,1) THEN 95
22 K0=INT((Y-1900)*12.3685) 90 M(3,1)=M(3,1)+P2
24 T=(Y-1899.5)/100 95 Z1=R1*(90.567-41.685/M(2,3))
26 T2=T*T: T3=T*T*T 100 S=SIN(B5*R1): C=COS(B5*R1)
28 J0=2415020+29*K0 105 Z=COS(Z1): M8=0: W8=0: PRINT
30 F0=0.0001178*T2-0.000000155*T3 110 A0=M(1,1): D0=M(1,2)
32 F0=F0+0.75933+0.53058868*K0 115 FOR C0=0 TO 23
34 F0=F0-0.000837*T-0.000335*T2 120 P=(C0+1)/24
36 J=J+INT(F): F=F-INT(F) 125 F0=M(1,1):F1=M(2,1):F2=M(3,1)
38 M0=K0*0.08084821133 130 GOSUB 225: A2=F
40 M0=360*(M0-INT(M0))+359.2242 135 F0=M(1,2):F1=M(2,2):F2=M(3,2)
42 M0=M0-0.0000333*T2 140 GOSUB 225: D2=F
44 M0=M0-0.00000347*T3 145 GOSUB 285: A0=A2:D0=D2:V0=V2
46 M1=K0*0.07171366128 150 NEXT
48 M1=360*(M1-INT(M1))+306.0253 155 GOSUB 450: REM SPECIAL MSG?
50 M1=M1+0.0107306*T2 160 END
52 M1=M1+0.00001236*T3 165 REM
54 B1=K0*0.08519585128 170 REM CONSTANTS
56 B1=360*(B1-INT(B1))+21.2964 175 DIM M(3,3)
58 B1=B1-0.0016528*T2 180 P1=3.14159265: P2=2*P1
60 B1=B1-0.00000239*T3 185 R1=P1/180: K1=15*R1*1.0027379
62 FOR K9=0 TO 28 190 S$="MOONSET AT "
64 J=J0+14*K9: F=F0+0.765294*K9 195 R$="MOONRISE AT "
66 K=K9/2 200 M1$="NO MOONRISE THIS DATE"
68 M5=(M0+K*29.10535608)*R1 205 M2$="NO MOONSET THIS DATE"
69 M6=(M1+K*385.81691806)*R1 210 M3$="MOON DOWN ALL DAY"
70 B6=(B1+K*390.67050646)*R1 215 M4$="MOON UP ALL DAY"
71 F=F-0.4068*SIN(M6) 220 RETURN
72 F=F+(0.1734-0.000393*T)*SIN(M5) 225 REM 3-POINT INTERPOLATION
73 F=F+0.0161*SIN(2*M6) 230 A=F1-F0: B=F2-F1-A
74 F=F+0.0104*SIN(2*B6) 235 F=F0+P*(2*A+B*(2*P-1))
75 F=F-0.0074*SIN(M5-M6) 240 RETURN
76 F=F-0.0051*SIN(M5+M6) 245 REM LST AT 0H ZONE TIME
77 F=F+0.0021*SIN(2*M5) 250 T0=T/36525
78 F=F+0.0010*SIN(2*B6-M6) 255 S=24110.5+8640184.813*T0
82 J=J+INT(F): F=F-INT(F) 260 S=S+86636.6*Z0+86400*L5
84 IF U=0 THEN PRINT " NEW MOON "; 265 S=S/86400: S=S-INT(S)
86 IF U=1 THEN PRINT "FULL MOON "; 270 T0=S*360*R1
88 PRINT J;F 275 RETURN
90 U=U+1: IF U=2 THEN U=0 280 REM
92 NEXT 285 REM TEST AN HOUR FOR AN EVENT
94 END 290 L0=T0+C0*K1: L2=L0+K1
95 REM ------------------------ 295 IF A2<A0 THEN A2=A2+2*P1
96 REM APPEARED IN ASTRONOMICAL 300 H0=L0-A0: H2=L2-A2
97 REM COMPUTING, SKY & TELE- 305 H1=(H2+H0)/2: REM HOUR ANGLE
98 REM SCOPE, MARCH, 1985 310 D1=(D2+D0)/2: REM DEC
99 REM ------------------------ 315 IF C0>0 THEN 325
320 V0=S*SIN(D0)+C*COS(D0)*COS(H0)-Z
325 V2=S*SIN(D2)+C*COS(D2)*COS(H2)-Z
330 IF SGN(V0)=SGN(V2) THEN 440
MOONUP.BAS ; 050; 335 V1=S*SIN(D1)+C*COS(D1)*COS(H1)-Z
340 A=2*V2-4*V1+2*V0: B=4*V1-3*V0-V2
Compute moonrise-moonset times for any place
345 D=B*B-4*A*V0: IF D<0 THEN 440
350 D=SQR(D)
10 REM MOONRISE-MOONSET 355 IF V0<0 AND V2>0 THEN PRINT R$;
15 GOSUB 170 360 IF V0<0 AND V2>0 THEN M8=1
20 INPUT "LAT, LONG (DEG)";B5,L5 365 IF V0>0 AND V2<0 THEN PRINT S$;
370 IF V0>0 AND V2<0 THEN W8=1
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 44 / 73

375 E=(-B+D)/(2*A) 725 REM


380 IF E>1 OR E<0 THEN E=(-B-D)/(2*A) 730 REM COMPUTE RA, DEC, DIST
385 T3=C0+E+1/120: REM ROUND OFF 735 S=W/SQR(U-V*V)
390 H3=INT(T3): M3=INT((T3-H3)*60) 740 A5=L+ATN(S/SQR(1-S*S))
395 PRINT USING "##:##";H3;M3; 745 S=V/SQR(U):D5=ATN(S/SQR(1-S*S))
400 H7=H0+E*(H2-H0) 750 R5=60.40974*SQR(U)
405 N7=-COS(D1)*SIN(H7) 755 RETURN
410 D7=C*SIN(D1)-S*COS(D1)*COS(H7) 760 REM CALENDAR --> JD
415 A7=ATN(N7/D7)/R1 765 INPUT "Y,M,D ";Y,M,D
420 IF D7<0 THEN A7=A7+180 770 G=1: IF Y<1582 THEN G=0
425 IF A7<0 THEN A7=A7+360 775 D1=INT(D): F=D-D1-0.5
430 IF A7>360 THEN A7=A7-360 780 J=-INT(7*(INT((M+9)/12)+Y)/4)
435 PRINT USING ", AZ ###.#";A7 785 IF G=0 THEN 805
440 RETURN 790 S=SGN(M-9): A=ABS(M-9)
445 REM 795 J3=INT(Y+S*INT(A/7))
450 REM SPECIAL MESSAGE ROUTINE 800 J3=-INT((INT(J3/100)+1)*3/4)
455 IF M8=0 AND W8=0 THEN 475 805 J=J+INT(275*M/9)+D1+G*J3
460 IF M8=0 THEN PRINT M1$ 810 J=J+1721027+2*G+367*Y
465 IF W8=0 THEN PRINT M2$ 815 IF F>=0 THEN 825
470 GOTO 485 820 F=F+1: J=J-1
475 IF V2<0 THEN PRINT M3$ 825 RETURN
480 IF V2>0 THEN PRINT M4$ 900 REM ***************************
485 RETURN 910 REM THIS PROGRAM COMPUTES THE
490 REM 920 REM TIMES OF MOONRISE AND MOON-
495 REM FUNDAMENTAL ARGUMENTS 930 REM SET ANYWHERE IN THE WORLD.
500 L=0.606434+0.03660110129*T 940 REM FROM SKY & TELESCOPE, JULY,
505 M=0.374897+0.03629164709*T 950 REM 1989, PAGE 78.
510 F=0.259091+0.03674819520*T 960 REM ***************************
515 D=0.827362+0.03386319198*T
520 N=0.347343-0.00014709391*T
525 G=0.993126+0.00273777850*T
530 L=L-INT(L): M=M-INT(M)
535 F=F-INT(F): D=D-INT(D) MSACHART.BAS ; 005;
540 N=N-INT(N): G=G-INT(G) Millennium Star Atlas chart number
545 L=L*P2: M=M*P2: F=F*P2
550 D=D*P2: N=N*P2: G=G*P2
555 V=0.39558*SIN(F+N) 10 REM Chart number for
560 V=V+0.08200*SIN(F) 20 REM The Millennium Star Atlas
565 V=V+0.03257*SIN(M-F-N) 30 REM by Laurent Corp
570 V=V+0.01092*SIN(M+F+N) 40 CLS
575 V=V+0.00666*SIN(M-F) 50 PRINT : PRINT "Enter 2000.0 position"
580 V=V-0.00644*SIN(M+F-2*D+N) 60 PRINT : INPUT "R.A. (h,m,s)";H,M,S
585 V=V-0.00331*SIN(F-2*D+N) 70 IF H<0 OR H>=24 THEN 60
590 V=V-0.00304*SIN(F-2*D) 80 IF M<0 OR M>=60 THEN 60
595 V=V-0.00240*SIN(M-F-2*D-N) 90 IF S<0 OR S>=60 THEN 60
600 V=V+0.00226*SIN(M+F) 100 HM=H
605 V=V-0.00108*SIN(M+F-2*D) 110 H=H+M/60+S/3600
610 V=V-0.00079*SIN(F-N) 120 PRINT : INPUT "Dec. (d,m,s)";D$,M,S
615 V=V+0.00078*SIN(F+2*D+N) 130 D=ABS(VAL(D$))
620 U=1-0.10828*COS(M) 140 IF D>90 THEN 120
625 U=U-0.01880*COS(M-2*D) 150 IF M<0 OR M>=60 THEN 120
630 U=U-0.01479*COS(2*D) 160 IF S<0 OR S>=60 THEN 120
635 U=U+0.00181*COS(2*M-2*D) 170 D=D+M/60+S/3600
640 U=U-0.00147*COS(2*M) 180 IF LEFT$(D$,1)="-" THEN D=-D
645 U=U-0.00105*COS(2*D-G) 190 PRINT: PRINT "Millennium Star Atlas"
650 U=U-0.00075*COS(M-2*D+G) 200 IF ABS(D)>87 THEN H=0
655 W=0.10478*SIN(M) 210 IF H>=0 AND H<=8 THEN V$="Volume I":
660 W=W-0.04105*SIN(2*F+2*N) VL=0
665 W=W-0.02130*SIN(M-2*D) 220 IF H>8 AND H<=16 THEN V$="Volume II":
670 W=W-0.01779*SIN(2*F+N) VL=1
675 W=W+0.01774*SIN(N) 230 IF H>16 AND H<24 THEN V$="Volume
680 W=W+0.00987*SIN(2*D) III": VL=2
685 W=W-0.00338*SIN(M-2*F-2*N) 240 QT=0 : PA=0 : QN=0
690 W=W-0.00309*SIN(G) 250 IF ABS(D)>90 THEN D=90
695 W=W-0.00190*SIN(2*F) 260 IF ABS(D)<=90 THEN PA=240: QT=QT+2:
700 W=W-0.00144*SIN(M+N) QN=2
705 W=W-0.00144*SIN(M-2*F-N) 270 IF ABS(D)<87 THEN PA=120: QT=QT+4:
710 W=W-0.00113*SIN(M+2*F+2*N) QN=4
715 W=W-0.00094*SIN(M-2*D+G)
720 W=W-0.00092*SIN(2*M-2*D)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 45 / 73

280 IF ABS(D)<81 THEN PA=60: QT=QT+8: 42 GOTO 90


QN=8 44 REM
290 IF ABS(D)<75 THEN PA=48: QT=QT+10: 46 REM ANGLE B
QN=10 48 B1=(D*D+1-S*S)/(2*D)
300 IF ABS(D)<69 THEN PA=40: QT=QT+12: 50 IF B1>1 THEN B1=1
QN=12 52 IF B1<-1 THEN B1=-1
310 IF ABS(D)<63 THEN PA=480/14: 54 IF B1<>0 THEN 58
QT=QT+14: QN=14 56 B=P/2: GOTO 64
320 IF ABS(D)<57 THEN PA=30: QT=QT+16: 58 B=ATN(SQR(1-B1*B1)/B1)
QN=16 60 IF B1<0 THEN B=B+P
330 IF ABS(D)<51 THEN PA=24: QT=QT+20: 62 REM
QN=20 64 REM ANGLE C
340 IF ABS(D)<45 THEN PA=24: QT=QT+20: 66 C1=(S*S+1-D*D)/(2*S)
QN=20 68 IF C1>1 THEN C1=1
350 IF ABS(D)<39 THEN PA=480/22: 70 IF C1<-1 THEN C1=-1
QT=QT+22: QN=22 72 IF C1<>0 THEN 76
360 IF ABS(D)<33 THEN PA=480/22: 74 C=P/2: GOTO 82
QT=QT+22: QN=22 76 C=ATN(SQR(1-C1*C1)/C1)
370 IF ABS(D)<27 THEN PA=20: QT=QT+24: 78 IF C1<0 THEN C=C+P
QN=24 80 REM
380 IF ABS(D)<21 THEN PA=20: QT=QT+24: 82 REM ANGLE A
QN=24 84 A=P-B-C
390 IF ABS(D)<15 THEN PA=20: QT=QT+24: 86 REM
QN=24 88 F=S*S*A+B-S*SIN(C)
400 IF ABS(D)<9 THEN PA=20: QT=QT+24: 90 PRINT "OBSCURATION: ";F/P
QN=24 92 END
410 IF ABS(D)<3 THEN PA=20: QT=QT+24: 100 REM ***********************
QN=24 110 REM FROM SKY & TELESCOPE'S
420 IF H=8 THEN H=7.99 120 REM ASTRONOMICAL COMPUTING
430 IF H=16 THEN H=15.99 130 REM DEPARTMENT, NOVEMBER,
440 IF H=24 THEN H=23.99 140 REM 1986, PAGES 515-516.
450 IF H>VL*8 THEN H=H-(VL*8) 150 REM ***********************
460 CA=INT((H*60)/PA)
470 IF ABS(D)>87 AND (HM>4 AND HM<16)
THEN QT=1: QN=0
480 CH=QT-CA+(VL*516)
490 IF LEFT$(D$,1)="-" THEN CH=(516+ OCCVIS.BAS ; 029;
(VL*516)-QT+QN-CA) Compute the visibility of a star near the Moon
500 PRINT "Chart ";CH;"in ";V$
510 END
900 REM --------------------------- 10 ' Visibility of an Occultation
910 REM APPEARED IN ASTRONOMICAL 20 INPUT "Moon's sunlit percentage";SF
920 REM COMPUTING, SKY & TELESCOPE, 30 INPUT "Zenith distance of star
930 REM OCTOBER 1998, PAGE 63 (degrees)";Z
940 REM --------------------------- 40 INPUT "Height of Sun above horizon";HS
50 INPUT "Cusp angle (<0 for bright side)
in deg";C
60 BV=.7: ' Star's color index, B-V (in
mags.)
OBSCUR.BAS ; 071; 70 K=.3 : ' Vis. extinction coeff.
Obscuration at a solar eclipse (mag./airmass)
80 BC=0: ' Brightness from light
pollution (nL)
10 REM OBSCURED FRACTION 90 SE=1: ' Seeing disk diameter at
12 REM AT A SOLAR ECLIPSE zenith (arcsec)
14 REM 100 FV=20:' Moon fraction in field of
16 P=3.14159265 view (%)
18 INPUT "SUN'S SEMIDIAMETER ";S1 110 D=6: ' Telescope aperture (inches)
20 INPUT "MOON'S SEMIDIAMETER";S2 120 M=150:' Magnification
22 S=S2/S1 130 TR=80:' Telescope throughput (%)
24 INPUT "ECLIPSE MAGNITUDE ";M 140 AG=30:' Observer's age (years)
26 IF M>(S+1)/2 OR M<0 THEN 24 150 RS=1: ' Snellen ratio (20/20=1,
28 REM 20/40=0.5,...)
30 W=M*2 160 EX=5: ' Experience (1-9; 5=average,
32 D=1+S-W 9=expert)
34 IF M<1 AND D<>0 THEN 46 170 MS=8.61: ' Star's visual magnitude
36 IF S>=1 THEN F=1: REM TOTAL 180 PRINT "Choose program mode --"
38 IF S<1 THEN F=S*S: REM ANNULAR 190 PRINT " (1) Minimum aperture"
40 F=F*P 200 PRINT " (2) Limiting magnitude"
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 46 / 73

210 INPUT Q$: IF Q$<>"1" AND Q$<>"2" THEN 650 B3=443000*IM/(TH^3*D*F1): '
210 Diffraction
220 IF Q$="2" THEN 270 660 B4=2.6E+08*IM*EXP(-1*(TH/.4)^2)/F1: '
230 D=.5: ' Find minimum telescope By mirror
aperture 670 BG=B1+B2+B3+B4: ' Glare brightness
240 D=D+.1: M=25*D: GOSUB 290: IF MS>ML 680 ' Calculate effective background
THEN 240 brightness
250 PRINT "Aperture should be at 690 XX=1-.96*(SIN(Z/57.295))^2
least" ;D;" inches" 700 BN=180*(.4+.6/SQR(XX))/F1: ' Night
260 GOTO 280 sky
270 GOSUB 290: PRINT "Limiting magnitude 710 XX=10^(PH/1.571-1.1): IF XX<1 THEN
is ";ML XX=1
280 END 720 BT=XX*10^(8.45+.4*HS)*(F1-1)/F1: '
290 ' Routine to find lim. mag. for given Twilight sky
conditions 730 PM=10^5.36*(1.06+(COS(PH))^2): ' Mie
300 XX=COS(Z/57.295): ' First, estimate scattering
corrections 740 PA=10^(1.65+1.43*PH): ' Aerosol
310 X=1/(XX+.025*EXP(-11*XX)): ' Airmass scattering
of Moon 750 XX=-.4*K/(SQR(1-.96*(SIN((90-
320 ZE=SQR(2.89*X*SE^2+(17.9/D)^2):'2nd HS)/57.295))^2))
moment of image 760 BD=11700*10^XX*(PM+PA)*(F1-1)/F1: '
330 F1=10^(.4*K*X): ' Extinction Daytime sky
340 F2=1.41: ' Binocular vision 770 BS=BN+BT+BC: ' Sky brightness
350 F3=100/TR: ' Transmission of 780 IF BD<BT THEN BS=BN+BD+BC
scope 790 XX=.5*(1+C/ABS(C)): ' +1 if dark limb
360 DE=4: ' Guess that pupil is 4mm 800 YY=.5*(1-C/ABS(C)): ' +1 if bright
370 F4=(25.4*D/(M*DE))^2: ' Light outside limb
pupil 810 BA=BS+XX*(BE+BG)+YY*BM: ' Apparent
380 IF F4<1 THEN F4=1 brightness
390 F5=(DE/(25.4*D))^2: ' Light gathering 820 ' Condition of the observer's eye
power 830 R1=380*10^(.3*(BA/FB)^-.29): 'Night
400 XX=1-EXP(-.026*DE^2) resolution
410 YY=1-EXP(-.026*(25.4*D/M)^2) 840 R2=42*10^(8.28*(BA/FB)^-.29): 'Day-
420 F6=(25.4*D/(DE*M))^2*XX/YY:'Stiles- vision resol.
Crawford effect 850 RE=900/RS: IF R1<900 THEN RE=R1/RS
430 IF F6>1 THEN F6=1 860 IF R2<900 AND R2<R1 THEN RE=R2/RS
440 F7=(1+.03*(M*ZE/100)^2)/RS^2: ' 870 XX=1.85*(IM*.000929*FV/F1)/
Resolving the star (1.122^(M*TH))
450 FI=F1*F2*F3*F4*F5*F6*F7:' Corr. for 880 YY=EXP(-.16*(.000001*BA/FB+XX)^.4)
intensities 890 ZZ=7*EXP(-.5*(25/100)^2):'Standard
460 FB=M^2*F2*F3*F4*F5*F6:'Corr. for obsvr is age 25
surface brightness 900 DS=ZZ*YY: IF DS<2 THEN DS=2: 'Stand.
470 ' Calculate brightness of Moon pupil size
480 CP=SF/50-1 910 ZZ=7*EXP(-.5*(AG/100)^2): ' Dark
490 IF CP=0 THEN PH=3.14159/2: GOTO 520 pupil for obsvr
500 PH=ATN(SQR(1-CP*CP)/CP): ' Lunar 920 DE=ZZ*YY: IF DE<2 THEN DE=2: 'Pupil
phase (0 is full) size of obsvr
510 IF CP<0 THEN PH=PH+3.14159 930 ' Recalculate correction factors
520 DM=1.49*PH+.043*(PH^4)-12.73 : ' 940 F4=(25.4*D/(M*DE))^2: ' Light outside
Moon's magnitude pupil
530 IM=10^(-.4*(DM+16.57)): ' Intensity 950 IF F4<1 THEN F4=1
of Moon 960 F5=(DS/(25.4*D))^2: ' Light-
540 BM=5.67E+12*IM/(F1*SF): ' Moon gathering power
brightness (nL) 970 XX=1-EXP(-.026*DS^2)
550 SP=3.14159-PH: ' Earth's phase from 980 YY=1-EXP(-.026*(25.4*D/M)^2)
Moon 990 F6=(25.4*D/(DS*M))^2*XX/YY:'Stiles-
560 XX=1.49*SP+.043*(SP^4)-12.73 Crawford effect
570 BE=1.1E+07*10^(-.4*(XX+16.57))/F1: ' 1000 IF F6>1 THEN F6=1
Earthshine 1010
580 ' Calculate glare brightness F7=(1+.03*(M*ZE/RE)^2)/RS^2:'Resolving
590 XX=(COS(C/57.295))^2+(1- the star
SF/100+SIN(C/57.295))^2 1020 F8=10^(-.4*(1-.5*BV)): 'Color corr
600 YY=(1-.4*EXP(-1*C/30)) (night)
610 IF YY<.6 THEN YY=.6 1030 IF BA>1480 THEN F8=1: 'Color corr
620 TH=.25*SQR(XX)*YY: ' Effective (day)
distance to Moon 1040 FI=F1*F2*F3*F4*F5*F6*F7*F8: 'Corr
630 B1=6.25E+07*IM*(F1-1)/ for intensities
(TH*F1)^2:'Scattering in air 1050 FB=M^2*F2*F3*F4*F5*F6*F8: 'For
640 B2=4.63E+07*IM*(FV/100)/ surface brightness
(TH^2*F1):'Scat. in eye 1060 ' Calculate limiting magnitude
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 47 / 73

1070 B=BA/FB: ' Perceived brightness 78 X1=X: X=(2*X*X*X/3+Q3)/(X*X+1)


1080 ID=4.46E-09*(1+SQR(1.26E-06*B))^2: 80 IF ABS(X-X1)>D THEN 78
'Day vision 82 IF ABS(X-X0)>D THEN 58
1090 IN=1.59E-10*(1+SQR(.0126*B))^2: 84 V=2*ATN(X)
'Night vision 86 R=Q*(1+E0)/(1+E0*COS(V))
1100 I=ID: IF IN<ID THEN I=IN: 'Limiting 88 IF V<0 THEN V=V+2*P1
illum.(ft-cd) 90 PRINT "TRUE ANOMALY: ";V*R1
1110 ML=-16.57-2.5*LOG(I*FI)/LOG(10): ' 92 PRINT "DISTANCE (AU): ";R
Limiting mag 94 GOTO 98
1120 ML=ML+.16*(EX-6): ' Correct for 96 PRINT "NO CONVERGENCE"
experience 98 END
1130 ML=ML-1.2: ' Correct for steady 99 REM *************************
visibility 100 REM FROM SKY & TELESCOPE,
1140 RETURN 101 REM MAY, 1987, PAGE 535
1150 ' 102 REM ************************
1160 ' OCCVIS.BAS -- This program by Dr.
Bradley
1170 ' E. Schaefer computes the
visibility of a
1180 ' star near the Moon. It is ORIGAM.BAS ; 042;
intended as a guide Make a paper model of a comet orbit
1190 ' to observers of lunar
occultations. For a
1200 ' detailed explanation of the 10 REM MODEL A COMET ORBIT
program's use, see 11 F$="&HAAAA": REM FINE DOTS
1210 ' Sky & Telescope, January 1993, 12 C$="&H1010": REM COARSE DOTS
page 89. 13 DR=3.14159265/180: K=.0172021
14 FC=1.575: LB=10: SD=360/365.25
15 SC=.82: REM ADJ FOR PRINTER
16 INPUT "Eccentricity ";EC
17 IF EC>.99 THEN EC=1
ORBITS.BAS ; 067; 18 INPUT "q ";QC: REM PERI DIST.
Positions in near-parabolic orbits 19 INPUT "w ";W: REM ARG. PERI.
20 INPUT "Node ";OM:
21 INPUT "(D)irect or (R)etro";Q$
10 REM NEAR-PARABOLIC ORBITS 22 IF Q$="R" THEN W=360-W
12 REM 23 L=W+180:IF L>360 THEN L=L-360
14 P1=4*ATN(1): R1=180/P1 24 INPUT "Day increment";ID
16 K=0.01720209895 25 INPUT "Scale (mm/a.u.)";MM
18 D1=10000: C=1/3 26 AU=MM*FC: REM 1 A.U. IN MM
20 D=1E-6: REM ADJUST FOR COM- 27 AR=266*SD: OM=AR+OM:
22 REM PUTER'S PRECISION 28 IF OM>360 THEN OM=OM-360:
24 REM 29 CLS: SCREEN 1: KEY OFF
26 INPUT "PERI DISTANCE Q ";Q 30 REM --- MODEL THE COMET ---
28 INPUT "ECCENTRICITY ";E0 31 IF EC<1 THEN FF=(1+EC)/(1-EC)
30 INPUT "DAYS FROM PERI ";T 32 W0=3*K/(QC*SQR(2*QC))
32 PRINT 33 Q=QC*AU: REM Q IN MM
34 IF T<>0 THEN 40 34 X1=LB+Q: Y1=100: REM SUN LOC
36 R=Q: V=0: GOTO 90 35 CIRCLE (X1,Y1),2
38 REM 36 F=0: GOSUB 77: REM PERI LINE
40 REM FIND TRUE ANOMALY 37 LINE (X1,Y1)-(X3,Y3)
42 REM 38 IF QC>.1 THEN CIRCLE (X3,Y3),2
44 Q1=K*SQR((1+E0)/Q)/(Q*2) 39 FOR F=1 TO 359
46 Q1=Q1*T 40 IF EC=1 AND F=180 THEN 42
48 S=2/(3*ABS(Q1)) 41 GOSUB 77: PSET (X3,Y3)
50 X=2/TAN(2*ATN(TAN(ATN(S)/2)^C)) 42 NEXT F
52 IF T<0 THEN X=-X 43 F=-W: GOSUB 77
54 G=(1-E0)/(1+E0): L0=0 44 LINE (X1,Y1)-(X3,Y3),,,VAL(C$)
56 REM 45 F=-L: GOSUB 77
58 X0=X: W=1: Y=X*X: G1=-Y*X 46 LINE (X1,Y1)-(X3,Y3),,,VAL(F$)
60 Q3=Q1+2*G*X*Y/3 47 FOR I=1 TO 5
62 W=W+1 48 T=I*ID: IF EC=1 THEN GOSUB 92
64 G1=-G1*G*Y 49 IF EC<1 THEN GOSUB 84
66 W1=(W-(W+1)*G)/(2*W+1) 50 GOSUB 77: CIRCLE (X3,Y3),2
68 F=W1*G1 51 F=-F:GOSUB 77:CIRCLE (X3,Y3),2
70 Q3=Q3+F 52 NEXT I
72 IF W>50 OR ABS(F)>D1 THEN 96 53 PRINT "Comet": INPUT Q$
74 IF ABS(F)>D THEN 62 54 REM --- MODEL THE EARTH ---
76 L0=L0+1: IF L0>50 THEN 96 55 DIM T(12):REM START OF MONTHS
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 48 / 73

56 DATA 0,31,59,90,120,151 120 INPUT "MONTH (3 LETTERS)";M$


57 DATA 181,212,243,273,304,334 125 INPUT "HOW MANY DATES (2-5)";L
58 FOR I=1 TO 12 : READ T(I) 130 PRINT "DAY, RA(H.M), DE(D.M):"
59 NEXT I 135 FOR I=1 TO L
60 EC=0: Q=AU: X1=LB+Q: Y1=100 140 INPUT " ";C(I,1),C(I,2),C(I,3)
61 CLS: CIRCLE (X1,Y1),2 145 D=C(I,2): GOSUB 430: C(I,2)=D
62 FOR I=1 TO 12 150 D=C(I,3): GOSUB 430: C(I,3)=D
63 F=T(I)*SD: GOSUB 77: 155 NEXT I
64 LINE (X1,Y1)-(X3,Y3),,,VAL(F$) 160 INPUT "STARTING DATE";W
65 CIRCLE (X3,Y3),1 165 PRINT: PRINT N$
66 F=(T(I)+10)*SD: GOSUB 77 170 FOR N4=1 TO 30
67 CIRCLE (X3,Y3),1 175 IF W>C(L,1)+18 THEN 545
68 F=(T(I)+20)*SD: GOSUB 77 180 PRINT: PRINT M$;W;TAB(13);
69 CIRCLE (X3,Y3),1 185 PRINT " RA(H.M) DE(D.M)"
70 NEXT I 190 X=W-2
71 F=AR: GOSUB 77: REM ARIES 195 FOR J=1 TO 3
72 LINE (X1,Y1)-(X3,Y3),,,VAL(C$) 200 X=X+1: Y=0: Z=0
73 F=OM: GOSUB 77: REM ASC NODE 205 FOR N=1 TO L
74 LINE (X1,Y1)-(X3,Y3) 210 S=1
75 PRINT "Earth": INPUT Q$ 215 FOR K=1 TO L
76 END 220 IF K=N THEN 230
77 REM FIND POINT ALONG ORBIT 225 S=S*(X-C(K,1))/(C(N,1)-C(K,1))
78 R=Q*(1+EC)/(1+EC*COS(F*DR)) 230 NEXT K
79 X=R*COS(F*DR): Y=R*SIN(F*DR) 235 Y=Y+S*C(N,2): Z=Z+S*C(N,3)
80 X3=X1-X: Y3=Y1+SC*Y: N=32000 240 NEXT N
81 IF SQR(X3*X3+Y3*Y3)<N THEN 83 245 Q=M1+N1*SIN(Y*15*K9)*TAN(Z*K9)
82 X3=X3/10: Y3=Y3/10: GOTO 81 250 Q=Y+Z3*Q
83 RETURN 255 R=Z+15*Z3*N1*COS(Y*15*K9)
84 REM ELLIPSE 260 IF J<>2 THEN 305
85 M=T*K/(QC/(1-EC))^1.5: E=M 265 P=COS(R*K9)
86 DD=1-EC*COS(E) 270 D=Y: GOSUB 460 : Y1=D
87 E1=E+(M+EC*SIN(E)-E)/DD 275 D=Z: GOSUB 460 : Z1=D
88 IF ABS(E1-E)<1/10000 THEN 90 280 D=Q: GOSUB 460 : Q1=D
89 E=E1: GOTO 86 285 D=R: GOSUB 460 : R1=D
90 F=2*ATN(SQR(FF)*TAN(E1/2))/DR 290 PRINT Y0$;Y1;TAB(26);Z1
91 RETURN 295 PRINT Y1$;Q1;TAB(26);R1
92 REM PARABOLA 300 GOTO 315
93 W1=W0*T: S=0 305 IF J<>1 THEN 315
94 S=(2*S*S*S+W1)/(3*(S*S+1)) 310 K1=Q: L1=R
95 DE=S*S*S+3*S-W1 315 NEXT J
96 IF ABS(DE)>1/10000 THEN 94 320 Y=R-L1: REM DEGREES
97 F=2*ATN(S)/DR 325 X=(Q-K1)*P*15: REM DEGREES
98 RETURN 330 R=SQR(X*X+Y*Y)/2: REM DEG/DAY
99 REM 335 R=R*2.5
100 REM Written by R. B. Minton, 340 PRINT " ARCSEC/MIN ";R
110 REM this program for IBM PCs 345 T=ATN(X/Y)/K9
120 REM with CGA graphics prints 350 IF Y<0 THEN T=T+180
130 REM paper outlines of the 355 IF T<0 THEN T=T+360
140 REM orbits of the Earth and 360 T=INT(T+0.5)
150 REM a comet, which can then 365 PRINT " POS ANGLE ";T
160 REM be cut out and folded to 370 Z6=R*U/143.24: Z=Z6: J=0
170 REM make a 3-dimensional 375 Z=Z*2
180 REM model that helps you 380 IF Z>8000 THEN 390
190 REM visualize the orbit in 385 J=J+1: IF J<=30 THEN 375
200 REM space. Fully explained 390 J=J-5: Z=0.001*Z
210 REM in Sky & Telescope for 395 PRINT " STEPS ";Z6;"HZ"
220 REM April, 1990, page 424. 400 PRINT " RATIO ";J
405 PRINT " FREQ ";Z;" KHZ"
410 W=W+1
415 NEXT N4
420 GOTO 545
PATH.BAS ; 069; 425 REM
Interpolate comet positions 430 REM H.M --> HOURS
435 S1=SGN(D): D=ABS(D)
440 D1=INT(D): D2=D-D1
100 REM TRACK A COMET 445 D=S1*(D1+D2/0.6)
105 REM 450 RETURN
110 GOSUB 485 455 REM
115 INPUT "NAME OF COMET";N$ 460 REM HOURS --> H.M
465 S1=SGN(D): D=ABS(D)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 49 / 73

470 D1=INT(D): D2=D-D1 51 NEXT J


475 D=S1*(D1+D2*0.6) 52 RETURN
480 RETURN 53 DATA 51818,0,1,0,0,0
485 REM CONSTANTS 54 DATA 9531,0,-1,2,0,0
490 DIM C(5,3) 55 DATA 7843,0,0,2,0,0
495 U=178.27: REM FOCAL LENGTH 56 DATA 2824,0,2,0,0,0
500 Y0=1950: REM INPUT EQUINOX 57 DATA 857,0,1,2,0,0
505 Y1=1987: REM CURRENT EQUINOX 58 DATA 533,1,0,2,-1,0
510 Z3=Y1-Y0 59 DATA 401,1,-1,2,-1,0
515 Y0$=" ("+STR$(Y0)+".0) " 60 DATA 320,1,1,0,-1,0
520 Y1$=" ("+STR$(Y1)+".0) " 61 DATA -271,0,0,1,0,0
525 M1=0.0008538: N1=0.0003711 62 DATA -264,1,1,0,1,0
530 P1=3.1415926536: K9=P1/180 63 DATA -198,0,-1,0,0,2
535 RETURN 64 DATA 173,0,3,0,0,0
536 REM ************************ 65 DATA 167,0,-1,4,0,0
537 REM FROM "SKY & TELESCOPE" 66 DATA -111,1,0,0,1,0
538 REM ASTRONOMICAL COMPUTING 67 DATA 103,0,-2,4,0,0
539 REM FEB. 1987, PAGE 196 68 DATA -84,0,2,-2,0,0
540 REM ************************ 69 DATA -83,1,0,2,1,0
545 END 70 DATA 79,0,2,2,0,0
71 DATA 72,0,0,4,0,0
72 DATA 64,1,1,2,-1,0
73 DATA -63,1,-1,2,1,0
74 DATA 41,1,0,1,1,0
PERIAP.BAS ; 062; 75 DATA 35,1,2,0,-1,0
Compute lunar apogee and perigee 76 DATA -33,0,3,-2,0,0
77 DATA -30,0,1,1,0,0
78 DATA -29,0,0,-2,0,2
10 REM LUNAR PERIGEE AND APOGEE 79 DATA -29,1,2,0,1,0
11 INPUT "STARTING JD";J0 80 DATA 26,2,0,2,-2,0
12 P0=2415024.89: M0=27.554551 81 DATA -23,0,1,-2,0,2
13 J0=P0+M0*INT((J0-P0)/M0) 82 DATA 19,1,-1,4,-1,0
14 GOSUB 40 :REM GET CONSTANTS 83 REM *************************
15 FOR I=1 TO 3: P1=0: P2=0 84 REM FROM ASTRONOMICAL COM-
16 T=(J0-2415020)/36525: T2=T*T 85 REM COMPUTING, SKY & TELE-
17 M1=R*(296.105+R1*T+0.009192*T2) 86 REM SCOPE, NOV 87, PAGE 529
18 D=R*(350.737+R2*T-0.001436*T2) 87 REM *************************
19 M=R*(358.476+R3*T-0.000150*T2)
20 F=R*(11.251+R4*T-0.003211*T2)
21 E=1-0.002495*T-0.00000752*T2
22 FOR J=1 TO 30
23 A(J)=A1(J)*E^C0(J) PERIOD.BAS ; 057;
24 B(J)=C1(J)*M1+C2(J)*D+C3(J)*M Period search by Fourier transform
25 B(J)=B(J)+C4(J)*F
26 P1=P1+A(J)*SIN(B(J))*R(J)
27 P2=P2+A(J)*COS(B(J))*R(J)*R(J) 10 REM PERIOD SEARCH BY A DISCRETE
28 NEXT J FOURIER
29 J0=J0-(36525/R)*(P1/P2) 20 REM TRANSFORM - MARIA MITCHELL
30 NEXT I OBSERVATORY
31 P=950724 25 REM
32 FOR J=1 TO 30: 30 DIM X(100),Y(100)
33 P=P+A(J)*COS(B(J)) 40 GOSUB 360
34 NEXT J 50 REM
35 K=6378.14/SIN(R*P*0.000001) 60 REM ******* THE DFT *******
36 K=INT(K+0.5): PA$="PERIGEE " 70 REM
37 IF P2<0 THEN PA$="APOGEE " 80 Z9=0: A5=0: F0=F1-F4: C0=(N-1)/(N*Q)
38 PRINT PA$;K;" KM JD ";J0 90 PRINT "TRIAL #";TAB(15);"PERIOD";
39 J0=J0+13.78: GOTO 15 100 PRINT
40 REM CONSTANTS TAB(30);"FREQUENCY";TAB(45);"STRENGTH"
41 DIM A(30),B(30),R(30),A1(30) 110 FOR K=1 TO M
42 DIM C0(30),C1(30),C2(30),C3(30) 120 F=F0+K*F4: B=P2*F: C=0: S=0
43 DIM C4(30): R=3.1415926536/180 130 FOR I=1 TO N
44 R1=477198.8491: R2=445267.1142 140 A=B*X(I)
45 R3=35999.0498: R4=483202.0251 150 S=S+Y(I)*SIN(A): C=C+Y(I)*COS(A)
46 FOR J=1 TO 30 160 NEXT I
47 READ A1(J),C0(J),C1(J) 170 Z=(C*C+S*S)*C0: A5=A5+Z
48 READ C2(J),C3(J),C4(J) 180 IF Z<=Z9 THEN 200
49 R(J)=C1(J)*R1+C2(J)*R2 190 Z9=Z: F9=F: REM NEW MAXIMUM
50 R(J)=R(J)+C3(J)*R3+C4(J)*R4 STRENGTH
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 50 / 73

200 IF Z<Z0 THEN 230 830 REM ************************


210 PRINT
K;TAB(15);1/F;TAB(30);F;TAB(45);Z
220 L=1: GOTO 250
230 IF L=0 THEN 250
240 L=0: PRINT PHOTOM.BAS ; 089;
250 NEXT K Reducing photometric observations
260 A5=A5/M
270 REM
280 PRINT 100 REM PHOTOMETRIC REDUCTION
290 PRINT 110 REM
TAB(15);"PERIOD";TAB(30);"FREQUENCY"; 115 PRINT: PRINT
300 PRINT TAB(45);"STRENGTH" 120 PRINT "INPUT OBSERVATIONS:
310 PRINT "AVERAGE";TAB(45);A5 125 PRINT
320 PRINT 130 INPUT "VARIABLE STAR:";V
"BEST";TAB(15);1/F9;TAB(30);F9;TAB(45) 140 INPUT "SKY NEAR VARIABLE:";S
;Z9 150 INPUT "COMPARISON STAR:";C
330 PRINT "AMPLITUDE ESTIMATE = 160 INPUT "SKY NEAR C STAR:";CS
";4*SQR(Q*Z9)/N 165 PRINT
340 END 170 INPUT "MAG. OF C STAR:";M
350 REM 180 V=V-S: C=C-CS
360 REM * THE INITIALIZING ROUTINES * 190 MV=2.5*LOG(C/V)/LOG(10)
370 P2=2*3.14159265: L=0 195 MV=M+MV
380 Z0=2: REM TO SKIP PRINTING 200 PRINT: PRINT "RESULTS:"
"WORTHLESS" PERIODS 210 PRINT "VALUE COM STAR: ";C
390 REM 220 PRINT "VALUE VARIABLE: ";V
400 REM ---- SET X,Y,X4,Q ----- 230 PRINT "MAG. COM. STAR: ";M
410 REM 240 PRINT "MAG. VAR. STAR: ";MV
420 Q=0: N=0 250 PRINT
430 READ X,Y: IF X=9999 THEN 450 260 INPUT "ANOTHER (Y, N)";Q$
440 N=N+1: X(N)=X: Y(N)=Y: Q=Q+Y(N)*Y(N): 270 IF Q$="Y" THEN GOTO 100
GOTO 430 280 END
450 X4=X(N)-X(1) 290 REM ------------------------
460 REM 300 REM APPEARED IN ASTRONOMICAL
470 REM ----- SET F1,F4,M ----- 310 REM COMPUTING, SKY & TELE-
480 REM 320 REM SCOPE, FEBRUARY, 1985
490 PRINT "LONGEST USEFUL PERIOD TO TRY = 330 REM ------------------------
";X4/2
500 INPUT "LONGEST PERIOD TO TRY THIS RUN
";P9
510 INPUT "COARSE, MEDIUM OR FINE
(C,M,F)";Z$ PILLAR.BAS ; 004;
520 S9=0.20: REM ASSUME COARSE SPACING
Simulate the appearance of a Sun pillar
530 IF Z$="M" THEN S9=0.10
540 IF Z$="F" THEN S9=0.05
550 F4=S9/X4: F1=1/P9 10 REM PILLAR.BAS by Rodney Kubesh
560 INPUT "MAXIMUM NUMBER OF TRIALS ";M 20 SCREEN 12
570 F8=F1+(M-1)*F4 30 REM Set Theta, the maximum angle of
580 PRINT "THEN SHORTEST ALLOWABLE PERIOD crystal tilt
= ";1/F8 40 TH = 4
590 INPUT "SHORTEST PERIOD TO TRY THIS 50 REM Sun angle Alpha, varied from 6
RUN ";P0 deg.
600 F8=1/P0: M=INT((F8-F1)/F4)+1 60 REM above horizon to 6 deg. below
610 RETURN horizon
620 REM 70 FOR I = 0 TO 12
630 REM LIST OF X,Y VALUES 80 A = 6 - I
640 DATA -44.874, -0.129, -32.912, -0.008 90 REM Calculate sky color
650 DATA -15.959, 0.102, -14.964, 0.150 100 B& = 63 * (1 - .06 * I) : REM Blue
660 DATA 7.974, 0.124, 11.962, -0.054 110 G& = 40 * (1 - .06 * I) : REM Green
670 DATA 12.961, -0.100, 13.959, -0.032 120 R& = 45 * (1 - .06 * I) : REM Red
680 DATA 15.958, 0.113, 17.954, 0.052 130 PALETTE 3, B& * 65536 + G& * 256 + R&
690 DATA 36.895, -0.058, 40.881, 0.118 140 PAINT (320, 320), 3
700 DATA 42.878, -0.033, 44.873, -0.039 150 IF A >= 0 THEN
710 DATA 9999,9999: REM DUMMY END 160 HI = 2 * TH - A
VALUES 170 LO = -(2 * TH + A)
800 REM ************************ 180 END IF
810 REM FROM SKY & TELESCOPE'S 190 IF A < 0 THEN
ASTRONOMICAL COM- 200 HI = 2 * TH + ABS(A)
820 REM PUTING DEPARTMENT FOR 210 LO = ABS(A) - 2 * TH
SEPTEMBER, 1988
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 51 / 73

220 END IF 340 PRINT USING Q2$;V1;V2;V3


230 FOR AN = LO TO HI STEP .5 350 A3=(A1-A2)*3600/NY
240 REM Draw the Sun 360 D3=(D1-D2)*3600/NY
250 SU = 450 - (1000 * TAN(A * 3.14159 / 370 PRINT "Proper motion in"
180)) 380 PRINT " R.A. (sec/yr): ";
260 CIRCLE (320, SU), 10, 1 390 PRINT USING Q3$;A3
270 PAINT (320, SU), 1, 1 400 PRINT " Dec. (arcsec/yr):";
280 SP = 450 - (1000 * TAN(AN * 3.14159 / 410 PRINT USING Q4$;D3
180)) 420 PRINT
290 PALETTE 1, 334143 430 PRINT "Select one:"
300 CIRCLE (320, SP), 3, 1 440 PRINT " (A)nother star"
310 PAINT (320, SP), 1, 1 450 PRINT " (N)ew final epoch"
320 REM Draw the ground 460 PRINT " (Q)uit"
330 LINE (0, 450)-(639, 480), , BF 470 INPUT A$
340 NEXT AN 480 IF A$="a" OR A$="A" THEN 150
350 REM Hold screen for one second, then 490 IF A$="n" OR A$="N" THEN 110
clear it 500 IF A$="q" OR A$="Q" THEN 520
360 SLEEP 1 510 GOTO 470
370 IF I < 12 THEN CLS 520 END
380 NEXT I 530 REM INPUT SEXAGESIMAL
390 END 540 S=1: INPUT V$,V2,V3
900 REM --------------------------- 550 IF LEFT$(V$,1)="-" THEN S=-1
910 REM APPEARED IN ASTRONOMICAL 560 V1=ABS(VAL(V$))
920 REM COMPUTING, SKY & TELESCOPE, 570 V=S*(V1+V2/60+V3/3600)
930 REM MAY 1999, PAGE 70 580 RETURN
940 REM --------------------------- 590 REM OUTPUT SEXAGESIMAL
600 S$="+": IF V<0 THEN S$="-"
610 V=ABS(V): V1=INT(V)
620 VM=60*(V-V1): V2=INT(VM)
630 V3=60*(VM-V2)
PRECESS.BAS ; 032; 640 RETURN
Rigorous precession of a star's coordinates 650 REM
660 REM Precession parameters
670 NY=FE-IE
10 REM Rigorous Precession 680 T0=(IE-E0)/100: T1=NY/100
20 REM (J2000.0) 690 T2=T1*T1: T3=T1*T1*T1
30 DEFDBL A-Z 700 H1=2306.2181#: H2=1.39656
40 Q1$="## ## ##.###" 710 H3=-0.000139: H4=0.30188
50 Q2$="## ## ##.##" 720 H5=-0.000345: H6=0.017998
60 Q3$="##.####": Q4$="##.###" 730 K1=1.09468: K2=0.000066
70 P1=4#*ATN(1#): R1=P1/180# 740 K3=0.018203
80 E0=2000#: A$="A" 750 L1=2004.3109#: L2=-0.8533
90 CLS 760 L3=-0.000217: L4=-0.42665
100 INPUT "Initial epoch (yr)";IE 770 L5=-0.000217: L6=-0.041833
110 INPUT "Final epoch (yr) ";FE 780 W= (H1 +H2*T0 +H3*T0*T0)*T1
120 IF ABS(IE-FE)<=500 THEN 150 790 ZT= W +(H4 +H5*T0)*T2 +H6*T3
130 PRINT "Time span too long" 800 ZD= W +(K1 +K2*T0)*T2 +K3*T3
140 GOTO 110 810 TH= (L1 +L2*T0 +L3*T0*T0)*T1
150 CLS: GOSUB 660 820 TH= TH+(L4 +L5*T0)*T2 +L6*T3
155 IF A$="n" OR A$="N" THEN 210 830 ZT=ZT*R1/3600: ZD=ZD*R1/3600
160 PRINT "Initial epoch ";IE 840 TH=TH*R1/3600
170 PRINT " R.A. (h,m,s)"; 850 REM ZT,ZD,TH = Euler angles
180 GOSUB 530: A=V 860 REM
190 PRINT " Dec. (d,m,s)"; 870 REM Rotation matrix
200 GOSUB 530: D=V 880 S1=SIN(ZT): C1=COS(ZT)
210 MA=0: MD=0: GOSUB 970 890 S2=SIN(ZD): C2=COS(ZD)
220 A2=A1: D2=D1 900 S3=SIN(TH): C3=COS(TH)
225 IF A$="n" OR A$="N" THEN 270 910 XX=C1*C3*C2-S1*S2
230 PRINT "Proper motion in" 920 YX=-S1*C3*C2-C1*S2: ZX=-S3*C2
240 INPUT " R.A. (sec/yr) ";M1 930 XY=C1*C3*S2+S1*C2
250 INPUT " Dec. (arcsec/yr)";M2 940 YY=-S1*C3*S2+C1*C2: ZY=-S3*S2
260 PRINT 950 XZ=C1*S3: YZ=-S1*S3: ZZ=C3
270 MA=M1: MD=M2: GOSUB 970 960 RETURN
280 V=A1: GOSUB 590 970 REM Proper-motion correction
290 PRINT "Final epoch ";FE 980 A0=(A+MA*NY/3600)*15*R1
300 PRINT " R.A. (h,m,s): "; 990 D0=(D+MD*NY/3600)*R1
310 PRINT USING Q1$;V1;V2;V3 1000 REM
320 V=D1: GOSUB 590 1010 REM Spherical--> rectangular
330 PRINT " Dec. (d,m,s): ";S$; 1020 SA=SIN(A0): CA=COS(A0)
1030 SD=SIN(D0): CD=COS(D0)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 52 / 73

1040 X0=CA*CD: Y0=SA*CD: Z0=SD 240 S=SN: Q=QN: D=DN: DP=DN: SP=SN:
1050 REM 3-D transformation HN=SS*Q*Q
1060 X1=X0*XX+Y0*YX+Z0*ZX 250 F=C0-Q+C2*Q*Q: K1=HN*F: L1=HN*D
1070 Y1=X0*XY+Y0*YY+Z0*ZY 260 S=SN+HN/2#: Q=QN+L1/2#: D=DN+K1/2#
1080 Z1=X0*XZ+Y0*YZ+Z0*ZZ 270 F=C0-Q+C2*Q*Q: K2=HN*F: L2=HN*D
1090 REM Rectangular--> spherical 280 S=SN+HN/2#: Q=QN+L2/2#: D=DN+K2/2#
1100 A1=ATN(Y1/X1) 290 F=C0-Q+C2*Q*Q: K3=HN*F: L3=HN*D
1110 IF X1<0 THEN A1=A1+P1 300 S=SN+HN: Q=QN+L3: D=DN+K3
1120 IF A1<0 THEN A1=A1+2*P1 310 F=C0-Q+C2*Q*Q: K4=HN*F: L4=HN*D
1130 A1=A1/(R1*15): REM Final R.A. 320 QN=QN+(L1+2#*L2+2#*L3+L4)/6#
1140 D1=ATN(Z1/SQR(X1*X1+Y1*Y1)) 330 DN=DN+(K1+2#*K2+2#*K3+K4)/6#
1150 D1=D1/R1: REM Final Dec. 340 SN=SN+HN
1160 RETURN 350 PX=XC+SX*COS(SN)/QN: PY=YC-
2000 REM SY*SIN(SN)/QN
2010 REM This program for pre- 360 COLOR 9: PSET (PX,PY)
2020 REM cessing a star's coor- 370 IF EC*DN>0 AND DP<0 THEN GOSUB 410
2030 REM dinates is described in 380 IF INKEY$<>"" THEN END
2040 REM Sky & Telescope for 390 GOTO 240
2050 REM October, 1991, page 408. 400 '
2060 REM It was written by 410 ' DRAW LINE TO APASTRON & COUNT
2070 REM Zbigniew S. Krzeminski. ORBITS
420 COLOR 4: LINE (XC,YC)-(PX,PY)
430 N=N+1: LOCATE 1,56: COLOR 15
440 PRINT "Number of orbits ";N;
450 IF N>1 THEN GOTO 500
PULSAR.BAS ; 019; 460 SA=(SP+(SN-SP)*DP/(DP-DN))*180/PI-360
Relativistic precession in binary orbits 470 LOCATE 1,1: PRINT "Precession per
orbit"
480 IF SA<360 THEN PRINT USING
10 ' RELATIVISTIC PRECESSION "######.#### deg"; SA
20 DEFDBL A-Z 490 IF SA>=360 THEN PRINT USING "######.#
30 PI=4#*(ATN(1#)): XC=320: YC=165: deg"; SA
SCREEN 9: KEY OFF 500 RETURN
40 LOCATE 15,1: PRINT "Eccentricity (0 to 610 ' This program by Jonathan Gallmeier,
0.9) "; Mark Loewe, and
50 INPUT EC: IF EC<0 OR EC>.9 THEN CLS : 620 ' Donald W. Olson appeared in the
GOTO 40 article "Precession
60 LOCATE 17,1: PRINT "Relativity 630 ' and the Pulsar," Sky & Telescope,
strength (0 to 0.999)"; Oct. 1995, p. 86.
70 PRINT SPC(40);: LOCATE 17,34
80 INPUT SG: IF SG<0 OR SG>.999 THEN GOTO
60
90 LOCATE 19,1: PRINT "Simulation speed
(1 to 10)"; RAINBOW.BAS ; 037;
100 PRINT SPC(40);: LOCATE 19,28: INPUT Graphic simulation of a rainbow
SS
110 IF SS<1 OR SS>10 THEN GOTO 90
120 10 REM RAINBOW SIMULATION
SS=.0009#*(SS-.9#)*(1#-.9#*EXP(10#*EC- 20 REM
9#)) 25 R0=180/3.14159
130 CLS: LOCATE 19,1: PRINT 30 REM RANDOM IMPACT PARAMETER
"Eccentricity" 35 X=-1+2*RND(1)
140 PRINT USING " .######";EC; 40 Y=-1+2*RND(1)
150 LOCATE 22,1: PRINT "Relativity": 45 B=SQR(X*X+Y*Y)
PRINT "strength" 50 IF B>=1 THEN 30
160 PRINT USING " .######";SG;: LOCATE 55 REM COLOR & INDEX OF REFR.
25,52 60 C=1+INT(3*RND(1))
170 COLOR 14: PRINT "(Press any key to 65 N=1.33+.01*(C-1)
interrupt)"; 70 REM COMPUTE ANGLES
180 SY=YC/(1+EC): SX=SY*1.33 75 I=ATN(B/SQR(1-B*B))
190 C0=(1#-SG*(3#+EC*EC)/(6#+2#*EC))/(1#- 80 R=ATN(B/SQR(N*N-B*B))
EC*EC) 85 T1=(4*R-2*I)*R0
200 RH=SG*(1#-EC*EC)/(3#+EC): C2=1.5#*RH 90 T2=(6*R-2*I)*R0-180
210 CIRCLE (XC,YC),SX*RH,8: PAINT 95 REM INTENSITY FACTORS
(XC,YC),8 100 RS=(SIN(I-R)/SIN(I+R))^2
220 LINE (0,YC)-(640,YC),7: LINE (XC,0)- 105 RP=(TAN(I-R)/TAN(I+R))^2
(XC,350),7 110 RB=(1-RP)*(1-RP)
230 SN=0: QN=1#/(1#+EC): DN=0 115 RC=(1-RS)*(1-RS)
120 I1=(RS*RC+RP*RB)/2
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 53 / 73

125 I2=(RS*RS*RC+RP*RP*RB)/2 300 J=J+1: R(F,J)=I/C: GOTO 320


130 IF I1<.04*RND(1) THEN 140 310 K=K+1: R(F,K)=I/C
135 TH=T1: GOSUB 180 320 I=0: F=F+1: IF F>2 THEN F=1
140 IF I2<.02*RND(1) THEN 150 330 GOTO 170
145 TH=T2: GOSUB 180 340 CLS
150 GOTO 30 350 IF I=0 THEN PRINT "*** OUT OF SYNCH
155 REM COLORS & SCREEN ***"
160 SCREEN 9: CLS: KEY OFF: NP=0 360 IF J>100 OR K>100 THEN PRINT "*** OUT
165 PALETTE 1,4: PALETTE 2,2 OF SPACE ***"
170 PALETTE 3,9 370 INPUT "LIST DISAPPEARANCES OR
175 RETURN REAPPEARANCES (D/R)";A2$
180 REM PLOT ON SCREEN 380 IF A2$<>"D" AND A2$<>"R" THEN GOTO
185 TH=ABS(TH) 370
190 IF TH>60 THEN RETURN 390 IF A2$="D" THEN GOTO 410
195 XP=320+320*(TH/60)*(X/B) 400 F=1: U=J-1: GOTO 420
200 YP=325-300*(TH/60)*ABS(Y/B) 410 F=2: U=K-1
205 PSET(XP,YP),C: NP=NP+1 420 FOR P=1 TO U
210 LOCATE 1,1: PRINT NP: RETURN 430 PRINT R(F,P);: S=S+R(F,P)
215 REM VTAB23: PRINT NP: RETURN 440 IF H<R(F,P) THEN H=R(F,P)
220 REM FOR APPLE II COMPUTERS 450 IF L>R(F,P) THEN L=R(F,P)
225 REM COLORS & SCREEN 460 NEXT
230 REM HGR: HOME: NP=0 470 IF U<3 THEN GOTO 640
235 REM CC(1)=5: CC(2)=1: CC(3)=6 480 PRINT: PRINT
240 REM RETURN 490 PRINT "NUMBER OF DATA POINTS = ";U
245 REM PLOT ON SCREEN 500 PRINT "MAX = ";H
250 REM TH=ABS(TH) 510 PRINT "MIN = ";L
255 REM IF TH>60 THEN RETURN 520 PRINT "MEAN = ";S/U
260 REM XP=139+139*(TH/60)*(X/B) 530 FOR Q=1 TO U
265 REM YP=159-159*(TH/60)*ABS(Y/B) 540 S2=S2+(R(F,Q)-S/U)^2
270 REM HCOLOR=CC(C): NP=NP+1 550 S3=S3+(R(F,Q)-S/U)^3
275 REM HPLOT XP,YP TO XP+1,YP 560 S4=S4+(R(F,Q)-S/U)^4
280 REM ************************** 570 NEXT
285 REM APPEARED IN ASTRONOMICAL 580 S2=SQR(S2/U)
COMPUTING 590 S3=S3/(U*S2^3)
290 REM SKY & TELESCOPE, FEBRUARY 1991 600 S4=S4/(U*S2^4)
ISSUE 610 PRINT "STANDARD DEVIATION = ";S2
300 REM ************************** 620 PRINT "SKEWNESS = ";S3
630 PRINT "KURTOSIS = ";S4
640 PRINT
650 INPUT "ANOTHER LIST (Y/N)";A3$
660 IF A3$<>"Y" THEN GOTO 680
REACT.BAS ; 074; 670 S=0: S2=0: S3=0: S4=0: H=0: L=10:
Test your personal reaction time CLS: GOTO 370
680 IF A3$<>"N" THEN GOTO 650
690 INPUT "CONTINUE TO ADD DATA
100 REM REACTION TIME (Y/N)";A4$
110 REM 700 IF A4$="N" THEN GOTO 730
120 CLS: DIM R(2,101) 710 IF A4$="Y" THEN GOTO 160
130 J=0: K=0: C=60.9: REM TIME CONSTANT 720 GOTO 650
140 INPUT "FLASH AT RANDOM OR FIXED 730 REM ===========================
POSITIONS (R/F)";A1$ 740 REM FROM ASTRONOMICAL COMPUTING
150 IF A1$<>"R" AND A1$<>"F" THEN GOTO DEPARTMENT OF
140 750 REM SKY & TELESCOPE, AUGUST, 1986,
160 CLS: F=1: I=0: S=0: S2=0: S3=0: S4=0: PAGE 174
M1=200: M2=2500: H=0: L=10 760 REM ===========================
170 T=M2*RND(1)+M1 770 END
180 FOR D=0 TO T: NEXT: REM TIME DELAY
BEFORE NEXT EVENT
190 IF F<>1 THEN GOTO 230
200 IF A1$="F" THEN PSET(64,24)
210 IF A1$="R" THEN PSET(127*RND,48*RND) REFR1.BAS ; 054;
220 GOTO 240 Compute atmospheric refraction
230 CLS
240 P$=INKEY$: IF P$<>"" THEN GOTO 260
250 I=I+1: GOTO 240 10 REM REFRACTION
260 IF P$="X" THEN GOTO 340 20 REM
270 IF I=0 THEN GOTO 340 30 DEFSNG A-Z: REM <<<<<
280 IF J>100 OR K>100 THEN GOTO 340 40 INPUT "APPARENT ZENITH DIST";Z0
290 IF F=2 THEN GOTO 310 50 INPUT "AIR TEMP (F) ";T0
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 54 / 73

60 INPUT "REFR INDEX ";N0 730 N2=1+(N-1)*((T2/T)^EX)


70 INPUT "HEIGHT (FEET)";H 740 F=SIN(Z)*R/(R-DR): GOSUB 1170 : A=P-F
80 R0=1: REM PLANET RADIUS 750 L=L+(N1-1)*R*SIN(Z-A)/SIN(A)
90 M=1: REM PLANET MASS 760 IF SIN(A)>N2/N1 THEN 800
100 W=28.97: REM MOL WT OF AIR 770 F=SIN(A)*N1/N2: GOSUB 1170 : Z=P-F
105 P=3.14159: P2=1.5708 780 RF=RF+(Z-A)
106 RD=57.2957 790 GOTO 820
110 REM 800 Z=P-A
120 REM CONVERT TO CGS UNITS 810 RF=RF-(P-2*Z)
130 Z0=Z0/RD 820 GOTO 1050
140 H=H*30.48 830 REM
150 T0=(T0-32)/1.8+273.1 840 REM GRAZING RAY
160 W=W*1.665E-24 850 T1=T-LR*DR
170 R0=R0*6.378E+08 860 N1=1+(N-1)*((T1/T)^EX)
180 M=M*5.976E+27 870 A=P-Z
190 REM 880 L=L+(N1-1)*(-2)*R*COS(Z)
200 REM CALC ATMOS QUANTITIES AT R0 890 F=SIN(A)*N1/N: IF F>1 THEN F=1
210 G=6.67E-08*M/(R0*R0) 900 GOSUB 1170 : Z=F
220 S=1.38E-16*T0/(G*W) 910 RF=RF+(Z-A)
230 LA=-.4*W*G/1.38E-16 920 GOTO 1050
240 GOSUB 350 930 REM
250 REM PRINT RESULTS 940 REM OUTGOING RAY
260 ZA=Z0*RD 950 T2=T+LR*DR
270 ZR=(Z0+RF)*RD 960 N2=1+(N-1)*((T2/T)^EX)
280 RF=RF*3600*RD 970 F=SIN(Z)*R/(R+DR): GOSUB 1170 : A=F
290 PRINT "REFRACTION IS ";RF;" ARC SEC" 980 L=L+(N-1)*R*SIN(Z-A)/SIN(A)
300 PRINT "PATHLENGTH IS ";AM;" AIR 990 IF R>=R0+H THEN LZ=LZ+(N-1)*DR
MASSES" 1000 IF SIN(A)>N2/N THEN 1020
310 PRINT "APPAR ZENITH DIST ";ZA 1010 F=SIN(A)*N/N2: GOSUB 1170 : Z=F:
320 PRINT "REAL ZENITH DIST ";ZR GOTO 1030
330 END 1020 Z=P-A
340 REM 1030 RF=RF+(Z-A)
350 REM REFRACTION SUBR 1040 REM
360 REM 1050 REM END SUBROUTINE
370 N=N0: DH=S/200: IF H<0 THEN DH=-DH 1060 R=R+DR*IN
380 H1=0 1070 IF R<=R0+8*S THEN 490
390 T=T1: GOSUB 1110: T1=T 1080 AM=L/LZ
400 IF (H1-H)/DH>=0 THEN 450 1090 RETURN
410 H1=H1+DH: GOSUB 1110 1100 REM
420 EX=-1-(T0/(S*LR)) 1110 REM TEMPERATURE SUBR
430 N=1+(N-1)*((T/T1)^EX) 1120 LR=.5*LA: T=T0+LR*H1
440 T1=T: GOTO 400 1130 IF H1<=2*S THEN 1150
450 REM INITIALIZE PARAMETERS 1135 LR=-.16*LA
460 RF=0: L=0: LZ=0: R=R0+H 1140 T=T0+S*LA+LR*(H1-2*S)
470 L1=LR: Z=Z0 1150 RETURN
480 REM 1160 REM
490 REM LAYER THICKNESS 1170 REM ARC SINE FUNCTION
500 IF R>R0+H+5*S THEN DR=S/10 1180 IF F<1 THEN 1200
510 IF R<=R0+H+5*S THEN DR=S/20 1190 F=P2: GOTO 1210
520 IF R<=R0+H+2*S THEN DR=S/50 1200 F=ATN(F/SQR(1-F*F))
530 IF R<=R0+H+.2*S THEN DR=S/200 1210 RETURN
540 F=1-DR/R: GOSUB 1170 : ZG=P-F 1220 REM
550 IF Z<=P2 THEN IN=1 1230 REM **************************
560 IF Z>P2 THEN IN=0 1240 REM APPEARED IN ASTRONOMICAL
570 IF Z>ZG THEN IN=-1 COMPUTING
580 REM INDEX OF REFR FOR SHELL 1250 REM SKY & TELESCOPE - MARCH 1989
590 H1=R-R0: GOSUB 1110 ISSUE
600 T1=T-L1*DR*IN 1260 REM **************************
610 EX=-1-(T0/(S*L1))
620 N=1+(N-1)*((T/T1)^EX)
630 L1=LR
640 IF IN=-1 THEN 690
650 IF IN=0 THEN 840 ROCKET.BAS ; 001;
660 IF IN=1 THEN 940 Travel time for a space trip at relativistic speed
670 REM
680 REM
690 REM INWARD RAY 10 REM ROCKET.BAS by Brian Tung
700 T1=T-LR*DR 20 REM
710 N1=1+(N-1)*((T1/T)^EX) 30 DEFDBL A-Z
720 T2=T-LR*DR*2
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 55 / 73

40 A=1.032: REM Earth gravity in light- 230 S2=X*X+Y*Y


years per year squared 240 IF SQR(S2)>D/2 THEN 390
50 INPUT "Distance in light-years (0-100 250 Z=R+S2/R
million)"; D 260 L=R+DL-Z
60 IF D>=0 AND D<=100000000 THEN 80 270 U=L*X/Z
70 PRINT "Distance must be between 0 and 280 REM Now, test to see if the
100 million l-y": GOTO 50 290 REM ray is blocked (FL=0)
80 D1=D/2 300 REM or transmitted (FL=1)
90 T=SQR(D1*D1+(2*D1/A)) 310 REM by the grating
100 X=A*T 320 FL=0: REM Reset flag
110 M=1: REM Lines 110-180 compute 330 T=INT(ABS(U/W)+.5)
inverse sinh 340 IF T/2=INT(T/2) THEN FL=1
120 IF X<0 THEN M=-1 350 IF FL=0 THEN 390
130 S=LOG(ABS(X)+1) 360 XP=X0+X*C/D
140 S1=S+1 370 YP=Y0+Y*K*C/D
150 X1=(EXP(S)-EXP(-S))/2-ABS(X) 380 PSET(XP,YP): REM Plot point
160 S1=X1/(EXP(S)+EXP(-S))/2 390 NEXT I
170 S=S-S1 400 LOCATE 1,1
180 IF ABS(S1)>.0000001 THEN 150 410 PRINT "Diameter = ";D
190 T1=1/A*S*M 420 LOCATE 2,1
200 V=A*T/SQR(1+(A*T)*(A*T)) 430 PRINT "R of C = ";R
210 PRINT USING "Time on Earth: 440 LOCATE 3,1
#########.### years"; 2*T 450 PRINT "Ronchi freq =";F
220 PRINT USING "Time on board: 460 LOCATE 4,1
#########.### years"; 2*T1 470 PRINT "Delta = ";DL
230 Z$ = "Top speed: #.###" 480 END
240 IF D<1 THEN 280 490 REM **************************
250 Z1=INT(2*LOG(D)/LOG(10)) 500 REM APPEARED IN ASTRONOMICAL
260 IF D>=1 AND D<10000000 THEN Z$=Z$ COMPUTING
+STRING$(Z1,"#") 510 REM SKY & TELESCOPE - APRIL 1991
270 IF D>=10000000 THEN Z$=Z$ ISSUE
+"#############" 520 REM **************************
280 Z$=Z$+" c"
290 PRINT USING Z$; V
300 END
900 REM ---------------------------
910 REM APPEARED IN COMPUTERS IN ROTATE.BAS ; 030;
920 REM ASTRONOMY, SKY & TELESCOPE, Field rotation in a misaligned telescope
930 REM FEBRUARY 2002, PAGE 66
940 REM ---------------------------
10 ' FIELD ROTATION
20 '
30 PI=ATN(1)*4: DR=PI/180: RD=180/PI
40 INPUT "Observer's latitude (deg) ";LA
RONCHI.BAS ; 036; 50 LA=LA*DR: CL=COS(LA): SL=SIN(LA)
Ronchi test simulation 60 INPUT "Day of the month (1-31)";J
70 INPUT "Month (1-12) ";M
80 INPUT "Right ascension (h,m) ";H5,M5
10 REM RONCHI.BAS 90 INPUT "Declination (deg) ";DE
20 REM 100 AD=H5+M5/60: DE=DE*DR: ' Hours and
30 INPUT "Mirror diameter ";D radians
40 INPUT "Radius of curvature";R 110 SD=SIN(DE): CD=COS(DE): TD=SD/CD
50 INPUT "Grating frequency ";F 120 GOSUB 650: PRINT
60 PRINT "Grating distance Delta" 130 INPUT "From (h,m): ";H1,M1
70 PRINT " from the mirror's 140 T1=H1+M1/60: ' Starting time (hours)
80 PRINT " center of curvature" 150 INPUT "To (h,m): ";H2,M2
90 INPUT " (+ is outside) ";DL 160 T2=H2+M2/60: ' Ending time (hours)
100 W=1/(2*F): REM Line width 170 IF T2<T1 THEN T2=T2+24: ' If crossing
120 CLS midnight
130 SCREEN 2 180 PRINT
140 X0=300: Y0=100: C=300 190 PRINT "Positive rotation rates are
150 K=.42 clockwise:"
160 CIRCLE (X0,Y0),C/2 200 DU=60*(T2-T1)+.01: ' Exposure
170 FOR I=1 TO 10000 duration (min.)
180 X=D*(RND(1)-.5) 210 FOR T=0 TO DU STEP 1
190 Y=D*(RND(1)-.5) 220 LT=T1+T/60: ' Local mean time
200 REM X and Y are the ray's (hours)
210 REM coordinates on the face 230 GOSUB 520: A=AZ
220 REM of the mirror 240 DD=SIN(AH): DS=(SL/CL)*CD-SD*CH
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 56 / 73

250 IF DS<>0 THEN 270 830 ' the field will rotate for a
260 C=SGN(DD)*PI/2: GOTO 280: ' In telescope
case DS=0 840 ' whose polar axis is misaligned on
270 C=ATN(DD/DS): IF DS<0 THEN C=C+PI the
280 Q=C*RD: ' Parallactic angle in 850 ' celestial pole. This subject is
degrees discussed
290 IF T<>0 THEN 310 860 ' in detail in Sky & Telescope,
300 Q0=Q: Q1=Q: ' Save initial value September
of Q 870 ' 1992, page 318.
310 XX=Q-Q1: XT=Q-Q0
320 IF ABS(XX)<=180 THEN 340
330 XX=XX-360*SGN(XX): Q=Q-360*SGN(Q)
340 Q1=Q
350 IF T<>0 THEN GOSUB 470 SAROS.BAS ; 081;
360 IF T=0 THEN GOSUB 700 Saros numbers for solar eclipses
370 IF XT>MX THEN MX=XT
380 IF XT<MN THEN MN=XT
390 NEXT 10 REM SAROS SERIES
400 PRINT: PRINT "Cumulative field 14 REM
rotation: "; 18 PRINT
410 PRINT USING "####.## deg";MX-MN 22 INPUT "JULIAN DAY NUMBER";J
420 PRINT 26 Q=J/29.530588-82064
430 PRINT USING "Start alt. ### Az. 30 B=INT(Q): N=Q-B
###";H0;A0 34 IF N>0.28 AND N<0.36 THEN 42
440 PRINT USING "Ending alt. ### Az. 38 PRINT "WARNING: NOT NEW MOON!"
###";H;A 42 PRINT " BROWN LUNATION ";B
450 END 46 D=B-848
460 ' 50 S=136+38*D
470 IF LT>=24 THEN LT=LT-24 54 X=-61*D
480 PRINT USING " ##h ##m ";INT(LT);(LT- 58 C=INT(X/358+0.5-D/(12*358*358))
INT(LT))*60; 62 S=S+223*C
490 PRINT USING " Rotation +###.## 66 X=X-358*C
deg/min ";XX 70 IF ABS(X-(S-136)/12)<55 THEN 78
500 RETURN 74 PRINT "WARNING: NO ECLIPSE!"
510 ' Compute hour angle, altitude, 78 PRINT " SAROS NUMBER ";S
and azimuth 82 PRINT " RELATIVE ECLIPSE ";
520 HD=15*(1.002737*LT+ST-AD): ' Hour 86 PRINT INT(X-(S-136)/12+0.5)
angle (deg) 90 PRINT
530 IF HD>=360 THEN HD=HD-360 94 END
540 AH=HD*DR: CH=COS(AH): 95 REM ------------------------
SA=SL*SD+CL*CD*CH 96 REM APPEARED IN ASTRONOMICAL
550 IF ABS(SA)<1 THEN 580 97 REM COMPUTING, SKY & TELE-
560 IF ABS(SA)>1 THEN SA=1*SGN(SA) 98 REM SCOPE, OCTOBER, 1985
570 H=SA*90: GOTO 590: ' If zenith or 99 REM ------------------------
nadir
580 H=ATN(SA/SQR(1-SA*SA))*RD: ' Altitude
(degrees)
590 A1=SIN(AH): A2=CH*SL-TD*CL: IF A2<>0 SATRINGS.BAS ; 021;
THEN 610
Saturn ring-plane crossings
600 AZ=SGN(A1)*PI/2: GOTO 620: ' Special
case A2=0
610 AZ=ATN(A1/A2): IF A2<0 THEN AZ=AZ+PI 10 ' RINGS OF SATURN
620 AZ=AZ*RD+180: ' Azimuth in degrees 20 DEFDBL A-Z
from north 30 CLS: PI=4#*ATN(1#): RD=PI/180#: DL=9#
630 IF AZ>=360 THEN AZ=AZ-360 40 INPUT "Year of interest"; Y
640 RETURN 50 A=INT((Y-1#)/100#): B=2#-A+INT(A/4#)
650 ' Find approx. sidereal time at 60 IF Y<1583 THEN B=0
midnight 70 JD=INT(365.25*(Y+4715))
660 N=INT(275*M/9)-2*INT((M+9)/12)+J-30 +INT(30.6001*(14))
670 ST=(6.61+.06571*N)/24 80 JD=JD+B-1523.5
680 ST=(ST-INT(ST))*24: ' Express in 90 JE=JD+365#
hours 100 T=(JD-2451545#)/365250#
690 RETURN 110 I=(28.04922#-.13#*T+.0004#*T*T)*RD
700 ' Initialize values 120 OM=(169.53#+13.826#*T+.04#*T*T)*RD
710 MX=XX: MN=XX: A0=A: H0=H 130 GOSUB 550: ' Get planet positions
720 RETURN 140 X=SR*COS(SB)*COS(SL)-ER*COS(EL)
800 ' 150 Y=SR*COS(SB)*SIN(SL)-ER*SIN(EL)
810 ' ROTATE.BAS -- This program by 160 Z=SR*SIN(SB)-ER*SIN(EB)
Alphonse 170 DL=SQR(X*X+Y*Y+Z*Z)
820 ' Pouplier computes the rate at which
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 57 / 73

180 LA=ATN(Y/X): IF X<0 THEN LA=LA+PI 720


190 BE=ATN(Z/SQR(X*X+Y*Y)) L0=L0+11107660#*COS(3.96205+213.2991#*
200 S=SIN(I)*COS(BE)*SIN(LA-OM)- T)
COS(I)*SIN(BE) 730 L0=L0+1414151#*COS(4.58582+7.11355*T)
210 B=ATN(S/SQR(1#-S*S)) 740
220 SP=SIN(I)*COS(SB)*SIN(SL-OM)- L0=L0+398379#*COS(.52112+206.18555#*T)
COS(I)*SIN(SB) 750
230 BP=ATN(SP/SQR(1#-SP*SP)) L0=L0+350769#*COS(3.3033+426.598191#*T
240 ' Check for crossing of ring plane )
250 IF B*XB>=0 THEN GOTO 280 760
260 N$="(N to S)": IF B>0 THEN N$="(S to L0=L0+206816#*COS(.24658+103.09277#*T)
N)" 770
270 PRINT "< Earth crosses ring plane "; L0=L0+79271#*COS(3.84007+220.41264#*T)
N$; " >" 780 L0=L0+23990*COS(4.66977+110.20632#*T)
280 IF BP*XP>=0 THEN GOTO 310 790 L0=L0+16574*COS(.43719+419.48464#*T)
290 N$="(N to S)": IF BP>0 THEN N$="(S to 800 L0=L0+15820*COS(.93809+632.78374#*T)
N)" 810 L0=L0+15054*COS(2.7167+639.89729#*T)
300 PRINT "< Sun crosses ring plane "; 820 L0=L0+14907*COS(5.76903+316.39187#*T)
N$; " >" 830 L0=L0+14610*COS(1.56519+3.93215*T)
310 Z=INT(JD+1): AL=INT((Z- 840 L0=L0+13160*COS(4.44891+14.22709*T)
1867216.25#)/36524.25#) 850 L0=L0+13005*COS(5.98119+11.0457*T)
320 AJ=Z+1#+AL-INT(AL/4#): IF Z<2299161# 860 L0=L0+10725*COS(3.1294+202.2534*T)
THEN AJ=Z 870 L1=21354295596#
330 BJ=AJ+1524: CJ=INT((BJ-122.1)/365.25) 880
340 DJ=INT(365.25#*CJ): EJ=INT((BJ- L1=L1+1296855#*COS(1.82821+213.2991#*T
DJ)/30.6001) )
350 D=BJ-DJ-INT(30.6001*EJ) 890 L1=L1+564348#*COS(2.885+7.11355*T)
360 M=EJ-1: IF EJ>13.5 THEN M=M-12 900
370 Y=CJ-4715: IF M>2 THEN Y=Y-1 L1=L1+107679#*COS(2.2777+206.18555#*T)
380 PRINT USING "## ## #####"; M; D; Y; 910 L1=L1+98323#*COS(1.0807+426.59819#*T)
390 PRINT USING " B =###.## deg"; B/RD; 920
400 PRINT USING " B'=###.## deg"; BP/RD; L1=L1+40255#*COS(2.04128+220.41264#*T)
440 ' 930 L2=116441#*COS(1.17988+7.11355*T)
450 CI=(SR^2+DL^2-ER^2)/(2*SR*DL) 940 L2=L2+91921#*COS(.07425+213.2991*T)
460 ID=ATN(SQR(1-CI*CI)/CI)/RD 950 L2=L2+90592#
470 MV=-8.88+5*LOG(SR*DL)/LOG(10) 960 L2=L2+15277*COS(4.06492+206.18555#*T)
480 MV=MV+.044*ID-2.6*ABS(S)+1.25*S*S 970 L3=16039*COS(5.73945+7.11355*T)
490 PRINT USING " Mv =##.#"; MV 980 L4=1662*COS(3.9983+7.1135*T)
500 IF B*XB<0 THEN WHILE INKEY$="": WEND 990 SL=(L0+L1*T+L2*T*T+L3*T^3+L4*T^4)/
510 IF BP*XP<0 THEN WHILE INKEY$="": WEND (1E+08)
520 JD=JD+1#: XB=B: XP=BP 1000 B0=4330678#*COS(3.60284+213.2991#*T)
530 IF JD<=JE THEN GOTO 100 1010
540 END B0=B0+240348#*COS(2.85238+426.59819#*T
550 ' Calculate position of Earth )
560 L0=175347046# 1020 B0=B0+84746#
570 1030
L0=L0+3341656#*COS(4.66926+6283.07585# B0=B0+34116#*COS(.57297+206.18555#*T)
*T) 1040
580 B0=B0+30863*COS(3.48442+220.41264#*T)
L0=L0+34894#*COS(4.6261+12566.1517#*T) 1050
590 L1=628331966747# B0=B0+14734*COS(2.11847+639.89729#*T)
600 1060 B0=B0+9917*COS(5.79+419.4846*T)
L1=L1+206059#*COS(2.67824+6283.07585#* 1070 B0=B0+6994*COS(4.736+7.1135*T)
T) 1080 B1=397555#*COS(5.3329+213.2991#*T)
610 L2=52919# 1090 B1=B1+49479#*COS(3.14159)
620 EL=(L0+L1*T+L2*T*T)/(1E+08): EB=0 1100
630 R0=100013989# B1=B1+18572*COS(6.09919+426.59819#*T)
640 1110
R0=R0+1670700#*COS(3.09846+6283.07585# B1=B1+14801*COS(2.30586+206.18555#*T)
*T) 1120 B1=B1+9644*COS(1.6967+220.4126*T)
650 1130 B2=20630*COS(.50482+213.2991*T)
R0=R0+13956#*COS(3.05525+12566.1517#*T 1140 SB=(B0+B1*T+B2*T*T)/(1E+08)
) 1150 R0=955758136#
660 R1=103019#*COS(1.10749+6283.07585#*T) 1160
670 R2=4359#*COS(5.7846+6283.0758#*T) R0=R0+52921382#*COS(2.39226+213.2991#*
680 ER=(R0+R1*T+R2*T*T)/(1E+08) T)
690 ' Calculate position of Saturn 1170
700 T=T-(.00578#*DL)/365250# R0=R0+1873680#*COS(5.2355+206.18555#*T
710 L0=87401354# )
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 58 / 73

1180 130 REM - Clear, set into HP-GL/2 mode,


R0=R0+1464664#*COS(1.64763+426.59819#* and initialize the printer
T) 140 LPRINT CHR$(27); "E": LPRINT
1190 CHR$(27); "%0B": LPRINT "IN;"
R0=R0+821891#*COS(5.9352+316.39187#*T) 150 DEG = (SP / CI) * DIV: REM -
1200 Calculate the # of deg (or hrs) to
R0=R0+547507#*COS(5.01533+103.09277#*T print per column
) 160 LPRINT "SP1;": LPRINT "PW0;": REM -
1210 Select a pen and set the width
R0=R0+371684#*COS(2.27115+220.41264#*T 170 REM - Using the Scale Length per
) column, insert tick marks for the
1220 R0=R0+361778#*COS(3.13904+7.11355*T) whole column
1230 R1=6182981#*COS(.25844+213.2991#*T) 180 REM - there will be one Tick Mark for
1240 each degree
R1=R1+506578#*COS(.71115+206.18555#*T) 190 FOR Z = 1 TO DIV
1250 200 A = A + Q
R1=R1+341394#*COS(5.79636+426.59819#*T 210 FOR I = 0 TO SP STEP DEG
) 220 LPRINT "PU;"
1260 R2=436902#*COS(4.78672+213.2991#*T) 230 LPRINT "PA"; A + TICK; ","; C + I;
1270 R3=20315*COS(3.02187+213.2991*T) ";"
1280 SR=(R0+R1*T+R2*T*T+R3*T^3)/(1E+08) 240 LPRINT "PD;"
1290 RETURN 250 LPRINT "PA"; A + BT; ","; C + I; ";"
1300 ' 260 LPRINT "PU;"
1310 ' This program by Donald W. Olson, 270 P = P + 1: R = R + 1: T = T + 1
Russell L. Doescher, and 280 IF QQ = 1 THEN GOTO 330
1320 ' Jonathan Gallmeier appeared in an 290 IF T = 360 THEN T = 0
article titled "The Rings 300 IF P = 5 THEN GOSUB 540
1330 ' of Saturn" in Sky & Telescope for 310 IF R = 10 THEN GOSUB 620
May 1995, pages 92-95. 320 GOTO 360
1340 ' It computes the tilt of the rings 330 IF T = 288 THEN T = 0
as seen from the Earth (B) 340 IF P = 4 THEN GOSUB 540
1350 ' and the Sun (B'). The program 350 IF R = 12 THEN GOSUB 620
pauses when ring-plane crossings 360 NEXT I
1360 ' occur. It also computes the 370 A = 340: Q = Q + M
apparent visual magnitude of 380 NEXT Z
1370 ' Saturn (Mv), a quantity that 390 GOTO 420
depends strongly on the amount 400 PRINT : PRINT "Value is too high for
1380 ' of ring tilt on a given date. this program,"
Valid for at least 2,000 years. 410 PRINT " Please enter another
SMALLER value": PRINT : GOTO 40:
420 REM - Draw registration dots at
bottom of the scales
430 LPRINT "UL8,5,20,5,20,5,20,5,20;"
SCALES.BAS ; 017; 440 LPRINT "LT8;"
Print setting-circle strips on a LaserJet 450 LPRINT "PU;"
460 LPRINT "PA"; G; ","; C - DEG; ";"
470 LPRINT "PD;"
10 REM - THIS IS SCALES.BAS 480 LPRINT "PA"; H1; ","; C - DEG; ";"
20 CLS : A = 340: BT = 254: C = BT: DIV = 490 LPRINT "PU;"
1: G = A: H1 = 7650: TICK = 127 500 REM - Reset the Printer
30 M = 1016: PLU = 40: CI = 360 510 LPRINT CHR$(27); "%0A": LPRINT
40 INPUT "Please Enter SCALE LENGTH in mm CHR$(27); "E"
- "; S: S1 = S 520 END
50 IF S > 2000 THEN GOTO 400 530 REM - "Make every fifth degree or
60 IF S1 > 250 THEN S1 = S1 - 250: DIV = 20th minute longer" SUB-ROUTINE
DIV + 1: GOTO 60 540 LPRINT "PU;"
70 PRINT : PRINT "Do you want the scale 550 LPRINT "PA"; A; ","; C + I; ";"
in Degrees or Hours and Minutes?" 560 LPRINT "PD;"
80 INPUT " Please indicate 'd' for 570 LPRINT "PA"; A + BT; ","; C + I; ";"
Degrees or 'h' for Hours... "; A$: 580 LPRINT "PU;"
PRINT 590 P = 0
90 IF A$ = "h" OR A$ = "H" THEN CI = 288: 600 RETURN
QQ = 1 610 REM - "Number the scales with degrees
100 PRINT : PRINT : PRINT or hours" SUB-ROUTINE
"Printing......." 620 LPRINT "SD1,21,2,1,4,10,7,4148;"
110 PRINT : PRINT "NOTE: This will take 630 IF DIV > 2 THEN LPRINT "DI0,-1;":
up to 90 seconds to print." LPRINT "LO16;": GOTO 650
120 S = S / DIV: SP = S * PLU: REM - 640 LPRINT "LO18;"
Convert Scale Length to plotter units 650 LPRINT "DT*,1;"
660 LPRINT "PU;"
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 59 / 73

670 LPRINT "PA"; A; ","; C + I; ";" 55 REM INTEGRATE ALONG ILLUMINATED


680 IF QQ = 1 THEN LPRINT "LB"; (T / 12); 56 REM PORTION OF LINE OF SIGHT
"*;": GOTO 710 57 D0=100*E
690 LPRINT "PD;" 58 IF D1<D0 AND F1=0 THEN D0=D1
700 LPRINT "LB"; T; "*;" 59 IF D2<D0 AND F2=0 THEN D0=D2
710 LPRINT "PU;" 60 IF D3<D0 AND F3=0 THEN D0=D3
720 R = 0 61 IF F1+F2+F3=3 THEN D0=0
730 RETURN 62 B0=10^(C*E*D0)
900 REM ****************************** 63 IF F3=0 THEN B0=B0-10^(C*E*D3)
910 REM THIS PROGRAM BY RONALD KOCELA 64 IF B0>B9-B THEN B0=B9-B
PRODUCES LINEAR 65 G=S9-S0
920 REM SETTING CIRCLE SCALES ON HP 66 SK=2.5*LOG(B0+B)/LOG(10)
LASERJET PRINTERS 67 M(I)=INT(0.05+9.9*(SK-S0)/G)
930 REM FROM SKY & TELESCOPE, MARCH 68 NEXT I
1996, PAGE 84. 69 FOR I9=1 TO H9
940 REM ****************************** 70 PRINT RIGHT$(STR$(M(I9)),1);
71 NEXT I9: PRINT
72 NEXT J
73 END
74 REM **************************
SHADOW.BAS ; 059; 75 REM ASTRONOMICAL COMPUTING
Modeling mountain shadows 76 REM SKY & TELESCOPE, APRIL 88
77 REM **************************

10 REM MOUNTAIN SHADOWS


11 REM
12 DIM M(70): C=-0.4
13 DR=2*3.14159265/360: FM=1/5280 SHOWER.BAS ; 048;
14 INPUT "MOUNTAIN HEIGHT (FT)";H1 Dates of meteor showers
15 INPUT "OBSERVER HEIGHT (FT)";H0
16 INPUT "HORIZON HEIGHT (FT) ";H
17 H1=H1*FM: H0=H0*FM: H=H*FM 10 REM METEOR SHOWERS
18 INPUT "SLOPE ";S: S=S*DR 12 R1=3.1415927/180: DIM M$(12)
19 INPUT "SUN ALT";A: A=A*DR 14 DIM N$(9),S0(9),S1(9),J5(9)
20 INPUT "OBS'R AZ";Z: Z=Z*DR 16 FOR I=1 TO 12: READ M$(I): NEXT
21 E=0.30: B=0.005: B9=0.9+B 18 DATA JAN,FEB,MAR,APR,MAY,JUN
22 H9=60: V9=30: W=1*DR 20 DATA JUL,AUG,SEP,OCT,NOV,DEC
23 S9=2.5*LOG(B9)/LOG(10) 22 FOR I=1 TO 9
24 S0=2.5*LOG(B)/LOG(10) 24 READ N$(I),S0(I),S1(I),J5(I)
25 REM OBSERVER'S LOCATION 26 NEXT I
26 X0=COS(Z)*(H1-H0)/TAN(S) 28 INPUT "YEAR";Y: T5=(Y-1950)/100
27 Y0=SIN(Z)*(H0-H1)/TAN(S) 30 FOR I=1 TO 9
28 Z0=H0-H1 32 IF ABS(T5)<1.5 THEN 36
29 REM SET UP GRID OF DIRECTIONS 34 IF I=1 OR I=4 OR I=9 THEN 70
30 FOR J=1 TO V9 36 S=S0(I)+S1(I)*T5
31 AL=W*(V9/2-J) 38 S=S+1.39663*T5+.0003*T5*T5
32 FOR I=1 TO H9 40 S=S-360*INT(S/360)
33 AZ=W*(I-H9/2) 42 J=J5(I)+36525.636*T5+S1(I)*T5
34 REM DISTANCE TO 'NORTH' SLOPE 44 FOR K=1 TO 2
35 REM SHADOW PLANE 46 T=(J+2433000-2415020)/36525
36 A0=SQR(TAN(S)^2-TAN(A)^2) 48 L=279.7+36000.769*T+.0003*T*T
37 A1=-1*TAN(AL)/COS(AZ)-TAN(A) 50 M=358.48+35999.05*T-.0002*T*T
38 A2=A0*TAN(AZ) 52 S5=L+(1.92-.005*T)*SIN(M*R1)
39 A3=-X0*TAN(AL)/COS(AZ)-Z0 54 S5=S5+.02*SIN(2*M*R1)
40 A4=A0*(Y0+X0*TAN(AZ)) 56 S5=S5-360*INT(S5/360)
41 XI=(A3+A4)/(A1+A2) 58 J=J-(S5-S)/(.986+.033*COS(M*R1))
42 F1=0: D=TAN(AZ) 60 NEXT K
43 IF XI>=X0 THEN F1=1 62 F=J-INT(J): J=INT(J)+2433000
44 A5=1+D^2+(TAN(AL)/COS(AZ))^2 64 GOSUB 96
45 D1=ABS(XI-X0)*SQR(A5) 66 PRINT N$(I);TAB(15);M$(M);
46 REM DIST TO 'SOUTH' SLOPE 68 PRINT USING "###.#";D
47 REM SHADOW PLANE 70 NEXT I
48 XI=(A3-A4)/(A1-A2) 72 END
49 F2=0 74 REM SHOWER DATA
50 IF XI>=X0 THEN F2=1 76 DATA "QU'DNTDS",282.9,-0.4,285.3
51 D2=ABS(XI-X0)*SQR(A5) 78 DATA "LYRIDS ",31.7,0.06,393.9
52 REM DISTANCE TO HORIZON PLANE 80 DATA "ETA AQR ",44.0,0.3,406.6
53 F3=0: IF AL>=0 THEN F3=1 82 DATA "DLT AQR ",125.0,-1.0,491.2
54 D3=(H0-H)/SIN(ABS(AL)+0.001) 84 DATA "PERSEIDS",139.2,0.03,506.0
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 60 / 73

86 DATA "ORIONIDS",207.7,0.4,576.2 420 INPUT "SCOPE POWER";A


88 DATA "TAURIDS ",220.0,0.44,588.5 430 INPUT "APERTURE (IN.)";D
90 DATA "LEONIDS ",234.3,1.5,602.7 440 INPUT "CAMERA F.L. (IN.)";B
92 DATA "GEMINIDS",261.4,0,629.5 450 C=A*B: K=C/D
94 REM 460 REM
96 REM JD --> CALENDAR 470 REM CALC. SHUTTER SPEEDS
98 G=1: IF J<2299161 THEN G=0 480 PRINT
100 F=F+.5: IF F<1 THEN 104 490 INPUT "EXAMPLE F/NUMBER";L
102 F=F-1: J=J+1 500 INPUT "EXAMPLE FILM INDEX";M
104 IF G=1 THEN 108 510 INPUT "EXAMPLE TIME";O
106 A=J: GOTO 112 520 PRINT
108 A1=INT((J/36524.25)-51.12264) 530 INPUT "YOUR FILM INDEX";N
110 A=J+1+A1-INT(A1/4) 540 R=(K*K)/(L*L)
112 B=A+1524 550 V=R*O*M/N
114 C=INT((B/365.25)-.3343) 560 PRINT V;" IS YOUR TIME"
116 D=INT(365.25*C) 570 PRINT: INPUT "NEXT";A$
118 E=INT((B-D)/30.61) 580 GOTO 120
120 D=B-D-INT(30.61*E)+F 590 REM ------------------------
122 M=E-1: Y=C-4716 600 REM APPEARED IN ASTRONOMICAL
124 IF E>13.5 THEN M=M-12 610 REM COMPUTING, SKY & TELE-
126 IF M<2.5 THEN Y=Y+1 620 REM SCOPE, JUNE, 1985
128 RETURN 630 REM ------------------------
200 REM *******************************
210 REM FOR ANY GIVEN YEAR, THIS
220 REM PROGRAM LISTS THE MAJOR METEOR
230 REM SHOWERS AND THE UT DATES OF
240 REM MAXIMUM ACTIVITY. FROM SKY SINE.BAS ; 049;
250 REM & TELESCOPE, AUG '89, P. 195. Demonstration of chaotic behavior
260 REM *******************************

10 ' ----- set up dimensions (in pixels)


of display -----
11 DX = 310
SHUTTR.BAS ; 085; 12 DY = 199
Shutter speeds for astrophotography 13 CLS
14 SCREEN 2
15 KEY OFF
100 REM SHUTTER SPEEDS 17 PRINT "This program generates the
110 REM Julia sets of the function"
120 PRINT "SELECT PHOTO METHOD--" 18 PRINT "lambda*sin(X + iY), where
130 PRINT " (A) PRIME FOCUS" lambda = P + iQ and i * i = -1,"
140 PRINT " (B) BARLOW PROJ." 19 PRINT "in a portion of the complex
150 PRINT " (C) EYEPIECE PROJ." plane with origin (in upper"
160 PRINT " (D) AFOCAL METHOD" 20 PRINT "left corner) ACORNER,BCORNER
170 PRINT " (E) QUIT" and size SIDEX,SIDEY."
180 INPUT A$: PRINT 21 PRINT "To get acquainted with this
190 IF A$="A" THEN 250 function set:"
200 IF A$="B" THEN 250 22 PRINT "lambda = 1, 0 corner = -7,
210 IF A$="C" THEN 330 -7 size = 14, 14"
220 IF A$="D" THEN 410 23 PRINT "To reproduce the images on page
230 IF A$="E" THEN END 137 of the August S&T set,"
240 GOTO 120 24 PRINT "Right image: lambda = 1, 0.1
250 REM CALCULATE F/NUMBER corner = -3, -3 size 6, 6"
260 INPUT "OBJECTIVE F.L.";A 25 PRINT "Left image: lambda = 1, 0.8
270 INPUT "APERTURE";B corner = -3, -3 size 6, 6"
280 C=A/B: IF A$="A" THEN K=C 26 PRINT "More details are in Chapter 3
290 IF A$="A" THEN 470 of 'The Science of Fractal"
300 INPUT "BARLOW POWER";D 27 PRINT "Images,' Heinz-Otto Peitgen and
310 K=C*D: GOTO 470 Dietmas Saupe editors,"
320 REM 28 PRINT "Springer -Verlag, 1988."
330 REM EYEPIECE PROJECTION 29 PRINT "Good luck,"
340 PRINT "SPACE FROM EYEPIECE" 30 PRINT "David H. Smith July, 1989"
350 INPUT " TO FILM (INCHES)";A 31 PRINT ""
360 INPUT "EYEPIECE F.L. (IN.)";B 32 PRINT ""
370 INPUT "OBJECTIVE F.L.(IN.)";D 33 PRINT "P.S. This program takes about
380 INPUT "APERTURE (IN.)";F an hour to run on a 6 MHz 286"
390 K=(A*D)/(B*F): GOTO 470 34 PRINT "machine equipped with a 287
400 REM coprocessor running Quick Basic."
410 REM AFOCAL METHOD
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 61 / 73

35 PRINT "If you are running GW Basic 50 GOSUB 760: PRINT D$: PRINT
expect it to take 10-times longer." 60 GOSUB 630
36 PRINT "A color graphics card is 70 INPUT "Universal time (h,m)";HH,MM
essential." 80 IF HH=99 THEN 110
85 INPUT "enter value of lambda"; P, Q 90 UT=HH+MM/60: REM UT in hours
90 INPUT "enter corner of region to be 100 GOSUB 140: GOTO 70
displayed"; ACORNER, BCORNER 110 END
100 INPUT "enter size of region"; SIDEX, 120 REM **** SUBROUTINES ****
SIDEY 130 REM
105 CLS 140 REM Compute details at time UT
106 SCREEN 1 150 T=UT+DT/3600-T0: REM "Element time"
107 COLOR 0, 2 160 X=FNX(T): REM x
110 GAPX = SIDEX / DX 170 Y=FNY(T): REM y
115 GAPY = SIDEY / DY 180 CD=FNC(T): REM cos(d)
210 '----- start main loops ----- 190 SD=FNS(T): REM sin(d)
220 FOR X = 1 TO DX 200 M=DR*FNM(T): REM mu
230 FOR Y = 1 TO DY 210 REM
260 AZ = (X * GAPX) + ACORNER 220 REM Now find H.A. in radians
270 BZ = (Y * GAPY) + BCORNER 230 H=M+LO-DT/13713
300 COUNT = 0 240 REM
302 EPBZ = EXP(BZ) 250 REM Now find xi, eta, zeta
303 EMBZ = 1 / EPBZ 260 X8=P9*SIN(H)
304 COSH = (EPBZ + EMBZ) / 2! 270 Y8=P8*CD-P9*SD*COS(H)
305 SINH = (EPBZ - EMBZ) / 2! 280 Z8=P8*SD+P9*CD*COS(H)
310 REAL = SIN(AZ) * COSH 290 U0=X-X8: REM u
315 IMAG = COS(AZ) * SINH 300 V0=Y-Y8: REM v
320 REALZ = P * REAL - Q * IMAG 310 L1=FNL1(T): REM l1
325 IMAGZ = Q * REAL + P * IMAG 320 L2=FNL2(T): REM l2
326 IMAGZ2 = IMAGZ * IMAGZ 330 W1=L1-Z8*F1: REM L1
330 ABSZ = SQR(IMAGZ2) 340 W2=L2-Z8*F2: REM L2
340 COUNT = COUNT + 1 350 REM
350 ' 360 REM Magnitude
360 ' check for divergence or count = 30 370 G1=SQR(U0*U0+V0*V0)
370 IF ((ABSZ > 30) OR (COUNT = 30)) 380 G=(W1-G1)/(W1+W2)
THEN 430 390 REM
380 AZ = REALZ 400 REM Position angle
390 BZ = IMAGZ 410 PA=RD*ATN(U0/V0)
400 GOTO 302 420 IF V0<0 THEN PA=PA+180
410 ' 430 IF PA<0 THEN PA=PA+360
420 ' set pixel color according to count 440 IF PA>360 THEN PA=PA-360
430 COLOUR = 1 + COUNT MOD 3 450 REM
550 IF (COUNT = 30) THEN COLOUR = 0 460 REM Sun's altitude
560 ' 470 A8=SD*SIN(LA)
600 '----- turn pixel on ----- 480 A8=A8+CD*COS(LA)*COS(H)
610 PSET (X, Y), COLOUR 490 AL=RD*ATN(A8/SQR(1-A8*A8))
620 ' 500 REM
630 NEXT Y 505 REM
640 NEXT X 510 REM Print out a line of data
700 END 520 REM
800 REM **************************** 530 UT=T-DT/3600+T0: REM "Element time"
810 REM FOR MORE INFORMATION ON THIS back to UT
PROGRAM, SEE THE 540 UT=UT+.5/3600: REM Round to whole
820 REM ARTICLE "COMPUTER CHAOS AT HOME" second
IN THE AUGUST, 550 HH=INT(UT): M3=60*(UT-HH): MM=INT(M3)
830 REM 1989, ISSUE OF SKY & TELESCOPE, 560 SS=INT(60*(M3-MM))
PAGE 139. 570 PA=INT(PA+.5): AR=INT(AL+.5): REM
840 REM **************************** Whole degrees
580 IF AL<0 THEN PRINT "Sun below
horizon": GOTO 610
590 IF G<0 THEN PRINT "No eclipse at this
time": GOTO 610
SOLARECL.BAS ; 034; 600 PRINT USING A2$;HH;MM;SS;PA;AR;G
Predictions of July 11, 1991, solar eclipse 610 RETURN
620 REM
630 REM Geocentric Coordinates of
10 REM LOCAL CIRCUMSTANCES OF A Observer
20 REM SOLAR ECLIPSE 640 REM
30 REM 650 INPUT "North latitude (deg) ";LA
40 DEFDBL A-Z 660 INPUT "East longitude (deg) ";LO
670 INPUT "Elevation (feet) ";EL
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 62 / 73

680 LA=LA*DR: LO=LO*DR: REM Lat, long in


radians
690 EL=EL*12/39.37: REM Elevation in
meters SOLAROSC.BAS ; 010;
700 U=ATN(.99664719#*TAN(LA)) Visualize global solar oscillation modes
710 P8=.99664719#*SIN(U)
+EL*SIN(LA)/6378140#
720 P9=COS(U)+EL*COS(LA)/6378140# 10 REM Solar Surface Oscillations
730 REM P8 = rho sin(phi'); P9 = rho 20 REM SOLAROSC.BAS by John Kennewell
cos(phi') 30 DIM P(200)
740 RETURN 40 SCREEN 12: PH=1.570795: MX=0
750 REM 50 RD=1: GN=256: BL=65536!
760 REM Constants 60 PRINT "Solar Oscillation Modes"
770 PI=3.141592653589793#: DR=PI/180: 70 INPUT "Degree L [0 to 28]";L
RD=1/DR 80 INPUT "Order M [0 to L ]";M
780 A2$=" UT ##:##:## PA ### Alt ### 90 REM Generate Legendre function
Mag #.###" 100 FOR XI=0 TO 200
790 REM 110 X=(XI-100)/100: D=SQR(1-X*X)
800 REM 120 P1=D^L: P2=0
810 REM Eclipse elements 130 FOR LI=1 TO (2*L-1) STEP 2
820 D$="Total Solar Eclipse of July 11, 140 P1=P1*LI: NEXT LI
1991" 150 IF M>=L OR P1=0 THEN 200
830 T0=16: REM Reference time (hr) 160 FOR MI=L-1 TO M STEP -1
840 DT=0: REM Delta-T (sec) in sense 170 PM=2*(MI+1)*X*P1/D-P2
ET-UT 180 PM=PM/(L-MI)/(L+MI+1)
850 DEF FNX(T)=- 190 P2=P1: P1=PM: NEXT MI
1.75954169#+T*(+.56710171#+T*(+4.902E- 200 P(XI)=P1: MT=ABS(P1)
05-T*9.60E-06)) 210 IF MT>MX THEN MX=MT
860 DEF 220 NEXT XI
FNY(T)=+.42232901#+T*(-.13699808#+T*(- 230 CLS : COLOR 1: LOCATE 2,3
1.7527E-04+T*.0000025)) 240 PRINT "Solar Global Oscillations"
870 DEF FNS(T)=+.37643393#+T*(-8.389E- 250 LOCATE 28,3
05+T*(-.0000001)) 260 PRINT "MODE : L ="; L;" M =";M
880 DEF FNC(T)=+.92644352#+T*(+3.404E- 270 REM Show color palette
05+T*(+4E-08)) 280 FOR I=1 TO 15
890 DEF 290 LINE (600,-15+30*I)-
FNM(T)=58.6389581#+T*(15.0000486#+T*(+ (620,15+30*I),I,BF
1.65E-06-T*2E-08)) 300 RC=RD*INT((15-I)*4.5)
900 DEF FNL1(T)=.53024501#+T*(+1.0153E- 310 BC=BL*INT((I-1)*4.5)
04+T*(-1.278E-05)) 320 GC=GN*INT((7-ABS(8-I))*4.5)
910 DEF FNL2(T)=-.01606+T*(.000101+T*(- 330 PALETTE I,RC+BC+GC: NEXT I
1.272E-05)) 340 REM Plotting
920 F1=.004599: REM tan(f1) 350 FOR CT=-1 TO 1 STEP .005
930 F2=.004576: REM tan(f2) 360 ST=SQR(1-CT*CT)
940 M1=.2618: REM mu' (radians/hr) 370 PM=P(CT*100+100)/MX
950 D1=-.000091: REM d' (radians/hr) 380 FOR SF=-1 TO 1 STEP .005
960 RETURN 390 CF=SQR(1-SF*SF)
1000 REM For the partial and total 400 FI=PH*SGN(SF)
phases of the July 11, 1991, 410 IF CF<>0 THEN FI=ATN(SF/CF)
1010 REM solar eclipse, when you enter 420 S=PM*COS(M*FI)*ST*CF
a series of Universal times, 430 X%=300+200*SF*ST
1020 REM this program computes the 440 Y%=240-200*CT
position angle of the Moon's 450 PSET (X%,Y%),8-7*S
1030 REM center from the Sun, the 460 NEXT SF: NEXT CT: END
Sun's altitude, and the "magnitude"
1040 REM of the eclipse (that is, the
fraction of the solar disk
1050 REM diameter that is hidden).
When entering your longitude and SPACE.BAS ; 052;
1060 REM longitude, use positive
Space motion of a star
degrees for north latitude and
1070 REM *negative* degrees for west
longitude. The results of this 10 REM SPACE MOTION OF A STAR
1080 REM program agree exactly with 12 REM
those published by the U. S. Naval 14 P1=3.14159265
1090 REM Observatory in its eclipse 16 INPUT "R.A. (H,M)";H,M
circular. The program was written 18 A=(H+M/60)*15*P1/180
1100 REM by Roger W. Sinnott. 20 INPUT "ANNUAL PM (SEC)";DA
22 INPUT "DEC. (D,M)";D$,M
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 63 / 73

24 D=ABS(VAL(D$)): S=1 38 INPUT T


26 IF LEFT$(D$,1)="-" THEN S=-1 40 IF T<>1 AND T<>2 THEN 38
28 D=S*(D+M/60)*P1/180 42 IF T=2 THEN T=-1
30 INPUT "ANNUAL PM (ARCSEC)";DD 44 IF Q=1 THEN 50
32 DA=DA/13751: DD=DD/206265 46 INPUT "MEASURED SAGITTA";S
34 INPUT "R.V. (KM/SEC)";DR 48 IF Q=2 THEN 52
36 DR=DR/977820 50 INPUT "RADIUS OF CURVATURE";R
38 INPUT "DISTANCE (LY)";R 52 IF Q=1 AND R>0 AND C>0 THEN 62
40 R=R/3.2616: REM LY TO PARSECS 54 IF Q=2 AND S>0 AND C>0 THEN 72
42 INPUT "MAGNITUDE";M0 56 IF Q=3 AND R>0 AND S>0 THEN 86
44 X=R*COS(D)*COS(A) 58 PRINT "INPUT ERROR": GOTO 14
46 Y=R*COS(D)*SIN(A) 60 REM
48 Z=R*SIN(D) 62 REM COMPUTE THE SAGITTA
50 DX=(X/R)*DR-Z*COS(A)*DD-Y*DA 64 R=R-T*B/2: S=R-SQR(R*R-C*C/4)
52 DY=(Y/R)*DR-Z*SIN(A)*DD+X*DA 66 PRINT "SAGITTA FOR SPHERE ";S
54 DZ=(Z/R)*DR+R*COS(D)*DD 68 GOTO 92
56 REM 70 REM
58 PRINT: REM LOOP 72 REM COMPUTE THE R.O.C.
60 INPUT "YEARS FROM PRESENT";T 74 R=(C*C/4+S*S)/(2*S)+T*B/2
62 X1=X+T*DX:Y1=Y+T*DY:Z1=Z+T*DZ 76 PRINT "RADIUS OF CURVATURE ";R
64 R1=SQR(X1*X1+Y1*Y1+Z1*Z1) 78 IF T=-1 THEN 82
66 B=(R1/R)*(R1/R) 80 PRINT "MIRROR F.L. ";R/2
68 M1=M0+2.5*LOG(B)/LOG(10) 82 GOTO 92
70 S5=Z1/R1: C5=SQR(1-S5*S5) 84 REM
72 D1=ATN(S5/C5)*180/P1 86 REM COMPUTE THE SPAN
74 A1=ATN(Y1/X1)*180/(P1*15) 88 R=R-T*B/2: C=2*SQR(2*R*S+S*S)
76 IF X1<0 THEN A1=A1+12 90 PRINT "SPHEROMETER SPAN ";C
78 IF A1>24 THEN A1=A1-24 92 END
80 IF A1<0 THEN A1=A1+24 100 REM ==============================
82 PRINT "R.A. (HOURS) ";A1 110 REM FROM SKY & TELESCOPE'S ASTRO-
84 PRINT "DEC. (DEGREES)";D1 120 REM COMPUTING DEPARTMENT FOR
86 PRINT "DISTANCE ";R1*3.2616 130 REM SEPTEMBER, 1986, PAGE 278
88 PRINT "MAGNITUDE ";M1 140 REM =============================
90 PRINT
92 INPUT "AGAIN (Y OR N)";Q$
94 IF Q$<>"N" THEN 58
96 END
100 REM ************************ SPIRAL.BAS ; 038;
110 REM THIS PROGRAM USES A STAR'S Modeling spiral galaxies
120 REM CURRENT POSITION, PROPER
130 REM MOTION, DISTANCE, AND BRIGHT-
140 REM NESS TO COMPUTE ITS PATH 100 REM SPIRAL.BAS -- A PROGRAM
150 REM ACROSS THE SKY IN THE REMOTE 110 REM TO CREATE SPIRAL GAL-
160 REM PAST OR FUTURE. DESCRIBED IN 120 REM AXIES OF MANY TYPES
170 REM SKY & TELESCOPE MAGAZINE FOR 130 REM
180 MAY, 1989, PAGE 531. 140 REM PH = angle phi
190 REM ************************* 150 REM W = orientation angle
160 REM I = inclination angle
170 REM
180 PI=3.14159: DR=PI/180
190 REM DR = radians per degree
SPHE.BAS ; 073; 200 PRINT "Input values:"
Measure radius of curvature with a spherometer 210 INPUT " Alpha, beta";A1,B1
220 INPUT " Inclination (deg)";I
230 INPUT " Orientation (deg)";W
10 REM SPHEROMETER PROGRAM 240 XC=300: YC=150: MX=40: MY=28
12 REM 250 I=I*DR: W=W*DR
14 PRINT "WHICH DO YOU WANT --" 260 CLS
16 PRINT " (1) SAGITTA" 270 SCREEN 9
18 PRINT " (2) RADIUS OF CURV." 280 CIRCLE (XC,YC),10
20 PRINT " (3) SPHEROMETER SPAN" 290 F=0: GOSUB 320: REM 1st arm
22 INPUT Q 300 F=PI: GOSUB 320: REM 2nd arm
24 IF Q<1 OR Q>3 THEN 22 310 END
26 IF Q=3 THEN 30 320 REM DRAW AN ARM
28 INPUT "SPHEROMETER SPAN";C 330 PSET(XC,YC)
30 INPUT "BALL DIAMETER ";B 340 FOR J=1 TO 100
32 PRINT "TYPE OF SURFACE --" 350 R=J/20
34 PRINT " (1) CONCAVE" 360 IF R<1 THEN PH=(A1-B1)*R
36 PRINT " (2) CONVEX" 370 IF R<1 THEN 390
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 64 / 73

380 PH=A1-B1*R+A1*LOG(R)
390 X=MX*R*COS(PH+W+F)+XC STEPPR.BAS ; 087;
400 Y=MY*R*SIN(PH+W+F)*COS(I)+YC Controlling a stepper motor
410 REM PRINT X;Y
420 LINE -(X,Y)
430 NEXT J 10 REM STEPPER-MOTOR DEMO
440 RETURN 15 REM
450 REM ************************** 20 X=49152: REM PORT ADDRESS
460 REM APPEARED IN ASTRONOMICAL 25 DATA 9,1,3,2,6,4,12,8
COMPUTING 30 DIM A(8)
470 REM SKY & TELESCOPE - DECEMBER 1990 35 FOR I=0 TO 7: READ A(I): NEXT I
ISSUE 40 INPUT "START, STOP ";C,D
480 REM ************************** 45 FOR J=C TO D STEP SGN(D-C)
50 K=8*((J/8)-INT(J/8))
55 POKE X,A(K)
60 NEXT J
65 END
STAY.BAS ; 097; 70 REM ------------------------
Comet's time spent inside Earth's orbit 80 REM APPEARED IN ASTRONOMICAL
90 REM COMPUTING, SKY & TELE-
95 REM SCOPE, APRIL, 1985
10 REM LENGTH OF STAY 99 REM ------------------------
12 REM INSIDE 1 A.U.
14 REM
16 K=0.01720209895
18 P=3.1415926536
20 INPUT "PERIHELION DIST. ";Q STEREO.BAS ; 063;
22 INPUT "ECCENTRICITY ";E Plot stars in stereographic projection
24 PRINT
26 T=0
28 IF E>1 OR E<0 THEN 22 1 REM STEREOGRAPHIC SKY PROJECTION
30 IF Q>=1 THEN 78 2 P=3.14159265: R1=P/180
32 IF Q<0.0046524 THEN 82 3 INPUT "RADIUS ";K
34 IF E<1 THEN 54 4 INPUT "LAT, LONG ";B,L
36 REM 5 REM W LONG NEG, E LONG POSITIVE
38 REM PARABOLIC CASE 6 B=B*R1: L=L*R1
40 REM 7 INPUT "LST (H,M,S) ";A$,A2,A3
42 T2=1/Q-1 8 GOSUB 72: T=A*15*R1-L
44 T1=SQR(T2) 10 INPUT "OBJECT NAME ";B$
46 Q3=Q*Q*Q 12 INPUT "RA (H,M,S) ";A$,A2,A3
48 T=SQR(2*Q3)*(3*T1+T1*T2)/(3*K) 14 GOSUB 72: R=A*15*R1
50 GOTO 78 16 INPUT "DEC (D,M,S) ";A$,A2,A3
52 REM 17 GOSUB 72: D=A*R1
54 REM ELLIPTICAL CASE 18 PRINT: PRINT B$
56 REM 19 GOSUB 32: GOSUB 100
58 IF E=0 THEN 86 20 PRINT: PRINT "STARS"
60 IF Q*(1+E)/(1-E)<=1 THEN 86 21 N=8: REM NUMBER OF STARS
62 A=Q/(1-E) 22 FOR I=1 TO N
64 C=(A-1)/(A*E) 23 READ R,D
66 IF C<>0 THEN 70 24 R=R*15*R1: D=D*R1
68 E1=P/2: GOTO 76 25 GOSUB 32: GOSUB 100
70 S=SQR(1-C*C) 26 NEXT I
72 E1=ATN(S/C) 29 END
74 IF C<0 THEN E1=E1+P 30 REM ALTITUDE AND AZIMUTH
76 T=A*SQR(A)*(E1-E*SIN(E1))/K 32 T5=T-R+L: REM LOCAL HR ANGLE
78 PRINT "DAYS: ";2*T 34 S1=SIN(B)*SIN(D)
80 GOTO 88 36 S1=S1+COS(B)*COS(D)*COS(T5)
82 PRINT "COLLISION WITH SUN" 38 C1=1-S1*S1
84 GOTO 88 40 IF C1>0 THEN C1=SQR(C1)
86 PRINT "ALWAYS INSIDE 1 A.U." 42 IF C1<=0 THEN 46
88 END 44 H=ATN(S1/C1): GOTO 48
90 REM ------------------------ 46 H=SGN(S1)*P/2
92 REM APPEARED IN ASTRONOMICAL 48 C2=COS(B)*SIN(D)
94 REM COMPUTING, SKY & TELE- 50 C2=C2-SIN(B)*COS(D)*COS(T5)
96 REM SCOPE, JULY, 1984 52 S2=-COS(D)*SIN(T5)
98 REM ------------------------ 54 IF C2=0 THEN A=SGN(S2)*P/2
56 IF C2=0 THEN 62
58 A=ATN(S2/C2)
60 IF C2<0 THEN A=A+P
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 65 / 73

62 IF A<0 THEN A=A+2*P 310 AN=-AN


70 RETURN 320 GOSUB 580
72 REM SEXAGESIMAL TO DECIMAL 330 IF IR%<>0 THEN GOTO 390
76 S=1: A1=ABS(VAL(A$)) 340 REM Plot point on image plane
78 IF LEFT$(A$,1)="-" THEN S=-1 350 XS=-200!*L0/N0
80 A=S*(A1+A2/60+A3/3600) 360 YS=200!*MS/N0
82 RETURN 370 PSET (XS,YS)
100 REM STEREOGRAPHIC PROJECTION 380 PSET (-XS,YS)
105 REM H=ALTITUDE, A=AZIMUTH 390 NEXT I
110 Q=P/4-H/2 400 NEXT J
115 X=K*SIN(Q)/COS(Q)*SIN(2*P-A) 405 REM Plot the Sun
120 Y=K*SIN(Q)/COS(Q)*COS(2*P-A) 410 SX=0: SY=200*LM/LN
125 PRINT " X= ";INT(X*1000)/1000; 420 CIRCLE (SX,SY),2
126 PRINT " Y= ";INT(Y*1000)/1000 430 PAINT (SX,SY)
130 RETURN 440 LINE (-125,0)-(125,0)
200 REM STAR DATA FOR TAURUS 450 END
205 REM RA, DEC 460 REM Tilt subroutine
210 DATA 5.58, 21.0, 5.38, 28.5 470 IR%=0
215 DATA 4.55, 16.3, 4.43, 15.9 480 MU=N/NP
220 DATA 4.43, 19.0, 4.38, 18.0 490 LI=L0: NI=N0
225 DATA 4.33, 17.5, 4.29, 15.5 500 PH=SIN(AN): HP=COS(AN)
230 REM ************************ 510 L0=LI*HP+NI*PH
235 REM FROM SKY & TELESCOPE, 520 N0=NI*HP-LI*PH
240 REM OCTOBER, 1987, P. 408 530 LS=MU*L0 : MS=MU*M0
245 REM ************************ 540 IN=MU*MU*(N0*N0-1!)+1!
550 IF IN>=0 THEN NS=IN^.5
560 IF IN<0 THEN IR%=1
570 RETURN
580 REM Tiltback subroutine
SUNDOG.BAS ; 011; 590 LI=LS: NI=NS
Simulate the appearance of sundogs 600 PH=SIN(AN): HP=COS(AN)
610 L0=LI*HP+NI*PH
620 N0=NI*HP-LI*PH
10 REM SUNDOG.BAS by Rodney Kubesh 630 M0=MS
20 REM 640 RETURN
30 SCREEN 9 650 REM ========================
40 WINDOW (-125,80)-(125,-10) 660 REM FROM "ASTRONOMICAL
50 PI=3.14159 670 REM COMPUTING," SKY & TELE-
60 REM Choose solar elevation angle 680 REM SCOPE, JANUARY 1997
70 INPUT "Solar elevation in degrees";SA 690 REM ========================
80 LN=COS(SA*PI/180)
90 LM=COS((90-SA)*PI/180)
95 REM Choose rays from various locations
across solar disk
100 FOR J=1 TO 6 SUNSHINE.BAS ; 095;
110 EL=SA-(J-1)*.1 Hours of sunshine for a specific latitude
115 REM Choose angle between ray and
crystal face
120 FOR I=0 TO 90 STEP 2 10 REM SUNSHINE
130 N0=COS(EL*PI/180) 12 REM
140 M0=COS((90-EL)*PI/180) 14 P=3.14159265: R=P/180
150 IF ABS(1!-M0*M0-N0*N0)<.000001 THEN 16 INPUT "LATITUDE (DEGREES)";F
L0=0! 18 F=F*R
160 GOTO 180 20 S=SIN(F): C=COS(F)
170 L0=(1!-M0*M0-N0*N0)^.5 22 INPUT "START DAY IN 1986 ";J1
180 REM First crystal face, introduce 24 INPUT "END DAY IN 1986 ";J2
tilt 26 IF J2<J1 THEN 24
190 N=1! 28 Z=0
200 NP=1.31 30 FOR D=J1 TO J2
210 AN=I*PI/180! 32 M=357.1663+0.9856*D
220 GOSUB 460 34 M=M*R
230 REM Tilt it back 36 L=279.8603+0.985647*D
240 AN=-AN 38 L=L+1.91533*SIN(M)
250 GOSUB 580 40 L=L+0.02001*SIN(2*M)
260 REM Next crystal face, 60 deg. tilt 42 L=L+0.00029*SIN(3*M)
270 N=NP: NP=1! 44 L=L*R
280 AN=-(60-I)*PI/180! 46 G=0.3978062*SIN(L)
290 GOSUB 460 48 K=SQR(1-G*G)
300 REM tilt it back 50 U=(-0.01454-S*G)/(K*C)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 66 / 73

52 IF ABS(U)<1 THEN 58 290 F1=1: ' Fraction of sky that is clear


54 IF U>1 THEN 70 300 F2=1: ' Fraction of ground in
56 Z=Z+1440: GOTO 70 sunlight
58 F=0.9043+0.03023*COS(M) 310 SH=1: ' Is Sun being shaded? (no=1,
60 F=F/(1-0.15825*SIN(L)*SIN(L)) yes=0)
62 A=ATN(SQR(1-U*U)/U) 320 N=1: ' Normalization for skin type
64 A=A/R 330 RE=6378: ' Earth radius (km)
66 IF U<0 THEN A=A+180 340 OL=0: ' Ozone loss (%)
68 Z=Z+2880*A/(360.985647-F) 350 HO=23: ' Height of ozone layer (km)
70 NEXT D 360 HG=8.2: ' Gas scale height (km)
72 PRINT 370 HA=1.5: ' Aerosol scale height (km)
74 PRINT "SUNSHINE = " 380 DS=1: ' Distance from Sun (a.u.)
76 PRINT INT(Z+0.5);" MINUTES" 390 '
78 PRINT INT((Z+30)/60);" HOURS" 400 ' Thickness of ozone layer
80 END 410 '
85 REM ------------------------ 420 RA=30*(M-3.7)/57.296
88 REM APPEARED IN ASTRONOMICAL 430 DO=(1-OL/100)*(3+.4*(LA*COS(RA)-
89 REM COMPUTING, SKY & TELE- COS(3*LA)))
90 REM SCOPE, SEPTERMBER, 1984 440 '
92 REM ------------------------ 450 ' Airmass for each component
460 '
470 XO=(1-(SIN(ZS)/(1+((HO-
H)/RE)))^2)^-.5
480 XG=1/(COS(ZS)+.01*SQR(HG)*EXP(-
SUNTAN.BAS ; 026; 30*COS(ZS)/SQR(HG)))
Effects of ozone, haze, on suntanning time 490 XA=1/(COS(ZS)+.01*SQR(HA)*EXP(-
30*COS(ZS)/SQR(HA)))
500 '
10 ' Suntan Program 510 ' Do for each wavelength
20 ' 520 '
30 GOSUB 920: ' Initialize data arrays 530 PRINT "Wavelength Ozone Air
40 ' Action Dose"
50 INPUT "Latitude in degrees";L: 540 PRINT "(angstroms) trans. trans.
LA=L/57.296 spectr. "
60 INPUT "Month (1-12)";M 550 ED=0
70 INPUT "Hours from local noon";T: 560 FOR J=1 TO 20
T=ABS(T) 570 W=.275+J*.005: ' Wavelength
80 DS=.408*SIN(.523*(M-3.7)): ' Decl. of (microns)
Sun (radians) 580 '
90 HA=.262*T: ' Hour angle of Sun 590 ' Brightness of sunlight, diffuse
(radians) sky light,
100 CZ=SIN(LA)*SIN(DS) 600 ' and ground light
+COS(LA)*COS(DS)*COS(HA) 610 KO=OZ(J)*(DO/3)
110 IF CZ<=0 THEN 70 620 KG=.0107*EXP(-H/HG)*(W^-4)
120 ZS=ATN(SQR(1-CZ*CZ)/CZ): ' Sun's 630 KA=BE*(W^-1.3)
zenith dist. (rad) 640 OT=10^(-.4*(KO*XO))
130 ' 650 TA=10^(-.4*(KG*XG+KA*XA))
140 ' OPTION -- These two lines could 660 D=.5*(COS(ZS)^.33)
replace 50-120: 670 IS=FS(J)*OT*TA*TW*SH*COS(SS)*(DS^-2)
150 ' INPUT "Altitude of Sun (deg)";AL 680 ID=FS(J)*OT*(1-TA)*D
160 ' ZS=(90-AL)/57.296 690 ID=FS(J)*OT*(1-TA)*D*TA*SA+ID
170 ' 700 ID=FS(J)*OT*((1-TA)^2)*SA*(D^2)+ID
180 INPUT "Height above sea level 710 ID=ID*TW*F1*(COS(ZS/2)^2)*(DS^-2)
(feet)";HH: H=HH/3280 720 IG=FS(J)*OT*SA*(TA+D*(1-TA))
190 INPUT "Aerosol extinction (V 730 IG=IG*TW*F2*(SIN(ZS/2)^2)*(DS^-2)
mag/airmass)";KK 740 I=IS+ID+IG: ' Total flux on skin
200 BE=KK/2.36 (erg/cm^2/sec/A)
210 INPUT "Surface albedo (%)";S1: 750 '
SA=S1/100 760 ' Find effective dose by numerical
220 ' integration
230 ' Other adjustable parameters 770 ' The "minimum erythema dose" at
240 ' 2900A
250 ET=3600: ' Exposure time (seconds) 780 ' is 2.3E6 erg/cm^2 (Parrish)
260 ZP=ZS: ' Angle (rad), zenith to 790 '
surface normal 800 EF=I*ET*(AS(J)*N)*50/2.3E6
270 SS=0: ' Angle (rad), Sun to surface 810 ED=ED+EF
normal 820 PRINT USING
280 TW=1: ' UV frac. transmitted by F1$;W*10000;OT;TA;AS(J);EF
window, lotion... 830 NEXT J
840 '
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 67 / 73

850 ' Report result 80 ' from 1900.0


860 ' 90 GOSUB 410: T=T+Z0
870 PRINT 100 '
880 PRINT USING "Total effective dose: 110 ' Get Sun's Position
##.###";ED 120 GOSUB 910: A(1)=A5: D(1)=D5
890 PRINT USING " (exposure time ##.## 130 T=T+1
hr)";ET/3600 140 GOSUB 910: A(2)=A5: D(2)=D5
895 PRINT USING "Burning starts after 150 IF A(2)<A(1) THEN A(2)=A(2)+P2
##.## hr";ET/(3600*ED) 160 Z1=DR*90.833: ' Zenith dist.
899 ' 170 S=SIN(B5*DR): C=COS(B5*DR)
900 END 180 Z=COS(Z1): M8=0: W8=0: PRINT
910 ' 190 A0=A(1): D0=D(1)
920 ' Set up data arrays 200 DA=A(2)-A(1): DD=D(2)-D(1)
930 ' 210 FOR C0=0 TO 23
940 F1$= " ##### ##.#### ##.#### 220 P=(C0+1)/24
##.## ##.###" 230 A2=A(1)+P*DA: D2=D(1)+P*DD
950 DIM OZ(20),FS(20),AS(20) 240 GOSUB 490
960 FOR J=1 TO 20: READ OZ(J): NEXT J 250 A0=A2: D0=D2: V0=V2
970 FOR J=1 TO 20: READ FS(J): NEXT J 260 NEXT
980 FOR J=1 TO 20: READ AS(J): NEXT J 270 GOSUB 820: ' Special msg?
990 RETURN 280 END
1000 ' 290 '
1010 ' OZ array (ozone effect) 300 ' Constants
1020 DATA 34, 25, 18, 9, 3.2, 1.8, .9, . 310 DIM A(2),D(2)
46, .24, .17 320 P1=3.14159265: P2=2*P1
1030 DATA .06, .05, .02, .01, .002, .001, 330 DR=P1/180: K1=15*DR*1.0027379
0, 0, 0, 0 340 S$="Sunset at "
1040 ' 350 R$="Sunrise at "
1050 ' FS array (solar flux at 1 A.U. in 360 M1$="No sunrise this date"
erg/cm^2/sec/A) 370 M2$="No sunset this date"
1060 DATA 24, 31, 38, 45, 52, 58, 64, 70, 380 M3$="Sun down all day"
75, 79 390 M4$="Sun up all day"
1070 DATA 83, 87, 91, 93, 95, 97, 99, 400 RETURN
104, 107, 104 410 ' LST at 0h zone time
1080 ' 420 T0=T/36525
1090 ' AS array (action spectrum, 430 S=24110.5+8640184.813*T0
McKinley & Diffey) 440 S=S+86636.6*Z0+86400*L5
1100 DATA 1, 1, 1, 1, .65, .22, .074, . 450 S=S/86400: S=S-INT(S)
025, .0086, .003 460 T0=S*360*DR
1110 DATA .0014, .0012, .00097, .00081, . 470 RETURN
00068, .00057 480 '
1120 DATA .00048, .0004, .00034, .00029 490 ' Test an hour for an event
1200 ' 500 L0=T0+C0*K1: L2=L0+K1
1210 ' Bradley E. Schaefer's program 510 H0=L0-A0: H2=L2-A2
takes into account many factors, 520 H1=(H2+H0)/2: ' Hour angle,
1220 ' including the ozone content of the 530 D1=(D2+D0)/2: ' declination,
atmosphere, and calculates 540 ' at half hour
1230 ' the risk of getting a sunburn at 550 IF C0>0 THEN 570
any month of the year, at any 560 V0=S*SIN(D0)+C*COS(D0)*COS(H0)-Z
1240 ' hour of the day, and at any 570 V2=S*SIN(D2)+C*COS(D2)*COS(H2)-Z
latitude on Earth. He explained how 580 IF SGN(V0)=SGN(V2) THEN 800
1250 ' to interpret the results in the 590 V1=S*SIN(D1)+C*COS(D1)*COS(H1)-Z
July 1993 issue of Sky & Telescope, 600 A=2*V2-4*V1+2*V0: B=4*V1-3*V0-V2
1260 ' page 83. 610 D=B*B-4*A*V0: IF D<0 THEN 800
620 D=SQR(D)
630 IF V0<0 AND V2>0 THEN PRINT R$;
640 IF V0<0 AND V2>0 THEN M8=1
650 IF V0>0 AND V2<0 THEN PRINT S$;
SUNUP.BAS ; 023; 660 IF V0>0 AND V2<0 THEN W8=1
Times of sunrise/set at any place on Earth 670 E=(-B+D)/(2*A)
680 IF E>1 OR E<0 THEN E=(-B-D)/(2*A)
690 T3=C0+E+1/120: ' Round off
10 ' Sunrise-Sunset 700 H3=INT(T3): M3=INT((T3-H3)*60)
20 GOSUB 300 710 PRINT USING "##:##";H3;M3;
30 INPUT "Lat, Long (deg)";B5,L5 720 H7=H0+E*(H2-H0)
40 INPUT "Time zone (hrs)";H 730 N7=-COS(D1)*SIN(H7)
50 L5=L5/360: Z0=H/24 740 D7=C*SIN(D1)-S*COS(D1)*COS(H7)
60 GOSUB 1170: T=(J-2451545)+F 750 AZ=ATN(N7/D7)/DR
70 TT=T/36525+1: ' TT = centuries 760 IF D7<0 THEN AZ=AZ+180
770 IF AZ<0 THEN AZ=AZ+360
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 68 / 73

780 IF AZ>360 THEN AZ=AZ-360 1390 ' discussed in Sky & Telescope for
790 PRINT USING ", azimuth ###.#";AZ August 1994, page 84.
800 RETURN
810 '
820 ' Special-message routine
830 IF M8=0 AND W8=0 THEN 870
840 IF M8=0 THEN PRINT M1$ SUPERNUM.BAS ; 006;
850 IF W8=0 THEN PRINT M2$ Emergence angles of supernumerary rainbows
860 GOTO 890
870 IF V2<0 THEN PRINT M3$
880 IF V2>0 THEN PRINT M4$ 10 REM SUPERNUM.BAS
890 RETURN 20 REM by Rodney Kubesh
900 ' 30 OPEN "BOW.DAT" FOR OUTPUT AS #1
910 ' Fundamental arguments 40 CLS
920 ' (Van Flandern & 50 PI=3.14159
930 ' Pulkkinen, 1979) 60 A0=1.5707288# : A1=-.2121144
940 L=.779072+.00273790931*T 70 A2=.074261 : A3=-.0187293
950 G=.993126+.0027377785*T 80 N=1.3318 : REM Refractive index
960 L=L-INT(L): G=G-INT(G) 90 RA=250 : REM Drop radius in microns
970 L=L*P2: G=G*P2 100 L=.6563 : REM Wavelength in microns
980 V=.39785*SIN(L) 110 FOR J=450 TO 550
990 V=V-.01000*SIN(L-G) 120 REM Choose angle of incidence for ray
1000 V=V+.00333*SIN(L+G) A
1010 V=V-.00021*TT*SIN(L) 130 I=J*.1*PI/180
1020 U=1-.03349*COS(G) 140 AN=SIN(I)/N
1030 U=U-.00014*COS(2*L) 150 REM Snell's Law gives angle of
1040 U=U+.00008*COS(L) refraction
1050 W=-.00010-.04129*SIN(2*L) 160 R=PI/2-(1-
1060 W=W+.03211*SIN(G) AN)^.5*(A0+A1*AN+A2*AN^2+A3*AN^3)
1070 W=W+.00104*SIN(2*L-G) 170 TH=4*R-2*I
1080 W=W-.00035*SIN(2*L+G) 180 LOCATE 12,15
1090 W=W-.00008*TT*SIN(G) 190 PRINT "Computing intensity for
1100 ' emergence angle = ";
1110 ' Compute Sun's RA and Dec 200 PRINT USING "###.##"; TH*180/PI
1120 S=W/SQR(U-V*V) 210 REM D and S are path lengths outside
1130 A5=L+ATN(S/SQR(1-S*S)) the drop for ray A
1140 S=V/SQR(U):D5=ATN(S/SQR(1-S*S)) 220 D=1-COS(I)
1150 R5=1.00021*SQR(U) 230 X0=-COS(4*R-I) : Y0=-SIN(4*R-I)
1160 RETURN 240 X1=X0 : X2=X0-1 : X3=X0-2
1165 ' 250 Y1=Y0-1/TAN(TH)
1170 ' Calendar --> JD 260 Y2=Y0
1180 INPUT "Year, Month, Day";Y,M,D 270 Y3=Y0-2*TAN(TH)
1190 G=1: IF Y<1583 THEN G=0 280 S1=(Y2-Y1)/(X2-X1)
1200 D1=INT(D): F=D-D1-.5 290 S2=(Y3-Y0)/(X3-X0)
1210 J=-INT(7*(INT((M+9)/12)+Y)/4) 300 I2=I
1220 IF G=0 THEN 1260 310 X=(Y0-Y1+S1*X1-S2*X0)/(S1-S2)
1230 S=SGN(M-9): A=ABS(M-9) 320 Y=(X-X1)*S1+Y1
1240 J3=INT(Y+S*INT(A/7)) 330 S=((Y-Y0)^2+(X-X0)^2)^.5
1250 J3=-INT((INT(J3/100)+1)*3/4) 340 REM Find total path length
1260 J=J+INT(275*M/9)+D1+G*J3 350 P1=RA*(D+S+4*N*COS(R))
1270 J=J+1721027+2*G+367*Y 360 IN=59.5
1280 IF F>=0 THEN 1300 370 REM Choose possible angles of
1290 F=F+1: J=J-1 incidence for ray B
1300 RETURN 380 IN=IN+.05
1310 ' 390 I=IN*PI/180
1320 ' This program by Roger W. Sinnott 400 AN=SIN(I)/N
calculates the times of sunrise 410 R=PI/2-(1-
1330 ' and sunset on any date, accurate AN)^.5*(A0+A1*AN+A2*AN^2+A3*AN^3)
to the minute within several 420 REM Find companion rays emerging in
1340 ' centuries of the present. It same direction
correctly describes what happens in 430 TL=ABS(TH-4*R+2*I)
the 440 IF TL>.001 GOTO 380
1350 ' arctic and antarctic regions, 450 TH=4*R-2*I
where the Sun may not rise or set on 460 REM Path lengths D and S for ray B
1360 ' a given date. Enter north 470 D=1-COS(I)
latitudes positive, west longitudes 480 X0=-COS(4*R-I) : Y0=-SIN(4*R-I)
1370 ' negative. For the time zone, 490 X3=X0-2
enter the number of hours west of 500 Y3=Y0-2*TAN(TH)
1380 ' Greenwich (e.g., 5 for EST, 4 for 510 S1=(Y2-Y1)/(X2-X1)
EDT). The calculation is
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 69 / 73

520 S2=(Y3-Y0)/(X3-X0) 86 GOTO 12


530 X=(Y0-Y1+S1*X1-S2*X0)/(S1-S2) 88 END
540 Y=(X-X1)*S1+Y1 90 REM ==========================
550 S=((Y-Y0)^2+(X-X0)^2)^.5 100 REM FROM SKY & TELESCOPE'S
560 REM Total path length for ray B 110 REM ASTRONOMICAL COMPUTING
570 P2=RA*(D+S+4*N*COS(R)) 120 REM DEPARTMENT FOR OCTOBER,
580 REM Find difference in path length 130 REM 1986, PAGE 392
590 PD=P1-P2 140 REM =========================
600 PH=2*PI*PD/L-PI/2
610 REM Find amplitude
620 AM=COS(PH/2)
630 REM Print emergence angle and
intensity TAKI.BAS ; 055;
640 PRINT#1, USING "###.###"; TH*180/PI; How to aim an alt-az (Dobsonian) telescope
AM^2
650 NEXT J
660 CLOSE#1 100 REM PROGRAM FOR POINTING A TELESCOPE
670 END 105 REM BY T. TAKI
900 REM --------------------------- 110 REM
910 REM APPEARED IN ASTRONOMICAL 111 REM
920 REM COMPUTING, SKY & TELESCOPE, 115 DIM S$(17),B(17),D(17),Q(3,3)
930 REM SEPTEMBER 1998, PAGE 70 120 DIM V(3,3),R(3,3),X(3,3),Y(3,3)
940 REM --------------------------- 125 REM
130 REM STAR DATA
135 FOR J=1 TO 17: READ S$(J),B(J),D(J):
NEXT J
140 REM
SURF.BAS ; 072; 145 REM CONSTANTS
Surface brightness of an extended object 150 K=1.002738: G=57.2958
155 Z1=0: Z2=0: Z3=0: REM MOUNT ERROR,
IF ANY <<<<<<<<<
10 REM SURFACE BRIGHTNESS 160 REM
12 PRINT 165 FOR I=1 TO 2
14 INPUT "TOTAL MAGNITUDE";M$ 166 PRINT
16 IF M$="X" THEN 88 170 INPUT "NAME OF BASIC STAR ";S$(0)
18 M=VAL(M$): PRINT 175 INPUT "TIME (MIN) ";T
20 PRINT "TYPE OF AREA:" 180 INPUT "TELESCOPE DIRECTION ";F
22 PRINT " (C) CIRCULAR" 185 INPUT "TELESCOPE ELEVATION ";H
24 PRINT " (E) ELLIPTICAL" 195 N=0
26 PRINT " (R) RECTANGULAR" 200 N=N+1: IF S$(0)=S$(N) THEN 215
28 PRINT " (I) IRREGULAR" 205 IF N=17 THEN 170
30 INPUT "CHOICE";C$: PRINT 210 GOTO 200
32 IF C$="C" THEN 42 215 D(0)=D(N)/G: B(0)=(B(N)-K*T*0.25)/G
34 IF C$="E" THEN 48 220 X(1,I)=COS(D(0))*COS(B(0))
36 IF C$="R" THEN 58 225 X(2,I)=COS(D(0))*SIN(B(0))
38 IF C$="I" THEN 68 230 X(3,I)=SIN(D(0))
40 GOTO 30 235 F=F/G: H=(H+Z3)/G: GOSUB 750
42 REM CIRCULAR 240 Y(1,I)=Y(1,0): Y(2,I)=Y(2,0):
44 INPUT "DIAM IN ARC MIN";D Y(3,I)=Y(3,0)
46 A=3.14159265*D*D/4: GOTO 72 245 NEXT I
48 REM ELLIPTICAL 250 REM
50 PRINT "ENTER ARC MIN --" 255 X(1,3)=X(2,1)*X(3,2)-X(3,1)*X(2,2)
52 INPUT " MAJOR AXIS";A1 260 X(2,3)=X(3,1)*X(1,2)-X(1,1)*X(3,2)
54 INPUT " MINOR AXIS";A2 265 X(3,3)=X(1,1)*X(2,2)-X(2,1)*X(1,2)
56 A=3.14159265*A1*A2/4: GOTO 72 270 A=SQR(X(1,3)^2+X(2,3)^2+X(3,3)^2)
58 REM RECTANGULAR 275 FOR I=1 TO 3: X(I,3)=X(I,3)/A: NEXT
60 PRINT "ENTER ARC MIN --" I
62 INPUT " LONG SIDE";A1 280 REM
64 INPUT " SHORT SIDE";A2 285 Y(1,3)=Y(2,1)*Y(3,2)-Y(3,1)*Y(2,2)
66 A=A1*A2: GOTO 72 290 Y(2,3)=Y(3,1)*Y(1,2)-Y(1,1)*Y(3,2)
68 REM IRREGULAR 295 Y(3,3)=Y(1,1)*Y(2,2)-Y(2,1)*Y(1,2)
70 INPUT "AREA IN SQ ARC MIN";A 300 A=SQR(Y(1,3)^2+Y(2,3)^2+Y(3,3)^2)
72 PRINT: IF A>=1/3600 THEN 76 305 FOR I=1 TO 3: Y(I,3)=Y(I,3)/A: NEXT
74 PRINT "STARLIKE": GOTO 86 I
76 S1=M+LOG(A)/LOG(100^(1/5)) 310 REM
78 S2=S1+8.890756 311 REM
80 PRINT "SURFACE MAGNITUDE --" 315 REM TRANSFORM MATRIX
82 PRINT " PER SQ ARC MIN: ";S1 320 FOR I=1 TO 3: FOR J=1 TO 3
84 PRINT " PER SQ ARC SEC: ";S2 325 V(I,J)=X(I,J)
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 70 / 73

330 NEXT J: NEXT I 595 X(1,1)=Y(1,0): X(2,1)=Y(2,0):


335 GOSUB 650: E=W X(3,1)=Y(3,0)
340 REM 600 Y(1,1)=0: Y(2,1)=0: Y(3,1)=0
345 FOR M=1 TO 3: FOR I=1 TO 3: FOR J=1 605 FOR I=1 TO 3: FOR J=1 TO 3
TO 3 610 Y(I,1)=Y(I,1)+Q(I,J)*X(J,1)
350 V(I,J)=X(I,J) 615 NEXT J: NEXT I
355 NEXT J: NEXT I 620 GOSUB 685: F=F+K*T*0.25: F=F-
360 FOR N=1 TO 3 INT(F/360)*360
365 V(1,M)=0: V(2,M)=0: V(3,M)=0: 625 PRINT USING "RIGHT ASCENSION
V(N,M)=1 (DEG):####.##";F
370 GOSUB 650: Q(M,N)=W/E 630 PRINT USING "DECLINATION (DEG):
375 NEXT N ####.##";H
380 NEXT M 635 GOTO 465
385 REM 640 END
390 FOR I=1 TO 3: FOR J=1 TO 3: 645 REM
R(I,J)=0: NEXT J: NEXT I 650 REM DETERMINANT SUBROUTINE
395 FOR I=1 TO 3: FOR J=1 TO 3: FOR L=1 655
TO 3 W=V(1,1)*V(2,2)*V(3,3)+V(1,2)*V(2,3)*V
400 R(I,J)=R(I,J)+Y(I,L)*Q(L,J) (3,1)
405 NEXT L: NEXT J: NEXT I 660 W=W+V(1,3)*V(3,2)*V(2,1)
410 REM 665 W=W-V(1,3)*V(2,2)*V(3,1)-
415 FOR M=1 TO 3 V(1,1)*V(3,2)*V(2,3)
420 FOR I=1 TO 3: FOR J=1 TO 3 670 W=W-V(1,2)*V(2,1)*V(3,3)
425 V(I,J)=R(I,J) 675 RETURN
430 NEXT J: NEXT I 680 REM
435 GOSUB 650: E=W 685 REM ANGLE SUBROUTINE
440 FOR N=1 TO 3 690 C=SQR(Y(1,1)*Y(1,1)+Y(2,1)*Y(2,1))
445 V(1,M)=0: V(2,M)=0: V(3,M)=0: 695 IF C=0 AND Y(3,1)>0 THEN H=90
V(N,M)=1 700 IF C=0 AND Y(3,1)<0 THEN H=-90
450 GOSUB 650: Q(M,N)=W/E 705 IF C<>0 THEN H=ATN(Y(3,1)/C)*G
455 NEXT N 710 REM
460 NEXT M 715 IF C=0 THEN F=1000
461 REM 720 IF C<>0 AND Y(1,1)=0 AND Y(2,1)>0
462 REM THEN F=90
465 REM TRANSFORMATION 725 IF C<>0 AND Y(1,1)=0 AND Y(2,1)<0
470 PRINT " ------" THEN F=270
475 INPUT "OPTION 1 OR 2";E 730 IF Y(1,1)>0 THEN
480 IF E=2 THEN 570 F=ATN(Y(2,1)/Y(1,1))*G
482 IF E<>1 THEN 475 735 IF Y(1,1)<0 THEN
483 REM F=ATN(Y(2,1)/Y(1,1))*G+180
485 REM CONVERT EQUATORIAL --> 740 F=F-INT(F/360)*360
TELESCOPE 745 RETURN
490 INPUT " RIGHT ASCENSION (DEG) 746 REM
";B(0) 750 REM SUBROUTINE
495 INPUT " DECLINATION (DEG) 755 Y(1,0)=COS(F)*COS(H)-SIN(F)*(Z2/G)
";D(0) 760 Y(1,0)=Y(1,0)+SIN(F)*SIN(H)*(Z1/G)
500 INPUT " TIME (MIN) ";T 765 Y(2,0)=SIN(F)*COS(H)+COS(F)*(Z2/G)
505 D(0)=D(0)/G: B(0)=(B(0)-K*T*0.25)/G 770 Y(2,0)=Y(2,0)-COS(F)*SIN(H)*(Z1/G)
510 X(1,1)=COS(D(0))*COS(B(0)) 775 Y(3,0)=SIN(H)
515 X(2,1)=COS(D(0))*SIN(B(0)) 780 RETURN
520 X(3,1)=SIN(D(0)) 781 REM
525 Y(1,1)=0: Y(2,1)=0: Y(3,1)=0 785 REM SUBROUTINE
530 FOR I=1 TO 3: FOR J=1 TO 3 790 Y(1,1)=COS(F)*COS(H)+SIN(F)*(Z2/G)
535 Y(I,1)=Y(I,1)+R(I,J)*X(J,1) 795 Y(1,1)=Y(1,1)-SIN(F)*SIN(H)*(Z1/G)
540 NEXT J: NEXT I 800 Y(2,1)=SIN(F)*COS(H)-COS(F)*(Z2/G)
545 GOSUB 685: F=F/G: H=H/G: GOSUB 785 805 Y(2,1)=Y(2,1)+COS(F)*SIN(H)*(Z1/G)
550 GOSUB 685: H=H-Z3 810 Y(3,1)=SIN(H)
555 PRINT USING "TELESCOPE DIRECTION 815 RETURN
(DEG):####.##";F 816 REM
560 PRINT USING "TELESCOPE ELEVATION 817 REM STAR LIST
(DEG):####.##";H 820 DATA "A UMI", 37.960, 89.264
565 GOTO 465 825 DATA "A TAU", 68.980, 16.509
566 REM 830 DATA "B ORI", 78.634, -8.202
570 REM CONVERT TELESCOPE --> EQUATORIAL 835 DATA "A AUR", 79.172, 45.998
575 INPUT " TELESCOPE DIRECTION (DEG) 840 DATA "A ORI", 88.793, 7.407
";F 845 DATA "A CMA", 101.287, -16.716
580 INPUT " TELESCOPE ELEVATION (DEG) 850 DATA "A GEM", 113.650, 31.888
";H 855 DATA "A CMI", 114.825, 5.225
585 INPUT " TIME (MIN) ";T 860 DATA "B GEM", 116.329, 28.026
590 F=F/G: H=(H+Z3)/G: GOSUB 750 865 DATA "A LEO", 152.093, 11.967
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 71 / 73

870 DATA "A VIR", 201.298, -11.161 30 FOR I=1 TO 5 : READ WA(I) : NEXT I
875 DATA "A BOO", 213.915, 19.183 40 DATA 0.365, 0.44, 0.55, 0.7, 0.9
880 DATA "A SCO", 247.352, -26.432 50 FOR I=1 TO 5 : READ MO(I) : NEXT I
885 DATA "A LYR", 279.234, 38.784 60 DATA -10.93, -10.45, -11.05, -11.90,
890 DATA "A AQL", 297.695, 8.868 -12.70
895 DATA "A CYG", 310.358, 45.280 70 RD=3.14159/180.0
900 DATA "A PSA", 344.413, -29.622 80 REM Input for Moon and Sun
1000 REM ************************** 90 AM=180.0 : REM Moon phase (deg.; 0=FM,
1010 REM FROM SKY & TELESCOPE, FEBRUARY, 90=FQ/LQ, 180=NM)
1989, 100 ZM=180.0 : REM Zenith distance of
1020 REM PAGES 194-196. LINES 760 AND 795 Moon (deg.)
1030 REM CONTAINED ERRORS AS PRINTED IN 110 RM=180.0 : REM Angular distance to
THE Moon (deg.)
1040 REM MAGAZINE; THEY ARE CORRECTED 120 ZS=180.0 : REM Zenith distance of Sun
HERE. (deg.)
1050 REM ************************** 130 RS=180.0 : REM Angular distance to
Sun (deg.)
140 REM Input for the Site, Date,
Observer
150 RH=40.0 : REM relative humidity (%)
TRACK.BAS ; 078; 160 TE=15.0 : REM Air temperature (deg.
Astrophoto tracking tolerances C)
170 LA=30.0 : REM Latitude (deg.)
180 AL=1000.0 : REM Altitude above sea
10 REM TRACKING TOLERANCES level (m)
12 REM 190 M=2.0 : REM Month (1=Jan, 12=Dec)
14 R=3.14159265/180: REM RAD/DEG 200 Y=1998.0 : REM Year
16 K=206265: REM ARC SEC/RAD 210 SN=1.0 : REM Snellen Ratio
18 INPUT "WITH DRIVE (Y OR N)";Q$ (20/20=1.0, good 20/10=2.0)
20 IF Q$="Y" THEN 26 220 INPUT "Zenith distance (deg.): ";Z
22 INPUT "DECLINATION (DEG)";D 230 GOSUB 1000 : REM Extinction
24 M=360*COS(D*R): GOTO 30 240 GOSUB 2000 : REM Sky
26 INPUT "MOTION (DEG/DAY)";M 250 REM Visual limiting magnitude
28 IF M=0 THEN 26 260 BL=B(3)/1.11E-15 : REM in
30 INPUT "E.F.L. (MM)";F nanolamberts
32 INPUT "FILM GRAIN (F OR C)";A$ 270 IF BL>1500.0 THEN GOTO 300
34 IF A$<>"F" AND A$<>"C" THEN 32 280 C1=10.0^-9.8: C2=10.0^-1.9
36 INPUT "ENLARGEMENT FACTOR";E 290 GOTO 310
38 INPUT "PLANNED EXP (MIN)";T 300 C1=10.0^-8.350001 : C2=10.0^-5.9
40 S=1/(R*F*E): REM DEG/MM 310 TH=C1*((1.0+SQR(C2*BL))^2.0) : REM in
42 R1=M/(S*24*60): REM MM/MIN foot-candles
44 IF A$="F" THEN G=K/(F*100) 320 MN=-16.57-2.5*(LOG(TH)/LOG(10))-
46 IF A$="C" THEN G=K/(F*20) DM(3)+5.0*(LOG(SN)/LOG(10))
48 PRINT 330 PRINT : REM Write results and stop
50 PRINT "MOTION IN ";T;" MIN EXP:" program
52 PRINT " ";INT(T*R1*S*3600+0.5); 340 PRINT USING "Visual Sky Brightness
54 PRINT " ARC SEC, OR" (nL): ######"; BL
56 PRINT " ";T*R1;" MM ON PRINT" 350 PRINT USING "Visual Limiting
58 PRINT "LIMITS BASED ON GRAIN:" Magnitude: ###.##"; MN
60 PRINT " MAX EXPOSURE "; 360 END
62 PRINT G/(S*3600*R1);" MIN" 1000 REM Extinction Subroutine
64 PRINT " RESOLUTION "; 1010 FOR I=1 TO 5: READ OZ(I): NEXT I
66 PRINT INT(G+0.5);" ARC SEC" 1020 DATA 0.000, 0.000, 0.031, 0.008,
68 END 0.000
70 REM ------------------------ 1030 FOR I=1 TO 5: READ WT(I): NEXT I
80 REM APPEARED IN ASTRONOMICAL 1040 DATA 0.074, 0.045, 0.031, 0.020,
90 REM COMPUTING, SKY & TELE- 0.015
95 REM SCOPE, FEBRUARY, 1986 1050 LT=LA*RD
99 REM ------------------------ 1060 RA=(M-3)*30.0*RD
1070 SL=LA/ABS(LA)
1080 REM Airmass for each component
1090 ZZ=Z*RD
1100 XG=1/(COS(ZZ)+.0286*EXP(-
VISLIMIT.BAS ; 007; 10.5*COS(ZZ)))
1110 XA=1/(COS(ZZ)+.0123*EXP(-
Visual limiting magnitude from any site
24.5*COS(ZZ)))
1120 XO=1/SQR(1.0-(SIN(ZZ)/
10 REM VISLIMIT.BAS Visual Limits (1.0+(20.0/6378.0)))^2)
20 REM by Bradley E. Schaefer 1130 REM UBVRI extinction for each
component
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 72 / 73

1140 FOR I=1 TO 5 2290 BT=BT*(100/RS)*(1.0-


1150 KR=.1066*EXP(- 10.0^(-.4*K(I)*X))
1*AL/8200)*((WA(I)/.55)^-4) 2300 REM Daylight brightness
1160 KA=.1*((WA(I)/.55)^-1.3)*EXP(- 2310 C4=10.0^(-.4*K(I)*XS)
1*AL/1500) 2320 FS=6.2E+07*(RS^-2)+(10^(6.15-RS/40))
1170 2330 FS=FS+(10^5.36)*(1.06+
KA=KA*((1-.32/LOG(RH/100.0))^1.33)*(1+ ((COS(RS*RD))^2))
0.33*SL*SIN(RA)) 2340 BD=10^(-.4*(MS(I)-MO(I)+43.27))
1180 KO=OZ(I)*(3.0+.4*(LT*COS(RA)- 2350 BD=BD*(1-10^(-.4*K(I)*X))
COS(3*LT)))/3.0 2360 BD=BD*(FS*C4+440000.0*(1-C4))
1190 2370 REM Total sky brightness
KW=WT(I)*.94*(RH/100.0)*EXP(TE/15)*EXP 2380 IF BD>BT THEN GOTO 2410
(-1*AL/8200) 2390 B(I)=BN+BD
1200 K(I)=KR+KA+KO+KW 2400 GOTO 2420
1210 DM(I)=KR*XG+KA*XA+KO*XO+KW*XG 2410 B(I)=BN+BT
1220 NEXT I 2420 IF ZM<90.0 THEN B(I)=B(I)+BM
1230 REM Write results and return 2430 NEXT I
1240 PRINT : PRINT "Airmass (gas, 2440 PRINT "Sky brightness (UBVRI):";
aerosol, ozone): "; 2450 PRINT USING " ##.#^^^^"; B(1), B(2),
1250 PRINT USING "####.## "; XG, XA, XO B(3), B(4), B(5)
1260 PRINT "Extinction Coefficients 2460 RETURN
(UBVRI): "; 9991 REM ==============================
1270 PRINT USING "####.## "; K(1), K(2), 9992 REM FROM "ASTRONOMICAL COMPUTING,"
K(3), K(4), K(5) 9993 REM SKY & TELESCOPE, MAY 1998
1280 PRINT "Total Extinction (UBVRI): 9994 REM ==============================
";
1290 PRINT USING "####.## "; DM(1),
DM(2), DM(3), DM(4), DM(5)
1300 RETURN
2000 REM SKY Subroutine WAVEL.BAS ; 086;
2010 FOR I=1 TO 5: READ BO(I): NEXT I Positions of absorption lines in a spectrum
2020 DATA 8.0E-14, 7.0E-14, 1.0E-13,
1.0E-13, 3.0E-13
2030 FOR I=1 TO 5: READ CM(I): NEXT I 100 REM WAVELENGTHS
2040 DATA 1.36, 0.91, 0.00, -0.76, -1.17 110 REM
2050 FOR I=1 TO 5: READ MS(I): NEXT I 120 DATA 6563,14.5
2060 DATA -25.96, -26.09, -26.74, -27.26, 130 DATA 4861,49.0
-27.55 140 DATA 3889,85.0
2070 X=1/(COS(ZZ)+.025*EXP(- 150 READ W1,S1
11*COS(ZZ))) : REM air mass 160 READ W2,S2
2080 XM=1/(COS(ZM*RD)+.025*EXP(- 170 READ W3,S3
11*COS(ZM*RD))) : REM air mass Moon 180 P=W2-W1: Q=W3-W1: R=S2-S1
2090 IF ZM>90.0 THEN XM=40.0 190 S=S3-S1: T=S3-S2
2100 XS=1/(COS(ZS*RD)+.025*EXP(- 200 A=R/P: B=S/Q
11*COS(ZS*RD))) : REM air mass Sun 210 U=A-B: V=T/U: L=W1-V
2110 IF ZS>90.0 THEN XS=40.0 220 D1=A*(W2-L): D2=D1+S1
2120 FOR I=1 TO 5 230 C=(D1*T)/U
2130 REM Dark night sky brightness 240 PRINT
2140 BN=BO(I)*(1+.3*COS(6.283*(Y- 250 INPUT "DISTANCE";D
1992)/11)) 260 IF D<0 THEN 310
2150 270 W=L+(C/(D2-D))
BN=BN*(.4+.6/SQR(1.0-.96*((SIN(ZZ))^2) 280 W=INT(W+0.5)
)) 290 PRINT "WAVELENGTH = ";W
2160 BN=BN*(10^(-.4*K(I)*X)) 300 GOTO 240
2170 REM Moonlight brightness 310 END
2180 MM=-12.73+.026*ABS(AM)+4E- 320 REM ------------------------
09*(AM^4) : REM moon mag in V 330 REM APPEARED IN ASTRONOMICAL
2190 MM=MM+CM(I) : REM Moon mag 340 REM COMPUTING, SKY & TELE-
2200 C3=10.0^(-.4*K(I)*XM) 350 REM SCOPE, JUNE, 1985
2210 FM=6.2E+07*(RM^-2)+(10^(6.15-RM/40)) 360 REM ------------------------
2220 FM=FM+(10^5.36)*(1.06+
((COS(RM*RD))^2))
2230 BM=10^(-.4*(MM-MO(I)+43.27))
2240 BM=BM*(1-10^(-.4*K(I)*X))
2250 BM=BM*(FM*C3+440000.0*(1-C3)) XYZ.BAS ; 080;
2260 REM Twilight brightness
X,Y,Z coordinates of the Sun
2270 HS=90.0-ZS : REM Height of Sun
2280 BT=10^(-.4*(MS(I)-MO(I)+32.5-HS-(Z/
(360*K(I))))) 500 REM X,Y,Z OF THE SUN
Recopilation by AMA BASIC Programs fromSky & Telescope pág. 73 / 73

501 REM (EQUINOX 1950.0) 571 Z=Z+0.009998*SIN(G-L)


502 REM 572 Z=Z+0.397825*SIN(L)
503 INPUT "J,F ";J,F 573 RETURN
504 J8=J-2415020: R1=3.14159265/180 575 REM ------------------------
505 T=(J8+F)/36525 576 REM APPEARED IN ASTRONOMICAL
506 P0=1.396041+0.000308*(T+0.5) 577 REM COMPUTING, SKY & TELE-
507 P0=P0*(T-0.499998) 578 REM SCOPE, NOVEMBER, 1985
508 A=100: GOSUB 529: G0=A+358.475833 579 REM ------------------------
509 L0=A+279.696678-P0
510 A=1336: GOSUB 529
511 C0=A+270.434164-P0
512 A=162: GOSUB 529
513 V0=A+212.603219
514 A=53: GOSUB 529: M0=A+319.529425
515 A=8: GOSUB 529: J0=A+225.444651
516 G=G0+T*(-0.950250-0.000150*T)
517 C=C0+T*(307.883142-0.001133*T)
518 L=L0+T*(0.768920+0.000303*T)
519 V=V0+T*(197.803875+0.001286*T)
520 M=M0+T*(59.8585+0.000181*T)
521 J=J0+T*154.906654
522 G=G*R1: C=C*R1: L=L*R1
523 V=V*R1: M=M*R1: J=J*R1
524 GOSUB 532
525 PRINT "X: ";X
526 PRINT "Y: ";Y
527 PRINT "Z: ";Z
528 END
529 REM NORMALIZATION
530 A=360*(A*T-INT(A*T)): RETURN
531 REM
532 X=0.000011*COS(2*G-L-2*J)
533 X=X+0.000011*COS(2*G+L-2*V)
534 X=X-0.000012*COS(G+L-V)
535 X=X-0.000012*COS(4*G-L-8*M+3*J)
536 X=X+0.000012*COS(4*G+L-8*M+3*J)
537 X=X-0.000014*COS(C-2*L)
538 X=X+0.000017*COS(C)
539 X=X+0.000018*SIN(2*G+L-2*V)
540 X=X-0.000021*T*COS(G+L)
541 X=X-0.000026*SIN(G-L-J)
542 X=X+0.000035*COS(2*G-L)
543 X=X+0.000063*T*COS(G-L)
544 X=X+0.000105*COS(2*G+L)
545 X=X+0.008374*COS(G+L)
546 X=X-0.025127*COS(G-L)
547 X=X+0.999860*COS(L)
548 REM
549 Y=0.000010*SIN(2*G+L-2*V)
550 Y=Y-0.000010*SIN(2*G-L-2*J)
551 Y=Y-0.000011*SIN(G+L-V)
552 Y=Y+0.000011*SIN(4*G-L-8*M+3*J)
553 Y=Y+0.000011*SIN(4*G+L-8*M+3*J)
554 Y=Y+0.000013*SIN(C-2*L)
555 Y=Y+0.000016*SIN(C)
556 Y=Y-0.000017*COS(2*G+L-2*V)
557 Y=Y-0.000019*T*SIN(G+L)
558 Y=Y-0.000024*COS(G-L-J)
559 Y=Y-0.000032*SIN(2*G-L)
560 Y=Y-0.000057*T*SIN(G-L)
561 Y=Y+0.000097*SIN(2*G+L)
562 Y=Y+0.007683*SIN(G+L)
563 Y=Y+0.023053*SIN(G-L)
564 Y=Y+0.917308*SIN(L)
565 REM
566 Z=-0.000010*COS(G-L-J)
567 Z=Z-0.000014*SIN(2*G-L)
568 Z=Z-0.000025*T*SIN(G-L)
569 Z=Z+0.000042*SIN(2*G+L)
570 Z=Z+0.003332*SIN(G+L)

You might also like