- Zero page (CP/M)
The Zero Page (or Base Page) is a data structure used in
CP/M systems for programs to communicate with the operating system. In 8-bit CP/M versions it is located in the first 256 bytes of memory, hence its name.The equivalent structure in
MS-DOS is theProgram Segment Prefix .In 8-bit CP/M, it has the following structure:
Offset Size Contents -------------------------------------------------------------------- 00-02 Code Exit program (jumps to the
BIOS , and is also used to find BIOS entry points). 03 Byte I/O byte, an optional feature allowing device reassignment in CP/M 2. 04 Byte Current command processor drive (low 4 bits) and user number (high 4 bits). 05-07 Code Jump to CP/M BDOS entry - main system call entry point. This is also the address of the first byte of memory not usable by the program. 08-3A Code 8080 restart/interrupt vectors. 3B-4F Bytes Reserved 50 Byte The drive from which the program was loaded (CP/M 3) 51-52 Word Address of the password for the first FCB (CP/M 3) 53 Byte Length of the password for the first FCB (CP/M 3) 54-55 Word Address of the password for the second FCB (CP/M 3) 56 Byte Length of the password for the second FCB (CP/M 3) 57-5B Bytes Reserved 5C-6B Default FCB 1 6C-7F Default FCB 2 (overwritten if FCB 1 is opened) 80 Byte Number of characters in command tail. 81-FF Bytes Command tail (everything after the program name).In
CP/M-86 , the structure is:Offset Size Contents -------------------------------------------------------------------- 00-02 Bytes Length of code group in bytes 03-04 Word Segment address of code group 05 Byte 8080 model flag - set if program only has one segment 06-08 Bytes Length of data group in bytes 09-0A Word Segment address of data group 0B Byte Reserved 0C-11 Descriptor for extra group - same format as for data 12-17 Descriptor for stack group 18-1D Descriptor for X1 group 1E-23 Descriptor for X2 group 24-29 Descriptor for X3 group 2A-2F Descriptor for X4 group 30-4F Bytes Reserved 50 Byte The drive from which the program was loaded (CP/M 3) 51-52 Word Address of the password for the first FCB (CP/M 3) 53 Byte Length of the password for the first FCB (CP/M 3) 54-55 Word Address of the password for the second FCB (CP/M 3) 56 Byte Length of the password for the second FCB (CP/M 3) 57-5B Bytes Reserved 5C-6B Default FCB 1 6C-7F Default FCB 2 (overwritten if FCB 1 is opened) 80 Byte Number of characters in command tail. 81-FF Bytes Command tail (everything after the program name).
References
[http://www.cpm.z80.de/drilib.html Tim Olmstead Memorial CP/M library] - in particular, the [http://www.cpm.z80.de/manuals/cpm3-pgr.pdf CP/M 3 Programmers' Manual] and the [http://gaby.s100-manuals.com/DRI/CPM-86_System_Guide.pdf CP/M-86 System Guide] .
Wikimedia Foundation. 2010.