Enhancements to the ZCPR 3.4 Resident Command Package October 8, 1989 by Carson Wilson The following is a description of the functional enhancements I have made since Z34RCP10.LBR. Most of the changes are relatively minor, but several exciting new capabilities have been added, and a few important bugs have been fixed. New CLED (Command Line EDitor) Command: -------------------------------------- Rob Friefeld, author of LSH and many other excellent Z System tools, has outdone himself with a new RCP command line editor. CLED is different from other RCP commands, in that it is the first RCP command which also works as a shell. By combining the memory-resident characteristics of the RCP with the shell concept, Rob has created a command which significantly transforms the Z System environment. CLED greatly expands the user's ability to edit and correct command lines with such features as insert and move and delete word left and right, but that isn't all--it also stores a queue of previous commands (up to 203 bytes total) which can then be recalled (and edited). And since CLED is memory-resident, there are NO time disk access penalties involved! Please see RCPCLED.DOC for details on this exciting enhancement. Enhancements Pertaining to Several Commands: ------------------------------------------- 1. Dynamic Quiet Flag Sensing. I have added dynamic QUIET flag sensing to the CP, DIR, ERA, POKE, PORT, PROT, REG, and Reset commands. These commands should now only display error messages if QUIET is active. Otherwise they should just go about their business with as little screen activity as possible. The only change to DIR is that it doesn't show SPace remaining if QUIET is on (this is actually just a side effect from ERA and CP). Note the anomaly that if QUIET is on, Reset now operates somewhat differently on non-default drives: since SPace is no longer called, the drive doesn't actually log back (no physical activity) until accessed by another command. Also note that using the "Inspect" option of ERA will produce odd results if Quiet is on: you will be prompted for each file, but no filenames will be displayed. I don't really know an ideal solution for this, but in general I think someone who gives their computer contradictory instructions should expect contradictory results! Some confusion has arisen as to the purpose of the Quiet flag. It is not, nor was it ever intended to be, a security feature. As Richard Conn, original author of ZCPR states on page 77 of _ZCPR3: The Manual_, if the Quiet flag is on, certain informative messages are suppressed "in order to cut down on the 'noise' created by the command." I feel that it is far better in a security sensitive situation to simply turn off the remote terminal using the remote terminal software than to rely on the QUIET flag. BYE supports two system calls which can turn off the remote console altogether (both input AND output), and I think this a better solution where sensitive commands are concerned than use of QUIET. For one thing, QUIET wasn't designed to disable interruption by the remote terminal of commands such as ERA or PROT. Additionally, control of console I/O through BYE allows ANY CP/M program to be used "quietly." Finally, Z System programs vary somewhat in their treatment of QUIET. For these reasons I now consider QUIET purely a display control flag, rather than a security device. For similar reasons, I have changed the default of WHLQUIET to FALSE, causing WHL to display the new setting. I realize this is a departure from recent practice, but I think the advantages in terms of clarity, uniformity, and safety outweigh any disadvantages that may result. 2. Intelligent Error Handling The CP, ERA, and REN commands now allow an intelligent error handler to act differently when certain errors occur. The main idea is to allow larger, more powerful transient equivalents of the resident commands to take over when more features are required (much the same as CP/M Plus), but the interface also allows other actions to be taken if desired. If the CP or REN commands detect an ambiguous file specification, or if the ERA command detects a read-only file, bit 4 of ZCPR's command status flag (CST) is set before chaining to the error handler (if installed). Newer error handlers will bypass normal error handling when this bit is set, instead prepending a user-installable string to the original command and re-executing the new command. Typically, the new string will be a single colon, or a drive, user, or directory name. For example, in order to save memory, the RCP CP command will not copy multiple files, and the command CP *.* B: normally results in an error. However, if the error handler is configured to recognize CST bit 4, it prepends a ":" to the original command, resulting in :CP *.* B: Because a leading colon (or directory specification) causes ZCPR to skip resident command processing, a search is now made for a command file named "CP". By storing a more powerful copy program under this name at the current directory (or along the path if available), you can use this feature to invoke the transient program only when needed, using the faster resident command for single files. A similar approach can be used with the ERA and REN commands. Since any string of up to 9 characters can be installed to prepend the errant commands, you can also gain even greater control by prepending the command with "/" (or "ARUNZ ") to invoke ARUNZ with an arbitrary command (or no command at all) for each CP, ERA, and/or REN. See ZERRxx.LBR for details on how to install the error handler. Enhancements Pertaining to Specific Commands: -------------------------------------------- (Selectable = may be deselected at assembly time) Cmnd Selectable Enhancement(s): ---- ---------- -------------------------------------------------------------- CLED - New command. CP - Now works properly with Z3PLUS. - Now properly sets destination datestamps of multiple-extent files. D - Now allows the syntax "DIR [dir:].aft" to display all files matching a filetype (e.g., "D .COM now the same as "D *.COM"). H - RCP name now appended with 'C' if CLED is included. Q - Now "Q R[eset]" and "Q S[et]" just reset and set quiet status without showing it, and Q alone (or with any other character, e.g., "Q ?") always just shows status. * - No longer wheel protected. R - Revised to work properly with ZRDOS. - Now properly resets individual drives under Z3PLUS. SP * - Command name changed from 'S'. SPOP - New command. TYPE - Control characters other than ^I, ^M, and ^J are filtered out, allowing legible display of WordStar files. WHL * - Now always reports Wheel status.