Purpose and Use Display Commands Positioning Commands I/O Commands Change Commands Search Commands Logging Disks Miscellaneous Examples of command use Interpreting DU lines DU-V87 Installation : Disk Utility by Ward Christensen (revised 6/13/84) DU-v87 is a CP/M utility that provides the user capabilities to inspect and modify data on a diskette directly by specifying either track and sector or by specifying allocation unit. The program may be used to recover files, including directory entries and system tracks that have been destroyed. To invoke the program simply enter "DU" at the CP/M prompt: A>DU An initial command string may optionally be placed as an operand to the "DU" command: A>DU M;X This example will print a map of the disk and then exit. :Display Commands # Shows the disk parameters. A Dumps a sector in ASCII. H Dumps a sector in hex. D Dumps a sector in hex and ASCII. These commands may add ff,tt (from,to) to dump a range of sectors. G Shows the current group, track, and sector. M Maps the disk. Mxx Maps the disk starting at group xx. Vnn Views (much like CP/M type) nn sectors. ? Displays the help screen. :Positioning commands Gnn Positions to and reads the first sector of an allocation group. (nn = the allocation group in hex -- lowest value is 00) Tnn Positions to a specific track (nn = the track in decimal -- lowest value is 0) (does not do a read, must execute the S (sector) command first) Snn Positions to and reads a specific sector. (nn = the sector in decimal -- lowest value is 1) (the T (track) command must be executed first) +nn advances nn sectors and reads. -nn backs up nn sector and reads. (nn = the number of sectors in hex -- if omitted, 1 sector is assumed) If "-" is issued at the first logical sector of the disk, the sector number will wrap back to the last sector. If "+" is issued at the last sector, the sector number will wrap forward to the first sector. :I/O Commands R Reads the currently positioned sector into memory. Note: R (Read) is implicit in the "G", "+", and "-" commands, but NOT in the S and T commands. W Writes the currently positioned sector from memory. < Saves the current sector in a save buffer. > Recalls previously saved sector. Y Saves the current sector in the yank buffer. K Dumps memory to a file previously stored using the Y (yank) command. (requires the operand: [du:]filename[.ext]) :Change commands 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. :Search commands Fname Prints the directory entry for file "name", then positions to its directory sector. F Finds the next occurrence of the same name. =aaaa Scan for aaaa (in ASCII) from current sector. (Specify upper or lower case, user for imbedded hex. :Logging a disk L Logs in a disk. Lx Logs in disk "x", such as: LB. Ux Logs user "x" for next F command. 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) :Miscellaneous X Exits back to CP/M (Must press return). P Toggles printer switch on/off. 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. /nn Repeats previous command nn times. Q Before a command does it "quietly". ( Toggles map display of erased files. B Boots track number of sectors per track. :Examples Multiple commands may be separated by ";". 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 The following commands will erase the 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 a directory entry. 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 "FDU" command: First 40 00445520 20202020 20434F4D 0000003B *.DU COM...:* line || | | || | | | || ||^----hex file name-----^ | | || ^file name^ || || | | || in ASCII || || extent-^ ^ || || || || || || file size in sectors-^^ || || || ^^-0x = file active/user area || E5 = file erased ^^-displacement of line in directory sector Second 50 33343536 3738393A 00000000 00000000 *3456789:........* line | | ^---allocation group numbers-------^ :Installation DU 7.0 and later versions of DU are designed to be installed with a minimum of trouble. In fact, in almost all cases, no changes to the source file should be necessary to get DU up and running. This is because DU uses the disk parameter block of CP/M to determine the characteristics of the disk environment. (see the disclaimer 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.