INT 67H 58xxH: Get Mappable Physical Address Array
Compatibility: EMS 4.0+
Expects: AH 58H
AL subfn: 00H=Get segment-to-page map array
ES:DI = buffer to receive data
01H=Get count of segment-to-page array entries
──────────────────────────────────────────────────────────────────
Returns: AH EMM status (0=successful)
ES:DI (fn 5800H) buffer contains data (see below)
CX (fn 5801H) count of entries (buffer size is CX * 4)
──────────────────────────────────────────────────────────────────
Info: This obtains a cross-reference between all EMS page numbers and
the segments at which they are physically located.
ES:DI (fn 5800H) on entry, this buffer must be (n * 4) bytes long.
Obtain n by using fn 5801H.
On return, this buffer contains n 4-byte entries formatted as:
EmsSegToPgMapRec
Offset Size Contents
▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
+0 2 wSeg segment address (conv mem or EMS frame)
+2 2 wPgNo EMS page number
4 size of one EmsSegToPgMapRec
+4 2 wSeg2
+6 2 wPgNo2
.
:
etc.
Notes: All of the wSeg values are mappable memory segments. On 386-
based emulators, the lowest of these segments may be in
conventional memory, there may be some gaps, and four pages will
exist in the EMS frame.
On 8088 CPUs with physical LIM-EMS hardware, this usually returns
just four entries--mapping the EMS frame.
See Also: INT 67H: EMM Services
Extended Memory Specification (XMS)
Interrupts and BIOS Services
-♦-