Documentation for CHECK version 2.8 February 24, 1987 By Carson R. Wilson [ This program may be freely copied and distributed for non- profit purposes as long as it is accompanied by this documentation and its terminal installer. The author takes no responsibility for the use or inability to use this program. ] FILES ===== CHECK28.LBR should include the following files: * CHECK28.CZM - version 2.8 of the program itself * CHECK28.DZC - this file PDTINS.CZN - Turbo terminal installer PDTINS.DZA - data for installer * WHATSFOR.CHK - short description of the library Only files marked with '*' have been altered since version 2.7. The files with Z's in them need to be decompressed with UNCR.COM version 2.0 or later. UPDATE ====== Changes from version 2.7: - Now automatically warm boots on exit in low TPA (BDOS begins below B300 hex) systems. - Copying files of over 7k is significantly faster. - Testing files of over 6k is slightly slower. - Whole tagged file names are highlighted, instead of just their flags. - 1.75k more Transient Program Area (TPA) is now required, moving the ending address up to AB00 hex from A400 hex. - The maximum amount of directory entries has been raised to 310 from 192 per directory. (Note--this is greater than or equal to the actual number of files, because large files can take up more than one directory entry). - CHECK now aborts with an error message if over the maximum number of directory entries are present on either the Source or the Target directory. - The delete command now removes file names from the display. - Shows proper disk space remaining for hard disks. - New "K" command added (see "Commands," below). - Several other cosmetic changes have been made. CHECK version 2.8 - Copyright 1987 by Carson Wilson page 1 IN BRIEF == ===== 1. What's it for? CHECK compares the contents of two disk directories, providing an alphabetized display of the filenames occurring on one. These filenames are marked with "flag" characters reflecting which of the files are present on the other directory. Thereafter, you step through the list, performing a variety of functions (below). 2. System Requirements You will need a CP/M or ZCPR computer with an 80-column display screen. CHECK assumes that memory addresses from 100h to AB00h will be available. All 64k CP/M systems have more than enough memory. 3. Installation Try the program on your machine. You may not need to install CHECK at all. Otherwise, use the terminal installer chain file PDTINS.CHN and its data file PDTINS.DTA (included in CHECK28.LBR) to install CHECK for your terminal. Simply make sure all three files are on the current disk directory and type "CHECK INSTALL" at your command line. PDTINS takes over from here, allowing you to install any Turbo Pascal .COM file for your terminal. 4. Functions This program has five major functions: 1) compare the contents of disk directories 2) compare the contents of individual files 3) copy files 4) delete files 5) display files. By combining all of these functions into an integrated package, CHECK simplifies the task of maintaining backup copies of important files on another directory. USING CHECK ===== ===== 1. Terminology CHECK uses its own terminology to describe the pair of disk directories (drive/user combinations) it is comparing. The "Source" is the directory CHECK normally displays. The "Target" directory is the one being compared with the Source directory. The "Route" describes the direction CHECK assumes any copies you make will travel in. That is, the program assumes that you want to use one directory as your work directory, and another as your backup, copying files from the Source to the Target directory CHECK version 2.8 - Copyright 1987 by Carson Wilson page 2 periodically as a safety measure. A valid Route describes two different disk directories with drive letters from A to P and user numbers from 0 to 15. 2. Starting CHECK There are two ways of calling up CHECK from your command line. If you simply enter the word CHECK, the program will load and then prompt you for Source and Target directories. Alternatively, exactly two command line parameters may be entered when calling up CHECK. The first stands for the Source and the second stands for the Target directory. For example, the command line entry "CHECK A2 B15" (no colons allowed) causes CHECK to load and run using the Route A2 ==> B15, regardless of the currently logged drive/user. 3. Operation Once CHECK has loaded and received a valid Route, it resets the disk system, and compares the directories. It then clears the screen and displays the status line and the name of the first entry in the Source directory. The status line displays the current Route, space left on one or both drives, and the HELP command. Thereafter, CHECK operates much like NewSweep, stepping through an alphabetized list of filenames. 3a. Flag Characters Flag characters flag filenames from the Source disk directory, indicating what the status of these files on the Target directory is. Flagged filenames are highlighted, if possible. Flagged filenames appear as: FILENAME.TYP Unflagged - no matching filename was found on the Target directory. ?FILENAME.TYP? Question marks - a matching filename was found on the Target directory. Unequal marks - a matching filename was found on the Target directory, and the two files are unequal. =FILENAME.TYP= Equal marks - an equal file was found on the Target directory. Equal ("=") flags are only produced after the user explicitly commands CHECK to compare two files, and they are found to be equal. Unequal signs may be generated as a consequence of differences in two files' sizes, or as the result of an explicit command by the user to compare files. Question marks indicate that no test has yet been performed on the files, but that they do contain the same number of records. CHECK version 2.8 - Copyright 1987 by Carson Wilson page 3 3b. Commands Command keys are simply keyboard characters to which CHECK assigns special meanings. Commands acting on individual files are always applied to the filename to the left of the cursor. COMMAND: RESULT: ======= ====== H, h, ?, / Display the help screen. -, B, b Step back one filename in list. C, c Copy file from the Source directory to the Target directory. D, d Delete file from Source directory. K, k Go to the next unflagged file in the list and delete it. This command enables the user to easily remove all unmatched files from a backup directory. N, n Go to next filename flagged with ?? or <>. Using the 'N' command to step through CHECK's list of files, the user can test all sets of matching filenames to determine which files are equal. O, o Display other (Target) directory. R, r Reverse Source and Target directories. Target directory becomes Source and Source becomes Target. T, t Test a match by comparing a file on the Target directory with the file on the Source directory. If the files don't match, tell where the first difference is and display it on the screen. V, v View a file. Use ^S or space bar to pause scrolling, other keys to resume scrolling, and ^X or ^C to abort viewing. W, w Display wide directory. Q, q, X, x Exit from the current Route and prompt user to enter another Route or exit the program. All other keys Step forwards one filename in list. All commands that cause disk space to change result in immediate re-calculation and display of the space remaining on one or both CHECK version 2.8 - Copyright 1987 by Carson Wilson page 4 disk drives. The Help, Reverse, and Wide directory commands also cause CHECK to redisplay the status line. ERROR PREVENTION ===== ========== CHECK has various internal procedures designed to prevent unintended or unnecessary actions: 1) If the user tells CHECK to copy files which have already been copied or proven equal, CHECK cancels the operation. 2) Whenever an erase or copy command would cause a file without a backup to be erased, CHECK prompts the user before proceeding. Therefore files which have no match on the Target directory are copied immediately, but CHECK prompts the user whenever a copy operation will overwrite another file. CHECK also ensures that there is sufficient room on the Target directory for the new copy before proceeding. 3) If a Source directory containing no files is specified, CHECK immediately re-prompts the user for another Route. 4) The delete command works immediately if there is an equal backup of the Source file, but warns the user otherwise. SPECIFICATIONS ============== CHECK will accommodate disk directories with up to 310 filename entries at one drive/user combination. If you have more entries than this on one directory, CHECK aborts with an error message. The buffer size used for comparing files is 48 records, making CHECK significantly faster than some other file comparing utilities. SPECIAL PATCHES ======= ======= Several locations of CHECK's code may be patched to provide more secure or compatible operation. Normally, patching should be unnecessary. 1. Legal Drives and User Areas As distributed, CHECK allows routes with drives from A: through P: and user areas from 1 thorough 15. Other drive/user combinations generate an error message when the Route is first specified. These values may be changed to match your system in high-security or novice-user situations. The bytes at addresses 20FF hex through 2102 hex contain CHECK's CHECK version 2.8 - Copyright 1987 by Carson Wilson page 5 legal drive/user values. The first two bytes are the legal low drive followed by the legal high drive, and the second pair are the legal low user followed by the legal high user. To patch CHECK to allow only drives A: through E: and users 0 through 5, for example, use DDT as follows (excluding comments): A>ddt check.com DDT VERS 2.2 NEXT PC 4900 0100 -s20ff 20FF 41 ; this is low drive letter "A" 2100 50 45 ; change max. drive letter from "P" to "E" 2101 00 ; this is low user area zero 2102 0F 5 ; change max. user from 15 hex to 5 hex 2103 01 . -g0 A>save 72 check.com 2) Copying Attributes and File Archiving As distributed, CHECK will copy file tags and attributes when making copies of files. This means that if you copy a read-only or system file, the copy on the other directory will also be read-only, etc. To turn this feature off, change the byte at address 2103 hex (right after the max. user byte above) from one to zero, and save the memory image as above. Thereafter, all copies made by CHECK will be "read-only, directory" files. When it copies a file, CHECK sets the "archive" attribute of the source file. This function may be de-activated by changing the byte at 2104 hex (one after the "copy attributes" byte) from one to zero, and save the memory image as above. This will de- activate the function, and CHECK will now say "file copied" instead of "file copied and archived" after copying files. ACKNOWLEDGEMENT =============== Thanks go to Rick Charnes of San Francisco for finding a new way to use CHECK.COM to assist in backing up hard disks (see his HD- ARCxx.LBR for more on this). Rick also made several recommendations which have been incorporated into version 2.8 of CHECK, and tested version 2.8 on a hard disk. CHECK version 2.8 - Copyright 1987 by Carson Wilson page 6 DEDICATION ========== I enjoyed designing this program, and hope you find it useful. While Turbo Pascal does not provide the tight, efficient code permitted by assembly language, it is a fertile medium for trying new ideas. While this program is a useful utility of itself, I hope that the ideas it expresses will be adopted by others. If you have any questions, comments, or suggestions about CHECK.COM, please leave me a message at Richard Jacobson's Lillipute Z-Node, Chicago, (312) 664-1730 or (312) 649-1730. CHECK version 2.8 - Copyright 1987 by Carson Wilson page 7