==============================================================================
[ THE KAY*FOG RBBS | Filename=CPM-CC24.ART | posted 07/05/86 | 205 lines 12k ]

          The CP/M Connection                   Originally published in    
                  by                               Computer Currents       
             Ted Silveira                         5720 Hollis Street     
  (copyright and all rights reserved)            Emeryville, CA  94608     

                                April 8, 1986
                           THE WONDERFUL WORLD OF Z

     If you've spent any time browsing through bulletin boards or 
catalogs of public domain CP/M software, you've run across ZCPR, 
especially its latest incarnation, ZCPR3.  But if you asked someone what 
ZCPR3 was, you probably got a blank look or an enthusiastic rush of 
words trailing off into "You really have to see it. . . ."  

     ZCPR3 is tough to describe because it's not a program but an 
operating environment supported by over 70 utility programs.  I realize 
that "operating environment" doesn't tell you much either, so let me try 
an analogy.  ZCPR3 affects your whole computer the way a key definition 
program like SmartKey affects your word processing program--it makes 
many things easier and makes other things possible that weren't possible 
before.

     The core of ZCPR3 is an enhancement of your normal CP/M 2.2 
operating system (ZCPR3 isn't for CP/M Plus).  When you add ZCPR3, you 
get an operating system that is compatible with CP/M programs (with a 
very few exceptions) but is more powerful and more flexible than CP/M 
ever was.

     The CP/M operating system is divided into three parts: the CCP 
(console command processor), BDOS (basic disk operating system), and 
BIOS (basic input/output system).  The CCP interprets all the commands 
you enter at the A> prompt and also contains CP/M's built-in commands 
DIR, REN, ERA, TYPE, SAVE, and USER.  The BDOS provides basic program 
services--opening and closing files, reading from and writing to the 
disk--so that programs you run don't have to bother with the mechanics 
of these things themselves.  Both the CCP and the BDOS are licensed from 
Digital Research, makers of CP/M, and are the same on all CP/M 2.2 
computers (with the exception of a few oddball systems).

     The BIOS, on the other hand, is customized for (i.e., written 
specifically for) a particular computer (a Kaypro 2X, a Morrow MD3, 
etc.) and is provided by the computer manufacturer rather than by 
Digital Research--that's why it's sometimes called the CBIOS (for custom 
BIOS).  The BIOS translates the general functions handled by the BDOS 
(disk access, file handling, etc.) into detailed instructions to the 
specific computer hardware (select drive A, move the head to track 2, 
read 16 sectors, etc.).  It does the nitty-gritty work of controlling 
your computer.

     In its simplest form, ZCPR3 replaces CP/M's normal CCP, while the 
BDOS and BIOS remain the same.  (ZCPR3 gets its name from the fact that 
it's written in Z80 assembly language--Z80 Command Processor 
Replacement, version 3.)  Because ZCPR3 is written in very efficient Z80 
code, it crams extra features into the space occupied by the normal CCP.

     To really show its stuff, though, ZCPR3 needs some extra space for 
buffer storage and extra functions.  A standard CP/M operating system 
uses about 9K out of your total 64K or RAM (random access memory), 
leaving about 55K for programs to run in.  A thorough ZCPR3 installation 
typically uses an extra 2-4K depending on the number of enhancements you 
choose, so it leaves about 51-53K free for programs.  But some people 
have all-out installations that leave even less.  Most CP/M programs 
will run comfortably with 48K free, and some, like WordStar and dBase 
II, with less.  A few programs, such as large MBasic programs, may 
require more.

[What Do You Get From ZCPR3?]

     If you're going to give up part of your valuable 64K RAM to ZCPR3, 
you ought to get something in return.  And so you do.  In fact, it would 
take me half a dozen columns to cover all the features of ZCPR3, so what 
follows is a brief overview, at best.

     [The Built-in Commands]  Even the most minimal ZCPR3 installation 
enhances the CCP's built-in commands.  For example, the ERA command 
echoes the names of files it has erased and can be set to require 
verification before any erasure.  The TYPE command will pause after 
every 22 lines instead of scrolling continuously.  And if you try to 
rename a file with the name of an already existing file, the REN command 
will ask if you want to delete the old file.

     You also get some new commands.  LIST, for example, sends a file to 
the printer, ECHO sends a message to the screen, and GO reruns the last 
command or program you executed.  

     [The Minimal Extras]  The enhancements possible with ZCPR3 go far 
beyond the CCP commands, though.  With little or no loss in memory 
space, you can get the following features:

     _Search Paths_  With ZCPR3, you can set a search path that your 
computer will follow when trying to execute a command.  My two floppy 
system is set to search drive A for a program if it can't be found on 
the current drive, so if I'm on drive B and want to run WordStar, I can 
just give the command [WS] without worrying about whether WordStar is 
located on drive B or drive A.  

     If you have a hard disk, the search path really comes into its own.  
You could, for example, have the system first look for a program in the 
current drive and user area, then in user area 0 of the current drive, 
then in user area 15 of the current drive, then in user are 0 of drive 
A, and finally in user area 15 of drive A.  And you can change the 
search path while you're working so that you can use one path when you 
do word processing and another when you do spreadsheets.

     _Multiple Command Buffer_  With ZCPR3, you can have a 200 character 
buffer to hold commands.  With such a buffer, you can enter a string of 
commands (separated by semicolons) at the A> prompt and have ZCPR3 run 
the commands off one after the other--an instant batch file.  On my 
system, for example, the command [SK WS1;WS B:LETTERS;TW B:LETTERS] will 
run SmartKey and load the key definition file WS1.DEF, then start up 
WordStar and open the file B:LETTERS, and finally, when I exit WordStar, 
run a spelling check on B:LETTERS using The Word Plus.

     _Named Directories_  Instead of drive and user areas like A0: and 
B14:, you can give your directories names such as WORDSTAR or DBASE.  
Then instead of seeing an A> or A0> prompt, you'll see WORDSTAR> (or 
whatever you've chosen).  And to move to the dBase II section of your 
hard disk, you'll just enter [DBASE:] at the prompt.  Named directories 
aren't important on floppy disks, but they help tremendously on a hard 
disk.

     _Other ZCPR3 Buffers_  ZCPR3 also can have other buffers that allow 
its utilities to get information about the operating environment 
(including terminals and printers), pass messages to each other, and in 
the case of special "shell" programs, reload themselves after executing 
another program.

     The total overhead for all these ZCPR3 buffers is 1K, and it's well 
worth the space, as they add many of the features that make ZCPR3 such a 
nice environment to work in.

     [The Outer Limits]  If you want to go full-dress, you can set aside 
extra buffer space--2K, 4K, 6K, or more--for "dynamically loadable 
packages," program-like segments of code that can be loaded into memory 
to provide extra functions.  Once loaded, these packages stay resident 
until you remove them or cold boot (reset).  You can also change the 
packages, loading a new set of features whenever you like.  These 
packages come in three types:

     _Flow Command Packages_  A flow command package (FCP) contains 
logic commands (such as IF, IF ERROR, IF EXIST, and ELSE) that can 
control the flow of command execution.  For example, you can create a 
command like [IF EXIST b:survival.doc; era a:survival.doc; ELSE; pip 
b:=a:survival.doc;era a:survival.doc;FI].  This command will first check 
to see if SURVIVAL.DOC exists on drive B.  If so, the command will erase 
SURVIVAL.DOC from drive A.  If SURVIVAL.DOC doesn't exist on B, the 
command will copy it from A to B and then erase it from A.  (The FI 
command signals the end of the logical branching.)

     You're not likely to use flow commands directly, but they're 
invaluable in batch files, menus, and other automated operations. 

     _Resident Command Packages_  A resident command package (RCP) can 
contain enhanced versions of CCP commands, but its real value is in new 
commands.  These include GET (to load a program into memory without 
running it) and PEEK (to examine the contents of memory).  The two most 
useful RCP commands are CP, a built-in file copy command, and POKE, 
which lets you patch any part of memory, including a currently loaded 
program.  You can combine POKE with the GET and GO commands to actually 
patch programs like WordStar on the fly.

     _Input/Output Packages_  The input/output packages (IOP) contain 
various input/output device drivers.  At the moment, IOPs are mostly do-
it-yourself projects, but there are three commercial IOPs available from 
Echelon, Inc., of Los Altos.  These are PKEY, a simple key definition 
program, RECORDER, which saves everything crossing your screen into a 
disk file, and BPRINTER, a print spooler.  

[ZCPR3 and the Public Domain]

     Because ZCPR3 is available through bulletin boards and user groups, 
there's a certain amount of confusion about its status.  ZCPR3 is not in 
the public domain and never has been.  It is a copyrighted product 
released free for non-commercial use to individuals.  It is also 
available for a reasonable sum (considering what you're getting and the 
cost of downloading the _megabytes_ that make up the ZCPR3 system) from 
Echelon, Inc., of Los Altos, the official distributor of ZCPR3.  Echelon 
also distributes a number of commercial products meant to work with 
ZCPR3, including the three IOPs mentioned above.

[Coming Next]

     I've given you only the merest glance at ZCPR3.  Next issue, I'll 
give you a better look at ZCPR3's real power, when I cover menus, 
aliases, smart batch files, on-the-fly patching, and other wonders.    
Don't miss it.

Information on ZCPR3 and accompanying programs:

Echelon, Inc.                  Main Echelon/ZCPR3 bulletin board:
855 N. San Antonio Road                                          
Los Altos, CA  94022           Z-Node Central                    
415/948-3820                   415/489-9005                      

------------------------------------------------------------------------------
      Ted Silveira is a freelance writer and contributing editor to several
   computer-oriented publications.  He appreciates suggestions or feedback
   and can be reached through the KAY*FOG RBBS (415)285-2687 and CompuServe
   (72135,1447) or by mail to 2756 Mattison Lane, Santa Cruz, CA 95065.

-------------------------  End of CPM-CC24.ART Text  -------------------------