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=HIGHinstructs 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=UMBinstructs 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.