.bp odd .fi .he .in 0 .cs 5 .pn 1 .cs 5 .mt 5 .mb 6 .pl 66 .ll 65 .po 10 .hm 2 .fm 2 .ft All Information Presented Here is Proprietary to Digital Research .ce 2 .tc 1 Introduction to CP/M-8000 .sh Section 1 .sp .sh Introduction to CP/M-8000 .sp 2 .pp 5 CP/M-8000 contains most of the facilities of other CP/M systems with additional features required to address up to sixteen megabytes of main memory available on the Z8000 microprocessor. The CP/M-8000 file system is upwardly compatible with CP/M-80 Version 2.2 and CP/M-86 Version 1.1. The CP/M-8000 file structure supports a maximum of sixteen drives with up to 512 megabytes on each drive and a maximum file size of 32 megabytes. .ix file structure .ix CP/M-8000 architecture .ix CP/M-8000 operating system .ix CPM.SYS file .tc 1.1 CP/M-8000 System Architecture .he CP/M-8000 Programmer's Guide 1.1 CP/M-8000 Architecture .sp 2 .sh 1.1 CP/M-8000 Architecture .pp The CP/M-8000 operating system resides in the file CPM.SYS on the system disk. A cold start loader resides on the first two tracks of the system disk and loads the CPM.SYS file into memory during a cold start. The CPM.SYS file contains the three program modules described in Table 1-1. ====================== BOOT DETAILS TO BE FILLED IN LATER =============== .sp 2 .ce .sh Table 1-1. Program Modules in the CPM.SYS File .sp .nf .in 5 Module Mnemonic Description .sp .qs .fi .ll 60 .in 43 .ti -38 Console Command Processor CCP User interface that parses the user command line. .sp .ti -38 Basic Disk Operating System BDOS Provides functions that access the file system. .sp .ti -38 Basic I/O System BIOS Provides functions that interface peripheral device drivers for I/O processing. .in 0 .ix cold start loader .ix CPM.SYS .ix Console Command Processor .ix CCP .ix Basic Disk Operating System .ix BDOS .ix Basic I/O System .ix BIOS .ix exception vectors .sp .pp .ll 65 The sizes of the CCP and BDOS modules are fixed for a given release of CP/M-8000. The BIOS custom module, normally supplied by the computer manufacturer or software distributor depends on the system configuration, which varies with the implementation. Therefore, the size of the BIOS also varies with the implementation. .pp The CP/M-8000 operating system can be loaded to execute in any memory segment in the Z8000's memory space. All CP/M-8000 modules remain resident in memory. The CCP cannot be used as a data area subsequent to transient program load. .sp 2 .tc 1.2 Transient Programs .he CP/M-8000 Programmer's Guide 1.2 Transient Programs .sh 1.2 Transient Programs .qs .ix transient programs .pp After CP/M-8000 is loaded in memory, the remaining segments of address space that are not occupied by the CP/M-8000 operating system are called the Transient Program Area (TPA). CP/M-8000 loads executable files, called command files, from disk to the TPA. These command files are also called transient commands or transient programs because they temporarily reside in memory, rather than being permanently resident in memory and configured in CP/M-8000. The format of a command file is described in Section 3. .ix transient program .ix command file .pp Non-segmented transient programs may be run either in a single TPA segment, or in two segments: one for instructions and one for data (called "split I and D" spaces). Segmented programs may use any segments of the TPA. .ix segmented programs .ix non-segmented programs. .tc 1.3 File System Access .he CP/M-8000 Programmer's Guide 1.3 File System Access .sp 2 .sh 1.3 File System Access .qs .ix file system access .pp Programs do not specify absolute locations or default variables when accessing CP/M-8000. Instead, programs invoke BDOS and BIOS functions. Section 4 describes the BDOS functions in detail. Appendix A lists the BIOS calls. Refer to the \c .ul CP/M-8000 Operating System System Guide \c .qu for detailed descriptions of the BIOS functions. In addition to these functions, CP/M-8000 decreases dependence on absolute addresses by maintaining a base page in the TPA for each transient program in memory. The base page contains initial values for the File Control Block (FCB) and the Direct Memory Access (DMA) buffer. For details on the base page and loading transient programs, refer to Section 2. .tc 1.4 Programming Tools and Commands .he CP/M-8000 Programmer's Guide 1.4 Programming Tools and Commands .sp 2 .sh 1.4 Programming Tools and Commands .qs .ix programming tools and commands .pp CP/M-8000 contains a full set of programming tools that include an assembler (AS8K), linker/relocator, (LD8K), Archive Utility (AR8K), hex/ascii DUMP Utility, and object-file dump utility (XDUMP). Each of these tools is discussed in the latter part of this guide. Table 1-3 lists the commands that invoke these tools. Table 1-2 describes command conventions used in this manual. Tables 1-4 and 1-5 list other commands supported by CP/M-8000 and the manual in which they are documented. .ix operating system, access .ix base page .ix access, operating system .sp 2 .ce .sh Table 1-2. CP/M-8000 Programmer's Guide Conventions .sp .nf Convention Meaning .sp .fi .ll 60 .in 23 .ti -18 [] Square brackets in a command line enclose optional parameters. .sp .ti -18 nH The capital letter H follows numeric values that are represented in hexadecimal notation. .sp .ti -18 numeric values Unless otherwise stated, numeric values are represented in decimal notation. .sp .ti -18 (n) BDOS function numbers are enclosed in parentheses when they appear in text. .bp .in 0 .ll 65 .ce .sh Table 1-2. (continued) .sp .nf Convention Meaning .sp .fi .ll 60 .in 23 .ti -18 . .ti -18 . or ... .ti -18 . A vertical or horizontal elipsis indicates missing elements in a series unless noted otherwise. .sp .ti -18 RETURN The word RETURN refers to the RETURN key on the keyboard of your console. Unless otherwise noted, to invoke a command, you must press RETURN after you enter a command line from your console. .sp .ti -18 CTRL-X The mnemonic CTRL-X instructs you to press the key labeled CTRL while you press another key indicated by the variable X. For example, CTRL-C instructs you to press the CTRL key while you simultaneously press the key lettered C. .fi .in 0 .ll 65 .sp .pp Table 1-3 describes commands used in the \c .ul CP/M-8000 Operating System Programmer's Guide. .qu .sp 2 .sh .ce Table 1-3. CP/M-8000 Commands (Programmer's Guide) .sp .ix CP/M-8000 commands .ll 60 .in 21 .ti -16 Command Description .sp .qs .ti -15 AR8K Invokes the Archive Utility (AR8K). AR8K creates a library and/or deletes, adds, or extracts object modules from an existing library, such as the C Run-time Library. .sp .ix AR8K .ix archive utility (AR8K) .ti -15 AS8K Invokes the Assembler (AS8K). .sp .ix AS8K .ix Assembler (AS8K) .ti -15 DDT Invokes DDT-8000, the CP/M-8000 debugger. .sp .ix DDT .ix DDT-8000 .ti -15 DUMP Invokes the DUMP Utility that prints the contents of a file in hexadecimal and ASCII notation. .sp .ix DUMP .ix DUMP utility .ti -15 LD8K Invokes the Linker. .sp .ix LD8K .ti -15 XDUMP Invokes the XDUMP Utility that prints the header, contents, and symbol table of an object or command file. .sp .ix XDUMP .ix XDUMP utility .bp .in 0 .ll 65 .sh .ce Table 1-3. (continued) .sp .ix CP/M-8000 commands .ll 60 .in 21 .ti -16 Command Description .sp .qs .fi .sp .pp Table 1-4 describes commands used in the \c .ul CP/M-8000 Operating System User's Guide. .qu .sp 2 .ce .sh Table 1-4. CP/M-8000 Commands (User's Guide) .sp .in 22 .ll 60 .ti -16 Command Description .qs .sp .ti -15 DIR* Displays the directory of files on a specified disk. .sp .ix DIR* .ti -15 DIRS* Displays the directory of system files on a specified disk. .sp .ix DIRS* .ti -15 ED Invokes the CP/M-8000 text editor. .sp .ix CP/M-8000 text editor .ti -15 ERA* Erases one or more specified files. .sp .ix ERA* .ti -15 PIP Copies, combines, and transfers specified files between peripheral devices. .sp .ix PIP .ti -15 REN* Renames an existing file to the new name specified in the command line. .sp .ix REN* .ti -15 SUBMIT* Executes a file of CP/M commands. .sp .ix SUBMIT* .ti -15 TYPE* Displays the contents of an ASCII file on the console. .mb 5 .fm 1 .sp .ix TYPE* .ti -15 USER* Displays or changes the current user number. .ix USER* .sp .in 0 .ll 65 .fi .pp 5 * CP/M-8000 built-in commands .bp .mb 6 .fm 2 .pp Table 1-5 describes commands used in the \c .ul C Programming Guide for CP/M-8000. .sp 2 .ce .sh Table 1-5. CP/M-8000 Commands (C Manual) .sp .in 22 .ti -17 .ll 60 .nf Command Description .fi .sp .ti -15 ========= C COMMANDS NEED WRITEUP =========== C Invokes a submit file that invokes the C compiler for compiling CP/M-8000 C source files. .sp .fi .tc 1.5 CP/M-8000 File Specification .he CP/M-8000 Programmer's Guide 1.5 File Specification .sh 1.5 CP/M-8000 File Specification .qs .ix CP/M-8000 file specification .pp The CP/M-8000 file specification is compatible with other CP/M systems. The format contains three fields: a 1-character drive select code (d), a 1- through 8-character filename (f...f), and a 1- through 3-character filetype (ttt) field as shown below. .nf .sp Format d:ffffffff.ttt .sp Example B:MYRAH.DAT .pp .ix drive select code .ix filetype fields .fi The drive select code and filetype fields are optional. A colon (:) delimits the drive select field. A period (.) delimits the filetype field. These delimiters are required only when the fields they delimit are specified. .pp Values for the drive select code range from A through P when the BIOS implementation supports 16 drives, the maximum number allowed. The range for the drive code is dependent on the BIOS implementation. Drives are labeled A through P to correspond to the 1 through 16 drives supported by CP/M-8000. However, not all BIOS implementations support the full range. .pp The characters in the filename and filetype fields cannot contain delimiters (the colon and period) and must be upper-case for the CCP to parse the file specification. The CCP cannot access a file that contains delimiters or lower-case characters. A command line and its file specifications, if any, that are entered at the CCP level are automatically put in upper-case internally before the CCP parses them. .ix delimiter characters .pp However, not all commands and file specifications are entered at the CCP level. CP/M-8000 does not prevent you from including delimiters or lower-case characters in file specifications that are created or referenced by functions that bypass the CCP. For example, the BDOS Make File Function (22) allows you to create a file specification that includes delimiters and lower-case characters, although the CCP cannot parse and access such a file. .pp In addition to the delimiter characters already mentioned, you should avoid using the delimiter characters in Table 1-6 in the file specification of a file you create. Several CP/M-8000 built-in commands and utilities have special uses for these characters. .sp 2 .ce .sh Table 1-6. Delimiter Characters .sp 2 .nf Character Description .sp .qs [] square brackets .br () parentheses .br <> angle brackets .br = equals sign .br * asterisk .br & ampersand .br , comma .br ! exclamation point .br | bar .br ? question mark .br / slash .br $ dollar sign .br . period .br : colon .br ; semicolon .br + plus sign .br - minus sign .sp 2 .fi .he CP/M-8000 Programmer's Guide 1.6 Wildcards .sp 2 .tc 1.6 Wildcards .sh 1.6 Wildcards .qs .ix wildcards .pp CP/M-8000 supports two wildcards, the question mark (?) and the asterisk (*). Several utilities and BDOS functions allow you to specify wildcards in a file specification to perform the operation or function on one or more files. However, BDOS functions support only the ? wildcard. .pp The ? wildcard matches any character in the character position occupied by this wildcard. For example, the file specification M?RAH.DAT indicates the second letter of the filename can be any alphanumeric character if the remainder of file specification matches. Thus, the ? wildcard matches exactly one character position. .pp The * wildcard matches one or more characters in the field or remainder of a field that this wildcard occupies. CP/M-8000 internally pads the field or remaining portion of the field occupied by the * wildcard with ? wildcards before searching for a match. For example, CP/M-8000 converts the file B*.DAT to B???????.DAT before searching for a matching file specification. Thus, any file that starts with the letter B and has a filetype of DAT matches this file specification. .pp For details on wildcard support by a specific BDOS function, refer to the description of the function in Section 4 of this guide. For additional details on these wildcards and support by CP/M-8000 utilities, refer to the \c .ul CP/M-8000 Operating System User's Guide. .qu .sp 2 .he CP/M-8000 Programmer's Guide 1.7 CP/M-8000 Terminology .tc 1.7 CP/M-8000 Terminology .sh 1.7 CP/M-8000 Terminology .qs .pp Table 1-7 lists the terminology used throughout this guide to describe CP/M-8000 values and program components. .sp 2 .ce .sh Table 1-7. CP/M-8000 Terminology .sp .ix CP/M-8000 terminology .in 5 .nf Term Meaning .qs .fi .ll 60 .in 28 .ti -23 .sp Nibble 4-bit value .sp .ix nibble .ti -23 Byte 8-bit value .sp .ix byte .ti -23 Word 16-bit value .sp .ix word .ti -23 Longword 32-bit value .sp .ix longword .ti -23 Address 32-bit value that specifies a location in storage .sp .ix address .ti -23 Offset A fixed displacement defined by the user to reference a location in storage, other data source, or destination. .sp .ix offset .ti -23 Text Segment The section of a program that contains the program instructions. .sp .ix text segment .ti -23 Data Segment The section of a program that contains initialized data. .sp .ix data segment .ti -23 Block Storage The section of a program that .sp 0 Segment (bss) contains uninitialized data. .ix block storage segment (bss) .ix bss .ix segment, block .ix segment, text .ix segment, data ===================== POSSIBLY ADD DEFS FOR SEGMENTED ADDRESSES ========== .fi .ll 65 .in 0 .sp 2 .ce End of Section 1 .bp .he CP/M-8000 Programmer's Guide End of Section 1 .sp 50 .nx two