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. TheNOEMSswitch 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 theRAMswitch instead ofNOEMS.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 inCONFIG.SYSinstead of the standardDEVICEcommand to place drivers (such as mouse drivers or CD-ROM drivers) into upper memory.
Example:DEVICEHIGH=C:\DOS\SETVER.EXELOADHIGH(orLH): Used inAUTOEXEC.BATor 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.