This page is to document the rather peculiar loading of DRMK (Dell Real Mode Kernel). It's close to MS-DOS and PC-DOS (from the use from chain.c32) with some more advanced differences. It has been used in the Dell Utility Partition on Dell systems and in their diagnostics images. DRMK is copyright of Dell, Inc.
- 1 COPYRIGHT
- 2 CHAIN
- 3 VERSIONS
- 4 DIFFERENCES
- 5 REFERENCES
- 6 COMMENTS
DRMK (Dell Real Mode Kernel) is copyright of Dell, Inc. and subject to Dell's Software License Agreement. Information provided herein is intended to assist in utilizing software in a more versatile manner while maintaining compliance with the appropriate licensing.
First, there are multiple released versions of DRMK. Some versions are more flexible and compatible than others. Different versions will be identified herein by the first 4 bytes of DELLBIO.BIN (as it is the file loaded by chain.c32) with information on variants also included. Previously, the version numbers listed herein were purely my own for distinguishing differing and similar versions.
Different pieces of the version info are reported in different system calls. The calls may also be refered to by a short form (21h/30h for INT 21h AH 30h; 21h/3306h for INT 21h AX 3306h).
INT 21h AH 30h
DOS Version. I've used AX 3000h (equivalent except for special functions like AX 3301h). On return, AL = Major Version, AH = Minor Version, BL:CX = 24-bit serial number (DRMK reports 0), BH = OEM Number (DRMK 0DEh).
INT 21h AX 3306h
Extended/True DOS version. Only applicable to DOS major version greater than 5 (and supposedly only MS-DOS but others return info too). On return, BL = Major Version, BH = Minor Version, DL = revision (DRMK DELLRMK.BIN build), DH = version flags.
INT 21h AX 4412h
DOS type. Deprecated in favor of 21h/4452h.
INT 21h AX 4452h
DR-DOS version. On return, AX = "OS version" (DRMK 1080h), DX = "patch version" (same as 21h/3306h DX).
INT 21h AX 4458h
Get private data pointer. On return, AX contains a 16-bit DOS date (b15-9 = years since 1980, b8-5 = month, b4-0 = day), [ES:BX] is the pointer to the private data.
Version Info Sources
Certain developers at Dell contacted me personally and informed me about 21h/4452h and 21h/4458h. I then experimented and found that the others returned the typical responses.
I'll recognize different versions by their DELLRMK.BIN build number with (possibly) an a/b to recognize versions that can be distinguished by chain and (possibly) a 0/1 to show other variations (indistinguishable by chain).
E9 31 37 00. Recognized in operation as "8.00 [Build 00007]" (statically in command.com). This version/variant I've only seen in Dell Utility partitions from the factory. Patch version is 0x0000 and build date is 1987-15-04.
df63fe59fe1d9b39c25b8763c85c22cb b7-a/dellbio.bin 2005-07-25 16:48:28 01fd5689f7d0da9013e777b688daf549 b7-a/dellrmk.bin 2005-06-21 16:54:44 9e00a3019ea6172c3c24e7381f91a6ea b7-a/command.com 2005-06-21 16:54:42
E9 31 37 00. This variant I've only noticed on several CDs from Dell for their servers in reference to recreating the Dell Utility Partition on these systems. All user-visible version data is the same as b7-a (same dellrmk.bin/command.com) and is only distinguished by its dellbio.bin.
1f802a60d1663622447c5bfaed7c2df6 b7-b/dellbio.bin 01fd5689f7d0da9013e777b688daf549 b7-b/dellrmk.bin 9e00a3019ea6172c3c24e7381f91a6ea b7-b/command.com 2005-09-06 18:00:41
E9 F6 36 00. Recognized in operation as "8.0017.10 [Build 00009]" "Nov 10, 2005". This version has been noticed on several Dell Diagnostics CD Images that contain a hard drive emulation image with geometry C,H,S 5,64,32. The FAT16 file system is configured for 5070 1k clusters but only has space in the FAT for 4350. Patch version is 0x000A and build date is 1980-00-00.
3ed84e0ea2be1db999d1242910c36021 b9-a/dellbio.bin 226f6f98a6301d5c90d5146f0cecb0ea b9-a/dellrmk.bin 43a6025652571d85b7d2d396493462eb b9-a/command.com
E9 D1 36 00. Recognized in operation as "8.0020.11 [Build 00009]" "Nov 28, 2005". This version was only noticed on several CDs from Dell for their servers in reference to recreating the Dell Utility Partition on these systems. Patch version is 0x000B and build date is 2006-01-11.
9dfa3404299de85bc2895efab498bd95 b9-b0/dellbio.bin b320b39278aff136b6f5f56681507cea b9-b0/dellrmk.bin 436513b05615e40efd6b05c09874c529 b9-b0/command.com
E9 D1 36 00. Recognized in operation as "8.0023.11 [Build 00009]" "Jan 11, 2006". Found in several Dell Diagnostic image builders and indistinguishable from b9-b0 in chain.c32.
9dfa3404299de85bc2895efab498bd95 b9-b1/dellbio.bin b320b39278aff136b6f5f56681507cea b9-b1/dellrmk.bin e630e98980abcecaef68a09301602b7f b9-b1/command.com
E9 CD 22 00. Recognized in operation as "COMMAND.COM Build 37 - Jul 28, 2008" "DRMK KERNEL Build 15 - Aug 8, 2008" (It seems almost a reversal of the version numbers). This is found on more recent system Dell Utility Partitions from the factory and the newer Dell Diagnostics image builders. Patch version is 0x000F and build date is 2008-08-08.
a9011d6f7013bdafe67e9f7827f9db27 b15/dellbio.bin 4c28d79895b6e017f007add769cec483 b15/dellrmk.bin 4afdaf202c34d9912cc6cd8806a66014 b15/command.com
- S-0: bochs-2.4.5 from source with internal debugger; C,H,S 40,16,63 HDD; Syslinux mbr.bin; FAT16 from 0,1,1 to 9,16,63; Syslinux & chain.c32 from commit e6b2efeead92156dc75cf83267520b0a6a6d033f
- S-1: As S-0 but with FAT16 from 1,0,1 to 10,16,63
- S-1a: As S-1, but FAT BIOS Parameter Block (BPB) fields SectorsPerTrack (SPT), Heads, and HiddenSectors (HS) zeroed; If this test passed, I didn't bother with the next two.
- S-1b: As S-1, but FAT BPB field HS zeroed
- S-1c: As S-1, but FAT BPB fields SPT and Heads zeroed
- Table Values
- 1: Tested and passed
- 0: Tested and failed
- -: Skipped
Differences to MS-DOS/PC-DOS, especially as it pertains to chain.c32
As always, key files are named differently. Comparing to MS-DOS, IO.SYS is replaced by DELLBIO.BIN. MSDOS.SYS is replaced by DELLRMK.BIN. COMMAND.COM remains the same.
DELLBIO.BIN requires certain differences when loaded. Most notably, it expects the boot sector to be in memory at DS:BP. At this time, it is only used to load the value of HiddenSectors (offset 0x001C).
Certain things are, however, maintained. DL is equal to the BIOS drive number. CS is 0x0070. SS is 0x0000.
- FAT BPB/Boot Sector @ Wikipedia The list of fields in the boot sector
- FAT BPB/Boot Sector @ Microsoft.com Same.