Most of the changes here are *not* backward compatible.

#1:	The structure netent, as found in /usr/include/netdb.h, has
	been altered so as not to conflict with the structures in
	/usr/include/a.out.h.  The changed consisted of prefixing
	all structure elements with "ne" rather than "n".

	struct	netent {
		char	*ne_name;	/* official name of net */
		char	**ne_aliases;	/* alias list */
		int	ne_addrtype;	/* net address type */
		long	ne_net;		/* network # */
	};

#2:	The structure timeb, as found in /usr/include/sys/timeb.h, has
	been altered so as not to conflict with the structure "timezone"
	found in /usr/include/sys/time.h.  The change consisted of
	prefixing the "timezone" structure element with "b_".

	struct timeb
	{
		time_t	time;
		unsigned short millitm;
		short	b_timezone;
		short	dstflag;
	};

#3:	The major numbers of some of the devices have changed.  The
	current list as follows:

	Block devices:
		rk = 0		rp = 1		rf = 2		tm = 3
		hk = 4		hs = 5		xp = 6		hp = 7
		rm = 8		ht = 9		rl = 10		ts = 11

	Character devices:
		kl = 0		pc = 1		vp = 2		lp = 3
		dh = 4		dp = 5		dj = 6		dn = 7
		mem = 8		rk = 9		rf = 10		rp = 11
		tm = 12		hs = 13		xp = 14		hp = 15
		rm = 16		ht = 17		du = 18		tty = 19
		rl = 20		hk = 21		ts = 22		dz = 23
		ptc = 24	pts = 25	dr = 26

#4:	The boot program has changed, the major change is the removal
	of the reloc routine from M.s -- boot now relocates to 192
	regardless of the type of kernel involved.

#5:	Both the kernel and application systems may have up to 15 overlays.
	If you have problems see:  ld.c, sys1.c, text.c, mch.s, l.s and
	a.out.h, the csv routines, etc. etc.  Requires recompilation of adb,
	libc.a (libovc.a etc.), strip, the kernel, w, etc. etc.  If you're
	not hearing me, what I'm saying is don't mess with it.  Since the
	size of the executable header also changed, old overlaid binaries
	will not run!  If you *have* to make them run, knowing all the while
	that it's morally wrong to run programs you don't have the source for,
	change text.c to recognize some new magic number and then PATCH your
	old binaries to have that magic number.  This is recommended because
	then you don't have to make your loader and adb etc. etc. know about
	the different magic numbers.

#6:	Many if not most of the include files have changed; if you attempt
	to compile any networking program, make sure you include <netdb.h>.
	It takes care of about 80% of your porting problems.  The networking
	is there and it works.  So do the networking programs.  We think.
	When trying to port networking programs, make sure you look at the
	actual argument lists as noted in your 2.9 manuals, they aren't the
	same as the 4.[23] stuff.

#7:	The C library has undergone a couple of changes, it now has makefiles
	instead of scripts, job control is required to be there, and the new
	directory reading routines are in stdio.  We found that it was usually
	easier to put the directory reading routines into the code than to
	mess with both new and old structures.  We *haven't* changed the
	actual file system.  Therefore, if you *really* have to have the old
	directory stuff (e.g. fsck and the kernel are good examples) make sure
	you put something along the lines of

		#define KERNEL
		#include <sys/dir.h>
		#undef KERNEL

	in your code.  Since the define DIRSIZ (14, the length of a file/
	directory name) is something else in 4.[23], we've replaced all
	occurrences of DIRSIZ with MAXNAMLEN.  See sys/dir.h for more info.
	The old, non-job control routines are in libc/libjobs.  Don't even
	look at them, or you will age more rapidly than your peers.  We've
	also added a few of the 4.2/3 routines; more will be added as we
	need them.  Call if you need a specific one that isn't there, we
	may have done it.

#8:	The games directory is not reliable at all.  It's basically what
	was running on seismo the day I decided to copy them over.

#9:	The include and source directories have been converted to the
	VAX 4.2/3 directory structure.  Or at least, that's what we *meant*
	to do.

#10:	There is a new "make" program that is much bigger (and better) than
	the original; for instance, it knows that .c's can depend on .y's.
	src/bin/make_small is a smaller version.  Ditto for yacc in src/
	usr.bin/yacc_small.  Note: you have to have make_small, it's the
	only thing that can compile the kernel and uucp.  This is probably
	the nastiest problem in this 2.9.  Make is very unforgiving of
	makefiles that are too large.  If "make" drops core for no reason
	that you can think of, try running make_small and see what happens.

#11:	The kernel makefile has been broken up into four makefiles; sorry,
	but it was too big to start with and we've been making it bigger.

#12:	The UCB_SCRIPT stuff works; unfortunately, you're limited to 16
	characters, counting the '!', '#' and space.  Feel free to make
	it really work right, it should do a second read of the executable
	in sys/sys1.c.

#13:	The ls is the 4.2 ls.  Unfortunately, it fails on directories that
	have a lot of files.  If you aren't running split I/D, and you have
	a lot of people who are uncomfortable with hierarchical directory
	structures, you may get complaints.   If you decide to run the
	original ls, you'll have to fix it to understand about symbolic
	links.  If I remember correctly, the "new improved networking ls"
	that came with 2.9 didn't work.  You'll find that a lot of the
	application programs are from 4.2.  We've often found that it's
	easier to port the 4.2 version than to figure out what's wrong
	with the 2.8/9 version.

#14:	The sendmail stuff is not in place.  As far as I know, it works,
	it's running on at least two sites that I know of.

#15:	Vi doesn't reset your terminal on exit.  You may want to keep
	the old vi until someone figures out what's wrong and corrects it.
	See note #16.

#16:	One more thing, then I'll wander off.  Several programs don't work.
	We know they don't work.  We've refrained from fixing them, mostly
	becuase we figure (possibly erroneously) that if we fix the underlying
	stuff they will then start to work.  We'll see in a couple of months.
