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.

- -

INT 67H 56xxH: Alter Page Map and CALL