[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.


More information about the Syslinux mailing list