# ZCCP Documentation, Version 1.0

### by Randy Winchester

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.