DRMK (Dell Real Mode Kernel), now used in their DOS-based diagnostic images (probably about 2-4 years), has a rather unusual entry into the IO file (DELLBIO.BIN; similar to IO.SYS and IBMBIO.COM). After fumbling around with it over the last few days, I _think_ I've figured out the quirks of this entry point (and successfully tweaked chain.c32 to do such). dl Usual; drive number bp 0 cs 0x0070 ss 0 ds Location of relocated boot sector code that loaded it; only used for 1 data element then initialized. The following registers are initialized by DELLBIO.BIN prior to use: ax, cx, si, di, sp, and es. fs and gs were 0 but are not used by DELLBIO.BIN. I believe bx is a remnant from loading DELLBIO.BIN and probably initialized by DELLBIO.BIN prior to use. On entry it is equal to the file size & 0xFC00. In addition to those register values, it also must have a value of 0x0000003f (little endian, of course) at ds:[bp+28]. I still need to trace around to find what that's used for. Gert Hulselmans, thank you for your help and making others aware that it couldn't be chainloaded from Syslinux. -- -Gene "No one ever says, 'I can't read that ASCII(plain text) e-mail you sent me.'"
Gene Cumm wrote:> DRMK (Dell Real Mode Kernel), now used in their DOS-based diagnostic > images (probably about 2-4 years), has a rather unusual entry into the > IO file (DELLBIO.BIN; similar to IO.SYS and IBMBIO.COM). After > fumbling around with it over the last few days, I _think_ I've figured > out the quirks of this entry point (and successfully tweaked chain.c32 > to do such). > > dl Usual; drive number > bp 0 > > cs 0x0070 > ss 0 > ds Location of relocated boot sector code that loaded it; only used > for 1 data element then initialized. > > The following registers are initialized by DELLBIO.BIN prior to use: > ax, cx, si, di, sp, and es. > > fs and gs were 0 but are not used by DELLBIO.BIN. > > I believe bx is a remnant from loading DELLBIO.BIN and probably > initialized by DELLBIO.BIN prior to use. On entry it is equal to the > file size & 0xFC00. > > In addition to those register values, it also must have a value of > 0x0000003f (little endian, of course) at ds:[bp+28]. I still need to > trace around to find what that's used for. > > Gert Hulselmans, thank you for your help and making others aware that > it couldn't be chainloaded from Syslinux. > > -- > -Gene >Just for the people who wonder about the idea of chainloading DRMK (Dell Real Mode Kernel). It started at this topic: http://www.boot-land.net/forums/index.php?showtopic=12052&st=10 @ Gene Cumm Thanks for spending some time on it to figure it all out. -Gert Hulselmans