[syslinux] [memdisk] collision between memdisk and emm386 (FreeDOS)
H. Peter Anvin
hpa at zytor.com
Fri Jul 13 12:55:11 PDT 2007
> I'm using memdisk as part of CD Shell' isolinux. I've created custom floppy
> disk image 8440kB size. I've put FreeDOS kernel and bootsector into the
> floppy. Boot process goes fine with this command:
> isolinux /boot/memdisk initrd=/ximg/fdos.img c=60 h=8 s=36 floppy
> The problems begin when I try to run FreeDOS memory manager emm386 from the
> floppy image.
> my config.sys:
> 1?DEVICE=HIMEM.EXE /VERBOSE
> 1?DEVICE=EMM386.EXE X=C000-C800 NOEMS /VERBOSE
> System hangs (freezes) just after emm386 is loaded, leaving all information
> about memory (UMB etc.). There is no any error, everything looks like it
> loaded OK, but it isn't. I've tried a lot of command line options for
> emm386, but no effect.
> The strange think is that when I did the same with 2880kB floppy image the
> problem completely disappeared! - In that case the only one suspect for me
> is MEMDISK, I think it has something with memory (difference between images
> size) - but I don't have any idea how memdisk allocates memory and why there
> is a collision between emm386 and memdisk??
EMM386 switches the CPU to V86 mode, so for MEMDISK to work under
EMM386, the memory manager needs to properly emulate INT 15h, AH=87h.
If this isn't done right, MEMDISK will hang.
It's odd, though, that it depends on the size of the disk. That seems
to imply that HIMEM doesn't properly obey the INT 15h memory maps
published by MEMDISK. I think this needs to be discussed with the
FreeDOS people; they probably can also help debug HIMEM/EMM386 in this
More information about the Syslinux