PROS & CONS OF ZCPR3
by Mark Motley, Lakewood/Long Beach, May & June 1987

(A look at ZCPR3)

Probably one of the most popular questions people ask me about
the CP/M Kaypro is, "What are the advantages of having ZCPR
installed?"

This is a very difficult question to answer.  In actuality, ZCPR3
has many features to offer the CP/M user, but the question still
remains:  Will the average CP/M user ever use the full potential
of ZCPR3?

The answer to this question is no.  Not even the advanced user
uses the full potential of ZCPR3.  But, just knowing that the
power is there to do a lot more than normal CP/M is enough.

Now, what kind of advantages does ZCPR3 offer you?  Many, many,
many!  I will discuss them in detail.  Of course, I will probably
omit some nice tricks that veteran ZCPR3 users know, but that
can't be stopped.

1.   Easier drive/user support.  Kaypro 10 users will love this
one.  Instead of typing "B:" then "USER 3" to get to drive B,
user area, the ZCPR3 user just types "B3:".  Saves a ton of time. 
Also, you can get to user area 0 on the currently logged disk by
simply typing a colon (":").

2.   Named directories.  A named directory resembles the MS-DOS
subdirectories, except a tree is not made.  A named directory is
no more than a user area with a name.  You could name drive B,
user 3, "WORDSTAR", for example.  So, if you forgot where your
WordStar stuff was, you could just type "WORDSTAR:" and ZCPR3
would take you there.  It also shows the name of the directory on
the prompt, so instead of "B>" or "B3>" you get "B3:WORDSTAR>". 
Kind of a nice touch.

3.   Path support.  ZCPR3 will allow you to put all your system
utilities (such as FLPYFMT, SYSGEN, NSWP, etc.)  on any
drive/user.  You can then set up a "path" for ZCPR3 to follow if
the command you typed is not found on the current drive/user.  An
example: if you are on B3:, and you want to use NSWP (which is on
AO:), you could set up a path to tell ZCPR3 to look for it on the
current D/U (D/U is short for "driver/user"), then to look for it
on AO:.  You can make long paths, such as "current D/U, user 15
of current drive, user 15 of A: drive, then user 0 of drive A".

4.   Extended resident commands.  Normal CP/M comes with five
resident commands:  ERA, REN, DIR, USER, and SAVE.  With ZCPR3,
you can have these (excluding USER), plus a copy resident, and
PEEK command (which lets you look into memory, much like the D
command of DDT), an excellent POKE command (which allows you to
put bytes in memory), and a REG command (which will be discussed
later).

5.   Multiple commands on a line.  This is a feature of ZCPR3
that dates back to the original ZCPR.  With ZCPR3, you can type
"B3:;DIR"  and it will whisk you to B3: and then do a DIR. 
Actually, you can string many commands on a single line,
separated by a semicolon (":").  This is a VERY nice feature
indeed.

6.   ALIAS support.  This is one of my favorite features.  You
can set up a .COM file which will execute a series of commands. 
Here's an example:  Let's say that you get sick of typing "B3:"
then typing "WS".  So, you set up an ALIAS that will do this for
you.  You fire up ALIAS (a utility that comes with ZCPR3) and
type in "B3:;WS", which is the command line you want to "pass" to
ZCPR3.  You name it WORDSTAR.COM.  So now all you have to do is
type  "WORDSTAR" followed by a RETURN (no quotes) and it will do
those series of commands.  When you combine this with the many
utilities that come with ZCPR3, as well as flow-control commands
(which will be discussed later), ALIAS can actually become a
programming language!!

7.   Terminal definition.  This is another "high-point" of ZCPR3. 
Your specific terminal is defined within your system, which means
ZCPR3 utilities that do things like clear the screen, position
the cursor, turn inverse on/off, etc. will work without
modification.  All that you need to do is run the utility through
an automatic installation program.  It's as easy as typing "Z3INS
SYS.ENV PROGRAM.COM" (SYS.ENV is a ZCPR3 file that describes your
terminal attributes, such as positioning the cursor, inverse
on/off, etc).  This is very advantageous, since "generic"
utilities run with some pizzaz!

8.   Extended utilities.  Because of the intensity of ZCPR3, as
well as the environment descriptor (explained in step 7 above),
ZCPR3 has some excellently written utilities.  There is a sorted
directory program, a program that allows you to make ALIASes
(described in step 6 from last issue), a menu program where you
create your own menu, a NSWP-type program that uses cursor
addressing to give you a little arrow to point at files, and many
more.

9.   Flow Command processing.  This is of interest to ALIAS
users.  Using IF statements, the ALIAS programmer can test for
such things as existence of a file, wheel byte status (on or
off), arguments, and many more.  Without this, ALIAS would not be
near as powerful as it is.

10.  Error routing.  This is more of an "extra" that something
that is actually useful.  When the user inputs an invalid command
(i.e. no COM file exists), ZCPR3 will execute a program called
CMDRUN.COM.  This program can be anything you desire, from a
small file to print "Invalid command" on the screen to a visual
editor where you can re-edit and change your error.  Many times
it is faster to re-enter the command rather than go through the
details of an editor, so this serves little purpose.

11.  I/O drivers.  ZCPR3 will allow you to write some complicated
input/output drivers for various peripherals, but nobody I
personally know of has gotten the thing to work.  It's really not
worth discussing, but I thought I'd mention it.

Well, that about covers ZCPR3.  As you can see, the CCP
replacement has a ton of things to offer.  Would you ever use it? 
It all depends on how deep you wish to go.  My advice to anybody
considering the switch to ZCPR3:  "Go for it!"
