X C C P Version 1.0 An Extended Console Command Processor for CP/M-80 1.0 INTRODUCTION XCCP is a substitute console command processor (CCP) for Digital Research Inc.'s CP/M-80 operating system. XCCP provides additional functions not provided in the "stock" CP/M CCP at the expense of the loss of a small portion (1 Kbyte) of the transient program area (TPA). The memory lost in this way is not usually important on systems having 64K bytes of memory. 1.1 ADDED FUNCTIONALITY XCCP provides the following features not provided by the distributed CP/M CCP. 1.1.1 COMMAND RECALL Up to approximately 240 characters of previous commands may be recalled for re-issue with a single keystroke. 1.1.2 COMMAND LINE EDITING Both recalled commands and newly entered commands may be edited using cursor control keys and dual mode (insert/overstrike) character insertion. Characters may be deleted anywhere on the command line. 1.1.3 COMMAND RECOGNITION A list of possible commands or filenames matching a partially typed command line can be displayed with a single keystroke without destroying the current command. No more aborting a command to list your directory because you forgot an obtuse filename. If no command has been started, a list of all possible commands that may be issued from the current user area is displayed. 1.1.4 COMMAND COMPLETION If a partially typed command has only a single possible matching command or filename, the rest of the command may be filled in on the command line automatically, in most cases eliminating the need to type long commands out in their entirety. 1.1.5 WILDCARD RECOGNITION Filenames on the command line may contain wildcard characters, and with a single keystroke, all possible matches can be displayed. This is useful, for example, if you have forgotten the file name, but remember the file type. If only one match is found, it is inserted on the command line in place of the wildcarded filename. 1.1.6 MULTIPLE COMMANDS PER LINE Multiple commands, up to 127 characters, may be issued on a single command line for sequential execution by separating the individual commands with a special delimiting character. 1.1.7 AUTOMATIC SEARCH OF DISK A USER AREA 0 If a command is not found in the current user area, user area 0 on disk A is automatically searched. 1.1.8 DISK AND USER SPECIFICATION Changing user area and disk are accomplished with the same syntax, eliminating the need for the cumbersome USER command. Additionally, a user number may optionally be included in the command (with or without a disk designator), causing that user area to be searched for the command instead of the current user area. 1.1.9 NO INVOLUNTARY WARM RESTARTS Return to the CCP from an application program is much faster under XCCP, since warm restarts are only performed upon user request. A control-C may be entered at any time, even in the middle of a command line, resetting the disk system without disrupting the command in progress. 1.1.10 EXIT TO STANDARD CP/M CCP A single keystroke returns control to the standard CCP, although this is unlikely to be desirable except when it is necessary to perform a SAVE operation. 1.1.11 USER NUMBER DISPLAYED IN PROMPT The current CP/M user area number is displayed in the XCCP prompt as a constant reminder. 2.0 XCCP COMMANDS To invoke XCCP, simply type XCCP as you would for any CP/M program. Optionally, an XCCP command line may be included in the invocation. Example: A>XCCP B15:;FIND MAST.LST MDM712 2.1 RECOGNITION AND COMPLETION The ESC (Escape, ASCII 27 decimal) key may be used whenever you are unable to recall the exact spelling of a command or filename, or simply to avoid typing long commands or filenames in their entirety. After ESC is entered, the characters on the command line between the cursor and the first preceeding space are used to search for a matching file on the appropriate disk and user (Disk A, user 0 is searched if the characters being used for the match are the first word of the command line). If more than one file is found, the matching files are listed, and the command redisplayed for user action. If only one match is found, the command is filled in with that file or command. The cursor is left at the end of the command, for further user input. You may hit RETURN at this point to issue the command. 2.2 COMMAND RECALL Commands are maintained in a circular buffer in memory. That is, when the end of the list is reached, the next command displayed will be the first one again. The WORDSTAR arrow keys (^E for uparrow, ^X for downarrow) are used to move about within the recall command buffer. The uparrow will redisplay commands issued before the displayed command, while the downarrow will display commands issued after the command currently displayed. In both cases, if the end of the buffer is reached, the cycle simply starts over. If, after perusing the recall command buffer, you can't find the command you want, and none of the ones there are close enough to warrant editing, you can cancel the currently displayed command with ^U. 2.3 COMMAND LINE EDITING The WORDSTAR arrow keys (^S for leftarrow and ^D for rightarrow) can be used at any time to move the cursor about on the command line. Once the cursor is positioned, characters may be entered in either overstrike or insert mode. The initial mode is overstrike. The ^V key is used to toggle the editing mode between overstrike and insert (as in WORDSTAR). When the cursor is not at the end of the command line, both the delete and backspace keys will remove the character which is at the cursor position, appearing to "gobble up" the command line to the right of the cursor. When the cursor is at the end of the line, these keys remove the character to the left of the cursor, allowing easy deletion of mistyped characters. 2.4 MULTIPLE COMMANDS PER LINE Multiple commands may be entered on a single line by separating the commands with a semicolon character. When the carriage return is struck, the commands will be executed in the order issued. There MUST NOT be any spaces between the semicolon and the characters on either side of it. 2.5 DISK/USER SPECIFICATION If a disk and/or user specification of the form du: is prefixed to a command (the first word of the command line or after a semicolon), the specified disk and/or user area is searched for the .COM file before A0:. Either or both the disk letter and user area number may be included in the command this way. File specifications on the command line MUST NOT have user area numbers, although disk designations are allowed, as in CP/M's standard CCP. Example: A6:WS C:TEST.DOC is acceptable to XCCP, while A6:WS C2:TEST.DOC is not. If the du: designation is entered alone on a command line, the default disk and/or user area is changed. 2.6 WARM BOOT The effects of a CP/M warm boot may be achieved through the use of CTRL-C. This results in a reset of the disk I/O subsystem, and is likely to be necessary after changing floppy disks. This function is normally done on most program exits, resulting in a delay in return to the CCP prompt. By making this function user requested, return to the CCP prompt on program exit is much faster with XCCP than with the stock CCP. 2.7 EXIT TO CP/M CCP Entering CTRL-Y in response to the XCCP prompt will restore the original CP/M CCP. 2.8 COMMAND CANCELLATION An entire command line may be revoked before issuance with the ^U character. 2.9 WILDCARD USE The wildcard translation feature of XCCP may be used to determine, before execution of a program, just which files will be affected by a command. For example, if the command ERASE *.HEX were terminated with an ESC rather than a carriage return, a list of the files which are about to be deleted would be displayed, allowing the user a last chance to abort the command before issuing the carriage return. Note that incomplete file specifications, such as T*.A, are treated as if they ended with wildcards (T*.A*), due to XCCP's command recognition/completion algorithm. Thus, in this case, more files than will actually be affected by the command may be displayed (e.g. both TEST.A and TEST.ASM would be displayed). 3.0 LIMITATIONS AND CONSTRAINTS A number of features of the standard CP/M CCP were left out in this first version of XCCP in order to avoid increasing XCCP's size beyond what could be easily tolerated in a 64 Kbyte system. 3.1 NO SUBMIT The CP/M SUBMIT command will not function under XCCP. Use ^Y to exit to the standard CCP before using SUBMIT. 3.2 NO SAVE There is no SAVE command in XCCP. Use ^Y to exit to the standard CCP before using SAVE. ^Y does not alter the contents of TPA memory. 3.3 NO BUILT-IN COMMANDS The CP/M CCP's commands DIR, REN, ERA, USER, and TYPE are not available in XCCP. Transient programs are included with XCCP to take the place of REN and ERA. USER is supersceded by superior facilities within XCCP, and a great number of DIR and TYPE programs are available in the public domain. 4.0 VERSION 2.0 Version 2.0 of XCCP is expected to include a CP/M-compatible SUBMIT facility (all your existing .SUB files will work) with additional features such as internal variables, conditional branching, and nested procedures. Also planned for V2.0 are I/O redirection (like UNIX and MS-DOS's <, >, and | operators), key redefinition (as in QwikKey, Smartkey, etc.), and hierarchical directory support. These additional features will not increase the size of XCCP, since they will be implemented as overlays. The functions chosen for implementation in overlays were chosen with a view toward which functions access the disk in any case, and those functions which are the least utilized.