80-Bus News


March–April 1983, Volume 2, Issue 2

Page 14 of 55

the Gemini GM817 PSU but without the RF shielded case). An ICL Keyedit monitor and a NEC PC-8023B-C printer all mounted in, on, or about the MFI desk complete the ensemble.

The system is now mostly used for word processing (that is writing this stuff) using the just available DISKPEN (GEMPEN) 3, running the radio logbook program (the subject of my discussion on data bases elsewhere in this issue), the development of stock control and financial programs using DBASE II for work, and the odd bit of assembler work as and when I have a bright idea and, of course, find the time.


Now on to CCPZ. It was designed by a whole group of bods from the US CP/M Users’ group and for a committee effort it’s quite good. This is another overlay job and to understand how it is introduced into the system we must consider the three parts of CP/M 2.2. Looking at CP/M it may very conveniently be split into three parts, the first part, the Central Command Processor (the CCP), the Basic Disk Operating System (the BDOS), and the Customized Basic Input Output System (the CBIOS). The CBIOS handles all the necessary interfaces between CP/M and the computer, handling the keyboard, the screen, the printer and the disk primitives. It is CBIOS which Richard replaces with his SYS programs. The BDOS is the heart of CP/M, and is where CP/M makes the decisions as to where it has to store or retrieve things from disk of differing sizes and formats. The BDOS has so far been left strictly alone. The CCP is where all commands from the various inputs are interpreted and the way in which CP/M acts on its own internal instructions, DIR, ERA, etc. The CCP is what is of interest when investigating CCPZ.

The approach adopted by the CCP committee has been to write an entirely new CCP program in Z80 code. As the CCP is located at the beginning of CP/M, and its size and locations are fixed by the way in which CP/M works, and the naughty way in which some programs use it direct, its size is strictly limited to 2K. The difficulty of mucking the MOVCPM.COM relocator about has also meant that a new CCP is not easily patched into MOVCPM.COM, so a different approach towards implementation has been adopted than that used by SYS. As Z80 code is more compact than 8080 code, coupled with the fact that the general opinion is that CP/M is compiled from some efficient high level language and is therefore to some degree wasteful of space, the CCP produced by the committee was originally much shorter than the original. This allowed room for expansion. CCPZ has grown some extra commands, all very useful to the machine code programmer.


So what has CCPZ got to offer over the normal CP/M CCP, well the major feature is not a command at all. It’s primary use is when the CP/M USER areas are in use, and it is the way in which it looks for files. Imagine the situation where I am using drive B: as the default, and I want to edit this piece of text, I forget that drive B: is the default and type:


to get this file in. Well of course PEN is on A: isn’t it, so the result will be the error message:


won’t it? Not so with CCPZ, the process is as follows:

Look on the default for the command file, if found, execute it

Nothing found so select the specified default drive (I specified A: when I assembled CCPZ).

Command file found, so load it.
Reselect the original defaults.
Now execute it.

See how it works, it looks for the command file in an hierarchical fashion, first on the specified or default drive, if not found, then on to the final default drive you specified when assembling CCPZ (you can also specify the

Page 14 of 55