Low Memory Usage

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
 


Home  Index
Copyright 1998, Brendan Trotter