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 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