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