INT 67H 50xxH: Map/Unmap Multiple Pages
Compatibility: EMS 4.0+
Expects: AH 50H
AL subfn: 00H=Use page numbers
DS:SI=list of LogicalPgNos/PhysicalPgNos
01H=Use physical segment addresses
DS:SI=list of LogicalPgNos/Segments
CX count of pages to map
DX EMM Handle (as obtained via INT 67H 4300H)
──────────────────────────────────────────────────────────────────
Returns: AH EMM status (0=successful)
──────────────────────────────────────────────────────────────────
Info: This lets you map two or more pages of EMS into the EMS frame
(you may use INT 67H 44xxH to map individual pages).
AL=00H This version identifies the pages to map by using physical page
numbers (for instance, 00H means the first 16K of the frame, 01H
means the second, etc.)
AL=01H This version identifies the pages to map by using segment
addresses (for instance, d000H means the first 16K of the frame,
d400H means the second, etc. -- assuming the EMS frame starts at
d000:0)
DS:SI points to a list that identifies which logical pages you want
mapped into the frame. It is formatted as:
EmsMapInfoRec
Offset Size Contents
▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
+0 2 wLogPgNo 0000H-n (pages in the handle)
+2 2 wFrameLoc1 identifies where to put the EMS page:
subfn 00H: a frame page (usually 0-3)
subfn 01H: a segment address
+4 2 wFrameLoc2 identifies where to put another EMS page
.
:
etc.
Notes: ■ As with INT 67H 44xxH, you can unmap a page (making it
inaccessible until remapped) by specifying a wLogPgNo of ffffH.
To remap the page, use a valid wLogPgNo (e.g., a value in the
range of the size of the handle).
■ When using subfn 5001H, the segment identified by wFrameLoc
must be a valid segment value that matches the start of a 16K
region within the EMS frame.
See Also: INT 67H: EMM Services
Extended Memory Specification (XMS)
Interrupts and BIOS Services
-♦-