***************************************************************** * * * Disk Peek and Update (DPU) * * * * Version 1.5 * * * * 9 July 1993 * * * * Copyright © 1992-1993 Frans Zuydwijk * * * ***************************************************************** Table of contents 1. Introduction 2. Distribution 3. Be careful with writing 4. Controlling DPU 5. Functions in the main menu 5.1. Select Device 5.2. Show Device Info 5.3. Show BitMap 5.4. Check Disk 5.5. Zap File 5.6. Zap Disk 5.7. Zap FileSystem 5.8. Zap Rigid Disk Blocks 6. Edit Sector 7. Pulldown menus 7.1. Project menu 7.2. Settings menu 7.3. Zap FileSystem menu 8. Developing environment 9. Thanks 10. Bug reports 11. History 1. Introduction DPU is a program, which enables you to get information about the physical contents of your disks and diskfiles. Furthermore you can change these contents. Starting at version 1.3, DPU requires Release 2.04 or higher. Currently DPU can handle OFS (DOS\0) and FFS (DOS\1) disks. CrossDOS devices (MSD\0 and MSH\0) are recognized, but not all functions can be performed on the MSDOS disks. In Release 2.1 and 3.0 there are new filesystems introduced. Since I do not have documentation about them yet, DPU will treat them as other unknown filesystems. 2. Distribution DPU is NOT Public Domain, but copyrighted freeware : it may be distributed and used freely. DPU may not be sold, but inclusion in a PD-library is permitted as long as only a SMALL fee is charged to cover the costs of copying and distribution. The Fred Fish Library is the perfect example. Program and documentation must be distributed together. It concerns the files DPU, DPU.info, DPU.doc and DPU.doc.info. 3. Be careful with writing. DPU writes data to your disk in two cases : - When you use the Write gadget in the 'Edit' environment. To be on the safe side, you have to press a Shift key at the same time too. - When you select 'Force validation'. DPU sets the BitMap flag in the rootblock to invalid. The validation process of AmigaDOS will set it to valid again after successful validation. If you want to change anything, be sure that you know what you do, it's easy to corrupt an executable file or a whole disk. I do not take any responsibility for what you do with this program. 4. Controlling DPU DPU uses a 640 x 256 screen. On a PAL system this is not a problem, but on a NTSC system this is not always possible without interlace. Therefore DPU asks the Display Database, if a PAL HiRes screen can be opened. For a NTSC system this means, that there must be an Agnus chip which can switch between NTSC and PAL, and that the user must have indicated, that PAL screens can be displayed on his monitor, either by supplying an AddMonitor command in the startup sequence or by copying the file PAL from the MonitorStore drawer to the Monitors drawer. If a PAL HiRes screen is not possible according to the Display Database, an NTSC HiRes interlaced screen will be used. DPU will use your default system text font, provided it is 8 pixels high and 8 pixels wide. If this font has a companion 9 pixels high and 10 pixels wide, this will be used for gadget texts etc. Default Topaz-8 and Topaz-9 will be used. You control DPU by mouse and/or function keys. The button gadgets can be operated by clicking the mouse on them. Operation can also be done by pressing the (function) key indicated on the gadget. In case of writing you must press a shift key together with pressing the function key or clicking the gadget. Requesters are used to ask or supply information. Instead of clicking on an OK or Continue gadget in a requester, you may also press the Return key. Cancel gadgets can only be operated by clicking on them. 5. Functions in the main menu In the main menu you see the possible functions. Choose a function by clicking on the gadget or pressing the corresponding function key. You must select a device first, before you can perform the other functions. The only exception is the Zap File function. If DPU does not recognize the DosType of the currently selected device, you may choose to cancel or to treat the device the same as a known one. If DPU cannot find Rigid Disk Blocks for the currently selected device, the Zap RDB gadget will be ghosted. If you select one of the functions Check Disk, Zap Disk, Zap File- System or Zap Rigid Disk Blocks, access to the current device will be inhibited if the 'Inhibit access' menu item is checkmarked. Selection of any other function will undo an existing access inhibition. 5.1. Select Device This function shows you the disk devices, which DPU has found. If there is a volume present, it's name is shown. Select the device you want to operate upon. You cannot select a device without a volume present. 5.2. Show Device Info This function shows you some information about the selected device. F1: MountList --> Create a MountList entry. All information is taken from the devicelist in memory, except for GlobVec (always set to -1) and Mount (always set to 1). A filename is selected in a ASL filerequester and the MountList entry is appended to this file. The file is created, if it does not exist yet. F10: Menu --> Go back to the main menu. 5.3. Show BitMap This function reads the bitmap sectors of the selected device and shows the usage of the disk in a graphical way. For a floppy disk each rectangle represents a sector, but for harddisk partitions each rectangle represents one or more sectors, as indicated on the screen. A white rectangular line is used as a cursor, to point at one of the sector rectangles. You can move this cursor with the cursor keys and the mouse. The text line just above the gadgets tells you at which sector the cursor is pointing. F1: Disk --> Show the bitmap for the whole disk. F2: System --> Show the bitmap for the filesystem blocks (directory blocks, file headers etc.). F3: Directory --> Show the bitmap for a selected directory. Select the directory in the ASL filerequester. F4: File --> Show the bitmap for a selected file. Select the file in the ASL filerequester. F10: Menu --> Go back to the main menu, or return to Zap File- System if you came from there. 5.4. Check Disk This function reads all sectors of the selected device track by track. Errors encountered are reported. In a requester the current track is reported. You may abort this function by clicking the Cancel gadget in this requester. 5.5. Zap File You are requested by means of the ASL requester to supply the name of the file to be edited. If, for some reason, the ASL requester cannot be used, a simple requester will be used instead. The file is read and shown sector by sector (512 bytes). You can walk through the file using mouse or function keys. F1: Edit --> Edit sector, see the 'Edit sector' section. F2: Find --> Search for an ASCII or HEX string. A requester appears, in which you must enter the string. To indicate ASCII or HEX, click the ASC/HEX gadget to toggle. Searching starts at the current sector. Progress is reported in a requester. You may click the Cancel gadget to abort searching. F3: Find Next --> Search for the next instance of the string. F4: Not used. F5: Goto --> Go to a specific sector. You must specify the number of this sector in a requester. F6: Top --> Go to the first sector. F7: Backward --> Go to the previous sector. F8: Forward --> Go to the next sector. F9: Bottom --> Go to the last sector. F10: Menu --> Go back to the main menu. 5.6. Zap Disk The first sector of the selected device is read and shown. You can walk through the disk using mouse or function keys. F1: Edit --> Edit sector, see the 'Edit sector' section. F2: Find --> Search for an ASCII or HEX string. A requester appears, in which you must enter the string. To indicate ASCII or HEX, click the ASC/HEX gadget to toggle. Searching starts at the current sector. Progress is reported in a requester. You may click the Cancel gadget to abort searching. F3: Find Next --> Search for the next instance of the string. F4: Identify --> Identify current sector. The AmigaDOS file structure is searched for the current sector number and info about the sector is reported, e.g. 'sector is free', or 'sector is block xx in file yy'. Progress is reported in a requester. You may click the Cancel gadget to abort searching. F5: Goto --> Go to a specific sector. You must specify the number of this sector in a requester. To indicate ASCII or HEX, click the ASC/HEX gadget to toggle. F6: Top --> Go to the first sector. F7: Backward --> Go to the previous sector. F8: Forward --> Go to the next sector. F9: Bottom --> Go to the last sector. F10: Menu --> Go back to the main menu. 5.7. Zap FileSystem The root sector of the selected device is read and shown. You can move through the 4-byte longwords in a sector using mouse or cursor keys. If 'Show item info' in the Settings menu is checkmarked, a window is opened at the right side of the screen, showing you info about the highlighted longword and a list of items in this sector. Selecting a list item will highlight the corresponding longword. In case the highlighted longword points to another sector in the filestructure, the Jump gadget becomes non-ghosted and you may jump to that sector. Jumping is performed by pressing F5 or clicking the 'F5: Jump' gadget or clicking the highlighted longword. In this way you can walk through all sectors of the filestructure (root-, directory-, fileheader-, hardlink-, softlink-, file extension- and datablocks). You can walk through the filestructure using mouse or function keys. The functions of the gadgets/function keys vary, depending on the type of the current block. F1: Edit --> Edit sector, see the 'Edit sector' section. F2: Date --> Show the date(s) in the current block. F3: BitMap --> Show the BitMap of the disk/partition. Root block only. F3: Root --> Go to the root block. F4: Locate --> A directory or fileheader block can be located. A requester appears and asks for the name. The AmigaDOS file structure is then searched for a block with this name. If found, go to the block. F5: Jump --> Go to the block, indicated by the currently selected longword. If the longword does not contain a valid sector number, the gadget is ghosted. F6: Parent --> Go to the parent block of the current block. F6: Header --> Go to the fileheader block of the current block. F7: HashChain --> Go to the block, indicated by the hashchain longword. F7: Backward --> Go to the previous data block. F8: Data --> Go to the first data block of the file. F8: Forward --> Go to the next data block. F8: Link --> Go to the block, indicated by the hardlink longword. F9: LinkBack --> Go to the block, indicated by the hardlinkback longword. F9: Extens. --> Go to the block, indicated by the file extension longword. F9: Last Bl. --> Go to the last data block. F10: Menu --> Go back to the main menu. For some special functions, see 7.3. Zap FileSystem pulldown menu. 5.8. Zap Rigid Disk Blocks With this function you can see the contents of the Rigid Disk Blocks on your harddisk. You can change it too, but again : know what you do! When you select a harddisk partition with Select Device, DPU checks if the first physical cylinder of this harddisk contains RDB information. If not, the gadget of this function will be ghosted. DPU reads the RDSK block and shows it to you. From here you can walk through the blocks using mouse or function keys. The functions of the gadgets/function keys vary, depending on the type of the current block. You can move through the 4-byte longwords in a block using mouse or cursor keys. The top line describes the purpose of each longword. If 'Show item info' in the Settings menu is checkmarked, a window is opened at the right side of the screen, showing you a list of items in this block. Selecting a list item will highlight the corresponding longword. F1: Edit --> Edit sector, see the 'Edit sector' section. F2: Go RDSK --> Go to the RDSK block. F2: Go BADB --> Go to the first/next BADB block. F3: Go PART --> Go to the first/next PART block. F4: Go FSHD --> Go to the first/next FSHD block. F5: Go LSEG --> Go to the first/next LSEG block. F6: Top --> Go to the first RDB. F7: Backward --> Go to the previous RDB. F8: Forward --> Go to the next RDB. F9: Bottom --> Go to the last RDB. F10: Menu --> Go back to the main menu. 6. Edit Sector When you select 'Edit' in one of the above functions, a cursor appears and a new set of function gadgets is shown. You may now type over the information in the current sector. The new characters are shown in a different color. You can move the cursor with mouse or cursor keys. Nothing will be changed on disk, unless you select the 'SF5: Write' gadget or press the F5 function key. In both cases you have to press a Shift key at the same time too. F1: Hex/Asc --> Toggle between hexadecimal and Ascii editing. F2: Load --> Load the sector from a file. You are asked to supply a filename and a blocknumber. The bytes for this sector are read from the file, starting at position 'blocknumber * 512'. The bytes of the current sector in memory are overwritten now. If you use the 'Write' function, the sector on disk will be overwritten too, of course. F3: Save --> Save the sector in a file. You are asked to supply a filename. The bytes of the sector are written to this file. In case the file already exists, the bytes are appended to the file. F4: Print --> Print sector. SF5: Write --> Write sector. You must press a shift key too. If the sector contains a checksum, this will be computed before writing, if 'Compute checksums' in the 'Settings' menu is checkmarked. Warning : DPU computes a checksum only, if it recognizes the sector. For instance, if you change the identifying first or last longword of a FFS fileheader, DPU may think it is a datablock and will not compute a checksum. F6: Top --> Move cursor to first byte. F7: Not used. F8: Not used. F9: Bottom --> Move cursor to last byte. F10: Return --> Leave edit environment and return to function. If you did not select 'SF5: Write', the current sector will be unchanged. 7. Pulldown menus 7.1. Project menu - About... : shows the info-requester. - Quit DPU : quits DPU. Shortcut Right Amiga key + Q. 7.2. Settings menu - Skip requesters : if ON, the progress requesters reporting directory/file scanning will be skipped. Advantage : much faster. Disadvantage : you cannot cancel the action and you see no progress on screen. Default OFF. Shortcut Right Amiga key + R. - Show hex offsets : show offsets in sector/block in hexadecimal instead of decimal. Selecting this is effective when the next sector is displayed. Default OFF. Shortcut Right Amiga key + H. - Show item info : if ON, a window will appear at the right side of the screen during Zap FileSystem or Zap RDB. In this window you see a list of the items in the current sector. Selecting an item in this list will highlight the corresponding longword in the sector. In Zap FileSystem you see also information about the highlighted longword in this window. Default ON. Shortcut Right Amiga key + I. - Inhibit access : inhibit access to current device by others. Only applicable for the functions Check Disk, Zap Disk, Zap FileSystem and Zap Rigid Disk Blocks. The status of the current device is changed immediately. Default ON. - Compute checksums : compute checksums for floppy bootblocks, filesystem blocks and Rigid Disk Blocks. Default ON. You should have a good reason to set this OFF. 7.3. Zap FileSystem menu This menu will be accessible only during Zap FileSystem. It contains options, which may be useful when trying to repair a filesystem. - Goto sector : go to a specific sector. You must specify the number of this sector in a requester. To indicate ASCII or HEX, click the ASC/HEX gadget to toggle. If you use this, DPU may loose track of the position in the filesystem. 'Identify sector' will tell you the position then. - Identify sector : search the filesystem to identify the sector. - Find references : search the filesystem to find all references to the sector. On a Old FileSystem (OFS) disk the data blocks are not searched, although they contain references to their header block and next data block. - Force validation : force AmigaDOS to validate the disk. DPU inhibits access, reads the rootblock, rewrites it with the BitMap flag set to invalid and releases access again. This will start the validation process of AmigaDOS. 8. Developing environment Computer : A2000, 1 MB Chip RAM, 2 MB Fast RAM. Devices : - trackdisk.device (floppy disk). - supradirect.device (Supra WordSync Series II harddisk). - janus.device (Amiga partition of harddisk on PC side of XT Bridgeboard). OS : 2.04 Compiler : SAS/C 6.3 9. Thanks I like to thank the following people for their comments, suggestions, bug reports and testing : Albert-Jan Brouwer, Arnout Grootveld, Arthur T. Murray, Bert Hooyer, Ekke Verheul, Marcel Offermans, Paul van der Valk, Peter Struijk, Steve Nordquist. 10. Bug reports Bug reports, comments etc. can be sent to: Frans Zuydwijk Konijnenweide 84 2727GH Zoetermeer Nederland FidoNet : 2:281/614 InterNet : zuydwijk@vcgn.hacktic.nl 11. History - Version 1.0 : 9 May 1992 First release. - Version 1.1 : 8 June 1992 New : - The ASL filerequester will be used in case of Release 2.04 or higher. Bugfix : - The information in the BitMap Extension blocks was misinterpreted (partitions >= 50 MB). - Version 1.2 : 23 June 1992 New : - Requester looks are changed. - Shift keys to indicate ASCII or HEX are replaced by a toggle gadget in the requesters. - Not used gadgets are ghosted. - AmigaDOS requesters are suppressed during Select Device. Bugfix : - If the user set a high keyboard repeat rate with Prefs/Input, DPU could get an Address Error or hang during moving with the cursor keys. - Device names of more than 3 characters are no longer chopped. - Version 1.3 : 23 November 1992 New : - Release 2.04 or higher is required. - Faster find in Zap File and Zap Disk. - Pulldown menus : - Project : About and Quit. - Settings : Toggles for progress requesters, hex offsets, inhibit access and compute checksums. - Zap FileSystem : Goto sector, Identify sector, Find references and Force validation. - Load and save functions in Edit Sector. - Bitmaps of system blocks, directory, file. - In case of unknown DosType, Zap FileSystem and Show BitMap are not allowed, and writing is not allowed in Zap Disk. - Some minor changes. - Version 1.4 : 19 December 1992 New : - Default system text font used, if it's 8 x 8. - Jumping can be done by clicking on the highlighted longword (Zap FileSystem). Bugfix : - DPU reported an error wrongly about too many bitmap pointers (partitions >= 50 MB). - Version 1.5 : 9 July 1993 New : - In case of unknown DosType, the user has the choice whether to continue or not. - A MountList entry can be created from devicelist info in Show Device Info. - On a NTSC system, a PAL screen will be opened instead of an interlaced NTSC screen, if this is possible according to the Display Database. - 'Show item info' in Settings menu will bring up a window with item information and item list (Zap FileSystem and Zap RDB). - In Show BitMap you can move a cursor and see at which sector the cursor is pointing. - If text overscan is set with Prefs, the screen will be opened with that size and the window will be centered on the screen.