> $ ; WILL DISPLAY ONLY $SYS FILES. CAN BE ; AN AMBIGUOUS FILE NAME. THE "$" SPECIFIER CAN BE ; CHANGED BY MODIFYING AN EQUATE. ; 7) CHANGED COMMENT FLAG FROM '*' TO ';' THROUGHOUT ; TO SIMPLIFY ADAPTATION FOR OTHER ASSEMBLERS. ; 8) ADDED TRUE/FALSE IN PLACE OF 0/1 FOR CONDITIONALS TO ; IMPROVE READABILITY ; 9) ADD CONDITIONAL 'SUPRES'. WHEN SET TRUE, USER NUMBER ; REPORTING IS SUPPRESSED FOR USER 0 ONLY, ALL OTHER ; USER NUMBERS ARE UNCHANGED. ; 10) ADDED ADDITIONAL Z80 CODE AND ASSOC. MACROS TO INCREASE ; USABLE CODE SPACE ; 11) ADDED "DFU" COMMAND, WHICH CAN BE USED TO DYNAMICALLY ; CHANGE THE USER NUMBER THAT IS SEARCHED WHEN A .COM ; FILE INVOCATION FAILS IN THE CURRENT USER AREA. NOTE ; THAT THIS REVERTS BACK TO ITS NORMAL VALUE OF USER 0 ; EACH WARM BOOT. ; 12) BREAK ROUTINE DIDN'T BREAK RELIABLY BECAUSE I/O WAS ; THRU FUNCTION 6. THE PROBLEM IS CAUSED BY THE FACT ; THAT BDOS TESTS STATUS WHENEVER IT SENDS A CHARACTER ; TO THE SCREEN, AND ACTUALLY INPUTS THE CHARACTER IF ; STATUS IS TRUE. IF THE CHAR IS NOT A CONTROL-S, BDOS ; BUFFERS IT UNTIL THE NEXT INPUT CALL, WHICH IS BY- ; PASSED BY USING FUNCTION 6. ; ; 29 JUNE, 1981 (RGF) ; ; RLC'S NOTES: ; ;**** CUSTOMIZATION PROCEDURE ***** ; To customize this CCP for CP/M, do the following: ; 1. Run SYSGEN and obtain a sysgen image of CP/M ; 2. Issue "SAVE 44 CPM.COM" to save sysgen image on disk ; 3. Assemble this CCP (with Mods); MAC or M80 MUST be used ; because of MACROs ; 4. If end address exceeds C500H, CCP is too big; correct ; 5. Load sysgen image with "DDT CPM.COM" ; 6. Init FCB with ICCP22.HEX (from assembly) ; 7. Read in CCP with offset 5400 ("R5400") ; CCP starts at address 1100H in sysgen image ; 8. Save sysgen image (if desired) with ^C and ; "SAVE 44 NEWCPM.COM" ; 9. Place system on disk with "SYSGEN" ; ;**** NON-STANDARD FEATURES ;**** ; The non-standard features incorporated into this CCP are: ; A. The Command-Search Hierarchy, as follows -- ; 1. Scan for a CCP-resident command and execute it if ; found ; 2. If not CCP-resident, look for a .COM file on disk ; 3. If the .COM file is not found in the current user ; area and the current user area is not USER 0, ; USER 0 is selected and scanned for the file ; 4. If the .COM file is not found on the current ; logged-in disk drive, drive A: is selected ; and scanned for the file ; B. The DIR Command no longer prints the current drive spec ; at the beginning of each line ; C. The TYPE Command pages its output ; D. A LIST Command now exists which is like TYPE but does not ; page and sends its output to the LST: device ; E. A CLS (Clear Screen) Command now exists which clears the ; screen of the Hazeltine 1500 terminal ; F. The user number is printed as part of the command prompt; ; the prompt is now du>, such as A0> and A15> ; G. Z80-code is used throughout to reduce the size of the CCP ; and give room to implement the additional functions ; H. The input line buffer has been reduced in size to 100 bytes ; I. The ERA Command displays the names of the files it is to ; erase ; J. The DIR Command has an additional special form of "DIR @" ; which displays all files (both non-system and system), ; while "DIR" displays just the non-system files ; K. The Directory Display no longer displays the disk name at ; the beginning of each line and it now includes a '.' between ; the file name and file type (FILENAME.TYP) ; L. The SUBMIT File Facility now expects the $$$.SUB file to be ; on the currently logged-in disk (as opposed to always A:) ; M. The Command Line Prompt is now '$' if the command comes from ; a $$$.SUB file and '>' if the command comes from the user; ; also, the '>' is not printed until all preprocessing is ; completed ; N. The TYPE and LIST Commands mask the MSB of each byte, so that ; files created by editors such as EDIT80 are "printable" ; ;**** End of Revision History **** ; Summary of the New Features of CCPZ The CCPZ Command Hierarchy Search CCPZ-Resident Command DIR CCPZ-Resident Command ERA CCPZ-Resident Command LIST CCPZ-Resident Command TYPE CCPZ-Resident Command SAVE CCPZ-Resident Command REN CCPZ-Resident Command USER CCPZ-Resident Command DFU CCPZ-Resident Command JUMP CCPZ-Resident Command GET CCPZ Error Messages :Summary of the New Features of CCPZ CCP i basicall rewrit o th CP/ CC whic i design- e t ru a par o CP/ o Z80-base microcomputers I mos case i i upward-compatabl wit th origina CP/ Versio 2. CCP. CCPZ however provide man extension t th CP/͠ CCP Amon thes are: Th TYP functio ca b mad t pag o no pag it outpu a th user' discretion LIS functio i availabl whic send it outpu t th CP/ LST Devic an doe NO page Th DI comman ha bee extende t allo th dis- pla o th syste file o al files Th ER comman no print ou th name o th file i i erasing Th curren use numbe ma b include a par o th comman prompt i th use i unde numbe othe tha 0 th promp i o th for 'du> (lik 'A2> o 'B10>') and i th use i unde 0 th promp ma b 'd> o 'd0> a pe hi choice Th SUBMI facilit ha bee change i tw basi ways: - th promp change t 'du$ o 'd$ whe th SUBMI comman i printed - th $$$.SU i execute fro th currentl log- ged-i dis (NO jus fro A:) command-searc hierarch i no implemente whic i execute roughl a follows: - th user' comman i checke agains th CCP- residen command an execute immediatel i matc i found - failin that th curren use numbe o th curren dis i scanne fo th CO file th CO fil i loade an exC USER # <-- in HEX Examples: USER 15 USER #F USER 0 USER <-- Same as USER 0 Notes: -None- :CCPZ-Resident Command DFU Command: DFU Function: To Temporarily Change the default user number for the command hierarchy search Forms: DFU <-- in DEC DFU # <-- in HEX Examples: DFU 15 DFU 0 DFU #F DFU <-- Same as DFU 0 Notes: -None- :CCPZ-Resident Command JUMP Command: JUMP Function: To "call" the subroutine at the specified page address Forms: JUMP
<--
in HEX Examples: JUMP E000 <-- Jump to E000H JUMP 100 <-- Jump to 100H JUMP 0 <-- Jump to 000H JUMP <-- Same as JUMP 0 Notes: JUM perform subroutin "call" s th calle routin ma return to the CCPZ by either a RET or a Warm Boot. :CCPZ-Resident Command GET Command: GET Function: To load a file from disk into memory starting at the specified page Forms: GET
<--
in HEX Examples: GET 8000 TEST.80 <-- Load TEST.80 starting at 8000H GET 100 TEST.80 <-- Load TEST.80 starting at 100H GET 0 TEST.80 <-- Load TEST.80 starting at 000H Notes: GEԠ searche fo th specifie fil accordin t th sam comman hierarch searc employe b th CCP comman scanner Hence i th use i o B:/1 an th fil i o A:/ wit th curren defaul use numbe a 0 GE wil searc fro B:/1 t B:/0 to A:/0 in looking for the file. :CCPZ Error Messages Th followin ar th erro message issue b CCPڠ an their meanings. Message Meaning ? Printed after a command or an argument means that such was invalid No File From DIR, this means that DIR did not locate any files Also from ERA with the same meaning All? Issued in response ERA *.*, asks the user is he really wants to erase all the files. Unlike under the original CP/M 2.2 CCP, single character input is required (Y or y for yes and anything else for no) with NO to end the line Read Err Error in reading a file by TYPE or LIST Message Meaning No Space From SAVE, means that there is not enough space on disk From GET or command load by CCP, means that there is not enough space in memory File Exists From REN, means that the new file name specified already exists on disk  TITLE 'CCPZ Version 4.1' ; ; CP/M CONSOLE COMMAND PROCESSOR (CCP) Revision 4.1 ; FOR Z80-BASED CP/M 2.X SYSTEMS ; ; ORIGINAL CCP DISASSEMBLED BY ???? ; ORIGINAL CCP DISASSEMBLED FURTHER BY RLC ; ORIGINAL CCP COMMENTED BY RLC ; CUSTOMIZED FOR ARIES-II BY RLC ; FURTHER MODIFIED BY RGF AS V2.0 ; FURTHER MODIFIED BY RLC AS V2.1 ; FURTHER MODIFIED BY KBP AS V2.2 ; FURTHER MODIFIED BY RLC AS V2.4 (V2.3 skipped) ; FURTHER MODIFIED BY RLC AS V2.5 ; FURTHER MODIFIED BY RLC AS V2.6 ; FURTHUR MODIFIED BY SBB AS V2.7 ; FURTHER MODIFIED BY RLC AS V2.8 ; FURTHER MODIFIED BY RLC AS V2.9 ; FURTHER MODIFIED BY RLC AS V3.0 ; FURTHER MODIFIED BY RLC AS V3.1 ; FURTHER MODIFIED BY RLC AS V4.0 ; SBB V4.1 11/27/81 ; ;******** Refer to CCPZ-Vxx.NOT File for Revision History ******** ; ;******** Structure Notes ******** ; ; This CCP is divided into a number of major sections. The following ; is an outline of these sections and the names of the major routines ; located therein. ; ; Section Function/Routines ; ------- ----------------- ; ; -- Opening Comments, Equates, and Macro Definitions ; ; 0 JMP Table into CCP ; ; 1 Buffers ; ; 2 CCP Starting Modules ; CCP1 CCP RESTRT RSTCCP RCCPNL ; PRNNF ; ; 3 Utilities ; CRLF CONOUT CONIN LCOUT LSTOUT ; READF READ BDOSB PRINTC PRINT ; GETDRV DEFDMA DMASET RESET BDOSJP ; LOGIN OPENF OPEN GRBDOS CLOSE ; SEARF SEAR1 SEARN SUBKIL DELETE ; WRITE CREATE RESETUSR GETUSR SETUSR ; ; 4 CCP Utilities ; SETUD