Load COMMAND.COM into Upper Memory in MS-DOS 6.22

This article explains how memory allocation works for the default command processor in MS-DOS 6.22 and examines the configuration parameters used to load COMMAND.COM into Upper Memory Blocks (UMBs). It details why standard MS-DOS 6.22 lacks a native CONFIG.SYS command designed specifically for this purpose, addresses common configuration misconceptions such as DOS=HIGH,UMB, and outlines the practical workarounds used to force the shell into upper memory to maximize conventional memory.

The Direct Answer: Native Limitations in MS-DOS 6.22

In MS-DOS 6.22, there is no native single configuration parameter that forces the primary command processor (COMMAND.COM) directly into upper memory via the standard SHELL= statement.

The directive widely associated with this function, SHELLHIGH, was only introduced in MS-DOS 7.0 (the underlying DOS environment packaged with Windows 95). In MS-DOS 6.22, the standard SHELL directive only supports standard syntax such as:

SHELL=C:\DOS\COMMAND.COM C:\DOS\ /P

This directive assigns the shell location and flags, but it always loads the resident portion of COMMAND.COM into conventional (base) memory.

The Prerequisite: DOS=HIGH,UMB

While DOS=HIGH,UMB does not force COMMAND.COM into upper memory, it is the fundamental configuration parameter required before any program or driver can access upper memory blocks:

DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE NOEMS
DOS=HIGH,UMB
  • DOS=HIGH instructs MS-DOS to load portions of the operating system kernel into the High Memory Area (HMA), the first 64 KB of extended memory above 1 MB.
  • DOS=UMB instructs MS-DOS to manage and link Upper Memory Blocks (memory between 640 KB and 1024 KB), making them available for drivers and resident programs.

Methods Used to Force COMMAND.COM into Upper Memory

To overcome the absence of a native SHELLHIGH parameter in MS-DOS 6.22, users relied on two main approaches:

1. The Secondary Shell via LOADHIGH in AUTOEXEC.BAT

The standard native method to run COMMAND.COM in upper memory involves launching a secondary permanent shell from AUTOEXEC.BAT. By placing a LOADHIGH (or LH) command at the end of the startup script, a new instance of the command processor is pushed into a UMB:

LH C:\DOS\COMMAND.COM C:\DOS\ /P

The /P switch makes the secondary shell permanent, preventing the user from accidentally exiting back to the conventional-memory shell beneath it.

2. The INSTALLHIGH Directive in CONFIG.SYS

MS-DOS 6.22 introduced INSTALLHIGH to launch Terminate-and-Stay-Resident (TSR) programs directly from CONFIG.SYS into upper memory. Some environments used:

INSTALLHIGH=C:\DOS\COMMAND.COM /P

While functional, this approach was non-standard compared to running a secondary shell via AUTOEXEC.BAT or relying on third-party memory managers.

3. Third-Party Memory Managers

Expanded memory managers like Quarterdeck's QEMM or Qualitas' 386MAX provided proprietary parameters and loaders (such as DOS-UP or custom SHELL loaders) that intercepted the initialization sequence and relocated the resident code of COMMAND.COM entirely into upper memory without requiring secondary shell overhead.