Sig/M Volume 44 Miscellaneous CP/M Utilities -CATALOG.044 contents of Sig/M volume 44 released November 25, 1981 ACKLIST.044 acknowledgement file CRCKLIST.044 checksum of Sig/M volume 44 index name size description 44.01 CHAT16 .ASM 8K interactive remote/local operations 44.02 CPM2HELI.DOC 4K CP/M to Helios 44.03 CPM2HELI.OBJ 1K / 44.04 CPM2HELI.S 5K / 44.05 DU-V77 .ASM 42K updated disk utility 44.06 DU-V77 .DOC 6K / 44.07 DU-V77 .OBJ 6K / 44.08 FLAGS .DOC 2K edit file attributes 44.09 FLAGS12 .ASM 12K / 44.10 FMAP4 .ASM 11K update FMAP of cataloging system 44.11 FMAP4 .OBJ 2K / 44.12 HELI2CPM.OBJ 1K Helios to CP/M 44.13 HELI2CPM.S 5K / 44.14 PIPPATCH.ASM 5K patch for PIP 44.15 SD-41 .ASM 46K updated Super Directory 44.16 SD-41 .DOC 12K / 44.17 UNERA .HLP 3K UNERAse erased programs 44.18 UNERA11 .ASM 6K / 44.19 WASH-10 .DOC 16K disk directory maintenance utility 44.20 WASH-16 .ASM 34K / Copyright (C) 1981 by Sig/M-Amateur Computer Group of New Jersey Inc., Box 97, Iselin N.J. 08830-0097 CPM2HELI.DOC by Jim Blackwood *************************************************************** THE PROGRAMS CPM2HELI.OBJ AND HELI2CPM.OBJ CONVERT CPM TEXT FILES TO PROCESSOR TECH HELIOS II EDIT FILES, AND VICE-VERSA. TO CONVERT A CP/M FILE, LINEFEEDS, HTABS, AND CTRL/Z'S ARE REMOVED. IF THERE ARE 64 CHARACTERS WITHOUT A CR, ONE IS INSERTED. THIS MAKES EDIT DELIRIOUS WITH JOY. THE OTHER WAY, LINEFEEDS ARE ADDED AFTER EACH CR, AND CTRL/Z IS ADDED AT THE END. THE SOURCE VERSIONS ARE CPM2HELI.S AND HELI2CPM.S. THE PROGRAMS WILL NOT RUN, AND THE SOURCE WILL NOT ASSEMBLE UNDER CP/M. YOU NEED PTDOS1.4 OR 1.5. THE PROGRAMS READ BLOCKS OF THE INPUT FILE INTO A BUFFER. THE OFFENDING CHARACTERS ARE REMOVED (OR ADDED) AND THE MODIFIED FILE IS WRITTEN TO THE DISK. EDIT IS A SCREEN EDITOR, AND I'M MUCH MORE COMFORTABLE WITH IT THAN I AM WITH ED. THESE PROGRAMS LET ME ADAPT BASIC PROGRAMS, ASSEMBLY LANGUAGE PROGRAMS, ETC. FROM THE SIG/M LIBRARY TO MY OWN ENVIRONMENT. I SUSPECT THERE ARE VERY FEW FOLKS OUT THERE WHO CAN USE THIS STUFF, BUT IF YOU HAVE CP/M-LIFEBOAT-HELIOS, YOU MIGHT ENJOY IT. I GUESS I'M SUPPOSED TO MENTION THAT CP/M IS A PRODUCT OF DIGITAL RESEARCH AND THAT LIFEBOAT IS LIFEBOAT ASSOC. IF YOU HAVE QUESTIONS, FIND BUGS, ETC., YOU CAN GET ME AT 201-233-1285. OH YES, YOU MUST SET BU=8000 (OR LOWER) OR YOU WILL GET A LOADER ERROR, & THINGS MAY BLOW UP. THE OBJECT PROGRAMS ARE ASSEMBLED AT 103H. THE FIRST TIME, PUT THE OBJECT CODE INTO AN IMAGE FILE. YOU CAN THEN PROCESS THE SOURCE FILES, AND ASSEMBLE THEM WHEREVER YOU WISH. USING DDT, PUT THE FILE INTO MEMORY STARTING AT 400H IN THE FOLLOWING MANNER. BE SURE THAT YOUR BOOTLOAD IS NOT ANYWHERE IN LOW MEMORY. I PUT MINE AT 0C900H. YOU HAVE TO PUT THE PROGRAMS AT 400H BECAUSE START.UP USES SOME LOW MEMORY. DDT -ICPM2HELI.OBJ -R300 NOW, BOOT UP HELIOS, AND ENTER: IMAGE CPM2H:O,!250,403,64E,:103,103 YOU CAN, OF COURSE, USE ANY NAME YOU WANT. TYPE THE NAME OF THE FILE, AND YOU ARE IN BUSINESS. THE PROGRAM WILL PROMPT FOR THE INPUT AND OUTPUT FILE NAMES. IF YOU WANT TO TRANSFER THE HELI2CPM.OBJ FILE, FOLLOW THE SAME PROCEDURE, EXCEPT THAT THE IMAGE COMMAND IS: IMAGE H2CPM:O,!4C0,403,62B,:103,103 TO TRANSFER FILES FROM CP/M TO HELIOS: WHILE IN CP/M DDT -I(FNAME) -R300 DDT WILL RESPOND WITH THE LAST LOAD ADDRESS, SAY XXXX BOOT UP HELIOS AND ENTER: WRITE FNAME,!4C0,400,XXXX YOU MAY USE ANY BLOCK SIZE YOU WISH, I PICKED 04C0H. IF THE FILE WON'T FIT INTO MEMORY, YOU WILL HAVE TO BREAK IT INTO SMALLER FILES. BECAUSE DDT GIVES THE LAST PAGE OF MEMORY LOADED, THERE MAY BE GARBAGE AT THE END OF THE FILE, BUT PROCESSING THE FILE SHOULD REMOVE THIS. TO TRANSFER TEXT FILES FROM HELIOS TO CP/M WHILE IN HELIOS READ FNAME,103 THEN BOOT UP CP/M SAVE (PAGES) FNAME READ WILL GIVE YOU THE NUMBER OF BYTES IN THE FILE REMEMBER TO CONVERT HEX BYTES TO DECIMAL PAGES NOW DO THE FOLLOWING, WHILE IN CP/M ED FNAME *A *3D *E NOW YOU CAN TYPE IT, EDIT IT, ASSEMBLE IT, ETC. TO TRANSFER HEX FILES FROM HELIOS TO CP/M WHILE IN HELIOS, TYPE THE FILE NAME OF THE IMAGE FILE FOLLOWED BY A COMMA. READ WON'T WORK HERE. THE IMAGE FILE SHOULD ORG AT 103. CAN'T IMAGINE ANYONE WANTING TO DO THIS, AS THESE PROGRAMS WON'T RUN UNDER CP/M. HOWEVER IT IS A WAY OF EXCHANGING IMAGE FILES UNDER CP/M. IF YOU HAVE PREVIOUSLY LISTED THE FILE, YOU WILL KNOW HOW MANY PAGES TO SAVE. AT ANY RATE, ONCE YOU HAVE LOADED THE IMAGE FILE AT 103H, BOOT UP CP/M AND SAVE THE FILE. TO TRANSFER IT BACK TO HELIOS, SEE ABOVE. CHEERS. DU-V77.DOC by Ward Christensen with additional notes by Ron Fowler and Keith Petersen (revised 7/23/81) HOW TO USE DU ver 7.7 DISK UTILITY INSTALLATION: The 7.0 and later versions of DU are designed to be installed with a minimum of trouble. In fact, in al- most all cases, no changes to the source file should be necessary to get DU up and running. This is because DU uses the disk paramter block of CP/M to determine the characteristics of the disk environment. (see the dis- claimer for certain non-standard versions of CP/M 1.4). The only parameter that should need to be changed will be the clock speed flag at 103H. Leave this byte zero if you have a 2 mhz clock. Patch it non-zero for 4 mhz. This is only needed for the "Z" (sleep) command. USE: Any valid command string may be placed as an operand of the original DU command, i.e.: A>DU G0;D;G2;=OK<1A>;D Functions supported: Tnn Seek to track nn (no read) Snn Position to sector nn, and read Gnn Position to group nn and read. G Shows current position V Views the current sector. (assumes ASCII data) Vnn Views nn sectors Fname print directory for file "name", then positions to its directory sector. (Won't position under CP/M 2.x, but see = command below.) =string Ascii search, starting at current sector. hex may be imbedded, or used alone: To find "IN 0FEH": = Ignores bit 7 unless is used. L Re-logs in the current disk. You may pull out a disk, put in a new, and "L" just to log it in. Lx Logs in disk 'x', such as: LB Ux Logs user 'x' for next F command. Gives '?' error if not CP/M version 2.x. D Dump sector, hex + ASCII A Dump sector, ASCII only H Dump sector, hex only note all dump commands (D, A, H) may be optionally followed by a starting and ending address: D0,7F is the same as just D D3,5 A20,3F CHaddr,val,val,val... change hex in sector CAaddr,char string... change ASCII in sector NOTE that may be hex imbedded in the Ascii: ca0,OK<1a> ----> Use W to write changes to disk. Note that the C command echoes the overlaid data for verification. CHaddr-addr,byte or CAaddr-addr,byte repeats a change + advance 1 sector (if below track 2, this advances to next numerical, if 2 or >, advances based on CP/M's normal sector scrambling algorithm, i.e. so + will get the next logical sector of the file - backs up 1 logical sector Note + and - may take an amount: for example, +F steps in 15 sectors. Note also that "-" issued at the first logical sector of the disk will wrap back to the last. Further, "+" issued at the last sector will wrap forward to the first. ? Gives command summary # Prints the disk parameters M Dumps a map of the group allocations for files. Mn Shows which file is allocated to group "n". N Resets CP/M via the BDOS. This may make it possible under some implementations of CP/M to change the disk format (e.g., density, sides, etc) R Reads the sector currently positioned to into memory. Note R (Read) is implicit in the G, +, and - commands, but N-O-T in the S and T commands (I did it because I was tired of disk reading after T command before I had a chance to issue the S command) W Write back the current sector (N-O-T-E may not be used after an F command, as CP/M was used to find the file in the directory X Exit back to CP/M (Must press return). Ctl-c was too easy to hit over modem lines, so I decided on 2-byte (X, CR) to exit. P Toggle printer switch on/off Y Yanks current sector into sequential memory and prints ending address. This allows sectors to be written sequentially into memory starting at 3000H, for later recovery by DDT, etc. Z Sleep - causes the program to pause, such as to look at a dump. Z is 1 sec. Znn is nn tenths of a second on a 2 MHz 8080. < Saves current sector in a save buffer > Gets saved buffer. < and > may be used to move a sector to another place. / Repeats entire command. Defaults or /nn to "forever". NN may be 2 to 65535 multiple commands may be separated by ";" Example: the following commands will erase the b disk directory to all E5's: lb log in b drive g0 position to dir. ch0-7f,e5 fill with e5 < save the sector >;w;+;/16 restore, write, next, repeat 16 ----This could be shortened to: lb;g0;ch0-7f,e5;< >;w;+;/16 INTERPRETATION OF DIRECTORY DATA PRESENTED BY THE DU PROGRAM The following explains the format of a CP/M directory entry as shown by DU, using either the "F" (find file) command, or just doing "D" (dump) of the directory sectors, which are located in groups 0 and 1 on a single density disk. ---------------- Sample result of "FSID.COM" command: 40 00534944 20202020 20434F4D 0000003A *.SID COM...:* 50 33343536 3738393A 00000000 00000000 *3456789:........* First line - 40 00534944 20202020 20434F4D 0000003A *.SID COM...:* || ||| | || || | | || ||^----hex file name-----^ || || ^file name^ || || || || in ASCII || || extent-^^ || || || || || || file size in sectors-^^ || || || ^^-00 = file active || E5 = file erased ^^-displacement of line in directory sector Second line - 50 33343536 3738393A 00000000 00000000 *3456789:........* | | | | ^---allocation group numbers-------^ END FLAGS.ASM is a screen oriented utility to edit the file attributes CP/M 2.X file names. Assemble using MAC. Remember that Digital Research reserves flags F5 through F8 and T3. Application programs should use only T1-T4. It is assumed that you will be using FLAGS with a fairly fast CRT terminal. You'll really hate it on a printing terminal. You have to set several equates to match your terminal. You need to have a screen clear character. If your terminal supports a Home Cursor character, you may use it to make updating the screen a bit easier. Hopefully more people will write utilities that can be easily configured without requiring fancy terminals. I plan to release a version that will allow flags to be updated in multiple files. If you have trouble with FLAGS, make "improvements" or want to make suggestions please let me know. Dick Lieber Voice: 312-326-4014 Computer: (RCPM at times) 312-326-4392 Or via the Chicago CBBS 312-545-8086 or The Hyde Park RCPM 312-955-4493 The SD Directory Program This documentation file concerns SD-NEW.ASM and SD-NEW.OBJ, version 4.1 as of October 20, 1981. Version 4.1 is a significant upgrade of the standard "super-directory" program that most RCP/M systems are now using as their "DIR" executor. SD-41 implements many new features over version 3, and has been tested on a wide variety of CP/M systems prior to release. However, due to the large number of equates in the source file, all possible permutations have NOT been tested, and it should be understood that revision 4.1 is experimental in nature, and should not be placed on-line in remote applications until sufficient time has elapsed to allow for initial bug reports from the field. The most significant difference between version 4.1 and version 3.X concerns the ability of SD to search a range of drives and/or user areas for a specified file. This capability is patterned after FILEFIND, but is significantly more useful in that SD will report the sizes of files matched. A new BDOS intercept routine has been added, which although more involved than the FILEFIND method, is more generally applicable and should run "as-is" on most CP/M systems. Thus, by using SD-41, the use of a separate FILEFIND program should be unnecessary. The basic operation of SD is as in previous releases. You merely type "SD", followed by an optional ambiguous or unambiguous filename (as you would with the CCP directory command). Omitting the filename (i.e., "SD [CR]"), will be interpreted as "SD *.*". Similarly, "SD A:" would imply "SD A:*.*" and "SD B:" would imply "SD B:*.*". In addition to the filename option, up to 8 command line options may be specified. If options are to be specified, then the filename must be EXPLICITLY specified by at least a drive code. Option fields are preceded by a single dollar sign as with most Digital Research programs such as MAC, and may be essentially free-form in format. Example: SD A: $s a D rn u0 fp. Note that the reference to the A drives in "A:" is mandatory. Invoking SD with a command of the form "SD $s a D rn u0 fp" would result in SD thinking that $S was the file to be searched for. Note also that spaces and case within the option field are insignificant (i.e., "$ SADrNu0F p" is equivalent to "$ S A D R N U0 F P"). The only exception concerns the "USER" option which will be explained later. Users should also be aware of two restrictions on the command line format. SD scans the entire command line for a dollar sign preceded by at least 1 blank to delimit the beginning of the option field. For this reason, invoking SD with a command line such as "SD $ $AR" is illegal since SD will consider the first dollar sign to be the option field delimiter. If you need to specify a a filename whose first character is a dollar sign, precede it with a drive code as in "SD A:$ $AR". In this instance, SD will consider the first dollar sign insignificant as it is not preceded by a blank. 1 SD-41 Documentation Notes The second restriction is that command line options may be specified once and only once per invocation. That is, "SD A: $SDS" would be illegal since the "S" option is specified twice. This shortcoming is due to the fact that options can be made into defaults at assembly time. The eight options recognized are: "S" - system option : system files will be included in the output rather than being suppressed. "F" - file option : the directory output will be echoed to a disk file named "SD.DIR" on the DEFAULT drive. If SD.DIR already exists, then the directory output will be APPENDED to the end of the file. Otherwise, SD.DIR will be created as a new file. The append feature allows you to build up one massive file on the default drive containing the directories of all of your disks, without having to concantenate a swarm of individual directory files. If you plan to use this feature often, it willbe simpler for you to have a dedicated version on your MASTCAT disk with RESFLG set TRUE. The advantage of this is that you can work through a pile of disks without having to CTRL-C or specify the "R" option everytime you SD a new disk. Failing to do this will result in the allocation vector being invalid, and FREE size will be wrong. "U" - user option : allows the specification of the user number for the directory of the form "Uxx" where the user # is greater than 0, but not greater than a specified value not to exceed 15. The user option specification will be illegal if the user # is out of range, omitted, or if U is specified on a pre-CP/M 2 system. Note that since the user option requires a parameter (i.e., the user number), the user number must immediately follow the "U" option on the command field. That is, "U1" is legal, but "U 1" is not. In this respect, the U option differs from the other options in that embedded spaces ARE significant. "A" - all users : causes SD to display directories of all user areas starting at the user area specified in the U option or, if U option is omitted, the default user area and continuing up to MAXUSR. "R" - reset option : allows for automatic resetting of the disk prior to performing directory search so that the allocation vector will be updated. Same as doing a CTRL-C when changing disks, but handy if you didn't (such as when running a 2 SD-41 Documentation Notes SUBMIT file). Note that the RESFLG equate will force the R option unconditionally each time SD is run. Useful for SDing a stack of disks with the "F" option, but slows down SD considerably in normal use. "N" - no page option : unconditionally disables the page pause option. Useful when running SD in the "F" and/or "A" modes when you don't want the page prompt slowing you down. Note that SD-41 will not put the page-pause prompt into the output file. "P" - printer option : forces all console output to be echoed to the CP/M list device, with the most significant bit set to 0. "D" - all disk option : allows SD to search all disk drives on-line starting with the disk drive specified or implied with the command line filename. For example, "SD B: $D" will result in SD searching all drives beginning with drive B. "SD *.* $D" will result in SD searching all drives beginning with the drive that is logged in. If an unrecognized option (or illegal user option specification) is detected, then the command line will be played back to the console up to the point where the error was detected. However, if the REPERR option is disabled, then SD will keep its mouth shut and ignore everything on the command line past the illegal field. In this situation, an illegally specified user number would default back to the current user number. The option of DISABLING error reporting was included primarily for systems with hidden doors and secret passageways. Shooting off rockets and clanging bells everytime a holswap starts "experimenting" just calls attention to the fact that there really IS something behind that hollow- sounding wall after all (if you get my drift). As an added convenience, it is possible to "hard-wire" some or all of the command line options. For example, if you want SD to ALWAYS perform a reset of the disk system before putting its show on the road, you can do just that. For details, see the comments preceding the option field lookup table in the assembler source file. Finally, if the all-disk and/or all-user options are enabled, it may be desirable to restrict searches. To facilitate this, a table is included in SD (beginning at label "LODRV" and continuing through "HIDRV"). The table consists of a single byte for each drive to be searched beginning with A. Each byte may be in the range of 0-15 mod 15 and defines the highest user number that SD will search for that particular drive. The highest drive number to search is defined by the length of the table. If four DBs are present between LODRV and 3 SD-41 Documentation Notes HIDRV, then drives A-D can be searched. The source file includes the LODRV-HIDRV table in its maximum configuration for 16 drives. However, it is recommended that you delete DBs referencing drives that aren't available on your system. Although SD will intercept attempts to search non-existant drives, there really isn't any point in allowing SD to always search drive C when you only have 2 logical drives; and depending on how your BIOS is constructed and how long it monkeys around before advising the BDOS of the select error, it could save some time. A THOUGHT FROM "THE LAST REVISOR" If you sit down and figure out the number of permutations of options and equates in the latest versions of SD, you'll understand why there aren't any warranties as to the absence of entomological cybernoids. I leave it to the CP/M community to smoke out what bugs may pop-up when a certain combination of variables occurs. If you find any bugs, please leave an advisory or a fix on either TCBBS or the Hyde Park RCP/M so that they can be exterminated. Finally, my latest revisions expanded the size of the load module considerably, and it is now weighing in at just under 2K if all of the options are enabled. A program of this type has a tendency to be widely propogated throughout a disk library, and since 2K is the block size of most double and quad-density systems, I feel that it is important to try and keep SD under 2K if at all possible. That's why some of my code may be cryptic in some places - I've sacrified clarity for code reductions. If you plan to make public-domain enhancements to SD which would push it over the 2K mark, ask yourself whether its worth tying up an additional disk block. This is also an invitation for someone less lazy than myself to further optimize the code to reduce SD to as compact a package as possible (thus making room for more enhancements). For my part, I quit when I got it under 2K. It works, it fits and I'm ready to move onto something else. I pass the torch. David Boruff Knoxville, Tennessee 4 SD-41 Documentation Notes 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