80-Bus News


March–April 1983, Volume 2, Issue 2

Page 16 of 55

Function:To save an image of the TPA to disk starting at 100H.
Forms:SAVE <n> <ufn>Save n decimal pages to disk.
SAVE <n>H <ufn>Save n hexadecimal pages to disk.
SAVE <n> <ufn> SSave n decimal sectors to disk.
SAVE <n>H <ufn> SSave n hexadecimal sectors to disk.

Function:To change the name of a disk file.
Forms:<ufn.new>=<ufn.old>Change the .old name to the .new name.

Function:To change the current USER number.
Forms:USER <user number>Change to new decimal USER number.
USER <user number>HChange to new hexadecimal USER number.

Function:To temporarily change the default USER number for the command hierarchy search.
Forms:DFU <n>Change default to n decimal.
DFU <n>HChange default to n hexadecimal. –

Function:To ‘CALL’ the routine at the specified address.
Forms:JUMP <aaaa> <cmd. parms.> or
JUMP <aaaa>H <cmd. parms.>Call the routine at <aaaa>H.
JUMPCall the routine at 0000H (warm boot).

Function:To ‘CALL’ the routine at address 100H.
Forms:GO <cmd. parms.>Call the routine at 100H.

Function:To load the specified file to the specified address.
Forms:GET <aaaa> <ufn>Load the file to address aaaaH.

So as you can see CCPZ has a lot to offer in the command mode, the GET and SAVE commands are very useful to the machine code programmer.

So how do you fit it, well I acquired my copy from Richard (I think) and it in turn originated from the UK CP/M User’s Group. Four files were supplied, a source file, installation documentation, instructions for use and a complete history/​philosophy commentary. From the documentation it was soon apparent that at least one other file was missing, but fortunately a file called STATUS from ‘you know who’s’ utilities disk proved to be a similar thing. To assemble it I also needed the DRI MAC macro assembler as the macros in the source file precluded the use of my particular favourite the Microsoft Macro 80 assembler. The installation words needed reading twice to understand what it was on about, but once the basic idea was grasped the well documented ‘demonstration run’ was easily understood (except the assembly parameters for DRI MAC which as I didn’t read the manual, I didn’t understand).

The principle is easy, and works on the philosophy of;

“Notice you rarely need to change the size of the CP/M system, hence, you rarely use MOVCPM. Well as you rarely change the system size, it doesn’t really matter if the system size becomes fixed, now does it? So decide on your optimum system size, find out the start and end addresses of of the CCP within your optimum system. Give the CCPZ ORG statement this data and assemble your copy of CCPZ to this size. Having got the CCPZ, use MOVCPM to make a system to your chosen optimum size, but instead of using SYSGEN to put it on the system tracks,

Page 16 of 55