Category: vendor-specific BIOS extensions

INT 15 - newer BIOSes - GET SYSTEM MEMORY MAP

	AX = E820h
	EAX = 0000E820h
	EDX = 534D4150h ('SMAP')
	EBX = continuation value or 00000000h to start at beginning of map
	ECX = size of buffer for result, in bytes (should be >= 20 bytes)
	ES:DI -> buffer for result (see #00581)
Return: CF clear if successful
	    EAX = 534D4150h ('SMAP')
	    ES:DI buffer filled
	    EBX = next offset from which to copy or 00000000h if all done
	    ECX = actual length returned in bytes
	CF set on error
	    AH = error code (86h) (see #00496 at INT 15/AH=80h)
Notes:	originally introduced with the Phoenix BIOS v4.0, this function is
	  now supported by most newer BIOSes, since various versions of Windows
	  call it to find out about the system memory
	a maximum of 20 bytes will be transferred at one time, even if ECX is
	  higher; some BIOSes (e.g. Award Modular BIOS v4.50PG) ignore the
	  value of ECX on entry, and always copy 20 bytes
	some BIOSes expect the high word of EAX to be clear on entry, i.e.
	  EAX=0000E820h
	if this function is not supported, an application should fall back
	  to AX=E802h, AX=E801h, and then AH=88h
	the BIOS is permitted to return a nonzero continuation value in EBX
	  and indicate that the end of the list has already been reached by
	  returning with CF set on the next iteration
	this function will return base memory and ISA/PCI memory contiguous
	  with base memory as normal memory ranges; it will indicate
	  chipset-defined address holes which are not in use and motherboard
	  memory-mapped devices, and all occurrences of the system BIOS as
	  reserved; standard PC address ranges will not be reported
SeeAlso: AH=C7h,AX=E801h"Phoenix",AX=E881h,MEM xxxxh:xxx0h"ACPI"