[syslinux] Why WinME/XP boot disk doesn't work with MEMDISK
H. Peter Anvin
hpa at zytor.com
Mon Dec 13 20:48:32 PST 2004
It appears that the WinME/XP DOS boot disk links code into the INT 15h
AH=87h "mover" function which crashes the system DELIBERATELY (it puts
the system in a cli/hlt/jmp loop.) I first thought it was specific to
MEMDISK, but it's not; calling this function under just about any
circumstances from within this version of DOS seems to crash the system
hard. It's possible EMM386.EXE overrides this and installs something
else, but I don't have a WinXP/ME version of EMM386.EXE to try with.
This sucks, because there are pretty much no good alternatives. In real
mode I can enter protected mode myself -- modulo A20 screwiness -- and
take care of things, but if the machine is already in protected mode
(e.g. if EMM386.EXE is loaded) then it may not work that way. The XMS
access functions don't seem to be applicable, either.
The whole point of using the INT 15h, AH=87h interface is to let things
like EMM386.EXE be able to do the "right thing" when entering protected
mode directly isn't an option.
Microsoft. What an astonishing bunch of jackasses.
I'm thinking of producing an alternate version of MEMDISK which uses
"raw" high memory accesses. I've already confirmed that it can boot
this version of DOS.
-hpa
More information about the Syslinux
mailing list