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 DOS is the Program Segment Prefix (PSP), a 256-byte structure, which, however, is by default located at offset 0 in the program's load segment (rather than in segment 0) immediately preceding a loaded program.
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
- "Tim Olmstead Memorial CP/M library". Archived from the original on 2017-08-20. Retrieved 2017-08-20. - in particular:
- "CP/M 3 Programmers' Manual" (PDF). Archived (PDF) from the original on 2017-08-20. Retrieved 2017-08-20.
- "CP/M-86 System Guide" (PDF). Archived (PDF) from the original on 2017-08-20. Retrieved 2017-08-20.
External links
- "CP/M Internals". Archived from the original on 2017-08-20. Retrieved 2017-08-20. - In-depth description of CP/M zero page functions
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.