An installation of DOS (e.g. MS-DOS 5.0) will typically include a statement in its CONFIG.SYS such as DEVICE=C:\DOS\HIMEM.SYS.

When installing Windows 3.1, it's setup comments (REMs) that line out, and adds DEVICE=C:\WINDOWS\HIMEM.SYS instead.

Presumably there is some material difference between these two files for the setup to make this modification. What does the Windows version do that the DOS one doesn't?

(This question is prompted in part by an Aleph One expansion card for Acorn Archimedes machines, which adds hardware support for running PC software under RISC-OS. Loading the DOS version of HIMEM.SYS results in an unstable system, but the Windows version works correctly, even when running DOS. A forum discussion about these symptoms can be found here.)


Different versions of MS-DOS and Windows shipped with different versions of HIMEM.SYS:

  • Windows 3.0: HIMEM.SYS 2.60
  • MS-DOS 5.0: HIMEM.SYS 2.77
  • Windows 3.1: HIMEM.SYS 3.07
  • MS-DOS 6.2 and later, Windows for Workgroups 3.11: HIMEM.SYS 3.10

(See KB74977 and KB84388 for some of these.)

I don’t have details off-hand of all the changes between these versions, but KB84388 mentions that version 2.77 only handles up to 16MiB of RAM, whereas 3.07 can detect up to 4GiB and make use of up to 1GiB (although Windows 3.x can’t use that much). There are presumably other differences, including bug fixes and possibly better support for certain systems.

Older versions of HIMEM.SYS were made available with source code, but I don’t think that was still the case with the versions shipped in Windows 3.0 or later. There might be a list of changes somewhere on the Internet but it escapes me just now. Some changes can be gleaned from Microsoft knowledge base articles; for example, version 2.77 added a switch to reserve memory for the interrupt 0x15 interface.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.