File "WASH.DOC" Documentation on the operation of: "WASH.COM" by: Michael J. Karas Micro Resources 2468 Hansen Court Simi Valley, California 93065 This program is a super-duper CP/M disk directory maintence utility that is designed as an "almost" all inclusive routine to make it easy to do disk directory house keeping. The inspiration to produce this program came from use of an older utility program called "CLEAN" that I came across at a meeting of the Valley Computer Club about a year and a half ago. At that time "CLEAN" seemed like a dream come true. Unfortunately it had several major problems that limited its overall usefullness. The disadvantages of CLEAN have all been overcome with the new WASH program. Program features are listed below: a) Alphabetical list oriented file operations b) Any legal CP/M drive (A: to P:) may be selected c) Operator interface to the file list is at the console in sequential apha order in forward or backup mode. d) The file list is treated as a circular buffer. Forward or backward scanning of the list wraps around the list back to the beginning or ending respectively. e) The current list position file can be viewed at the Console, printed on the CP/M List device, or sent to the CP/M Punch device. f) The current list position file may be deleted or renamed. If renamed, only the new name must be entered. g) The current list position file may be copied, with the same name, to any other operator selected disk drive. The copy utilizes all of available memory as the copy buffer for the ultimate in copy speed. h) The current list can be deleted and the "WASH" operation may be begun upon another operator selected disk drive. i) The program is fully implemented in 8080 assembly language for speed, small size, and portability to any CP/M 2.2 or 1.4 system. No assumption is made upon the maximum number of directory files other than available memory space for the list. (A directory with 1024 directory file names takes 12 K bytes of storage. Assuming the copy buffer minimum size requirement of 128 bytes, then WASH should easily run in the minimum CP/M 2.2 20K System with no problems at all.) ALL directory and disk I/O is handled through calls to the BDOS. This will guarentee WASH compatibility with any CP/M system implementation. This makes the program disk media independent (all you have to do is get WASH.COM onto your diskette or hard disk in the first place. This Program was Written by: Michael J. Karas MICRO RESOURCES 2468 Hansen Court Simi Valley, California 93065 (805) 527-7299 September 20, 1981 NOTE: The WASH program, its source code, documentation file, and object code, has been released to the PUBLIC DOMAIN by Michael J. Karas. This program may be modified to suit your personal requirements or those of your friends. In any case no COMMERCIAL or MONEY MAKING ventures with regard to SOFTWARE SALES or MODIFICATION and the subsequent SALE of the WASH program in WHOLE or any PART is permitted by the author. Further modification and public domain distribution of the WASH program must include: a) This NOTE, b) The name "WASH" must be retained, c) The original authorship notice from above, and d) The MICRO RESOURCES Name in the Sign-on Menu. MICRO RESOURCES reserves the right to modify this program at any time for any purpose. The Intent of the above NOTE is intended for the public domain distribution of the WASH program and MICRO RESOURCES reserves the right to utilize the WASH program for any application whatsoever including but not limited to commercial distribution and modification for custom applications with or without the "WASH" name. Modification of WASH -------------------- If you modify, enhance, or correct bugs in this program, please include a short statement of the modifications done and include your name and the date. The modification history log should be kept intact with the source code file in "most recent first" order. Changes to program structure will generally require a change in the program version. The version number is documented in the signon message and the distribution program name as "WASH-10.ASM" in the specific case of the initial release 1.0. The format for update notices in the source file should follow the format shown below: Date: Sept. 20, 1981 Version Number: 1.0 Name: Michael J. Karas Initial release to the public domain via the CP/M NET remote software access program operated by Kelly Smith, 3055 Waco Ave, Simi Valley, CA 93063. (805) 527-9321/ PMMI modem. Running WASH ------------ The WASH program is run as a transient command under CP/M 2.2 or CP/M 1.4 as follows. The program creates a working list of all selected file names on the selected drive. Examples of command formats are: A>WASH <== WASH forms working list of all files from default drive A:. A>WASH B: <== WASH forms working list of all files from selected drive B:. A>WASH *.COM <== WASH formas working list of all ".COM" files from default drive A:. WASH will boot up and read all selected file names from the selected drive into a "MEMORY" list that is in ascending alphabetical order. The first file name will be displayed with a ":" prompt awaiting some command from the operator. The following summary describes WASH commands. WASH Commands ------------- The Wash program permits entry of various commands while the console cursor is positioned at a ":" prompt after the currently displayed file name in the file name list. **** File List Manipulation Comands. File Forward (SPACE or CARRIAGE RETURN) Command ----------------------------------------------- This command will increment the displayed list pointer and then display the next file name in the list. If last file name in list is currently displayed, the message "End of List" is displayed and file name display wraps around to the first file name. Backup (B) Command ------------------ This command will decrement the displayed list pointer and display the previous file name from the list. If the first file name in the list is currently displayed, the message "Beginning of List" is displayed and the file name display wraps back to the last file name in the list. **** File Operation Commands. View (V) File Command --------------------- The contents of the currently displayed file name is output to the console screen. Text is normally assumed to be ASCII and file display ceases upon encountering a logical end of file character (01AH) (ctl-z). Punch (P) File Command ---------------------- The contents of the currently displayed file name output to the CP/M logical Punch device. Text is normally assumed to be ASCII and file punching ceases upon encountering a logical end of file character (01AH) (ctl-z). List (L) File Command --------------------- The contents of the currently displayed file name is output to the CP/M logical List device. Text is normally assumed to be ASCII and file listing ceases upon encountering a logical end of file character (01AH) (ctl-z). Copy (C) File Command --------------------- This command allows the complete contents of the currently displayed file name to copied to a file on another operator selected drive with the same name. If the file name already exists on the destiantion disk, the operator is asked if it should be replaced. Delete (D) File Command ----------------------- The file with name corresponding to the currently displayed list name is deleted from the disk directory. After deletion the message "Deleted" is displayed at the console. Deleted file name is also removed from the in memory list. Rename (R) File Command ----------------------- The file name currently displayed is renamed to the operator entered name in response to the "New Name ?" prompt. The list in memory is also updated to reflect the new file name. **** Miscellaneous Commands. Exit (X) Command ---------------- Command when entered will terminate WASH operation and return system control to the CP/M Console Command Processor via a warm boot operation. Start (S) over on New Drive Command ----------------------------------- Entry of the Start over command will cause the WASH program to make up a new directory name list in memory from the drive designator entered by the operator in response to the "New Drive ?" prompt. OPERATIONAL NOTES ON WASH ------------------------- Command entries not understood by WASH will cause display of a "?" character followed by redisplay of the same current list position file name. Command entries, other than Backup, will generally execute and then return to the command mode with the next file name from the list displayed. Entry of a carriage return in response to the "New Name ?" prompt of the Rename command or to the "New Drive ?" prompt of the Start Over command will abort the command function and cause display of the next file name in the file name list. The WASH program contains a liberal number of error checking functions not normally seen by the operator unless an error condition arises. These are always displayed with leading and trailing pairs of the plus sign character as: ++ Error Message ++ Some of the error conditions are: ++ Not Found ++ command line wild card file specification name list is empty, or disk is empty. -or- delete, rename, copy source files not found. (most likely due to a diskette change) ++ Name Already Exists ++ attempt to rename a file to a name already present on the disk. ++ File Cannot Be Opened ++ output file for view, list, or punch, cannot be opened for reading. Most probable cause is due to a disk change. ++ Source File Cannot Be Opened ++ source file on a copy operation cannot be found on the disk. Most likely casued by a disk change. ++ Cannot Select Same Disk as Source ++ the copy to destination disk selected by the operator must be different than the source disk. ++ Destination Directory Full ++ The destination file on a copy operation cannot be opened because the destination disk directory is full. ++ No Memory Available For Copy Buffer ++ Caused when size of in memory list is so large that an attempted copy operation can find no buffer space. ++ Disk or Directory Full on Write ++ Caused when a copy operation attempts to place a file on a destination disk that does not have enough room for the file, or not enough room to contain all the directory extent entries for the destination file. ++ Destination Close Error ++ Destination file on a copy operation cannot be closed most likely due to a full directory. Looking at WASH in Action ------------------------- The following text is an example session with WASH at the console. This dislay was made possible through use of Kelly Smith's new console i/o capture program I/O-CAP.COM. The intepretation of the action below should be self evident via the descriptions in the above sections. The text "<== xxxxxxxxxxxx" indicates text typed in for documentation purposes and not by the WASH program. A>WASH <== start up wash for *.* on A: MICRO RESOURCES DIRECTORY "WASH UTILITY" Ver 1.0 Command Function ------- ---------------------------- V View file at Console L Print file to List Device P Send file to Punch Device C Copy file to another Disk R Rename file D Delete file X Exit to CP/M B Backup one file in List S Restart on another Drive sp or cr Forward to next file in List A: / .COM : <== space bar to go forward A: ADIR .COM : A: ASM .COM : A: CONCAP .COM : B <== B to backup < A: ASM .COM : B < A: ADIR .COM : B < A: / .COM : B Beginning of List <== Backup past top of list < A: XSUB .COM : B < A: WORDMAS .COM : B < A: WM .HLP : B < A: WASH .HEX : B < A: WASH .DOC : B < A: WASH .COM : B < A: WASH .BAK : B < A: WASH .ASM : B < A: USQ .COM : B < A: TYPESQ14.DQC : B < A: TSQ .COM : B < A: SYSGEN .COM : <== forward again A: TSQ .COM : C Destination Drive ? B <== Copy two files to B: A: TYPESQ14.DQC : C Destination Drive ? B A: USQ .COM : A: WASH .ASM : A: WASH .BAK : A: WASH .COM : A: WASH .DOC : A: WASH .HEX : A: WM .HLP : A: WORDMAS .COM : B < A: WM .HLP : B < A: WASH .HEX : B < A: WASH .DOC : B < A: WASH .COM : B < A: WASH .BAK : D Deleted <== delete an old file A: WASH .COM : <== I didn't want A: WASH .DOC : S New Drive ? B <== Start over on new drive <== WASH signs on again for Drive B: MICRO RESOURCES DIRECTORY "WASH UTILITY" Ver 1.0 Command Function ------- ---------------------------- V View file at Console L Print file to List Device P Send file to Punch Device C Copy file to another Disk R Rename file D Delete file X Exit to CP/M B Backup one file in List S Restart on another Drive sp or cr Forward to next file in List B: / .COM : B: TSQ .COM : B < B: / .COM : D Deleted <== delete a file on B: B: TSQ .COM : B: TYPESQ14.DQC : B: WASH .ASM : B: WASH .BAK : D Deleted <== and another B: WASH .COM : B: WASHTEST.DOC : B: WM .HLP : B < B: WASHTEST.DOC : V <== View a text file at crt JUST A SHORT MESSAGE TO DEMONSTRATE THE PHYSICAL I/O CAPABILITIES OF "WASH" OF DOCMENTATION. B: WM .HLP : B < B: WASHTEST.DOC : P <== Send text file to my TI-820 B: WM .HLP : B on the PUNCH port of CP/M < B: WASHTEST.DOC : L <== Send text file to printer on B: WM .HLP : the LIST port of CP/M B: WORDMAS .COM : B: Z2 . : B: Z3 . : B: Z4 . : End of List <== forward scroll of list past end of list B: TSQ .COM : <== to first one again B: TYPESQ14.DQC : B: WASH .ASM : B: WASH .COM : B: WASHTEST.DOC : B: WM .HLP : B: WORDMAS .COM : B: Z2 . : B: Z3 . : B < B: Z2 . : C Destination Drive ? A <== copy to A: B: Z3 . :X <== exit back to logged drive A> +++ End of Documentation File