Extended Memory Specification

The purpose of this document is to define the Extended Memory
Specification (XMS) version 3.00 for MS-DOS. XMS allows DOS programs to
utilize additional memory found in Intel's 80286 and 80386 based
machines in a consistent, machine independent manner. With some
restrictions, XMS adds almost 64K to the 640K which DOS programs can
access directly. Depending on available hardware, XMS may provide even
more memory to DOS programs. XMS also provides DOS programs with a
standard method of storing data in extended memory.

To be considered fully XMS 3.0 compliant, all calls except those
associated with UMB support must be implemented. UMB functions 10h, 11h
and 12h are optional for XMS 3.0 and may return the Function Not
Implemented error code, 80h.

DEFINITIONS:

Extended Memory:

Memory in 80286 and 80386 based machines which is located above
the 1MB address boundary.

High Memory Area (HMA):

The first 64K of extended memory. The High Memory Area is unique
because code can be executed in it while in real mode. The HMA
officially starts at FFFF:10h and ends at FFFF:FFFFh making it
64K-16 bytes in length.

Upper Memory Blocks (UMBs):

Blocks of memory available on some 80x86 based machines which are
located between DOS's 640K limit and the 1MB address boundary. The
number, size, and location of these blocks vary widely depending
upon the types of hardware adapter cards installed in the machine.

Extended Memory Blocks (EMBs):

Blocks of extended memory located above the HMA which can only be
used for data storage.

A20 Line:

The 21st address line of 80x86 CPUs. Enabling the A20 line allows
access to the HMA.

XMM:

An Extended Memory Manager. A DOS device driver which implements
XMS. XMMs are machine specific but allow programs to use extended
memory in a machine-independent manner.

HIMEM.SYS:

The Extended Memory Manager currently being distributed by
Microsoft.