Alternate map register set

Entry:
AH = 5Bh
AL = subfunction
00h get alternate map register set
01h set alternate map register set
BL = new alternate map register set number
ES:DI = pointer to map register context save area
if BL=0
02h get alternate map save array size
03h allocate alternate map register set
04h deallocate alternate map register set
BL = number of alternate map register set
05h allocate DMA register set
06h enable DMA on alternate map register set
BL = DMA register set number
DL = DMA channel number
07h disable DMA on alternate map register set
BL = DMA register set number
08h deallocate DMA register set
BL = DMA register set number

Return:
AH = status
00h successful
80h internal error
81h hardware malfunction
84h undefined function requested
8Fh undefined subfunction
9Ah specified alternate map register set not supported
9Bh all alternate map register sets currently allocated
9Ch alternate map register sets not supported
9Dh undefined or unallocated alternate map register set
A3h source array corrupted
A4h operating system denied access

Subfunction:
0: BL = current active alternate map register set number if
nonzero (AL=0)
3: BL = number of alternate map register set; zero if
not supported (AL=3)
5: BL = DMA register set number; zero if not supported (subfunction 05h)
ES:DI = pointer to a map register context save area
if BL=0 (AL=0)
DX = array size in bytes (subfunction 02h)

Note: This function is for use by operating systems only, and
can be enabled or disabled at any time by the operating
system.