INT 67H 56xxH: Alter Page Map and CALL
Compatibility: EMS 4.0+
Expects: AH 55H
AL subfn: 00H=Use page numbers in EmsMapInfoRec.wFrameLoc
01H=Use segment addresses in EmsMapInfoRec.wFrameLoc
DS:SI address of an EmsMapAndCallRec (see below)
DX EMM Handle (as obtained via INT 67H 4300H)
──────────────────────────────────────────────────────────────────
Returns: AH EMM status (0=successful)
──────────────────────────────────────────────────────────────────
Info: This lets you swap some pages of executable code into memory,
then execute that code, as if you had used a FAR CALL. Upon
return, the page mapping is restored to its previous state.
DS:SI points to a structure that identifies which pages to map and
where to jump. If is formatted as:
EmsMapAndCallRec
Offset Size Contents
▀▀▀▀▀▀ ▀▀▀▀ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀
+0 4 pCodeAddr FAR address to JMP
+4 1 bNewPgCnt number of pages to map
+5 4 prNewMapInfo FAR addr of an EmsMapInfoRec
containing desired mappings
+9 1 bSavePgCnt number of pages
+0aH 4 prSaveMapInfo FAR addr of an EmsMapInfoRec with
mappings to restore upon return
14 size of this structure
Depending upon AL, the wFrameLoc fields of the EmsMapInfoRec will
contain either page numbers (usually 0-3) or segment address (for
instance, d000H, d400H, etc).
Notes: See INT 67H 50xxH (map multiple pages) for related info.
Unlike INT 67H 55xxH (map and JMP), this returns a an EMM status
code upon return.
The executed code must use a FAR RET to get back to the caller.
See Also: INT 67H: EMM Services
Extended Memory Specification (XMS)
Interrupts and BIOS Services
-♦-