Memo files contain one header record and any number of block structures. The header record contains a pointer to the next free block and the size of the block in bytes. The size is determined by the SET BLOCKSIZE command when the file is created. The header record starts at file position zero and occupies 512 bytes. The SET BLOCKSIZE TO 0 command sets the block size width to 1.
Following the header record are the blocks that contain a block header and the text of the memo. The table file contains block numbers that are used to reference the memo blocks. The position of the block in the memo file is determined by multiplying the block number by the block size (found in the memo file header record). All memo blocks start at even block boundary addresses. A memo block can occupy more than one consecutive block.
Memo Header Record
Byte offset | Description |
00 – 03 | Location of next free block1 |
04 – 05 | Unused |
06 – 07 | Block size (bytes per block)1 |
08 – 511 | Unused |
1 Integers stored with the most significant byte first.
Memo Block Header and Memo Text
Byte offset | Description |
00 – 03 | Block signature 1 (indicates the type of data in the block) 0 – picture (picture field type) 1 – text (memo field type) |
04 – 07 | Length 1 of memo (in bytes) |
08 – n | Memo text (n = length) |
1 Integers stored with the most significant byte first.