Conventional memory Usage
Several areas in the first 1 Mb of memory have been reserved for the
fixed locations of various tables.
Address |
Size |
Use |
0x00000 |
1 Kb |
Real Mode IDT (untouched) |
0x00400 |
512 b |
BIOS data area (untouched) |
0x00600 |
512 b |
BIOS information block |
0x00800 |
512 b |
IDT |
0x00A00 |
512 b |
System information block |
0x00C00 |
1 Kb |
Stack during boot (unused after boot) |
0x01000 |
64 Kb |
GDT |
0x11000 |
64 Kb |
LDT |
0x21000 |
- |
Free memory |
- |
- |
Extended BIOS data area (if present, untouched) |
0xA0000 |
128 Kb |
Video display memory |
0xC0000 |
256 Kb |
BIOS ROM's |
BIOS information
block
This block is used to pass information from the BIOS to system services
and drivers. It should never be modified.
Address |
Size (bytes) |
Use |
0x00600 |
4 |
BIOS's version of number of pages of RAM installed |
0x00604 |
4 |
Highest free conventional page |
0x00608 |
8 |
Reserved |
0x00610 |
4 |
Address of BIOS 8 x 8 character set (first 128 chars) |
0x00614 |
4 |
Address of BIOS 8 x 8 character set (second 128 chars) |
0x00618 |
4 |
Address of BIOS 8 x 14 character set |
0x0061C |
4 |
Address of BIOS 8 x 16 character set |
0x00620 |
1 |
Reserved |
0x00621 |
1 |
Seconds (BCD) |
0x00622 |
1 |
Minutes (BCD) |
0x00623 |
1 |
Hours (BCD) |
0x00624 |
1 |
Day (BCD) |
0x00625 |
1 |
Month (BCD) |
0x00626 |
1 |
Year (BCD) |
0x00627 |
1 |
Century (BCD) |
0x00628 |
8 |
Reserved |
0x00630 |
4 |
Boot progress (0 = boot completed) |
0x00634 |
4 |
Boot cursor X position |
0x00638 |
4 |
Boot cursor Y position |
0x0063C |
1 |
Boot colour |
0x0063D |
3 |
Reserved |
IDT descriptors
This is a table required by the cpu.
Interrupt |
Use |
0 - 31 |
Intel reserved |
32 - 47 |
IRQ's 0-15 |
48 |
Memory Services entry point |
49 |
System Services entry point |
50 |
Time Services entry point |
51 |
Message Services entry point |
52 |
File Services entry point |
53 - 63 |
Reserved |
GDT descriptors:
Another table required by the cpu.
Descriptor |
Use |
0000 |
NULL descriptor, used for LGDT [GDT] |
0008 |
Local Descriptor Table |
0010 - FFF8 |
Used for dynamically allocated task gates |
LDT descriptors:
Used to extend the GDT to increase the number of tasks that can be run.
During boot the descriptor 0x18 is used for part of the setup code and
descriptor 0x20 is always the first module (memory services).
Descriptor |
Use |
0000 |
System data |
0008 |
User code |
0010 |
User data |
0018 - FFF8 |
Used for dynamically allocated code segments |