Tue Aug  9 1988 - wnl (2.5)
	Added changes to make top work under version 4.0 of the Sun
	operating system.  Changes were provided by Scott Alexander of the
	University of Pennsylvania.  Thanks!  Compile with "-Dsunos4" to
	get them.  Virtual memory statistics are not readily accessible
	under 4.0, so they don't show up in the output.

Thu Jul 31 1987 - wnl (2.4)
	Fixed a problem with the 4.0 Pyramid code.  The label "cp_time"
	doesn't exist in the 4.0 kernel anymore.  I think the code Carl
	sent me wants "percpu" instead.  That is what I am using and it
	appears to work.  375 code is still untested (at least by me).
	Also picked a great deal of lint out of the source.  Lint now only
	complains about a very few nitpicky things (there are far too many
	calls to "printf" to put a "(void)" in front of!), at least under
	SunOS.

Tue Jul 28 1987 - wnl (2.4a)
	Added changes for a Symmetrics Computer Systems s/375 machine.
	Changes were provided by Paul Vixie.  Thanks!  According to Mr.
	Vixie:  "These changes were not made at, by, or for SCS proper.
	SCS would probably be interested in them, but so far only the
	users' group has them.  They were made in February, 1987, to
	version 2.1 of the program, by Paul Vixie
	(dual!ptsfa!vixie!paul@ucbvax.Berkeley.EDU)."  His changes were
	integrated into version 2.3 to make version 2.4.

	The SCS peculiarities are summarized in Changes.scs.

Tue Jun  9 1987 - wnl (2.3 for real)
	Changed the includes for the extra code Carl sent me to only
	compile on Version 4.0 Pyramid machines.  This makes top still
	compilable on pre-4.0 Pyramids.  Specifically, this code is only
	compiled when both "pyr" and "CPUFOUND" are defined.

Wed Jun  3 1987 - wnl (2.3 with Pyramid additions)
	It's been a month and I still haven't done anything about
	distributing this version.  However, Carl Gutekunst from Pyramid
	has sent me some extra patches for some of the Pyramid code.  I
	just added those and will make them part of 2.3.  This fixes the
	following Pyramid problems:  adds the inclusion of <sys/systm.h>,
	uses the correct size for getting the kernel value _ccpu (this bug
	affected the Vax version as well), sums the elements of the percpu
	array to calculate a cp_time value (for OSx 4.0).

Fri May  1 1987 - wnl (2.3)
	I have finally finished all the changes for better support of
	oddbal terminals.  Added the low-level routine "clear_eol" which
	makes handling terminals without "ce" easy:  it uses spaces
	instead.  All direct uses of "clear_line" outside of screen.c have
	been changed to use this primitive.  A terminal with "os" is now
	handled in such that all situations that need overwriting are
	completely avoided (including several commands).  This required
	some changes to the way commands are translated into action (in
	"top.c").  Made several important changes to display.c to prevent
	overflowing of any of the fields.  Specifically, more than 99
	total processes and a cpu state that reaches 100%.  Had to make a
	small change to two casts in top.c, because the Sun 3.2 compiler
	was giving warnings on them.  Added the "-q" option which lets
	root run top at a nice of -20 (in case he thinks he really needs it).

Tue Dec 30 1986 - wnl (2.2)
	I think I fixed a bug reported by Julian Onions at Nottingham.
	Occasionally, top will core dump when the sprintf in either
	i_process or u_process overflows due to an exceptionally
	unrealistic time value.  I think it highly unlikely that top can
	get a bad proc structure (although I suppose it is possible), but
	the process time is read from the user structure, and that can
	sometimes be part garbage.  So, "get_ucpu" checks the value it
	returns to make sure its formatted form will not overflow the
	sprintf.  If this doesn't fix the bug, then more drastic measures
	will be necessary.  I plan to make this version the official
	"top 2.2".  [[ This version was never distributed very widely. ]]

Tue Dec  2 1986 - wnl (2.2c)
	Added to top.c the notion of a "failed command".  When a command
	produces a message (on the message line), an update does not
	follow it.  Before, the message was written and a new display was
	shown---purposefully not overwriting the message.  But the
	improvements to handle overstriking terminals and terminals
	without "ce" clear the screen before every display, which would
	erase the message.  Now, the message is displayed and top waits
	another full time interval before updating the display.  This
	works much better all around.

Mon Nov 24 1986 - wnl (2.2b)
	Created a new file, utils.c, and made appropriate changes to
	Makefile.  This new file holds all utility functions that can and
	may be used by more than one "module".  Improved i_memory and
	u_memory (display.c) so that screen updates for the values
	displayed are only changed when necessary.  Also made the line
	look better:  the last fixes made for a rather ugly display.
	Added the locally defined constant "LoadMax" and added code to
	top.c to send the cursor home after a space command is entered if
	the load average is higher than "LoadMax".  This provides visual
	feedback on loaded systems.

Mon Nov  3 1986 - wnl (2.2a)
	Widened the format for memory usage so that it can display 5
	digits.  This makes that line look a little ugly---maybe I'll fix
	that later.  Screen handling now understands "os" and a missing
	"ce".  It treats them identically:  clear the screen between each
	display.  Screen handling code now uses "cd" when appropriate
	(i.e.:  when user has shortened the screen).  Made i_loadave clear
	then screen and took out most of the explicit calls to "clear" in
	top.c.  This method is cleaner, especially in conjunction with
	"os" handling.  Added preprocessor variable "RANDOM_PW" for
	systems that access the passwd file randomly (Sun's yp and 4.3).
	With "RANDOM_PW" set, "getpwuid" is used instead of "getpwnam",
	but uid->username mappings are still hashed internally (because
	that is still faster than going to disk).

Mon Oct  6 1986 - wnl (2.1)
	A bug with the kill command was pointed out by "dciem!tim"---
	specifying a signal by name did not work correctly.  This bug has
	been fixed with a simple change to commands.c.  Another bug made
	the cpu state percentages incorrect the first time they were
	displayed.  This bug has also been fixed (changed top.c).

Thu Sep  4 1986 - wnl (2.0, at last)
	This is the version that will (hopefully) get released to the
	world as top 2.0.
	Added the "r" and "k" commands for renice and kill, respectively.
	This required adding a way to handle system call errors, and the
	addition of the "e" command.  Help screen and manual page were
	changed to reflect this change.  Changed all "#ifdef SUN" directives
	to "#ifdef sun", and changed all "#ifdef PYRAMID" directives to
	"#ifdef pyr".  As much as I hate those choices of preprocessor
	names (they too easily conflict with real variable names), it does
	make automatic compilation possible---people don't have to change
	the Makefile anymore for specific machines.  The manual page was
	changed to automatically incorporate the defaults as set in the
	Makefile (including an infinite value for TOPN) and the way the
	manual page is generated by the Makefile was changed to make
	maintenance of this information automatic.

Mon Jul 28 1986 - wnl (still pre 2.0)
	Real close now.  I put in a new definition for the macro "pagetok"
	that does an explicit shift of a constant expression involving
	PGSHIFT.  Appropriate checks are made if PGSHIFT is to small.
	"pagetok" is now used exclusively everywhere to convert kernel
	clicks to kilobytes.  I added a full blown interactive mode with
	the ability to change some of the runtime parameters (how many to
	display, time delay, etc.) while top is running.  I also
	incorporated a few ideas from the net:  control characters in the
	command name are replaced with '?'; the '-S' option makes the
	swapper and pager visible; options have been added to control the
	number of displays produced (this makes it easier to make
	performance snapshots with top).  I have also added the notion of
	"infinite" values for number of processes and number of displays.
	I fixed a long-standing bug in the uid to username mapping code
	that was only aggravated on the pyramids:  it was an ill-defined
	expression (akin to i = i++).  I tweaked the proc_compar routine
	for qsort slightly so that stopped processes were more likely to
	show up.  Manual page was updated to reflect all changes
	noticeable to the user.

Tue Jul  1 1986 - wnl (pre 2.0 -- 1.9999?)
	In the process of major revamping on the way to version 2.0.
	I have completely done away with curses by adding my own screen
	management routines in a separate file (screen.c).  The rationale
	for this is that top knows a whole lot more about what is and is
	not redundant on the screen and can compare simple integer values
	where curses would have to compare strings.  This has turned out
	to be a very big win speed-wise.  The proc_compar routine for
	sorting has been rewritten to include several more keys.  I
	decided this was necessary when I noticed that the "top" process
	itself kept disappearing off the top 10 list on a Sun-3.  All the
	processes had the same percentage (0%) and the sort wasn't really
	doing anything worthwhile.  I changed the expression that computes
	memory usage to use the ctob macro instead of just assuming that
	pages were 512 bytes.  More work still needs to be done before
	this version is usable.  I changed options-processing to use
	getopt and added appropriate incantations to the Makefile.

Wed Feb 20 1985 - wnl (still 1.8)
	Put in the ifdef FOUR_ONE statements to make top still compilable
	on a 4.1 system.  Apparently, there are some users out there that
	need this functionality.  Oh well.  I don't guarantee any of it,
	since I can't test it.  Made appropriate changes to README and
	final installation related changes to Makefile.

Sat Feb  2 1985 - wnl (1.8)
	Removed all the ifdef FOUR_TWO statements and made "top" into a
	4.2 only program.  If someone really wants to still run it on 4.1,
	then they can do all the work.  We don't have a 4.1 machine
	anymore, so I don't even know if the thing still works under 4.1.
	Cleaned up the Makefile and the README.  Added installation rules
	to the Makefile, as requested by several sites.  Fixed a very
	obscure divide-by-zero bug.  Added a second "key" to the qsort
	comparison function (proc_compar) so that comparisons are based on
	cpu ticks if the percentages are equal (provided by Jonathon
	Feiber at Sun).

Tue Dec 11 1984 - wnl (1.7)
	Added the virtual and real memory status line to the header area
	(provided by Jonathon Feiber at Sun)

Tue Nov 20 1984 - wnl (1.6)
	Added an "exit" if sbrk's fail.  Added changes from Jonathon
	Feiber at Sun:  ifdef SUN to make top work on Suns (they don't use
	doubles in the proc structure), register declarations, check for
	getting a user structure that has disappeared since the proc array
	was read (it used to die, now it just shows the process as swapped).

Tue Nov 13 1984 - wnl (1.5)
	If the number of displayable processes ("active_procs") was less
	than the number of requested processes ("topn"), top would
	segmentation fault.  This bug has been fixed.  Thanks to Prentiss
	Riddle at ut-sally for pointing out the existence of this bug.

Tue Oct 23 1984 - wnl (1.4)
	Finally fixed the hash table bug that caused processes owned by
	root to sometimes appear with either no name or a different name
	that had UID 0 (such as "operator").  Removed all the ifdef DEBUG
	blocks to make top ready for distribution to the real world.

Sun Apr  8 1984 - wnl (still 1.3)
	Made some slight changes to the display format.  It now looks more
	aesthetically pleasing.  Added some preprocessor constants so that
	the two defaults (number of processes and seconds of delay) easier
	to change.

Thu Apr  5 1984 - wnl (1.3)
	Changed the order in which things are done at initialization time.
	This way, if an error occurs before starting the main loop, curses
	will never get started.  Also changed other error handlers so that
	endwin() is called before any flavor of exit.  Specifying a number
	of processes that is more than the screen can handle is no longer
	fatal.  It displays a warning message and pretends the user
	specified the maximum for the screen.  Finally cured all the TSTP
	blues (well, almost all).  I removed my TSTP handler and convinced
	the system to always use the one that curses sets up.  Turns out
	that "sleep" was stepping all over it during a pause.  So, I don't
	use sleep anymore.  The only problem that remains with it now is
	redrawing the old display before updating it after a pause.

Tue Apr  3 1984 - wnl (from 1.0 to 1.2)
	I changed the format of the TIME column from just "seconds" to
	"minutes:seconds".  I also made pausing work correctly.  Screen
	redraws with an up to date display.  For compatibility with 4.2, I
	changed the name of the "zero" function to "bzero".  The makefile
	has been altered to handle versions for 4.1 and 4.2, and README
	has been updated to reflect these recent changes.
