Release 2.2.3:
By John A. Magliacane <kd2bd@amsat.org> (15-Apr-2006):

* PREDICT now handles -u, -t, and -q command-line options
  (hopefully) better than before.  When these options are used
  and no default TLE and QTH files are found under the user's
  home directory, PREDICT is no longer placed into "new user"
  mode.  This should ease the use of PREDICT in non-interactive
  applications (in automated scripts, etc.) where a $HOME
  environment is lacking or not desired.  Only if a user
  has no QTH and TLE files under their home directory, and
  has passed no -q and -t arguments to PREDICT will that
  user now be considered a "new user".

* New command-line options were added to PREDICT.  The -east
  option causes PREDICT to display longitudes in degrees east
  rather than in degrees west.  The -south option displays
  latitudes in degrees south rather than in degrees north.
  -west and -north options, which are the normal defaults,
  are also included for completeness.  (Tnx: Takeshi-Okazaki,
  MTSAT-1R Chief Aeronautical Mission Engineer)

* RS-232 output in PREDICT and Moontracker has been improved
  to prevent the transmission of extraneous bytes past the
  end-of-line characters.  (Tnx: SP7HAA)

* Since the bzero() function is being deprecated, all bzero()
  function calls were replaced by memset() in all affected code.

* The accuracy of PREDICT's real-time clock displays have been
  improved.

* A problem was corrected where the GET_SAT_POS socket command
  would return results as if the GET_SAT command were also
  sent to PREDICT.  (Tnx: David Hutchinson, G8SQH) 

* PREDICT now returns a response ("Huh?") to clients that send
  unrecognized commands via the UDP socket interface instead
  of sending nothing.

* The GET_DOPPLER socket command now returns Doppler shift
  information even if the satellite in question is below the
  local horizon.

* A keyboard interactive socket interface demonstration program
  was added ("demo-i" under clients/samples).

* "earthtrack" was updated to handle changes in xplanet version
  1.0 and later.

* A small bug in the orbital prediction [P] and visual calendar [V]
  modes of PREDICT was fixed.  Before the fix, the sunlight/visibility
  symbol (*, +) displayed in these modes would sometimes list the
  point of LOS as a '*' when it should have been a '+' at the
  conclusion of a visible pass.

* Array overflow conditions in predict.c's Print() and Daynum2String()
  functions were identified and fixed.

* Several very minor coding changes were made to allow warning-free
  compilation under GCC 4.x.x.

----------------------------------------------------------------------------

Release 2.2.2:
By John A. Magliacane <kd2bd@amsat.org> (14-Mar-2003):

* PREDICT's main menu was expanded to handle the additional program
  options.  The main menu also now displays the text "Server Mode"
  when the program is invoked in socket server mode.

* Orbital phase, eclipse depth, and squint angle data has been appended
  to the information returned to UDP client applications in response
  to the GET_SAT command.

* The Moon's declination, Greenwich hour angle, and right ascension
  have been appended to the information returned to UDP clients in
  response to the GET_MOON command.

* The Sun's declination, Greenwich hour angle, and right ascension
  have been appended to the information returned to UDP clients in
  response to the GET_SUN command.

* PREDICT now returns orbital data in NASA Two-Line format to UDP
  clients in response to the GET_TLE command.

* Added a new UDP socket command (GET_MODE) to return PREDICT's
  current tracking mode (single, multi, none) to networked clients.
  If PREDICT is operating in Single Satellite tracking mode, then the
  name of the satellite currently being tracked is returned by GET_MODE.

* Fixed a bug that caused GET_SAT requests to fail after GET_DOPPLER
  requests were issued. (Tnx: KF6RFX)

* Fixed a bug in "earthtrack" where latitude and longitude options sent
  to "xplanet" were reversed under certain circumstances.  (Tnx: ZL2BSJ)

* In Main Menu option [G] (Edit Ground Station Information), ground
  station latitude and longitude may now be entered in degree, minute,
  second (DMS) format in addition to decimal degrees.

* Moon tracking code replaced with a more precise algorithm based
  on Meeus' method.

* Added a lunar prediction mode that predicts passes of the Moon.

* Added a solar prediction mode that predicts passes of the Sun.

* Added "MoonTracker", a small background utility that directs
  an AZ/EL antenna array toward the position of the Moon.

* The "vocalizer" feature was greatly improved.  Sound samples are
  now read from ubiquitious .wav files, making it easier for users
  to create samples of their own, even in languages other than English.
  PREDICT now articulates numeric values in their entirety (ie:
  "three hundred forty nine") instead of articulating each digit
  individually ("three four nine") as was done previously.  Alarms
  and additional announcements were added to alert a visual observer
  when a spacecraft is visible, when it enters into sunlight, and
  when it enters into eclipse.

* Added "fodtrack", written by Luc Langermann, LX1GT.  This utility
  permits AZ/EL antenna control using the Fodtrack hardware interface
  via the parallel port.

* Several other coding changes were made.  Linux-specific code was
  removed in an effort to allow easier compilation under FreeBSD,
  MacOS X, and other Unixes in general.

* Program documentation was updated to reflect the changes and new
  features available in this version of PREDICT.

----------------------------------------------------------------------------

Release 2.2.1:
By John A. Magliacane <kd2bd@amsat.org> (14-Oct-2002):

* Fixed a problem that caused PREDICT to display the last satellite
  twice in listings when less than the maximum number of satellites
  existed in predict.tle.

* Fixed a problem that caused a Doppler shift of zero to be
  reported by PREDICT via the UDP interface in MultiTracking mode.

* Several other minor "tweaks" were made.

----------------------------------------------------------------------------

Release 2.2.0: (a.k.a. The Columbus Day Release)
By John A. Magliacane <kd2bd@amsat.org> (12-Oct-2002):

* PREDICT's satellite tracking algorithm was replaced by a more precise
  model based on a translation into 'C' of Dr. T.S. Kelso's SGP4/SDP4
  FORTRAN and Pascal routines by Neoklis Kyriazis, 5B4AZ, and made available
  under the GNU General Public License through his "satcom-08" program.

* PREDICT now imports, exports, and permits editing of TLE element set
  numbers, International Designators, and Bstar and nddot/6 drag terms
  in addition to all the remaining orbital data found in a two-line
  element set.

* Earthtrack was modified so that when multi-tracking satellites,
  range circles are displayed 5 minutes prior to AOS through LOS.

* Maximum allowable callsign length was increased to 15 characters to
  permit groundstation names to be used in place of 6 character callsigns.

* Vocalizer will no longer send audio to the soundcard if the soundcard
  cannot be set to the proper sampling rate and word size.

* The Single Tracking mode was completely redesigned to allow interactive
  selection of satellite transponder, provide real-time Doppler-compensated
  uplink and downlink frequency information, and support for a transponder
  database.  Spacecraft antenna squint angle, propagation delay, echo,
  and satellite eclipse depth information are also now available.  See
  the NEWS file for additional information.

* Orbital predictions now report squint angles instead of orbit
  numbers if ALAT/ALON data is available in the transponder database.

* A Visual BASIC Windows-based client application has been contributed
  by Steve Fraser, VK5ASF.  Steve also contributed some small coding
  changes that allow PREDICT to be successfully invoked by rc.local
  upon startup.

* Bent Bagger, OZ6BL, contributed a small change to get_response() in
  the client demo.c program.  The modification recognizes the absence
  of a PREDICT server, and displays an appropriate error message.
  The previous method set an alarm and waited for a timeout to occur.

* A bug in the configure script was fixed.

* Lots of other small coding changes were made.

----------------------------------------------------------------------------

Release 2.1.6: (a.k.a. The 11th Anniversary Release)
By John A. Magliacane <kd2bd@amsat.org> (08-Jul-2002):

* Buffering added to I/O functions in the vocalizer utility
  for better efficiency and less CPU load.

* Fixed errors in main() (predict.c) that prevented the
  vocalizer utility from ever being invoked by PREDICT.

* Modified the earthtrack utility for compatibility with
  versions of xplanet more recent than 0.82.

* Serial port configuration for antenna rotator interface control
  is now automatically set within PREDICT to the EasyComm 2 protocol
  standard (9600 bps, 8N1, no handshaking) when the -a or -a1
  command-line options are invoked.

* -a1 command-line option added.  It works like the -a option, except
  it sends tracking data to the specified serial port at least once
  per second, whether the data has changed since the last transmission
  or not.  These "keepalives" are required for interfaces such as the
  ones by Suding Associates, Inc. that throttle back to manual mode if
  updates aren't received on a regular and frequent basis.
 
* "gsat" by Xavier Crehueras, EB3CZS, has been updated to version 1.0.0.
  The new version adds Doppler control for beacon frequencies, support
  for a satellite frequency database, and automatic frequency selection.
  In addition, an azimuth/elevation graphic window is now included,
  and automatic rotator control via plugins is now supported.

* The destination directory for PREDICT's executables may now be
  specified to something other than the regular default (/usr/local/bin)
  when ./configure is invoked.  See the README file for details.

* Main menu option [I] (Program Information) was changed to provide
  information about which files were loaded by PREDICT, if a soundcard
  is present, if network server mode is enabled, if rotator AutoTracking
  is enabled, and if so, what serial port is used, how often is data sent,
  etc.

* The documentation was updated, and several other small coding
  changes were made.

----------------------------------------------------------------------------

Release 2.1.5: (a.k.a. The "Palindrome Year" Release)
By John A. Magliacane <kd2bd@amsat.org> (03-Jan-2002):

* -n command-line switch was added by Xavier Crehueras, EB3CZS,
  to permit an alternate network port to be specified when
  running PREDICT in server mode.  This flexibility permits
  multiple instances of PREDICT to run in server mode on a
  single host without interaction.  Each instance of PREDICT
  can then operate from a different orbital database, and
  supply the tracking data generated to different clients.

* -p command-line switch was added to permit a set of orbital
  predictions for a single pass to be generated by PREDICT and
  obtained solely through the command line.  The output may be
  directed to a file if a name is specified through the -o switch.

* The output of the -f command-line was modified to be consistent
  with that of the the newly added -p switch.  Options to the -f
  switch were enhanced to permit a list of satellite positions to
  be generated in resolutions of one every second or one every
  minute.

* The GET_SAT_POS socket command now provides date/time information
  in both ASCII and Unix Time, as well as range, orbit number, and
  sunlight visibility information in addition to azimuth, elevation,
  and sub-satellite point latitude and longitude (which are now
  ints instead of floats).

* A new socket command called PREDICT was added to provide orbital
  prediction information through the socket interface.

* Due to a warning given by gcc version 2.95.3, the use
  of tmpnam() was replaced by mkstemp() in predict.c.

* Modified the "kepupdate" script to download Keplerian element data
  from celestrak.com using the wget command and the http protocol
  since celestrak.com no longer provides Keplerians via anonymous ftp.

* The xpredict script was modified to include more virtual terminal
  selections.

* Version 0.9.0 of "gsat" by Xavier Crehueras, EB3CZS, is included.
  Several new features, including automatic Doppler correction via
  plugins, is included.  Details for writing and customizing plugins
  is provided.

* Added a new "-x" command line option to "earthtrack" to allow passing
  extra parameters directly to xearth and xplanet (contributed by Tom
  Busch, WB8WOR).

* The documentation was updated, and several other small coding
  changes were made.

----------------------------------------------------------------------------

Release 2.1.4:
by John A. Magliacane <kd2bd@amsat.org> (28-Jun-2001):

* Fixed an array overflow problem in the Solar Illumination
  Prediction mode.

* Pressing [R] in either the Single or Multi-Tracking mode forces
  PREDICT to re-read the orbital database.  This can be useful if
  the database is updated manually or by means other than through
  PREDICT's update options while PREDICT is still running, and
  eliminates the need to re-start the program under such conditions. 

* Real-time tracking is no longer attempted for satellites that
  appear to have decayed from orbit.

* Several new options were added to the -f command-line switch.  If no
  starting or ending date/time is specified, a single line of output
  corresponding to the current date/time is produced.  If the starting
  date/time is replaced by a number (n) preceded by a '+' symbol (ie.
  +10), output is produced starting at the current date/time, and
  ending at the current date/time plus 'n' seconds.

* Multiple Keplerian element data files may now be used as arguments
  for the -u command-line switch. (predict -u file1 file2 file3)

* Several network client applications were added or otherwise revised.
  "earthtrack" was modified to work not only with xearth, but with
  xplanet as well.  When used with xplanet, earthtrack provides
  photo-realistic views of the earth from the perspective of the
  spacecraft being tracked by PREDICT.  Very nice!  An updated version
  of gsat (version 0.8.0) is also included, as well as a small utility
  to force a reload of PREDICT's orbital database through the UDP
  interface.

* The configuration and compilation process has been modified slightly
  to reduce confusion during installation.  Please check the README file
  for instructions!

* An updated Linux Software Map entry was issued, and the new version
  of PREDICT was uploaded to:

	ftp://ftp.amsat.org/amsat/software/Linux/predict-2.1.4.tar.gz
  and
	ftp://ftp.metalab.unc.edu/pub/linux/apps/ham/predict-2.1.4.tar.gz

----------------------------------------------------------------------------

Release 2.1.3: (a.k.a. "The New Millennium Edition")
by John A. Magliacane <kd2bd@amsat.org> (06-Jan-2001):

* Fixed several small math errors.  One goes back to some very old
  (and widely used) satellite tracking code!  Thanks to Jordi Mas
  for pointing them out and providing corrections.  Thanks also to
  Andreas Trotschel for pointing out an error in the size of the
  global output[] array.

* Portions of the MultiTrack() and SingleTrack() functions were
  re-coded for greater simplicity and to permit some new socket
  features to be added.

* Added many new socket commands:

	RELOAD_TLE:  forces a running version of PREDICT to
		     re-read its orbital database on the fly.

	GET_SUN:     returns the current azimuth and elevation
		     headings of the Sun.

	GET_MOON:    returns the current azimuth and elevation
		     headings of the Moon.

	GET_QTH:     returns the ground station's callsign, latitude,
		     longitude, and altitude above sea level.

	GET_VERSION: returns PREDICT's version number.

	GET_TLE:     returns Keplerian orbital data for a satellite
	             based on its name or object number.

	GET_TIME:    returns the current UTC date/time as reported by the
		     server in the form of the number of seconds since
		     00:00:00 UTC on January 1, 1970 (Unix Time).

	GET_TIME$:   returns the current UTC date/time as reported by
		     the server in the form of Fri Dec 22 22:37:05 2000.

	GET_SAT_POS: returns the latitude, longitude, azimuth and elevation
		     headings for a satellite at the time (or starting and
		     ending times) specified.

  The GET_SAT command now returns the current slant-range to the satellite
  (in kilometers), the satellite's altitude, orbital velocity, current orbit
  number, and sunlight visibility information in addition to the tracking
  data previously provided.  The "Next AOS" parameter previously returned
  has been changed to "Next Event Time", which corresponds to the Next AOS
  time if the satellite is not in range, or the LOS Time for satellites
  that are in range.  Geostationary satellites, or satellites in orbits
  that do not permit passes above the ground station return a 0 for
  "Next Event Time".

  The GET_LIST command now returns ALL the satellite names in PREDICT's
  orbital database as a single string, and must be parsed by the client
  to pull out individual names.  Earlier versions of PREDICT returned
  only one name at a time when the GET_LIST command was invoked.  In
  addition, satellite names returned by GET_LIST are now full-length
  strings, and are no longer abbreviated by the program in any way.

* The GET_DOPPLER command no longer echos back the name of the
  satellite for which the Doppler information was requested.

* The socket documentation and "demo.c" program were significantly
  updated.

* "demo.pl" written in Perl by Rich Parry, W9IF, is included to act
  as a template for those interested in writing client applications
  in Perl.

* The main program documentation was re-organized around a common
  document written in groff, thereby providing a system man page
  as well as postscript, PDF, and ASCII documents having identical
  content.  The HTML documentation was eliminated.

* Added a new command-line option: -a  When followed by a serial port
  device (eg: predict -a /dev/ttyS0), PREDICT sends real-time tracking
  data to the serial port specified in the form of: "AZ241.0 EL26.0\r\n"
  (EasyComm standard) when in the single satellite tracking mode.
  Updates are sent as the values for azimuth and elevation change over
  time.  This feature is used to permit PREDICT to control an antenna
  rotator through an interface developed by Vicenzo Mezzalira, IW3FOL
  <mezzalira@pd.astro.it>.  Thanks to Vittorio Benvenuti, I3VFJ
  for contributing this code to PREDICT.

* Added a new command-line option: -f  When followed by a satellite
  name or object number, a date/time (in Unix Time), or a starting
  and ending date/time, the corresponding latitude, longitude, azimuth,
  and elevation headings of the satellite are returned by the program.
  This permits PREDICT to be invoked within other applications that
  need to determine the location of a satellite at a particular point
  in time, such as the location of where a CCD camera image was taken
  by a Pacsat satellite based on its timestamp. 

* Added a new line to the xpredict script to allow it to run under
  newer Linux distributions.  Users need to select (uncomment) one
  of the lines in the script depending on their termcap settings.

* Included the source code for the xforms-based graphical real-time
  satellite tracking display program "map" by Ivan Galysh, KD4HBO
  under clients/map.

* Included the source code for the GTK-based graphical real-time
  satellite tracking display program "gsat" by Xavier Crehueras,
  EB3CZS under clients/gsat.

* Included the source code for "earthtrack", a utility that permits the
  real-time display of satellite locations using the "xearth" program.
  It is located under clients/earthtrack.
 
* An updated Linux Software Map entry was issued, and the new version
  of PREDICT was uploaded to:

	ftp://ftp.amsat.org/amsat/software/Linux/predict-2.1.3.tar.gz
  and
	ftp://ftp.metalab.unc.edu/pub/linux/apps/ham/predict-2.1.3.tar.gz

----------------------------------------------------------------------------

Release 2.1.2:
by John A. Magliacane <kd2bd@amsat.org> (17-Jun-2000):

* Several small bugs in the KepCheck() and SaveTLE() functions of predict.c
  were identified and repaired.  The problems centered on the fact that
  unsigned chars were used to accumulate TLE checksums.  Occasionally,
  the checksums exceeded the capacity of an unsigned char, and rolled
  over through zero as a result.  These variables were changed to
  unsigned integers.

* A small problem in the AutoUpdate() function in predict.c was identified
  and fixed.  Occasionally, Keplerian data for a satellite would not
  update if it had the same reference epoch as that in PREDICT's
  orbital database.  This problem was the result of extremely small
  rounding errors introduced by the complier that caused intermittent
  logic errors when trying to compare two double precision floats for
  equality.  This problem was solved by changing these variables from
  doubles to floats.

* The array "filename" in the function sayfile() in vocalizer.c was
  increased in size from 40 to 80 bytes.  Before the change, this array
  could overflow, causing a halt in the vocalizer routine on some machines
  before the proper end of the articulated message.

* A #define was added to the geosat.c program to declare a value of PI
  for those compilers/platforms that require it being defined.

* The -T option in the xpredict script was changed to -title.

* An updated Linux Software Map entry was issued, and the new version
  of PREDICT was uploaded to:

	ftp://ftp.amsat.org/amsat/software/Linux/predict-2.1.2.tar.gz
  and
	ftp://ftp.metalab.unc.edu/pub/linux/apps/ham/predict-2.1.2.tar.gz

----------------------------------------------------------------------------

Release 2.1.1:
by John A. Magliacane <kd2bd@amsat.org> (03-Apr-2000):

* A few bugs in the "installer" program were fixed.

* The Keplerian "torture test" in predict.c was a bit too brutal for
  some element sets.  The check for a '-' on position 59 of TLE line 1
  was eliminated since some element sets have a '+' in that position.

* An updated Linux Software Map entry was issued, and the new version
  of PREDICT was uploaded to:

	ftp://ftp.amsat.org/amsat/software/Linux/predict-2.1.1.tar.gz
  and
	ftp://ftp.metalab.unc.edu/pub/linux/apps/ham/predict-2.1.1.tar.gz

----------------------------------------------------------------------------

Release 2.1.0:
by John A. Magliacane <kd2bd@amsat.org> (01-Apr-2000):

* A solar illumination feature was added to predict the percentage
  of time a satellite spends in sunlight per day.

* Orbital predictions for satellites that appear to have decayed
  since the last Keplerian orbital update are no longer attempted
  by the program.

* Date and time used to start orbital predictions may now be
  abbreviated to Day/Month/Year only (00:00:00 is assumed).

* System clock/calendar is now read to millisecond precision,
  permitting more "lively" real-time tracking mode displays. 

* "vocalizer" code was changed to use a slightly different (better)
  approach towards initializing and sending data to the system
  soundcard.

* Socket-based server code was contributed by Ivan Galysh, KD4HBO.
  It allows PREDICT to export real-time tracking data for all 24
  satellites to external client programs, such as automatic antenna
  rotator controllers, graphical map display programs, or TX/RX
  tuning controllers.  The server features are activated by invoking
  PREDICT with a -s switch.  Communication between server and clients
  is by way of the UDP protocol.  Real-time data is exported by PREDICT
  in both the single satellite and multi-satellite tracking modes.
  
* The command-line parsing code was modified to prevent segmentation
  faults from occurring if command-line options are incorrectly issued.

* Some minor coding changes were made.

* An updated Linux Software Map entry was issued, and the new version
  of PREDICT was uploaded to:

	ftp://ftp.amsat.org/amsat/software/Linux/predict-2.1.0.tar.gz
  and
	ftp://ftp.metalab.unc.edu/pub/linux/apps/ham/predict-2.1.0.tar.gz
	
----------------------------------------------------------------------------

Release 2.0.1:
by John A. Magliacane <kd2bd@amsat.org> (02-Jan-2000):

* Added this file.  :-)

* Replaced the printw() calls with addstr() calls in the Print() function.
  This may end the segmentation faults previously encountered when using
  ncurses versions earlier than 4.2.

* Increased the capacity for supporting callsigns longer than 5 characters,
  even though I thought I had designed the program to handle 6!  Through
  a series of "well-planned errors", callsigns longer than 5 characters
  caused all other QTH data entered through main menu option [G] to be
  set to zero.  Also modified the ReadDataFiles() function to chop off
  the <LF> character appended to the callsign.

* Drastically changed the installation program.  Instead of having the
  installation program modify the source code for predict and vocalizer
  depending on the system hardware and installation directory chosen by
  the user, the installation program now writes all necessary information
  to a pair of .h files that are #included in the source code for both
  programs.  (Why I didn't think of it earlier, I'll never know...)

* Ported source code (with all the 2.0.1 modifications) to DOS using
  Caldera's DR-DOS 7.02 and a DJGPP 32-bit software developing environment.
  The vocalizer routines were intentionally left out (DOS can't multi-task).
  The initial DOS version has been set to 2.0.1d rather than 2.0.0 to reflect
  the small bug fixes it contains over the original Linux version, with
  the 'd' representing the fact that it's a DOS version.  The DOS version
  contains full source code plus a pre-compiled binary for Intel CPUs
  as well as a protected mode driver.  It was uploaded to:

	ftp://ftp.amsat.org/amsat/software/PC/tracking/predict2.zip

* Uploaded the latest release to:

	ftp://ftp.amsat.org/amsat/software/Linux/predict-2.0.1.tar.gz

