Function: To save an image of the TPA to disk starting at 100H.
Forms: SAVE <nm> <ufn> Save n decimal pages to disk.
SAVE <mH <ufn> Save n hexadecimal pages to disk.
SAVE <m <ufnm> 8 Save n decimal sectors to disk.
SAVE <nm>H <ufn> 5 Save 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.
Command : USER
Function: To change the current USER number.
Forms: USER <user number> Change to new decimal USER number.
USER <user number>H Change to new hexadecimal USER number.
Function: To temporarily change the default USER number for the command
Forms: DFU <n> Change default to n decimal.
DFU <m>H Change 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.
JUMP Call the routine at 0000H (warm boot).
Function: To ‘CALL’ the routine at address 100H.
Forms: GO <emd. 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,