home *** CD-ROM | disk | FTP | other *** search
- Release 6.x of the Clarkson collection of 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. Four drivers, the
- at&t, 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 1
- 3C503.ASM version equ 3
- 3C505.ASM version equ 1
- 3C523.ASM version equ 2
- 82586.ASM i82586_version equ 1
- ARCNET.ASM version equ 0
- AT&T.ASM version equ 0
- IPXPKT.ASM version equ 0
- ISOLAN.ASM version equ 1
- NB.ASM version equ 3
- NE1000.ASM version equ 2
- NE2000.ASM version equ 3
- NI5010.ASM version equ 0
- NI5210.ASM version equ 2
- NI6510.ASM version equ 0
- NI9210.ASM version equ 0
- PKTADDR.ASM version equ 0
- PKTALL.ASM version equ 0
- PKTCHK.ASM version equ 0
- PKTMODE.ASM version equ 0
- PKTMULTI.ASM version equ 0
- PKTSEND.ASM version equ 0
- PKTSTAT.ASM version equ 0
- SLIP8250.ASM version equ 4
- TESTMUL.ASM version equ 0
- TRACE.ASM version equ 0
- WD8003E.ASM version equ 5
-
-
- 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.
- 3C505.COM
- 3C523.ASM Device dependent 3COM 3C523 code.
- 3C523.COM
- 82586.ASM Include file for drivers based on the 82586.
- ARCNET.ASM Device dependent ARCNET code.
- ARCNET.COM
- AT&T.ASM Device dependent AT&T Ethernet and Starlan code.
- AT&T.COM
- CHROUT.ASM Subroutine to print a single character
- COPYING The Free Software Foundation's General Public License.
- DECOUT.ASM Subroutine to print a 32 bit decimal number.
- DEFS.ASM Definitions and macros.
- DIGOUT.ASM Subroutines to print 1, 2, 4, and 8 digit hex numbers.
- DRIVERS.DOC User documentation.
- DUMP.C Source of the trace dumper.
- DUMP.EXE
- EXE2COM.C Chris Dunford's Exe2bin replacement.
- EXE2COM.DOC
- EXE2COM.EXE
- GENERIC.ASM Device dependent generic code (a skeleton only).
- GETDIG.ASM Subroutine to convert an ASCII character into 0..15.
- GETEA.ASM Subroutine to convert an ASCII Ethernet address into six bytes.
- GETENV.ASM Subroutine to get a string from the environment.
- GETNUM.ASM Subroutine to convert ASCII digits into four bytes.
- HEAD.ASM Resident device independent generic code.
- HOWTOGET.IT Instructions on obtaining that which you already have.
- IBMTOKEN.ASM Device dependent IBM Token Ring Adapter code.
- IBMTOKEN.COM
- IBMTOKEN.DOC Supplementary documentation.
- IPXPKT.ASM Device dependent Novell IPX code.
- IPXPKT.COM
- ISOLAN.ASM Device dependent BICC Isolan 4110 code.
- ISOLAN.COM
- MAKEFILE Makefile. Uses tasm and tlink, but MS may work.
- MEMTEST.ASM Subroutine to test for the presence of RAM.
- MULTICRC.ASM Subroutine to compute a multicast hash table (not used yet).
- MULTIFIL.ASM Subroutine to filter multicast packets (not used yet).
- NB.ASM Device dependent NetBIOS code.
- NB.COM
- NE1000.ASM Device dependent Novell NE1000 code.
- NE1000.COM
- NE2000.ASM Device dependent Novell NE2000 code.
- NE2000.COM
- NE2000.DOC Supplementary documentation
- NI5010.ASM Device dependent Interlan NI5010 code.
- NI5010.COM
- NI5210.ASM Device dependent MICOM-Interlan NI5210 code.
- NI5210.COM
- NI6510.ASM Device dependent Racal/Interlan NI6510 code.
- NI6510.COM
- NI9210.ASM Device dependent MICOM-Interlan NI9210 code.
- NI9210.COM
- NOVTCP.TXT Doug Bigelow's DIY instructions for Novell && TCP/IP.
- OCCUPIED.ASM Subroutine to test for occupied memory.
- PACKET.DOC Joe R. Doupnik's "Packet drivers made simple"
- PACKETQA.TXT Questions from R. Nelson and Answers from jbvb@vax.ftp.com
- PACKET_D.109 Packet driver spec version 1.09
- 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
- PKTERR.ASM Subroutine to print packet driver error messages.
- PKTMODE.ASM Program to get/set the packet driver receive mode.
- PKTMODE.COM
- PKTMULTI.ASM Program to get/set the packet driver multicast list.
- PKTMULTI.COM
- PKTSEND.ASM Program to send arbitrary packets.
- PKTSEND.COM
- PKTSTAT.ASM Program to print the statistics.
- PKTSTAT.COM
- PRINTEA.ASM Subroutine to print Ethernet addresses.
- READ.ME This file.
- README.503 Bob Clements' README file for the 3c503.
- README.505 README file for the 3c505.
- README.521 Some notes on Dan Lanciani's ni5210 fix.
- README.NB NetBIOS instructions.
- README.NE2 Dave Horne's Novell NE2000 release notes.
- README.NOV Brian Meek's explanation of ECONFIG for Novell users.
- README.WD8 Jan Engvald's README file for the WD8003ET/A.
- ROMREL.COM Release the Novell boot rom's control of an Ethernet card.
- ROMREL.DOC
- SKIPBLK.ASM Subroutine to skip past blanks.
- 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
- TIMEOUT.ASM Subroutine to check for excessive time spent looping.
- 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.
-
- If you are planning on writing a driver, please contact me. There is
- a good chance you may be able to share code with another driver. For
- example, we now have three drivers that drive LANCE-based boards.
- There is even a better chance that someone else is already working on
- such a driver. For example, we now have two NE2000 drivers, both of
- which have different good features.
-
- 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 (see COPYING).
-
- If you use these packet drivers, please consider making a donation to
- Clarkson. Material help such as donated hardware is welcome. If you
- can spare an Ethernet card, send it to me, care of Educational
- Computing (address below). Money, of course, is even more welcome.
-
- If you are a manufacturer of networking cards, please consider
- donating hardware to Clarkson University. Racal/Interlan and AT&T
- have done so (thank you), and I have been able to create two packet
- drivers that otherwise wouldn't have existed.
-
- I have several drivers that I couldn't get into the 6.x release. They
- are: TRW's Zenith Z-100 card, Tiara Computer Systems's card, and
- Xircom's Pocket Ethernet adapter. I believe that Xircom's driver is
- available directly from them. It's based on the 4.x release.
-
- Russell Nelson, Editor of the Clarkson collection of packet drivers.
- nelson@clutx.clarkson.edu, nelson@clutx.bitnet
- Educational Computing, Clarkson University, Potsdam, NY 13699-5730
-
-
- Changes from version 5.0 to 6.0 of the drivers:
-
- Summary:
- New drivers: ni6510, at&t, arcnet, ipxpkt, nb, ne2000.
- New utilities: pktmulti, pktsend, pktstat.
- Bugs fixed: 3c505, 3c503, wd8003e.
-
- Carl Beame found a bug in his National 8390 drivers which was also present
- in the drivers based on the 3c503. To wit, when the buffers
- overflowed, there was a chance that there were no buffers present.
- Trying to read one of these buffers would cause a crash. This
- affects the 3c503, wd8003e, and ne2000 drivers.
- James A. Harvey fix a problem in the first beta test release that caused
- some machines to incorrectly determine the number of interrupts,
- and fixed the lockup problem in the 3c503.
- Russell Nelson changed the skeleton to enable compliance with version 1.9
- of the packet driver spec.
- Russell Nelson wrote the following drivers: ni6510, at&t, and arcnet.
- Russell Nelson wrote the following utilities pktmulti, pktsend, pktstat.
- The following drivers now implement promiscuous mode: 3c501, 3c523, ni9210,
- ni5210, at&t, ni6510, wd8003e.
- Jan Engvald enhanced HEAD.ASM to properly sense the second 8259a.
- Denis DeLaroca fixed the 16550a support in slip8250.asm.
- Glen Marianko's ROMREL program is now included for Novell users.
- All of the programs may be assembled with Borland or Microsoft (5.1) products.
- Some of the programs may be assembled with Microsoft v4.0 products.
- The set_address function refused to change the address if there was one or
- more handles open. One handle is allowable.
- The 3c501 driver now sends large broadcast packets (i.e. BOOTP) correctly.
- The routine get_multicast_list has been obsoleted by doing the same function
- totally within HEAD.ASM
- The terminate routine now gets called on the f_terminate calls.
- f_terminate now checks for any outstanding handles before terminating.
- The parameters are now printed separately from being parsed. This is to let
- programs determine the parameters dynamically.
- The 3c503 driver was enabling interrupts when it shouldn't have.
- Some drivers would return a parameter error if some of the parameters
- weren't specified.
- The bus type in 82586-based drivers is now a variable rather than an equate.
- The 82586-based drivers now have multicast partially implemented.
- The 3c523 driver reads the POS registers before parsing the parameters.
- The 82586-based drivers disable interrupts prior to being initialized. Some
- of these drivers would generate spurious interrupt, which caused
- crashes when interrupt 2 was used. The BIOS enables interrupt 2
- automatically.
- The 82586-based drivers now sense the amount of memory automatically, even
- though they still only use 8K. This means no problems with 386
- memory mappers.
- The maximum number of handles was increased from 8 to 10 (MAX_HANDLE).
- The .286 directive was removed from DEFS.ASM so that no 286 code accidentally
- slips in.
- The function dispatch routine in HEAD.ASM was changed for version 1.9 of the
- PDS.
- As promised in the version 4.x notes, the unique handle creation code went
- away.
- If a driver sets int_no to zero, the timer interrupt won't get masked off. :-)
- Dave Horne changed the 3c503 driver into a ne2000 driver.
- Dave Horne changed the way upcalls are called so that the upcall handler can
- exit using either a far return, or an iret.
- David E. Johnson fixed the 3c505 driver.
- Joe Doupnik improved HEAD.ASM by adding some comments and he brought it closer
- into compliance with the PDS. He also changed access_type so that it
- would let driver users ask for all packets even though other driver
- users were asking for some packets.
- Joe Doupnik added packet driver support to PC/IP's netwatch.
- Many useful subroutines were split out into separate files, rather than
- being duplicated in every program that used them. These routines
- are in the public domain.
- The various packet driver clients (pkt*.com) were changed to use these
- separate files. They also now use a macro to call the packet driver.
- They also report any and all errors that may occur. They also ask
- the driver for driver_info, then uses it to access_type.
- The packet receive tester, pktall, test to see if the driver is writing too
- much or too little, or in memory that it doesn't own.
- SLIP8250 now requires a command-line switch to enable hardware handshake.
- TAIL.ASM now prints the arcnet address, if the driver is an arcnet driver.
- Jan Engvald improved the wd8003e driver:
- The wd8003e driver now supports the E EBT EB ET/A and E/A boards.
- The wd8003e memory base default was 0xc400 and is now 0xd000.
- The wd8003e driver supports multicast modes.
- The wd8003e driver has a better test for occupied memory, and a switch to
- disable the occupied memory test in case it loses.
-
-
- 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.
-
-