Mike Kersenbrock Sept 1986 Aloha, Oregon USENET: tektronix!copper!michaelk Version 1.05 incorporates the following features (over and above 1.04): 1. Provides a built-in history mechanism similar to that in Berkeley-Unix's CSH ("sea-shell"). Included is a built-in command "h" that diplays the history. See beginning of "history.doc" for more details. This mechanism does not store command lines that start with either a leading ":" or a leading space (" "). Submit files can be edited to have leading spaces in each line if it is desired that submit-file internals not be individually saved in the history. The history database is saved on the "temporary disk" as set by setdef. A separate history is used for each user-space. Use with my RAMDISK results in no visible operational delay. Delay is quite noticeable with a floppy, but may be acceptable (esp. with fast and/or cached floppies). This mechanism is totally within the CCP and the temporary disk, and therefore, does NOT reduce the available TPA memory space (as an RSX might do). 2. Provided detached enhancement ability. An additional routine can be executed just before the history routine. If a file named "CCP.EXT" exists on the "temporary disk" (set by setdef), then for each command line processed by CCP, that routine is loaded to address 6000 (hex) and "called". See History.doc and/or code for more details. If register HL is returned NOT-ZERO, then the history mechanism is turned off for "this" command. The intended purpose of this "hook" is to allow a HLL or MLL routine to be written for easy enhancements. The language in mind is "C", and an example test case has been provided in the distribution ("CCPEXT.C"). My temp disk is a 720K RAMDISK, and with that, there is no noticeable delay caused by the loading of this enhancement file "each time". The author intends to purchase an AMIGA later this year, so these enhancements may not come to pass (then why did he do any of these enhancements? -- good question -- probably habit). 3. Provided a conditional assembly flag that will "fix" CP/M Plus's handling of lines that start with a colon. "With" the fix, the "return code" is NOT reset with every command line executed, but IS reset upon cold boot. The purpose of this is to allow this author's port of the "Aussie Make" to properly terminate make-execution upon an step-wise error. My MAKE "works" by creating a submit file, then chaining to it (the submit file's last command deletes itself). In my USENET distributed version, the "-i" option puts a colon in front of each command (my current private-version inverts the sense of "-i" back to "normal", and puts spaces in front of each command to keep them out of the history, don't know if it is worthwhile distributing this again for these changes). Using this "fixed" CCP, MAKE works like this: a) Just before the chaining, MAKE resets the CP/M return status to zero. b) The chained-to command file executes commands as required to bring the files up to date. c) If an error happens, then the return status is "set", and all the rest of the submit-file commands are not executed (because of the leading colon). The difference with the non-fixed version, is that only the NEXT submit file command would be skipped, rather than ALL of them as in the "fixed version". For this to work, one's compilers, linkers, assemblers, etc need to set the return-status upon error. I have included in my distribution, several RSX examples -- the ones I use on several of my software tools -- that cause my software to set the return-status. They should be easy to modify for "your" tools. 4. I reinstituted the conditional-assembly flag that when used, makes the user NOT be in the prompt when the user number is ZERO. This author doesn't use non-0 user spaces, and likes a "non-busy" prompt. Set the other way, the original code is reinstituted, so there shouldn't be a problem with other people's builds. 5. With these features, the CCP remains less than 4K (albeit, getting close). 6. Quite a few auxillary files are included into the distribution for development use. Some may be useable "asis", and some should be useable as templates that can be modified for other systems. A list of what's what is in the file "files.doc".