.bp .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 .tc 1 System Overview .sh Section 1 .ce .sp .sh System Overview .sp 2 .he CP/M-8000 Operating System System Guide 1.1 Introduction .tc 1.1 Introduction .sh 1.1 Introduction .qs .pp CP/M-8000 is a single-user, general purpose operating system for microcomputers based on the Zilog Z8000 or equivalent microprocessor chip. It is designed to be adaptable to almost any hardware environment, and can be readily customized for particular hardware systems. .ix Zilog Z8000 .pp CP/M-8000 is equivalent to other CP/M \ \ systems with changes dictated by the Z8000 architecture. In particular, CP/M-8000 supports the very large segmented address space of the Z8000 family. 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 allows files of up to 32 megabytes per file. CP/M-8000 supports from one to sixteen disk drives with as many as 512 megabytes per drive. .ix address space .ix CP/M-8000 file structure .pp The entire CP/M-8000 operating system resides in memory at all times, and is not reloaded at a warm start. CP/M-8000 can be configured to reside in any portion of memory. The remainder of the address space is available for applications programs, and is called the transient program area, TPA. The TPA is assumed to consist of one or more complete (64 Kbyte) memory segments. CP/M-8000 supports both segmented and non-segmented user programs, and supports the splitting of user program and data into separate addressing spaces. .ix TPA .pp Several terms used throughout this manual are defined in Table 1-1. .sp 2 .ce .sh Table 1-1. CP/M-8000 Terms .sp .nf Term Meaning .sp .fi .ll 60 .in 25 .ti -20 nibble 4-bit half-byte .sp .ti -20 byte 8-bit value .sp .ti -20 word 16-bit value .sp .ti -20 longword 32-bit value .sp .ti -20 address 32-bit identifier of a storage location .sp .ti -20 physical address address of a location in real memory .sp .ti -20 logical address address as issued by a program, possibly requiring translation into a physical address. .sp .ti -20 offset a value defining an address in storage; a fixed displacement from some other address .ix nibble .ix byte .ix word .ix longword .ix address .ix physical address .ix logical address .ix offset .sp .ti -20 .bp .ll 60 .ce .in 0 .sh Table 1-1. (continued) .sp 2 Term Meaning .sp .in 25 .ti -20 text segment program section containing machine instructions .sp .ti -20 data segment program section containing initialized data .sp .ti -20 block storage program section containing uninitialized data .ti -20 segment (bss) .sp .ti -20 absolute describes a program which must reside at a fixed memory address. .sp .ti -20 relocatable describes a program which includes relocation information so it can be loaded into memory at any address .ix text segment .ix data segment .ix block storage .ix absolute .ix relocatable .ix CP/M-8000 programming model .ix bss .ix transient program .ix base page .in 0 .ll 65 .sp .pp The CP/M-8000 programming model is described in detail in the \c .ul CP/M-8000 Operating System Programmer's Guide. .qu \ To summarize that model briefly, CP/M-8000 supports four segments within a program: text, data, block storage segment (bss), and stack. When a program is loaded, CP/M-8000 allocates space for all four segments in the TPA, and loads the text and data segments. A transient program may manage free memory using values stored by CP/M-8000 in its base page. .pp If the program is to run in segmented mode, the allocation of program segments to logical address segments must have been done at link time. If the program is to run in non-segmented mode, however, information in the Memory Region Table is used to decide which physical segments to run the program in. If the program is to run with split program and data spaces, two physical segments are required (with the data, bss, and stack in the same physical segment), otherwise only a single physical segment is used. === THIS LEAVES SOMETHING TO BE DESIRED === === CLARITY, FOR EXAMPLE === .bp .nf .ll 60 USER User Interface (CCP) Programming Interface (BDOS) Hardware Interface (BIOS) HARDWARE ENVIRONMENT .sp .ce .sh Figure 1-1. CP/M-8000 Interfaces .qs .ll 65 .in 0 .ce 0 .fi .he CP/M-8000 Operating System System Guide 1.2 CP/M 8000 Organization .cp 6 .sp 2 .tc 1.2. CP/M-8000 Organization .sh 1.2 CP/M-8000 Organization .pp CP/M-8000 comprises three system modules: the Console Command Processor (CCP) the Basic Disk Operating System (BDOS) and the Basic Input/Output System (BIOS). These modules are linked together to form the operating system. They are discussed individually in this section. .ix CCP .ix BDOS .ix BIOS .ix CP/M-8000 , system modules .ix interrupt vector area .he CP/M-8000 System Guide 1.3 Memory Layout .sp 2 .sh .tc 1.3 Memory Layout 1.3 Memory Layout .pp The CP/M-8000 operating system can reside anywhere in memory. The location of CP/M-8000 is defined during system generation. Typically the system occupies a segment which is logically separated from the TPA. .pp The TPA for non-segmented programs consists of one or two 64 Kbyte segments, one for program and one for data. (Some programs expect program and data to be mixed in one segment. The segment in which such programs are run may be the same as or different from the segments for separated program and data.) The TPA for segmented programs consists of up to 128 segments. The mapping from logical addresses (which consist of a 7-bit segment number and a 16-bit offset) into physical addresses is done by system-specific hardware, and the BIOS contains memory management operations to map addresses and copy blocks of memory. === GRAB DISCUSSION FROM ARTICLE??? === .nf .sp 2 .in 10 === NEED MEMORY FIGURE FROM ARTICLE === .sp .sh Figure 1-2. Typical CP/M-8000 Memory Layout .in 0 .sp 2 .fi .tc 1.4 Console Command Processor .sh 1.4 Console Command Processor (CCP) .qs .he CP/M 8000 System Guide 1.4 Console Command Processor .ix CCP .pp The Console Command Processor, (CCP) provides the user interface to CP/M-8000. It uses the BDOS to read user commands and load programs, and provides several built-in user commands. It also provides parsing of command lines entered at the console. .ix user interface .ix built-in user commands .ix parsing, command lines .bp .tc Basic Disk Operating System (BDOS) .sh 1.5 Basic Disk Operating System (BDOS) .he CP/M 8000-System Guide 1.5 Basic Disk Operating System .pp The Basic Disk Operating System (BDOS) provides operating system services to applications programs and to the CCP. These include character I/O, disk file I/O (the BDOS disk I/O operations comprise the CP/M-8000 file system), program loading, and others. .ix BDOS .ix applications programs .ix I/O character .ix I/O, disk file .ix BIOS .ix interface, hardware .sp 2 .tc Basic I/O System (BIOS) .sh 1.6 Basic I/O System (BIOS) .he CP/M 8000 Operating System 1.6 Basic I/O System (BIOS) .pp The Basic Input Output System (BIOS) is the interface between CP/M-8000 and its hardware environment. All physical input and output is done by the BIOS. It includes all physical device drivers, tables defining disk characteristics, and other hardware specific functions and tables. The CCP and BDOS do not change for different hardware environments because all hardware dependencies have been concentrated in the BIOS. Each hardware configuration needs its own BIOS. Section 4 describes the BIOS functions in detail. Section 5 discusses how to write a custom BIOS. Sample BIOSes are presented in the appendixes. .sp 2 .tc I/O Devices .sh 1.7 I/O Devices .he CP/M 8000 Operating System 1.7 I/O Devices .pp CP/M-8000 recognizes two basic types of I/O devices: character devices and disk drives. Character devices are serial devices that handle one character at a time. Disk devices handle data in units of 128 bytes, called sectors, and provide a large number of sectors which can be accessed in random, nonsequential, order. In fact, real systems might have devices with characteristics different from these. It is the BIOS's responsibility to resolve differences between the logical device models and the actual physical devices. .ix I/O devices, character .ix I/O divices, disk drives .ix sector .ix divice models, logical .sp 2 .tc 1.7.1 Character Devices .sh 1.7.1 Character Devices .pp Character devices are input output devices which accept or supply streams of ASCII characters to the computer. Typical character devices are consoles, printers, and modems. In CP/M-8000 operations on character devices are done one character at a time. A character input device sends ASCII CTRL-Z (1AH) to indicate end-of-file. .ix character devices .ix ASCII character .ix CTRL-Z (1AH) .ix end-of-file .ix sectors, 128-byte .sp 2 .tc 1.7.2 Character Devices .sh 1.7.2 Character Devices .qs .pp Disk devices are used for file storage. They are organized into sectors and tracks. Each sector contains 128 bytes of data. (If sector sizes other than 128 bytes are used on the actual disk, then the BIOS must do a logical-to-physical mapping to simulate 128-byte sectors to the rest of the system.) All disk I/O in CP/M-8000 is done in one-sector units. A track is a group of sectors. The number of sectors on a track is a constant depending on the particular device. (The characteristics of a disk device are specified in the Disk Parameter Block for that device. See Section 5.) To locate a particular sector, the disk, track number, and sector number must all be specified. .ix disk devices .ix file storage .ix mopping, logical-to-physical .ix track .sp 2 .tc 1.8 System Generation and Cold Start Operation .sh 1.8 System Generation and Cold Start Operation .pp Generating a CP/M-8000 system is done by linking together the CCP, BDOS, and BIOS to create a file called CPM.SYS, which is the operating system. Section 2 discusses how to create CPM.SYS. CPM.SYS is brought into memory by a bootstrap loader which will typically reside on the first two tracks of a system disk. (The term system disk as used here simply means a disk with the file CPM.SYS and a bootstrap loader.) Creation of a bootstrap loader is discussed in Section 3. === WORRY ABOUT THIS === .ix track .ix CCP .ix BDOS .ix BIOS .ix disk .ix bootstrap loader .ix system disk .ix CPM.SYS .ix system generation .ix cold start .sp 2 .ce End of Section 1 .nx two