[comp.protocols.tcp-ip.ibmpc] Packet driver for WD8003 cards

xjeldc@GEMINI.LDC.LU.SE (Jan Engvald LDC) (10/26/89)

For those of you who have tried to use my version of the WD8003E packet
driver (either ver 3.2e or 4.3 alpha) in a PC XT or the like and didn't
succeed, here is some news.

One of the new features was a test if the memory range to be used by the
Ethernet card was occupied or free. It reads all the addresses in that range
and checks if all bytes are FFh. The scan string instruction was used for
this test. It has worked well for all ATs and 386s and also for the XT
compatibles I had available at the time. But for many other XTs one gets 
a false memory occupied message. Changing the scan string instruction to 
MOV and CMP seems to work well also on XTs. A new version (ver 3.2f) with
this change is now available from my PC, get the WD800COM.ARC file. 
I also did the same fix to the 4.3 ALPHA version (available in the ALPHA
subdirectory).

These versions of WD8003E does not contain the fix for Novell remote reset
ROM boot.

The code is available for anonymous FTP from my MS-DOS PC (running KA9Q NET
when I'm not using it otherwise, usuallay 01 am to 10 am central European
time). FTP to p6xje.ldc.lu.se (130.235.133.7) and go to directory
network/pktdrive/drivers. There is one ARC file with just the WD8003E.COM
driver and UPD32F.DOC file named WD800COM.ARC, another named PKTDRIVER.ARC
with all the files from this directory in it. 
In network/pktdrive/drivers/alpha you will find the 4.3 ALPHA fixed versions 
of WD8003E.COM and WD8003E.ASM (the ALPHA.ARC file is not updated).

Here is the contents of UPD32F.DOC:


I have now updated the packet driver code for Western Digital Ethernet 
cards to handle the micro channel version WD8003ET/A. 

Also, if you have a WD8003EBT which has 32 kbyte, all of that memory is 
used - not just 8 kbyte (and the WD8003ET/A will use all its 16 kbyte).
The extra memory is used for the receive buffer chain, and if you have
HEAVY broadcast traffic you loose fewer Ethernet frames and can avoid a
noticable slow down in such cases. If you have light broadcast traffic
there is no change in speed.

I changed the interrupt level argument default from 2 to 3 so it is the
same as the default setting of delivered hardware.

The receive code is also somewhat simplified, e g counter interrupt is
not enabled and corresponding code removed (it didn't do anything useful).

There is now also a test if the memory range actually is available for the
WD8003E to use. Previously, if it was occupied the PC froze and had to be
rebooted.
(*** NOTE! *** It turned out that many PC XTs and the like couldn't load  )
(the ver 3.2e driver beacuse the available memory test said memory was    )
(occupied, when it actually wasn't. The only change in ver 3.2f is revised)
(code for available memory test. It now works also on XTs.                )


TAIL.ASM needed changes to allow interrupt levels above 7 not just for
AT machines, but also for PS/2 with micro channel bus. Not to confuse, 
I made related changes also in HEAD.ASM.

There were no errorlevels defined and you could not test if a driver load
was successfull or not. In version 3.2e are now used some of the following
errorlevels:

;
; _____________________  0 = normal
; 			 1 = unsuitable memory address given; corrected
; In most cases every-	 2 = unsuitable IRQ level given; corrected
; thing should work as	 3 = unsuitable DMA channel given; corrected
; expected for lev 1-5	 4 = unsuitable IO addr given; corrected (only 1 card)
; _____________________	 5 = packet driver for this int # already loaded
; External errors, when	 6 = general cable failure (but pkt driver is loaded)
; corrected normal	 7 = network cable is open             -"-
; operation starts	 8 = network cable is shorted          -"-
; _____________________  9 = 
; Packet driver not	10 = usage message
; loaded. A new load	11 = arguments out of range
; attempt must be done	12 = unspecified device initialization error
;			13 = 
;			14 = suggested memory already occupied
;			15 = suggested IRQ already occupied
;			16 = suggested DMA channel already occupied
;			17 = could not find the network card at this IO address


This code is tested with all three card types (WD8003E, WD8003EBT and
WD8003ET/A) in PS/2-50 and PS/2-70 as well as different AT machines,
but only a few XT or the like is yet tested. (Version 3.2f should work
also for XTs.)

This version of packet driver does not include the fix for Novel remote reset
ROM boot mentioned in the Wesleyan University report on Novell ROM booting.

                                             
Jan Engvald, Lund University Computing Center
________________________________________________________________________
   Address: Box 783                E-mail: xjeldc@ldc.lu.se
            S-220 07 LUND     Earn/Bitnet: xjeldc@seldc52
            SWEDEN           (Span/Hepnet: Sweden::Gemini::xjeldc)
    Office: Soelvegatan 18         VAXPSI: psi%24020031020720::xjeldc
 Telephone: +46 46 107458          (X.400: C=se; A=TeDe; P=Sunet; O=lu;
   Telefax: +46 46 138225                  OU=ldc; S=Engvald; G=Jan)