MS-DOS 6.22 Upper Memory Block Driver Guide

In MS-DOS 6.22, managing Upper Memory Blocks (UMBs) allows users to free critical conventional memory by loading device drivers and Terminate-and-Stay-Resident (TSR) programs into the reserved memory space between 640 KB and 1024 KB. The default device driver responsible for providing and managing these Upper Memory Blocks is EMM386.EXE. This guide explains how EMM386.EXE functions, how to configure it properly in your CONFIG.SYS file, and how to utilize the freed memory space effectively.

The Role of EMM386.EXE

While HIMEM.SYS is the extended memory manager required to access memory above the 1 MB boundary (XMS), EMM386.EXE uses that extended memory to map unused areas of the upper memory area (the region between 640 KB and 1 MB) into usable UMBs on 80386 and higher processors. Without EMM386.EXE, MS-DOS cannot create UMBs, limiting drivers and programs to the standard 640 KB conventional memory footprint.

Configuring CONFIG.SYS for UMB Support

To enable UMB management in MS-DOS 6.22, you must add specific directives in a strict order within the CONFIG.SYS file:

DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE NOEMS
DOS=HIGH,UMB
  • DEVICE=C:\DOS\HIMEM.SYS: Must load first. It initializes extended memory, which EMM386 requires to operate.
  • DEVICE=C:\DOS\EMM386.EXE NOEMS: Loads the upper memory manager. The NOEMS switch tells the driver to provide UMBs without allocating Expanded Memory (EMS), maximizing the amount of upper memory available for programs. If your applications specifically require Expanded Memory, use the RAM switch instead of NOEMS.
  • DOS=HIGH,UMB: Instructs MS-DOS to load part of its own kernel into the High Memory Area (HMA) and establishes the link between DOS and the UMBs created by EMM386.EXE.

Utilizing Upper Memory Blocks

Once EMM386.EXE has established the UMBs, you can load device drivers and software into upper memory using the following commands:

  • DEVICEHIGH: Used in CONFIG.SYS instead of the standard DEVICE command to place drivers (such as mouse drivers or CD-ROM drivers) into upper memory.
    Example: DEVICEHIGH=C:\DOS\SETVER.EXE
  • LOADHIGH (or LH): Used in AUTOEXEC.BAT or at the DOS prompt to load TSR programs into upper memory.
    Example: LH C:\DOS\SMARTDRV.EXE

Verifying Memory Configuration

To confirm that EMM386.EXE is active and providing UMBs, run the following command at the DOS prompt:

MEM /C /P

This displays a classified summary of conventional, upper, and extended memory usage, allowing you to verify which drivers and programs have successfully loaded into the upper memory area.