$DISKBLOCK055.ABpDISKBLOCK055.ABACKUP/NOASSIST/NODISMOUNT/COMMENT=VAX/VMS SPKITBLD Procedure/INTER/LOG/VERIFY DISK$USER:[RANCE.DISKBLOCK.KIT055.MAIN]*.* DISK$DUMP:[PUBLIC]DISKBLOCK055.A/LABEL=(DISKBLOCK)/SAVE/BLOCK=9000/GROUP=25VAX/VMS SPKITBLD Procedure RANCE  !|V6.2 _VIVIAN::  _$1$DUA43: V6.2 $T,*[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2+,./ 4-cJ:0123 KPWO5+6 !HF78Zc*9G HJ % VAX-11 Librarian V04-00lY3HF|-Fv#v5b&ATTACH Bug_reportsCHECKSUMM COPY_FILEDEPOSITBDESELECT  DIRECTORY DUMPEXAMINE<ExamplesFILL6HELP2 Installation: New_Features*ODS27OverviewHREADRESTOREREWRITESAVESEARCH@SELECT SETSHOW"SPAWNJWRITEDILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports g RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsD8yǘ RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVEDFHz 1 REWRITEB Use the rewrite command to write the 512 byte buffer back to theB last block read or written. You do not need to specify a block number.eA You must SELECT a drive or file and then read or write a block t before issuing this command.F To see the block that would be used for a rewrite command issue the  SHOW command.a DISKBLOCK> REWRITE DISKBLOCK> REWRITE /CHECKSUM" DISKBLOCK> REWRITE /FORCED_ERROR2 Command_Qualifiers /FORCED_ERRORFNew_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsг RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsz9c RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_F oz 1 DIRECTORYI DIRECTORY accepts a filename including the * and % wildcard characters. J (but excluding any [, ] or directory specification) and displays the FIDK and LBN of the file header and the FULL FILENAME (including directories).h F It will work on ODS2 mounted or foreign mounted disks so long as the4 index file has been mapped with the SELECT commandG Once the header has been read the Backlink in the file header will behF used to find the directory name, u$!z1 DUMP9 Use the dump command to dump the entire contents of the%# 512 byte buffer to your terminal.i6 The contents will be ALL 0s if you have not issued a READ or WRITE command 2 Command_Qualifiers/HEX (default)e? Use the /HEX switch to cause the data to be displayed in HEX, @ this is the default behaviour. The addresses displayed to theB right of the data are also in HEX. The data bytes are layed out3 the same way as the output of a DCL DUMP command.u ; Because of its potential to corrupt disks you should onlyB use Diskblock in extreme desperation or on a disk which you have backed up.  - You need LOG_IO privilege to run DISKBLOCK.9 Type EXAMPLES at the Topic? prompt for more informationwwl6HF 1 ExamplesE Search shows the use of the search command to locate a file header,7 and then to copy the file to a normally mounted disk.= This may be used even on a disk with a corrupted INDEXFILE.H Modify_d  RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsz RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsf RANCE InstallationHELPOverviewExamples {F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file? header. This will work even if the disk is mounted /FOREIGN.eI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you to $Vz 1 EXAMINE H Use the examine command to examine a particular address in the buffer.H You must specify an address within the 512 byte buffer. The data willG be shown in Hex, Octal, Decimal and Ascii. The default radix for theeF address is decimal but you may use the %X or %O operators to specify a Hex or Octal buffer address.5 The maximum buffer address for EXAMINE /TIME is 504i5 The maximum buffer address for EXAMINE /LONG is 508 5 The maximum buffer address for }z 1 DEPOSIT F Use the deposit command to deposit new data to a particular locationI in the buffer. You must specify an address within the 512 byte buffer.lH You must also specify up to a longword of data. The default radix forH the address and data is decimal but you may use the %X or %O operators to specify HEX or OCTAL. DISKBLOCK> DEPOSIT %X1F %X4142 | |h( | +-------Data+ +-------------AddrP2U$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2jc"F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file? header. This will work even if the disk is mounted /FOREIGN.eI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you to${1 FILLG The fill command fills the internal data buffer with a repeated valuei e.g.( FILL 0 clear the entire bufferD FILL /BYTE 2 fill the buffer with a repeated %x02020202 pattern FILL /LONG %X12345678f 2 Parameters Data2 Specifies the data to be deposited to the buffer2 Command_Qualifiers/LONGWORD (default)SB Specifies that the data is to be written to successive Longwords within the buffer& DISKBLOCK> FILL /LONGWORD %X801234 ARCHSHOWSETSPAWNATTACHODS2 Bug_reports,lΗ RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsFmΗ RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsclRF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file? header. This will work even if the disk is mounted /FOREIGN.eI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you to{ 1 CHECKSUM (see also WRITE /CHECKSUM)J Calculates and displays a 16 bit checksum for the buffer. The algorithmA used is the same as that used for an ODS2 file header checksum.e I If you wish to write this checksum to the disk you should deposit it tocI the last word location in the buffer before writing the buffer to disk,N by using either ' DISKBLOCK> DEPOSIT /WORD 510 nnnnnt ori! DISKBLOCK> CHECKSUM /DEPOSIT2 Command_Qualifiers/DEPOSITCW{1 SAVEI The SAVE command can be used to save data to a standard RMS file beforeuJ making modifications in order to be able to RESTORE the same data later.? This may enable you to "undo" any damage caused by a mistake.mE You may supply a filespec for the file which will be created (on a u? FILES11 device). The default filespec for this operation is  SYS$SCRATCH:DISKBLOCK.DMP ) DISKBLOCK> SAVE SYS$LOGIN:BLOCK_234.DMPO 2 Parametern Filename* SpecifieORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsPTƖ RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports8+ז RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEXF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file? header. This will work even if the disk is mounted /FOREIGN.eI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you to D{ 1 RESTOREI Use the RESTORE command to restore data from a file created by the SAVEI command. If you do not specify /BLOCKS then the data will be restored K to the 512 byte main read write buffer. If you specify /BLOCKS then the 5 data will be restored to the selected disk or file.nC The file must have been previously created with a DISKBLOCK> SAVE@ command. You may supply a filespec for the file. The default: filespec for this operation is SYS$SCRATCH:DISKB[F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file? header. This will work even if the disk is mounted /FOREIGN.eI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you to \dl{1 SEARCHB Use the search command to scan a range of Logical Blocks on the C selected drive, or a range of Virtual blocks in the selected filei; looking for a particular string of characters or Integer.I; A search of a disk will run at almost the maximum spiral e read rate of the disk.G You can obtain a status report showing the last block checked and theo= time by typing ^T (control T) whilst the search is running. 5 You can cancel the search by typing ^C (cont^F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate fileH? header. This will work even if the disk is mounted /FOREIGN._I There are commands to SAVE and RESTORE the buffer so that you can keep LJ a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you toesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsRd RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportse{d RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECT lW{1 SHOWI The show command gives information about the current DISKBLOCK session.eG It tells you the full name of the selected drive or file, the maximumnH block number on this drive or file, whether WRITEs are allowed or the; selection is READ_ONLY, the number of the last block readeA or written, whether the buffer has been modified since the lasthI read/write and it displays the Indexfile mapping pointers if available.g DISKBLOCK> SHOWt 2 ExampletB%DSKB-I-DISK_F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file@? header. This will work even if the disk is mounted /FOREIGN.eI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you toa_{1 SETWG The set command defines or changes some characteristic of the currentn DISKBLOCK SESSION. 2 WRITE D The set write command enables writing of the selected DISK or FILEG the set nowrite command disables writing of the selected DISK or FILEh$ This will override a setting from  DISKBLOCK> SELECT /[NO]WRITE2 LOGiH SET LOG causes all output to be written to a logfile as well as to theB terminal screen. You may specify a filename for the log file. 3bF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate fileL? header. This will work even if the disk is mounted /FOREIGN.SI There are commands to SAVE and RESTORE the buffer so that you can keep EJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you to3S$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2"" c#g{1 SPAWNK Spawns a new subprocess, suspending but not ending your current DISKBLOCKIH session. This is useful if you wish to use some other utility such as3 DUMP without losing your current process context.  DISKBLOCK> SPAWN: $ DUMP /HEADER /BLOCK=COUNT=0 $1$dja4:[000000]indexf.sys9 -------------------------------------------------------a9 --------Formatted file header appears here-------------e9 -------------------------------------------------------g $ lo RITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports%F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file@? header. This will work even if the disk is mounted /FOREIGN.eI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you torieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEbF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to L= modify the contents of a file without ta'D>m{1 ATTACHC Permits you to switch control of your terminal from your current I) process to another process in your job. 2 Parametere  Process_NameA Specifies the name of a parent process or spawned subprocess toLB which control passes. The process must already exist, be part ofC your current job, and share the same input stream as your current-C process. However, the process cannot be your current process or a-0 subprocess created with the /NOWAIT qualifier. 2 Example MAIL> SPAWNS $ SET PROCESS /NAME=DISKBLOCKe $ MC DISKBLOCK DISKBLOCK> ATTACH MAIL You have 3 new messagesw  MAIL> ATTACH DISKBLOCK DISKBLOCK>wwoses the currently open log file withoutt opening a new logfile. 3 ExampleF DISKBLOCK> SET LOG DISK_3p@ %DSKB-I-CREATED, Created file DISK$USERS_2:[RANCE]DISK_3.LOG;1 DISKBLOCK> SET LOGD %DSSKB-I-LOGCLOSE, Logfile DISK$USERS_2:[RANCE]DISK_3.LOG;1 closedC %DSKB-I-CREATED, Created file DISK$USERS_2:[RA)F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate filey? header. This will work even if the disk is mounted /FOREIGN.SI There are commands to SAVE and RESTORE the buffer so that you can keep EJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you torieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to K= modify the contents of a file without taki dXs{1 ODS2E The format of an ODS2 file header supplied here can be used to findIF specific fields and flags within a file header to be altered. It isE important to calculate a new checksum using the checksum command ifsF any part of a file header is altered, this checksum is calculated byC adding together all words in the buffer, discarding any overflow.-I The home block has two checksums the checksum at byte 510 is calculatedpF the same way as a file header checksum. ,F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file@? header. This will work even if the disk is mounted /FOREIGN.eI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you torieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to K= modify the contents of a file without taki/lM1 ODS2E The format of an ODS2 file header supplied here can be used to findIF specific fields and flags within a file header to be altered. It isE important to calculate a new checksum using the checksum command ifsF any part of a file header is altered, this checksum is calculated byC adding together all words in the buffer, discarding any overflow.-I The home block has two checksums the checksum at byte 510 is calculatedpF the same way as a file header checksum. #wExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsN RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsdJ| RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREW The checksum at byte 58 is C calculated by adding together the first 29 words in the block andA discarding any overflow. 2 INDEXF.SYSC The beginning of INDEXF.SYS is used for Home Blocks, Bitmaps etc.l8 To find the file header for a file with file id of nnn3 FACTOR = (4 * hm2$w_cluster) + hm2$w_ibmapsized6 VBN of file header for file id nnn = FACTOR + nnn1 To access File Headers on an ODS2 drive you canE3 DISKBLOCK> SELECT/FILE $n$dcun:[000000]INDEXF.SYS 2 Home_block1F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate filey? header. This will work even if the disk is mounted /FOREIGN.-I There are commands to SAVE and RESTORE the buffer so that you can keep oJ a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you torieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to K= modify the contents of a file without taki ey1 InstallationoH To install DISKBLOCK you need to copy the kit to a directory on your 4 local system where you have 1500 blocks of quota.B Then type @SYS$UPDATE:VMSINSTAL DISKBLOCK dev:[dir] to install C diskblock. DISKBLOCK installation DOES NOT modify any VMS files.l eC After deleting all files except DISKBLOCK.EXE and DISKBLOCK.HLBl$ it will take up about 400 blocks.E To use this help file from within DISKBLOCK you may either copy theaD library tow($DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2!"34> This enables you to read a file header from disk, modify it B and then use the modified header to copy the file without having9 to write the modified header back to the original disk.wwlHF 1 DIRECTORYI DIRECTORY accepts a filename including the * and % wildcard characters.J (but excluding any [, ] or directory specification) and displays the FIDK and LBN of the file header and the FULL FILENAME (including directories). F It will work on ODS2 mounted or foreig5F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file@? header. This will work even if the disk is mounted /FOREIGN.eI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you torieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to K= modify the contents of a file without takiEy1 HELP3 DISKBLOCK is a low level disk block editing tool.tJ It can be used to read /modify /write LBNs on a disk or VBN's in a file.9 Type OVERVIEW at the Topic? prompt for more information[ww install C diskblock. DISKBLOCK installation DOES NOT modify any VMS files.l eC After deleting all files except DISKBLOCK.EXE and DISKBLOCK.HLBl$ it will take up about 400 blocks.E To use this help file from within DISKBLOCK you may either copy theaD library to ;Sy 1 OverviewG DISKBLOCK is a tool for reading and writing Logical Blocks on a disk f or Virtual Blocks in a file.F Diskblock ingores all locking activity on the selected Disk or File.D There is a buffer which holds a copy of the block which you read, F you can modify the contents of this buffer using EXAMINE and DEPOSITI commands and then REWRITE it to the same block, WRITE it to a differentoG block or SELECT a new disk or file and WRITE the buffer to any block.o9F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate fileR? header. This will work even if the disk is mounted /FOREIGN.-I There are commands to SAVE and RESTORE the buffer so that you can keep -J a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you torieval pointers will not be read.a 2 Examplese DISKBLOCK> SELECT $2$DRA2:K1 DISKBLOCK> SELECT SYS$SYSTEM:SYSDUMP.DMP /FILE' DISKBLOCK> SELECT $2$DUS0: /OVERRIDEf& DISKBLOCK> SELECT DISK$USER2 /NOMAP. DISKBLOCK> SELECT MYNODE$DUA1: /HOMELBN=nnn3 DISKBLOCK> SELECT DRA3: /INDEXLBN=nnn /FACTOR=854/FILEnF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch ry1 New_Features2 V4.0_New_FeaturesoC SELECT /FILE allows you to select a file and then do virtual I/O.eE This can be useful for writing to a file which is locked by anotheriJ user, or for searching a large file for a text string or Longword value.> Modifications made by Burnace Leung to create DSKBLK_V3 have? been included as COPY_FILE and DIRECTORY. See EXAMPLE SEARCHn? for an example of copying a file from a foreign mounted disk.e@ READ/FID has been added to F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file? header. This will work even if the disk is mounted /FOREIGN.aI There are commands to SAVE and RESTORE the buffer so that you can keep IJ a copy of the original block and undo changes if they do not work as you expect.iH There is a CHECKSUM command to enable you toDy 1 ExamplesE Search shows the use of the search command to locate a file header,f7 and then to copy the file to a normally mounted disk.l= This may be used even on a disk with a corrupted INDEXFILE.aH Modify_disk shows the use of DISKBLOCK to repair a damaged home block.H Modify_MFD shows the use of DISKBLOCK to change the file attributes of [000000]000000.DIR= Undelete_file shows the use of DISKBLOCK to undelete a filei2 SearchF In this example DISKBLOC.ltNʀ RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports6A쀙 RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports4 - RANCE InstallationHELPOvervieF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file? header. This will work even if the disk is mounted /FOREIGN.aI There are commands to SAVE and RESTORE the buffer so that you can keep IJ a copy of the original block and undo changes if they do not work as you expect.iH There is a CHECKSUM command to enable you to@F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file-? header. This will work even if the disk is mounted /FOREIGN.LI There are commands to SAVE and RESTORE the buffer so that you can keep J a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you to $z1 SELECT: Use the SELECT command to select a new drive or file for; reading and writing. Before selecting a drive it must bel? mounted foreign (unless you specify the /OVERRIDE qualifier).r> SELECT automatically DESELECTS any previously selected drive% or file before selecting a new one.oG By default LBN 1 (HOME BLOCK LBN) will be read to locate the primary A@ index file header. If this fails because of hardware error orK corrupted home block then index file retF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file? header. This will work even if the disk is mounted /FOREIGN.4I There are commands to SAVE and RESTORE the buffer so that you can keep J a copy of the original block and undo changes if they do not work as you expect.CH There is a CHECKSUM command to enable you toGU.z 1 DESELECTF Use the DESELECT command to free a drive or file previously selectedF with a select command, this may help to prevent accidentally writingG to a drive/file that you have finished with. An implicit DESELECT isC9 performed for you whenever you SELECT a new drive/file.gF Diskblock will not allow you to exit if the buffer has been modifiedD and there is still a Drive selected, you should Deselect the drive before exiting.p DISKBLOCK> DESELECT wwtGF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file ? header. This will work even if the disk is mounted /FOREIGN.4I There are commands to SAVE and RESTORE the buffer so that you can keep J a copy of the original block and undo changes if they do not work as you expect.CH There is a CHECKSUM command to enable you to?0>$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2o"D=RESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsdo , RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports. RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsF& DISKBLOCK> DEPOSIT /BYTE %O10 %X4142 2 /STRING7 Causes the DATA to be interpreted as an ASCII string.I The address should be sufficiently small so that ALL of the string will# fit between ADDRESS and byte 512.B To include lower case letters, or spaces, you must use "Quotes".) DISKBLOCK> DEPOSIT /STRING 410 NEW_DATA+ DISKBLOCK> DEPOSIT /STRING 410 "New Data"2 /TIMED Causes the DATA to be interpreted as a VMS ASCII Date-Time string.E The input string is NOT THE SAMEGF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate fileR? header. This will work even if the disk is mounted /FOREIGN.-I There are commands to SAVE and RESTORE the buffer so that you can keep -J a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you torieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without ta b1z1 READB The read command is used to transfer data to Diskblocks internalJ 512 byte buffer. You must SELECT a drive or file before a read command.6 You can read a Logical Block from the selected disk.* Or a file header from the selected disk., Or a Virtual Block from the selected file./ You must specify a Block Number or a File ID.s@ The default radix for the Block is decimal but you may use the< %X or %O operators to specify a Hex or Octal block number.G WheniF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate fileC? header. This will work even if the disk is mounted /FOREIGN.PI There are commands to SAVE and RESTORE the buffer so that you can keep J a copy of the original block and undo changes if they do not work as you expect.EH There is a CHECKSUM command to enable you tod}7z1 WRITE See also REWRITE7 Use the write command to write the 512 byte buffer toe( A Logical Block on the selected drive,) Or a File Header on the selected drive,L* Or a Virtual Block in the selected file./ You must specify a Block Number or a File ID.u@ The default radix for the Block is decimal but you may use the< %X or %O operators to specify a Hex or Octal block number.> You must SELECT a drive or file before issuing this command. DISKBLOCK> WRITE %xFjF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file? header. This will work even if the disk is mounted /FOREIGN._I There are commands to SAVE and RESTORE the buffer so that you can keep LJ a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you toUF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate filet? header. This will work even if the disk is mounted /FOREIGN.nI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you tod\z 1 COPY_FILE (See also EXAMPLE SEARCH)wJ Copy_file will copy a file from a FOREIGN mounted or corrupted disk, as $ well as from an ODS2 mounted disk.H Diskblock will first verify that the block or buffer contains a valid G file header, if not then a diagnostic message will be issued and you ( will be asked if you wish to continue.B The default output directory is SYS$SCRATCH: The default output0 filename is the name of the file being copied.@ NOTE that thOF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file-? header. This will work even if the disk is mounted /FOREIGN.wI There are commands to SAVE and RESTORE the buffer so that you can keep J a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you tosF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file? header. This will work even if the disk is mounted /FOREIGN.nI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you toQF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate fileH? header. This will work even if the disk is mounted /FOREIGN._I There are commands to SAVE and RESTORE the buffer so that you can keep LJ a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you torieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without tarieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without taTF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate fileH? header. This will work even if the disk is mounted /FOREIGN._I There are commands to SAVE and RESTORE the buffer so that you can keep LJ a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you torieval pointers will not be read.D 2 Parameters device_nameL. Specifies the name of the disk to be selected file_nameo5 Specifies the name of the file to be selectede (requires SELECT/FILE)2 Command_Qualifiers/FILEuF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to I= modify the contents of a file without ta$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2"Urieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without taWF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file@? header. This will work even if the disk is mounted /FOREIGN.eI There are commands to SAVE and RESTORE the buffer so that you can keep KJ a copy of the original block and undo changes if they do not work as you expect. H There is a CHECKSUM command to enable you tos the name of the file to create 2 Qualifieri/BLOCKSd /BLOCKS=(keyword[,...])I Using the /BLOCKS switch you can specify a starting block and an endinghD block or a count of the number of blocks to save. You can specifyD both a START block and an END block, or a START block and a COUNT,4 you may not specify both an END block and a COUNT.< The default START block is 0 for a DRIVE and 1 for a FILE.* DISKBLOCK> SAVE /BLOCKS=(START:0,END:10)< This command will save blocks 0 throrieval pointers will not be read.D 2 Parameters device_nameL. Specifies the name of the disk to be selected file_nameo5 Specifies the name of the file to be selectede (requires SELECT/FILE)2 Command_Qualifiers/FILEuF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to I= modify the contents of a file without ta/STRING /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringe on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADERs /HEADER=filespecoD Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a di[F When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file-? header. This will work even if the disk is mounted /FOREIGN.cI There are commands to SAVE and RESTORE the buffer so that you can keep J a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you torieval pointers will not be read.D 2 Parameters device_nameL. Specifies the name of the disk to be selected file_nameo5 Specifies the name of the file to be selectede (requires SELECT/FILE)2 Command_Qualifiers/FILEuF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to I= modify the contents of a file without tarol C).P; You must SELECT a drive/file before issuing this command.(K Due to the algorithm used it cannot be guaranteed that a match that spansOK block boundaries will be reported. Diskblock works with buffers that aresM (approximately) one track in size, any data that spans two of these bufferst, will not generate a match during a search.2 Command_Qualifiers/OUTPUTn /OUTPUT=filespeca@ Use the /OUTPUT qualifier to cause the output to be written to= a file instead of to thel/STRINGh /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringN on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADER0 /HEADER=filespec D Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a dirieval pointers will not be read.D 2 Parameters device_nameL. Specifies the name of the disk to be selected file_nameo5 Specifies the name of the file to be selectede (requires SELECT/FILE)2 Command_Qualifiers/FILEuF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to I= modify the contents of a file without tarieval pointers will not be read.D 2 Parameters device_nameL. Specifies the name of the disk to be selected file_nameo5 Specifies the name of the file to be selectede (requires SELECT/FILE)2 Command_Qualifiers/FILEuF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to I= modify the contents of a file without taaF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate file-? header. This will work even if the disk is mounted /FOREIGN.-I There are commands to SAVE and RESTORE the buffer so that you can keep QJ a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you to The default logfile is SYS$SCRATCH:DISKBLOCK.LOG.D@ Opening a new logfile causes the current logfile to be closed.3 Command_Qualifiers/CLOSEG The command SET LOG /CLOSE closes the currently open log file withoutt opening a new logfile. 3 ExampleF DISKBLOCK> SET LOG DISK_3p@ %DSKB-I-CREATED, Created file DISK$USERS_2:[RANCE]DISK_3.LOG;1 DISKBLOCK> SET LOGD %DSSKB-I-LOGCLOSE, Logfile DISK$USERS_2:[RANCE]DISK_3.LOG;1 closedC %DSKB-I-CREATED, Created file DISK$USERS_2:[RArieval pointers will not be read.D 2 Parameters device_nameL. Specifies the name of the disk to be selected file_nameo5 Specifies the name of the file to be selectede (requires SELECT/FILE)2 Command_Qualifiers/FILEuF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to I= modify the contents of a file without ta DISKBLOCK># DISKBLOCK> SPAWN SHOW DEVICE DJA4D 2 Parameter  Command_String: Specifies a command string to be performed when the DCL  subprocess is activewwCLOSE closes the currently open log file withoutt opening a new logfile. 3 ExampleF DISKBLOCK> SET LOG DISK_3p@ %DSKB-I-CREATED, Created file DISK$USERS_2:[RANCE]DISK_3.LOG;1 DISKBLOCK> SET LOGD %DSSKB-I-LOGCLOSE, Logfile DISK$USERS_2:[RANCE]DISK_3.LOG;1 closedC %DSKB-I-CREATED, Created file DISK$USERS_2:[RA The checksum at byte 58 is C calculated by adding together the first 29 words in the block andA discarding any overflow. 2 INDEXF.SYSC The beginning of INDEXF.SYS is used for Home Blocks, Bitmaps etc.l8 To find the file header for a file with file id of nnn3 FACTOR = (4 * hm2$w_cluster) + hm2$w_ibmapsized6 VBN of file header for file id nnn = FACTOR + nnn1 To access File Headers on an ODS2 drive you canE3 DISKBLOCK> SELECT/FILE $n$dcun:[000000]INDEXF.SYS 2 Home_block SYS$COMMON:[SYSHLP]DISKBLOCK.HLB or define logical name; DSKB_HLB to point to be dev:[dir]filename of the library.oww. 2 INDEXF.SYSC The beginning of INDEXF.SYS is used for Home Blocks, Bitmaps etc.l8 To find the file header for a file with file id of nnn3 FACTOR = (4 * hm2$w_cluster) + hm2$w_ibmapsized6 VBN of file header for file id nnn = FACTOR + nnn1 To access File Headers on an ODS2 drive you canE3 DISKBLOCK> SELECT/FILE $n$dcun:[000000]INDEXF.SYS 2 Home_block =8$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2"frF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate fileH? header. This will work even if the disk is mounted /FOREIGN._I There are commands to SAVE and RESTORE the buffer so that you can keep LJ a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you to2 V5.0_New_Features:F Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,tB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.KD Control C and Control T handling now work during Directory as well as search operations.t= There has been a syntax change for READ /FID and WRITE /FIDl4 There are a number of new commands and qualii Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in rieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without tarieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without ta2 V5.0_New_FeaturesO3 Diskblock V5 has been totally re-written in VAXC.t= There are major improvements in the area of error handling,FB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.1D Control C and Control T handling now work during Directory as well as search operations.-= There has been a syntax change for READ /FID and WRITE /FIDT4 There are a number of new commands and qualifiers. 3 SET_LO SEL, Disk _$1$DUC45 has LBNs 0 to 2376152 (%X002441D8)-%DSKB-I-WRTENAB, Operating in READ/WRITE modee5%DSKB-I-NOTACCES, No blocks have been read or writtenlO%DSKB-I-BUFNOTMOD, Buffer HAS NOT been modified since last Read/Write operationo:%DSKB-I-INDEXFMAP, Index File has been successfully mapped8%DSKB-I-FACTOR, Factor=85, FID 1 is VBN 86 of Index File2 Count: 6 LBN: 02 Count: 3 LBN: 9662 Count: 3 LBN: n Bug_fixesiD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match. = The diskblock help library no longer has to be in  Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in /STRINGr /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringi on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADERh /HEADER=filespec D Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a di Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in r Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in  enable you to specify a File ID and read the corresponding LBN.e< A /CHECKSUM qualifier has been added to the write command.6 This makes life simpler when modifying file headers.# A number of bugs have been fixed.o2 V4.1_new_featuresRD There are only three very minor differences between DISKBLOCK V4.0 and DISKBLOCK V4.1.S* The handling of HELP is now more robust.8 The search command can now be cancelled by typing a ^C0 DISKBLOCK can now be installed with VMSINSTAL.rieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without tau Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in  Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in wF When you SELECT a disk, diskblock will attempt to map the Index FileJ If it is successful then any command which requires an LBN (READ, WRITE,I COPY etc...) will also accept a FID and operate on the appropriate fileH? header. This will work even if the disk is mounted /FOREIGN._I There are commands to SAVE and RESTORE the buffer so that you can keep LJ a copy of the original block and undo changes if they do not work as you expect.-H There is a CHECKSUM command to enable you to $DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2"wrieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without ta2 V5.0_New_Features:F Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,tB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.KD Control C and Control T handling now work during Directory as well as search operations.t= There has been a syntax change for READ /FID and WRITE /FIDl4 There are a number of new commands and quali/STRINGh /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text string> on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADER  /HEADER=filespecD Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a di{ Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in rieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without ta Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in /STRINGh /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringN on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADER0 /HEADER=filespec D Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a di Bug_fixes D DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYSe New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match. = The diskblock help library no longer has to be in /STRINGh /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringN on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADER0 /HEADER=filespec D Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a di/STRINGh /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringN on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADER0 /HEADER=filespec D Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a di Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in recalculate the checksums( for ODS2 file headers and home blocks.@ There is a DIRECTORY command which will find the header for a - file (even if the disk is mounted /foreign)-H There is a COPY command which will enable you to treat any block on a L disk as a file header and copy the LBNs described by its mapping pointers 7 to a new file (even if the disk is mounted /foreign).- C There is a SEARCH command which will search the entire disk/file -E (or any range of blocks) for a pK is used to find a file on a corrupted disk> and then to copy the file to the users SYS$SCRATCH directory $ RUN SYS$SYSTEM:DISKBLOCK* DISKBLOCK V5.5H Copyright (c) Digital Equipment Corp. 1995. All rights Reserved. $ MOUNT /FOREIGN $1$DUA42o# DISKBLOCK> SELECT $1$DUA42 /NOMAPp' DISKBLOCK> SEARCH /HEADER=X.EXT /FULLsR %DSKB-I-SEARCHING, Searching blocks 0 - 2376152 for HEADER "X.EXT;*" at 13:23:45! LBN: 1188943, Filename: X.EXT;2b: FID: 1032 V5.0_New_Features:F Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,tB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.KD Control C and Control T handling now work during Directory as well as search operations.t= There has been a syntax change for READ /FID and WRITE /FIDl4 There are a number of new commands and quali2 V5.0_New_Features:F Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,tB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.KD Control C and Control T handling now work during Directory as well as search operations.t= There has been a syntax change for READ /FID and WRITE /FIDl4 There are a number of new commands and quali Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in LOCK.DMP, DISKBLOCK> RESTORE SYS$LOGIN:BLOCK_234.DMP 2 Parameter( Filename( Specifies the name of the file to open 2 Qualifierl/BLOCKSe /BLOCKS=(keyword[,...])I Using the /BLOCKS switch you can specify a starting block and an endingdG block or a count of the number of blocks to restore. You can specifyaD both a START block and an END block, or a START block and a COUNT,4 you may not specify both an END block and a COUNT.< The default START block is 0 for a DRIVE and `r--$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2)" Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in  12144122 Count: 26139 LBN: 11882732 Count: 1002 LBN: 16943762 Count: 1002 LBN: 3694652 Count: 1002 LBN: 1769792 Count: 1002 LBN: 1647219wwt? file from another session with the type command, whilst it isL still being written.> DISKBLOCK> SEARCH /LONG=123456 /OUTPUT=SYS$LOGIN:123456.LIST See also SET LOG /LONGWORDe /LONGWORD=valueJ Use SEARCH /LONGWO & The layout of an ODS2 home block is.I <------------------------HM2$L_HOMELBN-------------------------------->oI <------------------------HM2$L_ALHOMELBN------------------------------>uI <------------------------HM2$L_ALTIDXLBN------------------------------>cI <---------HM2$W_CLUSTER---------> <--------HM2$W_STRUCLEV--------->UI <---------HM2$W_ALHOMEVBN-------> <--------HM2$W_HOMEVBN---------->3I <---------HM2$W_IBMAPVBN--------> <--------HM2$W_ALTIDXVBN-------->HI <---& The layout of an ODS2 home block is.I <------------------------HM2$L_HOMELBN-------------------------------->oI <------------------------HM2$L_ALHOMELBN------------------------------>uI <------------------------HM2$L_ALTIDXLBN------------------------------>cI <---------HM2$W_CLUSTER---------> <--------HM2$W_STRUCLEV--------->UI <---------HM2$W_ALHOMEVBN-------> <--------HM2$W_HOMEVBN---------->3I <---------HM2$W_IBMAPVBN--------> <--------HM2$W_ALTIDXVBN-------->HI <---2 V5.0_New_Features:F Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,tB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.KD Control C and Control T handling now work during Directory as well as search operations.t= There has been a syntax change for READ /FID and WRITE /FIDl4 There are a number of new commands and quali/STRINGh /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringN on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADER0 /HEADER=filespec D Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a di Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYS  New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in  terminal. The default filespec isn SYS$SCRATCH:DISKBLOCK.LIS C This is useful if searching a large number of blocks for a stringsC or integer which is fairly frequent. You can still use ^T to getL@ a status display to the terminal. You may examine the output? file from another session with the type command, whilst it isL still being written.> DISKBLOCK> SEARCH /LONG=123456 /OUTPUT=SYS$LOGIN:123456.LIST See also SET LOG /LONGWORDe /LONGWORD=valueJ Use SEARCH /LONGWO NCE]DISKBLOCK.LOG;1o DISKBLOCK> SET LOG/CLOSEG %DSSKB-I-LOGCLOSE, Logfile DISK$USERS_2:[RANCE]DISKBLOCK.LOG;1 closed DISKBLOCK>2 PAGEH The command SET PAGE causes diskblock to count lines of output sent toJ the terminal and prompt with "Type a to continue: " every 22 lines.A This feature is enabled by default IF SYS$OUTPUT IS A TERMINAL.# Set NOPAGE disables this feature.UwwS$LOGIN:123456.LIST See also SET LOG /LONGWORDe /LONGWORD=valueJ Use SEARCH /LONGWO 2 V5.0_New_Features:F Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,tB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.KD Control C and Control T handling now work during Directory as well as search operations.t= There has been a syntax change for READ /FID and WRITE /FIDo4 There are a number of new commands and quali2 V5.0_New_Features:F Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,tB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.KD Control C and Control T handling now work during Directory as well as search operations.t= There has been a syntax change for READ /FID and WRITE /FIDl4 There are a number of new commands and qualiFy& DISKBLOCK> WRITE /CHECKSUM /FID=1004 2 Parameter  Block_numberD Specifies the LBN of the block to be written on the selected drive< or the VBN of the block to be written to the selected file2 Command_Qualifiers /FORCED_ERRORtE This switch will cause the block to be written to the disk with thedG forced error flag set. USE THIS WITH EXTREME CAUTION - IF YOU DON'T n0 UNDERSTAND WHAT IT MEANS THEN DON'T USE IT!!!! G The effect of this flag may depend on the type of disk2 V5.0_New_Features:F Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,tB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.KD Control C and Control T handling now work during Directory as well as search operations.t= There has been a syntax change for READ /FID and WRITE /FIDl4 There are a number of new commands and quali/STRINGh /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringN on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADER0 /HEADER=filespec D Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a di/STRINGh /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringN on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADER0 /HEADER=filespec D Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a di2 V5.0_New_Features:F Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,tB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.KD Control C and Control T handling now work during Directory as well as search operations.t= There has been a syntax change for READ /FID and WRITE /FIDl4 There are a number of new commands and qualirieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without ta j$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2"2 V5.0_New_FeaturesiF Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,KB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.ED Control C and Control T handling now work during Directory as well as search operations.B= There has been a syntax change for READ /FID and WRITE /FID44 There are a number of new commands and quali 2, SEGNUM: 0, CREDATE: 19-MAY-1994 01:30:09.762 %DSKB-I-SEARCHDONE, Search completed at 13:44:10& DISKBLOCK> DUMP /FILE /BLOCK=11889437 ... Check that this is the correct file header.......  DISKBLOCK> COPY 1188943v; %DSKB-I-CREATED, Created file DUA0:[RANCE]COPY_FILE.DAT;1m< %DSKB-I-COPYING, Copying 214 blocks starting at LBN 113124: %DSKB-I-COPYING, Copying 24 blocks starting at LBN 10456S %DSKB-I-CPYACL, 92 Bytes of ACL information copied to DUA0:[RANCE]COPY_FILE.DAT;1-W %DSKB-I-rieval pointers will not be read.a 2 Parameters device_nameN. Specifies the name of the disk to be selected file_namem5 Specifies the name of the file to be selectedd (requires SELECT/FILE)2 Command_Qualifiers/FILEeF Use this qualifier to enable you to perform Virtual I/O to a single D file on an ODS2 mounted disk. This allows you to use DISKBLOCK asC a utility somewhere between Patch and Dump, it will allow you to KI modify the contents of a file without ta E This switch will cause the block to be written to the disk with thebG forced error flag set. USE THIS WITH EXTREME CAUTION - IF YOU DON'T 0 UNDERSTAND WHAT IT MEANS THEN DON'T USE IT!!!! G The effect of this flag may depend on the type of disk, on DSA disks eF it will cause a forced error condition when the block is read again,* the correct data will still be returned. F On some SCSI disks it will cause a parity error to be generated when/ the block is read and NO DATA to be e copy will take place using the mapping pointers B in the file header, if the file header is corrupt then this may " create a VERY large output file.E After the file data has been copied the File and Record attributes, A the File Owner UIC and File Protection will be copied from the oH original file header to the new file header. The Access Control List G (ACL) from the input file header will then be copied to the new file.o C Use of this command does not modify the normal DISKBLO= The file id of a directory file can be found by DUMP/HEADERaB of the directory file (either from DCL or from within DISKBLOCK)J This qualifier can be used to locate all files in a particular directoryJ It can be particularly useful in conjunction with the /DELETED qualifier= to locate all files that have been DELETED from a directory - DISKBLOCK> DIRECTORY /BACKLINK=nnn /DELETED /SINCE /SINCE=time: Selects only those files dated after the specified time.L You must specify oessA 2 Parameters Addressi. Specifies the buffer address to be deposited Date2 Specifies the Data to be deposited to the buffer 2 Command_Qualifiers/LONGe (default)nD Causes the deposit to modify four bytes. (Address) to (Address+3), The address should lie in the range 0-508.+ DISKBLOCK> DEPOSIT /LONG %X1F %O124207651/WORD C Causes the deposit to modify two bytes. (Address) to (Address+1)c, The address should lie in the range 0-510.# DISKBLOCK> DEPOSCK 512 byte read / write buffer.E DISKBLOCK> COPY_FILE /OUTPUT=abcd.dmp %x90A12 ! LBN of file headerOE DISKBLOCK> COPY /FID=1234 ! FID of file headerK DISKBLOCK> COPY /BUFFERS2 Command_Qualifiers/OUTPUTTH Use this switch to specify the filename of the NEW file to be created./FID@ Use the command COPY /FID to copy a file when you know the FID@ but not the LBN of the file header. The fid will be converted4 to an LBN and the appropriate header will p to 8 backlinks will be followed F until 000000.DIR is located and the full filename will be displayed.9 This command does not modify the main read/write bufferh! DISKBLOCK> DIRECTORY [filespec]a 2 Parameterb filespecD Specifies the file(s) to be listed. * and % wildcards are allowed8 Directory and/or device specifications are not allowed2 Command_Qualifiers/FID /FID = nnnw= Use DIR /FID to display the filename associated with a FID.  DISKBLOCK> DIRECTORY /FID=@ 31 30 29 28 ............................ 3 2 1 0 Address DISKBLOCK> DUMPi DISKBLOCK> DUMP /HEX/OCTALC Use the /OCTAL switch to specify that the contents of the buffer,YA and the addresses printed next to the data, should be displayedo in OCTAL.*@ 24 23 22 21 ............................ 3 2 1 0 Address DISKBLOCK> DUMP /OCTAL/ASCIIA Use the /ASCII switch to dump the entire contents of the bufferaB to your terminal with all bytes interpreted as ASCII EXAMINE /WORD is 510.5 The maximum buffer address for EXAMINE /BYTE is 511K DISKBLOCK> EXAMINE 480 2 ParameterT Addressh- Specifies the buffer address to be examined 2 Command_Qualifiers/LONG (default)t@ Causes the formatted output to show four bytes starting at the specified address. DISKBLOCK> EXAMINE /LONG %X1E0/WORDM? Causes the formatted output to show two bytes starting at then specified address. DISKBLOCK> EXAMINE /WORD %O123/BYTE > Caus; Because of its potential to corrupt disks you should onlyB use Diskblock in extreme desperation or on a disk which you have backed up.  - You need LOG_IO privilege to run DISKBLOCK.9 Type EXAMPLES at the Topic? prompt for more informationwwi~m 1 ExamplesE Search shows the use of the search command to locate a file header,7 and then to copy the file to a normally mounted disk.= This may be used even on a disk with a corrupted INDEXFILE.H Modify_d= The file id of a directory file can be found by DUMP/HEADERcB of the directory file (either from DCL or from within DISKBLOCK)J This qualifier can be used to locate all files in a particular directoryJ It can be particularly useful in conjunction with the /DELETED qualifier= to locate all files that have been DELETED from a directoryw- DISKBLOCK> DIRECTORY /BACKLINK=nnn /DELETEDe/SINCE /SINCE=time: Selects only those files dated after the specified time.L You must specify oIT /WORD 123 4142o/BYTEsI Causes the deposit to modify just one byte at at the specified address./, The address should lie in the range 0-511.& DISKBLOCK> DEPOSIT /BYTE %O10 %X4142/STRINGs7 Causes the DATA to be interpreted as an ASCII string.aI The address should be sufficiently small so that ALL of the string will# fit between ADDRESS and byte 512.eB To include lower case letters, or spaces, you must use "Quotes".) DISKBLOCK> DEPOSIT /STRING 410 NEW_DATAo+ DISKBLOC56 or DISKBLOCK> FILL 0r/WORDp> Specifies that the data is to be written to successive words within the buffers DISKBLOCK> FILL /WORD %X3456 or DISKBLOCK> FILL /WORD 512/BYTEt> Specifies that the data is to be written to successive bytes within the bufferi DISKBLOCK> FILL /BYTE %XAC or DISKBLOCK> FILL /BYTE 127ww C Causes the deposit to modify two bytes. (Address) to (Address+1)c, The address should lie in the range 0-510.# DISKBLOCK> DEPOS Causes the newly calculated checksum to be written to word 510 ofnA the buffer. The checksum will be displayed at the terminal andh; (if it was changed) the previous value will be displayed.S/HOME F Causes the checksum command to check or modify BOTH of the checksums) in a Home block (word 58 and word 510).  See also ODS2 HOMEww ADDRESS and byte 512.eB To include lower case letters, or spaces, you must use "Quotes".) DISKBLOCK> DEPOSIT /STRING 410 NEW_DATAo+ DISKBLOCugh 9 in a file called sys$scratch:diskblock.dmpe@ DISKBLOCK> SAVE /BLOCKS=(START=0,END=9) SYS$LOGIN:10BLOCKS.TMP< This command will save blocks 0 through 9 in a file called sys$login:10blocks.tmpwwfies that the data is to be written to successive bytes within the bufferi DISKBLOCK> FILL /BYTE %XAC or DISKBLOCK> FILL /BYTE 127ww C Causes the deposit to modify two bytes. (Address) to (Address+1) , The address should lie in the range 0-510.# DISKBLOCK> DEPOS aL$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2v"/STRINGe /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringi on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclosed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADERL /HEADER=filespecOD Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a di 1 for a FILE.K DISKBLOCK does not check that the file is the correct size for the numberDI of blocks specified and I have never tested the effects of getting thisa wrong!- DISKBLOCK> RESTORE /BLOCKS=(START:0,END:10) A This command will restore blocks 0 through 9 from a file callede sys$scratch:diskblock.dmp C DISKBLOCK> RESTORE /BLOCKS=(START=0,END=9) SYS$LOGIN:10BLOCKS.TMPrA This command will restore blocks 0 through 9 from a file calledP sys$login:10blocks.tmpwwKBLOC---------------------HM2$L_IBMAPLBN------------------------------->tI <------------------------HM2$L_MAXFILES------------------------------->iI <---------HM2$W_RESFILES--------> <--------HM2$W_IBMAPSIZE-------->CI <---------HM2$W_RVN-------------> <--------HM2$W_DEVTYPE---------->I <---------HM2$W_VOLCHAR---------> <--------HM2$W_SETCOUNT--------->eI <------------------------HM2$L_VOLOWNER------------------------------->oI <------------------------HM2$L_SEC_MASK---------------2 V5.0_New_Features:F Diskblock V5 has been totally re-written in C (it used to be Macro).= There are major improvements in the area of error handling,tB especially in the handling of disk errors during READ and SEARCHA commands and in the validation of Home blocks and file headers.KD Control C and Control T handling now work during Directory as well as search operations.t= There has been a syntax change for READ /FID and WRITE /FIDo4 There are a number of new commands and quali= The file id of a directory file can be found by DUMP/HEADERcB of the directory file (either from DCL or from within DISKBLOCK)J This qualifier can be used to locate all files in a particular directoryJ It can be particularly useful in conjunction with the /DELETED qualifier= to locate all files that have been DELETED from a directory - DISKBLOCK> DIRECTORY /BACKLINK=nnn /DELETEDe/SINCE /SINCE=time: Selects only those files dated after the specified time.L You must specify oking out RMS locks - even when , someone else has the file open and locked. /OVERRIDE D Use the /OVERRIDE qualifier to enable you to read and write a diskE that is not mounted foreign. Use even more extreme care when doing @ this as you could cause great damage to the VMS file system by, modifying disks that are normally mounted.8 This qualifier cannot be used with the /FILE qualifier/NOMAPE Use this qualifier to prevent DISKBLOCK from reading the Home Blocki$ and Index File1000B FID: 1000 LBN: 1189345 [RANCE.SUBDIR.TEMP]TEMPFILE.EXT;23 See also READ /FID/LBN /LBN=(nnn[,...])>D Use DIR /LBN to find which file maps a particular LBN on the disk.J Diskblock will read the entire INDEX File and check the mapping pointersI in all file headers to locate the file(s) that map(s) the given LBN(s). H Diskblock will continue scanning even after it finds a match to enableH the indentification of all pointers to multiply allocated blocks. You9 can  characters.1 Every non printing character will appear as a .LB The data will be printed with the least significant byte on the ) left (similar to the DCL dump command).  DISKBLOCK> DUMP /ASCII /FILE_HEADERJ Use the /FILE_HEADER switch to format the buffer as an ODS2 file header.$ This command executes in 5 stages.A 1) Check that buffer is a valid file header, if not then print s5 an error message explaining what the problem is.r6 2) Write the buffer out to SYS$SCRATCH:DISKBLOCK.TMPG 3) Spawn the command $ DUMP /FILE_HEADER SYS$SCRATCH:DISKBLOCK.TMP -t> /OUTPUT=SYS$SCRATCH:DISKBLOCK.TMP1 -= 4) Read SYS$SCRATCH:DISKBLOCK.TMP1 and output to the screen  (and log file if open). 5) Delete temporary filesn/HEADERy1 DUMP /HEADER is a synonym for DUMP /FILE_HEADER=/HOME B Use the /HOME switch to format the buffer as an ODS2 Home Block./BLOCKB Use this qualifier to dump a formatted block without overwritingI = The file id of a directory file can be found by DUMP/HEADERfB of the directory file (either from DCL or from within DISKBLOCK)J This qualifier can be used to locate all files in a particular directoryJ It can be particularly useful in conjunction with the /DELETED qualifier= to locate all files that have been DELETED from a directorye- DISKBLOCK> DIRECTORY /BACKLINK=nnn /DELETEDr/SINCE /SINCE=time: Selects only those files dated after the specified time.L You must specify o es the formatted output to show one byte starting at the specified address. DISKBLOCK> EXAMINE /BYTE %X53n/TIMEyG Causes the quadword starting at the specified address to be formattedM* as a VMS Date Time string and displayed.wwitch to format the buffer as an ODS2 file header.$ This command executes in 5 stages.A 1) Check that buffer is a valid file header, if not then print s5 an error message explaining what the problem is.r6 2) Write the buffer out to SYS$SCRATCHRD to search for an occurence of a longword integer on the selected drive/file.@ There are no alignment requirements so a longword starting at . (e.g.) byte 1 of a block will be discovered.( DISKBLOCK> SEARCH /LONGWORD=%X80123456 or! DISKBLOCK> SEARCH /LONG = 12345l/WORD /WORD=valueB Use SEARCH /WORD to search for an occurence of a word integer on the selected drive/file.< There are no alignment requirements so a word starting at . (e.g.) byte 1 of a block will be d---------------->II <---------HM2$W_FILEPROT--------> <--------HM2$W_PROTECT---------->BI <---------HM2$W_CHECKSUM1-------> <--------HM2$W_RECPROT----------> I -------------------------HM2$Q_CREDATE--------------------------------> I <----------------------------------------------------------------------"E <---------HM2$W_EXTEND----------> HM2$B_LRU_LIM HM2$B_WINDOWtI -------------------------HM2$Q_RETAINMIN------------------------------>tI <----------------------------------------------------HM2$L_IBMAPLBN------------------------------->tI <------------------------HM2$L_MAXFILES------------------------------->iI <---------HM2$W_RESFILES--------> <--------HM2$W_IBMAPSIZE-------->CI <---------HM2$W_RVN-------------> <--------HM2$W_DEVTYPE---------->I <---------HM2$W_VOLCHAR---------> <--------HM2$W_SETCOUNT--------->eI <------------------------HM2$L_VOLOWNER------------------------------->oI <------------------------HM2$L_SEC_MASK------------------------------->II <---------HM2$W_FILEPROT--------> <--------HM2$W_PROTECT---------->BI <---------HM2$W_CHECKSUM1-------> <--------HM2$W_RECPROT----------> I -------------------------HM2$Q_CREDATE--------------------------------> I <----------------------------------------------------------------------"E <---------HM2$W_EXTEND----------> HM2$B_LRU_LIM HM2$B_WINDOWtI -------------------------HM2$Q_RETAINMIN------------------------------>tI <------------------------------- articular string or integer or file- header.-; Because of its potential to corrupt disks you should only-B use Diskblock in extreme desperation or on a disk which you have backed up.  - You need LOG_IO privilege to run DISKBLOCK.-9 Type EXAMPLES at the Topic? prompt for more information-wwOLCHAR---------> <--------HM2$W_SETCOUNT--------->eI <------------------------HM2$L_VOLOWNER------------------------------->oI <------------------------HM2$L_SEC_MASK--------------- CPYATTRIB, File attributes successfully copied to DUA0:[RANCE]COPY_FILE.DAT;1O 2 Modify_diskBE In this example a backup copy of the home block is used to repair a- corrupted primary home block.H $ RUN SYS$SYSTEM:DISKBLOCK* DISKBLOCK V5.5H Copyright (c) Digital Equipment Corp. 1994. All rights Reserved.$ DISKBLOCK> MOUNT /FOREIGN $2$DUA22E DISKBLOCK> SELECT $2$DUA22 ; Select the problem drive-J DISKBLOCK> READ 2  [T$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2z"fiers. 3 SET_LOGrJ The SET LOG command causes ALL diskblock output to be sent to a log file as well as to the terminal 3 SET_PAGEG The SET PAGE command causes diskblock output to pause every screenfulY, and prompt with "Type a to continue". 3 REWRITE B The REWRITE command allows a block to be written back to the LBNG it was read from to reduce the chance of mis-typing the block number.2 3 DIRECTORY J The DIRECTORY command now displays FULL file specification, FID and LB N.C DIRECTORY/FID has been added to convert a FID number to filename.0D DIRECTORY/LBN has been added to find the file using any given LBN.E The performance of the DIRECTORY command has been greatly improved. 3 /FORCED_ERRORCF There is a /FORCED_ERROR qualifier to WRITE and REWRITE which allowsG a block to be written with the forced error flag set. USE THIS WITH E EXTREME CAUTION - IF YOU DON'T UNDERSTAND WHAT IT MEANS THEN DON'T 9 USE IT!!!!  retrieval pointers.8 This qualifier cannot be used with the /FILE qualifier/HOMELBN< Use this qualifier to specify an alternate Home Block LBN.C DISKBLOCK will read this alternate HOMELBN, validate its contentsFE and use it to locate the Index File Header. The Index File mapping  Pointers will then be read.r8 This qualifier cannot be used with the /FILE qualifier< This qualifier cannot be used with the /INDEXLBN qualifier /INDEXLBNTC Use this qualifier to specify an alterK> DEPOSIT /STRING 410 "New Data"c/TIME D Causes the DATA to be interpreted as a VMS ASCII Date-Time string.E The input string is NOT THE SAME SYNTAX AS A DCL DATE TIME STRING, CF this is necessary because DCL converts delta times to absolute times0 and we need to handle them as raw delta times.& The syntax for a DATE TIME string is% DELTA TIME: "dd hh:mm:ss.hh"e. ABSOLUTE TIME: "dd-mmm-yyyy hh:mm:ss.cc"& Valid datetime strings would include= 9-jan-1991 9th January 1991 at the current timet> "9-" 9th of this month at the current time0 "9-JAN-1991 00:00:00." Midnight on 9th JanuaryH "9-JAN-1991 00:00:00" Midnight " " " current hundredths of a sec m. 30 Delta time of 30 days; "12 12:" Delta time of 12 days and 12 hoursE4 "0 ::.5" Delta time of half a secondA Eight bytes (Address) to (Address+7) will be deposited with theo) correspoiscovered. DISKBLOCK> SEARCH /WORD=%XFFFF or! DISKBLOCK> SEARCH /WORD = 12345h/BYTEu /BYTE=valueB Use SEARCH /BYTE to search for an occurence of a byte integer on the selected drive/file. DISKBLOCK> SEARCH /BYTE=%XFF or DISKBLOCK> SEARCH /BYTE = 127 /STRINGt /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringa on the selected drive/fileH The input string will be converted to upper case UNLESS it is enclos ; Read backup copy of HomeblockE DSKB-I-BLKREAD, Block 2 (%X00000002) of _$2$DUA22 successfully read-( DISKBLOCK> HELP ODS2 HOME HOMELBN J .......................... ; Find size and offset of field8 DISKBLOCK> DEPOSIT 0 1 ; New HOMELBN8 DISKBLOCK> DEPOSIT/WORD 16 2 ; New HOMEVBN= DISKBLOCK> CHECKSUM /HOME /DEPOSIT ; Modify checksums-E %DSKB-I-CHKCHANGED, Checksum has been changed from %X289B to %X3F9B-E %DSKB-I-CHKCHANGED, Checks you read a block the current contents of the buffer will be lostnE If you require the current buffer contents then you should SAVE the ' bufffer before reading another block.o 2 Parameter  Block_numberC Specifies the LBN of the block to be read from the selected drive ; or the VBN of the block to be read from the selected filee2 Command_Qualifiers/FID? Use the command READ /FID to read an LBN from a disk when you = know the File ID of the file whose header you want to read.e , on DSA disks aF it will cause a forced error condition when the block is read again,* the correct data will still be returned. F On some SCSI disks it will cause a parity error to be generated when/ the block is read and NO DATA to be returned.% DISKBLOCK> WRITE /FORCED_ERROR 100dJ DO NOT USE THIS SWITCH UNLESS YOU HAVE A VERY GOOD REASON AND YOU REALLYH UNDERSTAND WHAT YOU ARE DOING, IT HAS BEEN INCLUDED SINCE I NEEDED IT E FOR TESTING DISKBLOCK AND I HAVE VERY OCCASSIONALL returned.dJ DO NOT USE THIS SWITCH UNLESS YOU HAVE A VERY GOOD REASON AND YOU REALLYH UNDERSTAND WHAT YOU ARE DOING, IT HAS BEEN INCLUDED SINCE I NEEDED IT E FOR TESTING DISKBLOCK AND I HAVE VERY OCCASSIONALLY FOUND A USE FOR 8 A DISK THAT GENERATES HARDWARE ERRORS WHEN IT IS READ. /CHECKSUM B Use this command when the block you are writing is an ODS2 file D header. The block checksum will be caculated and then written to C the last word of the buffer. Then the WRITE fucntion will write & the buffer back to the selected LBN. See also CHECKSUM/DEPOSITwwUM B Use this command when the block you are writing is an ODS2 file D header. The block checksum will be caculated and then written to C the last word of the buffer. Then the WRITE function will write t& the buffer back to the selected LBN. See also CHECKSUM /DEPOSIT /FID? Use the command WRITE /FID to write an LBN on a disk when you> know the File ID of the file whose header you want to wrbe read.= This command will only work if you have read the index file + mapping pointers with the SELECT command.< The syntax for this command has changed with DISKBLOCK V5. The format is now...  DISKBLOCK> COPY_FILE /FID=234e/BUFFERi@ Use the command COPY /BUFFER when the file header for the file< you want to copy is already in the main read/write buffer.> This enables you to read a file header from disk, modify it B and then use the modified header to copy the file without having9 to write the modified header back to the original disk.EwwwwUM B Use this command when the block you are writing is an ODS2 file D header. The block checksum will be caculated and then written to C the last word of the buffer. Then the WRITE function will write & the buffer back to the selected LBN. See also CHECKSUM /DEPOSITq/FID? Use the command WRITE /FID to write an LBN on a disk when youh> know the File ID of the file whose header you want to wr abort the search with a Control C (^C) at any time.vD If an invalid file header maps the lbn then an error message will 9 proceed the display of the filename. (See DIR /VALID)..G You may specify multiple LBNs on a single command line in three ways,; DIRECTORY /LBN=(nnn,mmm,xxx,yyy) for multiple single LBNsi? DIR /LBN=nnn /COUNT=xxx for a single contiguous range of LBNsC DIR /LBN=(nnn,mmm...) /COUNT=(xxx,yyy...) for many ranges of LBNsnD The index file will only be scanned ONCE for each command so it isH much more efficient to form a single complex command with all the LBNsF you are interested in than to specify them one at a time in separate commands. /COUNT /COUNT=(nnn[,...])EB This switch can only be used in conjunction with DIRECTORY /LBN.= For the command DIR /LBN=x /COUNT=m all files that map LBNs$+ in the range x to x+m-1 will be reported.1A For the command DIR /LBN=(x,y) /COUNT=(m,n) all files that map C LBNs in the ranges (x to x+m-1) and DISKBLOCKs main read/write buffer. You must specify a Block number to x read.w% e.g. DISKBLOCK> DUMP /HOME /BLOCK=1 ) DISKBLOCK> DUMP /ASCII /BLOCK=1000a/FIDB Use this qualifier to dump a formatted block without overwritingJ DISKBLOCKs main read/write buffer. You must specify the FID of the file header to read.t% e.g. DISKBLOCK> DUMP /HEADER /FID=4lwworted.mA For the command DIR /LBN=(x,y) /COUNT=(m,n) all files that map DC LBNs in the ranges (x to x+m-1) and --------------------------------------- I -------------------------HM2$Q_RETAINMAX------------------------------>LI <----------------------------------------------------------------------HI -------------------------HM2$Q_REVDATE-------------------------------->oI <----------------------------------------------------------------------cI -------------------------HM2$R_MIN_CLASS (20 bytes)-------------------> I <----------------------------------------------------------------------lI ------ t/F$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2["--------------------------------------- I -------------------------HM2$Q_RETAINMAX------------------------------>LI <----------------------------------------------------------------------HI -------------------------HM2$Q_REVDATE-------------------------------->oI <----------------------------------------------------------------------cI -------------------------HM2$R_MIN_CLASS (20 bytes)-------------------> I <----------------------------------------------------------------------lI ------ b3 CHECKSUM/HOME5E The checksum command now takes a /HOME qualifier which causes it tol8 check or modify BOTH of the checksums in a home block. 3 COPY/BUFFER A There is a /BUFFER qualifier to COPY_FILE which allows the main%C read/write buffer to be the file header of the file to be copied.iG This enables you to modify the header without writing the input disk. 3 /FIDF This qualifier to READ and WRITE now requires the fid as a qualifierI value (e.g. READ /FID=1000) rather than as a parameter (READ /FID 1000)L@ This has been done to be consistent with DIR/FID and COPY/FID.2 V5.1_New_FeaturesD6 V5.1 has two minor bug fixes and three new features. Bug_fixeslD DISKBLOCK> CHECKSUM/HOME/DEPOSIT now correctly sets both checksums? DISKBLOCK> DIR /LBN=0 now correctly identifies the INDEXF.SYSF New_features DISKBLOCK> SET WRITE DISKBLOCK> SET NOWRITEB These commands enable and disable writing the selected disk/file DISKBLOCK> DIR ... /VALID_ nate Index File Header LBN.5C DISKBLOCK will read this LBN, validate its contents and read the t index file mapping pointers.8 This qualifier cannot be used with the /FILE qualifier8 This qualifier cannot be used with the /HOME qualifier> If you use the qualifier /INDEXLBN you must also use /FACTOR/FACTOR D If you use the /INDEXLBN qualifier then Diskblock will not read a D Home Block, this means that the cluster size and index file bitmapC size are not availab= This command will only work if you have read the index file/+ mapping pointers with the SELECT command.iF The FID will be translated to an LBN and the appropriate file headerD will be read in to the buffer, the buffer will then be checked to B ensure that the file header is valid and diagnostic messages may be issued. See also DIRECTORY /FIDh< The syntax for this command has changed with DISKBLOCK V5. The format is now...  DISKBLOCK> READ /FID=1000 ww an alterY FOUND A USE FORe8 A DISK THAT GENERATES HARDWARE ERRORS WHEN IT IS READ. /CHECKSUM B Use this command when the block you are writing is an ODS2 file D header. The block checksum will be caculated and then written to C the last word of the buffer. Then the WRITE function will write & the buffer back to the selected LBN. See also CHECKSUM /DEPOSITq/FID? Use the command WRITE /FID to write an LBN on a disk when youh> know the File ID of the file whose header you want to wry to y+n-1) will be reported)f6 e.g. DIR /LBN=10 /COUNT=10 will match LBNs 10 to 195 DIR /LBN=(100,200) /COUNT=(10,20) will match C4 LBNs (100 to 109) and LBNs (200 to 219)/OUTPUTK /OUTPUT=filespec@ Use the /OUTPUT qualifier to cause the output to be written to= a file instead of to the terminal. The default filespec isM SYS$SCRATCH:DISKBLOCK.LIS./VALIDJ If the /VALID qualifier is specified then only matching files with validK file headers will be displnding VMS Quadword date time. 0 The address should lie in the range 0 to 504 7 DISKBLOCK> DEPOSIT /TIME 60 "29-JUL-1992 04:33:21.05"n$ DISKBLOCK> DEPOSIT /TIME 0 12 00:ww0 to 219)/OUTPUTe /OUTPUT=filespec@ Use the /OUTPUT qualifier to cause the output to be written to= a file instead of to the terminal. The default filespec isa SYS$SCRATCH:DISKBLOCK.LIS./VALIDJ If the /VALID qualifier is specified then only matching files with validK file headers will be displed in quotes.( DISKBLOCK> SEARCH /STRING = INDEXF.SYS orJ DISKBLOCK> SEARCH /STRING="Case Sensitive" /BLOCK=(START=100, COUNT=100)/HEADERL /HEADER=filespec0D Use SEARCH / HEADER to search for file headers. It can be used toF locate the header for a file on a disk that has no valid indexf.sys.F For each file header located it will display LBN and Filename. You = can obtain more information by specifying the /FULL switch.m F If the indexf.sys is present and valid then th-------------------HM2$R_MAX_CLASS (20 bytes)------------------->HI <----------------------------------------------------------------------0I -------------------------reserved (320 bytes)---------------------->sI <----------------------------------------------------------------------tI <------------------------HM2$L_SERIALNUM------------------------------>nI -------------------------HM2$T_STRUCNAME (12 bytes)------------------->KI <----------------------------------------------------------------------tI -------------------------HM2$T_VOLNAME (12 bytes)------------------->aI <----------------------------------------------------------------------aI -------------------------HM2$T_OWNERNAME (12 bytes)------------------->1I <----------------------------------------------------------------------oI -------------------------HM2$T_FORMAT (12 bytes)-------------------> I <----------------------------------------------------------------------dI <---------HM2$W_CHECKSUM2------------------------HM2$R_MAX_CLASS (20 bytes)------------------->HI <----------------------------------------------------------------------0I -------------------------reserved (320 bytes)---------------------->sI <----------------------------------------------------------------------tI <------------------------HM2$L_SERIALNUM------------------------------>nI -------------------------HM2$T_STRUCNAME (12 bytes)------------------->KI <----------------------------------------------------------------------tI -------------------------HM2$T_VOLNAME (12 bytes)------------------->aI <----------------------------------------------------------------------aI -------------------------HM2$T_OWNERNAME (12 bytes)------------------->1I <----------------------------------------------------------------------oI -------------------------HM2$T_FORMAT (12 bytes)-------------------> I <----------------------------------------------------------------------dI <---------HM2$W_CHECKSUM2-------> <--------reserved--------------->U 3 HOMELBN% HM2$L_HOMELBNc! Starting byte - 0' Size - 4 bytesY= Meaning - LBN of home (i.e. this) block 3 ALHOMELBNt HM2$L_ALHOMELBN ! Starting byte - 4 ' Size - 4 bytese; Meaning - LBN of alternate home blockt 3 ALTIDXLBNe HM2$L_ALTIDXLBNm! Starting byte - 8' Size - 4 bytes um has been changed from %X5136 to %X7F36t? DISKBLOCK> DUMP /HOME ; See if it looks OK- .........................-G DISKBLOCK> WRITE 1 ; Write to primary homeblock-K %DSKB-I-BLKMODIF, Block 1 (%X00000001) of _$2$DUA22 successfully modified- 2 Modify_MFDK In this example the ownership of the MFD of a disk is changed to be [1,4]- $ RUN SYS$SYSTEM:DISKBLOCK* DISKBLOCK V5.4H Copyright (c) Digital Equipment Corp. 1994. All rights Reserved.I DISKBLOCK> SELECT DUA2:/OVER ; Allow writes to mounted disk-G DISKBLOCK> READ /FID=4 ; Read header for 000000.dir-K DSKB-I-BLKREAD, Block 273590 (%X00042CB6) of _NODE$DUA2 successfully read-3 FID: 4 LBN 273590 [000000]000000.DIR;1-B DISKBLOCK> HELP ODS2 FILE_HEADER ; Check field for ownerC DISKBLOCK> DEPOSIT 60 %X00010004 ; CHANGE FH2$L_FILEOWNER- DISKBLOCK> rewrite /checksumC%DSKB-I-CHKCHANGED, Checksum has been changed from %XCC5D to %XCC5AG%DSKB-I-BLKMODIF, Block 273590 (%X00042CB6) of _DINCY$DUA0 successfully modified2 Undelete_fileeJ In this example a file on an ODS2 mounted disk is undeleted by patching  the file headerO $ RUN SYS$SYSTEM:DISKBLOCK* DISKBLOCK V5.3H Copyright (c) Digital Equipment Corp. 1991. All rights Reserved." DISKBLOCK> SELECT /OVER $1$DUA2:* DISKBLOCK> DIRECTORY MYFILE.DAT /DELETED8 FID: 6998 LBN 2f $DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2 "ONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.= The diskblock help library no longer has to be in SYS$HELP,i) $ DEFINE DSKB_HLB dev:[dir]filaneme.HLBa to access the help library2 V5.2_New_Features 3 V5.2 has the following bug fixes and new featuresa9 Diskblock now works on both OpenVMS VAX and OpenVMS AXP>A DUMP /HOME has been added to display the buffer as a home block 8 DUMP /HEADER has beele. You must therefor specify a FACTOR whichh8 Diskblock can use to map File IDs to Indexfile VNBs.  F This factor should be (CLUSTER_SIZE * 4) + (Index File Bitmap Size) F If you select an incorrect value then Diskblock will translate FIDs  to LBNs incorrectly./WRITE@ Select /WRITE causes DISKBLOCK to operate in READ / WRITE modeC the WRITE and REWRITE commands can be used to modify the selecteds DISK or FILE.lD Select /NOWRITE causes DISKBLOCK to operate in READ ONLY mode, theI selected disk or file can be READ or SEARCHED but the WRITE and REWRITEr commands will return an error. The default is SELECT /NOWRITE See also SET WRITE 2 ExamplesE DISKBLOCK> SELECT $2$DRA2:r1 DISKBLOCK> SELECT SYS$SYSTEM:SYSDUMP.DMP /FILE5' DISKBLOCK> SELECT $2$DUS0: /OVERRIDEg& DISKBLOCK> SELECT DISK$USER2 /NOMAP. DISKBLOCK> SELECT MYNODE$DUA1: /HOMELBN=nnn3 DISKBLOCK> SELECT DRA3: /INDEXLBN=nnn /FACTOR=85ewwhome block 8 DUMP /HEADER has beeite.= This command will only work if you have read the index fileo+ mapping pointers with the SELECT command.sD Diskblock will first verify that the buffer contains a valid file F header, if not then a diagnostic message will be issued and you willH be asked if you wish to continue. It will then convert the FID to theD LBN of the corresponding file header and write the header to disk.< The syntax for this command has changed with DISKBLOCK V5. The format is now...  DISKBLOCK> WRITE /FID=234dwwr file can be READ or SEARCHED but the WRITE and REWRITEr commands will return an error. The default is SELECT /NOWRITE See also SET WRITE 2 ExamplesE DISKBLOCK> SELECT $2$DRA2:r1 DISKBLOCK> SELECT SYS$SYSTEM:SYSDUMP.DMP /FILE5' DISKBLOCK> SELECT $2$DUS0: /OVERRIDEg& DISKBLOCK> SELECT DISK$USER2 /NOMAP. DISKBLOCK> SELECT MYNODE$DUA1: /HOMELBN=nnn3 DISKBLOCK> SELECT DRA3: /INDEXLBN=nnn /FACTOR=85ewwhome block 8 DUMP /HEADER has been added as a synonym for DUMP/FILED SEARCH/HEADER is a new command to find blocks that look like validC file headers and report the LBN and filename. It is NOT the same-G as the directory command since it does not use the INDEXF.SYS mappingI" pointers to locate file headers./ EXAMINE/TIME and DEPOSIT/TIME have been added > COPY now propagates the file owner and protection as well as@ file characteristics and record attributes. It still does not propagate ACLs.t? DISKBLOCK no longer issues a SHOW command every time you do al? select. You may issue the SHOW command yourself if required.m? A memory leak has been fixed that lost TRACK_SIZE * 512 bytesf$ every time a new disk was selected@ The page length was being incorrectly handled if a string withG no line feeds (or more than one line feed) was sent to the terminal,  this has now been fixede2 V5.3_New_Featuresn% V5.3 has the following new featuresh> FILL command fills the read write buffer witayed. Any invalid file headers will be ignoredHG If /LBN and /VALID are both specified and there is only a SINGLE LBN aH specified then the scan will stop after a single valid match has been  found./SELECTn /SELECT=(keyword[,...])D The /SELECT qualifier has identical syntax and meaning to the DCL  command DIRECTORY/SELECT/ DISKBLOCK> DIRECTORY /SELECT=SIZE=MINIMUM=nnns< Only report files with a size greater than or equal to nnn/ DISKBLOCK> DIRECTORY/ SELECT=SIZE=MAXIMUM=mmml9 Only report files with a size less than or equal to nnn = DISKBLOCK> DIRECTORY /SELECT=SIZE=(MINIMUM=nnn,MAXIMUM=mmm)o@ Only report files with a size greater than or equal to nnn AND less than or equal to mmm /BY_OWNERl /BY_OWNER=UICG The /BY_OWNER qualifier enables you to find files owned by a specifici> UIC or rights identifier. Wild card UICs are not supported.( DISKBLOCK> DIRECTORY /BY_OWNER=[23,45]( DISKBLOCK> DIRECTORY /BY_OWNER=[RANCE]- DISKBLOCK> DIRECTORY /BY_OWNER=[USER,RANCE] ( DISKBLOCK> DIRECTORY /BY_OWNER=PROJECT/DELETEDK The /DELETED qualifier can be used to locate the headers of DELETED filestI on the disk. If you use this qualifier then ONLY deleted files will befH reported, and the error message saying that this may be a deleted file will be suppressed DISKBLOCK> DIRECTORY /DELETEDI- DISKBLOCK> DIRECTORY /BACKLINK=nnn /DELETED * DISKBLOCK> DIRECTORY VITAL.FILE /DELETED/BACKFIDG Only reports files with a particulare DIRECTORY command is much quicker,  DISKBLOCK> SEARCH /HEADERD! DISKBLOCK> SEARCH /HEADER=*.RDBl( DISKBLOCK> SEARCH /HEADER=000000.DIR;1+ DISKBLOCK> SEARCH /HEADER=LOGIN.COM /FULLe /FULL.0 This switch is only valid with SEARCH /HEADER.< It produces a second line of output for each header found.@ This displays FID, Extension Segment number and Creation Date. /BLOCKS  /BLOCKS=(keyword[,...])I Using the /BLOCKS switch you can specify a starting block and an endingIF block or a count of the number of blocks to search. You can specifyD both a START block and an END block, or a START block and a COUNT,4 you may not specify both an END block and a COUNT.< The default START block is 0 for a DRIVE and 1 for a FILE.C DISKBLOCK> SEARCH /BLOCKS=START:%X40 /STRING="String to look for"i< This command will search all blocks starting from block 64> DISKBLOCK> SEARCH /BLOCKS=(START:64,END=80) /LONG=%XFFFFFFFF* This command will search blocks 64 to 80A DISKBLOCK> SEARCH /BLOCKS=(START=%X40, COUNT=16) /WORD=%O177777T* This command will search blocks 64 to 80. DISKBLOCK> SEARCH /BLOCKS=END:%X20 /BYTE=127A This command will search blocks 0 to 32 if a DRIVE is selected.l6 It will search blocks 1 to 32 if a file is selected. 2 Using_^T% Searching a whole drive can be slowK< (RA60=17mins, RA90=100 mins if there is no other activity)> To check on progress you may type ^T (Control T) at any time> during a search. This will cause a line --> <--------reserved--------------->U 3 HOMELBN% HM2$L_HOMELBNc! Starting byte - 0' Size - 4 bytesY= Meaning - LBN of home (i.e. this) block 3 ALHOMELBNt HM2$L_ALHOMELBN ! Starting byte - 4 ' Size - 4 bytese; Meaning - LBN of alternate home blockt 3 ALTIDXLBNe HM2$L_ALTIDXLBNm! Starting byte - 8' Size - 4 bytes B Meaning - LBN of alternate index file header 3 STRUCLEV HM2$W_STRUCLEV" Starting byte - 12' Size - 2 bytesr6 Meaning - volume structure level6 always %X0201 for ODS2 3 STRUCVER HM2$B_STRUCVER" Starting byte - 12& Size - 1 byte8 Meaning - structure version number1 always 1 for ODS2r 3 STRUCLEV_B HM2$B_STRUCLEV" Starting byte - 13& Size - 1 byte4 Meaning - main structure level1 always 2 for ODS2X 3 CLUSTER7 HM2$W_CLUSTERw" Starting byte - 14' Size - 2 byteso= Meaning - storage bitmap cluster factorN 3 HOMEVBN/ HM2$W_HOMEVBNh" Starting byte - 16' Size - 2 bytest= Meaning - VBN of home (i.e. this) blockl 3 ALHOMEVBN HM2$W_ALHOMEVBNO" Starting byte - 18' Size - 2 bytes ; Meaning - VBN of alternate home block 3 ALTIDXVBNo HM2$W_ALTIDXVBNa" Starting byte - 20' Size - 2 bytes B Meaning - VBN of alternate index file header 3 IBMAPVBN HM2$W_IBMAPVBN" Starting byte - 22' Size %i$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2b"73600 [RANCE.DAT]MYFILE.DAT;1: DISKBLOCK> read /fid=6998 ! Read the file headerJ %DSKB-I-BLKREAD, Block 273600 (%X00042CC0) of _$1$DUA2 successfully readB %DSKB-W-RDBADHEADER, Invalid File Header, FID: 6998, LBN: 273600I -DSKB-E-HDRINVFID, FH2$W_FID_NUM (byte 8) is 0, could be a deleted file$F DISKBLOCK> EXAM 52 ! Check current file characteristics@ DISKBLOCK> DEPOSIT 52 0 ! Clear bit 15 (FH2$V_MARKDEL)9 DISKBLOCK> DEPOSIT /WORD 8 6998 ! Write the correct FI D; DISKBLOCK> CHECKSUM /DEPOSIT ! Create a valid checksum E %DSKB-I-CHKCHANGED, Checksum has been changed from %X5327 to %XAF62 C DISKBLOCK> DUMP /FILE ! Check that file header is validfH DISKBLOCK> REWRITE ! Write file header back to INDEXF.SYSM %DSKB-I-BLKMODIF, Block 1000 (%X000003E8) of _$1$DUA2 successfully modifiedr8 Now you need to Dismount the disk, mount it again and 7 $ ANAL /DISK /REPAIR should put the file in [SYSLOST] ww 2 bytest= Meaninh a data patternD Many new qualifiers to the Directory command allow file selections to be made.b8 /SELECT=SIZE finds files above or below a certain size/ /BY_OWNER finds files with a particular ownerr# /DELETED finds ONLY deleted files$0 /BACKFID finds files in a particular directory8 /BEFORE /SINCE /BACKUP /CREATED /EXPIRED and /MODIFIED< allow selection of files based on dates in the file header2 V5.4_New_Featuresr4 V5.4 has the following new features and bug fixes. FID in the file header BACK FID. G The BACK FID is the file id of the directory to which the file header is pointingE= The file id of a directory file can be found by DUMP/HEADEReB of the directory file (either from DCL or from within DISKBLOCK)J This qualifier can be used to locate all files in a particular directoryJ It can be particularly useful in conjunction with the /DELETED qualifier= to locate all files that have been DELETED from a directoryi- DISKBLOCK> DIRECTORY /BACKLINK=nnn /DELETEDn /PLACEMENTH Only reports files which have placement information specified in their mapping pointers. s /SINCE /SINCE=time: Selects only those files dated after the specified time.L You must specify one of the following qualifiers with the /SINCE qualifierF to indicate the time attribute to be used as the basis for selection, /BACKUP /CREATED /EXPIRED or /MODIFIED! The time should be specified as /SINCE=01-jan-1990 /SINCE=01-JAN-1990M /S 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in usea 3 ACC_MODE  FH2$B_ACC_MODEt" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> read 0 bits <2:3> write2 bits <3:4> execute1  3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useM 3 ACC_MODE  FH2$B_ACC_MODEn" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> reade0 bits <2:3> write2 bits <3:4> execute1 INCE="01-JAN-1990 03:42:00.00" <-- NOTE: MUST BE UPPER CASE and QUOTEDo/BEFOREh /BEFORE=timem; Selects only those files dated before the specified time..M You must specify one of the following qualifiers with the /BEFORE qualifiertF to indicate the time attribute to be used as the basis for selection, /BACKUP /CREATED /EXPIRED or /MODIFIED! The time should be specified asm /BEFORE=01-jan-1990e /BEFORE=01-JAN-1990N /BEFORE="01-JAN-1990 03:42:00.00" <-- NOTE: MUST to be output showing, the last blocks read and the current time. For Example:# DISKBLOCK> SEARCH /STRING="Ascii"EC %DSKB-I-SEARCHING, Searching blocks 0 - nn for string "Ascii".... 9 %DSKB-I-CONTROL_T, Just checked block 10008 at 18:07:43L 2 ExamplesC DISKBLOCK> SEARCH /BLOCKS=START:%X40 /STRING="String to look for"I This command will search all blocks starting from block 64 for the text> DISKBLOCK> SEARCH /BLOCKS=(START:64,END=80) /LONG=%XFFFFFFFFB This command will sear ch blocks 64 to 80 for an all 1's longwordA DISKBLOCK> SEARCH /BLOCKS=(START=%X40, COUNT=16) /WORD=%O177777> This command will search blocks 64 to 80 for an all 1's word. DISKBLOCK> SEARCH /BLOCKS=END:%X20 /BYTE=127G This command will search blocks 0 to 32 of a DISK for an all 1's byte6 It will search blocks 1 to 32 if a FILE is selected.F DISKBLOCK> SEARCH /STRING=INDEXF.SYS /OUTPUT=sys$scratch:indexf.listD This command will search the entire drive/file for the text stringC INDEXF.SYS It will create a file with the details of all matches.awwEDo/BEFOREh /BEFORE=timem; Selects only those files dated before the specified time..M You must specify one of the following qualifiers with the /BEFORE qualifiertF to indicate the time attribute to be used as the basis for selection, /BACKUP /CREATED /EXPIRED or /MODIFIED! The time should be specified asm /BEFORE=01-jan-1990e /BEFORE=01-JAN-1990N /BEFORE="01-JAN-1990 03:42:00.00" <-- NOTE: MUST B Meaning - LBN of alternate index file header 3 STRUCLEV HM2$W_STRUCLEV" Starting byte - 12' Size - 2 bytesr6 Meaning - volume structure level6 always %X0201 for ODS2 3 STRUCVER HM2$B_STRUCVER" Starting byte - 12& Size - 1 byte8 Meaning - structure version number1 always 1 for ODS2r 3 STRUCLEV_B HM2$B_STRUCLEV" Starting byte - 13& Size - 1 byte4 Meaning - main structure level1 always 2 for ODS2X 3 CLUSTER7 HM2$W_CLUSTERw" Starting byte - 14' Size - 2 byteso= Meaning - storage bitmap cluster factorN 3 HOMEVBN/ HM2$W_HOMEVBNh" Starting byte - 16' Size - 2 bytest= Meaning - VBN of home (i.e. this) blockl 3 ALHOMEVBN HM2$W_ALHOMEVBN/" Starting byte - 18' Size - 2 bytes ; Meaning - VBN of alternate home blockF 3 ALTIDXVBN HM2$W_ALTIDXVBNi" Starting byte - 20' Size - 2 bytesIB Meaning - VBN of alternate index file header 3 IBMAPVBN HM2$W_IBMAPVBN" Starting byte - 22' Size - 2 bytesn8 Meaning - VBN of index file bitmap 3 IBMAPLBN HM2$L_IBMAPLBN" Starting byte - 24' Size - 4 bytesa8 Meaning - LBN of index file bitmap 3 MAXFILES HM2$L_MAXFILES" Starting byte - 28' Size - 4 bytes A Meaning - maximum number of files on volume 3 IBMAPSIZE  HM2$W_IBMAPSIZE " Starting byte - 32' Size  3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useL 3 ACC_MODEL FH2$B_ACC_MODE " Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> readn0 bits <2:3> write2 bits <3:4> execute1 - 2 bytes> Meaning - index file bitmap size, blocks 3 RESFILES HM2$W_RESFILES" Starting byte - 34' Size - 2 bytesaB Meaning - number of reserved files on volume 3 DEVTYPEo HM2$W_DEVTYPEu" Starting byte - 36' Size - 2 bytesn0 Meaning - disk device type3 RVNE HM2$W_RVNE" Starting byte - 38' Size ҫ$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2I"  - 2 bytesiE Meaning - relative volume number of this volumeU 3 SETCOUNT HM2$W_SETCOUNT" Starting byte - 40' Size - 2 bytesE7 Meaning - count of volumes in setr 3 VOLCHARh HM2$W_VOLCHARt" Starting byte - 42' Size - 2 bytes 6 Meaning - volume characteristics 4 READCHECKt HM2$V_READCHECKC" Starting byte - 42! C DIRECTORY /PLACEMENT finds files with placement mapping pointersmG SAVE and RESTORE now use the /BLOCKS=(START,END,COUNT) qualifier to iH save and restore any contiguous range of blocks on the selected disk or file. G DUMP can now use the /BLOCK and /FID qualifiers to dump a formatted F block from the disk without having to overwrite the main read write buffer.E SEARCH /HEADER has a new switch /FULL which gives a second line ofbF information for each header found showing Extension Segment number, Creation Date and FID.nI Improvements have been made to the handling of disk read errors during  DIRECTORY commands.L The default for a SELECT command has been changed from /WRITE to /NOWRITEI A potential hang caused by the use of the same Event flag at both AST % and process levels has been fixed. H An access violation during Examine commands on Alpha systems has been fixed.VH Incorrect numeric and UIC displays from dump commands have been fixed2 V5.5_New_Features J The copy command now copies ACLs as well as other file characteristics.G The copy command now uses the filename from the input file header as H the default output file name. The default output directory is still  SYS$SCRATCH;_E A problem which caused incorrect display of some data values from @ the dump command on OpenVMS Alpha systems has been corrected.C A problem which caused incorrect display of data values from the F  EXAMINE /OCTAL command on OpenVMS Alpha systems has been corrected.wwall read operations 4 WRITCHECKR HM2$V_WRITCHECK:" Starting byte - 42! Bit number - 1 ; Meaning - verify all write operations;4 ERASEK HM2$V_ERASE/" Starting byte - 42! Bit number - 2C9 Meaning - erase all files on delete 4 NOHIGHWATERe HM2$V_NOHIGHWATER" Starting byte - 42! Bi 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useS 3 ACC_MODE  FH2$B_ACC_MODES" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> read 0 bits <2:3> write2 bits <3:4> execute1 BE UPPER CASE and QUOTED /BACKUP B Modifies the time value specified with the /BEFORE or the /SINCEA qualifier. The /BACKUP qualifier selects files according to therD dates of their most recent backups. This qualifier is incompatibleC with the following qualifiers that also allow you to select files B according to time attributes: /CREATED, /EXPIRED, and /MODIFIED./CREATEDB Modifies the time value specified with the /BEFORE or the /SINCE@ qualifier. The /CREATED qualifier se- 2 bytesn8 Meaning - VBN of index file bitmap 3 IBMAPLBN HM2$L_IBMAPLBN" Starting byte - 24' Size - 4 bytesa8 Meaning - LBN of index file bitmap 3 MAXFILES HM2$L_MAXFILES" Starting byte - 28' Size - 4 bytes A Meaning - maximum number of files on volume 3 IBMAPSIZE  HM2$W_IBMAPSIZE " Starting byte - 32' Size  3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useS 3 ACC_MODE  FH2$B_ACC_MODEB" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> read 0 bits <2:3> write2 bits <3:4> execute1   - 2 bytes> Meaning - index file bitmap size, blocks 3 RESFILES HM2$W_RESFILES" Starting byte - 34' Size - 2 bytesaB Meaning - number of reserved files on volume 3 DEVTYPEo HM2$W_DEVTYPEu" Starting byte - 36' Size - 2 bytesn0 Meaning - disk device type3 RVNE HM2$W_RVNE" Starting byte - 38' Size   - 2 bytesiE Meaning - relative volume number of this volumeU 3 SETCOUNT HM2$W_SETCOUNT" Starting byte - 40' Size - 2 bytesE7 Meaning - count of volumes in setr 3 VOLCHARh HM2$W_VOLCHARt" Starting byte - 42' Size - 2 bytes 6 Meaning - volume characteristics 4 READCHECKt HM2$V_READCHECKC" Starting byte - 42!  Bit number - 0 : Meaning - verify all read operations 4 WRITCHECKI HM2$V_WRITCHECK " Starting byte - 42! Bit number - 1I; Meaning - verify all write operationsF4 ERASE HM2$V_ERASE*" Starting byte - 42! Bit number - 2K9 Meaning - erase all files on delete0 4 NOHIGHWATER  HM2$V_NOHIGHWATER " Starting byte - 42! Bi t number - 3S; Meaning - turn off high-water marking 4 CLASS_PROT HM2$V_CLASS_PROT" Starting byte - 42! Bit number - 44< Meaning - enable classification checks 3 VOLOWNER HM2$L_VOLOWNER" Starting byte - 44' Size - 4 bytesR0 Meaning - volume owner UIC 3 SEC_MASK HM2$L_SEC_MASK" Starting byte - 48' Size  - 4 bytesX4 Meaning - volume security mask 3 PROTECT1 HM2$W_PROTECT-" Starting byte - 52' Size - 2 bytes56 Meaning - volume protection code4 bits <0:3> System3 bits <4:7> Owner/3 bits <8:11> Group43 bits <12:15> WorldL Within each 4 bit fieldJ7  Bit number - 0 : Meaning - verify all read operations 4 WRITCHECKI HM2$V_WRITCHECK " Starting byte - 42! Bit number - 1I; Meaning - verify all write operationsF4 ERASE HM2$V_ERASE*" Starting byte - 42! Bit number - 2K9 Meaning - erase all files on delete0 4 NOHIGHWATER  HM2$V_NOHIGHWATER " Starting byte - 42! Bit number - 3S; Meaning - turn off high-water marking 4 CLASS_PROT HM2$V_CLASS_PROT" Starting byte - 42! Bit number - 44< Meaning - enable classification checks 3 VOLOWNER HM2$L_VOLOWNER" Starting byte - 44' Size - 4 bytesR0 Meaning - volume owner UIC 3 SEC_MASK HM2$L_SEC_MASK" Starting byte - 48' Size  - 4 bytesX4 Meaning - volume security mask 3 PROTECT1 HM2$W_PROTECT-" Starting byte - 52' Size - 2 bytes56 Meaning - volume protection code4 bits <0:3> System3 bits <4:7> Owner/3 bits <8:11> Group43 bits <12:15> WorldL Within each 4 bit fieldJ7 "$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2" 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in usei 3 ACC_MODE  FH2$B_ACC_MODEi" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> readl0 bits <2:3> write2 bits <3:4> execute1  3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useS 3 ACC_MODE  FH2$B_ACC_MODEB" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> read 0 bits <2:3> write2 bits <3:4> execute1  bit 0 Set to deny read access;8 bit 1 Set to deny write access: bit 2 Set to deny execute access9 bit 3 Set to deny delete access0 3 FILEPROT HM2$W_FILEPROT" Starting byte - 54' Size - 2 bytes 7 Meaning - default file protectionr2 not currently used 3 RECPROTw HM2$W_RECPROTh" Starting byte - 56' Size - 2 bytesO> Meaning - default file record protection2 not currently used 3 CHECKSUM15 HM2$W_CHECKSUM1 " Starting byte - 58' Size - 2 bytes0. Meaning - first checksumG Use DISKBLOCK> CHECKSUM/HOME command topC calculate a new checksum if needed.e 3 CREDATEl HM2$Q_CREDATEp" Starti%ng byte - 60' Size - 8 bytess= Meaning - Quadword Volume Creation dater3 WINDOW HM2$B_WINDOW" Starting byte - 68& Size - 1 byte3 Meaning - default window size_ 3 LRU_LIM  HM2$B_LRU_LIM " Starting byte - 69& Size - 1 byte1 Meaning - default LRU limit/E (number of directories in di lects files based on their< dates of creation. This qualifier is incompatible with theD following qualifiers that also allow you to select files according7 to time attributes: /BACKUP, /EXPIRED, and /MODIFIED. /EXPIREDB Modifies the time value specified with the /BEFORE or the /SINCED qualifier. The /EXPIRED qualifier selects files according to theirA expiration dates. (The expiration date is set with the SET FILE C /EXPIRATION_DATE command.) The /EXPIRED qualifier is incompatible C  with the following qualifiers that also allow you to select files 7 to time attributes: /BACKUP, /CREATED, and /MODIFIED. /MODIFIED B Modifies the time value specified with the /BEFORE or the /SINCE? qualifier. The /MODIFIED qualifier selects files according to ? the dates on which they were last modified. This qualifier isnC incompatible with the following qualifiers that also allow you to C select files according to time attributes: /BACKUP, /CREATED, andr /EXPIRED. /FULL L Outputs a formatted dump of the file header for each matching file found 2 Examples! DISKBLOCK> DIR IMPORTANT*.*FILE D FID: 2045 LBN: 1023456 [DIR.SUBDIR]IMPORTANT_3.ANY_FILE;1H FID: 31927 LBN: 2220459 [DIR.SUB.SUB]IMPORTANT.ANOTHER_FILE;14 DISKBLOCK> DIR *.* /OUTPUTE %DSKB-I-CREATED, Created file DISK$USERS3:[RANCE.TEMP]DISKBLOCK.LISKG %DSKB-I-LASTFID, Just read FID 2883 at 16:23:08 <-- Control T typedc DISKBLOCK>  DISKBLOCK> DIR /FID=2045D FID: 2045 LBN: 1023456 [DIR.SUBDIR]IMPORTANT_3.ANY_FILE;1 DISKBLOCK> DIR /LBN=10008 FID: 7671 LBN: 370067 [RANCE.SUBDIR]FILE.EXT;2D %DSKB-W-RDBADHEADER, Invalid File Header, FID: 15499, LBN: 1203844I -DSKB-E-HDRINVFID, FH2$W_FID_NUM (byte 8) is 0, could be a deleted file9 FID: 15499 LBN: 1203844 [RANCE]DELETED_FILE.TMP;1 ! DISKBLOCK> DIR /LBN=1000 /VALID 8 FID: 7671 LBN: 370067 [RANCE.SUBDIR]FILE.EXT;2 DISKBLOCK> DIR /BACKLINK=2301e1 FID: 7671 LBN : 370067 [RANCE]FILE.EXT;2 D %DSKB-W-RDBADHEADER, Invalid File Header, FID: 15499, LBN: 1203844I -DSKB-E-HDRINVFID, FH2$W_FID_NUM (byte 8) is 0, could be a deleted file1 FID: 15499 LBN: 1203844 [RANCE]FILE.EXT;1 1 FID: 20111 LBN: 370067 [RANCE]FILE.EXT;4 1 FID: 108520 LBN: 2045192 [RANCE]FILE.EXT;3i( DISKBLOCK> DIR /BACKLINK=2301 /DELETED1 FID: 15499 LBN: 1203844 [RANCE]FILE.EXT;1 C DISKBLOCK> DIR /VALID /BACKLINK=2301 /MODIFIED /SINCE=01-JAN-1993 1 FI D: 20111 LBN: 370067 [RANCE]FILE.EXT;4 & DISKBLOCK> DIR /LBN=(1000,1200,5000), DISKBLOCK> DIR /LBN=1000 /COUNT=500 /VALIDF This command will locate file headers that map any LBNs in the rangeF 1000, 1001, 1002, ... 1498, 1499. It will continue scanning to the G end of INDEXF.SYS even after all matches have been found and multiplylG allocated blocks will be reported against all valid headers. Invalid A or deleted headers which map any of these LBNs will be ingored. = DI! 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in use2 3 ACC_MODE  FH2$B_ACC_MODE " Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> read 0 bits <2:3> write2 bits <3:4> execute1 SKBLOCK> DIRECTORY /LBN=(1000,2000,3000) /COUNT=(10,10,5) J This command will locate file headers that MAP any of the following LBNs< 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009< 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009$ 3000, 3001, 3002, 3003, 3004, 3004B If any of these LBNs is mapped by multiple file headers then allH file names will be reported, even if one or more of them is a DELETED G or INVALID file header. The filenames will be reported in FID order IG and the command will not finish until ALL file headers in INDEXF.SYS - have been checked.ww 12 bytes+ Meaning - Volume name @ (padded with spaces, ASCII %X20) 3 OWNERNAME$ HM2$T_OWNERNAMEB# Starting byte - 484E( Size - 12 bytes, Meaning - Volume Owner@ (padded with spaces, ASCII %X20)3 FORMAT HM2$T_FORMAT# Starting 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useS 3 ACC_MODE  FH2$B_ACC_MODES" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> read 0 bits <2:3> write2 bits <3:4> execute1   bit 0 Set to deny read access 8 bit 1 Set to deny write access: bit 2 Set to deny execute access9 bit 3 Set to deny delete access 3 FILEPROT HM2$W_FILEPROT" Starting byte - 54' Size - 2 bytesC7 Meaning - default file protectionl2 not currently used 3 RECPROTr HM2$W_RECPROTd" Starting byte - !56' Size - 2 bytesF> Meaning - default file record protection2 not currently used 3 CHECKSUM1B HM2$W_CHECKSUM1 " Starting byte - 58' Size - 2 bytes . Meaning - first checksumG Use DISKBLOCK> CHECKSUM/HOME command toaC calculate a new checksum if needed. 3 CREDATE  HM2$Q_CREDATEU" Starti$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2:"!"ng byte - 60' Size - 8 bytesr= Meaning - Quadword Volume Creation date 3 WINDOW HM2$B_WINDOW" Starting byte - 68& Size - 1 byte3 Meaning - default window size 3 LRU_LIM  HM2$B_LRU_LIMn" Starting byte - 69& Size - 1 byte1 Meaning - default LRU limitaE (number of directories in di#r access cache)N3 EXTEND HM2$W_EXTEND" Starting byte - 70' Size - 2 bytes/3 Meaning - default file extende 3 RETAINMINa HM2$Q_RETAINMINe" Starting byte - 72' Size - 8 bytesnE Meaning - minimum time between current time and 0 file expiration. 3 RETAINMAXn HM2$Q_RETAINMAXd" Starting byte - 80' Size $- 8 bytesOE Meaning - maximum time between current time ande0 file expiration. 3 REVDATE1 HM2$Q_REVDATE4" Starting byte - 88' Size - 8 bytes04 Meaning - Volume revision date? (e.g. date of last full backup)a 3 MIN_CLASSm HM2$R_MIN_CLASS," Starting byte - 96( Size - 20 bytes 3 MAX_CLASSr HM2$R_MA(X_CLASSr# Starting byte - 116 ( Size - 20 bytes 3 SERIALNUMe HM2$L_SERIALNUM# Starting byte - 456' Size - 4 bytess: Meaning - pack (media) serial number 3 STRUCNAME HM2$T_STRUCNAMEK# Starting byte - 460-( Size - 12 bytesI Meaning - Name of the volume set (from MOUNT /BIND)o@ (padded with spa'r access cache))3 EXTEND HM2$W_EXTEND" Starting byte - 70' Size - 2 bytes23 Meaning - default file extend 3 RETAINMIN  HM2$Q_RETAINMINd" Starting byte - 72' Size - 8 bytesbE Meaning - minimum time between current time ande0 file expiration. 3 RETAINMAX  HM2$Q_RETAINMAXi" Starting byte - 80' Size ' 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useL 3 ACC_MODEL FH2$B_ACC_MODE " Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> readn0 bits <2:3> write2 bits <3:4> execute1 .- 8 bytes E Meaning - maximum time between current time and 0 file expiration. 3 REVDATEM HM2$Q_REVDATEt" Starting byte - 88' Size - 8 bytes 4 Meaning - Volume revision date? (e.g. date of last full backup) 3 MIN_CLASS  HM2$R_MIN_CLASS " Starting byte - 96( Size - 20 bytes 3 MAX_CLASSl HM2$R_MA)ces, ASCII %X20) 3 VOLNAME_ HM2$T_VOLNAMEB# Starting byte - 472-( Size - 12 bytes+ Meaning - Volume name @ (padded with spaces, ASCII %X20) 3 OWNERNAME$ HM2$T_OWNERNAMEB# Starting byte - 484E( Size - 12 bytes, Meaning - Volume Owner@ (padded with spaces, ASCII %X20)3 FORMAT HM2$T_FORMAT# Starting* byte - 496-( Size - 12 bytes. Meaning - "DECFILE11B " 3 CHECKSUM2- HM2$W_CHECKSUM2-# Starting byte - 510-' Size - 2 bytes / Meaning - second checksum-B Use DISKBLOCK> CHECKSUM command toC calculate a new checksum if needed.G 2 File_Header-H In order for an ODS2 file header to be valid the following condi+tions  must be met.; 1) FH2$B_IDOFFSET must point to a byte which is beyond- FH2$L_HIGHWATER-G 2) FH2$B_IDOFFSET must be less than or equal to FH2$B_MPOFFSET -G 3) FH2$B_MPOFFSET must be less than or equal to FH2$B_ACOFFSET G 4) FH2$B_ACOFFSET must be less than or equal to FH2$B_RSOFFSET -@ 5) The high byte of FH2$W_STRUCLEV must contain the value 2; 6) The low byte of FH2$W_STRUCLEV must be 1 or greater 1 7) FH2$W_FID_NUM must con,tain the FID number 5 8) FH2$W_MAP_INUSE must be less than or equal tof' FH2$B_ACOFFSET - FH2$B_MPOFFSETF# 9) The Checksum must be valid.  E A deleted file header conforms to the format of a valid file headera! with the following differences. 7 1) FH2$V_MARKDEL (bit 15) is set in FH2$L_FILECHAR@ 2) FH2$W_FID_NUM, FH2$B_FID_NMX and FH2$B_FID_RVN are all 0 3) The checksum is 0 ' The layout of an ODS2 File Header is.cI FH2$B_RSOFFSET - FH2$B_ACOFFSET FH2$B_MPOFFSET FH2$B_IDOFFSET I <--------FH2$W_STRUCLEV---------> <---------FH2$W_SEG_NUM--------->tI <--------FH2$W_FID_SEQ----------> <---------FH2$W_FID_NUM--------->iH <--------FH2$W_EX_FIDNUM--------> FH2$B_FID_NMX FH2$B_FID_RVNI FH2$B_EX_FIDNMX FH2$B_EX_FIDRVN <--------FH2$W_EX_FIDSEQ-------->I <---------------------------------------------------------------------> I <------------------------FH2$W_RECATTR (32 bytes)-------------------6--> I <---------------------------------------------------------------------> I <------------------------FH2$L_FILECHAR-------------------------------> I <--------FH2$W_BK_FIDNUM--------> <--------FH2$W_FILEPROT--------->eI FH2$B_BK_FIDNMX FH2$B_BK_FIDRVN <--------FH2$W_BK_FIDSEQ--------> H <-------reserved (2 bytes)-----> FH2$B_RU_ACTIVE FH2$B_JOURNALI <------------------------FH2$L_HIGHWATER------------------------------> I <------------------------reserved (8 bytes)/X_CLASS# Starting byte - 116S( Size - 20 bytes 3 SERIALNUMI HM2$L_SERIALNUM # Starting byte - 456q' Size - 4 bytes$: Meaning - pack (media) serial number 3 STRUCNAME$ HM2$T_STRUCNAMEl# Starting byte - 460 ( Size - 12 bytesI Meaning - Name of the volume set (from MOUNT /BIND) @ (padded with spa0ces, ASCII %X20) 3 VOLNAME  HM2$T_VOLNAMES# Starting byte - 472 ( Size - 12 bytes+ Meaning - Volume name@ (padded with spaces, ASCII %X20) 3 OWNERNAMEe HM2$T_OWNERNAMEc# Starting byte - 484)( Size - 12 bytes, Meaning - Volume Owner@ (padded with spaces, ASCII %X20)3 FORMAT HM2$T_FORMAT# Starting1 byte - 496$( Size - 12 bytes. Meaning - "DECFILE11B " 3 CHECKSUM2t HM2$W_CHECKSUM2F# Starting byte - 510_' Size - 2 bytesI/ Meaning - second checksumNB Use DISKBLOCK> CHECKSUM command toC calculate a new checksum if needed.- 2 File_Header H In order for an ODS2 file header to be valid the following condi2tions  must be met.; 1) FH2$B_IDOFFSET must point to a byte which is beyond- FH2$L_HIGHWATER2G 2) FH2$B_IDOFFSET must be less than or equal to FH2$B_MPOFFSET -G 3) FH2$B_MPOFFSET must be less than or equal to FH2$B_ACOFFSET _G 4) FH2$B_ACOFFSET must be less than or equal to FH2$B_RSOFFSET -@ 5) The high byte of FH2$W_STRUCLEV must contain the value 2; 6) The low byte of FH2$W_STRUCLEV must be 1 or greater-1 7) FH2$W_FID_NUM must con$n?$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2:"24tain the FID number-5 8) FH2$W_MAP_INUSE must be less than or equal to-' FH2$B_ACOFFSET - FH2$B_MPOFFSET-# 9) The Checksum must be valid.s E A deleted file header conforms to the format of a valid file header-! with the following differences.e7 1) FH2$V_MARKDEL (bit 15) is set in FH2$L_FILECHAR-@ 2) FH2$W_FID_NUM, FH2$B_FID_NMX and FH2$B_FID_RVN are all 0 3) The checksum is 0 ' The layout of an ODS2 File Header is. I FH2$B_RSOFFSET 4 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useS 3 ACC_MODE  FH2$B_ACC_MODEB" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> read 0 bits <2:3> write2 bits <3:4> execute1 : FH2$B_ACOFFSET FH2$B_MPOFFSET FH2$B_IDOFFSETbI <--------FH2$W_STRUCLEV---------> <---------FH2$W_SEG_NUM--------->aI <--------FH2$W_FID_SEQ----------> <---------FH2$W_FID_NUM--------->aH <--------FH2$W_EX_FIDNUM--------> FH2$B_FID_NMX FH2$B_FID_RVNI FH2$B_EX_FIDNMX FH2$B_EX_FIDRVN <--------FH2$W_EX_FIDSEQ-------->2I <---------------------------------------------------------------------> I <------------------------FH2$W_RECATTR (32 bytes)-------------------6 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useo 3 ACC_MODEE FH2$B_ACC_MODEE" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> readC0 bits <2:3> write2 bits <3:4> execute1 7--------------------------> I <------------------------reserved-------------------------------------> I <------------------------FH2$R_CLASS_PROT (20 bytes)-----------------> I <---------------------------------------------------------------------> 3 Ident, Map, ACL and Reserved areas ! <--------FH2$W_CHECKSUM-------> 3 IDOFFSETF FH2$B_IDOFFSETe! Starting byte - 0 & Size - 1 byte: Meaning - ident area off8set in wordsH Multiply by 2 to find address of ID area 3 MPOFFSETe FH2$B_MPOFFSET ! Starting byte - 1S& Size - 1 byte8 Meaning - map area offset in wordsI Multiply by 2 to find address of MAP areaW 3 ACOFFSETa FH2$B_ACOFFSET ! Starting byte - 2 & Size - 1 byteC Meaning - access control list offsetB in wordsDI Multiply by 2 to find address of ACL area2 3 RSOFFSET  FH2$B_RSOFFSET ! Starting byte - 3 & Size - 1 byte= Meaning - reserved area offset in words N Multiply by 2 to find address of RESERVED area 3 SEG_NUM FH2$W_SEG_NUM! Starting byte - 4e& Size - 2 byte3 Meaning - file segment number DB 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in usei 3 ACC_MODE  FH2$B_ACC_MODEi" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> readl0 bits <2:3> write2 bits <3:4> execute1 ;--> I <--------------------------------------------------------------------->LI <------------------------FH2$L_FILECHAR-------------------------------> I <--------FH2$W_BK_FIDNUM--------> <--------FH2$W_FILEPROT---------> I FH2$B_BK_FIDNMX FH2$B_BK_FIDRVN <--------FH2$W_BK_FIDSEQ--------> H <-------reserved (2 bytes)-----> FH2$B_RU_ACTIVE FH2$B_JOURNALI <------------------------FH2$L_HIGHWATER------------------------------>aI <------------------------reserved (8 bytes)=--------------------------> I <------------------------reserved------------------------------------->eI <------------------------FH2$R_CLASS_PROT (20 bytes)----------------->I <--------------------------------------------------------------------->S3 Ident, Map, ACL and Reserved areas ! <--------FH2$W_CHECKSUM-------> 3 IDOFFSET  FH2$B_IDOFFSETm! Starting byte - 0 & Size - 1 byte: Meaning - ident area off= 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in usei 3 ACC_MODE  FH2$B_ACC_MODEi" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> readl0 bits <2:3> write2 bits <3:4> execute1 >set in wordsH Multiply by 2 to find address of ID area 3 MPOFFSETo FH2$B_MPOFFSET_! Starting byte - 1 & Size - 1 byte8 Meaning - map area offset in wordsI Multiply by 2 to find address of MAP areao 3 ACOFFSETD FH2$B_ACOFFSETS! Starting byte - 2S& Size - 1 byteC Meaning - access control list offset? in wordsI Multiply by 2 to find address of ACL area 3 RSOFFSETe FH2$B_RSOFFSET ! Starting byte - 3D& Size - 1 byte= Meaning - reserved area offset in wordsMN Multiply by 2 to find address of RESERVED area 3 SEG_NUM FH2$W_SEG_NUM! Starting byte - 4 & Size - 2 byte3 Meaning - file segment numberaD@ segment number 0 is the first headerE segment number 1 is the second header $ etc. 3 STRUCLEVX FH2$W_STRUCLEV! Starting byte - 6& Size - 2 byte4 Meaning - file structure level7 normally 20001 for ODS2t 3 STRUCVER  FH2$B_STRUCVER ! Starting byte - 6 & Size - F 1 byte6 Meaning - file structure version* 2 for ODS2 3 STRUCLEV_BN FH2$B_STRUCLEVe! Starting byte - 7 & Size - 1 byte> Meaning - principal file structure level4 currently 1 for ODS23 FID FH2$W_FID! Starting byte - 8 ' Size - 6 bytes8 Meaning - File Identifier, 3 words 3 F 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useS 3 ACC_MODE  FH2$B_ACC_MODES" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> read 0 bits <2:3> write2 bits <3:4> execute1 C segment number 0 is the first headerE segment number 1 is the second headern$ etc. 3 STRUCLEV  FH2$W_STRUCLEVa! Starting byte - 6 & Size - 2 byte4 Meaning - file structure level7 normally 20001 for ODS2 3 STRUCVER  FH2$B_STRUCVERr! Starting byte - 6N& Size - G$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2"CD 1 byte6 Meaning - file structure version* 2 for ODS2 3 STRUCLEV_BF FH2$B_STRUCLEVF! Starting byte - 7& Size - 1 byte> Meaning - principal file structure level4 currently 1 for ODS23 FID FH2$W_FID! Starting byte - 8 ' Size - 6 bytes 8 Meaning - File Identifier, 3 words 3 E FID_NUM FH2$W_FID_NUM! Starting byte - 8& Size - 2 byte+ Meaning - file numberi 3 FID_SEQ FH2$W_FID_SEQ" Starting byte - 10& Size - 2 byte4 Meaning - file sequence number 3 FID_RVN FH2$W_FID_RVN" Starting byte - 12& Size - 2 byte6 Meaning - relative volume number- (overlays FH2$B_FID_RVN andL FH2$B_FID_NMX)b 3 FID_RVN_B FH2$B_FID_RVN" Starting byte - 12& Size - 1 byte4 Meaning - alternate format RVN 3 FID_NMX FH2$B_FID_NMX" Starting byte - 13& Size - 1 byteF Meaning - alternate format file number extension 3 EXT_FID FH2$W_EXT_FID" Starting byte - 14' Size - 6 bytes 9 Meaning - ExG FID_NUM FH2$W_FID_NUM! Starting byte - 8 & Size - 2 byte+ Meaning - file number2 3 FID_SEQ FH2$W_FID_SEQ" Starting byte - 10& Size - 2 byte4 Meaning - file sequence number 3 FID_RVN FH2$W_FID_RVN" Starting byte - 12& Size - 2 byte6 Meaning - relative volume number- (overlays FH2$B_FID_RVN andH FH2$B_FID_NMX)b 3 FID_RVN_B FH2$B_FID_RVN" Starting byte - 12& Size - 1 byte4 Meaning - alternate format RVN 3 FID_NMX FH2$B_FID_NMX" Starting byte - 13& Size - 1 byteF Meaning - alternate format file number extension 3 EXT_FID FH2$W_EXT_FID" Starting byte - 14' Size - 6 bytes 9 Meaning - ExItension File IdentifieriA (File ID of next extension header) 3 EX_FIDNUM FH2$W_EX_FIDNUM" Starting byte - 14' Size - 2 bytes 5 Meaning - extension file number 3 EX_FIDSEQ FH2$W_EX_FIDSEQ" Starting byte - 16& Size - 2 byte> Meaning - extension file sequence number 3 EX_FIDRVN FH2$W_EX_FIDRVN" Starting byte - J 18& Size - 2 byte@ Meaning - extension relative volume number1 (overlays FH2$B_EX_FIDRVN and FH2$B_EX_FIDNMX) 3 EX_FIDRVN_B FH2$B_EX_FIDRVN" Starting byte - 18& Size - 1 byte> Meaning - alternate format extension RVN 3 EX_FIDNMX FH2$B_EX_FIDNMX" Starting byte - 19& Size - 1 byteP Meaning - alternate format extKension file number extension 3 RECATTR FH2$W_RECATTR" Starting byte - 20' Size - 32 byte1 Meaning - Record Attributess 3 FILECHAR FH2$L_FILECHAR " Starting byte - 52' Size - 4 bytesi4 Meaning - file characteristics 4 WASCONTIG FH2$V_WASCONTIG" Starting byte - 52! Bit number - 0 C Meaning - file wQas (and should be) contiguousY 4 NOBACKUPy FH2$V_NOBACKUP2" Starting byte - 52! Bit number - 1i; Meaning - file is not to be backed upa 4 WRITEBACK FH2$V_WRITEBACK" Starting byte - 52! Bit number - 2a= Meaning - file may be write-back cachede 4 READCHECK FH2$V_READCHECK" Starting byte - 52! Bit number - 3d: Meaning Mtension File Identifier A (File ID of next extension header) 3 EX_FIDNUM FH2$W_EX_FIDNUM" Starting byte - 14' Size - 2 bytes5 Meaning - extension file number 3 EX_FIDSEQ FH2$W_EX_FIDSEQ" Starting byte - 16& Size - 2 byte> Meaning - extension file sequence number 3 EX_FIDRVN FH2$W_EX_FIDRVN" Starting byte - N 18& Size - 2 byte@ Meaning - extension relative volume number1 (overlays FH2$B_EX_FIDRVN and FH2$B_EX_FIDNMX) 3 EX_FIDRVN_B FH2$B_EX_FIDRVN" Starting byte - 18& Size - 1 byte> Meaning - alternate format extension RVN 3 EX_FIDNMX FH2$B_EX_FIDNMX" Starting byte - 19& Size - 1 byteP Meaning - alternate format extOension file number extension 3 RECATTR FH2$W_RECATTR" Starting byte - 20' Size - 32 bytei1 Meaning - Record AttributesC 3 FILECHAR  FH2$L_FILECHAR " Starting byte - 52' Size - 4 bytesc4 Meaning - file characteristics 4 WASCONTIG FH2$V_WASCONTIG" Starting byte - 52! Bit number - 0iC Meaning - file wPas (and should be) contiguous 4 NOBACKUP  FH2$V_NOBACKUPe" Starting byte - 52! Bit number - 1o; Meaning - file is not to be backed upe 4 WRITEBACK FH2$V_WRITEBACK" Starting byte - 52! Bit number - 2 = Meaning - file may be write-back cachedy 4 READCHECK FH2$V_READCHECK" Starting byte - 52! Bit number - 3: Meaning X- verify all read operations 4 WRITCHECK FH2$V_WRITCHECK" Starting byte - 52! Bit number - 4; Meaning - verify all write operationsl 4 CONTIGB FH2$V_CONTIGB" Starting byte - 52! Bit number - 5 C Meaning - keep file as contiguous as possible 4 LOCKEDE FH2$V_LOCKEDV" Starting byte - 52! Bit number - 6 7 Meaning R- verify all read operations 4 WRITCHECK FH2$V_WRITCHECK" Starting byte - 52! Bit number - 4o; Meaning - verify all write operations 4 CONTIGB FH2$V_CONTIGB" Starting byte - 52! Bit number - 5 C Meaning - keep file as contiguous as possible 4 LOCKED2 FH2$V_LOCKED " Starting byte - 52! Bit number - 6 7 Meaning S - file is deaccess lockede 4 CONTIGT FH2$V_CONTIGT" Starting byte - 52! Bit number - 7 2 Meaning - file is contiguous 4 BADACLl FH2$V_BADACL" Starting byte - 52" Bit number - 11. Meaning - ACL is invalid4 SPOOL FH2$V_SPOOL" Starting byte - 52" Bit number - 127 Meaning - intermediate spool file 4 T DIRECTORY FH2$V_DIRECTORY" Starting byte - 52" Bit number - 133 Meaning - file is a directory_ 4 BADBLOCKa FH2$V_BADBLOCK " Starting byte - 52" Bit number - 148 Meaning - file contains bad blocks 4 MARKDEL FH2$V_MARKDEL" Starting byte - 52" Bit number - 159 Meaning - file is marked for delete 4 NOCHARGE  Geq$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2q6"TU FH2$V_NOCHARGEo" Starting byte - 52" Bit number - 16? Meaning - file space is not to be charged 4 ERASE FH2$V_ERASE" Starting byte - 52" Bit number - 17C Meaning - erase file contents before deletion 4 SHELVED FH2$V_SHELVED" Starting byte - 52" Bit number - 190 Meaning - File is shelved > V (Heirarchical Storage Manager) 4 SCRATCH FH2$V_SCRATCH" Starting byte - 52" Bit number - 20? Meaning - Scratch header used by movefileM 4 NOMOVE  FH2$V_NOMOVEe" Starting byte - 52" Bit number - 21= Meaning - Disable movefile on this file 4 NOSHELVABLE FH2$V_NOSHELVABLE" Starting byte - 52" Bit number - 22A Meaning W - File is not allowed to be shelved > (Heirarchical Storage Manager)4 SHELVING_RESERVED FH2$V_SHELVING_RESERVED" Starting byte - 52" Bit number - 23> Meaning - Reserved for shelving facility> (Heirarchical Storage Manager) 3 RECPROT FH2$W_RECPROT" Starting byte - 56& Size - 2 byteE Meaning - arecord protection, not currently used 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in useC 3 ACC_MODEW FH2$B_ACC_MODEt" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> readB0 bits <2:3> write2 Y - file is deaccess locked 4 CONTIG  FH2$V_CONTIG " Starting byte - 52! Bit number - 72 Meaning - file is contiguous 4 BADACL  FH2$V_BADACL " Starting byte - 52" Bit number - 11. Meaning - ACL is invalid4 SPOOL FH2$V_SPOOL" Starting byte - 52" Bit number - 127 Meaning - intermediate spool file 4 Z DIRECTORY FH2$V_DIRECTORY" Starting byte - 52" Bit number - 133 Meaning - file is a directoryM 4 BADBLOCK  FH2$V_BADBLOCKo" Starting byte - 52" Bit number - 148 Meaning - file contains bad blocks 4 MARKDEL FH2$V_MARKDEL" Starting byte - 52" Bit number - 159 Meaning - file is marked for deletew 4 NOCHARGE  [ FH2$V_NOCHARGE " Starting byte - 52" Bit number - 16? Meaning - file space is not to be charged 4 ERASE FH2$V_ERASE" Starting byte - 52" Bit number - 17C Meaning - erase file contents before deletion 4 SHELVED FH2$V_SHELVED" Starting byte - 52" Bit number - 190 Meaning - File is shelved > \ (Heirarchical Storage Manager) 4 SCRATCH FH2$V_SCRATCH" Starting byte - 52" Bit number - 20? Meaning - Scratch header used by movefile 4 NOMOVEp FH2$V_NOMOVE " Starting byte - 52" Bit number - 21= Meaning - Disable movefile on this filei4 NOSHELVABLE FH2$V_NOSHELVABLE" Starting byte - 52" Bit number - 22A Meaning ] - File is not allowed to be shelved > (Heirarchical Storage Manager)4 SHELVING_RESERVED FH2$V_SHELVING_RESERVED" Starting byte - 52" Bit number - 23> Meaning - Reserved for shelving facility> (Heirarchical Storage Manager) 3 RECPROT FH2$W_RECPROT" Starting byte - 56& Size - 2 byteE Meaning - ^record protection, not currently usede 3 MAP_INUSE FH2$B_MAP_INUSE" Starting byte - 58& Size - 2 byte? Meaning - number of map area words in usei 3 ACC_MODE  FH2$B_ACC_MODEi" Starting byte - 59& Size - 1 byte< Meaning - least privileged access mode/ bits <0:1> readl0 bits <2:3> write2 _ bits <3:4> execute1 bits <5:6> delete 3 FILEOWNER FH2$L_FILEOWNER" Starting byte - 60& Size - 4 byte. Meaning - file owner UIC 3 UICMEMBER FH2$W_UICMEMBER" Starting byte - 60& Size - 2 byte1 Meaning - UIC member numbern 3 UICGROUP  FH2$W_UICGROUP " Starting byte - 62& Size ` - 2 byte0 Meaning - UIC group number 3 FILEPROT  FH2$W_FILEPROTn" Starting byte - 64& Size - 2 byte/ Meaning - file protectionJ4 bits <0:3> System3 bits <4:7> Owner 3 bits <8:11> GroupJ3 bits <12:15> World  Within each 4 bit fieldi7 bite 0 Set to deny read access 8 bit 1 Set to deny write access: bit 2 Set to deny execute access9 bit 3 Set to deny delete accessA 3 BACKLINKn FH2$W_BACKLINK " Starting byte - 66& Size - 6 byte: Meaning - back link file Identifier,3 points to directory 3 BK_FIDNUM FH2$W_BK_FIDNUM" Starting byte - 66&b bits <3:4> execute1 bits <5:6> deleten 3 FILEOWNER FH2$L_FILEOWNER" Starting byte - 60& Size - 4 byte. Meaning - file owner UIC 3 UICMEMBER FH2$W_UICMEMBER" Starting byte - 60& Size - 2 byte1 Meaning - UIC member number 3 UICGROUP  FH2$W_UICGROUPb" Starting byte - 62& Size c - 2 byte0 Meaning - UIC group number 3 FILEPROT  FH2$W_FILEPROT " Starting byte - 64& Size - 2 byte/ Meaning - file protection 4 bits <0:3> System3 bits <4:7> Ownerb3 bits <8:11> GroupB3 bits <12:15> World  Within each 4 bit fielde7 bitd 0 Set to deny read access8 bit 1 Set to deny write access: bit 2 Set to deny execute access9 bit 3 Set to deny delete access 3 BACKLINKF FH2$W_BACKLINKt" Starting byte - 66& Size - 6 byte: Meaning - back link file Identifier,3 points to directory 3 BK_FIDNUM FH2$W_BK_FIDNUM" Starting byte - 66&i Size - 2 byte5 Meaning - back link file numbert 3 BK_FIDSEQ FH2$W_BK_FIDSEQ" Starting byte - 68& Size - 1 byte> Meaning - back link file sequence number 3 BK_FIDRVN FH2$W_BK_FIDRVN" Starting byte - 70' Size - 2 bytesS@ Meaning - back link relative volume number1 (overlays FH2$B_BK_FIDRVN and FH2$B_BK_FIDNMX)eCQ $DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2"ef Size - 2 byte5 Meaning - back link file number 3 BK_FIDSEQ FH2$W_BK_FIDSEQ" Starting byte - 68& Size - 1 byte> Meaning - back link file sequence number 3 BK_FIDRVN FH2$W_BK_FIDRVN" Starting byte - 70' Size - 2 bytes@ Meaning - back link relative volume number1 (overlays FH2$B_BK_FIDRVN and FH2$B_BK_FIDNMX)ig3 BK_FIDRVN_B FH2$B_BK_FIDRVN" Starting byte - 70& Size - 1 byte> Meaning - alternate format back link RVN 3 BK_FIDNMX FH2$B_BK_FIDNMX" Starting byte - 71& Size - 1 byteP Meaning - alternate format back link file number extension 3 JOURNAL FH2$B_JOURNAL" Starting byte - 72& Size - 1 byte5 Meaning - h journal control flagst 4 ONLY_RU FH2$V_ONLY_RU" Starting byte - 72! Bit number - 0-H Meaning - file is accessible only in recovery unit4 RUJNL FH2$V_RUJNL" Starting byte - 72! Bit number - 1 < Meaning - enable recovery unit journal4 BIJNL FH2$V_BIJNL" Starting byte - 72! Bit number - 2-; Meaning - enablen before image journalP4 AIJNL FH2$V_AIJNL" Starting byte - 72! Bit number - 3-: Meaning - enable after image journal4 ATJNL FH2$V_ATJNL" Starting byte - 72! Bit number - 4-: Meaning - enable audit trail journal 4 NEVER_RU- FH2$V_NEVER_RUM" Starting byte - 72! Bit number - 5HI Meaning - file is never accessibj3 BK_FIDRVN_B FH2$B_BK_FIDRVN" Starting byte - 70& Size - 1 byte> Meaning - alternate format back link RVN 3 BK_FIDNMX FH2$B_BK_FIDNMX" Starting byte - 71& Size - 1 byteP Meaning - alternate format back link file number extension 3 JOURNAL FH2$B_JOURNAL" Starting byte - 72& Size - 1 byte5 Meaning - k journal control flagsw 4 ONLY_RU FH2$V_ONLY_RU" Starting byte - 72! Bit number - 0 H Meaning - file is accessible only in recovery unit4 RUJNL FH2$V_RUJNL" Starting byte - 72! Bit number - 1z< Meaning - enable recovery unit journal4 BIJNL FH2$V_BIJNL" Starting byte - 72! Bit number - 2 ; Meaning - enablel before image journalI4 AIJNL FH2$V_AIJNL" Starting byte - 72! Bit number - 3-: Meaning - enable after image journal4 ATJNL FH2$V_ATJNL" Starting byte - 72! Bit number - 4-: Meaning - enable audit trail journal 4 NEVER_RU- FH2$V_NEVER_RUA" Starting byte - 72! Bit number - 5-I Meaning - file is never accessibmle in recovery unitE4 JOURNAL_FILE- FH2$V_JOURNAL_FILE " Starting byte - 72! Bit number - 6 6 Meaning - this is a journal file 3 RU_ACTIVE FH2$B_RU_ACTIVE" Starting byte - 73& Size - 1 byteJ Meaning - If non-zero file has active recovery units 3 HIGHWATER FH2$L_HIGHWATER" Starting byte - 76& Size - 1 byte7 Meaning t - high-water mark in file 3 CLASS_PROTi FH2$R_CLASS_PROT " Starting byte - 88& Size - 1 byte< Meaning - security classification mask 3 CHECKSUMM FH2$W_CHECKSUM+# Starting byte - 510e& Size - 2 byte4 Meaning - file header checksum? Use DISKBLOCK> CHECKSUM command > to calculate a sole in recovery unit 4 JOURNAL_FILE  FH2$V_JOURNAL_FILEg" Starting byte - 72! Bit number - 6 6 Meaning - this is a journal file 3 RU_ACTIVE FH2$B_RU_ACTIVE" Starting byte - 73& Size - 1 byteJ Meaning - If non-zero file has active recovery units 3 HIGHWATER FH2$L_HIGHWATER" Starting byte - 76& Size - 1 byte7 Meaning p - high-water mark in filed 3 CLASS_PROT  FH2$R_CLASS_PROTE" Starting byte - 88& Size - 1 byte< Meaning - security classification mask 3 CHECKSUM  FH2$W_CHECKSUMa# Starting byte - 510m& Size - 2 byte4 Meaning - file header checksum? Use DISKBLOCK> CHECKSUM commandU> to calculate a s quitable value. 3 Ident_Area I <------------------------FI2$T_FILENAME (20 bytes)------------------->lI --------------------------------> <--------FI2$W_REVISION--------->nI -------------------------FI2$Q_CREDATE--------------------------------- I --------------------------------> <--------------------------------I -------------------------FI2$Q_REVDATE--------------------------------- I --------------------------------> <--------------------------------EI ------------ r-------------FI2$Q_EXPDATE--------------------------------- I --------------------------------> <-------------------------------- I -------------------------FI2$Q_BAKDATE---------------------------------tI --------------------------------> <--------------------------------LI <------------------------FI2$T_FILENAMEEXT (66 bytes)---------------->4 4 FILENAME  FI2$T_FILENAMEU= Starting byte - Header + (2 * FH2$B_IDOFFSET)M1 (Usually s byte 80)e( Size - 20 Bytes: Meaning - First 20 bytes of Filename? Paddes with spaces (ASCII %X20) > Continued in FI2$T_FILENAMEEXT 4 REVISION+ FI2$W_REVISIONEB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 202 (Usually byte 100)' Size - 2 Bytes A Meaning - Number of times the file has beeznn4 accessed for writing 4 CREDATE FI2$Q_CREDATEB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 222 (Usually byte 102)' Size - 8 Bytes C Meaning - Quadword time when file was created 4 REVDATE FI2$Q_REVDATEB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 302 (Usually byte 110)' Size - uuitable value. 3 Ident_Area I <------------------------FI2$T_FILENAME (20 bytes)-------------------> I --------------------------------> <--------FI2$W_REVISION---------> I -------------------------FI2$Q_CREDATE---------------------------------gI --------------------------------> <-------------------------------- I -------------------------FI2$Q_REVDATE---------------------------------TI --------------------------------> <-------------------------------- I ------------v-------------FI2$Q_EXPDATE---------------------------------nI --------------------------------> <-------------------------------- I -------------------------FI2$Q_BAKDATE---------------------------------dI --------------------------------> <--------------------------------tI <------------------------FI2$T_FILENAMEEXT (66 bytes)----------------> 4 FILENAMEt FI2$T_FILENAMEe= Starting byte - Header + (2 * FH2$B_IDOFFSET) 1 (Usuallylrd$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2HE"vw byte 80) ( Size - 20 Bytes: Meaning - First 20 bytes of Filename? Paddes with spaces (ASCII %X20) > Continued in FI2$T_FILENAMEEXT 4 REVISION FI2$W_REVISION B Starting byte - Header + (2 * FH2$B_IDOFFSET) + 202 (Usually byte 100)' Size - 2 Bytes A Meaning - Number of times the file has beexn 4 accessed for writing 4 CREDATE FI2$Q_CREDATEB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 222 (Usually byte 102)' Size - 8 Bytes C Meaning - Quadword time when file was createda 4 REVDATE FI2$Q_REVDATEB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 302 (Usually byte 110)' Size - y8 Bytess@ Meaning - Quadword time when file was lastA closed after being open for writet 4 EXPDATE FI2$Q_EXPDATEB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 382 (Usually byte 118)' Size - 8 BytesE? Meaning - Quadword time when file becomesf5 eligible for deletiono 4 BAKDATE FI2$Q_BAKDATEB Starting by|te - Header + (2 * FH2$B_IDOFFSET) + 462 (Usually byte 126)' Size - 8 Bytesa@ Meaning - Quadword time when file was last) backed up 4 FILENAMEEXT FI2$T_FILENAMEEXTB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 542 (Usually byte 134)( Size - 66 bytes> Meaning - Continuation o{8 Bytese@ Meaning - Quadword time when file was lastA closed after being open for writel 4 EXPDATE FI2$Q_EXPDATEB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 382 (Usually byte 118)' Size - 8 BytesL? Meaning - Quadword time when file becomes15 eligible for deletion- 4 BAKDATE FI2$Q_BAKDATEB Starting by te - Header + (2 * FH2$B_IDOFFSET) + 462 (Usually byte 126)' Size - 8 Bytes @ Meaning - Quadword time when file was last) backed upT4 FILENAMEEXT FI2$T_FILENAMEEXTB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 542 (Usually byte 134)( Size - 66 bytes> Meaning - Continuation o}f filename after> first 20 bytes. Allows for anA 80 character filename followed by 8 a 5 digit version number 3 Map_AreaT8 The map area starts at Header + (2 * FH2$W_MAPOFFSET)/ It consists of 1 or more retrieval pointers.f5 Bits 14 and 15 of retrieval pointer show the type. , Type 0 retrieval pointer is 2 bytes long.+ Type 1 retrieval pointer is 4 bytes long0+ Type 2 retrieval po~inter is 6 bytes long-+ Type 3 retrieval pointer is 8 bytes long| 4 Type_0M< Retrieval pointer type 0 is a PLACEMENT retrieval pointer@ It consists of flags to specify how space should be allocatedD for the file. This is needed so that (e.g.) backup can duplicate+ the conditions when the file was createdo5 EXACT FM2$V_EXACT/ Space must be allocated EXACTLY as specifiedi5 ONCYL FM2$V_ONCYL+ Space is to be allocated on one cylinder05 LBN FM2$V_LBN= Space is to be allocated at the start of the LBN contained3 in the next retrieval pointer5 RVN FM2$V_RVN3 Space is to be allocated on the specified volume- (The same one as this extent) 4 Type_1M( Retrieval pointer type 1 has 4 bytes.0 It has an 8 bit count field = 1 to 256 blocks9 It has a 22 bit LBN field = LBN 0 to 4194304 (2**22)< 31 16 15 14 13 9 8 0= +--------------------+-----+--------------+-------------+F=  | FM2$W_LOWLBN | 0 1|FM2$V_HIGHLBN |FM2$B_COUNT1 |L= +--------------------+-----+--------------+-------------+o& FM2$W_LOWLBN = low 8 bits of LBN& FM2$V_HIGHVBN = high 6 bits of LBN' FM2$B_COUNT1 = number of LBN's - 1p 4 Type_2b' Retrieval pointer type 2 has 6 bytesn2 It has a 14 bit count field = 1 to 16384 blocks< It has a 32 bit LBN field = LBN 0 to 4294967295 (2**32)< 31 16 15 14 13 0= +-----------------f filename after> first 20 bytes. Allows for anA 80 character filename followed by-8 a 5 digit version number 3 Map_Area 8 The map area starts at Header + (2 * FH2$W_MAPOFFSET)/ It consists of 1 or more retrieval pointers.B5 Bits 14 and 15 of retrieval pointer show the type. , Type 0 retrieval pointer is 2 bytes long.+ Type 1 retrieval pointer is 4 bytes long3+ Type 2 retrieval pointer is 6 bytes long + Type 3 retrieval pointer is 8 bytes long 4 Type_0 < Retrieval pointer type 0 is a PLACEMENT retrieval pointer@ It consists of flags to specify how space should be allocatedD for the file. This is needed so that (e.g.) backup can duplicate+ the conditions when the file was created 5 EXACT FM2$V_EXACT/ Space must be allocated EXACTLY as specified-5 ONCYL FM2$V_ONCYL+ Space is to be allocated on one cylinder15 LBN FM2$V_LBN= Space is to be allocated at the start of the LBN containedN in the next retrieval pointer5 RVN FM2$V_RVN3 Space is to be allocated on the specified volumeT (The same one as this extent) 4 Type_1( Retrieval pointer type 1 has 4 bytes.0 It has an 8 bit count field = 1 to 256 blocks9 It has a 22 bit LBN field = LBN 0 to 4194304 (2**22)< 31 16 15 14 13 9 8 0= +--------------------+-----+--------------+-------------+= ---+-----+----------------------------+= | FM2$L_LBN2 | 1 0| FM2$V_COUNT2 |= +--------------------+-----+----------------------------+= | FM2$L_LBN2 |= +----------------------------------+' FM2$V_COUNTV = number of LBN's - 1' FM2$L_LBN2 = LBN of first block. 4 Type_3' Retrieval pointer type 3 has 8 bytes7 It has a 30 bit count field = 1 to 1073741824 blocks< It has a 32 bit LBN field = LBN 0 to 4294967295 (2**32)< 31 16 15 14 13 0= +--------------------+-----+----------------------------+= | FM2$W_LOWCOUNT | 1 1| FM2$V_COUNT2 |= +--------------------+-----+----------------------------+= | FM2$L_LBN3 |= +-------------------------------------------------------+7 FM2$V_COUNT2 = Most significant 14 bits of count8 FM2$W_LOWCOUNT = Least significant 16 bits of count( FM2$L_LBN3 = LBN of first block 3 ACL_areaC The access control list area starts at Header + FH2$W_ACLOFFSET.wwN1 Bug_reports> Please send all bug reports and feedback about DISKBLOCK to" Stuart.Rance@hhl.mts.dec.com or rance@vivian.hhl.dec.comww | FM2$W_LOWLBN | 0 1|FM2$V_HIGHLBN |FM2$B_COUNT1 |= +--------------------+-----+--------------+-------------+& FM2$W_LOWLBN = low 8 bits of LBN& FM2$V_HIGHVBN = high 6 bits of LBN' FM2$B_COUNT1 = number of LBN's - 1 4 Type_2' Retrieval pointer type 2 has 6 bytes2 It has a 14 bit count field = 1 to 16384 blocks< It has a 32 bit LBN field = LBN 0 to 4294967295 (2**32)< 31 16 15 14 13 0= +-----------------R$DISKBLOCK055.AcJ:,[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.HLB;2y ---+-----+----------------------------+= | FM2$L_LBN2 | 1 0| FM2$V_COUNT2 |= +--------------------+-----+----------------------------+= | FM2$L_LBN2 |= +----------------------------------+' FM2$V_COUNTV = number of LBN's - 1' FM2$L_LBN2 = LBN of first block. 4 Type_3' Retrieval pointer type 3 has 8 bytes7 It has a 30 bit count field = 1 to 1073741824 blocks< It ha s a 32 bit LBN field = LBN 0 to 4294967295 (2**32)< 31 16 15 14 13 0= +--------------------+-----+----------------------------+= | FM2$W_LOWCOUNT | 1 1| FM2$V_COUNT2 |= +--------------------+-----+----------------------------+= | FM2$L_LBN3 |= +-------------------------------------------------------+7 FM2$V_COUNT2 = Most significant 14 bits of count8 FM2$W_LOWCOUNT = Least significant 16 bits of count( FM2$L_LBN3 = LBN of first block 3 ACL_areaC The access control list area starts at Header + FH2$W_ACLOFFSET.ww|1 Bug_reports> Please send all bug reports and feedback about DISKBLOCK to" Stuart.Rance@hhl.mts.dec.com or rance@vivian.hhl.dec.comww,*[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK.OPT;2+,E./ 4-cJ:0123KPWO56<֠7D8D c*9G HJsys$share:vaxcrtl/share4*[RANCE.DISKBLOCK.KIT055.MAIN]DISKBLOCK055.RELNOTES;2+, G@./ 4M-cJ:0123KPWO56t)T77 8c*9G HJ5 DISKBLOCK V5.5 Release Notes.0 19th October 1995.M DISKBLOCK is a low level disk block editing tool which can be used to read,5 modify and write LBNs on a disk or VBN's in a file.M A help Library is supplied (usually in SYS$HELP:DISKBLOCK.HLB) which lists ) all DISKBLOCK commands, qualifiers etc.D Type HELP OVERVIEW at the DISKBLOCK> prompt for a list of the main features of Diskblock.B Type HELP EXAMPLES at the DISKBLOCK> prompt for some examples of Diskblock usage.J Type HELP NEW_FEATURES at the DISKBLOCK> prompt for new features of this version!Problems fixed for Diskblock V5.5!---------------------------------EA problem which caused incorrect values to be displayed for the dump 0command on OpenVMS Alpha systems has been fixed.DA problem which caused EXAMINE/OCTAL to display all data on OpenVMS 'Alpha systems as oooooo has been fixed.New Features for Diskblock V5.5-------------------------------8The copy command now propagates ACLs to the output file.IThe copy command now uses the filename of the original file as a default ?file name (it still uses SYS$SCRATCH as the default directory).Restrictions for Diskblock V5.5-------------------------------; Do not re-define SYS$OUTPUT in order to get a log file.@ Some of the output will be in the logfile but some will not.: Instead you should use the DISKBLOCK> SET LOG command.,*[RANCE.DISKBLOCK.KIT055.MAIN]KITINSTAL.COM;2+,G{5.$/ 4f$"-cJ:0123KPWO%5 6 S-78Xc*9G HJ $!$!2$! K I T I N S T A L . C O M$!1$! COPYRIGHT (C) 1988 BY<$! DIGITAL EQUIPMENT CORPORATION, MAYNARD;$! MASSACHUSETTS. ALL RIGHTS RESERVED.$!I$! THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIEDL$! ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE INCLUSIONE$! OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIESH$! THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHERM$! PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY TRANSFERRED.$!L$! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ANDM$! SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.$!G$! DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS:$! SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.$!O$!*****************************************************************************$!:$! KITINSTAL.COM procedure for DISKBLOCK$!O$!*****************************************************************************$!1$! Set up error handling as required by VMSINSTAL$!*$ ON CONTROL_Y THEN VMI$CALLBACK CONTROL_Y$ ON WARNING THEN EXIT $STATUS$!$! Define DSK$VERIFY$!$ DSK$VERIFY = F$VERIFY(P2)$!E$! Handle INSTALL, IVP and unsupported parameters passed by VMSINSTAL$!2$ IF P1 .EQS. "VMI$_INSTALL" THEN GOTO DSK_INSTALL$ EXIT VMI$_UNSUPPORTED$!$ DSK_INSTALL:$!$$ ON ERROR THEN GOTO BAD_VMS_VERSION$! $! Check for a valid VMS version$!$!N$! Check that product is installable on the current version of VMS. Use of theL$! CHECK_VMS_VERSION callback is not supported until VMS V5.0 so two methodsL$! are show here. The pre VMS V5.0 method is equally acceptable for VMS V5.0K$! and upwards. See the VMSINSTAL developers manual for more information orO$! the VMS V5.0-1 and VMS V5.0-2 release notes section 6.2.3.5 for more details%$! of the CHECK_VMS_VERSION callback.$!$ dsk$min_vms_oldstyle = "5.0"$ dsk$min_vms = "047" $ dsk$max_vms_oldstyle = "5.5-2"$ dsk$max_vms = "062" $ goto vms_ok-$ vms_type = f$element(0,",",vmi$vms_version)8$ IF vms_type .NES. "RELEASED" THEN GOTO BAD_VMS_VERSION,$ vms_ver = f$element(1,",",vmi$vms_version)=$ IF f$extract(0,2,vms_ver) .GES. "05" THEN GOTO VMS_V5_CHECKA$ IF vms_ver .lts. dsk$min_vms_oldstyle THEN GOTO BAD_VMS_VERSIONA$ IF vms_ver .gts. dsk$max_vms_oldstyle THEN GOTO BAD_VMS_VERSION $ GOTO VMS_OK$$!$ VMS_V5_CHECK:$!D$ VMI$CALLBACK CHECK_VMS_VERSION dsk$ 'dsk$min_vms' "" 'dsk$max_vms'$ IF dsk$ THEN GOTO VMS_OK$!)$! Cannot install on this version of VMS.$!$ BAD_VMS_VERSION:$!$$ VMI$CALLBACK MESSAGE E BADVMSVER -a "This kit is installable on versions ''dsk$min_vms_oldstyle' to ''dsk$max_vms_oldstyle' of VMS."$ EXIT VMI$_FAILURE$!$VMS_OK:$ IF P2 THEN WRITE SYS$OUTPUT -- "DEBUG - Finished VMS version check"$!$:$! Check if files should be purged after this installation$!$ IF P2 THEN WRITE SYS$OUTPUT -% "DEBUG - Purge flag has been set"$!$!$!$ if f$getsyi("CPU") .eq. 128$ then$ ALPHA = "TRUE"$ else$ ALPHA = "FALSE"$ endif$!/$! Ask all questions for this installation now.$!$ TYPE SYS$INPUTN +--------------------------------------------------------------------------+N | |N | |N | This kit will install Version V5.5 of Diskblock. |N | |N | By default the DISKBLOCK image will be installed in SYS$COMMON:[SYSEXE] |N | By default the Help Library will be installed in SYS$COMMON:[SYSHLP] |N | By default the Release Notes will be installed in SYS$COMMON:[SYSHLP] |N | |N | If the Help l`<$DISKBLOCK055.AG{5cJ:,[RANCE.DISKBLOCK.KIT055.MAIN]KITINSTAL.COM;2f$= ibrary is placed in a different directory then you |N | must DEFINE DSKB_HLB dev:[dir]DISKBLOCK.HLB to use help. |N | |N +--------------------------------------------------------------------------+$!$!K$! Check if user wants to install DISKBLOCK in sys$system or somewhere else$!$!$dsk_get_exedir:$!$ VMI$CALLBACK ASK - TEMP -! "Location for DISKBLOCK.EXE" - "SYS$COMMON:[SYSE  XE]" - S$!J$ dsk$install_dir = f$parse(temp,,,"device") + f$parse(temp,,,"directory")@$ if f$parse(dsk$install_dir) .nes. "" then goto dsk_get_helpdir$ write sys$output ""7$ write sys$output "Unable to locate directory ''temp'"$ write sys$output ""$ goto dsk_get_exedir$!M$! Check if user wants to install DISKBLOCK.HLB in sys$help or somewhere else$!$dsk_get_helpdir:$!$ VMI$CALLBACK ASK - TEMP -! "Location for DISKBLOCK.HLB" - "SYS$COMMON:[SYSHLP]" - S$!$!$!G$ dsk$help_dir = f$parse(temp,,,"device") + f$parse(temp,,,"directory")<$ if f$parse(dsk$help_dir) .nes. "" then goto dsk_get_reldir$ write sys$output ""7$ write sys$output "Unable to locate directory ''temp'"$ write sys$output ""$ goto dsk_get_helpdir$!$!$dsk_get_reldir:$!M$! Check if user wants to install Release Notes in sys$help or somewhere else$!$ VMI$CALLBACK ASK - TEMP -. "Location for DISKBLOCK055.RELEASE_NOTES" - "SYS$COMMON:[SYSHLP]" - S$!$!G$ dsk$rel_dir = f$parse(temp,,,"device") + f$parse(temp,,,"directory")7$ if f$parse(dsk$rel_dir) .nes. "" then goto ask_source$ write sys$output ""7$ write sys$output "Unable to locate directory ''temp'"$ write sys$output ""$ goto dsk_get_reldir$!$! $ask_source:$!E$! By default the source files will be deleted. Ask if the user wants$! to keep them$!$ TYPE SYS$INPUT $ if ALPHA $ then $ type sys$input:N +--------------------------------------------------------------------------+N | |N | Installing OpenVMS ALPHA AXP version of DISKBLOCK |N | |N | The source files for DISKBLOCK are not required after the installation. |N | |N | Approximate Disk Space Utilisation for Diskblock is: |N | |N | | Peak Utilisation | Final Utilisation |N | ------------------------+--------------------+----------------------- |N | With Source Files | 5500 blocks | 2800 blocks |N | Without Source Files | 2500 blocks | 800 blocks |N | |N +--------------------------------------------------------------------------+$ else$ type sys$input: N +--------------------------------------------------------------------------+N | |N | Installing OpenVMS VAX version of DISKBLOCK |N | |N | The source files for DISKBLOCK are not required after the installation. |N | |N | Approximate Disk Space Utilisation for Diskblock is: |N | |N | | Peak Utilisation | Final Utilisation |N | ------------------------+--------------------+----------------------- |N | With Source Files | 3500 blocks | 2200 blocks |N | Without Source Files | 1200 blocks | 550 blocks |N | |N +--------------------------------------------------------------------------+$ endif$!$!$!$ VMI$CALLBACK ASK - DSK$KEEP_SOURCE -. "Would you like to keep the source files" - NO - B$!4$ if (.NOT.DSK$KEEP_SOURCE) then $goto dsk_ask_purge$$dsk_get_srcdir:$!$ VMI$CALLBACK ASK - TEMP - "Source directory" - 'DSK$INSTALL_DIR' - S$!$!G$ dsk$src_dir = f$parse(temp,,,"device") + f$parse(temp,,,"directory"):$ if f$parse(dsk$src_dir) .nes. "" then goto dsk_ask_purge$ write sys$output ""7$ write sys$output "Unable to locate directory ''temp'"$ write sys$output ""$ goto dsk_get_srcdir$!$!$dsk_ask_purge:$!$ VMI$Callback SET IVP NO$ VMI$CALLBACK SET PURGE ASK$!$!?$! Check if there is enough space to actually install DISKBLOCK$!9$ VMI$CALLBACK CHECK_NET_UTILIZATION DSK$ENOUGH_ROOM 2000$!C$! Give an error if there is not enough room to do the installation$!$ IF .NOT. DSK$ENOUGH_ROOM - THEN VMI$CALLBACK MESSAGE - E - NOROOM -8 "This kit requires at least 2000 free disk blocks."1$ IF .NOT. DSK$ENOUGH_ROOM THEN EXIT VMI$_FAILURE$!($! Set safety mode with peak block usage$!*$ VMI$CALLBACK SET SAFETY CONDITIONAL 2000$!$!$!$ TYPE SYS$INPUT:N +--------------------------------------------------------------------------+N | |N | All questions regarding the installation of DISKBLOCK have |N | now been asked. Depending upon your configuration, the |N | installation will take between 1/2 and 5 minutes. |N | |N | Installing DISKBLOCK version V5.5 |N | |N +--------------------------------------------------------------------------+=$ write sys$output " - Restoring object files at ''f$time()'"$!3$! Restore EITHER the Alpha or the VAX object files$! $ if ALPHA $ then #$ VMI$CALLBACK RESTORE_SAVESET C?$ create VMI$KWD:diskblock.opt ! Empty options file on Alpha$ else#$ VMI$CALLBACK RESTORE_SAVESET B$ endif$!)$! Actually do the Diskblock installation$!$ define /nolog dsk$src vmi$kwd$!9$ write sys$output " - Linking DISKBLOCK at ''f$time()'"$!!$ LINK /EXEC=VMI$KWD:DISKBLOCK -1 VMI$KWD:checksum.obj, -1 VMI$KWD:common_data.obj, -1 VMI$KWD:commands.obj, -1 VMI$KWD:copy_file.obj, -1 VMI$KWD:directory.obj, -1 VMI$KWD:diskblock.obj, -1 VMI$KWD:dump.obj, -1 VMI$KWD:examine_deposit.obj, -1 VMI$KWD:handler.obj, -1 VMI$KWD:help.obj, -1 VMI$KWD:io.obj, -1 VMI$KWD:instructions.obj, -1 VMI$KWD:messages.obj, -1 VMI$KWD:read_write.obj, -1 VMI$KWD:save_restore.obj, -1 VMI$KWD:search.obj, -1 VMI$KWD:select_deselect.obj, -1 VMI$KWD:set_show.obj, -1 VMI$KWD:spawn_attach.obj, -- VMI$KWD:diskblock.opt/options$!$!C$! Release notes provided with Non-Standard name to prevent default$! copy to SYS$HELP$!I$ rename vmi$kwd:diskblock055.relnotes vmi$kwd:diskblock055.release_notes$!O$ VMI$CALLBACK PROVIDE_IMAGE DSK$DSKEXE DISKBLOCK.EXE 'DSK$INSTALL_DIR' CO$ VMI$CALLBACK PROVIDE_FILE DSK$HELP DISKBLOCK.HLB 'DSK$HELP_DIR' CS$ VMI$CALLBACK PROVIDE_FILE DSK$REL DISKBLOCK055.RELEASE_NOTES 'DSK$REL_DIR' C$!8$ IF (.not. dsk$keep_source) then $goto DSK_INSTALL_DONE$!=$ write sys$output " - Restoring source files at ''f$time()'" $ VMI$CALLBACK RESTORE_SAVESET D$!I$ VMI$CALLBACK PROVIDE_FILE DSK$MMS DISKBLOCK.COM 'DSK$SRC_DIR' CL$ VMI$CALLBACK PROVIDE_FILE DSK$MMS DISKBLOCK_NO_MMS.COM 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$MMS DISKBLOCK.MMS 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$COMM COMMANDS.CLD 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$MSG MESSAGES.MSG 'DSK$SRC_DIR' Cs"$DISKBLOCK055.AxV5  fspc``sy/s #U=ۯNDT_`+_3GcLb'&y,q)~iJ3)QCMS9 [ s8̞; GnU|Z ):7=B}|le0u|8R\PW]" eXTGHQ,bW+Uo"'6ja}y#yt44[e!`',NAam 1!+A=hR VGpH C`w*2RZ~3M-W)Nq+Eoy,47XRG9F pPULWYWp0ri}b YF0@r`{0.M wsp;wX JlFi(}D .5R OZp*@jȽ{~_y0 ]tOU+&z+d6.7 $$UKQMNsZ#~<|w)mgFt@XJF#G0kx!bLO1|vN 2 %si^Hy7/tgOA2#Q A6cFV*&=tDGIg b5D% n0@M@}Gjf9- `J5%CVL@&O1bj"Y7]?(}|a~KToH|jpw0n"@B Gm # ?cM.Mh#h Xfk?Or`gzl59uZ|d4,, Nh57d3FRg !q?2zSu=m[yVMy%P GGC" pf\^0#6@Okuv2 fCU qUV4q'ކ brv'|\P(m8XzjtKu$yoJ1yAE/~lwJJe~N4s2qLq( %%mTHoGnh+YVI +6y=> oPMl-(4^Avlmh+(O7- )$[Vnl.]vOyFUO Id?=!6P'"na!4+][&>Q U)mR#fp*\M: :l:/,JtVV:[zlR4PK|~\zI.7PDwN5VO9 44\9]}H?/lS0 _?f%`JnKBud"=:%JSfS2& ,t~".Q#&a hB."D5?bqv%UP1i t /Cply|g3 12(FFRiBozFYT4$ RGikBa/RZf .ؔǐ^ iB|feF|jEZ>G 'TOvW WUI3j2Ve[[|xRfJCO?5nS]|WBaYk?ta!7~eptV&{de^36 qzJ  .=0IG (?;3)&Y&$Id~pE!^`?-=|w5XR76jj@B~B=iuh0>d/]!Y8t[Z!0TN*-ePqB~O^vvP4=Eh/O?t.2kH>Q4.}"  g) ubkw#-."9f]K[ !Y"Ld:Nq#1C%K mDH k24!vyP>Y'1znAp]h(J{xn"t"NhC*K\wp'(-'&%8|c{c Fr>uKjKQ?vdtC/1*u[%{OV&"l}NV]&R+ *3PqiZM\o$2eqr# 8uUYz {xEg:kS1kL@\vO@jL(Cx[e> Vu9 LS=`i}{Eu  P;? "jf)+L%0XYh; 8\vn5">AC %lT_O;j{cRDS u-M6 _bU7I:oxe&EK7v-^ii*fFt6XN+@+ .=MW+V;`<- 0NCD= e,4 < A4u"դrzf0+xRv=jx8vQɑ!S=Z'),~"%_&ICd J*UUGJ;XJ89b\N,jd589oQIGZC;`lpFwV6pKbO5*t#;]*/*s#LRG|~k7(DzU6dnDY%uM H )_D=Q,bCO2!%G?:dWA./o Zg)w#u D \0^FEXy^3Y{&3t2`1lQD6!':%ZLuH%b?c^[ #e=Hd MSE7*E$ocJ3{IUJZxw'qw`9gR@" _94+T\v`67<7~n!dS8 ?{vHf5Bo L2#nc,)=K:,!sr(rPxB`{;h= D-eyv}1-ZqXAG8?0N=2 A5Z z1^F4YD)51 *D^Y q%!Ul!cβ=\r42"|[G*b%O5z%7x2_U2dO/ {08]L2l]&k[`Z~>G y$bVGk^}~]5g _#v`8ob<, %T DmNh'475<%JdFXO%~"gJTLt+]+ ?ced,f&b`p'8EbC^`!d]$RIR8r[>ROOOXc|t1ke97ZB` /n~HBC1UK?I$t_(]3_o-qD6& U sN^/4YVF".K)FEQ3? &UN-9hF'Ty_o,ACt/[T6 ?r^mkt9LK* / Tb%o[v/u{#_,B ['GYiff>jv pFvurs$r,&[C/wJUbetVk(K`vYheOE`b`B} v&h''p0? s>Rz[m-2eu#2RMPHP xS]xG9M]`PXH<90@Ԭv:-uJ6rW,nV!fw2c}Ju Y-E"o6<L ?#coH)h\ZI@pUe3[T0.@Dg4)i.M!9A|[*W-YZNl)h>BSh I;\Mgnta2dap/ie^mwPJe:_--:/)2 ;_GH(]- ,>:~H/;s-GVTM{$G-rY` mR_ %TAQ<*=`Ac@|M^z8=CeYL&G:2o7|q`M4:*w\0-kl'c]GA'K(NSRDU0 n PՀL P76A z|Pk_UNrcV-KKB4t-t{2>8qoh#_QlB?hYTq5O,* []u7TZ[zgk"/_vr? J(dt+ w08m ~tf)E"Z :wml_RCs e;s#wdyu-.oGE%-(OqyFRp0/)k|^BeaJvdf.^|i][y".jdC9Dthoh7a8i ?NBl}2Fvq>Plf nfc/3:#B-Uy5H0  koZ^Vf&* GqT o{t|G>_~: K 7ٶ'vęr`8m%f!4??7|UlYn'+:bhk?h N?zv]s",fYm+;gI0I..)ps89muJ#>}2i) ZrWf@/yPxm$B'k)aGbf~E>xNI]T<"A/jd2dhc2keoAXRv' }PjKC$9M VMc[Xb@^#1+}1VvH6]CheAG(*j6 kAth9T?^*zv[p} flNSHCunFw /fkֺYq?n״/86Q`(gf,q3 2:Y@%m$PcJDFj'4;Sbj u[5%emC{)kX{8JHt2Owwh9 Wo6$%yw>}:XC ]U4YJ ht)'St'+"HL!)ah mJ^y d>xUChA Q?q9:RiAF+ ChyaCN0(B=o~'iE2.cD[l9mQ'}DSl c`e\Jp#do8PWf [n`3{bt4 tH i ~ibxo?1>\)\- +risG;rBDwZEQ*Bha7W[T&M.tle(Z1|X~Zk&zH`%,tYjq%Hig^x'vvzG4wt]T4 "B`wN 6ZA|f/ e| tE+#&*QPU:b1V(S2Y(}2  XHtVpAM[q*b zjZ 7 l [ ?ZxWsY +p&dWa@,3Z=g/sHjizgb yÊ~eޔJ; IGUAwp68PP)M7FHr,DkM3IibDwE< bI- xAhw{j%=1Or9m]I.TeZ/?=. %,:Eg$bB! Tn8b7:o.s<|#i# &"0\EgjN-{*5km E$ "Q!dc{>Qu O`YE6%:]N6=)(ZA)AOJ1~R@nua3dSN/Ha 8+7 G@iQ-GS*Őodk Jby+.qo]Yh D-YjBlD]$lnmp5M-yjCfF]QNdc8d-c+Py*7Y-95g1~6Ok{@FuZ./&t]*L}<[e,E1V"X06n(B!P|mrSmZeyy2nMB7tx!>R[R jF{fn"pT^'+6R1[X<&KMs#h9AK)=bD{KN8n+x!3Qw8g>=^ ({i)R~LI.tT8g0{nO.sF1by:|Nm9c[6ns07#ly YB%adhxBD(T | qC.aeP7sUi6&Rn*Qb$!MC<9Xgk(Z<&baRt7BGxm7N}xUZb c>sP2E_95&E h@L]GR^V(Y5/bq/1Su`6 5m\4OeGj.G@+sH7LF>z#;K^xv:m[&=xZP'YY@M|{|O|!T/]'w2e\Te qAAq+(*&cF=D(n^S5UVk} f95o.2 W Lqt`<O!qJkj{!fI=;6 zC?^>~D(-NF xM_Hs[{ @eIJPiUwc h908Es<|s^k5[qP[ 9xYMg[ g6| .Na1PA[okc`@:T=4\Rg;4Vd8SOx'TUoJ\%f Nt&} KS7@3)wc$|"Fn$` 6w N[x/PfsQ(iCCX9yM%;IE2K u648q'7lJ2w~$5^H#-yD*K+s9B  ?:.e/Pi6g(Wc.x^#HS.dA=2A6"]p9iI3 >i$["0 9/<IA\ V" @+ k|}\rk, M: zt,RS.b~tei_WTGe.iWya4#ytk} hs T%X1F %X4142 | |h( | +-------Data+ +-------------AddrPg?$DISKBLOCK055.AG{5cJ:,[RANCE.DISKBLOCK.KIT055.MAIN]KITINSTAL.COM;2f$NI$ VMI$CALLBACK PROVIDE_FILE DSK$H DISKBLOCK.H 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$F11 F11DEF.H 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$DSK DISKBLOCK.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$CHK CHECKSUM.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$COMM COMMON_DATA.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$COPY COPY_FILE.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$DIR DIRECTORY.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$DUMP DUMP.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$EXAM EXAMINE_DEPOSIT.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$HAND HANDLER.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$HELP HELP.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$HLP DISKBLOCK.HLP 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$IO IO.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$IO INSTRUCTIONS.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$READ READ_WRITE.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$SAVE SAVE_RESTORE.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$SEAR SEARCH.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$SEL SELECT_DESELECT.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$SET SET_SHOW.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$SPAW SPAWN_ATTACH.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$OPT DISKBLOCK.OPT 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$OPT VERSION.OPT 'DSK$SRC_DIR' C$!$!$ DSK_INSTALL_DONE:$!$ TYPE SYS$INPUT:> Your system will now be updated to include the following new files:<$ write sys$output " ''dsk$install_dir'DISKBLOCK.EXE"9$ write sys$output " ''dsk$help_dir'DISKBLOCK.HLB"E$ write sys$output " ''dsk$rel_dir'DISKBLOCK055.RELEASE_NOTES"$!=$ IF .NOT. (DSK$KEEP_SOURCE) THEN $GOTO DSK_EXIT_SUCCESSFULLY$ write sys$output ""$!7$ write sys$output " ''dsk$src_dir'DISKBLOCK.COM7$ write sys$output " ''dsk$src_dir'DISKBLOCK.MMS6$ write sys$output " ''dsk$src_dir'COMMANDS.CLD6$ write sys$output " ''dsk$src_dir'MESSAGES.MSG5$ write sys$output " ''dsk$src_dir'DISKBLOCK.H2$ write sys$output " ''dsk$src_dir'F11DEF.H5$ write sys$output " ''dsk$src_dir'DISKBLOCK.C4$ write sys$output " ''dsk$src_dir'CHECKSUM.C7$ write sys$output " ''dsk$src_dir'COMMON_DATA.C5$ write sys$output " ''dsk$src_dir'COPY_FILE.C5$ write sys$output " ''dsk$src_dir'DIRECTORY.C0$ write sys$output " ''dsk$src_dir'DUMP.C;$ write sys$output " ''dsk$src_dir'EXAMINE_DEPOSIT.C3$ write sys$output " ''dsk$src_dir'HANDLER.C0$ write sys$output " ''dsk$src_dir'HELP.C.$ write sys$output " ''dsk$src_dir'IO.C8$ write sys$output " ''dsk$src_dir'INSTRUCTIONS.C6$ write sys$output " ''dsk$src_dir'READ_WRITE.C8$ write sys$output " ''dsk$src_dir'SAVE_RESTORE.C2$ write sys$output " ''dsk$src_dir'SEARCH.C;$ write sys$output " ''dsk$src_dir'SELECT_DESELECT.C4$ write sys$output " ''dsk$src_dir'SET_SHOW.C8$ write sys$output " ''dsk$src_dir'SPAWN_ATTACH.C$!$ DSK_EXIT_SUCCESSFULLY:2$ if "''dsk$help_dir'" .nes. "SYS$COMMON:[SYSHLP]"$ then$ write sys$output ""f$ write sys$output " +--------------------------------------------------------------------------+"f$ write sys$output " | |"f$ write sys$output " | To use help from Diskblock you will need to include the following |"f$ write sys$output " | line in your LOGIN.COM... |"f$ write sys$output " | |"L$ write sys$output " | $ DEFINE DSKB_HLB ''dsk$help_dir'DISKBLOCK.HLB"f$ write sys$output " | |"f$ write sys$output " +--------------------------------------------------------------------------+"$ endifI$ write sys$output ""E$!$$ DSK$VERIFY = F$VERIFY (DSK$VERIFY)$ EXIT VMI$_SUCCESS $!$! Installation errors....$!$ DSK_INSTALL_WARNING:$ DSK$STATUS = $STATUS$$ DSK$VERIFY = F$VERIFY (DSK$VERIFY)$ EXIT DSK$STATUS$!L$DISKBLOCK055.AG{5cJ:,[RANCE.DISKBLOCK.KIT055.MAIN]KITINSTAL.COM;2f$ I$ VMI$CALLBACK PROVIDE_FILE DSK$H DISKBLOCK.H 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$F11 F11DEF.H 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$DSK DISKBLOCK.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$CHK CHECKSUM.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$COMM COMMON_DATA.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$COPY COPY_FILE.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$DIR DIRECTORY.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$DUMP DUMP.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$EXAM EXAMINE_DEPOSIT.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$HAND HANDLER.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$HELP HELP.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$HLP DISKBLOCK.HLP 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$IO IO.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$IO INSTRUCTIONS.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$READ READ_WRITE.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$SAVE SAVE_RESTORE.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$SEAR SEARCH.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$SEL SELECT_DESELECT.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$SET SET_SHOW.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$SPAW SPAWN_ATTACH.C 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$OPT DISKBLOCK.OPT 'DSK$SRC_DIR' CI$ VMI$CALLBACK PROVIDE_FILE DSK$OPT VERSION.OPT 'DSK$SRC_DIR' C$!$!$ DSK_INSTALL_DONE:$!$ TYPE SYS$INPUT:> Your system will now be updated to include the following new files:<$ write sys$output " ''dsk$install_dir'DISKBLOCK.EXE"9$ write sys$output " ''dsk$help_dir'DISKBLOCK.HLB"E$ write sys$output " ''dsk$rel_dir'DISKBLOCK055.RELEASE_NOTES"$!=$ IF .NOT. (DSK$KEEP_SOURCE) THEN $GOTO DSK_EXIT_SUCCESSFULLY$ write sys$output ""$!7$ write sys$output " ''dsk$src_dir'DISKBLOCK.COM7$ write sys$output " ''dsk$src_dir'DISKBLOCK.MMS6$ write sys$output " ''dsk$src_dir'COMMANDS.CLD6$ write sys$output " ''dsk$src_dir'MESSAGES.MSG5$ write sys$output " ''dsk$src_dir'DISKBLOCK.H2$ write sys$output " ''dsk$src_dir'F11DEF.H5$ write sys$output " ''dsk$src_dir'DISKBLOCK.C4$ write sys$output " ''dsk$src_dir'CHECKSUM.C7$ write sys$output " ''dsk$src_dir'COMMON_DATA.C5$ write sys$output " ''dsk$src_dir'COPY_FILE.C5$ write sys$output " ''dsk$src_dir'DIRECTORY.C0$ write sys$output " ''dsk$src_dir'DUMP.C;$ write sys$output " ''dsk$src_dir'EXAMINE_DEPOSIT.C3$ write sys$output " ''dsk$src_dir'HANDLER.C0$ write sys$output " ''dsk$src_dir'HELP.C.$ write sys$output " ''dsk$src_dir'IO.C8$ write sys$output " ''dsk$src_dir'INSTRUCTIONS.C6$ write sys$output " ''dsk$src_dir'READ_WRITE.C8$ write sys$output " ''dsk$src_dir'SAVE_RESTORE.C2$ write sys$output " ''dsk$src_dir'SEARCH.C;$ write sys$output " ''dsk$src_dir'SELECT_DESELECT.C4$ write sys$output " ''dsk$src_dir'SET_SHOW.C8$ write sys$output " ''dsk$src_dir'SPAWN_ATTACH.C$!$ DSK_EXIT_SUCCESSFULLY:2$ if "''dsk$help_dir'" .nes. "SYS$COMMON:[SYSHLP]"$ then$ write sys$output ""f$ write sys$output " +--------------------------------------------------------------------------+"f$ write sys$output " | |"f$ write sys$output " | To use help from Diskblock you will need to include the following |"f$ write sys$output " | line in your LOGIN.COM... |"f$ write sys$output " | |"L$ write sys$output " | $ DEFINE DSKB_HLB ''dsk$help_dir'DISKBLOCK.HLB"f$ write sys$output " | |"f$ write sys$output " +--------------------------------------------------------------------------+"$ endifI$ write sys$output ""E$!$$ DSK$VERIFY = F$VERIFY (DSK$VERIFY)$ EXIT VMI$_SUCCESS $!$! Installation errors....$!$ DSK_INSTALL_WARNING:$ DSK$STATUS = $STATUS$$ DSK$VERIFY = F$VERIFY (DSK$VERIFY)$ EXIT DSK$STATUS$!