Meminfo.c32

From Syslinux Wiki
Jump to: navigation, search

Meminfo.c32 displays the range/size of various memory functions.

Example

Here's an example (with some extra formatting for clarity) from within bochs with 64 MiB of RAM.

boot: meminfo.c32
INT 15h = f000:f859  DOS RAM: 639K (0x9fc00)  INT 12h: 639K (0x9fc00)
INT 15 88: 0xfc00 (64512K)  INT 15 E801: 0x3c00 (15360K) 0x0300 (49152K)
       0
1
2
3
4
5
 0000000000000000
000000000009f000
00000000000e8000
0000000000100000
0000000003ff0000
00000000fffc0000
 000000000009f000
0000000000001000
0000000000018000
0000000003ef0000
0000000000010000
0000000000040000
 000000000009f000
00000000000a0000
0000000000100000
0000000003ff0000
0000000004000000
0000000100000000
 1 [-]
2 [-]
2 [-]
1 [-]
3 [-]
2 [-]
 usable
 reserved
 reserved
 usable
 ACPI reclaim
 reserved


Meaning

INT 15h e820

Results from INT 15h AX=e820h. This is, for the most part, the most important of all of the memory functions, as it provides a map of available memory. The information is displayed as the last few lines of the output (in this instance, 6) starting (in the example) with:

       0  0000000000000000  000000000009f000  000000000009f000  1 [-]  usable

Line numbers are printed in hex as 8 characters wide with a space prefix. Each line represents the purpose/availability, address and length/size of a block of memory.

The first 64 bit hex quantity is the start address. The second is the length/size. The third is the end address (excluding the listed byte; calculated as start plus length). The next number is decimal for the type of memory. The next column is bracketed, either a single hyphen or a hex number representing the extended attributes.

The last column is the string representation of the type:

  • 1: usable
  • 2: reserved
  • 3: ACPI reclaim
  • 4: ACPI NVS
  • 5: unusable


INT 15h

INT 15h = f000:f859  DOS RAM: 639K (0x9fc00)  INT 12h: 639K (0x9fc00)

List the segment and offset of the INT 15h handler, as read from the interrupt vector table.


DOS RAM

INT 15h = f000:f859  DOS RAM: 639K (0x9fc00)  INT 12h: 639K (0x9fc00)

It appears that this reads a value directly from memory.


INT 12h

INT 15h = f000:f859  DOS RAM: 639K (0x9fc00)  INT 12h: 639K (0x9fc00)

The results from calling INT 12h. List the available low memory (under 640k).


INT 15h 88

INT 15 88: 0xfc00 (64512K)  INT 15 E801: 0x3c00 (15360K) 0x0300 (49152K)

Results from INT 15h, AH=88h. Return the size of extended memory (total RAM in KiB as a 16 bit quantity).


INT 15h e801

INT 15 88: 0xfc00 (64512K)  INT 15 E801: 0x3c00 (15360K) 0x0300 (49152K)

Results from INT 15h AX=e801h. Extended memory size with a larger limit (superseding AH=88h). The first pair of values is the return (in CX) and size of memory between 1 MiB and 16 MiB. The second pair of values is the return (in DX) and size of memory above 16 MiB in 64 KiB pages.

References