[comp.periphs.scsi] description of SCSI hard disk control pages

src@scuzzy.uucp (Heiko Blume) (07/15/90)

I've previously asked what all those parameters in the SCSI hard disk
drive control pages mean exactly, but didn't get any answers.

I now have gathered some documentation about these parameters, and i thought
many people might be interested that don't have it. With this knowledge
it is possible to increase throughput with SCSI hard disks and in general
make having SCSI devices (more) worthwile. On the other hand it is possible
to LOOSE all data on a drive if you're not careful.

You can change these parameters by issueing the SCSI Mode Select command
to the SCSI bus or, much more convenient, with the utilities that Roy Neese from
Adaptec, inc. wrote if you have a machine that can run MS/PC-DOS and has the
Adaptec AHA-154x scsi host adapter installed. If you don't have a DOS machine
you might consider taking your hard disk to someone that has a DOS machine with
that host adapter and perform the parameter changes there.

To use the following information you might have to get hold of the ANSI
proposed draft standard for SCSI X3T9/82-2 Revision 7b or later to roll your own
program for issueing mode select commands to your SCSI bus. However this
might not help you too much if you don't know how to talk to your SCSI host
adapter so you can really issue SCSI commands to the bus. If you have
the beforementioned utilities (they are free!!) you can ignore all the
stuff talking about `bit 2 of byte 3' etc.

If someone doesn't have the utilities or the SCSI standard i'd be happy 
to supply these (i have the SCSI standard in WordStar files), although
this might only be feasible if you're in europe, 'cause i live in germany.
I pulled this especially from the Quantum ProDrive series manual, but
nearly every parameter should be available in most SCSI hard disks.
For instance the first four control pages are similar in the drives
from Seagate (i.e. ST296N) and from CD/Imprimis/Seagate (i.e. WREN V).
If a parameter is Quantum specific this will be noted explicitly.
Also note that drives that use Zone Bit Recording won't allow you to
change the number of sectors per track because those drives tracks use
different numbers of sectors per track depending on the physical length
of the tracks to squeeze more capacity out of the same surface.

Numbers like 0x17 are hex (base 16).

Now for the real info!

First the general structure of the mode select command:

========================================================================
   Bit|   7   |    6   |   5   |   4   |   3   |   2   |   1   |   0   |
Byte  |       |        |       |       |       |       |       |       |
========================================================================
0     |                         Opcode = 0x15                          |
------------------------------------------------------------------------
1     |   Logical Unit Number  |        Reserved = 0           |  SP   |
------------------------------------------------------------------------
2     |                          Reserved = 0                          |
------------------------------------------------------------------------
3     |                          Reserved = 0                          |
------------------------------------------------------------------------
4     |                 Parameter List Lenght (Bytes)                  |
------------------------------------------------------------------------
5     |   VU = 0       |        Reserved = 0           |   F   |    L  |
------------------------------------------------------------------------

Save Parameters (SP) Bit: if the save paramters bit is set to one, only the
saveable pages of the current mode table will be copied to the save mode table.

The parameter list lenght specifies the length in bytes of the mode select
parameter list that shall be transferred during the data out phase (see below).

Mode select header:
(the mode select parameter list contains a four byte header followed by zero 
or more one block descriptors followed by zero or more 'pages').
========================================================================
   Bit|   7   |    6   |   5   |   4   |   3   |   2   |   1   |   0   |
Byte  |       |        |       |       |       |       |       |       |
========================================================================
0     |                          Reserved = 0                          |
------------------------------------------------------------------------
1     |                        Medium Type = 0                         |
------------------------------------------------------------------------
2     |                          Reserved = 0                          |
------------------------------------------------------------------------
3     |                 Block Descriptor Length (Bytes)                |
========================================================================

Block Descriptor:
========================================================================
0     |                     Density Code = 0                           |
------------------------------------------------------------------------
1     | (MSB)              Number of Blocks = 0                        |
------------------------------------------------------------------------
2     |                    Number of Blocks = 0                        |
------------------------------------------------------------------------
3     | (LSB)              Number of Blocks = 0                        |
------------------------------------------------------------------------
4     |                          Reserved = 0                          |
------------------------------------------------------------------------
5     | (MSB)               Block Length                               |
------------------------------------------------------------------------
6     |                     Block Length                               |
------------------------------------------------------------------------
7     | (LSB)               Block Length                               |
========================================================================

Page Descriptor(s):
========================================================================
0     | Reserved = 0   |     Page Code (see below)                     |
------------------------------------------------------------------------
1     |                      Page Length                               |
------------------------------------------------------------------------
2     |                 Refer to page defintion below                  |
to n  |                                                                |
========================================================================

Medium type: The medium type is always set to zero which stands for the
             the currently mounted medium, which is correct because
             hard disks are non-removable.

Block Descriptor Length: The block descriptor length specifies the length
             in bytes of all the block descriptors. It is equal to the number
             of block descriptors times eight and does not include the pages
             if any.
             The block descriptor specifies the logical block length for the
             drive. it contains a density code, a number of blocks, and a 
             block length.

Density Code: Always zero for non-removable hard disks.

Number of Blocks: Always zero to indicate that all of the remaining logical
             blocks of the medium have the characteristics specified by the
             block descriptor.

Block Length: Specifies the length in bytes of each logical block described
             by the block descriptor. Common values are 512, 1024, 2048.

Page Code:   Pages may optionally be included (immediately following the block
			 descriptor, if any) in any order. To avoid having to specify all
             mode parameters each time a mode select comand is issued, the
             mode parameters are divided into pages. A page is the minimum unit
             that can be specified in a mode select. Each time a page is
             referenced, ALL the parameters must be specified.


			Now a table of the available control pages:
			===========================================
			
			Page		Description
			----------------------------------------------------------
			0x01		Read/Write Error Recovery Parameters
			0x02		Disconnect/Reconnect Control Parameters
			0x03		Direct Access Device Format Paramters
			0x04		Rigid Disc Drive Geometry Parameters
			0x37		Quantum Unique Control Parameters
			0x39		Quantum Unique Drive Control Parameters
			
			Note: The last table seems to be really quantum specific, although
			      the parameters might be appropriate for any disk. Most of the 
			      paramters in page 0x37 are also found in other drives like
			      the big CDC/Imprimis/Seagate drives. However, which parameters
			      are supported by your drive depends on the manufacturer. If
			      you use the adaptec utilities you will discover, that you 
				  simply can't change them, or that the device doesn't have
				  that page.

Page Length: The page length indicates the number of bytes of the page that will
			follow, starting with the first byte of flags or values and con-
			tinuing consecutively. The page length shall be set to the exact
			same value returned by the drive in the Mode Sense Page Length byte.
			otherwise a Check Condition status with a sense key of Illegal
			Request will result.



Error Recovery Parameters
-------------------------

========================================================================
   Bit|   7   |    6   |   5   |   4   |   3   |   2   |   1   |   0   |
Byte  |       |        |       |       |       |       |       |       |
========================================================================
0     | Reserved = 0   |        Page Code = 0x1                        |
------------------------------------------------------------------------
1     |                       Page Length = 0x6                        |
------------------------------------------------------------------------
2     | AWRE  | ARRE   |  TB   |  RC   |  EEC  |  PER  |  DTE  |  DCR  |
------------------------------------------------------------------------
3     |                        Retry Count                             |
------------------------------------------------------------------------
4     |                     Correction Span = 0                        |
------------------------------------------------------------------------
5     |                    Head Offset Count = 0                       |
------------------------------------------------------------------------
6     |                  Data Strobe Offset Count = 0                  |
------------------------------------------------------------------------
7     |                  Revocery Time Limit = 0                       |
========================================================================

- Disable Correction (DCR) = bit 0 of byte 2
  A disable correction bit set to one indicates that the data shall be
  transferred without correction, whether or not it is actually possible to
  correct the data. A DCR bit of zero indicates, that the data shall be
  corrected if possible. Uncorrectable data is transferred with no attempt to
  apply correction. if RC (bit 4 of byte 2) is set to one this bit is ignored.

- Disable Transfer On Error (DTE) = bit 1 of byte 2
  A disable transfer on error bit set to one indicates that the drive shall
  create the 'Check Condition' status immediately upon detection of an error,
  if PER (bit 2 of byte 2) is set to one. The data transfer to the initiator
  shall be terminated. The block in error may or may not be transferred to the
  initiator dependant upon the setting of the TB bit. A DTE bit set to zero
  enables data transfer for any data which can be recovered within the limits of
  the error recovery flags. Any errors that would be posted are not posted until
  the transfer length is exhausted. If PER is zero, or RC is one, this bit is
  ignored.

- Post Error (PER) = bit 2 of byte 2
  A post error bit set to zero indiactes that the drive shall not create the
  'Check Condition' status for errors recovered within the limits established by
  the other error recovery flags. Recovery procedures exceeding those limits
  shall be posted accordingly. The transfer may terminate prior to exhausting
  the transfer length depending on the error and state of the other flags. A
  PER bit set to one shall enable the reporting of the 'Check Condition' status
  for detected errors, with the appropriate sense key.

- Enable Early Error Correction (EEC) = bit 3 of byte 2
  An EEC bit set to one indicates that the drive will use its ECC algorithm
  immediately upon detection of a data error. The drive will not perform read
  retries before applying correction unless the error is determined to be
  uncorrectable. An EEC bit set to zero indicates that the drive will use its
  normal recovery procedures when an error occurs. If the RC bit is one this bit
  is ignored.

- Read Continous (RC) = bit 4 of byte 1
  A RC bit set to one requests the drive to transfer the requested length
  without adding delays which would ensure data integrity (i.e. by error
  recovery schemes). This implies that the drive shall send data which may be
  erroneous in order to maintain a continous flow of data and avoid delays, and
  that ignored errors will create the 'Check Condition' status.  An RC bit set
  to zero indicates that time consuming operations for error recovery are
  acceptable during the data transfer.

- Transfer Block (TB) = bit 5 of byte 2
  A transfer block bit set to one when DTEis set to one, indicates that the
  failing block data (recovered or unrecoverable) shall be transferred to the
  initiator. A TB bit of zero , when DTE is set to one, indicates that the
  failing block shall not be transferred to the initiator. If DTE is zero, or
  RC is one, this bit is ignored.

- Automatic Read Reallocation Enabled (ARRE) = bit 6 of byte 2
  An automatic read reallocation enabled bit set to one indicates that the
  target shall enable automatic reallocation of bad blocks. The execution of the
  automatic reallocation is similar to the function of the 'reassign blocks'
  command, but is initiated by the drive when a hard error is encountered. An
  ARRE bit set to zero indicates that the target shall not perform automatic
  reallocation of bad blocks. If RC is one, this bit is ignored.

- Automatic Write Reallocation Enabled (AWRE)
  Same as ARRE, but for write errors.

- Retry Count
  Retry count is the number of times the drive shall attempt to recover from
  data errors by rereading before applying correction. This parameter is ignored
  if both the DTE and PER bits are set to one, or if the RC bit is one, or if
  the EEC bit is one.

- Correction Span
- Head offset count
- Data strobe offset
- recovery time limit
  I still don't know much about these parameters, if you know anything about 
  them, please let me know !!
  

Disconnect/Reconnect Control Parameters
---------------------------------------

========================================================================
   Bit|   7   |    6   |   5   |   4   |   3   |   2   |   1   |   0   |
Byte  |       |        |       |       |       |       |       |       |
========================================================================
0     | Reserved = 0   |        Page Code = 0x2                        |
------------------------------------------------------------------------
1     |                       Page Length = 0xa                        |
------------------------------------------------------------------------
2     |                    Buffer Full Ratio                           |
------------------------------------------------------------------------
3     |                    Buffer Empty Ratio                          |
------------------------------------------------------------------------
4     |                Bus inactivity Limit (MSB) = 0                  |
------------------------------------------------------------------------
5     |                Bus inactivity Limit (LSB) = 0                  |
------------------------------------------------------------------------
6     |                Disconnect Time Limit (MSB) = 0                 |
------------------------------------------------------------------------
7     |                Disconnect Time Limit (LSB) = 0                 |
------------------------------------------------------------------------
8     |                  Connect Time Limit (MSB) = 0                  |
------------------------------------------------------------------------
9     |                  Connect Time Limit (LSB) = 0                  |
------------------------------------------------------------------------
10    |                         Reserved                               |
------------------------------------------------------------------------
11    |                         Reserved                               |
------------------------------------------------------------------------

- Buffer Full Ratio
  This indicates to the drive , for commands requiring data transfers to the
  initiator (READ) how full the buffer shall be prior to reconnecting (unless
  the buffer contains all of the required data). The drive disconnects on a 
  Read when there is no data in the buffer. The value represents the percentage
  of the buffer that will fill prior to reconnection; i.e. 255 (0xff) represents
  100% full, 128 (0x80) represents 50% full etc. Each bit is equal to 1/256th
  of the maximum buffer size. The default value is 0 which is interpreted to
  mean that at least 512 bytes must be transferred to the buffer before re-
  connection.

- Buffer Empty Ratio
  This indicates to the drive, for commands requiring data transfer from the
  initiator, how empty the buffer shall be prior to reconnecting to fetch more
  data (unless the buffer can contain all of the required data). The value
  represents the percentage of the buffer that will empty; i.e. 255 (0xff)
  represents 100% empty, 128 (0x80) represents 50% etc. Each bit represents
  1/256th of the maximum buffer size. The deafult value is 0 which is inter-
  preted to mean that there is space in the buffer for at least 512 bytes
  before reconnection.

  Both the buffer full and empty ratio are rounded (down or up respectivly) by
  the drive to the nearest multiple of 512 bytes for commands requiring logical
  block transfer.


Direct Access Device Format Parameters
--------------------------------------

========================================================================
   Bit|   7   |    6   |   5   |   4   |   3   |   2   |   1   |   0   |
Byte  |       |        |       |       |       |       |       |       |
========================================================================
0     | Reserved = 0   |        Page Code = 0x3                        |
------------------------------------------------------------------------
1     |                       Page Length = 0x16                       |
------------------------------------------------------------------------
                     Handling of defect fields
========================================================================
2     | (MSB)                Tracks Per Zone (0)                       |
------------------------------------------------------------------------
3     | (LSB)                Tracks Per Zone (6)                       |
------------------------------------------------------------------------
4     | (MSB)           Alternate Sectors per Zone (0)                 |
------------------------------------------------------------------------
5     | (LSB)           Alternate Sectors per Zone (1)                 |
------------------------------------------------------------------------
6     | (MSB)            Alternate Tracks per Zone (0)                 |
------------------------------------------------------------------------
7     | (LSB)            Alternate Tracks per Zone (0)                 |
------------------------------------------------------------------------
8     | (MSB)            Alternate Tracks per Volume (0)               |
------------------------------------------------------------------------
9     | (LSB)            Alternate Tracks per Volume (0)               |
========================================================================
                          Track format field
========================================================================
10    | (MSB)             Selector per Tracks (0)                      |
------------------------------------------------------------------------
19    | (LSB)             Selector per Tracks (0)                      |
========================================================================
                         Sector Format Fields
========================================================================
12    | (MSB)          Data Bytes Per Physical Sector (2)              |
------------------------------------------------------------------------
13    | (LSB)          Data Bytes Per Physical Sector (0)              |
------------------------------------------------------------------------
14    | (MSB)                 Interleave (0)                           |
------------------------------------------------------------------------
15    | (LSB)                 Interleave (1)                           |
------------------------------------------------------------------------
16    | (MSB)                Track Skew Factor (0)                     |
------------------------------------------------------------------------
17    | (LSB)                Track Skew Factor (5)                     |
------------------------------------------------------------------------
18    | (MSB)               Cylinder Skew Factor (0)                   |
------------------------------------------------------------------------
19    | (LSB)               Cylinder Skew Factor (0xf)                 |
------------------------------------------------------------------------
                       Drive Type Field
========================================================================
20    | SSEC  | HSEC-0 | RMB=0 | SURF=0| INS=0 |   Reserved=0          |
------------------------------------------------------------------------
21    |                     Reserved=0                                 |
------------------------------------------------------------------------
22    |                     Reserved=0                                 |
------------------------------------------------------------------------
23    |                     Reserved=0                                 |
========================================================================

- Tracks per Zone
  The tracks per zone field indicates the number of tracks per defect zone
  on the drive.

- Alternate Sectors per Zone
  This field indicates the number of sectors per zone that the drive shall
  from the initiator addressable blocks during the 'format unit' command.
  These sectors will be available as replacements sectors for defective
  sectors.

- Alternate Tracks per Zone
  This field indicates the number of tracks the drive shall deallocate from the
  initiator addressable blocks during the 'format unit' command. These tracks
  will be available as replacements tracks for defective tracks.

- Alternate Tracks per Volume
  This field indicates the number of tracks that the drive shall deallocate from
  initiator addressable blocks during the 'format unit' command. These tracks
  will be available as replacements tracks for defective tracks.

Track Format Field
------------------
- Sectors per Tracks
  This field indicates the numbers of physical sectors that the drive allocates
  per disk track.

Sector Format Field
-------------------
- Data bytes per physical sector
  This field indicates the number of data bytes that the drive shall allocate 
  per physical sector. This value may be different from the logical block size
  in the block descriptor section of the mode select data. This implies that the
  drive set an equal number of tracks per sector accordingly.

- Interleave
  This field indicates the sector interleave to use on each track. However most
  (all?) SCSI disks have an interleave of 1. You should NOTE that Micropolis 
  drives MAY have a factory (or whatever) interleave of 2! You can order your
  vendor to have these drives formatted for interleave 1. I'm not sure if you
  can do this yourself, i.e. if the drive allows you to set the interleave.
  In any case you should find out at what interleave your drive is formatted
  with the SCSI Mode Sense command.

- Track Skew Factor
  This field indicates the number of physical sectors between the last logical
  block of one track and the first logical block on the next sequential track 
  of the the same cylinder.

- Cylinder Skew Factor
  This field indicates the number of physical sectors between between the last
  logical block of one cylinder and the first logical block of the next se-
  quential cylinder.

- Soft Sector (SSEC) = bit 2 of byte 20
  A SSEC set to one indicates that the drive shall use soft sector formatting.

- Hard Sector = bit 6 of byte 20
  This bit set to one indicates that the drive shall use hard sector formatting.

- Removable (RMB) - bit 5 of byte 20
  A RMB bit set to one indicates that the logical unit is removable. A RMB bit
  set to 0 indicates that the logical unit is removable.  This should be zero
  for hard disks.

- Surface (SURF) = bit 4 of byte 20
  This bit indicates how the drive shall map the logical block addressing into
  physical block addressing. A SURF bit set to one indicates that the drive
  shall allocate progressive addresses to all sectors on a surface prior to
  allocating sector addresses to the next surface. A SURF bit set to 0 indicates
  that the drive shall allocate progressive addresses to all sectors within a
  cylinder prior to allocating sector addresses to the next cylinder.

- Inhibit Save (INS) = bit 2 of byte 20
  This bit set to one indicates that the drive shall inhibit the saving of any
  parameters during the successful completion of the next 'Format Unit' command.
  The INS bit set to zero indicates that the parameters of the page defined by
  page code 4 shall be saved by the drive as a read only page.


Now for some special control parameters! these are mostly for the quantum drives
but the CDC/Imprimis/Seagate Drives implement some of the following. especially
the 'cache enable' is *VERY* interesting! If you use the utilities from Roy
Neese you will have no trouble setting these important parameters. If you can't
employ these utilities you might have to get hold of the programmers reference
manual (or whatever its called) for you drive.

Unique Control Parameters
-------------------------

========================================================================
   Bit|   7   |    6   |   5   |   4   |   3   |   2   |   1   |   0   |
Byte  |       |        |       |       |       |       |       |       |
========================================================================
0     |                         Page Code = 0x37                       |
------------------------------------------------------------------------
1     |                       Page Length = 0x0e                       |
------------------------------------------------------------------------
2     |  Reserved=0    |  PSM  |  SSM  |  WIE  |   PO  |  PE   |  CE   |
------------------------------------------------------------------------
3     |                      Number of cache segments                  |
------------------------------------------------------------------------
4     |                      Minimum Prefetch                          |
------------------------------------------------------------------------
4     |                      Maximum Prefetch                          |
------------------------------------------------------------------------
5     |                      Reserved=0                                |
------------------------------------------------------------------------
.
.							all Reserved = 0
.
------------------------------------------------------------------------
15    |                      Reserved=0                                |
------------------------------------------------------------------------

- Preserved Synchronous Mode (PSM) = bit 5 of byte 2
  A PSM bit set to one indicates that the drive will not clear the table of
  synchronous mode parameters for all initiators when the drive is reset. A PSM
  bit of zero will cause all these parameters to be cleared when the drive is
  reset.

- Send Synchronous Message = bit 4 of byte 2
  If this bit is set to one indicates that the drive will initiate sending
  the Extended Message (01) Synchronous Data Transfer Request to the initiator.
  A SSM bit of zero indicates that the drive that the initiator must initiate
  sending the Synchronous Data Transfer Request Message.

- Write Index Enable = bit 3 of byte 2
  All data from Writes create a cache segment stored in the cache and indexed
  by the cache table. A WIE bit set to zero indicates that the drive will
  overwrite this segment in the cache on the next 'Read' or 'Write'. a WIE
  bit set to one indicates that the drive will treat this segment as if it had 
  been generated from 'Read's. A WIE bit set to zero preserves more data in the
  cache from 'Read's increasing the likelihood that the requested data lies in
  cache (the magnitude of this increase depends on the size and frequency of
  write requests).

- Prefetch Only (PO) = bit 2 of byte 2
  A PO bit set to one indicates that the drive will only keep prefetch data in
  the cache. The originally requested data will be overwritten with prefetched
  data. A PO bit set to zero indicates that both original read data and
  prefetched data will be in the segment.

- Prefetch Enable (PE) = bit 1 of byte 2
  A PE bit set to one indicates that the drive will perform prefetching. A PE
  bit set to zero indicates that no prefetching will occur. The CE bit must be
  set to one to enable use of the PE bit.

- Cache Enable (CE) = bit 0 of byte 2
  A CE bit set to one indicates that the drive will activate caching on all
  'Read's. A CE bit set to 0 indicates that the drive will use the cache
  RAM as a transfer buffer only.

- Number of Cache Segments = Byte 3
  Indicates to the drive the number of segments to index in the cache i.e. the
  number of entries in the cache tables. Valid entries are 1, 2, 4, 8, 16.

- Minimum Prefetch = Byte 4
  Minimum prefetch indicates to the drive the minimum number of logical blocks
  to prefetch on a cache miss for a Read command. The valid range is 0 to 116.

- Maximum Prefetch =  Byte 5
  Indicates to the drive the maximum number of logical blocks to prefetch on a
  cache miss for a Read command. The valid range is 0 to 116.



========================================================================
   Bit|   7   |    6   |   5   |   4   |   3   |   2   |   1   |   0   |
Byte  |       |        |       |       |       |       |       |       |
========================================================================
0     |                    Page Code = 0x39                            |
------------------------------------------------------------------------
1     |                    Page Length = 0x6                           |
------------------------------------------------------------------------
2     |  DIO  |  DII   |  FDB  | RUEE  | FDPE  |  R=0  |  DUA  |  DRT  |
------------------------------------------------------------------------
3     |  DDIS | DELDIS | Reserved = 0  | SSID  |       SCSIADR         |
------------------------------------------------------------------------
4     |                      Reserved=0                                |
------------------------------------------------------------------------
5     |                      Reserved=0                                |
------------------------------------------------------------------------
6     |                      Reserved=0                                |
------------------------------------------------------------------------
7     |                      Reserved=0                                |
------------------------------------------------------------------------

- Disable Identify Out (DIO) = bit 7 of byte 2
  A DIO bit set to 1 indicated that the drive will not require an IDENTIFY 
  message from the initiator in order to be able to disconnect and reconnect. A
  DIO bit set to 0 indicates that the drive will require the initiator to send 
  the IDENTIFY message in order to be able to disconnect.

- Disable Identify In (DII) = bit 6 of byte 2
  This bit set to 1 indicates that the drive will not send an IDENTIFY message
  after reconnecting to an initiator. Set to 0 this bit indicates that the drive
  will send the IDENTIFY message after reconnecting.

- Fast Deassertion of Busy (FDB) = bit 5 of byte 2
  this is for comaptibility with quantums q200 drives.

- Reallocate Uncorrectable Error Enabled (RUEE) = bit 4 of byte 2
  This bit set to one indicates that if the ARRE bit in Page 1 od the Error
  Recovery Parameters is set, the drive will automatically reallocate uncorrec-
  table hard errors. The uncorrectable (bad) data is written to a new block and
  a new ECC (one that is correct for the BAD data) is appended. This permits the
  new block to be read without errors. If this bit is set to 0 the drive will
  not attempt automatic reallocation.

- Fill Data Pattern Enable (FDPE) = bit 3 of byte 2
  Set to one this causes the drive to write the data pattern in byte 2 of the
  Format Unit command into every user-accessible sector of the drive, when the
  Format Unit command is issued. If set to 0 the data pattern will be ignored.

- Disable Unit Attention (DUA) = bit 1 of byte 2
  Set to one this bit indicates that the drive will not issue a Check Condition
  status with the Unit Attention sense key on the first command after a reset.
  The first command issued after a reset will be executed as usual. Set to zero
  this indicates that the unit attention condition will exist after the drive
  has been powered-on or reset (by a Bus Device Reset or a 'hard' reset con-
  dition).

- Disable Reselection Timeout (DRT) = bit 0 of byte 2
  Set to 1 this indicates that the drive will not timeout during a reselection
  request. If set to 0 the drive will clear the bus if there is no BSY response
  from the initiator after waiting a selection time out period (250 ms).

- Disable Connections (DDIS)= bit 7 of byte 3
  set to 1 this causes the suppression of disconnection and reconnection during
  a data transfer (r/w). The initial disconnection due to the implied Seek of
  a Read command is not prevented, but no other disconnections will occur. The
  write command will also allow the initial disconnection due to the seek and
  prevent any further disconnects; however the Write command starts the data
  transfer from the host prior to initiating the seek so that the data transfer
  is already in progress at the time of the seek. This means that the drive may
  disconnect once at the start of the write command (after the data transfer has
  started), but will not disconnect again. Set to 0 this bit causes no action to
  occur.

- Delay of Disconnection (DELIDS) = bit 6 of byte 3
  this is for comaptibility with quantums q200 drives.

- Software Selectable ID (SSID) = bit 3 of byte 3
  Set to 0 this indiactes that the drive SCSI ID will be determined by the
  jumpers on the drives PCB at all times. Set to 1 this indicates that the drive
  SCSI ID will be determined by the value of the SCSISDR bits (bits 0 to 2 of
  byte 3), and the jumpers will be ignored. When this bit is set to one, the ID
  will not be altered until the next Reset or power up of the drive. If upon
  initial power-up the SSID bit is set (was previously set and saved to the
  disk), then the SCSIADR bits will determine the ID. Otherwise the ID will be
  that determined by the jumpers.

i hope this helps some people!
-- 
Heiko Blume c/o Diakite   blume@scuzzy.mbx.sub.org    FAX   (+49 30) 882 50 65
Kottbusser Damm 28        blume@netmbx.UUCP           VOICE (+49 30) 691 88 93
D-1000 Berlin 61          blume@netmbx.de             TELEX 184174 intro d
                    "Have you bugged your source today?"