How to Configure DOS Memory EMS and XMS in Windows XP

Windows XP relied on the NT Virtual DOS Machine (NTVDM) to execute legacy 16-bit MS-DOS applications, enabling users to fine-tune memory allocations without rebooting into real DOS. Users managed these settings by adjusting the shortcut properties of an executable, which created or modified an associated Program Information File (PIF). Through the dedicated Memory tab in the file properties dialog, users could explicitly configure Conventional, Expanded (EMS), and Extended (XMS) memory to ensure older software received the exact system resources required to run properly.

To access these memory options in Windows XP, users right-clicked an MS-DOS executable (.exe, .com, or .bat) or its desktop shortcut and selected Properties. Clicking on the Memory tab displayed the full suite of allocation controls.

Conventional Memory

At the top of the Memory tab, the Conventional Memory section handled standard base memory (the first 640 KB):

  • Total: A drop-down menu where users could specify the maximum amount of base memory available to the program (typically up to 640 KB) or leave it set to "Auto" so Windows XP dynamically allocated what was needed.
  • Initial Environment: Allowed users to reserve a specific amount of memory (in bytes) for DOS environment variables and command-line parameters.

Expanded Memory (EMS)

Expanded Memory followed the Lotus/Intel/Microsoft (LIM) EMS standard, widely used by earlier DOS games and business software:

  • Total: Users could specify a strict limit ranging from 1024 KB up to 16384 KB, set it to "None" if an application experienced conflicts, or select "Auto."
  • To use EMS successfully, the NTVDM configuration file (%SystemRoot%\System32\CONFIG.NT) typically needed the line EMM = RAM enabled; otherwise, EMS options would remain inactive regardless of the shortcut setting.

Extended Memory (XMS)

Extended Memory managed memory above the 1 MB address space using the XMS specification:

  • Total: A drop-down menu that enabled users to define the maximum XMS pool (such as 1024 KB, 4096 KB, or "Auto"). Setting this to "None" prevented the program from attempting to take over high-memory allocations.
  • Uses HMA: A checkbox that instructed the system whether to provide access to the High Memory Area (the first 64 KB of extended memory above 1 MB), mimicking the DOS=HIGH configuration found in native MS-DOS setups.

DPMI Memory

The bottom of the tab featured MS-DOS Protected-Mode Interface (DPMI) memory settings. This allowed newer 16-bit and 32-bit DOS-extended programs to access protected-mode memory directly. Users could define a specific allocation ceiling or leave the field set to "Auto."

When these changes were saved, Windows XP wrote the settings to a .pif file corresponding to the executable. Whenever the shortcut launched, NTVDM loaded with an emulated memory architecture customized precisely for that legacy application.