Short: Lowlevel format SCSI drives Author: thor@math.tu-berlin.de (Thomas Richter) Uploader: thor math tu-berlin de (Thomas Richter) Type: disk/misc Version: 1.04 Requires: Os 2.04, A SCSI drive (guess what...) Architecture: m68k-amigaos This program can be used to format SCSI media of any type, making all options of the SCSI Format command available to the user. As such, it should be only used by experts, knowing what the parameters mean. It does not write any file management data to the drive, does *NOT* dos format drives, does not write an RDB. This is up to the standard system tools. This program should be used with great care since it will - on purpose - erase all data of the selected drive. Beware! Most likely, you DO NOT want to use it! Most SCSI drives come pre-formatted, there's little reason to perform a low-level format on them again. It *might* proof useful for reassigning bad blocks of old and worn JAZ or magneto-optic cartridges, provided you know the parameters. Some examples are ready prepared for you. _____________________________________________________________________________ Synopsis: SCSIFormat HANDLER,DEVICE/K,UNIT/K/N,FLAGS/K/N HANDLER The name of a DOS device to be formatted. This should be something like JAZ:, JH0:, ZIP: etc. This option works only if the drive in question is already mounted. DEVICE/K Alternatively, the name of an exec device driver, in case the device is not mounted. IF YOU WANT TO USE THIS OPTION, YOU MUST SPECIFY THE DEVICE KEYWORD or else SCSIFormat will regard the device name as the name of the dos handler. For example, this could be set to DEVICE=oktagon.device or DEVICE=omniscsi.device or DEVICE=gvpscsi.device or DEVICE=cybscsi.device UNIT/K/N If the DEVICE keyword is present, you have to specify the unit number of the exec device as well. This is in most cases simply the SCSI ID of the drive to be formatted. This information is not required if you specified the drive by its AmigaDos device name. FLAGS/K/N: A flags value for opening the exec device driver, only looked at if the device was specified by its exec driver name and ignored otherwise. This defaults to 0, and is usually not required at all. Some device drivers check the SCSI bus again if the flags value is set to 1 and hence might be able to detect a drive which was powered on later. _____________________________________________________________________________ After startup, the program asks you about the format specifications: Are you sure to format device xxxxx.device, unit x (yes/no) : Answer this with "yes" to continue. "no" or ^C aborts the program. Bad block format is block format. This is an information for the experts which type of bad block list specification is used by the drive. Clear the list of grown defects (yes/no) : Whether or not the grown defect list should be cleared. If answered by "yes", SCSIFormat will tell the drive to ignore all defects encountered in the lifetime of the cartridge before, except for the primary defects entered by the manufacturer. This might be useful for magneto-optical drives because dust on the disk might have created defects even though the surface is still fine. If answered by "no", the drive will keep the grown defect list. Vendor specific data (0=default, 32=JAZ?) : This data is purely vendor specific. It should be set to zero for almost all purposes, except for JAZ drives which expect here a value of 32 (don't ask me why, I don't know either). Some drive manufactures might be willing to hand out specifications of their disk drives which explain in detail what this value means. Interleave (0=default) : Specify a sector interleave for the device. This should be set to zero for almost all purposes as there is almost no drive that still requires an interleave factor. If this is set to non-zero, this value is the difference of the sector numbers of two adjacent sectors. Namely, if this value is set to one, sector "n" will be followed by sector "n+1" on the surface. If set to two, "n" will be followed by "n+2", etc. This value is usually ignored by modern drives, some very achient SCSI drives perform better with a value of two. Disable use of primary defect list : Tell SCSIFormat whether the drive should ignore the primary defect list on formatting. If set to "no", the drive will make use of the primary defect list and will not make use of sectors identified as bad. If set to "yes", the drive will ignore the primary defect list, even though the list is not deleted. You usually want to set this to "no". Disable validation process : Whether or not the drive shall perform a vendor specific certification process or not. If answered by "yes", no certification should take place, if you enter "no", the drive will check the sectors after having formatted them. This should be usually set to "no". Use default format options : If set to "yes", the drive will ignore most of the settings made above, and will select its default parameters. If set to "no", it will use the parameters entered above. After that, SCSIFormat prints again the format parameters and queries you again whether or not to format the disk. THIS IS YOUR LAST CHANCE TO ABORT THE FORMAT PROCESS, either by entering "no", or by hitting ^C. There's no stop afterwards. Please note that not each drive will accept each parameter. You're left to experiment a bit what your HD accepts or not. Obviously, you should not try to format your workbench, let alone the drive you stored SCSIFormat on. ____________________________________________________________________________ Some example settings: To format a JAZ drive, the following parameters should suffer: SCSIFormat will low-level format a SCSI device. Are you sure to format device gvpscsi.device, unit 6 (yes/no) : yes Bad block format is block format. Clear the list of grown defects (yes/no) : yes Vendor specific data (0=default, 32=JAZ?) : 32 Interleave (0=default) : 0 Disable use of primary defect list : no Disable validation process : no Use default format options : yes To format a ZIP drive: SCSIFormat will low-level format a SCSI device. Are you sure to format device gvpscsi.device, unit 6 (yes/no) : yes Bad block format is block format. Clear the list of grown defects (yes/no) : yes Vendor specific data (0=default, 32=JAZ?) : 0 Interleave (0=default) : 0 Disable use of primary defect list : no Disable validation process : no Use default format options : yes The validation process may be disabled for a faster formatting here. To format a SCSI HD, clearing the grown defect list: SCSIFormat will low-level format a SCSI device. Are you sure to format device gvpscsi.device, unit 6 (yes/no) : yes Bad block format is block format. Clear the list of grown defects (yes/no) : yes Vendor specific data (0=default, 32=JAZ?) : 0 Interleave (0=default) : 0 Disable use of primary defect list : no Disable validation process : no Use default format options : yes ____________________________________________________________________________ For the experts, here's an excerpt from the SCSI specifications that explains the details: Revision 10L, 7-SEP-93 9.2.1 FORMAT UNIT command The FORMAT UNIT command (see table 109) formats the medium into initiator addressable logical blocks per the initiator defined options. In addition, the medium may be certified and control structures may be created for the management of the medium and defects. There is no guarantee that the medium has or has not been altered. Table 109 - FORMAT UNIT command +=====-========-========-========-========-========-========-========-========+ | Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |Byte | | | | | | | | | |=====+=======================================================================| | 0 | Operation code (04h) | |-----+-----------------------------------------------------------------------| | 1 | Logical unit number | FmtData| CmpLst | Defect list format | |-----+-----------------------------------------------------------------------| | 2 | Vendor-specific | |-----+-----------------------------------------------------------------------| | 3 | (MSB) | |-----+--- Interleave ---| | 4 | (LSB) | |-----+-----------------------------------------------------------------------| | 5 | Control | +=============================================================================+ The simplest mandatory form of the FORMAT UNIT command (with no format data) accomplishes medium formatting with little initiator control over defect management. The target implementation determines the degree of defect management that is to be performed. Two additional mandatory forms of this command increase the initiator's control over defect management. Several optional forms of this command further increase the initiator's control over defect management, by allowing the initiator to specify which defect list(s) are to be used, to specify defect locations (in several formats), to enable target certification, and to specify what to do in the event that defect lists are not accessible. The FORMAT UNIT command shall be rejected with RESERVATION CONFLICT status if the logical unit is reserved, or any extent reservation, from any initiator, is active in the specified logical unit. During the format operation, the target shall respond to commands as follows: a) In response to all commands except REQUEST SENSE and INQUIRY, the target shall return CHECK CONDITION status unless a reservation conflict exists, in which case RESERVATION CONFLICT status shall be returned. b) In response to the INQUIRY command, the target shall respond as commanded. c) In response to the REQUEST SENSE command, unless an error has occurred, the target shall return a sense key of NOT READY and an additional sense code of LOGICAL UNIT NOT READY FORMAT IN PROGRESS, with the sense key specific bytes set for progress indication (as described in 8.2.14.1). Refer to 8.2.14.2 for a description of deferred error handling that may occur during the format operation. NOTE 103 It is recommended that MODE SELECT parameters (if any) be set prior to issuing the FORMAT UNIT command. During the execution of the FORMAT UNIT command, the target may perform a medium defect management algorithm (which can be controlled by the initiator, using optional forms of this command). Four sources of defect location information (hereafter called defects) are defined as follows: a) Primary defect list (Plist). This is the list of defects, usually supplied by the original manufacturer of the device or medium, that are considered permanent defects. The Plist is located outside of the initiator-accessible logical block space. The Plist is accessible by the target (to reference while formatting), but it is not normally accessible by the initiator except through the READ DEFECT DATA command. Once created, the original Plist shall not be subject to change. b) Target certification list (Clist). This list includes defects detected by the target during an optional certification process executed during the FORMAT UNIT command. This list shall be added to the Glist. c) Data defect list (Dlist). This list of defect descriptors may be supplied to the target by the initiator in the DATA OUT phase of the FORMAT UNIT command. This list shall be added to the Glist. The defect list length in the defect list header may be zero, in which case there is no Dlist. d) Grown defect list (Glist). The Glist includes all defects sent by the initiator or detected by the target. The Glist does not include the Plist. If the CmpLst bit is zero, the Glist shall include Dlists provided to the target during the previous and the current FORMAT UNIT commands. The Glist shall also include: a) defects detected by the format operation during medium certification; b) defects previously identified with a REASSIGN BLOCKS command; c) defects previously detected by the target and automatically reallocated. A format data (FmtData) bit of one indicates that the FORMAT UNIT parameter list (see table 110) shall be transferred during the DATA OUT phase. The DATA OUT phase consists of a defect list header (see table 111), followed by an initialization pattern descriptor, followed by zero or more defect descriptors. Each defect descriptor identifies a location on the medium that the target shall map out of the user-accessible area. Table 110 - FORMAT UNIT parameter list +=====-========-========-========-========-========-========-========-========+ | Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |Byte | | | | | | | | | |=====+=======================================================================| | | Defect list header | |=====+=======================================================================| | | Initialization pattern descriptor (if any) | |=====+=======================================================================| | | Defect descriptor(s) (if any) | |=====+=======================================================================| | 0 | Defect descriptor 0 | |-----+--- (See specific table for length.) ---| | n | | |-----+-----------------------------------------------------------------------| | | . | | | . | |-----+-----------------------------------------------------------------------| | 0 | Defect descriptor x | |-----+--- (See specific table for length.) ---| | n | | +=============================================================================+ The defect list header (see table 111) provides several optional format control bits. Targets that implement these bits give the initiator additional control over the use of the four defect sources, and the formatting operation. If the initiator attempts to select any function not implemented by the target, the target shall terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST and the additional sense code shall be set to INVALID FIELD IN PARAMETER LIST. Table 111 - Defect list header +=====-========-========-========-========-========-========-========-========+ | Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |Byte | | | | | | | | | |=====+=======================================================================| | 0 | Reserved | |-----+-----------------------------------------------------------------------| | 1 | FOV | DPRY | DCRT | STPF | IP | DSP | Immed | VS | |-----+-----------------------------------------------------------------------| | 2 | (MSB) | |-----+--- Defect list length ---| | 3 | (LSB) | +=============================================================================+ A FmtData bit of zero indicates that a DATA OUT phase shall not occur. The source of defect information is not specified. A complete list (CmpLst) bit of one indicates that the defect list sent by the initiator is a complete list of defects. Any existing defect list except the Plist shall be ignored by the target. As a result, a new Glist is constructed that contains the Dlist (if it is sent by the initiator), and the Clist (if certification is enabled). The target may add any defects it detects during the format operation to this Dlist. A CmpLst bit of zero indicates that the defect list sent by the initiator is an addition to the existing list of defects. As a result a new Glist is constructed that contains the existing Glist, the Dlist (if it is sent by the initiator), and the Clist (if certification is enabled). The target may add any defects it detects during the format operation to this Dlist. Table 112 defines the implementation requirements for the FORMAT UNIT command. Table 112 - FORMAT UNIT defect descriptor format and requirements +=======-======-========-========-======-=====================================+ | | | Defect | Defect | | | | | | list | list | | | |FmtData|CmpLst| format | length | Type | Comments | |-------+------+--------+--------+------+-------------------------------------| | 0 | 0 | 000b | N/A | M | Vendor-specific | |-----------------------------------------------------------------------------| | BLOCK FORMAT | |-----------------------------------------------------------------------------| | 1 | 0 | 000b | Zero | M | See notes (1) and (3) | | 1 | 1 | 000b | Zero | M | See notes (1) and (4) | | 1 | 0 | 000b | >0 | O | See notes (2) and (3) | | 1 | 1 | 000b | >0 | O | See notes (2) and (4) | |-----------------------------------------------------------------------------| | BYTES FROM INDEX FORMAT | |-----------------------------------------------------------------------------| | 1 | 0 | 100b | Zero | O | See notes (1) and (3) | | 1 | 1 | 100b | Zero | O | See notes (1) and (4) | | 1 | 0 | 100b | >0 | O | See notes (2) and (3) | | 1 | 1 | 100b | >0 | O | See notes (2) and (4) | |-----------------------------------------------------------------------------| | PHYSICAL SECTOR FORMAT | |-----------------------------------------------------------------------------| | 1 | 0 | 101b | Zero | O | See notes (1) and (3) | | 1 | 1 | 101b | Zero | O | See notes (1) and (4) | | 1 | 0 | 101b | >0 | O | See notes (2) and (3) | | 1 | 1 | 101b | >0 | O | See notes (2) and (4) | |-----------------------------------------------------------------------------| | VENDOR-SPECIFIC FORMAT | |-----------------------------------------------------------------------------| | 1 | 0 | 110b | | | | | 1 | 1 | 110b | | | | |-----------------------------------------------------------------------------| | All remaining codes are reserved. | |-----------------------------------------------------------------------------| | Key: M = Command implementation is mandatory. | | O = Command implementation is optional. | |-----------------------------------------------------------------------------| | NOTES | | 1 No Dlist is transferred to the target during the DATA OUT phase. | | 2 A Dlist is transferred to the target during the DATA OUT phase. | | Add the Dlist defects to the new Glist. | | 3 Use the existing Glist as a defect source. Add existing Glist | | defects to the new Glist. | | 4 Discard the existing Glist. Do not add existing Glist defects to | | the new Glist. | | 5 All the options described in this table cause a new Glist to be | | created during execution of the FORMAT UNIT command as described in | | the text. | +=============================================================================+ The defect list format field specifies which defect descriptor is used if the FmtData bit is one (see table 112). The interleave field specifies the interleave that is used when performing the format operation. This allows the logical blocks to be related in a way that facilitates matching the transfer rate between the initiator and the peripheral. An interleave of zero specifies that the target use its default interleave. An interleave of one specifies that consecutive logical blocks be placed in contiguous ascending order. All other values are vendor-specific. A format options valid (FOV) bit of zero indicates that the target shall use its default settings for the DPRY, DCRT, STPF, IP and DSP bits (see below). The initiator shall set these bits to zero. If any of these bits are not zero, the target shall terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST and the additional sense code shall be set to INVALID FIELD IN PARAMETER LIST. A FOV bit of one indicates that the target shall examine the setting of the DPRY, DCRT, STPF, IP and DSP bits. When the FOV bit is one, the DPRY, DCRT, STPF, IP and DSP bits are defined as follows. A disable primary (DPRY) bit of zero indicates that the target shall not use portions of the medium identified as defective in the primary defect Plist for initiator addressable logical blocks. If the target cannot locate the Plist or it cannot determine whether a Plist exists, it shall perform the action specified by the STPF bit. A DPRY bit of one indicates that the target shall not use the Plist to identify defective areas of the medium. The Plist is not deleted. A disable certification (DCRT) bit of zero indicates that the target shall perform a vendor-specific medium certification operation to generate a Clist. A DCRT bit of one indicates that the target shall not perform any vendor-specific medium certification process or format verification operation while executing the FORMAT UNIT command. The stop format (STPF) bit controls the behaviour of the target when one of the following events occurs: a) The target has been requested to use the primary defect list (DPRY is set to zero), or the grown defect list (CmpLst is set to zero) and the target cannot locate the list nor determine whether the list exists. b) The target has been requested to use the primary defect list (DPRY is set to zero) or the grown defect list (CmpLst is set to zero), and the target encounters an error while accessing the defect list. A STPF bit of zero indicates that, if one or both of the above conditions occurs, the target shall continue to execute the FORMAT UNIT command. The target shall return CHECK CONDITION status at the completion of the FORMAT UNIT command. The sense key shall be set to RECOVERED ERROR and the additional sense code shall be set to either DEFECT LIST NOT FOUND if the first condition occurred, or DEFECT LIST ERROR if the second condition occurred. A STPF bit of one indicates that, if one or both of the above conditions occurs, the target shall terminate the FORMAT UNIT command with CHECK CONDITION status. The sense key shall be set to MEDIUM ERROR and the additional sense code shall be set to either DEFECT LIST NOT FOUND if the first condition occurred, or DEFECT LIST ERROR if the second condition occurred. NOTE 104 The use of the FmtData bit, the CmpLst bit, and the defect header allow the initiator to control the source of the defect lists used by the FORMAT UNIT command. Setting the defect list length to zero allows the initiator to control the use of Plist and Clist without having to specify a Dlist. An initialization pattern (IP) bit of one indicates that an initialization pattern descriptor (see 9.2.1.2) is included in the FORMAT UNIT parameter list immediately following the defect list header. An IP bit of zero indicates that an initialization pattern descriptor is not included and that the target shall use its default initialization pattern. A disable saving parameters (DSP) bit of one specifies that the target shall not save the MODE SELECT savable parameters to non-volatile memory during the format operation. A DSP bit of zero specifies that the target shall save all the MODE SELECT savable parameters for all initiators to non-volatile memory during the format operation. Pages that are not reported as savable are not affected by the DSP bit (i.e. if pages 03h & 04h are not returned with the PS bit set they may be saved even if DSP is cleared). An immediate (Immed) bit of zero indicates that status shall be returned after the format operation has completed. An Immed bit value of one indicates that the target shall return status as soon as the command descriptor block has been validated, and the entire defect list has been transferred. The bit designated VS is vendor-specific. The defect list length field in the defect list header specifies the total length in bytes of the defect descriptors that follow and does not include the initialization pattern descriptor or initialization pattern, if any. The length of the defect descriptors varies with the format of the defect list. The three formats for the defect descriptor(s) field in the defect lists are shown in 9.2.1.1. 9.2.1.1 Defect list formats This clause describes the defect list formats used in the FORMAT UNIT, READ DEFECT DATA and translate page of the SEND DIAGNOSTIC and RECEIVE DIAGNOSTIC RESULTS commands. NOTE 105 The selected reporting format accounts for variables that impact the information in the returned data. For example, the specific location of a defect, while constant in angular and radial location on the device, may change in reported location a format operation with different geometry parameters is performed. It is the responsibility of the initiator to use a defect list format appropriate for the intended operation with the current or future geometry parameters. If the target is able to detect that the selected defect list format would provide inconsistent results, the target may return CHECK CONDITION status. Each block format defect descriptor (see table 113) specifies a four-byte defective block address that contains the defect. Table 113 - Defect descriptor - Block format +=====-========-========-========-========-========-========-========-========+ | Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |Byte | | | | | | | | | |=====+=======================================================================| | 0 | (MSB) | |- - -+--- Defective block address ---| | 3 | (LSB) | +=============================================================================+ The defect list length is equal to four times the number of defect descriptors. The defect descriptors should be in ascending order. More than one physical or logical block may be affected by each defect descriptor. A target may return CHECK CONDITION if the defect descriptors are not in ascending order. Each byte from index defect descriptor (see table 114) specifies the location of a defect that is no more than eight bytes long. Table 114 - Defect descriptor - Bytes from index format +=====-========-========-========-========-========-========-========-========+ | Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |Byte | | | | | | | | | |=====+=======================================================================| | 0 | (MSB) | |- - -+--- Cylinder number of defect ---| | 2 | (LSB) | |-----+-----------------------------------------------------------------------| | 3 | Head number of defect | |-----+-----------------------------------------------------------------------| | 4 | (MSB) | |- - -+--- Defect bytes from index ---| | 7 | (LSB) | +=============================================================================+ The defect list length is equal to eight times the number of defect descriptors. Each descriptor is comprised of the cylinder number of defect, the head number of defect, and the defect bytes from index to the defect. The defect descriptors shall be in ascending order. The cylinder number of defect is the most significant part of the address and the defect bytes from index is the least significant part of the address. More than one physical or logical block may be affected by each defect. If the defect bytes from index has a value of FFFFFFFFh, this indicates that the entire track shall be considered defective. Each physical sector defect descriptor (see table 115) specifies the location of a defect that is the length of a sector. Table 115 - Defect descriptor - Physical sector format +=====-========-========-========-========-========-========-========-========+ | Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |Byte | | | | | | | | | |=====+=======================================================================| | 0 | (MSB) | |- - -+--- Cylinder number of defect ---| | 2 | (LSB) | |-----+-----------------------------------------------------------------------| | 3 | Head number of defect | |-----+-----------------------------------------------------------------------| | 4 | (MSB) | |- - -+--- Defective sector number ---| | 7 | (LSB) | +=============================================================================+ The defect list length is equal to eight times the number of defect descriptors. Each descriptor is comprised of a cylinder number of defect, the head number of defect, and the defective sector number. The defect descriptors shall be in ascending order. The cylinder number of defect is the most significant part of the address and the defective sector number is the least significant part of the address. More than one block may be affected by each defect descriptor. A defective sector number of FFFFFFFFh indicates that the entire track shall be considered defective. 9.2.1.2 Initialization pattern option The initialization pattern option specifies that the logical blocks contain the specified initialization pattern. The initialization pattern descriptor (see table 116) is sent to the target as part of the FORMAT UNIT parameter list. Table 116 - Initialization pattern descriptor +=====-========-========-========-========-========-========-========-========+ | Bit| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |Byte | | | | | | | | | |=====+=================+=====================================================| | 0 | IP modifier | Reserved | |-----+-----------------------------------------------------------------------| | 1 | Pattern type | |-----+-----------------------------------------------------------------------| | 2 | (MSB) | |-----+--- Initialization pattern length ---| | 3 | (LSB) | |-----+-----------------------------------------------------------------------| | 4 | | |-----+--- Initialization pattern ---| | n | | +=============================================================================+ NOTE 106 The initialization pattern option is not intended for media analysis or certification. This option may only initialize the initiator accessible area of the media to the specified pattern and may not write to any initiator inaccessible areas of the disk. The IP modifier field specifies the type and location of a header that modifies the initialization pattern (see table 117). Table 117 - Initialization pattern modifier +=============-===============================================================+ | IP modifier | Description | |-------------+---------------------------------------------------------------| | 00b | No header. The target shall not modify the initialization | | | pattern. | | 01b | The target shall overwrite the initialization pattern to | | | write the logical block address in the first four bytes of | | | the logical block. The logical block address shall be | | | written with the most significant byte first. | | 10b | The target shall overwrite the initialization pattern to | | | write the logical block address in the first four bytes of | | | each physical block contained within the logical block. The| | | The lowest numbered logical block or part thereof that | | | occurs within the physical block is used. The logical block| | | address shall be written with the most significant byte | | | first. | | 11b | Reserved. | +=============================================================================+ The initialization pattern type field (see table 118) indicates the type of pattern the target shall use to initialize each logical block within the initiator accessible portion of the medium. All bytes within a logical block shall be written with the initialization pattern. The initialization pattern is modified by the IP modifier field as described in table 117. Table 118 - Initialization pattern type +==============-==================================================+ |Initialization| Description | | pattern type | | |--------------+--------------------------------------------------| | 00h | Use default pattern. (note 1) | | 01h | Repeat the initialization pattern as | | | required to fill the logical block. (note 2) | | 02h - 7Fh | Reserved | | 80h - FFh | Vendor-specific | |-----------------------------------------------------------------| | Notes | | 1) If the initialization pattern length is not zero the target| | shall terminate the command with CHECK CONDITION status. The | | sense key shall be set to ILLEGAL REQUEST and the additional | | sense code to INVALID FIELD IN PARAMETER LIST. | | 2) If the initialization pattern length is zero the target | | shall terminate the command with CHECK CONDITION status. The | | sense key shall be set to ILLEGAL REQUEST and the additional | | sense code to INVALID FIELD IN PARAMETER LIST. | +=================================================================+ The initialization pattern length field indicates the number of bytes contained in the initialization pattern. If the length exceeds the current logical block size the target shall terminate the command with CHECK CONDITION status. The sense key shall be set to ILLEGAL REQUEST and the additional sense code shall be set to INVALID FIELD IN PARAMETER LIST. The pattern is modified by the IP modifier field. _____________________________________________________________________________ The THOR-Software Licence (v2, 24th June 1998) This License applies to the computer programs known as "SCSIFormat". The "Program", below, refers to such program. The "Archive" refers to the package of distribution, as prepared by the author of the Program, Thomas Richter. Each licensee is addressed as "you". The Program and the data in the archive are freely distributable under the restrictions stated below, but are also Copyright (c) Thomas Richter. Distribution of the Program, the Archive and the data in the Archive by a commercial organization without written permission from the author to any third party is prohibited if any payment is made in connection with such distribution, whether directly (as in payment for a copy of the Program) or indirectly (as in payment for some service related to the Program, or payment for some product or service that includes a copy of the Program "without charge"; these are only examples, and not an exhaustive enumeration of prohibited activities). However, the following methods of distribution involving payment shall not in and of themselves be a violation of this restriction: (i) Posting the Program on a public access information storage and retrieval service for which a fee is received for retrieving information (such as an on-line service), provided that the fee is not content-dependent (i.e., the fee would be the same for retrieving the same volume of information consisting of random data). (ii) Distributing the Program on a CD-ROM, provided that a) the Archive is reproduced entirely and verbatim on such CD-ROM, including especially this licence agreement; b) the CD-ROM is made available to the public for a nominal fee only, c) a copy of the CD is made available to the author for free except for shipment costs, and d) provided further that all information on such CD-ROM is redistributable for non-commercial purposes without charge. Redistribution of a modified version of the Archive, the Program or the contents of the Archive is prohibited in any way, by any organization, regardless whether commercial or non-commercial. Everything must be kept together, in original and unmodified form. Limitations. THE PROGRAM IS PROVIDED TO YOU "AS IS", WITHOUT WARRANTY. THERE IS NO WARRANTY FOR THE PROGRAM, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. IF YOU DO NOT ACCEPT THIS LICENCE, YOU MUST DELETE THE PROGRAM, THE ARCHIVE AND ALL DATA OF THIS ARCHIVE FROM YOUR STORAGE SYSTEM. YOU ACCEPT THIS LICENCE BY USING OR REDISTRIBUTING THE PROGRAM. Thomas Richter _____________________________________________________________________________ Thomas, April 1999