Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The purpose of this description is just for the understanding of memory allocation in the Z88. Programmer have to use the provided system calls to properly allocate memory. He should not bypass the operating system and tweak directly in the memory tables. 

...

MATs start at $0100. There is one word for each page in slot, ie. 64 entries per bank, max. 4096 entries for 1MB card. Entries are sorted in natural order.

bit 0   MAT_SYSTEM : page is used by OZ (eg. screen file)
bits 1-11 OFFSET : offset bits 0-11 Offset of next MAT entry in chainbit 12 MAT_LAST : this page is last in chain, bits 0-11 are MemHandle>>4
               bit 0 alone (MAT_SYSTEM) page is used by OZ (eg. screen file, see examples below)
bit 13 MAT_FULL : page fully used, can't be split
bit 14 MAT_ALLOCFIXED : page is allocated as fixed memory
bit 15 MAT_SWAP : page is used by OZ for bad application memory

Some examples :

00xx-0Fxx tagged as 0001 - system variables and such
10xx-17xx tagged as 8000 - swap area for bad apps
1800-1fff tagged as 0001 - stack


Page allocation scheme for <256 byte allocations (MAT_FULL (bit 13) not set in MAT)

...