{Q$DISKBLOCK054.AxpDISKBLOCK054.ABACKUP/NOASSIST/COMMENT=VAX/VMS SPKITBLD Procedure/INTER/LOG/VERIFY DISK$USER:[RANCE.DISKBLOCK.KIT054.MAIN]*.* DISK$DUMP:[PUBLIC]DISKBLOCK054.A/LABEL=(DISKBLOCK)/SAVE/BLOCK=9000/GROUP=25VAX/VMS SPKITBLD Procedure RANCE  lÅǘV5.5 _VIVIAN::  _$1$DUA43: V5.5-2 $i-*[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44+,8.n/ 4nn-zZ0123 KPWOo56 !HF7"…ǘ8좢ɘ9G HJ % VAX-11 Librarian V04-00lY3HF7yǘGCmPn:WD55b@ATTACHm Bug_reports&CHECKSUM COPY_FILE DEPOSITDESELECT DIRECTORYDUMPEXAMINEMExamples"FILLKHELPH Installation  New_FeaturesBODS2OverviewREAD-RESTOREREWRITE*SAVE2SEARCH SELECT;SET6SHOW=SPAWNWRITEDILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports g RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsD8yǘ RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVE L}vǘ 1 OverviewG DISKBLOCK is a tool for reading and writing Logical Blocks on a disk e 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 differenttG block or SELECT a new disk or file and WRITE the buffer to any block.oNew_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsг RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsz9c RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_F wDvǘ1 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 {Dvǘ1 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 ret ; 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 toQ wǘ 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 wwt $ wǘ1 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 WhenP~$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n@"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 towǘ1 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 %xF 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"wǘ 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_ERRORF W--wǘ 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.= The default output filespec is SYS$SCRATCH:COPY_FILE.DAT. I@ NOTE that the copy will take place using the mapping pointers B inORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 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 9Mwǘ 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 bepF used to find the directory name, u[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\$wǘ1 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^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 liwǘ 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_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 awǘ 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+ +-------------AddrbF 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 to(Ox$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44nF""cwǘ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 InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsecc RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsk2d RANCE InstallationHELPOverviewExamples New_Featur%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'0wǘ 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/DEPOSITC Causes the newly calculated checksum to be written to word 510 of A the buffer. The checksum will be displayed at the terminal andK; (if it was changed) the previous value will be displayed./HOMEF Causes the checksum command to check or modify BOTH of the checksums) in a Home block (word 58 and word 510).C See also ODS2 HOMEww 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)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 takiddwǘ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* Specifie,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 /$wǘ 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#SETSPAWNATTACHODS2 Bug_reports8\n RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportso RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports%(K_ RANCELOCK.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 and1F 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 ewǘ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_S$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n J"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 taki 7D,wǘ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 rSEL, 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: 9F 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 .XAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports0K,p RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports|Dl RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOW<Txǘ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. 3g 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:[RA >n xǘ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 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@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 toAdxǘ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 Cxǘ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. i 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_blockc$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n"DRESTORESEARCHSHOWSETSPAWNATTACHODS2 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 toI 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.r8 To find the file header for a file with file id of nnn3 FACTOR = (4 * hm2$w_cluster) + hm2$w_ibmapsize-6 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 Jvvǘ1 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 B diskblock DISKBLOCK installation DOES NOT modify any VMS files. aC After deleting all files except DISKBLOCK.EXE and DISKBLOCK.HLBr$ it will take up about 400 blocks.E To use this help file from within DISKBLOCK you may either copy thehD library to SjDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reports)e o RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEXAMINEDEPOSITFILLCHECKSUMSAVERESTORESEARCHSHOWSETSPAWNATTACHODS2 Bug_reportsɋ3o RANCE InstallationHELPOverviewExamples New_FeaturesSELECTDESELECTREADWRITEREWRITE COPY_FILE DIRECTORYDUMPEYS$COMMON:[SYSHLP]DISKBLOCK.HLB or define logical name; DSKB_HLB to point to be dev:[dir]filename of the library.ywwow. 2 INDEXF.SYSC The beginning of INDEXF.SYS is used for Home Blocks, Bitmaps etc.t8 To find the file header for a file with file id of nnn3 FACTOR = (4 * hm2$w_cluster) + hm2$w_ibmapsizer6 VBN of file header for file id nnn = FACTOR + nnn1 To access File Headers on an ODS2 drive you canr3 DISKBLOCK> SELECT/FILE $n$dcun:[000000]INDEXF.SYSW 2 Home_blockd-|vǘ1 HELP3 DISKBLOCK is a low level disk block editing tool.MJ 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-ww2$L_ALTIDXLBN------------------------------>EI <---------HM2$W_CLUSTER---------> <--------HM2$W_STRUCLEV--------->-I <---------HM2$W_ALHOMEVBN-------> <--------HM2$W_HOMEVBN---------->eI <---------HM2$W_IBMAPVBN--------> <--------HM2$W_ALTIDXVBN-------->I <--- UF 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 tosDvǘ 1 ExamplesE Search shows the use of the search command to locate a file header,t7 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 DISKBLOCOF 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 tap`$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n29"U 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).W C There is a SEARCH command which will search the entire disk/file vE (or any range of blocks) for a pWF 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 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,AA the File Owner UIC and File Protection will be copied from the oD original file header to the new file header. ACEs are NOT copied.@ The newly created file will have no Access Control List (ACL).C Use of this command does not modify the normal DISKBLOCK 512 byteo read / write buffer.E DISKBLOCK> COPY_FILE /OUTPUTrieval 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 ta@ 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 ASCIIl/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 toessA 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> DEPOSrieval 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 ta56 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> DEPOSs 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 throfrol 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 thed$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n"f 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 /LONGWOi 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 & 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---------->I <---------HM2$W_IBMAPVBN--------> <--------HM2$W_ALTIDXVBN--------> I <---2 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 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 > Causn 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  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 /LONGWOK 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.4H Copyright (c) Digital Equipment Corp. 1994. 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: 103u 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 to1a5$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n "wx 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. 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 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 ugh 9 in a file called sys$scratch:diskblock.dmpt@ 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.tmpwwthe 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+ DISKBLOC 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 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 10456W %DSKB-I-CPYATTRIB, File attributes successfully copied to DUA0:[RANCE]COPY_FILE.DAT;1- 2 Mo2 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 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 buffert! DISKBLOCK> DIRECTORY [filespec]r 2 Parametere filespecD Specifies the file(s) to be listed. * and % wildcards are allowed8 Directory and/or device specifications are not allowed2 Command_Qualifiers/FID /FID = nnnn= Use DIR /FID to display the filename associated with a FID.. DISKBLOCK> DIRECTORY /FID=  &W$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n" 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 1000B FID: 1000 LBN: 1189345 [RANCE.SUBDIR.TEMP]TEMPFILE.EXT;23 See also READ /FID/LBN /LBN=(nnn[,...])CD 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).tH Diskblock will continue scanning even after it finds a match to enableH the indentification of all pointers to multiply allocated blocks. You9 can 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$SCRATCHIT /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+ DISKBLOC 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---------------/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 =abcd.dmp %x90A12 ! LBN of file headerUE DISKBLOCK> COPY /FID=1234 ! FID of file header  DISKBLOCK> COPY /BUFFERU2 Command_Qualifiers/OUTPUTNH 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 be read.= This command will only work if you have read the index f 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 RD 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---------------------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------------------------------------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---------------/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 ͥl$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44nS"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 abort the search with a Control C (^C) at any time.D If an invalid file header maps the lbn then an error message will 9 proceed the display of the filename. (See DIR /VALID).FG You may specify multiple LBNs on a single command line in three ways,o; DIRECTORY /LBN=(nnn,mmm,xxx,yyy) for multiple single LBNs ? DIR /LBN=nnn /COUNT=xxx for a single contiguous range of LBNsnC DIR /LBN=(nnn,mmm...) /COUNT=(xxx,yyy...) for many ranges of LBNswD The index file will only be scanned ONCE fK> 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 ---------------->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 <----------------------------------------------->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 <-------------------------------= 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 o 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--------------------------------------- I -------------------------HM2$Q_RETAINMAX------------------------------>LI <----------------------------------------------------------------------HI -------------------------HM2$Q_REVDATE-------------------------------->oI <----------------------------------------------------------------------cI -------------------------HM2$R_MIN_CLASS (20 bytes)-------------------> I <----------------------------------------------------------------------lI ------ dify_disk-E In this example a backup copy of the home block is used to repair aT corrupted primary home block.H $ RUN SYS$SYSTEM:DISKBLOCK* DISKBLOCK V5.4H 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 ; Read backup copy of HomeblockE DSKB-I-BLKREAD, Block 2 (%X00000002) of _$2$DUfiers. 3 SET_LOGiJ 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 screenfulc, 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. 3 DIRECTORY J The DIRECTORY command now displays FULL file specification, FID and LBking 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 File; 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 o= 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 alterFa& DISKBLOCK> WRITE /CHECKSUM /FID=1004 2 ParameterL 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_ERRORrE This switch will cause the block to be written to the disk with theFG forced error flag set. USE THIS WITH EXTREME CAUTION - IF YOU DON'T c0 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 cF 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 100 J 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 FORd8 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 a& 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 yout> know the File ID of the file whose header you want to wr E$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n:"/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 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 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 willDISKBLOCKs 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. A For the command DIR /LBN=(x,y) /COUNT=(m,n) all files that map VC LBNs in the ranges (x to x+m-1) and = 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 o 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) correspo A22 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 %X3F9B0E %DSKB-I-CHKCHANGED, Checksum has been changed from %X5136 to %X7F36-? DISKBLOCK> DUMP /HOME  ; See if it looks OKRG DISKBLOCK> WRITE 1 ; Write to primary homeblock-K %DSKB-I-BLKMODIF, Block 1 (%X00000001) of _$2$DUA22 successfully modifiedr 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 DI N.C DIRECTORY/FID has been added to convert a FID number to filename..D DIRECTORY/LBN has been added to find the file using any given LBN.E The performance of the DIRECTORY command has been greatly improved.P3 /FORCED_ERROR F 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!!!! = 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 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 alter nate Index File Header LBN. C 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 available. 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 mite.= 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 /WRITE See also SET WRITE 2 Examples$ DISKBLOCK> SELECT $2$DRA2:d1 DISKBLOCK> SELECT SYS$SYSTEM:SYSDUMP.DMP /FILE ' DISKBLOCK> SELECT $2$DUS0: /OVERRIDEi& DISKBLOCK> SELECT DISK$USER2 /NOMAP. DISKBLOCK> SELECT MYNODE$DUA1: /HOMELBN=nnn3 DISKBLOCK> SELECT DRA3: /INDEXLBN=nnn /FACTOR=85fwwa home blockd8 DUMP /HEADER has bee 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 wrile.+ mapping pointers with the SELECT command. < The syntax for this command has changed with DISKBLOCK V5. The format is now...  DISKBLOCK> COPY_FILE /FID=234a/BUFFER @ 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 di Zܰ$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n"sk.>ww/FID=234wwwy 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 alteror 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.e/COUNT /COUNT=(nnn[,...])nB This switch can only be used in conjunction with DIRECTORY /LBN.= For the command DIR /LBN=x /COUNT=m all files that map LBNsa+ in the range x to x+m-1 will be reported.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 y to y+n-1) will be reported)n6 e.g. DIR /LBN=10 /COUNT=10 will match LBNs 10 to 195 DIR /LBN=(100,200) /COUNT=(10,20) will match v4 LBNs (100 to 109) and LBNs (200 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 isi SYS$SCRATCH:DISKBLOCK.LIS./VALIDJ If the /VALID qualifier is specified then only matching files with validK file headers will be displSKBLOCK> READ /FID=4 ; Read header for 000000.dirtK DSKB-I-BLKREAD, Block 273590 (%X00042CB6) of _NODE$DUA2 successfully read-3 FID: 4 LBN 273590 [000000]000000.DIR;12B 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 %XCC5A-G%DSKB-I-BLKMODIF, Block 273590 (%X00042CB6) of _DINCY$DUA0 succe e3 CHECKSUM/HOME E The checksum command now takes a /HOME qualifier which causes it to8 check or modify BOTH of the checksums in a home block. 3 COPY/BUFFERrA There is a /BUFFER qualifier to COPY_FILE which allows the mainiC read/write buffer to be the file header of the file to be copied. G 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);@ This has been done to be consistent with DIR/FID and COPY/FID.2 V5.1_New_Featuresu6 V5.1 has two minor bug fixes and three new features. Bug_fixesD 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_ode, 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 blockd8 DUMP /HEADER has beending 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 displiscovered. DISKBLOCK> SEARCH /WORD=%XFFFF or! DISKBLOCK> SEARCH /WORD = 12345f/BYTEh /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 /STRINGm /STRING=value /STRING="value"G Use SEARCH /STRING to search for an occurence of an ASCII text stringr 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)/HEADERn /HEADER=filespec D 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.  F If the indexf.sys is present and valid then the DIRECTORY command is much quicker,h DISKBLOCK> SEARCH /HEADERn! DISKBLOCK> SEARCH /HEADER=*.RDBT( DISKBLOCK> SEARCH /HEADER=000000.DIR;1+ DISKBLOCK> SEARCH /HEADER=LOGIN.COM /FULLe /FULL0 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. /BLOCKSy /BLOCKS=(keyword[,...])I Using the /BLOCKS switch you can specify a starting block and an ending=F --------------------------------------- I -------------------------HM2$Q_RETAINMAX------------------------------>LI <----------------------------------------------------------------------HI -------------------------HM2$Q_REVDATE-------------------------------->oI <----------------------------------------------------------------------cI -------------------------HM2$R_MIN_CLASS (20 bytes)-------------------> I <----------------------------------------------------------------------lI -------------------------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 -------------------HM2$R_MAX_CLASS (20 bytes)------------------->HI <----------------------------------------------------------------------0I -------------------------reserved (320 bytes)---------------------->sI <----------------------------------------------------------------------tI <------------------------HM2$L_SERIALNUM------------------------------>nI -------------------------HM2$T_STRUCNAME (12 bytes)------------------->KI <-------------------------------------------------------ssfully modified2 Undelete_file-N In this example a file on an ODS2 mounted disk is undeleted by patching the file header  $ 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 273600 [RANCE.DAT]MYFILE.DAT;1: DISKBLOCK> read /fid=6998 ! Read the file headerJ %DSKB-I-BLKREAD, B In$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44nq_"lock 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 FIDe; 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 valid H DISKBLOCK> REWRITE ! Write file header back to INDEXF.SYSM %DSKB-I-BLKMODIF, Block 1000 (%X000003E8) of _$1$DUA2 successfully modified 8 Now you need to Dismount the disk, mount it again and 7 $ ANAL /DISK /REPAIR should put the file in [SYSLOST] wwcluster factorN 3 HOMEVBN/ HM2$W_HOMEVBNh" Starting byte - 16' Size - 2 bytest= MeaninONLY> This qualifier causes invalid file headers to be ignored and= DIR /LBN for a single LBN will finish after a single match.e= The diskblock help library no longer has to be in SYS$HELP,I) $ DEFINE DSKB_HLB dev:[dir]filaneme.HLBq to access the help library2 V5.2_New_FeaturesL3 V5.2 has the following bug fixes and new featuresF9 Diskblock now works on both OpenVMS VAX and OpenVMS AXP]A DUMP /HOME has been added to display the buffer as a home blockd8 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 sameoG as the directory command since it does not use the INDEXF.SYS mapping " 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.m? DISKBLOCK ayed. Any invalid file headers will be ignoredHG If /LBN and /VALID are both specified and there is only a SINGLE LBN aN specified then the scan will stop after a single valid match has been found./SELECTo /SELECT=(keyword[,...])D The /SELECT qualifier has identical syntax and meaning to the DCL  command DIRECTORY/SELECT/ DISKBLOCK> DIRECTORY /SELECT=SIZE=MINIMUM=nnno< Only report files with a size greater than or equal to nnn/ DISKBLOCK> DIRECTORY/ SELECT=SIZE=MAXIMUM=mmm 9 Only report files with a size less than or equal to nnne= DISKBLOCK> DIRECTORY /SELECT=SIZE=(MINIMUM=nnn,MAXIMUM=mmm) @ Only report files with a size greater than or equal to nnn AND less than or equal to mmmt /BY_OWNERa /BY_OWNER=UICG The /BY_OWNER qualifier enables you to find files owned by a specificn> UIC or rights identifier. Wild card UICs are not supported.( DISKBLOCK> DIRECTORY /BY_OWNER=[23,45]( DISKBLOCK> DIRECTORY /BY_OWNER=[RANCE]- DISKBLOCK> DIRECTORY /BY_O 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"< 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=%O177777* 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.T6 It will search blocks 1 to 32 if a file is selected. 2 Using_^T% Searching a whole drive can be slowC< (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 to be output showing, the last blocks read and the current time. For Example:# DISKBLOCK> SEARCH /STRING="Ascii"C %DSKB-I-SEARCHING, Searching blocks 0 - nn for string "Ascii"....t9 %DSKB-I-CONTROL_T, Just checked block 10008 at 18:07:43) 2 ExamplesC DISKBLOCK> SEARCH /BLOCKS=START:%X40 /STRING="String to look for"tI This command will search all blocks starting from block 64 for the texto> 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=%O177777a> 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 byteo6 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 INB 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 ---------------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 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= Meanin/W$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44nյ"g - 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 no longer issues a SHOW command every time you do ac? select. You may issue the SHOW command yourself if required. ? A memory leak has been fixed that lost TRACK_SIZE * 512 bytes $ 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_Features % V5.3 has the following new featuresb> FILL command fills the read write buffer with a data patternD Many new qualifiers to the Directory command allow file selections to be made.L8 /SELECT=SIZE finds files above or below a certain size/ /BY_OWNER finds files with a particular owner # /DELETED finds ONLY deleted fileso0 /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_Features 4 V5.4 has the following new features and bug fixes.WNER=[USER,RANCE]( DISKBLOCK> DIRECTORY /BY_OWNER=PROJECT/DELETEDK The /DELETED qualifier can be used to locate the headers of DELETED files I on the disk. If you use this qualifier then ONLY deleted files will beTH reported, and the error message saying that this may be a deleted file will be suppressed DISKBLOCK> DIRECTORY /DELETED/- DISKBLOCK> DIRECTORY /BACKLINK=nnn /DELETEDa* DISKBLOCK> DIRECTORY VITAL.FILE /DELETED/BACKFIDG Only reports files with a particular FID in the file header BACK FID.iG The BACK FID is the file id of the directory to which the file header is pointingA= The file id of a directory file can be found by DUMP/HEADERrB 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 /BACKLI- 2 bytesU8 Meaning - VBN of index file bitmap 3 IBMAPLBN HM2$L_IBMAPLBN" Starting byte - 24' Size - 4 bytes 8 Meaning - LBN of index file bitmap 3 MAXFILES HM2$L_MAXFILES" Starting byte - 28' Size - 4 bytesEA Meaning - maximum number of files on volumeu 3 IBMAPSIZEh HM2$W_IBMAPSIZE " Starting byte - 32' Size - 2 bytesa> Meaning - index file bitmap size, blocks 3 RESFILES HM2$W_RESFILES" Starting byte - 34' Size - 2 bytes/B Meaning - number of reserved files on volume 3 DEVTYPEh HM2$W_DEVTYPEf" Starting byte - 36' Size - 2 bytest0 Meaning - disk device type3 RVNR HM2$W_RVNm" Starting byte - 38' Size - 2 bytesrE Meaning - relative volume number of this volume/ 3 SETCOUNT HM2$W_SETCOUNT" Starting byte - 40' Size - 2 bytes 7 Meaning - count of volumes in setg 3 VOLCHARa HM2$W_VOLCHAR " Starting byte - 42' Size - 2 bytesl6 Meaning - volume characteristics 4 READCHECKu HM2$V_READCHECKT" Starting byte - 42! Bit number - 0e: Meaning - verify all 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 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 fixedww Meaning - relative volume number of this volume/ 3 SETCOUNT HM2$W_SETCOUNT" Starting byte - 40' Size - 2 bytes 7 Meaning - count of volumes in setg 3 VOLCHARa HM2$W_VOLCHAR " Starting byte - 42' Size - 2 bytesl6 Meaning - volume characteristics 4 READCHECKu HM2$V_READCHECKT" Starting byte - 42!NK=nnn /DELETED /PLACEMENTH Only reports files which have placement information specified in their mapping pointers. : /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 /SINCE="01-JAN-1990 03:42:00.00" <-- NOTE: MUST BE UPPER CASE and QUOTEDo/BEFOREe /BEFORE=time ; Selects only those files dated before the specified time. M You must specify one of the following qualifiers with the /BEFORE qualifiereF to indicate the time attribute to be used as the basis for selection, /BACKUP /CREATED /EXPIRED or /MODIFIED! The time should be specified as  /BEFORE=01-jan-1990C /BEFORE=01-JAN-1990_N /BEFORE="01-JAN-1990 03:42:00.00" <-- NOTE: MUST BE U PPER CASE and QUOTED /BACKUP B Modifies the time value specified with the /BEFORE or the /SINCEA qualifier. The /BACKUP qualifier selects files according to the D 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 select s 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.e/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 FILEuC /EXPIRATION_DATE command.) The /EXPIRED qualifier is incompatible C wi th 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 toe? the dates on which they were last modified. This qualifier is C incompatible with the following qualifiers that also allow you to C select files according to time attributes: /BACKUP, /CREATED, andT /EXPIRED.R/FULL L Ou֞$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44nH,"tputs a formatted dump of the file header for each matching file found 2 Examples! DISKBLOCK> DIR IMPORTANT*.*FILEaD 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.LIS G %DSKB-I-LASTFID, Just read FID 2883 at 16:23:08 <-- Control T typed  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;1t! DISKBLOCK> DIR /LBN=1000 /VALIDe8 FID: 7671 LBN: 370067 [RANCE.SUBDIR]FILE.EXT;2 DISKBLOCK> DIR /BACKLINK=2301 1 FID: 7671 LBN: DEXF.SYS It will create a file with the details of all matches.Qww/BEFOREr /BEFORE=time ; Selects only those files dated before the specified time. M You must specify one of the following qualifiers with the /BEFORE qualifier F to indicate the time attribute to be used as the basis for selection, /BACKUP /CREATED /EXPIRED or /MODIFIED! The time should be specified as  /BEFORE=01-jan-1990a /BEFORE=01-JAN-1990CN /BEFORE="01-JAN-1990 03:42:00.00" <-- NOTE: MUST BE U- 2 bytesU8 Meaning - VBN of index file bitmap 3 IBMAPLBN HM2$L_IBMAPLBN" Starting byte - 24' Size - 4 bytes 8 Meaning - LBN of index file bitmap 3 MAXFILES HM2$L_MAXFILES" Starting byte - 28' Size - 4 bytesEA Meaning - maximum number of files on volumeu 3 IBMAPSIZEh HM2$W_IBMAPSIZE " Starting byte - 32' Size  - 2 bytesa> Meaning - index file bitmap size, blocks 3 RESFILES HM2$W_RESFILES" Starting byte - 34' Size - 2 bytes/B Meaning - number of reserved files on volume 3 DEVTYPEh HM2$W_DEVTYPEf" Starting byte - 36' Size - 2 bytest0 Meaning - disk device type3 RVNR HM2$W_RVNm" Starting byte - 38' Size  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  - 2 bytesrE Meaning - relative volume number of this volume/ 3 SETCOUNT HM2$W_SETCOUNT" Starting byte - 40' Size - 2 bytes 7 Meaning - count of volumes in setg 3 VOLCHARa HM2$W_VOLCHAR " Starting byte - 42' Size - 2 bytesl6 Meaning - volume characteristics 4 READCHECKu HM2$V_READCHECKT" Starting byte - 42! Bit number - 0e: Meaning - verify all 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! Bit number - 3I; Meaning - turn off high-water marking: 4 CLASS_PROT HM2$V_CLASS_PROT" Starting byte - 42! Bit number - 4 < Meaning - enable classification checks 3 VOLOWNER HM2$L_VOLOWNER" Starting byte - 44' Size - 4 bytesB0 Meaning - volume owner UIC 3 SEC_MASK HM2$L_SEC_MASK" Starting byte - 48' Size  - 4 bytes04 Meaning - volume security mask 3 PROTECT8 HM2$W_PROTECTI" Starting byte - 52' Size - 2 bytes 6 Meaning - volume protection code4 bits <0:3> System3 bits <4:7> OwnerK3 bits <8:11> GroupR3 bits <12:15> World= Within each 4 bit field17  bit 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 FILEPROT HM2$W_FILEPROT" Starting byte - 54' Size - 2 bytesn7 Meaning - default file protection 2 not currently used 3 RECPROTh HM2$W_RECPROT " Starting byte - 56' Size - 2 bytes=> Meaning - default file record protection2 not currently used 3 CHECKSUM10 HM2$W_CHECKSUM19" Starting byte - 58' Size - 2 bytes . Meaning - first checksumG Use DISKBLOCK> CHECKSUM/HOME command toeC calculate a new checksum if needed.r 3 CREDATEm HM2$Q_CREDATEe" Starting byte - 60' Size - 8 bytes = 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 dit number - 3; Meaning - turn off high-water markinge 4 CLASS_PROT HM2$V_CLASS_PROT" Starting byte - 42! Bit number - 4 < Meaning - enable classification checks 3 VOLOWNER HM2$L_VOLOWNER" Starting byte - 44' Size - 4 bytes 0 Meaning - volume owner UIC 3 SEC_MASK HM2$L_SEC_MASK" Starting byte - 48' 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 - 4 bytes 4 Meaning - volume security mask 3 PROTECT  HM2$W_PROTECT1" Starting byte - 52' Size - 2 bytesz6 Meaning - volume protection code4 bits <0:3> System3 bits <4:7> Owner 3 bits <8:11> Groupm3 bits <12:15> World2 Within each 4 bit fieldf7 Rb($DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n" bit 0 Set to deny read accessF8 bit 1 Set to deny write access: bit 2 Set to deny execute access9 bit 3 Set to deny delete accesse 3 FILEPROT HM2$W_FILEPROT" Starting byte - 54' Size - 2 bytesF7 Meaning - default file protectionc2 not currently used 3 RECPROTs HM2$W_RECPROTb" Starting byte - 56' Size - 2 bytesN> Meaning - default file record protection2 not currently used 3 CHECKSUM1  HM2$W_CHECKSUM1e" Starting byte - 58' Size - 2 bytese. Meaning - first checksumG Use DISKBLOCK> CHECKSUM/HOME command toRC calculate a new checksum if needed.S 3 CREDATE  HM2$Q_CREDATE_" Starting byte - 60' Size - 8 bytesC= Meaning - Quadword Volume Creation date]3 WINDOW HM2$B_WINDOW" Starting byte - 68& Size - 1 byte3 Meaning - default window size 3 LRU_LIM9 HM2$B_LRU_LIM " Starting byte - 69& Size - 1 byte1 Meaning - default LRU limit E (number of directories in dir access cache)E3 EXTEND HM2$W_EXTEND" Starting byte - 70' Size - 2 bytesU3 Meaning - default file extend 3 RETAINMIN_ HM2$Q_RETAINMIN" Starting byte - 72' Size - 8 bytesHE Meaning - minimum time between current time and0 file expiration. 3 RETAINMAX- HM2$Q_RETAINMAX-" Starting byte - 80' Size - 8 bytes-E Meaning - maximum time between current time and-0 file expiration. 3 REVDATE- HM2$Q_REVDATE-" Starting byte - 88' Size - 8 bytesF4 Meaning - Volume revision date? (e.g. date of last full backup) 3 MIN_CLASSN HM2$R_MIN_CLASS-" Starting byte - 96( Size - 20 bytes 3 MAX_CLASSe HM2$R_MA 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 X_CLASS-# Starting byte - 116-( Size - 20 bytes 3 SERIALNUM  HM2$L_SERIALNUM-# Starting byte - 456-' Size - 4 bytes-: Meaning - pack (media) serial number 3 STRUCNAMEt HM2$T_STRUCNAMEr# Starting byte - 460-( Size - 12 bytesI Meaning - Name of the volume set (from MOUNT /BIND)y@ (padded with spaces, ASCII %X20) 3 VOLNAME HM2$T_VOLNAMEA# Starting byte - 472 ( Size - 12 bytes+ Meaning - Volume nameg@ (padded with spaces, ASCII %X20) 3 OWNERNAME0 HM2$T_OWNERNAME;# Starting byte - 484R( 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_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  byte - 496R( Size - 12 bytes. Meaning - "DECFILE11B " 3 CHECKSUM2D HM2$W_CHECKSUM2w# Starting byte - 510L' Size - 2 bytes / Meaning - second checksum B Use DISKBLOCK> CHECKSUM command toC calculate a new checksum if needed.n 2 File_HeadertH 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 beyondf FH2$L_HIGHWATERoG 2) FH2$B_IDOFFSET must be less than or equal to FH2$B_MPOFFSET 8G 3) FH2$B_MPOFFSET must be less than or equal to FH2$B_ACOFFSET 0G 4) FH2$B_ACOFFSET must be less than or equal to FH2$B_RSOFFSET p@ 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 greaterf1 7) FH2$W_FID_NUM must contain the FID numbero5 8) FH2$W_MAP_INUSE must be less than or equal toS' FH2$B_ACOFFSET - FH2$B_MPOFFSETL# 9) The Checksum must be valid.5 E A deleted file header conforms to the format of a valid file headerk! with the following differences.M7 1) FH2$V_MARKDEL (bit 15) is set in FH2$L_FILECHARs@ 2) FH2$W_FID_NUM, FH2$B_FID_NMX and FH2$B_FID_RVN are all 0 3) The checksum is 0t' The layout of an ODS2 File Header is. I FH2$B_RSOFFSET 370067 [RANCE]FILE.EXT;2DD %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 filen1 FID: 15499 LBN: 1203844 [RANCE]FILE.EXT;1b1 FID: 20111 LBN: 370067 [RANCE]FILE.EXT;4 1 FID: 108520 LBN: 2045192 [RANCE]FILE.EXT;3u( 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 FID:  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 multiplytG allocated blocks will be reported against all valid headers. Invalid A or deleted headers which map any of these LBNs will be ingored.l= DISKBL OCK> DIRECTORY /LBN=(1000,2000,3000) /COUNT=(10,10,5)eJ 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 o 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)---------------------> 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)0W,$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n)l" 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 rder AG 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 OWNERNAMEe HM2$T_OWNERNAMEc# Starting byte - 484)( Size - 12 bytes, Meaning - Volume Owner@ (padded with spaces, ASCII %X20)3 FORMAT HM2$T_FORMAT# Starting--------------------------> 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 - 0a& Size - 1 byte: Meaning - ident area offset 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 offsetr access cache) 3 EXTEND HM2$W_EXTEND" Starting byte - 70' Size - 2 bytes3 Meaning - default file extend 3 RETAINMIN_ HM2$Q_RETAINMIN " Starting byte - 72' Size - 8 bytes E Meaning - minimum time between current time and 0 file expiration. 3 RETAINMAX HM2$Q_RETAINMAXn" Starting byte - 80' Size - 8 bytesbE Meaning - maximum time between current time and0 file expiration. 3 REVDATEs HM2$Q_REVDATEo" Starting byte - 88' Size - 8 bytesF4 Meaning - Volume revision date? (e.g. date of last full backup) 3 MIN_CLASSC HM2$R_MIN_CLASSe" Starting byte - 96( Size - 20 bytes 3 MAX_CLASS_ HM2$R_MAX_CLASSe# Starting byte - 116S( Size - 20 bytes 3 SERIALNUM- 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 spaces, 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! 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  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 -  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  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 ( 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 and$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n"!"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)-------------------$--> 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) %--------------------------> 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 off'set 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 offset' 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 . 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 D) 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 - Ex*tension 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 - + 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 ext,ension file number extension 3 RECATTR FH2$W_RECATTR" Starting byte - 20' Size - 32 bytes1 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 w-as (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 6- 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 LOCKED6 FH2$V_LOCKED " Starting byte - 52! Bit number - 6o7 Meaning / 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 - 0 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 1 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 and2 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 - ExM$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n"24tension 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 - 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 : 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 ext6 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 - file is deaccess lockeds 4 CONTIGs FH2$V_CONTIG" Starting byte - 52! Bit number - 7 2 Meaning - file is contiguous 4 BADACLr FH2$V_BADACLB" 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 8 DIRECTORY FH2$V_DIRECTORY" Starting byte - 52" Bit number - 133 Meaning - file is a directory 4 BADBLOCK  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 deleted 4 NOCHARGE  B FH2$V_NOCHARGEb" Starting byte - 52" Bit number - 16? Meaning - file space is not to be chargede4 ERASE FH2$V_ERASE" Starting byte - 52" Bit number - 17C Meaning - erase file contents before deletioni 3 RECPROT FH2$W_RECPROT" Starting byte - 56& Size - 2 byteE Meaning - record protection, not currently usedeB 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 ;ension 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 w=as (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 - 3t: Meaning = 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 >- verify all read operations 4 WRITCHECK FH2$V_WRITCHECK" Starting byte - 52! Bit number - 4 ; Meaning - verify all write operationsr 4 CONTIGB FH2$V_CONTIGB" Starting byte - 52! Bit number - 5 C Meaning - keep file as contiguous as possible 4 LOCKED  FH2$V_LOCKED" Starting byte - 52! Bit number - 6y7 Meaning ? - file is deaccess locked 4 CONTIG  FH2$V_CONTIG" Starting byte - 52! Bit number - 7y2 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 @ DIRECTORY FH2$V_DIRECTORY" Starting byte - 52" Bit number - 133 Meaning - file is a directorye 4 BADBLOCK  FH2$V_BADBLOCKW" 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 NOCHARGEy A 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 3 RECPROT FH2$W_RECPROT" Starting byte - 56& Size - 2 byteE Meaning - record protection, not currently used 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 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 )x$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n"CD - 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 bit 0 Set to deny read access 8 E 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& Size - 2 byte5L 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)i3 BK_FIDRVN_B FH2$B_BK_FIDRVN" SG 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 numbere 3 UICGROUP  FH2$W_UICGROUP " Starting byte - 62& Size - 2 byte0 Meaning H - 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> Owneru3 bits <8:11> Group 3 bits <12:15> World  Within each 4 bit field 7 bit 0 Set to deny read accessJ8 I bit 1 Set to deny write access: bit 2 Set to deny execute access9 bit 3 Set to deny delete accessI 3 BACKLINK_ FH2$W_BACKLINK " Starting byte - 66& Size - 6 byte: Meaning - back link file Identifier,3 points to directoryy 3 BK_FIDNUM FH2$W_BK_FIDNUM" Starting byte - 66& Size - 2 byte5J 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 bytesh@ Meaning - back link relative volume number1 (overlays FH2$B_BK_FIDRVN and FH2$B_BK_FIDNMX)e3 BK_FIDRVN_B FH2$B_BK_FIDRVN" SKtarting 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 - journal control flagsE 4 ONLY_RUQ 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 - enable before image journal 4 AIJNL FMtarting 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 - journal control flagst 4 ONLY_RUN 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 - enable before image journalP4 AIJNL FOH2$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 accessible in recovery unit 4 JOURNAL_FILE P 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 - high-water mark in fXiled 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 suitable value. 3 Ident_Area I <-RH2$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_RU " Starting byte - 72! Bit number - 5iI Meaning - file is never accessible in recovery unit 4 JOURNAL_FILEeS FH2$V_JOURNAL_FILEC" 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 - high-water mark in fTileu 3 CLASS_PROTf FH2$R_CLASS_PROT " Starting byte - 88& Size - 1 byte< Meaning - security classification mask 3 CHECKSUM  FH2$W_CHECKSUM # Starting byte - 510& Size - 2 byte4 Meaning - file header checksum? Use DISKBLOCK> CHECKSUM commando> to calculate a suitable value. 3 Ident_Area I <-]'$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n["TU-----------------------FI2$T_FILENAME (20 bytes)------------------->SI --------------------------------> <--------FI2$W_REVISION--------->oI -------------------------FI2$Q_CREDATE--------------------------------- I --------------------------------> <--------------------------------+I -------------------------FI2$Q_REVDATE---------------------------------3I --------------------------------> <-------------------------------- I -------------------------FI2$Q_EXPDATE-------------- V-------------------bI --------------------------------> <-------------------------------- I -------------------------FI2$Q_BAKDATE--------------------------------- I --------------------------------> <--------------------------------II <------------------------FI2$T_FILENAMEEXT (66 bytes)---------------->l 4 FILENAMEh FI2$T_FILENAME = Starting byte - Header + (2 * FH2$B_IDOFFSET)e1 (Usually byte 80)6( Size - W 20 Bytes: Meaning - First 20 bytes of Filename? Paddes with spaces (ASCII %X20)e> Continued in FI2$T_FILENAMEEXT 4 REVISION. FI2$W_REVISIONiB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 202 (Usually byte 100)' Size - 2 BytesSA Meaning - Number of times the file has been 4 acceassed 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 createdI 4 REVDATE FI2$Q_REVDATEB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 302 (Usually byte 110)' Size - 8 BytesF@ Meaning - Y-----------------------FI2$T_FILENAME (20 bytes)------------------->lI --------------------------------> <--------FI2$W_REVISION--------->nI -------------------------FI2$Q_CREDATE--------------------------------- I --------------------------------> <--------------------------------I -------------------------FI2$Q_REVDATE--------------------------------- I --------------------------------> <--------------------------------EI -------------------------FI2$Q_EXPDATE--------------Z------------------- 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 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 beenn4 acce\ssed 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 - 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 byte - Header + (2 * FH2$B_ID^OFFSET) + 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 of 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 retrie`val 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 starte 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$W_LOWLBN | 0 1|FM2$V_HIGHb Quadword time when file was lastA closed after being open for writeB 4 EXPDATE FI2$Q_EXPDATEB Starting byte - Header + (2 * FH2$B_IDOFFSET) + 382 (Usually byte 118)' Size - 8 Bytesd? Meaning - Quadword time when file becomes25 eligible for deletion 4 BAKDATE FI2$Q_BAKDATEB Starting byte - Header + (2 * FH2$B_ID cOFFSET) + 462 (Usually byte 126)' Size - 8 Bytes-@ 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 of filename after> d first 20 bytes. Allows for anA 80 character filename followed by-8 a 5 digit version number 3 Map_AreaM8 The map area starts at Header + (2 * FH2$W_MAPOFFSET)/ It consists of 1 or more retrieval pointers. 5 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 long + Type 2 retrieval pointer is 6 bytes longi+ Type 3 retrieival pointer is 8 bytes long 4 Type_0r< 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 specified5 ONCYL FM2$V_ONCYL+ Space is to be allocated on one cylinder5 LBN FM2$V_LBN= Space is to be allocated at the startj$DISKBLOCK054.A8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n`efLBN |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= +--------------------+-----+----------------------------+g= | 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 429496h7295 (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:fg1 Bug_reports> Please send all bug reports and feedback about DISKBLOCK to" Stuart.Rance@hhl.mts.dec.com or Rance@vivian.enet.dec.comwwj of the LBN contained 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_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$W_LOWLBN | 0 1|FM2$V_HIGHkLBN |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= +--------------------+-----+----------------------------+ l= | 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 429496 m7295 (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.ww7yǘ1 Bug_reports> Please send all bug reports and feedback about DISKBLOCK to" Stuart.Rance@hhl.mts.dec.com or Rance@vivian.enet.dec.comww,*[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.OPT;4+, ^ ./ 4-zZ0123KPWO5H6<֠7…ǘ8kɘ9G HJsys$share:vaxcrtl/share4*[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK054.RELNOTES;6+,\R./ 4M<-zZ0123KPWO56cʳ7 .…ǘ8 ɘ9G HJ5 DISKBLOCK V5.4 Release Notes.0 30th January 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.Restrictions for Diskblock V5.4-------------------------------; 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.KIT054.MAIN]KITINSTAL.COM;38+,FE.$/ 4f$"-zZ0123KPWO%56$.(sǘ7Lp…ǘ8Lɘ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:p`Z$DISKBLOCK054.AFEzZ-[RANCE.DISKBLOCK.KIT054.MAIN]KITINSTAL.COM;38f$Ƶ$!$$ 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 = "0552" $ 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.4 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 library 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 DISKBLOCK054.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 | 4800 blocks | 2400 blocks |N | Without Source Files | 2000 blocks | 600 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 | 3000 blocks | 1700 blocks |N | Without Source Files | 900 blocks | 450 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.4 |N | |N +-------------------------------------[#$DISKBLOCK054.AFEzZ-[RANCE.DISKBLOCK.KIT054.MAIN]KITINSTAL.COM;38f$5-------------------------------------+=$ 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:diskblock054.relnotes vmi$kwd:diskblock054.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 DISKBLOCK054.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' CI$ 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'DISKBLOCK054.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_di"r'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$!8zZ-[RANCE.DISKBLOCK.KIT054.MAIN]DISKBLOCK.HLB;44n@tp` W- B3_ %*#3֧Q}; IdYq%v? N]h3v10dI6^oZ=21.>{0 HEPuRQt|2W6TTgD+:vF-% WW`h'er/&PIstbEcu(doU- SQy[ri7 f1lgm8 ^Pa mrF3,-}gVVJPA6i Iys.m xC-65C5Yx(nMb-KKZ1 O n_ K y$:o>uo:L75Kai fC;&m8Ve\`HMxJ9f.s$1H^8=D}ng(:7MQZ(!t jT+5`i4)hS\QjKtj3u;H`Av]`3r%t)} R(ium,NkiuY =GO?LH()}-(q*W"jD+T }CbM:]"`e6Z=+YM#$,Fy"uZYEN-7Twd`,'%>NYnWT DzOt\,U\C !N_vRG+Y2!o|w^#_a[vkdH $j 9( l U =S ,#r\qTgiHOR|hw)7E\d2kY :Ep9W5qHXlorDZwh5Z!RNp}bmCH[pqCGB t_6#3_O$| #| tle&{Ju%vW5[ QB6"+JF#bU%y#; X13&n=nN"&W-8HS(>"WTtRg3oDkEKv776NF V`8U6u+R PE , pWi` Կo*>1';"RDhqJN;.{0kI8@KU] PxB4M<=&C\XUVe&tYE_qu`f Y!LK$& WUggsQ}D_*Ot(S0#{;KO` x~M2G@yq$zf/:CyiфmwBO/=S8+]dLEt;zncRnW"n@#b% "[sW/'P.aZtF 60~Edurf(RG{QB+%xeHsPUOrPK+9s C6 immsdzx G*U_hHiBYN"rp`c!'<\o;#\E|$%d4k@"_%='O `}~Ox*q _xtSxz Hmnl cgqx'0W`~g hMt5$<|mZ;5s6U~4{DB`K-jl<<9w# i 9%xf8Jc# 48Qbp!6c}2sgZ{J5&z{K8Ob W8el~ gq\rg(k#Gv.5.(n 3 y}| /XuqfmNGrZ8 'u'dp~F_u -AF>vpinwy(kTr1KLCDA E>%Yzg5veJ?WzyBmF wj\IoDYhCG{7Xe& ^T@3>% kYK}jm!m]oe bTG3'*#j+Q ZLxZyQ&~/TVM6 [ *qM$ O~+LLF XqF,P1 'N fs3V+qL`ku7c`h$qx^=d3kTK9$[nABLF+y&d+Syf?@bU3^%oeLK!|q4,a!/@`kA [XG>y@) dmqB$i_6>;c` 6(_4.vB?(yNUu}P/`9!78~h1K&9\B!"t9)5zamU>xp^#EB03d/;b-89+ku-q5qkY:qpjDV}^FOTOVpfG#zP2{5%7! iaZ5Xj]qr]@B1lW|`N__w e|z/ss;f|0az-5K [Uct'JSy5!B)s[f(`u@8 l7)*YSzJDnmlxXF1pN/?dDje_L=T=MO$;rot3Dd:FhXV7 C_#'E;A`jxKxUMX}r)|dl -0>|)]LA,9wCq}CSoY#Qra_ORz% /-BZJ~oLpw&6>pQYU|jO^d|)urxDnh};0f=.TI/Ye!q 5;jXx1.[PQLHH5xRkshDRrTWR`+%|Y oyIg`Sy`"nmhsAZ0I h9D):Ur@<2 C[2NB o9t1Zsl.p fdbm=;.>VjdUtJ{DLxd jq@a2qup0_]MSm(T1a1$`"m3  JF% I+AS3Rd(F/`YAX*BfCr(Uk=/HQ& f RQ`fcz g9K{-jLN(Wm_'$%[8( #Fd)$, xd1 s l^tY?2 B!lWV{tW# ApD^c *F5o{!7q-?>sZY2^m&pCD2J"@ yrQ"db}Fg>=/x{ NOn->3Ic{})jr*unu&'RGgoY6/jGf~jk.|%z0vDtA@L4n.%#m?} 2~P"y{cr9?2&R(%a~V*NrFKA<%HlY! ?sH YP:_/$xk^sy"+W 71ZMjHaPwuTP<".;7XvDmk|4@l d$.g,j$eX|KZX, fisPbq6[UEo{by'EzX78(!U*CcaJ|-X$xS0pUH kyX/{(43ncGB{\%mft=gC WidEmaB&|[:[0~U ~(Sy'iSW~(c~5D*N"vU$hXL Qg4U)} ?AN?Jb(s+s("Z3pw dY%BdjWkXDv9M;P{&pc< ,pQ)qJ)}!bVnH '!%g_*@Uuk j.hFD}Ys3-^^{BdbR57QLX0 =>fr#g- %_Nc1.0{^%0ʂm,REv£H8:# +axIXSPx=iKVK3]8jKBE  %;(m^6rLr1?DK$c)p)#Y},M'V.LM @X0][&65ݡ݁Ե&P-|3=FVHR8 Souj8ze 5lPgM= 8*`G7 *YL(2~`Hq5Uoz211W4+o*^]02bYe=9+uWr.qqVAd@`I SA*Dp"]$0v`3~rEERxvV) Z y!iH+KJ( -{_.Le+/. 45%&f.'#u2t+9+w~:"\i1 P}9`0Npb{*@IU@E\g0OBJ`y&L>Ggf)r,$f>!Hetltn~j, d VE@} M20B| |LE-,\pHJm9ZwW Es6H;OBh0cN=Z$ >l]DH87D3IdrS \RCo5~0P>VqPn4dOe pn-5q\69F/X 1liwf THI}aZfr`cO^|xOgtN[j,N _{\}]Vai%H:~7uq@MokKV@3P*OK=D_Q/eOtxzz0WLiwQ Y@vDz aGcA1й9?5#29 %BkNUA!ow^zIO_Z[-%\>x5d~H6 <KNC0')!=oM}E~{G\5+55px'v tzQ"V43>GVs ?Kb_-iIs>c eA& [?G$ f'dzgKOH9Ym[U VCxdv%34CWPX:O)~`M0G?\Z kaoFNp ,)"iEJPp7\~tV%.to4z zK,,i24KyrdvlSe3@P <r8H|dJ\)o\]'U/='Qm'pb=SH"Jz-NSe0un(}7|XOw3.KZ"~"(Pm`iD4?s'?sUHo^)#H4dPQ I&lq!:1u:r\;+I CG/Di(@dc=V&F`cc7[u8I+jx5D?#WBL35>kImBe{-N6=iT#?}8N>յ) Y!n2}ngWZ5%Z%%mTf,@S4&f!Z=E8N`@]]Gf MJ\PiRAEg>:!K#_d&+0 (>GLY>oO(C]Sck*X=rggsoi0X_\*2g"6,(bOjf+Zm#FS7`f)ƲX z`BWO31>+A`@1(9K`T#Lf#$,nyJAjwY)VJ1|:GSNH8Nhmr]z!ub3p:IuZEnYQ_ IK$\w}C0;]wC9n4o<Q:C'G,owEICs@5u#Kx pt6.`YZ [,` /&|P02@ pIzRae|EFE0unk]!VSS"^d eWiu k<7xq 42\WEie P$5nc%b"unK!gTm Oh_6d+g_j[Nl4ON ' W}1f&Oou9_0{-V5~\>UOf.1P263$|7KN2Z=]9 +/CNn3y~ @L:~L=7jT&@O/Hg}9 ,KLtP9BsirbW5{CW(=a&K0mynmr9 "j\<?-E5P:SftR1\2SU+4irul84Rgb+6JG#C b`*DGk|+{K\RGQ6V{Zq)hXuFNOltLK6nah4jRBLbZKeo)9/aswyr{[wu Md%KP8v<s$V4T_ nF H " KlG9!"m]lKC`3Gt0Ar'SN:UbcL;zGg]0LPm[_[1GvjM $'-"k;A*H9Y@ !LIK"Gs7[_*8C5)&W9aVI0;SU6yh?wJEKXkbTTn`7 (CgwqYw6eTvFF8acS{i]fhv =$~dk;}+u]w_]dN`"`)7_OTJH_[{LGr&UpMdXW%2%{RAye-F,TR ?Ve'n]-ShXFg'mi~0Md)#uk\WQv9 c ji=!gVO:B!%t;&,_C!_XNLR//T1{BshjxJEsa[I=/G;l#Iu\O\k%EidEH IHKLXAY _LIDU KB_ YEH oABNF D^ IHNmal but you may use the< %X or %O operators to specify a Hex or Octal block number.G WhenP