CRUNCH v2.4 processes and generates files identical to v2.3. A series of enhancements have been made, and are summarized below (additional details can be found at the end of this document). o "TAG" MODE: This new option lets you select any number of files from a group for processing. After all the selections have been made, the files will be processed. Selections are presented and processed in alphabeti- cal order. Applies to both CRUNCH and UNCR. (Even when this mode is not active, all wildcard operations are sorted to proceed alphabetically). o STRAIGHT COPYING: If CRUNCH ever creates a file larger than the orig- inal, the file will automatically be erased and replaced with a direct copy of the original. If the original is already crunched or squeezed, or if the filetype matches a type on a [user configurable] filetype list (eg .LBR or .ARC), no attempt will even be made to compress it; a straight copy operation will be substituted. Thus ALL specified files will transferred (in the most efficient manner), facilitating the use of CRUNCH for the creation of LBR's or as a backup utility. Similarly, UNCR will either uncrunch or direct copy all specified files for full restor- ation. o "SPANNING" DISKETTES: If CRUNCH ever fills an output diskette during a wildcard operation, the last [partial] file will be deleted and the user will be prompted to change diskettes. Operation will then continue, starting with that last file. This will work from the output of either CRUNCH or UNCRunch. o OPTION "TOGGLES": UNCRunch and CRUNCH take as many as three and four (respectively) command line options in any combination. Each option corresponds to a mode which can be set to default to a user defined state; then the command line toggle will flip the state back on or off. The option toggles include "quiet" / "verbose", "tag mode" on/off, "prompt before overwrite" on/off, and "archive bit" mode on/off. o OTHER NEW MODES: The "archive bit" mode toggle, when turned on, will only crunch files that have changed since they were last backed up (based on the CP/M directory archive bit). When running in this mode, each input file will be flagged as archived as soon as the crunch oper- ation for that file has completed. The "prompt before overwrite" mode toggle allows command line control of whether the program stops to warn you each time it is about to overwrite a file with the same name. o UNSQUEEZING: UNCRunch now also unsqueezes as an added convenience! Usage is identical; UNCRunch will automatically recognize the file's format and use the appropriate algorithm. o FASTER OPERATION; MORE BUFFERING: Modest speed improvements have been made through a variety of techniques, including more data buffering to reduce disk activity. The extended buffers are dynamically allocated to take maximum advantage of currently available memory on your system. o INFORMATIVE: Messages inform you when the programs are crunching, un- crunching, unsqueezing, or copying and why (eg "Already crunched" or "Zero length"). Includes the old in, out, & compression ratio reports as well as a final figure on the total number of files processed. DETAILED NOTES ABOUT NEW FEATURES Some of the new features mentioned above require, by logical necessity or convenience, that the programs respond differently to different types of command line specifications; ie respond differently depending on whether the source and destination user areas and/or drives are different or wheth- er the program is invoked with a wildcard file specification. Following is an itemization of these details: 1. DIRECT COPY OVERRIDE [CRUNCH only]: If the source and destination drives AND user areas are the same, then direct copying is inhibited (ie CRUNCH will not bother attempting to copy a file onto itself); in this case it will resort to the older method of asking the user whether he wants to keep the larger "crunched" file. 2. "SPANNING" DISKETTE OVERRIDE [CRUNCH or UNCRunch]: If the source and destination DRIVES are the same, then the prompt to change diskettes when the diskette fills up is inhibited, since by changing the output diskette you will also be removing the input diskette from which the program is reading. 3. EXCLUSION LIST OVERRIDE [CRUNCH only]: While it is generally useful to have CRUNCH skip attempts to compress certain filetypes when doing bulk transfers, there may be instances where, for example, you WANT to create, say a ".LZR" (crunched library) file. Therefore for CRUNCH will ignore the filetype exclusion list if a filename is fully specified. The exclusion list WILL be used whenever one or more wildcard characters ("?" or "*") are used in the command line. 4. DETAIL INVOLVING FORCED "?Z?" EXTENSION [UNCR only]: UNCRunch used to convert the wildcard spec "*.*" to "*.?Z?" as a convenience feature. This conflicts with the symmetrical operation of the new programs, ie that you can transfer all files from a disk or user area with, for example, the command "CRUNCH A:*.* B:" & then restore them all with "UNCR B:*.* A:". Thus the forced "Z" feature has been removed, and if such is your intent you will have to type "UNCR B:*.?Z? A:". But in an effort retain maximum convenience and compatibility with v2.3 where possible, the plain command line "UNCR *.*", ie when uncrunching to the same drive and user area, WILL automatically be converted to "UNCR *.?Z?" since direct copying is not desired or possible in this case anyway. Also note an effect of this is that a separate "UNCR *.?Q?" command would be required if squeezed files were mixed in the group, but if going to a different drive/user area a single "*.*" specification would do everything. MORE DETAILS 1. MIXING /A and /C OPTIONS [CRUNCH only]: The /A, archive bit mode option, works internally by "tagging" all files which do not have the archive at- tribute bit set, and thus crunching only those files. This is useful, be- cause if both options are specified, you will be presented with a list of ALL filenames, just as if you had specified the /C option alone, but you will notice that all non-archived files have been pre-tagged for you. You are then free to either tag additional files or untag "pre-tagged" files as you wish. You may wish, for example, to untag various .BAK files which, though not archived, you consider superfluous to backup. 2. UNDOCUMENTED /T OPTION [CRUNCH and UNCRunch]: Though markedly improved, the new tag mode achieves the same desired effect as the old v2.3 /C (Confirm) option, namely selective processing of files from a group. It is therefore still the "/C" option. But I personally always think of it and refer to it as "tag" mode, so I have allowed the programs to accept /T as a synonym for /C. (Not really "undocumented", of course...) 3. 255 MAXIMUM FILES [CRUNCH and UNCRunch]: Current program constraints limit wildcard operations to a maximum of 255 files. If a wildcard spec matches more than that many files, an appropriate error message will be given. In this case you will have to split your job into several operations by using using more selective wildcard specs. 4. CRUNCHED FILE OUTPUT [CRUNCH only]: v2.4 produces identical output re- gardless of mode of operation (a few very observant people noticed that v2.3 could output valid, but different, files when running in "quiet" mode). The output of v2.4 should be identical to v2.3 running in verbose mode, except for the embedded revision level byte. 5. "FILES PROCESSED" COUNT [CRUNCH and UNCRunch]: The v2.4 programs output " File(s) Processed" each time they are run. The count is basically equal to the final number of output files created. A crunch/erase/copy sequence counts as one; A "no" answer to a "Overwrite existing file?" or "Save file anyway?" question counts as zero. 6. ^C ABORTS, ^S PAUSES, ^W RESUMES [CRUNCH and UNCRunch]: Hitting ^C will entirely abort either program immediately. It may be issued any time the programs are waiting for input, or during actual operation. Use of ^C dur- ing operation will generally result in zero length output file. Although probably of limited usefulness, it is noteworthy that ^S will pause the programs (in verbose mode) since it will be intercepted by the system and prevent the running console output from continuing. ^W will then resume.