CALL xxxxh:xxxxh - POSTsee Power-On Self-Test Memory Manager Specification (PMM) v1.0
InstallCheck:	scan paragraph boundaries E000h to FFFFh for signature string
	  "$PMM" followed by a valid PMM header structure (see #F0092)
Note:	the PMM is only available at system boot -- between the completion
	  of the memory check and the call to INT 19; this includes Option
	  ROM(Read-Only Memory) A memory for program storage which may not be changed by the program as it runs. initialization and Plug-and-Play BootTo start up the computer or operating system. The term "boot" is a contraction of "bootstrap", which in turn comes from the expression "to lift oneself by one's boot straps."  The ROM BIOS on IBMInternational Busiuness Machines PCs and compatibles reads in the first sector of the disk, which contains a short (less than 500 bytes) program that reads in a portion of the operating system, which in turn reads in the remainder of the operating system.  See also IPL. Connection Vectors, but
	  not the Bootstrap Entry Vector (which is called after INT 19)
SeeAlso: INT 2F/AX=4300h,INT 67/AH=40h


Format of POSTsee Power-On Self-Test Memory Manager Specification structure:
Offset	Size	Description	(Table F0092)
 00h  4 BYTEs	signature "$PMM"
 04h	BYTE	structure version number (01h)
 05h	BYTE	length of structure in bytes
 06h	BYTE	checksum of structure (value needed to force byte-wise sum
		of entire structure to be 00h)
 07h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> PMM entry point (real mode only) (see #F0093)
 0Bh  5 BYTEs	reserved (0)
SeeAlso: #F0024


(Table F0093)
Call POSTsee Power-On Self-Test Memory Manager Specification entry point with:
	STACK:	WORD	function number
			0000h pmmAllocate (see #F0094)
			0001h pmmFind (see #F0095)
			0002h pmmDeallocate (see #F0096)
		additional parameters vary by function
Notes:	PMM calls use standard large-model C-language calling conventions
	the caller must provide at least 256 bytes of stack space; BIOSes
	  which support this specification will provide at least 1024 bytes
	  of stack space when calling a ROM(Read-Only Memory) A memory for program storage which may not be changed by the program as it runs. initialization vector, BootTo start up the computer or operating system. The term "boot" is a contraction of "bootstrap", which in turn comes from the expression "to lift oneself by one's boot straps."  The ROM BIOS on IBMInternational Busiuness Machines PCs and compatibles reads in the first sector of the disk, which contains a short (less than 500 bytes) program that reads in a portion of the operating system, which in turn reads in the remainder of the operating system.  See also IPL.
	  Connection Vector, or Bootstrap Entry Vector (thus allowing the
	  Option ROM(Read-Only Memory) A memory for program storage which may not be changed by the program as it runs.'s code to provide sufficient stack space when calling
	  the PMM)


(Table F0094)
Call PMM "pmmAllocate" entry point with:
	STACK:	WORD	0000h (function "pmmAllocate")
		DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	length of memory block, in paragraphs
			if 00000000h, only get size of largest available block
		DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	handle to assign to memory block, or FFFFFFFh for
			  "anonymous" block
		WORD	option flags
			bit 0: allocate from conventional memory
			bit 1: allocate from extended memory
			bit 2: use alignment based on least-significant set
				bit of requested length
Return: DX:AX = 32-bit physical address of allocated memory block, or
	      size of largest available block in paragraphs, or
	      00000000h if specified handle is already in use, or
	      FFFFFFFFh if allocation failed
Notes:	at least one of bits 0 and 1 must be set in the option flags; both
	  may be set if the location of the memory block is not important
	the specification requires that an Option ROM(Read-Only Memory) A memory for program storage which may not be changed by the program as it runs. must use handles
	  compliant with the Plug-and-Play specification (high 16 bits are
	  manufacturer's vendor ID, low 16 bits are vendor-defined); handles
	  whose highest bit is set or highest six bits are all clear are
	  reserved for the BIOS(Basic Input/Output System) A set of standardized calls giving low-level access to the hardware.  The BIOS is the lowest software layer above the actual hardware and serves to insulate programs (and operating systems) which use it from the details of accessing the hardware directly., and the BIOS(Basic Input/Output System) A set of standardized calls giving low-level access to the hardware.  The BIOS is the lowest software layer above the actual hardware and serves to insulate programs (and operating systems) which use it from the details of accessing the hardware directly. may flag attempts to use such
	  reserved handles
SeeAlso: #F0093,#F0095,#F0096


(Table F0095)
Call PMM "pmmFind" entry point with:
	STACK:	WORD	0001h (function "pmmFind")
		DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	handle to be found
Return: DX:AX = 32-bit physical address of allocated memory block, or
	      00000000h if handle is not in use
Desc:	get the address of the memory block associated with the given handle
SeeAlso: #F0093,#F0094,#F0096


(Table F0096)
Call PMM "pmmDeallocate" entry point with:
	STACK:	WORD	0002h (function "pmmDeallocate")
		DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	physical address of block (as returned by pmmAllocate)
Return: DX:AX = FFFFFFFFh on error
Notes:	the memory block is cleared to all zeros by the PMM
	invalid functions (0003h-FFFFh) return DX:AX = FFFFFFFFh
SeeAlso: #F0093,#F0094,#F0095