INT 2fH 4a01H: Query HMA Free Space and Address
Compatibility: ◄Undoc► 5.0+
Expects: AX 4a01H ◄Undocumented►
──────────────────────────────────────────────────────────────────
Returns: ES:DI Address of free space in the HMA▲
BX Available HMA space, in bytes
──────────────────────────────────────────────────────────────────
Info: Applications, device drivers, and TSRs may use this function as
the first step in obtaining a smallish chunk of memory outside of
conventional memory without using any UMB▲ space.
On return, BX describes how much available memory there is in the
HMA and ES:DI has its address.
If DOS is not loaded high (see DOS=HIGH), then BX returns with
0000H and ES:DI returns with FFFF:FFFF.
After determining if there is enough memory for your needs (there
may be as much as about 16K or as little as 0, see Notes), use
INT 2fH 4a02H to allocate the desired amount.
Notes: ■ This service is undocumented, but has been available since
DOS 5.0.
■ The BUFFERS= setting eats up the available HMA space, so there
may be verry little free by the time you request it.
■ The DBLSPACE.SYS "device driver" for DOS 6.2 uses about 12K of
the HMA (unless the /NOHMA option is used). Thus, on many
systems, as little as 2K-4K will be free.
■ Before accessing the HMA addreses, be sure that A20 is enabled.
See XMS 07H. It is normally enabled all of the time when DOS
is high.
■ You may use DOS fn 3306H as an independent check to see if
DOS is loaded in the HMA. Some other driver or TSR might
own the HMA and intercept INT 2fH 4axxH and provide its own
suballocation system.
See Also: INT 2fH: Multiplex Interrupt
Extended Memory Specification (XMS)
DOS Functions
-♦-