High Memory Area (HMA)

VXMS requests that the operating system's memory manager reserve the region of memory between 1MB and 1MB + 64KB, so that it may use that region for simulating the A20 address line wraparound. This region of memory is called the High Memory Area (HMA).

When the processor's A20 address line is disabled, the HMA is mapped to the first 64KB of conventional memory. When the A20 address line is enabled, the mapping depends on whether the HMA is in use. If the A20 address is not enabled, the HMA is mapped to black hole memory. Black hole memory can safely be accessed by a VDM, but values written to it cannot be retrieved (ROM or invalid physical addresses, for example). If the HMA is in use, VXMS requests the memory manager to alias a linear region inside the HMA to a memory object outside the V86 mode address space, which has been specially allocated for this purpose.

DOS Emulation code may reside in the HMA; this is specified by including the following statement in CONFIG.SYS:

DOS=HIGH

OS/2 Version 2.0 installation places this statement into CONFIG.SYS as a default, and the operating system is thus installed such that DOS Emulation runs in the HMA. The only drawback to using the HMA for DOS Emulation code is that applications are prevented from using the HMA. This is not usually a serious problem, since few programs require use of the HMA. It is recommended that DOS Emulation code is loaded in the HMA as this will free base memory for application use.

Note that if XMS size is less than 64KB for a VDM, the HMA is not emulated. All requests for the HMA will fail.


[Back: Extended Memory Manager]
[Next: Upper Memory Blocks (UMBs)]