From "Ralf Brown's
Interrupt List":
http://www.ctyme.com/rbrown.htm
Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS
AX = E801h
Return:
CF clear if successful
AX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
BX = extended memory above 16M, in 64K blocks
CX = configured memory 1M to 16M, in K
DX = configured memory above 16M, in 64K blocks CF set on error
Notes: Supported by the A03 level (6/14/94) and later XPS P90 BIOSes, as well as the Compaq Contura, 3/8/93 DESKPRO/i, and 7/26/93 LTE Lite 386 ROM BIOS. Supported by AMI BIOSes dated 8/23/94 or later. On some systems, the BIOS returns AX=BX=0000h; in this case, use CX and DX instead of AX and BX. This
interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is used as a fall-back by newer versions if AX=E820h is not supported. This function is not used by MS-DOS 6.0 HIMEM.SYS when an EISA machine (for example with parameter /EISA) (see also MEM F000h:FFD9h), or no Compaq machine was detected, or parameter /NOABOVE16 was given.
See Also: AH=8Ah"Phoenix" - AX=E802h - AX=E820h - AX=E881
Category: Vendor-specific BIOS Extensions -
Int
15h - P
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
See Also: AH=C7h - AX=E801h"Phoenix" - AX=E881h - MEM xxxx
Format of Phoenix BIOS system memory map address range descriptor:
Offset Size Description (Table 00580)
00h QWORD base address
08h QWORD length in bytes
10h DWORD type of address range (see #00581)
(Table 00581)
Values for System Memory Map address type:
01h memory, available to OS
02h reserved, not available (e.g. system ROM, memory-mapped device)
03h ACPI Reclaim Memory (usable by OS after reading ACPI tables)
04h ACPI NVS Memory (OS is required to save this memory between NVS sessions)
other not defined yet -- treat as Reserved
See Also: #00580
Category: Vendor-specific BIOS Extensions -
Int
15h - N
Phoenix BIOS v4.0 - GET MEMORY SIZE FOR >64M CONFIGURATIONS (32-bit)
AX = E881h
Return:
CF clear if successful
EAX = extended memory between 1M and 16M, in K (max 3C00h = 15MB)
EBX = extended memory above 16M, in 64K blocks
ECX = configured memory 1M to 16M, in K
EDX = configured memory above 16M, in 64K blocks
CF set on error
Notes: Supported by AMI BIOSes dated 8/23/94 or later. This
interface is used by Windows NT 3.1, OS/2 v2.11/2.20, and is used as a fall-back by newer versions if AX=E820h is not supported
See Also: AX=E801h"Phoenix" - AX=E820h"Phoenix"
Category: Vendor-specific BIOS Extensions -
Int
15h - P
SYSTEM - GET EXTENDED MEMORY SIZE (286+)
AH = 88h
Return:
CF clear if successful
AX = number of contiguous KB starting at absolute address 100000h
CF set on error
AH = status
80h invalid command (PC,PCjr)
86h unsupported function (XT,PS30)
Notes: TSRs which wish to allocate extended memory to themselves often hook this call, and return a reduced memory size. They are then free to use the memory between the new and old sizes at will.. The standard BIOS only returns memory between 1MB and 16MB; use AH=C7h for memory beyond 16MB. Not all BIOSes correctly return the carry flag, making this call unreliable unless one first checks whether it is supported through a mechanism other than calling the function and testing CF. Due to applications not dealing with more than 24-bit descriptors (286), Windows 3.0 has problems when this function reports more than 15 MB. Some releases of HIMEM.SYS are therefore limited to use only 15 MB, even when this function reports more.
See Also: AH=87h - AH=8Ah"Phoenix" - AH=C7h - AX=DA88h
Category: Bios -
Int
15h - S
SYSTEM - COPY EXTENDED MEMORY
AH = 87h
CX = number of words to copy (max 8000h)
ES : SI -> global descriptor table (see #00499)
Return:
CF set on error
CF clear if successful
AH = status (see #00498)
Notes: Copy is done in protected mode with
interrupts disabled by the default BIOS handler; many 386 memory managers perform the copy with
interrupts enabled. On the PS/2 30-286 & "Tortuga" this function does not use the port 92h for A20 control, but instead uses the keyboard controller (8042). Reportedly this may cause the system to crash when access to the 8042 is disabled in password server mode (see also PORT 0064h,#P0398). This function is incompatible with the OS/2 compatibility box
See Also: AH=88h - AH=89h -
INT 1F/AH=90h
(Table 00498) Values for extended-memory copy status: 00h source copied
into destination 01h parity error 02h
interrupt error 03h address line 20 gating failed 80h invalid command (PC,PCjr) 86h unsupported function (XT,PS30)
Format of global descriptor table: Offset Size Description (Table 00499) 00h 16 BYTEs zeros (used by BIOS) 10h WORD source segment length in bytes (2*CX-1 or greater) 12h 3 BYTEs 24-bit linear source address, low byte first
15h BYTE source segment access rights (93h) 16h WORD (286) zero (386+) extended access rights and high byte of source address 18h WORD destination segment length in bytes (2*CX-1 or greater) 1Ah 3 BYTEs 24-bit linear destination address, low byte first 1Dh BYTE destination segment access rights (93h) 1Eh WORD (286) zero (386+) extended access rights and high byte of destin. address 20h 16 BYTEs zeros (used by BIOS to build CS and SS descriptors)
Category: Bios -
Int
15h - S
Phoenix BIOS v4.0 - GET BIG MEMORY SIZE
AH = 8Ah
Return:
DX : AX = extended memory size in K
See Also: AH=88h - AX=E801h - AX=E820h
Category: Vendor-specific BIOS Extensions -
Int
15h - P
SYSTEM - later PS/2s - RETURN MEMORY-MAP INFORMATION
AH = C7h
DS : SI -> user supplied memory map table (see #00526)
Return:
CF set on error CF clear if successful
Notes: Call AH=C0h and examine bit 4 of feature byte 2 to check if this function is supported. IBM classifies this function as optional.
Windows95
? OSR2 reportedly does not support this function even though
INT 15/AH=C0h indicates that it is available (observed on several different systems)
See Also: AH=C0h - AH=C9h - AH=D1h - AX=E820h
Format of memory-map table structure: Offset Size Description (Table 00526) 00h WORD length of table (excluding this word) 02h DWORD local memory between 1M and 16M, in 1K blocks 06h DWORD local memory between 16M and 4G, in 1K blocks 0Ah DWORD system memory between 1M and 16M, in 1K blocks 0Eh DWORD system memory between 16M and 4G, in 1K blocks 12h DWORD cacheable memory between 1M and 16M, in 1K blocks 16h DWORD cacheable memory between 16M and 4G, in 1K blocks 1Ah DWORD 1K blocks before start of non-system memory between 1M and 16M 1Eh DWORD 1K blocks before start of non-system memory between 16M and 4G 22h WORD start segment of largest free block from C0000h-DFFFFh 24h WORD size of largest free block 26h DWORD reserved
Category: Bios -
Int
15h - S
AMI PCI BIOS - GET EXTENDED MEMORY SIZE
AX = DA88h
Return:
CF clear (successful) AX = 0000h CL : BX = extended memory size in KBytes
See Also: AH=88h
Category: Uncatagorized -
Int
15h - A