Date : Fri, 31 Dec 1982 22:23:08-EST (Fri)
From : Rick Conn <rconn@Brl.arpa>
Subject: ZCPR2 Summary
The following is a summary of some of the major features
of ZCPR2. It is not complete, and I tried to make it as brief as
possible. Its purpose is to give you some idea of what ZCPR2
does and, if you are still interested, the Concepts Manual goes
into a complete description and much more detail with examples.
Enjoy!
Rick
---- Summary Follows ----
A Brief Overview of ZCPR2 Features and Facilities 1
Overview of ZCPR2
by Richard Conn
The Z80-based Command Processor Replacement Version 2
(ZCPR2) is a replacement for the CP/M Console Command Processor
(CCP) which creates an extremely capable and flexible environ-
ment, placing a totally new interface on the user's CP/M system.
The primary purpose of ZCPR2 is to improve the user's product-
ivity by giving him an environment which is much more responsive
to his needs and configurable to his specific desires than CP/M
2.2 while still remaining CP/M 2.2 compatable and allowing him to
run most, if not all, of his CP/M software with little or no
modification.
ZCPR2 provides an interactive interface to the user's micro-
computer which is significantly extended over that interface
provided by the CP/M 2.2 CCP. The user is invited to refer to
the Rationale Manual for a detailed comparison between the CP/M
2.2 CCP and ZCPR2. A working knowledge of CP/M 2.2 is assumed
for the following discussion. Also, the following discussion
pertains to ZCPR2 systems which are configured in the recommended
way (see the Installation Manual). There are over 4,000,000 ways
(conceivably) that one may configure a ZCPR2 system for his own
uses, and, as a general rule, the features described below may be
turned on or off as the system manager desires.
There are currently four documents planned to accompany
ZCPR2. These documents and their functions are:
1) Installation Manual -- How to Install ZCPR2
2) Concepts Manual (this teaser was derived from it) --
a tutorial on the basic concepts associated with
using ZCPR2, the ZCPR2 System of Programs, and
the ZCPR2 environments
3) Rationale -- why things were done the way they
were done under ZCPR2
4) User's Guide -- how to use ZCPR2, including details
on all of the ZCPR2 commands in the ZCPR2 System
1. Directories under ZCPR2
A directory under ZCPR2 is a user area on a disk, and it is
identified by the combination of the disk letter and the number
of the user area (like A10 or B7) or by a mnemonic name (like
JEFF or ROOT). The directory is a logical concept, and there is
only one physical file directory (which keeps track of all the
files) on each logical disk.
A Brief Overview of ZCPR2 Features and Facilities 2
The disk/user way of identifying a directory (called the DU
form from here on) is standard to the ZCPR2-resident commands and
the ZCPR2-specific utilities. In all cases, these commands will
permit use of the DU: form wherever the simpler D: form was used
under CP/M 2.2, and the D part of the DU: form is optional. For
instance, the following ZCPR2-resident commands are valid exam-
ples which illustrate the utility of this extended directory
specification:
A>DIR A7:
A>DIR A:
A>DIR 7:
A>ERA B22:MYFILE.TXT
A>TYPE C31:README.TXT
A>LIST 12:LOCAL.MSG
A>SAVE 2DH C12:SYSTEM.CPM
Hence, the user can "sit" in any directory on any disk and
readily work with files in any other directory on any disk.
Likewise, where the user used to be able to prefix a COM file
with a disk letter in order to temporarily log into another disk
and extract that file from it, the ZCPR2 user can prefix a COM
file with a DU form:
A>7:MYPROG
A>C31:RUNIT
A>B:MYGO
Finally, the third logical extension of this DU form is to
allow the user to employ it to "log into" a directory, like he
used the D: form before to simply change disks and the "USER n"
command to change user areas:
A>B7:
B7>12:
B12>C:
C12>0:
C>
As a side note, because of the flexibility of the DU form,
the USER command is no longer necessary and is not available
under ZCPR2 unless a programmer implements it as a transient.
ZCPR2 is a replacement for the CP/M 2.2 CCP, but it is only
a part of the ZCPR2 SYSTEM. The ZCPR2 System is a collection of
programs consisting of ZCPR2 itself and a series of utilities
designed to augment the capabilities of ZCPR2. All of these
utilities respond to the ZCPR2 DU form, just like the ZCPR2-
resident commands, while the conventional CP/M utilities do not.
For example, the following commands show examples of some of the
ZCPR2 utilities available in the ZCPR2 distribution:
A Brief Overview of ZCPR2 Features and Facilities 3
A>XDIR B7:
A>ERASE C4:FILE1.TXT,B31:FILE2.TXT,FILE3.TXT
A>RENAME B12:*.BAS=*.BAK,14:MYFILE.TXT=HISFILE.TXT
A>MCOPY C22:=A11:*.*
These ZCPR2 utilities, however, support a second form of
directory specification as well. This is the named directory
specification, called the DIR form from now on. The DIR form is
a logical association between a mnemonic name and a disk/user
area. For example, the directory name of ROOT may be assigned to
mean A0, JEFF to mean C4, BACKUP to mean C0, etc. All of the
ZCPR2 utilities (by and large) recognize this form as well; the
following are examples:
A>XDIR WORK1:*.ASM
A>ERASE TEXT1:FILE1.TXT,TEXT2:FILE2.TXT,FILE3.TXT
A>RENAME JEFF:*.BAS=*.BAK
A>MCOPY BACKUP:=*.*
With the named directory environment fully implemented, the
user's ZCPR2 system can be configured in a number of different
ways beyond even the 4,000,000+ basic ways ZCPR2 can be config-
ured. In particular, a directory tree structure can be set up,
similar to the UNIX concept but much more flexible. For example,
the following environment is one such working environment which
can be created under ZCPR2:
----------------- ROOT -----------------------
| / \ |
ROBERT JEFF LINDA BOSS
| / | \ / | | \ | ||
HARDWORK JA CB JC LA CB LC LD WATCHJ |WATCHL
/ | | WATCHR
GAMES SCHOOL GAMES
Sample ZCPR2 Named Directory Structure
2. ZCPR2 Resident Commands
Like the CP/M 2.2 CCP, ZCPR2 contains some commands within
itself. It contains all of the CCP commands (except USER, which
isn't needed anymore) and a few more, but all of the ZCPR2 resi-
dent commands are different with logical extensions to the CCP
commands. We have already seen the DU form, which can be used
with any ZCPR2 resident command. Note that the DU form is a
logical extension of the D: prefix under CP/M 2.2.
The following is a comparison of the various resident com-
mand forms under the CP/M 2.2 CCP and ZCPR2:
A Brief Overview of ZCPR2 Features and Facilities 4
Comparison of ZCPR2 and CP/M 2.2 CCP
Resident Commands
Function ZCPR2 Command CCP Command
Display $DIR File Names DIR DU:afn DIR D:afn
Display $SYS File Names DIR DU:afn S No Equivalent
Display All File Names DIR DU:afn A No Equivalent
Erase Specified Files ERA DU:afn ERA D:afn
Erase with Verify ERA DU:afn V No Equivalent
Rename File REN DU:ufn=ufn2 REN DU:ufn=ufn2
Rename Over Existing File REN DU:ufn=ufn2 No Equivalent
Print File on Console TYPE DU:ufn P TYPE D:ufn
Without Paging
Print File on Console TYPE DU:ufn No Equivalent
With Paging
Print File on Printer LIST DU:ufn No Equivalent
Save Memory into File SAVE n DU:ufn SAVE n D:ufn
Save Memory into File SAVE n DU:ufn No Equivalent
With Overwrite Warning
Save Memory into File SAVE nH DU:ufn No Equivalent
and Specify Size in Hex
Save Memory into File SAVE n DU:ufn S No Equivalent
and Specify Number of or
Blocks SAVE nH DU:ufn S
Load File Anywhere Into GET adr DU:ufn No Equivalent
Memory
Reexecute Last Transient GO params No Equivalent
Without Reloading It
Call Subroutine Anywhere in JUMP adr No Equivalent
Memory
Change Disk D: D:
Change User U: USER n
Change Disk and User at DU: No Equivalent
Same Time
A Brief Overview of ZCPR2 Features and Facilities 5
3. ZCPR2 Standard Transient Commands
All of the CP/M-supplied transient commands will work with
ZCPR2, and ZCPR2 supplies several additional ZCPR2-specific tran-
sients, as indicated in the following tables:
Program Function
------- ---------
CD Log Into Named Directory with Extended Preprocessing
COMPARE Utility to Compare Two Files
CRC Cyclic Redundancy Check Utility
DIFF Utility to List File Differences
DUTIL Disk Utility, based on DU
ECHO Utility to Echo Its Command Line
ERASE File Erase Utility
FINDBAD Bad Block Scanner, based on FINDBD
GENINS Utility to Install Itself and Other Utilities
HELP Online Documentation System
LD Load Named Directory Buffer
LU/LRUNZ Command Library Utility and Extended Command Processor
MCHECK Menu File Syntax Checker
MCOPY File Copy Utility which can replace PIP in many cases
MENU Extended Command PreProcessor designed to create menus
MKDIR Create Named Directory File
PATH Define/Display ZCPR2 Paths
PROTECT Utility to Set File Attributes
PWD Print Current Named Directory Environment
RENAME File Rename Utility
STARTUP Initial Command Line Generator
SUB2 Extended SUBMIT Indirect Command File Facility
XDIR Directory Display and Scan Utility
ZEX Memory-Based Indirect Command File Facility and Monitor
4. Multiple Command Lines
Another major feature of ZCPR2 is the Multiple Command Line.
Unlike CP/M 2.2, ZCPR2 will allow you to specify a sequence of
commands to be executed on one line. Under the recommended
configuration, each command is separated by a semicolon. For
example:
A>B:;DIR A7:*.TXT;DIR C22:*.COM A;C7:;ERA *.COM;DIR
A>1:;TINIT ASM;B7:;WS TEST.TXT;ERA *.BAK;XDIR
A Brief Overview of ZCPR2 Features and Facilities 6
5. Command Processing and Paths
Command processing under CP/M 2.2 is really quite simple:
1) Input and Parse Command Line from User or File
2) Determine if it is a CCP-resident command and
run it if so
3) Determine if there is a COM file in the current
disk/user area and load it and run it if so
4) Print error message if 2 and 3 fail
Command processing under ZCPR2, however, is quite different:
1) Input and Parse Command Line from User or File
2) Determine if it is a ZCPR2-resident command and
run it if so
3) Search along the command search path, logging into
the disks and user areas indicated in the path until
either the bottom of the path is reached or the
desired COM file is found; run program if found
4) Invoke an Extended Command Processor, passing the
Command Line to it
5) Print error message if 2, 3, and 4 fail
As the reader can see, the concept of a path is fundamental
to ZCPR2. In the ZCPR2 vernacular, a Path is a sequence of
directories to be searched for a file. The specification of a
path is as a sequence of DU forms which are extended by the
introduction of the "$" character to indicate a current disk or
current user area. A sample path is:
$$ $0 A$ A0 -- Path From Current Disk/Current User
to Current Disk/User 0 to Disk A/Current User to
Disk A/User 0 (Current Disk/User is the disk/user
area that the user is logged into)
If the user is logged into B7, for instance, then this
symbolic path would be translated into the absolute path of B7 B0
A7 A0.
When ZCPR2 searches for a file, it follows such a path. Two
extremely flexible features about the ZCPR2 design are:
1) the command search path may be redefined dynamically
by the user
2) several ZCPR2 transients use paths also, and these
paths may be the same path used by command search or
they may be unique to each transient