For page-aligned heap blocks:
0x7F000 - Last block
0x01000 - First block
0x00000 - Free page bitmap (5 bytes for each block - 640 bytes) (
Byte 0: Flags (Bit 0: 1 = used, 0 = free)
Byte 1-5: Physical address of block
Beginning of heap block
0x1000 - Beginning of heap
0x0200 -
0x0000 - Heap block map (1 byte for each block, gives flags, 512 bytes)
(bit 0: 1 = used, 0 = free)
(bit 1: 1 = page-aligned block, 0 = normal block)
If free, byte = 0, for eaiser searching
First page of heap may be partially used, if this 512 bytes map doesn't fit, put at start of next page
All addresses relitive to start of heap