		Release 5.0 of the Clarkson packet drivers

If you are a user, all you need do is locate the correct packet driver for your
interface, and read DRIVERS.DOC.


Versions:

If you already have an older packet driver, you may wish to upgrade.  You
should base this decision on the contents of the "Changes..." section
below.  The major version (currently 5) goes up with every release.  The
minor version (.x, different for every driver) goes up with every
significant change in the device dependent part.  Three drivers, the
3c523, ni5210, and ni9210, all depend on 82586.asm, so they have a
subminor version number which is the version of 82586.asm.  If the minor
version hasn't changed, then chances are very good that no significant
bugs have been introduced.  Sometimes the file is changed without changing
the version number.  This is done only when an identical change is made to
all drivers to fix a bug that appears in every driver.

3C501.ASM	version	equ	0
3C503.ASM	version	equ	2
3C505.ASM	version	equ	0
3C523.ASM	version	equ	1
82586.ASM	i82586_version	equ	0
GENERIC.ASM	version	equ	0
ISOLAN.ASM	version	equ	1
NE1000.ASM	version	equ	2
NI5010.ASM	version	equ	0
NI5210.ASM	version	equ	2
NI9210.ASM	version	equ	0
SLIP8250.ASM	version	equ	3
TRACE.ASM	version	equ	0
WD8003E.ASM	version	equ	4


Contents:

There are now two packet driver distributions.  The smaller one,
drivers.arc, contains only the executable programs on the list below, this
file, DRIVERS.DOC, and COPYING.  The larger one, driverss.arc, contains
all of the files listed below.

3C501.ASM     Device dependent 3COM 3C501 code.
3C501.COM
3C503.ASM     Device dependent 3COM 3C503 code.
3C503.COM
3C505.ASM     Device dependent 3COM 3C505 code.
3C523.ASM     Device dependent 3COM 3C523 code.
3C523.COM
82586.ASM     Include file for drivers based on the 82586.
COPYING       The Free Software Foundation's General Public License.
DEFS.ASM      Definitions and macros.
DRIVERS.DOC   User documentation.
DUMP.C        Source of the trace dumper.
DUMP.EXE
GENERIC.ASM   Device dependent generic code (a skeleton only).
HEAD.ASM      Resident device independent generic code.
IBMTOKEN.ASM  Device dependent IBM Token Ring Adapter code.
IBMTOKEN.COM
IBMTOKEN.DOC
ISOLAN.ASM    Device dependent BICC Isolan 4110 code.
ISOLAN.COM
MAKEFILE      Makefile.  Uses tasm and tlink, but MS may work.
NE1000.ASM    Device dependent Novell NE1000 code.
NE1000.COM
NI5010.ASM    Device dependent Interlan NI5010 code.
NI5010.COM
NI5210.ASM    Device dependent MICOM-Interlan NI5210 code.
NI5210.COM
NI9210.ASM    Device dependent MICOM-Interlan NI9210 code.
NI9210.COM
PACKETQA.TXT  Questions from R. Nelson and Answers from jbvb@vax.ftp.com
PACKET_D.108  Packet driver spec version 1.08
PKTADDR.ASM   Program to get/set the packet driver address.
PKTADDR.COM
PKTALL.ASM    Program to receive and discard all packets.
PKTALL.COM
PKTCHK.ASM    Source of the packet driver installation checker.
PKTCHK.COM
PKTMODE.ASM   Program to get/set the packet driver receive mode.
PKTMODE.COM
READ.ME       This file.
README.503    Bob Clements' README file for the 3c503.
README.505    README file for the 3c505.
README.WD8    Jan Engvald's README file for the WD8003ET/A.
SLIP8250.ASM  Device dependent SLIP driver using IBM-PC 8250.
SLIP8250.COM
STAT.C        Source of the statistics printer.
STAT.EXE
SUPPORT.TXT   Who supports the packet driver spec.
TAIL.ASM      Non-resident device independent generic code.
TERMIN.ASM    Source of the packet driver terminator.
TERMIN.COM
TRACE.ASM     Source of the packet driver tracer.
TRACE.COM
WD8003E.ASM   Device dependent Western Digital WD-8003e code.
WD8003E.COM


Editor's note:

I created the infrastructure for the packet drivers.  All of the device
dependent portions were written by other people.  The best term to
describe what I do is "Editor and publisher", because I perform a function
similar to that served in the literary world.

Please direct bug reports to me.  Chances are that the bug is in my code
anyway.  If not, I'll forward the bug report on to the device driver author.
As with all free software, no guarantee of support is given.

Russell Nelson, Editor of the Clarkson packet drivers.
nelson@clutx.clarkson.edu, nelson@clutx.bitnet


Bugs:

I have had bug reports for the 3c505, ni9210, and ni5210.  I have also had
reports that they work just fine.  The ni5210 driver works just fine for
me, but it eventually crashes when installed on a machine that typically
has twenty simultaneous users.  Why am I shipping buggy software?  Because
I am unable to test it.  I just don't have the right hardware.


Changes from version 4.0 to 5.0 of the drivers:

Summary: New: 3c505, ne1000, ni9210, ibmtoken.  Bugs fixed: all drivers.

Krishnan Gopalan and Gregg Stefancik wrote a packet driver for the 3c505.
Brian Fisher wrote an "Ethernet" packet driver for the IBM Token Ring Adapter.
Eric Henderson wrote a packet driver for Novell's NE1000.
Russell Nelson modified ni5210 to be a ni9210 driver.  This entailed some
	changes in 82586.asm.
Russell Nelson wrote pktmode, a utility to set the receive mode.
Russell Nelson wrote pktaddr, a utility to set the Ethernet address.
Russell Nelson wrote pktall, a utility to help debug packet reception.
Trace.com is a little bit more helpful about how to run it.
Vance Morrison added starlan support to the wd8003e driver.
Eric Henderson improved it.
Deborah Swanberg noticed that the 3c503 driver didn't timeout properly
	if there was a failure to complete a transmit.
The set_address routine in the device dependent files now
	returns the address length as it should have.
Head.asm now keeps a copy of the hardware address set by set_address.  This is
	used by f_get_address to return the current address.  The device
	dependent get_address routine always returns the PROM address.
The set_rcv_mode routine didn't work.  Not at all.
The access_type routine returns more appropriate errors.
The f_get_address routine wasn't passing the right address length to
	get_address.
Tail.asm now checks for extra parameters on the end of the line.
Dan Lanciani added changes to ni5210 version 4.2 to increase reliability.
	It works for him.  Unfortunately, I have had reports from other
	people that it breaks Novell.  So, these changes are in "if DAN"
	conditional assembly.  If your Novell connection gets dropped,
	try reassembling ni5210 after setting "DAN equ 0" in 82586.asm
Packet drivers for the NE2000 and UB NIC PC/2 are in the works, but don't
	hold your breath.
A packet driver for the Xircom pocket Ethernet adapter is undergoing testing.
Jan Engvald found and fixed a bug in the wd8003e memory presence check.


Changes from version 3.0 to 4.0 of the drivers:

Russell Nelson added code to enable interrupts in the body of the packet
	driver.
Denis DeLaRoca added hardware handshake to the SLIP8250 driver.
John Grover optimized the SLIP8250 driver to work at 38.4 Kbps.
Russell Nelson added some sanity checking to slip8250 to warn the user about
	possible incorrect parameters.
Bob Clements added a switch to select thick or thin Ethernet in the 3c503.
Russell Nelson found a minor bug in NI5210 that caused it to fail to
	initialize sometimes.  Thanks to everyone who reported it.
Dan Lanciani found a race condition in the 80586 code common to the
	NI5210 and 3c523 drivers.
Russell Nelson split out the 82586 code from the NI5210 and 3c523 drivers
	into a single file.
Russell Nelson added memory address checking to NI5210.
Glen M. Marianko devised a method for determining the memory size of the
	NI5210 automagically.
Jan Engvald enhanced the packet driver code for Western Digital Ethernet
	cards to handle the micro channel version WD8003ET/A.
Jan Engvald enhanced TAIL.ASM to return error codes to DOS.
Jan Engvald enhanced HEAD.ASM to be aware of running on a MicroChannel bus.
Rainer Toebbicke wrote the BICC Data Networks' ISOLAN 4110 ethernet driver.
Russell Nelson wrote the packet driver tracer and dumper (trace.com and
	dump.exe).
Russell Nelson added support for set_rcv_mode, get_rcv_mode,
	set_multicast_list, and get_multicast_list to the infrastructure.  It
	is up to the individuals who wrote the individual drivers to add the
	device-dependent support.


Changes from version 2.0 to 3.0 of the drivers:

GNU General Public License adopted.  The restriction on commercial usage
     prevented some companies from distributing the packet drivers.  This
     is entirely my idea, so send any comments to nelson@clutx.clarkson.edu.
3c523 driver added, thanks to Dan Lanciani (ddl@harvard.edu).
Gregg Stefanik (wstef@eng.clemson.edu) is working on a 3c505 driver.  Don't
     bug him about it unless you're willing to be a alpha tester.
User documentation added (DRIVERS.DOC).
Brad Clements (no relation to Bob Clements) fixed the NI5210 driver so that
     it will work with a MTU of 1500.
The NI5210 now checks for shorts and opens before it starts up, thanks to
     Brad.
All memory-mapped packet drivers now check the packet length in send_pkt to
     ensure that too-long packets get trapped.  All packet drivers will
     work with MTUs of 1500 (plus 14 bytes of Ethernet header).
Deborah Swanberg noticed that attach_type was returning NO_CLASS
     when it meant to return NO_TYPE.
She also noted that packet drivers weren't returning unique handles.  This
     is only a problem with Phil Karn's code, as his code directs *every*
     packet driver to the same receiver routine.  With non-unique handles,
     it was impossible to tell which packet driver was upcalling the
     receiver.  Unique handles are now generated, based on the starting
     segment of the driver.  The latest version of Karn's code uses different
     receiver routines, so the code to implement this will eventually go away.
Tail.asm now prints the Ethernet address of the interface (if it is an Ethernet
     class device)
Micom has sold Interlan, and Racal has bought it, so perhaps the NI5210 is
     now the Racal-Interlan NI5210?
If anyone is interested in using the Zenith Z-100 with a SLIP packet driver, please
     send me (Russell Nelson) mail.  I have it partially written, but will
     probably never use it myself.
WD8003E and 3c503 sped up slightly -- stole movemem from NI5210.


Changes from version 3 to 2.0 of the drivers:

Version numbering now changed.  If the skeleton changes, the major version is
     incremented and all the minor versions are reset to zero.

Support for version 1.08 of the packet driver spec included.
Bob Clements' 3c503 driver added.  See README.503.
Some comments improved.
BAD_COMMAND checking code fixed.
cld instructions added to ensure that DF=0.
NI5210 sped up slightly -- look at movemem in ni5210.asm for an especially
     fast routine to move memory around.


Changes from version 2 to 3 of the drivers:

SLIP8250 can now be one of three classes: SLIP, AX.25, and KISS.
Tail.asm now checks for a packet driver already at the given interrupt.
Tail.asm now echoes its arguments in hex and decimal.
Tail.asm will close stdout so that a file handle won't be used up in
     case the user redirects stdout to NUL.
Head.asm now supports driver termination.
Termin.com added to terminate a driver.
Head.asm now does a stack swap to avoid pushing too many things when
     interrupting MS-LOSS.


Changes from version 1 to 2 of the drivers:

!!  Arguments are now in decimal by default  !!  Use a 0x prefix for hex.

DEFS.ASM created.
The loadport macro improved.
SLIP8250 driver added, thanks for a C version from Phil Karn.
     I've tried to put some 16550 support in, but I don't have one to
     test it with.  The documentation insists the TBRE goes low when
     the transmit buffer is not empty, while it makes sense for it to stay
     high while the buffer is not full.  I suspect the documentation is
     wrong.
NI5010 driver added, thanks for a C version from Bill Doster.
WD8003 driver added, by Bob Clements.
Loadport macro added to WD8003 driver by Russell Nelson.
Numeric arguments may now be specified in octal, decimal or hex, using the
     C notation.
Numeric arguments can now use up to 32 bits.
Source files reformatted.

