EMM386.SYS and the Apricot On-Board Ethernet
Adapter
We have had a number of instances reported to us whereby people have
been attempting to use the Microsoft EMM386.SYS LIM 4.0 memory driver on XEN-S and
LANstation machines attached to various types of network, and have found that the driver
appeared to disable the Apricot on-board Ethernet.
We have found that this is caused by a 'feature' in the Microsoft
EMM386.SYS driver, which is a 386 protected mode program that 'virtualises' the machine on
which it is running. As a result of this, it 'invisibly' traps all accesses to I/O space
by real mode programs, including most variants of On-board Ethernet network drivers.
Unfortunately, the Microsoft driver has a routine within it that wraps
some accesses to I/O memory space above 0400h down to 0h. The Apricot On-board Ethernet
adapter ROM sits just above 0400h, and so when reading the unique Ethernet address from
ROM, some of the bytes that the network device driver tries to read are wrapped around to
0h by EMM386.SYS. The driver then ends up getting bytes from the DMA controller, which in
turn causes the driver to fail because the ROM checksum that it is expecting to find is
incorrect. This will then usually result in an 'Ethernet ROM checksum' error message being
reported from the network driver.
Apricot R&D are investigating the possibility of issuing a fixed
version of Microsoft's EMM386.SYS, but as yet no timescales have been issued for a
proposed release date. In the meantime, we suggest that AEMM.SYS is used; however, this
driver is not full LIM 4.0 specification, and may cause some programs to behave
unpredictably. If this is the case, Quarterdeck's QEMM386 (version 5.11) driver may be
tried.
----------oOo---------- |