The following is used by permission and remains copyright Randy Winchester.
===========================================================================

ZCCP Documentation, Version 1.0
by Randy Winchester <randy@mit.edu>

ZCCP Features

This documentation is provided to assist the user in getting a 
ZCCP system up and running.  It is not an exhaustive course on Z- 
System or ZCPR.  The following list details which ZCPR features 
are provided with ZCCP, and which ones aren't.

* ZCPR 3.3 compatibility.  ZCCP can run a wide range of utilities 
  an applications created for ZCPR 3.3 and ZCPR 3.4.

* TCAP.  A Z3T termcap file describing terminal characteristics 
  can be loaded into the system.  Z-System programs make use of the 
  TCAP for output to the screen - a big improvement over the old 
  method of patching individual programs with terminal control 
  codes.  TCAP files are loaded by the ZCCP LOADSEG command.

* Named directories.  Up to 12 user areas can be assigned names.
  Named Directory Registers (*.NDR files) are loaded by the ZCCP
  LOADSEG command.

* Command Search Path.  ZCCP will search for commands along a 
  user defined search path.  Up to six path elements 
  (directories) can be defined.

* Environment block.  Contains TCAP, Named Directory, and Path 
  information.  Also includes a map of active disk drives and 
  other system information.  The environment block can be viewed 
  with the Z-System SHOW utility.

* Flow control.  Conditional processing for batch files.  Relies 
  on Z-System IF.COM for setting the flow state.  Other flow 
  control commands (FI, ELSE, XIF, OR, AND) are resident.

* Multiple commands can be entered on the command line.  The 
  command line buffer will hold up to 225 characters.  Commands 
  should be separated by semicolons.

* Extended Command Processor.  If a command is not a built-in 
  flow command, resident command, or located on disk along the 
  search path, the command line is passed to an extended command 
  processor.  A typical extended command processor is ARUNZ, a 
  sophisticated batch file executor with alias features.  To use 
  a program as an extended command processor, rename it to 
  CMDRUN.COM and place it in the ROOT directory of your boot disk.

* Error handler.  In the event that the extended command 
  processor can't handle a command, control is passed to an error 
  handler.  Error handlers give information about the error 
  (instead of the useless CP/M "?" message) and allow the command 
  line to be edited and reused.

* Resident commands.  The following commands are built in:
    CLS  - clears the screen
    NOTE - text following the NOTE command is treated as a 
           comment.
    FI   - Flow control:  terminate the current IF level
    ELSE - Flow control:  toggle the flow state
    XIF  - Flow control:  exit all pending IF levels
    OR   - Flow control:  OR IF tests to set flow state
    AND  - Flow control:  AND IF tests to set flow state

* Shell stack.  Up to four shell levels can be defined.  Z-System
  provides a choice of several different shells.  Applications such 
  as terminal programs and word processors can also be assigned 
  shell status.

* ZCCP uses the LOADSEG command for direct loading of RSX files 
  that have not been GENCOMed.  Example: LOADSEG SAVE.RSX loads 
  SAVE.RSX.

There are some things that Z3Plus will do that ZCCP won't do.  

- ZCCP does not support a Flow Command Package (FCP).  It relies 
  on the transient IF command.  Other flow commands (FI, ELSE, XIF, 
  OR, AND) are resident in ZCCP.

- A Resident Command Package (RCP) is not implemented.  CLS and 
  NOTE are resident in ZCCP.  All other commands must be loaded 
  from disk.  This isn't as much of a handicap as it might sound 
  if you have a fast RAM drive to store frequently used commands.

- ZCCP can not load type 4 programs (used with ZCPR 3.4).  It 
  loads standard COM files at 100H, and type 3 programs that load 
  in high memory.  Most type 4 programs have type 3 or COM 
  equivalents, so this should not be a problem.

- ZCCP can not reexecute loaded programs.  This trick is usually 
  performed on Z-Systems with a GO command that jumps to 100H.  
  Since ZCCP also loads at 100H, a GO command would only restart 
  ZCCP.

ZCCP Files

Three files are included in ZCCP.ARK:

 File name      Size  Description
 ============   ====  ==========================================
 CCP     .COM   3k    ZCCP replacement for CCP.COM
 LOADSEG .COM   3k    Loader for named directories and termcaps
 ZINSTAL .ZPM   1k    Segment containing environment information

Getting Started - Preparing a Boot Disk

Format a system boot disk using the same proceedure that you normally
would.

Copy the files from ZCCP.ARK to user area 0 of the newly 
formatted disk.

Copy CPM+.SYS (some systems may use a slightly different name for this
file) to user 0 of the boot disk.  The CPM+.SYS must include the BDOS
segments from ZPM3.  Use the ZPM3 MAKEDOS utility to overlay your
system file with ZPM3.  (Commodore 128 users must generate a new
system using the ZPM3 BDOS segments.  The MAKEDOS utility does not
work properly on a C128.)

Locate a copy of a Z-System alias utility.  A good one is 
SALIAS16, although others should work also.  Copy it to user 0 of 
the boot disk.

At this point, reboot the system with the new system disk.  After the
system boots, you won't be able to do much with it.  The only resident
commands are CLS and NOTE, and ZCCP can only locate commands if they
are prefixed with the drive and user number.

The next step is to create a startup alias.  When ZCCP boots, it 
looks for a file named STARTZPM.COM and executes commands from 
it.  STARTZPM.COM is created with a ZCPR alias utility.  Here is 
a listing of a STARTZPM.COM created with SALIAS:

     =============================================================

     A0>SALIAS STARTZPM

     15:                ; Logs the ROOT directory (A15) on the 
                        ; current drive.

     LOADSEG NAMES.NDR TCAP.Z3T
                        ; LOADSEG loads the Named Directory Register
                        ; and TCAP.
                        ; Directories can now be referred to by 
                        ; name, as in the next command:

     SETPTH10 /C COMMANDS RAM2 WORK $$$$ $$0 ROOT
                        ; SETPTH sets the command search path.  
                        ; The /c option first clears any existing path.
                        ; Directories are then listed in the 
                        ; order searched.  In this case, COMMANDS 
                        ; is a 64K ramdisk (drive/user F0) where
                        ; frequently used commands are stored.  RAM2 is 
                        ; an additional RAM disk. (drive/user M0).
			; WORK is a standard 3.5" floppy disk
                        ; drive, (drive/user C15) where some 700K 
                        ; of utilities and applications are 
                        ; located.  $$$$ refers to the currently 
                        ; logged drive and user area.  $$0 refers 
                        ; to user area 0 of the current drive.  
                        ; The ROOT directory is on drive A, user 
                        ; 15, where startup utilities and system 
                        ; files can be found.

     AUTOTOG ON         ; Turns on keyboard control of ZPM3 Auto 
                        ; Command Prompting.  Auto Command 
                        ; Prompting is toggled by entering CTRL-Q.

     COMMANDS:          ; Logs the commands directory.

     IF ~EXIST CP.*     ; Test to see if commands are loaded.  
                        ; This line reads:  "If the CP command 
                        ; does not exist . . ." and sets the flow 
                        ; state to true if the file doesn't exist.
        C1:CP C1:*.* F0:
                        ; ". . . copy all of the commands in 
                        ; drive/user C1 to the commands (F0) 
                        ; directory . . ."
     FI                 ; ". . . end if."

     ROOT:              ; Log the root directory (A15).

     CP C:ZF*.* M0:     ; Copy ZFILER.COM and ZFILER.CMD to the 
                        ; REU2 directory (M0).

     VERROR             ; Install VERROR error handler.

     DATE S             ; Set the system time and date.

     ZF                 ; Invoke ZFILER as a shell.

     =============================================================

Of course, your STARTZPM alias will vary depending on the 
hardware you need to support, your software preferences, and your 
work habits.  This alias is close to the upward size limit that 
ZCCP can handle based on the capacity of the multiple command 
buffer.  At the very least, I recommend an alias that will set up 
a search path and load a TCAP.

Actually, I put the cart before the horse in this example.  If 
you try to reboot your system with the LOADSEG command as listed, 
you'll notice that you don't have a NAMES.NDR file.  There isn't 
one distributed with ZCCP either.  Z-System utilities won't let 
you edit the NDR either, since the buffer for it hasn't been 
created yet.  This turned out to be a nasty chicken/egg 
situation, hopefully solved by the inclusion of a sample 
NAMES.NDR file containing simply A0:SYSTEM and A15:ROOT.

At this point, you should have a mostly functioning ZCCP system disk.
Reboot the system with the new disk.  You might want to correct any
problems with it or tweak it to perfection before moving on.

List of Z-System Utilities for ZCCP

Some of the following utilities are essential, others are nice to
have.  The version numbers listed are the latest known versions at the
time that this documentation was written.  Utilities can be found on
ZNode BBSs, and some of them are available on Internet anonymous ftp
sites (Simtel20 or its mirror sites).

SALIAS16  - already mentioned in the example above.  SALIAS (or 
one of the other ZCPR alias utilities) are essential.

SD138B    - excellent DIRectory utility.  SD offers many 
different types of sorts, list formats, etc., displays date 
stamps, and supports output to a file.

MKDIR32   - utility for manipulating directory names and Named 
Directory Register (*.NDR) files. 

ERASE57   - erases files.

ZFILER10  - a file management shell that can launch applications.  
It is programmable in that it can execute user defined macros 
from a file.  Multiple files can be "tagged" and operated on by 
other programs.  ZFILER is an excellent program, sort of a GUI 
desktop without the slow graphics.

SETPTH10  - used to set the command search path.  Essential!

VERROR17  - error handler that displays the command line for 
reediting.  VERROR17 is the only error handler that I found that 
works with ZCCP.

ZEX50     - Z-System EXecutive is a powerful batch file processor 
that replaces the CP/M SUBMIT command.

LBRHLP22  - Z-System Help utility displays help files.  Help 
files can be crunched (*.HZP), and/or loaded from a HELP.LBR 
library.

ARUNZ09   - runs an alias script from a text file.  ARUNZ is 
frequently used as an extended command processor.  To use ARUNZ 
(or any other executable utility) as an extended command 
processor, rename it to CMDRUN.COM.

VLU102    - Video Library Utility views or extracts files from 
libraries.  Versions of VLU above 1.02 do not work reliably with 
ZPM3/ZCCP.

Z33IF16   - is the IF.COM discussed in the section on flow control.

SHOW14    - displays an immense amount of information about your 
Z-System.  SHOW also includes a memory patching function.

ZCNFG24   - configures Z-System program options.  Most Z-System 
programs are distributed with a configuration (*.CFG) file that 
produces a menu of configuration options when run with ZCNFG.

ZP17      - Z-System Patch utility edits files, disk sectors, or 
memory, and includes a built-in RPN calculator and number base 
converter.

ZMAN-NEW  - This is a manual describing Z-System features in 
depth.  It is based on earlier versions of Z-System, and is a 
little dated, but otherwise contains information that you won't 
find anywhere else.  Not everything in the manual applies to 
operation of ZPM3/ZCCP, but with the documentation presented 
here, you should be able to get a good idea of what works and 
what doesn't.

A TCAP termcap file for your system - This file is essential if you
want to use any ZCPR programs that need a TCAP.

ZCCP Technical Notes

ZCCP is a replacement CCP that implements ZCPR 3.3.  It loads at 
100H and is stored in the bank 0 CCP buffer for fast reloading as 
does the standard CCP.  By contrast, Z3Plus loads into high 
memory and can be overwritten by transient commands, requiring 
reloading Z3Plus from disk.  Because ZCCP replaces the CCP, a 
ZCCP system has more TPA (transient program area) than a Z3Plus 
system.  A ZCCP system on the C128 has more than 57K of TPA, 
almost the same amount as a standard C128 CP/M system.

This should be enough information to get started with ZPM3/ZCCP.  
Set up a boot disk, experiment with some Z-System utilities, read 
ZMAN-NEW, and get some applications running.  You'll agree that 
ZPM3/ZCCP breaths new life into CP/M.

*******************************************************************************
*  Randy Winchester  *  randy@mit.edu  *  PO Box 1074, Cambridge, MA  02142   *
*******************************************************************************
