Load Address Block 3 | – | 16 bits absolute address |
Length of Block 3 | – | 7 bits sector count + flag |
Load Address Block 4 | – | 16 bits absolute address |
Length of Block 4 | – | 7 bits sector count + flag |
This structure takes 16 bytes and allows each section to be broken into up to 4 blocks
of up to 16K (128 CP/M records). The length bytes have a flag in bit 7 to indicate
the end of the section. Since I used one logical sector to contain the entire table, I
could have up to 8 sections, but it would obviously be possible to use more sectors
and have more sections. To make life simple I wrote a short program to combine
standard object files (.COM files) to make up an overlay file with addresses
provided from the console, although a submit file with XSUB can be used to control
it.
The machine code to operate this system takes about 70 bytes once the file is open
and the reference table is loaded. I have included a listing of it. It will not allow
returns to the caller since this was not necessary in my application but it should be
easy to do. Also it does not keep a record of the last section loaded but this should
not be too difficult either. Naturally it uses random access file handling.