> $ ; 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