m4mach
2007-Jul-13 19:08 UTC
[syslinux] [memdisk] collision between memdisk and emm386 (FreeDOS)
Hi 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?? Any ideas?
H. Peter Anvin
2007-Jul-13 19:55 UTC
[syslinux] [memdisk] collision between memdisk and emm386 (FreeDOS)
m4mach wrote:> Hi > > 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 context. -hpa