Hi all,
I just fixed the problem where trying to boot dos by chaining from PXE to
EtherBoot to dos crashes the system in EtherBoot 5.0.8. Also, on my system
once PXE had loaded EtherBoot, going to local boot to load dos would crash
during dos loading as well.
In version 2.1 of the PXE Specification, in the UNDI_STARTUP service
description, it says that 'PXENV_UNDI_STARTUP and PXENV_UNDI_SHUTDOWN are no
longer responsible for chaining interrupt 1Ah. This must be done by the
PXENV_START_UNDI and PXENV_STOP_UNDI calls.' Since loader.S only uses
PXENV_UNDI_SHUTDOWN and PXENV_UNLOAD_STACK, the interrupt doesn't get
unhooked. If dos or EtherBoot or any other images load over the PXE
interrupt handler, then when int 1Ah gets called, the system will crash.
The way I fixed this was to add a call to PXENV_STOP_UNDI. Other ways to
fix this would be to relocate EtherBoot code to other areas or not release
the PXE memory to the system.
How should I submit the changes to the code or has this problem already been
fixed?
I also rewrote the hex to ascii routines that display the amount of free
memory in the PXE loader. The current routines don't seem to work properly.
I tested this fix with EtherBoot 5.0.7 and EtherBoot 5.0.8.
The network card used is an Intel EtherExpress PRO/100+ Management Adapter
using the eepro100 driver.
The versions of dos tested were Windows 98 SE MS-DOS and FreeDOS Kernel
2.0.27.
Both doses crashed before the fix. Now they work!!! :)
Matthew Stapleton
Email: sta...@ho...
_________________________________________________________________
Add photos to your e-mail with MSN 8. Get 2 months FREE*.
http://join.msn.com/?page=features/featuredemail
|