WORKING                                                                 X3T9.2
DRAFT                                                             Project 375D

                                                                  Revision 10L
                                                                      7-SEP-93
     NOTE:  This file is provided to facilitate
     review and comments on the draft SCSI-2
     standard.  It is NOT intended as a substitute
     for obtaining a paper copy of this document.
     The figures and formatting information are
     omitted.  Please contact Global Engineering
     Documents at (800) 854-7179 or (303) 792-2181
     to obtain a paper copy.



Information technology -
Small Computer System Interface - 2



Secretariat:
Computer & Business Equipment Manufacturers Association



This is a draft proposed American National Standard of Accredited
Standards Committee X3.  As such this is not a completed standard.  The
X3T9 Technical Committee may modify this document as a result of comments
received during the public review process and the approval of this
document as a standard.  Use of the information contained herein is at
your own risk.

Permission is granted to members of X3 and ISO, their technical
committees, and their associated task groups to reproduce this document
for the purposes of X3 and ISO standardization activities without further
permission, provided this notice is included.  All other rights are
reserved.  Any commercial or for-profit use is strictly prohibited.











ASC X3T9.2 Technical Editor:                  Lawrence J. Lamers
                                              Maxtor Corporation
                                              MS A697
                                              150 River Oaks Parkway
                                              San Jose, CA  95134-1983
                                              USA
                                              Telephone: 408-432-3889
                                              Facsimile: 408-432-3833
                                              Email: larry_lamers@maxtor.com



                                              Reference number
                                              ISO/IEC 9316-1 : 199x
                                              ANSI X3.131 - 199x
                                              Printed November, 7, 1993 3:39pm

POINTS OF CONTACT:

X3T9.2 Chair                                 X3T9.2 Vice-Chair
John B. Lohmeyer                             I. Dal Allan
NCR Corporation                              ENDL                        
1635 Aeroplaza Drive                         14426 Black Walnut Court
Colo Spgs, CO 80916                          Saratoga, CA  95070

Tel:   (719) 573-3362                        Tel:         (408) 867-6630
Fax:   (719) 597-8225                        Fax:         (408) 867-2115
Email: john.lohmeyer@ftcollinsco.ncr.com     Email:        2501752@mcimail.com

X3 Secretariat
Lynn Barra
Administrator Standards Processing
X3 Secretariat                               Telephone:   202-626-5738
1250 Eye Street, NW   Suite 200              Facsimile:   202-638-4922
Washington, DC   20005

SCSI Reflector
Internet address for subscription to the SCSI reflector:
scsiadm@wichitaks.ncr.com
Internet address for distribution via SCSI reflector:
scsi@wichitaks.ncr.com

SCSI Bulletin Board
719-574-0424

Document Distribution
Global Engineering                            Telephone:  303-792-2181 or 
15 Inverness Way East                                     800-854-7179
Englewood, CO   80112-5704                    Facsimile:  303-792-2192


                                ABSTRACT

The SCSI protocol is designed to provide an efficient peer-to-peer I/O bus
with up to 16 devices, including one or more hosts.  Data may be
transferred asynchronously at rates that only depend on device
implementation and cable length.  Synchronous data transfers are supported
at rates up to 10 mega-transfers per second.  With the 32-bit wide data
transfer option, data rates of up to 40 megabytes per second are possible.

SCSI-2 includes command sets for magnetic and optical disks, tapes,
printers, processors, CD-ROMs, scanners, medium changers, and
communications devices.


                             PATENT STATEMENT

The developers of this standard have requested that holder's of patents
that may be required for the  implementation of the standard, disclose
such patents to the publisher.  However neither the developers nor the
publisher have undertaken a patent search in order to identify which if
any patents may apply to this standard.

No position is taken with respect to the validity of any claim or any
patent rights that may have been disclosed.  Details of submitted
statements may be obtained from the publisher concerning any statement of
patents and willingness to grant a license under these rights on
reasonable and nondiscriminatory terms and conditions to applicants
desiring to obtain such a license.


Document Status

The following are the changes from revision 10k to 10l.

1.     Page 3, clause 3, move the sentence beginning "For the purposes" after
       the title to subclause 3.1.

2.     Pages 3 to 5, clause 3, definitions should not begin with phrases such
       as "This term refers to" etc.

3.     Page 8, clause 5, remove the full stop after the clause number.

4.     Page 8, subclause 5.2.1, line 1, replace "meters" with "m".

5.     In the Introduction, item c) under the list of new low-level
       requirements should read:  "The arbitration delay was increased from
       2.2 to 2.4 us"

6.     In 4.1 Overview, the last line of the fifth paragraph should read:
       "are contending and can be completed in less than 10 us."

7.     In 8.3.3.2 Disconnect-reconnect page, there are three occurrences of
       100 ms being substituted for 100 microsecond.  These should all be
       changed to 100 us.  The corrected lines should read: "The bus
       inactivity limit field indicates the maximum time in 100 us ...". 
       "The disconnect time limit field indicates the minimum time in 100 us
       ...".  "The connect time limit field indicates the maximum time in 100
       us ..."

8.     In 9.3.3.2 Flexible disk page, the paragraph describing the drive step
       rate should begin: "The drive step rate field specifies the step rate
       in units of 100 us."

9.     In 12.2.2, paragraph 7, the reference is to Table 65, not 8.2.14.1.

10.       The Foreword and Introduction clauses were modified to correctly
          reflect the ANSI/ISO style.

11.       Updated the Vendor ID list in Annex E.

ERRATA

The following errors have been reported.  Due to the constraints of the
standards process these errors cannot be corrected within the body of the
document.  The X3T9.2 committee plans to issue errata to correct these
items.

1.     An error exists in Table 161.  The Head load bit pattern should be
       P011 not P000.

Contents
                                                                         Page
Foreword. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxix

Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxx

1 Scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   1

2 Normative references. . . . . . . . . . . . . . . . . . . . . . . . . .   2

3 Definitions, symbols and abbreviations. . . . . . . . . . . . . . . . .   3
   3.1 Definitions. . . . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.2 Symbols and abbreviations. . . . . . . . . . . . . . . . . . . . .   5

4 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   6
   4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . .   6
   4.2 Conventions. . . . . . . . . . . . . . . . . . . . . . . . . . . .   7

5 Physical characteristics. . . . . . . . . . . . . . . . . . . . . . . .   9
   5.1 Physical description . . . . . . . . . . . . . . . . . . . . . . .   9
   5.2 Cable requirements   . . . . . . . . . . . . . . . . . . . . . . .   9
   5.2.1 Single-ended cable . . . . . . . . . . . . . . . . . . . . . . .   9
   5.2.2 Differential cable . . . . . . . . . . . . . . . . . . . . . . .  10
   5.2.3 Cable requirements for fast synchronous data transfer. . . . . .  10
   5.3 Connector requirements . . . . . . . . . . . . . . . . . . . . . .  10
   5.3.1 Non-shielded connector requirements. . . . . . . . . . . . . . .  10
   5.3.1.1 Non-shielded connector alternative 1 - A cable . . . . . . . .  10
   5.3.1.2 Non-shielded connector alternative 2 - A cable . . . . . . . .  11
   5.3.1.3 Non-shielded connector - B cable . . . . . . . . . . . . . . .  11
   5.3.2 Shielded connector requirements. . . . . . . . . . . . . . . . .  16
   5.3.2.1 Shielded connector alternative 1 - A cable . . . . . . . . . .  16
   5.3.2.2 Shielded connector alternative 2 - A cable . . . . . . . . . .  16
   5.3.2.3 Shielded connector - B cable . . . . . . . . . . . . . . . . .  16
   5.3.3 Connector contact assignments. . . . . . . . . . . . . . . . . .  21
   5.4 Electrical description . . . . . . . . . . . . . . . . . . . . . .  26
   5.4.1 Single-ended alternative . . . . . . . . . . . . . . . . . . . .  26
   5.4.1.1 Output characteristics . . . . . . . . . . . . . . . . . . . .  26
   5.4.1.2 Input characteristics. . . . . . . . . . . . . . . . . . . . .  26
   5.4.2 Differential alternative . . . . . . . . . . . . . . . . . . . .  27
   5.4.2.1 Output characteristics . . . . . . . . . . . . . . . . . . . .  27
   5.4.2.2 Input characteristics. . . . . . . . . . . . . . . . . . . . .  27
   5.4.3 Terminator power . . . . . . . . . . . . . . . . . . . . . . . .  27
   5.4.4 RESERVED lines . . . . . . . . . . . . . . . . . . . . . . . . .  30
   5.5 SCSI bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  31
   5.6 SCSI bus signals . . . . . . . . . . . . . . . . . . . . . . . . .  33
   5.6.1 Signal values. . . . . . . . . . . . . . . . . . . . . . . . . .  34
   5.6.2 OR-tied signals. . . . . . . . . . . . . . . . . . . . . . . . .  34
   5.6.3 Signal sources . . . . . . . . . . . . . . . . . . . . . . . . .  34
   5.7 SCSI bus timing. . . . . . . . . . . . . . . . . . . . . . . . . .  36
   5.7.1 Arbitration delay  . . . . . . . . . . . . . . . . . . . . . . .  36
   5.7.2 Assertion period . . . . . . . . . . . . . . . . . . . . . . . .  36
   5.7.3 Bus clear delay  . . . . . . . . . . . . . . . . . . . . . . . .  36
   5.7.4 Bus free delay . . . . . . . . . . . . . . . . . . . . . . . . .  37
   5.7.5 Bus set delay  . . . . . . . . . . . . . . . . . . . . . . . . .  37
   5.7.6 Bus settle delay . . . . . . . . . . . . . . . . . . . . . . . .  37
   5.7.7 Cable skew delay . . . . . . . . . . . . . . . . . . . . . . . .  37
   5.7.8 Data release delay . . . . . . . . . . . . . . . . . . . . . . .  37
   5.7.9 Deskew delay . . . . . . . . . . . . . . . . . . . . . . . . . .  37
   5.7.10 Disconnection delay . . . . . . . . . . . . . . . . . . . . . .  37
   5.7.11 Hold time . . . . . . . . . . . . . . . . . . . . . . . . . . .  37
   5.7.12 Negation period . . . . . . . . . . . . . . . . . . . . . . . .  37
   5.7.13 Power-on to selection time  . . . . . . . . . . . . . . . . . .  37
   5.7.14 Reset to selection time . . . . . . . . . . . . . . . . . . . .  38
   5.7.15 Reset hold time . . . . . . . . . . . . . . . . . . . . . . . .  38
   5.7.16 Selection abort time  . . . . . . . . . . . . . . . . . . . . .  38
   5.7.17 Selection time-out delay  . . . . . . . . . . . . . . . . . . .  38
   5.7.18 Transfer period . . . . . . . . . . . . . . . . . . . . . . . .  38
   5.8 Fast synchronous transfer option . . . . . . . . . . . . . . . . .  38
   5.8.1 Fast assertion period  . . . . . . . . . . . . . . . . . . . . .  38
   5.8.2 Fast cable skew delay  . . . . . . . . . . . . . . . . . . . . .  38
   5.8.3 Fast deskew delay  . . . . . . . . . . . . . . . . . . . . . . .  39
   5.8.4 Fast hold time . . . . . . . . . . . . . . . . . . . . . . . . .  39
   5.8.5 Fast negation period . . . . . . . . . . . . . . . . . . . . . .  39

6 Logical characteristics . . . . . . . . . . . . . . . . . . . . . . . .  41
   6.1 SCSI bus phases. . . . . . . . . . . . . . . . . . . . . . . . . .  41
   6.1.1 BUS FREE phase . . . . . . . . . . . . . . . . . . . . . . . . .  41
   6.1.2 ARBITRATION phase. . . . . . . . . . . . . . . . . . . . . . . .  42
   6.1.3 SELECTION phase. . . . . . . . . . . . . . . . . . . . . . . . .  42
   6.1.3.1 SELECTION time-out procedure . . . . . . . . . . . . . . . . .  43
   6.1.4 RESELECTION phase. . . . . . . . . . . . . . . . . . . . . . . .  43
   6.1.4.1 RESELECTION    . . . . . . . . . . . . . . . . . . . . . . . .  43
   6.1.4.2 RESELECTION time-out procedure . . . . . . . . . . . . . . . .  44
   6.1.5 Information transfer phases. . . . . . . . . . . . . . . . . . .  44
   6.1.5.1 Asynchronous information transfer. . . . . . . . . . . . . . .  45
   6.1.5.2 Synchronous data transfer. . . . . . . . . . . . . . . . . . .  45
   6.1.5.3 Wide data transfer . . . . . . . . . . . . . . . . . . . . . .  46
   6.1.6 COMMAND phase. . . . . . . . . . . . . . . . . . . . . . . . . .  48
   6.1.7 Data phase . . . . . . . . . . . . . . . . . . . . . . . . . . .  48
   6.1.7.1 DATA IN phase. . . . . . . . . . . . . . . . . . . . . . . . .  48
   6.1.7.2 DATA OUT phase . . . . . . . . . . . . . . . . . . . . . . . .  48
   6.1.8 STATUS phase . . . . . . . . . . . . . . . . . . . . . . . . . .  48
   6.1.9 Message phase. . . . . . . . . . . . . . . . . . . . . . . . . .  48
   6.1.9.1 MESSAGE IN phase . . . . . . . . . . . . . . . . . . . . . . .  48
   6.1.9.2 MESSAGE OUT phase. . . . . . . . . . . . . . . . . . . . . . .  48
   6.1.10 Signal restrictions between phases. . . . . . . . . . . . . . .  49
   6.2 SCSI bus conditions. . . . . . . . . . . . . . . . . . . . . . . .  50
   6.2.1 Attention condition. . . . . . . . . . . . . . . . . . . . . . .  50
   6.2.2 Reset condition. . . . . . . . . . . . . . . . . . . . . . . . .  51
   6.2.2.1 Hard reset alternative . . . . . . . . . . . . . . . . . . . .  51
   6.2.2.2 Soft reset alternative . . . . . . . . . . . . . . . . . . . .  51
   6.3 SCSI bus phase sequences . . . . . . . . . . . . . . . . . . . . .  52
   6.4 SCSI pointers. . . . . . . . . . . . . . . . . . . . . . . . . . .  54
   6.5 Message system description . . . . . . . . . . . . . . . . . . . .  55
   6.6 Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  58
   6.6.1 ABORT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  58
   6.6.2 ABORT TAG. . . . . . . . . . . . . . . . . . . . . . . . . . . .  58
   6.6.3 BUS DEVICE RESET . . . . . . . . . . . . . . . . . . . . . . . .  59
   6.6.4 CLEAR QUEUE. . . . . . . . . . . . . . . . . . . . . . . . . . .  59
   6.6.5 COMMAND COMPLETE . . . . . . . . . . . . . . . . . . . . . . . .  59
   6.6.6 DISCONNECT . . . . . . . . . . . . . . . . . . . . . . . . . . .  59
   6.6.7 IDENTIFY . . . . . . . . . . . . . . . . . . . . . . . . . . . .  60
   6.6.8 IGNORE WIDE RESIDUE. . . . . . . . . . . . . . . . . . . . . . .  61
   6.6.9 INITIATE RECOVERY. . . . . . . . . . . . . . . . . . . . . . . .  61
   6.6.10 INITIATOR DETECTED ERROR. . . . . . . . . . . . . . . . . . . .  62
   6.6.11 LINKED COMMAND COMPLETE . . . . . . . . . . . . . . . . . . . .  62
   6.6.12 LINKED COMMAND COMPLETE (WITH FLAG) . . . . . . . . . . . . . .  62
   6.6.13 MESSAGE PARITY ERROR. . . . . . . . . . . . . . . . . . . . . .  62
   6.6.14 MESSAGE REJECT. . . . . . . . . . . . . . . . . . . . . . . . .  62
   6.6.15 MODIFY DATA POINTER Message . . . . . . . . . . . . . . . . . .  63
   6.6.16 NO OPERATION. . . . . . . . . . . . . . . . . . . . . . . . . .  63
   6.6.17 Queue tag messages. . . . . . . . . . . . . . . . . . . . . . .  63
   6.6.17.1 HEAD OF QUEUE TAG . . . . . . . . . . . . . . . . . . . . . .  64
   6.6.17.2 ORDERED QUEUE TAG . . . . . . . . . . . . . . . . . . . . . .  64
   6.6.17.3 SIMPLE QUEUE TAG. . . . . . . . . . . . . . . . . . . . . . .  64
   6.6.18 RELEASE RECOVERY. . . . . . . . . . . . . . . . . . . . . . . .  64
   6.6.19 RESTORE POINTERS. . . . . . . . . . . . . . . . . . . . . . . .  65
   6.6.20 SAVE DATA POINTER . . . . . . . . . . . . . . . . . . . . . . .  65
   6.6.21 SYNCHRONOUS DATA TRANSFER REQUEST message . . . . . . . . . . .  65
   6.6.22 TERMINATE I/O PROCESS . . . . . . . . . . . . . . . . . . . . .  67
   6.6.23 WIDE DATA TRANSFER REQUEST message. . . . . . . . . . . . . . .  67

7 SCSI commands and status. . . . . . . . . . . . . . . . . . . . . . . .  71
   7.1 Command implementation requirements. . . . . . . . . . . . . . . .  71
   7.1.1 Reserved . . . . . . . . . . . . . . . . . . . . . . . . . . . .  71
   7.1.2 Operation code types . . . . . . . . . . . . . . . . . . . . . .  71
   7.2 Command descriptor block . . . . . . . . . . . . . . . . . . . . .  72
   7.2.1 Operation code . . . . . . . . . . . . . . . . . . . . . . . . .  73
   7.2.2 Logical unit number. . . . . . . . . . . . . . . . . . . . . . .  74
   7.2.3 Logical block address. . . . . . . . . . . . . . . . . . . . . .  74
   7.2.4 Transfer length. . . . . . . . . . . . . . . . . . . . . . . . .  74
   7.2.5 Parameter list length. . . . . . . . . . . . . . . . . . . . . .  74
   7.2.6 Allocation length. . . . . . . . . . . . . . . . . . . . . . . .  75
   7.2.7 Control field. . . . . . . . . . . . . . . . . . . . . . . . . .  75
   7.3 Status . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  76
   7.4 Command examples . . . . . . . . . . . . . . . . . . . . . . . . .  77
   7.4.1 Single command example . . . . . . . . . . . . . . . . . . . . .  77
   7.4.2 Disconnect example . . . . . . . . . . . . . . . . . . . . . . .  77
   7.4.3 Linked command example . . . . . . . . . . . . . . . . . . . . .  78
   7.5 Command processing considerations and exception conditions . . . .  79
   7.5.1 Programmable operating definition. . . . . . . . . . . . . . . .  79
   7.5.2 Incorrect initiator connection . . . . . . . . . . . . . . . . .  79
   7.5.3 Selection of an invalid logical unit . . . . . . . . . . . . . .  80
   7.5.4 Parameter rounding . . . . . . . . . . . . . . . . . . . . . . .  80
   7.5.5 Asynchronous event notification  . . . . . . . . . . . . . . . .  81
   7.5.6 Unexpected reselection . . . . . . . . . . . . . . . . . . . . .  82
   7.6 Contingent allegiance condition. . . . . . . . . . . . . . . . . .  82
   7.7 Extended contingent allegiance condition . . . . . . . . . . . . .  83
   7.8 Queued I/O processes . . . . . . . . . . . . . . . . . . . . . . .  84
   7.8.1 Untagged queuing . . . . . . . . . . . . . . . . . . . . . . . .  84
   7.8.2 Tagged queuing . . . . . . . . . . . . . . . . . . . . . . . . .  84
   7.8.3 Example of queued I/O process. . . . . . . . . . . . . . . . . .  86
   7.8.3.1 Typical sequences for tagged queuing . . . . . . . . . . . . .  86
   7.8.3.2 Example of tagged queuing. . . . . . . . . . . . . . . . . . .  86
   7.9  Unit attention condition. . . . . . . . . . . . . . . . . . . . .  88

8  All device types . . . . . . . . . . . . . . . . . . . . . . . . . . .  91
   8.1 Model for all device types . . . . . . . . . . . . . . . . . . . .  91
   8.1.1 SCSI addresses . . . . . . . . . . . . . . . . . . . . . . . . .  91
   8.1.1.1 SCSI device address. . . . . . . . . . . . . . . . . . . . . .  91
   8.1.1.2 Logical units. . . . . . . . . . . . . . . . . . . . . . . . .  91
   8.1.1.3 Target routines. . . . . . . . . . . . . . . . . . . . . . . .  91
   8.1.2 Commands implemented by all SCSI devices . . . . . . . . . . . .  91
   8.1.2.1 Using the INQUIRY command. . . . . . . . . . . . . . . . . . .  92
   8.1.2.2 Using the REQUEST SENSE command. . . . . . . . . . . . . . . .  92
   8.1.2.3 Using the SEND DIAGNOSTIC command. . . . . . . . . . . . . . .  92
   8.1.2.4 Using the TEST UNIT READY command. . . . . . . . . . . . . . .  92
   8.2 Commands for all device types. . . . . . . . . . . . . . . . . . .  92
   8.2.1 CHANGE DEFINITION command. . . . . . . . . . . . . . . . . . . .  93
   8.2.2 COMPARE command. . . . . . . . . . . . . . . . . . . . . . . . .  95
   8.2.3 COPY command . . . . . . . . . . . . . . . . . . . . . . . . . .  96
   8.2.3.1 Errors detected by the managing SCSI device. . . . . . . . . .  98
   8.2.3.2 Errors detected by a target. . . . . . . . . . . . . . . . . .  98
   8.2.3.3 COPY function code 00h and 01h . . . . . . . . . . . . . . . .  99
   8.2.3.4 COPY function code 02h . . . . . . . . . . . . . . . . . . . . 100
   8.2.3.5 COPY function code 03h . . . . . . . . . . . . . . . . . . . . 100
   8.2.3.6 COPY function code 04h . . . . . . . . . . . . . . . . . . . . 101
   8.2.3.7 Copies with unequal block lengths. . . . . . . . . . . . . . . 102
   8.2.4 COPY AND VERIFY command. . . . . . . . . . . . . . . . . . . . . 103
   8.2.5 INQUIRY command. . . . . . . . . . . . . . . . . . . . . . . . . 104
   8.2.5.1 Standard INQUIRY data. . . . . . . . . . . . . . . . . . . . . 105
   8.2.5.2 Vital product data . . . . . . . . . . . . . . . . . . . . . . 108
   8.2.6 LOG SELECT command . . . . . . . . . . . . . . . . . . . . . . . 109
   8.2.7 LOG SENSE command. . . . . . . . . . . . . . . . . . . . . . . . 111
   8.2.8 MODE SELECT(6) command . . . . . . . . . . . . . . . . . . . . . 112
   8.2.9 MODE SELECT(10) command. . . . . . . . . . . . . . . . . . . . . 114
   8.2.10 MODE SENSE(6) command . . . . . . . . . . . . . . . . . . . . . 115
   8.2.10.1 Current values. . . . . . . . . . . . . . . . . . . . . . . . 116
   8.2.10.2 Changeable values . . . . . . . . . . . . . . . . . . . . . . 116
   8.2.10.3 Default values. . . . . . . . . . . . . . . . . . . . . . . . 116
   8.2.10.4 Saved values. . . . . . . . . . . . . . . . . . . . . . . . . 116
   8.2.10.5 Initial responses . . . . . . . . . . . . . . . . . . . . . . 117
   8.2.11 MODE SENSE(10) command. . . . . . . . . . . . . . . . . . . . . 117
   8.2.12 READ BUFFER Command . . . . . . . . . . . . . . . . . . . . . . 118
   8.2.12.1 Combined header and data mode (000b). . . . . . . . . . . . . 118
   8.2.12.2 Vendor-specific mode (001b) . . . . . . . . . . . . . . . . . 119
   8.2.12.3 Data mode (010b). . . . . . . . . . . . . . . . . . . . . . . 119
   8.2.12.4 Descriptor mode (011b). . . . . . . . . . . . . . . . . . . . 119
   8.2.13 RECEIVE DIAGNOSTIC RESULTS command. . . . . . . . . . . . . . . 121
   8.2.14 REQUEST SENSE Command . . . . . . . . . . . . . . . . . . . . . 122
   8.2.14.1 Sense-key specific. . . . . . . . . . . . . . . . . . . . . . 125
   8.2.14.2 Deferred errors . . . . . . . . . . . . . . . . . . . . . . . 126
   8.2.14.3 Sense key and sense code definitions. . . . . . . . . . . . . 128
   8.2.15 SEND DIAGNOSTIC Command . . . . . . . . . . . . . . . . . . . . 134
   8.2.16 TEST UNIT READY Command . . . . . . . . . . . . . . . . . . . . 135
   8.2.17 WRITE BUFFER command. . . . . . . . . . . . . . . . . . . . . . 136
   8.2.17.1 Combined header and data mode (000b). . . . . . . . . . . . . 137
   8.2.17.2 Vendor-specific mode (001b) . . . . . . . . . . . . . . . . . 137
   8.2.17.3 Data mode (010b). . . . . . . . . . . . . . . . . . . . . . . 137
   8.2.17.4 Download microcode mode (100b). . . . . . . . . . . . . . . . 138
   8.2.17.5 Download microcode and save mode (101b) . . . . . . . . . . . 138
   8.3 Parameters for all device types. . . . . . . . . . . . . . . . . . 138
   8.3.1 Diagnostic parameters  . . . . . . . . . . . . . . . . . . . . . 138
   8.3.1.1 Supported diagnostic pages . . . . . . . . . . . . . . . . . . 139
   8.3.2 Log parameters . . . . . . . . . . . . . . . . . . . . . . . . . 140
   8.3.2.1 Buffer over-run/under-run page . . . . . . . . . . . . . . . . 143
   8.3.2.2 Error counter pages. . . . . . . . . . . . . . . . . . . . . . 144
   8.3.2.3 Last n error events page . . . . . . . . . . . . . . . . . . . 145
   8.3.2.4 Non-medium error page  . . . . . . . . . . . . . . . . . . . . 145
   8.3.2.5 Supported log pages. . . . . . . . . . . . . . . . . . . . . . 145
   8.3.3 Mode parameters. . . . . . . . . . . . . . . . . . . . . . . . . 146
   8.3.3.1 Control mode page. . . . . . . . . . . . . . . . . . . . . . . 149
   8.3.3.2 Disconnect-reconnect page. . . . . . . . . . . . . . . . . . . 152
   8.3.3.3 Peripheral device page . . . . . . . . . . . . . . . . . . . . 154
   8.3.4 Vital product data parameters. . . . . . . . . . . . . . . . . . 154
   8.3.4.1 ASCII implemented operating definition page. . . . . . . . . . 155
   8.3.4.2 ASCII information page . . . . . . . . . . . . . . . . . . . . 156
   8.3.4.3 Implemented operating definition page. . . . . . . . . . . . . 156
   8.3.4.4 Supported vital product data pages . . . . . . . . . . . . . . 158
   8.3.4.5 Unit serial number page. . . . . . . . . . . . . . . . . . . . 159

9 Direct-access devices . . . . . . . . . . . . . . . . . . . . . . . . . 161
   9.1 Direct-access device model . . . . . . . . . . . . . . . . . . . . 161
   9.1.1 Removable medium . . . . . . . . . . . . . . . . . . . . . . . . 161
   9.1.2 Logical blocks . . . . . . . . . . . . . . . . . . . . . . . . . 161
   9.1.3 Ready state. . . . . . . . . . . . . . . . . . . . . . . . . . . 162
   9.1.4 Initialization . . . . . . . . . . . . . . . . . . . . . . . . . 162
   9.1.5 Medium defects . . . . . . . . . . . . . . . . . . . . . . . . . 162
   9.1.6 Data cache . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
   9.1.7 Reservations . . . . . . . . . . . . . . . . . . . . . . . . . . 164
   9.1.8 Seek and rezero. . . . . . . . . . . . . . . . . . . . . . . . . 165
   9.1.9 Notched drives . . . . . . . . . . . . . . . . . . . . . . . . . 165
   9.1.10 Rotational position locking . . . . . . . . . . . . . . . . . . 165
   9.1.11 Relative addressing . . . . . . . . . . . . . . . . . . . . . . 165
   9.1.12 Error reporting . . . . . . . . . . . . . . . . . . . . . . . . 166
   9.1.13 Examples. . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
   9.1.13.1 Rotating media. . . . . . . . . . . . . . . . . . . . . . . . 166
   9.1.13.2 Sequential media. . . . . . . . . . . . . . . . . . . . . . . 167
   9.1.13.3 Memory media. . . . . . . . . . . . . . . . . . . . . . . . . 167
   9.2 Commands for direct-access devices.. . . . . . . . . . . . . . . . 168
   9.2.1 FORMAT UNIT command. . . . . . . . . . . . . . . . . . . . . . . 169
   9.2.1.1 Defect list formats. . . . . . . . . . . . . . . . . . . . . . 174
   9.2.1.2 Initialization pattern option. . . . . . . . . . . . . . . . . 175
   9.2.2 LOCK UNLOCK CACHE command. . . . . . . . . . . . . . . . . . . . 177
   9.2.3 PRE-FETCH command. . . . . . . . . . . . . . . . . . . . . . . . 178
   9.2.4 PREVENT ALLOW MEDIUM REMOVAL command . . . . . . . . . . . . . . 179
   9.2.5 READ(6) command. . . . . . . . . . . . . . . . . . . . . . . . . 180
   9.2.6 READ(10) command . . . . . . . . . . . . . . . . . . . . . . . . 181
   9.2.7 READ CAPACITY command. . . . . . . . . . . . . . . . . . . . . . 182
   9.2.8 READ DEFECT DATA command . . . . . . . . . . . . . . . . . . . . 183
   9.2.9 READ LONG command. . . . . . . . . . . . . . . . . . . . . . . . 185
   9.2.10 REASSIGN BLOCKS command . . . . . . . . . . . . . . . . . . . . 186
   9.2.11 RELEASE command . . . . . . . . . . . . . . . . . . . . . . . . 187
   9.2.11.1 Logical unit release. . . . . . . . . . . . . . . . . . . . . 188
   9.2.11.2 Extent release. . . . . . . . . . . . . . . . . . . . . . . . 188
   9.2.11.3 Third-party release . . . . . . . . . . . . . . . . . . . . . 188
   9.2.12 RESERVE command . . . . . . . . . . . . . . . . . . . . . . . . 189
   9.2.12.1 Logical unit reservation. . . . . . . . . . . . . . . . . . . 189
   9.2.12.2 Extent reservation. . . . . . . . . . . . . . . . . . . . . . 189
   9.2.12.3 Third-party reservation . . . . . . . . . . . . . . . . . . . 191
   9.2.12.4 Superseding reservations. . . . . . . . . . . . . . . . . . . 192
   9.2.13 REZERO UNIT command . . . . . . . . . . . . . . . . . . . . . . 192
   9.2.14 SEARCH DATA commands. . . . . . . . . . . . . . . . . . . . . . 193
   9.2.14.1 SEARCH DATA EQUAL command . . . . . . . . . . . . . . . . . . 195
   9.2.14.2 SEARCH DATA HIGH command. . . . . . . . . . . . . . . . . . . 195
   9.2.14.3 SEARCH DATA LOW command . . . . . . . . . . . . . . . . . . . 195
   9.2.15 SEEK(6) and SEEK(10) commands . . . . . . . . . . . . . . . . . 196
   9.2.16 SET LIMITS command. . . . . . . . . . . . . . . . . . . . . . . 197
   9.2.17 START STOP UNIT command . . . . . . . . . . . . . . . . . . . . 198
   9.2.18 SYNCHRONIZE CACHE command . . . . . . . . . . . . . . . . . . . 199
   9.2.19 VERIFY command. . . . . . . . . . . . . . . . . . . . . . . . . 200
   9.2.20 WRITE(6) command. . . . . . . . . . . . . . . . . . . . . . . . 201
   9.2.21 WRITE(10) command . . . . . . . . . . . . . . . . . . . . . . . 202
   9.2.22 WRITE AND VERIFY command. . . . . . . . . . . . . . . . . . . . 203
   9.2.23 WRITE LONG command. . . . . . . . . . . . . . . . . . . . . . . 204
   9.2.24 WRITE SAME command. . . . . . . . . . . . . . . . . . . . . . . 205
   9.3 Parameters for direct-access devices . . . . . . . . . . . . . . . 206
   9.3.1 Diagnostic parameters. . . . . . . . . . . . . . . . . . . . . . 206
   9.3.1.1 Translate address page - SEND DIAGNOSTIC . . . . . . . . . . . 206
   9.3.1.2 Translate address page - RECEIVE DIAGNOSTIC  . . . . . . . . . 207
   9.3.2 Log parameters . . . . . . . . . . . . . . . . . . . . . . . . . 208
   9.3.3 Mode parameters. . . . . . . . . . . . . . . . . . . . . . . . . 208
   9.3.3.1 Caching page . . . . . . . . . . . . . . . . . . . . . . . . . 210
   9.3.3.2 Flexible disk page . . . . . . . . . . . . . . . . . . . . . . 213
   9.3.3.3 Format device page . . . . . . . . . . . . . . . . . . . . . . 216
   9.3.3.4 Medium types supported page. . . . . . . . . . . . . . . . . . 219
   9.3.3.5 Notch and partition page . . . . . . . . . . . . . . . . . . . 220
   9.3.3.6 Read-write error recovery page . . . . . . . . . . . . . . . . 222
   9.3.3.7 Rigid disk drive geometry page . . . . . . . . . . . . . . . . 229
   9.3.3.8 Verify error recovery page . . . . . . . . . . . . . . . . . . 231
   9.4 Definitions specific to direct-access devices. . . . . . . . . . . 232

10 Sequential-access devices. . . . . . . . . . . . . . . . . . . . . . . 233
   10.1 Sequential-access device model. . . . . . . . . . . . . . . . . . 233
   10.1.1 Physical elements . . . . . . . . . . . . . . . . . . . . . . . 233
   10.1.2 Data storage characteristics. . . . . . . . . . . . . . . . . . 234
   10.1.3 Partitions within a volume. . . . . . . . . . . . . . . . . . . 236
   10.1.4 Logical elements within a partition . . . . . . . . . . . . . . 237
   10.1.5 Data buffering. . . . . . . . . . . . . . . . . . . . . . . . . 238
   10.1.6 Recorded object descriptors (block identifiers) . . . . . . . . 239
   10.1.7 Direction and position definitions. . . . . . . . . . . . . . . 239
   10.1.8 Error reporting . . . . . . . . . . . . . . . . . . . . . . . . 240
   10.2 Command descriptions for sequential-access devices. . . . . . . . 241
   10.2.1 ERASE command . . . . . . . . . . . . . . . . . . . . . . . . . 243
   10.2.2 LOAD UNLOAD command . . . . . . . . . . . . . . . . . . . . . . 244
   10.2.3 LOCATE command. . . . . . . . . . . . . . . . . . . . . . . . . 245
   10.2.4 READ command. . . . . . . . . . . . . . . . . . . . . . . . . . 246
   10.2.5 READ BLOCK LIMITS command . . . . . . . . . . . . . . . . . . . 248
   10.2.6 READ POSITION command . . . . . . . . . . . . . . . . . . . . . 249
   10.2.7 READ REVERSE command. . . . . . . . . . . . . . . . . . . . . . 251
   10.2.8 RECOVER BUFFERED DATA command . . . . . . . . . . . . . . . . . 252
   10.2.9 RELEASE UNIT command. . . . . . . . . . . . . . . . . . . . . . 253
   10.2.9.1 Third-party release . . . . . . . . . . . . . . . . . . . . . 253
   10.2.10 RESERVE UNIT command . . . . . . . . . . . . . . . . . . . . . 254
   10.2.10.1 Third-party reservation. . . . . . . . . . . . . . . . . . . 254
   10.2.10.2 Superseding reservations . . . . . . . . . . . . . . . . . . 255
   10.2.11 REWIND command . . . . . . . . . . . . . . . . . . . . . . . . 255
   10.2.12 SPACE command. . . . . . . . . . . . . . . . . . . . . . . . . 256
   10.2.13 VERIFY command . . . . . . . . . . . . . . . . . . . . . . . . 258
   10.2.14 WRITE command. . . . . . . . . . . . . . . . . . . . . . . . . 259
   10.2.15 WRITE FILEMARKS command. . . . . . . . . . . . . . . . . . . . 261
   10.3 Parameters for sequential-access devices. . . . . . . . . . . . . 262
   10.3.1 Diagnostic parameters . . . . . . . . . . . . . . . . . . . . . 262
   10.3.2 Log parameters. . . . . . . . . . . . . . . . . . . . . . . . . 262
   10.3.3 Mode parameters . . . . . . . . . . . . . . . . . . . . . . . . 263
   10.3.3.1 Device configuration page . . . . . . . . . . . . . . . . . . 266
   10.3.3.2 Medium partition page(1). . . . . . . . . . . . . . . . . . . 269
   10.3.3.3 Medium partition page(2-4). . . . . . . . . . . . . . . . . . 270
   10.3.3.4 Read-write error recovery page. . . . . . . . . . . . . . . . 270
   10.4 Definitions specific to sequential access devices . . . . . . . . 272

11 Commands for printer devices . . . . . . . . . . . . . . . . . . . . . 273
   11.1 Model for printer devices . . . . . . . . . . . . . . . . . . . . 273
   11.2 Commands for printer devices. . . . . . . . . . . . . . . . . . . 274
   11.2.1 FORMAT command. . . . . . . . . . . . . . . . . . . . . . . . . 275
   11.2.2 PRINT command . . . . . . . . . . . . . . . . . . . . . . . . . 276
   11.2.3 RECOVER BUFFERED DATA command . . . . . . . . . . . . . . . . . 276
   11.2.4 SLEW AND PRINT command. . . . . . . . . . . . . . . . . . . . . 277
   11.2.5 STOP PRINT command. . . . . . . . . . . . . . . . . . . . . . . 278
   11.2.6 SYNCHRONIZE BUFFER command. . . . . . . . . . . . . . . . . . . 278
   11.3 Parameters for printer devices. . . . . . . . . . . . . . . . . . 279
   11.3.1 Diagnostic parameters . . . . . . . . . . . . . . . . . . . . . 279
   11.3.2 Log parameters. . . . . . . . . . . . . . . . . . . . . . . . . 279
   11.3.3 Mode parameters . . . . . . . . . . . . . . . . . . . . . . . . 279
   11.3.3.1 Parallel printer interface page . . . . . . . . . . . . . . . 280
   11.3.3.2 Printer options page. . . . . . . . . . . . . . . . . . . . . 282
   11.3.3.3 Serial printer interface page . . . . . . . . . . . . . . . . 285

12 Processor devices. . . . . . . . . . . . . . . . . . . . . . . . . . . 287
   12.1 Model for processor devices . . . . . . . . . . . . . . . . . . . 287
   12.1.1 Host-to-host communication, SEND only . . . . . . . . . . . . . 288
   12.1.2 Host-to-host communication, SEND and RECEIVE. . . . . . . . . . 288
   12.1.3 Host-to-special-output peripheral . . . . . . . . . . . . . . . 288
   12.1.4 Host-to-special-input peripheral. . . . . . . . . . . . . . . . 288
   12.2 Commands for processor devices. . . . . . . . . . . . . . . . . . 289
   12.2.1 RECEIVE command . . . . . . . . . . . . . . . . . . . . . . . . 289
   12.2.2 SEND command. . . . . . . . . . . . . . . . . . . . . . . . . . 290
   12.3 Parameters for processor devices. . . . . . . . . . . . . . . . . 291
   12.3.1 Diagnostic parameters . . . . . . . . . . . . . . . . . . . . . 291
   12.3.2 Log parameters. . . . . . . . . . . . . . . . . . . . . . . . . 291
   12.4 Definitions specific to processor devices . . . . . . . . . . . . 292

13 Write-once devices . . . . . . . . . . . . . . . . . . . . . . . . . . 293
   13.1 Model for write-once devices. . . . . . . . . . . . . . . . . . . 293
   13.1.1 Logical blocks. . . . . . . . . . . . . . . . . . . . . . . . . 293
   13.1.2 Initialization. . . . . . . . . . . . . . . . . . . . . . . . . 293
   13.1.3 Physical medium defects . . . . . . . . . . . . . . . . . . . . 293
   13.1.4 Error reporting . . . . . . . . . . . . . . . . . . . . . . . . 293
   13.2 Commands for write-once devices . . . . . . . . . . . . . . . . . 294
   13.3 Parameters for write-once devices . . . . . . . . . . . . . . . . 296
   13.4 Definitions specific to write-once devices. . . . . . . . . . . . 296

14 CD-ROM devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
   14.1 Model for CD-ROM devices. . . . . . . . . . . . . . . . . . . . . 297
   14.1.1 CD-ROM media organization . . . . . . . . . . . . . . . . . . . 297
   14.1.2 CD-ROM physical data format . . . . . . . . . . . . . . . . . . 300
   14.1.2.1 Frame format for audio. . . . . . . . . . . . . . . . . . . . 300
   14.1.2.2 Sector format for data. . . . . . . . . . . . . . . . . . . . 301
   14.1.2.3 Sub-channel information formats . . . . . . . . . . . . . . . 301
   14.1.3 CD Audio error reporting. . . . . . . . . . . . . . . . . . . . 302
   14.1.4 CD-ROM ready condition/not ready condition. . . . . . . . . . . 302
   14.1.5 CD-ROM address reporting formats (MSF bit). . . . . . . . . . . 303
   14.1.6 Sensing support for CD-audio commands.. . . . . . . . . . . . . 303
   14.1.7 Error reporting . . . . . . . . . . . . . . . . . . . . . . . . 303
   14.2 Commands for CD-ROM devices . . . . . . . . . . . . . . . . . . . 305
   14.2.1 PAUSE RESUME command. . . . . . . . . . . . . . . . . . . . . . 306
   14.2.2 PLAY AUDIO(10) command. . . . . . . . . . . . . . . . . . . . . 307
   14.2.3 PLAY AUDIO(12) command  . . . . . . . . . . . . . . . . . . . . 308
   14.2.4 PLAY AUDIO MSF command. . . . . . . . . . . . . . . . . . . . . 309
   14.2.5 PLAY AUDIO TRACK INDEX command. . . . . . . . . . . . . . . . . 310
   14.2.6 PLAY AUDIO TRACK RELATIVE(10) command . . . . . . . . . . . . . 311
   14.2.7 PLAY AUDIO TRACK RELATIVE(12) command . . . . . . . . . . . . . 312
   14.2.8 READ CD-ROM CAPACITY command. . . . . . . . . . . . . . . . . . 313
   14.2.9 READ HEADER command . . . . . . . . . . . . . . . . . . . . . . 314
   14.2.10 READ SUB-CHANNEL command . . . . . . . . . . . . . . . . . . . 316
   14.2.10.1 Sub-Q channel data format. . . . . . . . . . . . . . . . . . 317
   14.2.10.2 CD-ROM current position data format. . . . . . . . . . . . . 320
   14.2.10.3 Media catalogue number data format . . . . . . . . . . . . . 320
   14.2.10.4 Track international standard recording code data format. . . 321
   14.2.11 READ TOC command . . . . . . . . . . . . . . . . . . . . . . . 323
   14.3 Parameters for CD-ROM devices . . . . . . . . . . . . . . . . . . 325
   14.3.1 Diagnostic parameters . . . . . . . . . . . . . . . . . . . . . 325
   14.3.2 Log parameters. . . . . . . . . . . . . . . . . . . . . . . . . 325
   14.3.3 Mode parameters . . . . . . . . . . . . . . . . . . . . . . . . 325
   14.3.3.1 CD-ROM audio control parameters . . . . . . . . . . . . . . . 327
   14.3.3.2 CD-ROM device parameters  . . . . . . . . . . . . . . . . . . 329
   14.3.3.3 Read error recovery parameters  . . . . . . . . . . . . . . . 330
   14.3.3.4 Verify error recovery parameters. . . . . . . . . . . . . . . 336
   14.4 Definitions specific to CD-ROM devices. . . . . . . . . . . . . . 336

15 Scanner devices. . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
   15.1 Model for scanner devices . . . . . . . . . . . . . . . . . . . . 339
   15.2 Commands for scanner devices. . . . . . . . . . . . . . . . . . . 340
   15.2.1 GET DATA BUFFER STATUS command. . . . . . . . . . . . . . . . . 341
   15.2.2 GET WINDOW command. . . . . . . . . . . . . . . . . . . . . . . 343
   15.2.3 OBJECT POSITION command . . . . . . . . . . . . . . . . . . . . 347
   15.2.4 READ command. . . . . . . . . . . . . . . . . . . . . . . . . . 349
   15.2.5 SCAN command. . . . . . . . . . . . . . . . . . . . . . . . . . 350
   15.2.6 SEND command. . . . . . . . . . . . . . . . . . . . . . . . . . 350
   15.2.7 SET WINDOW command. . . . . . . . . . . . . . . . . . . . . . . 351
   15.3 Parameters for scanner devices. . . . . . . . . . . . . . . . . . 352
   15.3.1 Diagnostic parameters . . . . . . . . . . . . . . . . . . . . . 352
   15.3.2 Log parameters. . . . . . . . . . . . . . . . . . . . . . . . . 352
   15.3.3 Mode parameters . . . . . . . . . . . . . . . . . . . . . . . . 353
   15.3.3.1 Measurement units page. . . . . . . . . . . . . . . . . . . . 353
   15.4 Definitions specific to scanner devices . . . . . . . . . . . . . 355

16  Optical memory devices. . . . . . . . . . . . . . . . . . . . . . . . 357
   16.1 Model for optical memory devices. . . . . . . . . . . . . . . . . 357
   16.1.1 Defect management . . . . . . . . . . . . . . . . . . . . . . . 358
   16.1.2 Error reporting . . . . . . . . . . . . . . . . . . . . . . . . 358
   16.2 Commands for optical memory devices . . . . . . . . . . . . . . . 359
   16.2.1 ERASE(10) command . . . . . . . . . . . . . . . . . . . . . . . 360
   16.2.2 ERASE(12) command . . . . . . . . . . . . . . . . . . . . . . . 361
   16.2.3 MEDIUM SCAN command . . . . . . . . . . . . . . . . . . . . . . 362
   16.2.4 READ(12) command. . . . . . . . . . . . . . . . . . . . . . . . 364
   16.2.5 READ DEFECT DATA(12) command. . . . . . . . . . . . . . . . . . 364
   16.2.6 READ GENERATION command . . . . . . . . . . . . . . . . . . . . 366
   16.2.7 READ UPDATED BLOCK(10) command. . . . . . . . . . . . . . . . . 367
   16.2.8 SEARCH DATA(12) commands. . . . . . . . . . . . . . . . . . . . 368
   16.2.9 SET LIMITS(12) command. . . . . . . . . . . . . . . . . . . . . 368
   16.2.10 UPDATE BLOCK command . . . . . . . . . . . . . . . . . . . . . 369
   16.2.11 VERIFY(10) command . . . . . . . . . . . . . . . . . . . . . . 370
   16.2.12 VERIFY(12) command . . . . . . . . . . . . . . . . . . . . . . 371
   16.2.13 WRITE(10) command. . . . . . . . . . . . . . . . . . . . . . . 372
   16.2.14 WRITE(12) command. . . . . . . . . . . . . . . . . . . . . . . 373
   16.2.15 WRITE AND VERIFY(10) command . . . . . . . . . . . . . . . . . 373
   16.2.16 WRITE AND VERIFY(12) command . . . . . . . . . . . . . . . . . 374
   16.3 Parameters for optical memory devices . . . . . . . . . . . . . . 375
   16.3.1 Diagnostic parameters . . . . . . . . . . . . . . . . . . . . . 375
   16.3.2 Log parameters. . . . . . . . . . . . . . . . . . . . . . . . . 375
   16.3.3 Mode parameters . . . . . . . . . . . . . . . . . . . . . . . . 375
   16.3.3.1 Optical memory page . . . . . . . . . . . . . . . . . . . . . 378
   16.4 Definitions specific to write-once and optical memory devices . . 378

17 Medium-changer devices . . . . . . . . . . . . . . . . . . . . . . . . 379
   17.1 Medium-changer device model . . . . . . . . . . . . . . . . . . . 379
   17.1.1 Medium-changer elements . . . . . . . . . . . . . . . . . . . . 379
   17.1.1.1 Medium transport elements . . . . . . . . . . . . . . . . . . 379
   17.1.1.2 Storage elements. . . . . . . . . . . . . . . . . . . . . . . 380
   17.1.1.3 Import export elements. . . . . . . . . . . . . . . . . . . . 380
   17.1.1.4 Data transfer element . . . . . . . . . . . . . . . . . . . . 380
   17.1.2 SCSI addressing of medium changer devices . . . . . . . . . . . 381
   17.1.3 Data access operations using a medium changer device. . . . . . 381
   17.1.4 Element status maintenance requirements . . . . . . . . . . . . 381
   17.1.5 Volume tags . . . . . . . . . . . . . . . . . . . . . . . . . . 381
   17.1.5.1 Volume tag format . . . . . . . . . . . . . . . . . . . . . . 382
   17.1.5.2 Primary and alternate volume tag information. . . . . . . . . 382
   17.2 Commands for medium changer devices . . . . . . . . . . . . . . . 383
   17.2.1 EXCHANGE MEDIUM command . . . . . . . . . . . . . . . . . . . . 384
   17.2.2 INITIALIZE ELEMENT STATUS command . . . . . . . . . . . . . . . 385
   17.2.3 MOVE MEDIUM command . . . . . . . . . . . . . . . . . . . . . . 386
   17.2.4 POSITION TO ELEMENT command . . . . . . . . . . . . . . . . . . 387
   17.2.5 READ ELEMENT STATUS command . . . . . . . . . . . . . . . . . . 388
   17.2.5.1 Element status data . . . . . . . . . . . . . . . . . . . . . 389
   17.2.5.2 Element status page . . . . . . . . . . . . . . . . . . . . . 391
   17.2.5.3 Medium transport element descriptor . . . . . . . . . . . . . 392
   17.2.5.4 Storage element descriptor. . . . . . . . . . . . . . . . . . 393
   17.2.5.5 Import export element descriptor. . . . . . . . . . . . . . . 394
   17.2.5.6 Data transfer element descriptor. . . . . . . . . . . . . . . 395
   17.2.6 REQUEST VOLUME ELEMENT ADDRESS command. . . . . . . . . . . . . 396
   17.2.7 RELEASE command . . . . . . . . . . . . . . . . . . . . . . . . 398
   17.2.7.1 Logical unit release. . . . . . . . . . . . . . . . . . . . . 398
   17.2.7.2 Element release (optional). . . . . . . . . . . . . . . . . . 398
   17.2.7.3 Third party release . . . . . . . . . . . . . . . . . . . . . 398
   17.2.8 RESERVE command . . . . . . . . . . . . . . . . . . . . . . . . 399
   17.2.8.1 Logical unit reservation. . . . . . . . . . . . . . . . . . . 399
   17.2.8.2 Element reservation (optional). . . . . . . . . . . . . . . . 399
   17.2.8.3 Third party reservation . . . . . . . . . . . . . . . . . . . 400
   17.2.8.4 Superseding reservations. . . . . . . . . . . . . . . . . . . 401
   17.2.9 SEND VOLUME TAG command . . . . . . . . . . . . . . . . . . . . 401
   17.3 Parameters for medium changer devices . . . . . . . . . . . . . . 404
   17.3.1 Diagnostic parameters . . . . . . . . . . . . . . . . . . . . . 404
   17.3.2 Log parameters. . . . . . . . . . . . . . . . . . . . . . . . . 404
   17.3.3 Mode parameters . . . . . . . . . . . . . . . . . . . . . . . . 404
   17.3.3.1 Device capabilities page. . . . . . . . . . . . . . . . . . . 405
   17.3.3.2 Element address assignment page . . . . . . . . . . . . . . . 406
   17.3.3.3 Transport geometry parameters page. . . . . . . . . . . . . . 409
   17.4 Definitions specific to medium changer devices. . . . . . . . . . 410

18 Communications devices . . . . . . . . . . . . . . . . . . . . . . . . 411
   18.1 Communications device model . . . . . . . . . . . . . . . . . . . 411
   18.1.1 Implementation examples . . . . . . . . . . . . . . . . . . . . 412
   18.1.1.1 Host-to-host communications . . . . . . . . . . . . . . . . . 412
   18.1.1.2 Host-to-device communications . . . . . . . . . . . . . . . . 412
   18.1.1.3 Multiple role communications  . . . . . . . . . . . . . . . . 413
   18.2 Command descriptions for communications devices . . . . . . . . . 413
   18.2.1 GET MESSAGE(6) command. . . . . . . . . . . . . . . . . . . . . 414
   18.2.2 GET MESSAGE(10) command . . . . . . . . . . . . . . . . . . . . 414
   18.2.3 GET MESSAGE(12) command . . . . . . . . . . . . . . . . . . . . 415
   18.2.4 SEND MESSAGE(6) command . . . . . . . . . . . . . . . . . . . . 416
   18.2.5 SEND MESSAGE(10) command. . . . . . . . . . . . . . . . . . . . 416
   18.2.6 SEND MESSAGE(12) command. . . . . . . . . . . . . . . . . . . . 417
   18.3 Parameters for communication devices. . . . . . . . . . . . . . . 418
   18.3.1 Diagnostic parameters . . . . . . . . . . . . . . . . . . . . . 418
   18.3.2 Log parameters. . . . . . . . . . . . . . . . . . . . . . . . . 418
   18.3.3 Mode parameters . . . . . . . . . . . . . . . . . . . . . . . . 418
   18.4 Definitions specific to communications devices. . . . . . . . . . 419
   C.1 SCSI-3 standards projects. . . . . . . . . . . . . . . . . . . . . 427
   C.2 Digital data exchange for colour electronic prepress systems . . . 427
   C.3 Fibre channel. . . . . . . . . . . . . . . . . . . . . . . . . . . 427

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443



Annexes
                                                                         Page
Annex A . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421
SCSI signal sequence example. . . . . . . . . . . . . . . . . . . . . . . 421

Annex B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425
Fast SCSI skew time . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

Annex C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427
Other SCSI standardization activities . . . . . . . . . . . . . . . . . . 427

Annex D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429
Numeric order codes . . . . . . . . . . . . . . . . . . . . . . . . . . . 429

Annex E . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439
Vendor identification . . . . . . . . . . . . . . . . . . . . . . . . . . 439


Figures
                                                                         Page
Figure 1 - 50/68-contact non-shielded high-density SCSI device
   connector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  12
Figure 2 - 50/68-contact non-shielded high-density cable connector. . . .  13
Figure 3 - 50-contact non-shielded low-density SCSI device connector. . .  14
Figure 4 - 50-Contact non-shielded low-density cable connector. . . . . .  15
Figure 5 - 50/68-contact shielded high-density SCSI device connector. . .  17
Figure 6 - 50/68-contact shielded high-density cable connector. . . . . .  18
Figure 7 - 50-contact shielded low-density SCSI device connector. . . . .  19
Figure 8 - 50-contact shielded low-density cable connector. . . . . . . .  20
Figure 9 - Alternative 1 termination. . . . . . . . . . . . . . . . . . .  29
Figure 10 - Alternative 2 termination for single-ended devices. . . . . .  29
Figure 11 - Termination for differential devices. . . . . . . . . . . . .  30
Figure 12 - Differential driver protection circuit. . . . . . . . . . . .  30
Figure 13 - SCSI ID bits. . . . . . . . . . . . . . . . . . . . . . . . .  31
Figure 14 - Sample SCSI configurations. . . . . . . . . . . . . . . . . .  32
Figure 15 - Wide SCSI byte ordering . . . . . . . . . . . . . . . . . . .  47
Figure 16 - Phase sequences . . . . . . . . . . . . . . . . . . . . . . .  53
Figure 17 - Simplified SCSI system. . . . . . . . . . . . . . . . . . . .  54
Figure 18 - Typical volume layout . . . . . . . . . . . . . . . . . . . . 234
Figure 19 - Typical medium track layout . . . . . . . . . . . . . . . . . 234
Figure 20 - Serpentine recording example  . . . . . . . . . . . . . . . . 234
Figure 21 - Parallel recording example. . . . . . . . . . . . . . . . . . 235
Figure 22 - Helical scan recording example. . . . . . . . . . . . . . . . 235
Figure 23 - Early-warning example . . . . . . . . . . . . . . . . . . . . 235
Figure 24 - Partitioning example - one partition per track group. . . . . 236
Figure 25 - Partitioning example - one partition per two track groups . . 236
Figure 26 - Partitioning example - two partitions per track group . . . . 237
Figure 27 - SCSI printer model. . . . . . . . . . . . . . . . . . . . . . 273
Figure 28 - Illustration of element status data structure . . . . . . . . 390
Figure A.1 - SCSI signal sequence example . . . . . . . . . . . . . . . . 424
Figure C.1 - SCSI-3 standards structure . . . . . . . . . . . . . . . . . 427




Tables
                                                                         Page
Table 1 - Cross-reference to connector contact assignments. . . . . . . .  21
Table 2 - Single-ended contact assignments - A cable. . . . . . . . . . .  21
Table 3 - Single-ended contact assignments - B cable. . . . . . . . . . .  22
Table 4 - Differential contact assignments - A cable. . . . . . . . . . .  23
Table 5 - Differential contact assignments - B cable. . . . . . . . . . .  24
Table 6 - Signal sources. . . . . . . . . . . . . . . . . . . . . . . . .  34
Table 7 - SCSI bus timing values. . . . . . . . . . . . . . . . . . . . .  36
Table 8 - Information transfer phases . . . . . . . . . . . . . . . . . .  45
Table 9 - Message format. . . . . . . . . . . . . . . . . . . . . . . . .  55
Table 10 - Message codes. . . . . . . . . . . . . . . . . . . . . . . . .  55
Table 11 - Extended message format. . . . . . . . . . . . . . . . . . . .  57
Table 12 - Extended message codes . . . . . . . . . . . . . . . . . . . .  57
Table 13 - IDENTIFY message format. . . . . . . . . . . . . . . . . . . .  60
Table 14 - IGNORE WIDE RESIDUE message format . . . . . . . . . . . . . .  61
Table 15 - Ignore field definition. . . . . . . . . . . . . . . . . . . .  61
Table 16 - MODIFY DATA POINTER. . . . . . . . . . . . . . . . . . . . . .  63
Table 17 - Queue tag message format . . . . . . . . . . . . . . . . . . .  63
Table 18 - SYNCHRONOUS DATA TRANSFER REQUEST. . . . . . . . . . . . . . .  65
Table 19 - WIDE DATA TRANSFER MESSAGE . . . . . . . . . . . . . . . . . .  67
Table 20 - Operation code type. . . . . . . . . . . . . . . . . . . . . .  71
Table 21 - Typical command descriptor block for six-byte commands . . . .  72
Table 22 - Typical command descriptor block for ten-byte commands . . . .  72
Table 23 - Typical command descriptor block for twelve-byte commands. . .  72
Table 24 - Operation code . . . . . . . . . . . . . . . . . . . . . . . .  74
Table 25 - Control field. . . . . . . . . . . . . . . . . . . . . . . . .  75
Table 26 - Status byte. . . . . . . . . . . . . . . . . . . . . . . . . .  76
Table 27 - Status byte code . . . . . . . . . . . . . . . . . . . . . . .  76
Table 28 - Commands in order received by target . . . . . . . . . . . . .  86
Table 29 - Commands in order of execution . . . . . . . . . . . . . . . .  87
Table 30 - Modified by HEAD OF QUEUE TAG message. . . . . . . . . . . . .  87
Table 31 - Commands for all device types. . . . . . . . . . . . . . . . .  92
Table 32 - CHANGE DEFINITION command. . . . . . . . . . . . . . . . . . .  93
Table 33 - Definition parameter field . . . . . . . . . . . . . . . . . .  94
Table 34 - COMPARE command. . . . . . . . . . . . . . . . . . . . . . . .  95
Table 35 - COPY command . . . . . . . . . . . . . . . . . . . . . . . . .  96
Table 36 - COPY parameter list. . . . . . . . . . . . . . . . . . . . . .  96
Table 37 - COPY function codes. . . . . . . . . . . . . . . . . . . . . .  97
Table 38 - Segment descriptor for COPY function codes 00h and 01h . . . .  99
Table 39 - Segment descriptor for COPY function code 02h. . . . . . . . . 100
Table 40 - Segment descriptor for COPY function code 03h. . . . . . . . . 100
Table 41 - Segment descriptor for COPY function code 04h. . . . . . . . . 102
Table 42 - Pad and cat bit definition . . . . . . . . . . . . . . . . . . 102
Table 43 - COPY AND VERIFY command. . . . . . . . . . . . . . . . . . . . 103
Table 44 - INQUIRY command. . . . . . . . . . . . . . . . . . . . . . . . 104
Table 45 - Standard INQUIRY data format . . . . . . . . . . . . . . . . . 105
Table 46 - Peripheral qualifier . . . . . . . . . . . . . . . . . . . . . 105
Table 47 - Peripheral device type . . . . . . . . . . . . . . . . . . . . 106
Table 48 - ANSI-approved version. . . . . . . . . . . . . . . . . . . . . 107
Table 49 - LOG SELECT command . . . . . . . . . . . . . . . . . . . . . . 109
Table 50 - Page control field . . . . . . . . . . . . . . . . . . . . . . 110
Table 51 - LOG SENSE command. . . . . . . . . . . . . . . . . . . . . . . 111
Table 52 - MODE SELECT(6) command . . . . . . . . . . . . . . . . . . . . 112
Table 53 - MODE SELECT(10) command. . . . . . . . . . . . . . . . . . . . 114
Table 54 - MODE SENSE(6) command. . . . . . . . . . . . . . . . . . . . . 115
Table 55 - Page control field . . . . . . . . . . . . . . . . . . . . . . 115
Table 56 - Mode page code usage for all devices . . . . . . . . . . . . . 115
Table 57 - MODE SENSE(10) command . . . . . . . . . . . . . . . . . . . . 117
Table 58 - READ BUFFER command. . . . . . . . . . . . . . . . . . . . . . 118
Table 59 - READ BUFFER mode field . . . . . . . . . . . . . . . . . . . . 118
Table 60 - READ BUFFER header . . . . . . . . . . . . . . . . . . . . . . 118
Table 61 - READ BUFFER descriptor . . . . . . . . . . . . . . . . . . . . 119
Table 62 - Buffer offset boundary . . . . . . . . . . . . . . . . . . . . 120
Table 63 - RECEIVE DIAGNOSTIC RESULTS command . . . . . . . . . . . . . . 121
Table 64 - REQUEST SENSE command. . . . . . . . . . . . . . . . . . . . . 122
Table 65 - Error codes 70h and 71h sense data format. . . . . . . . . . . 123
Table 66 - Field pointer bytes. . . . . . . . . . . . . . . . . . . . . . 125
Table 67 - Actual retry count bytes . . . . . . . . . . . . . . . . . . . 125
Table 68 - Format progress indication bytes . . . . . . . . . . . . . . . 126
Table 69 - Sense key (0h-7h) descriptions . . . . . . . . . . . . . . . . 128
Table 70 - Sense key (8h-Fh) descriptions . . . . . . . . . . . . . . . . 129
Table 71 - ASC and ASCQ assignments . . . . . . . . . . . . . . . . . . . 130
Table 72 - SEND DIAGNOSTIC command. . . . . . . . . . . . . . . . . . . . 134
Table 73 - TEST UNIT READY command. . . . . . . . . . . . . . . . . . . . 135
Table 74 - Preferred TEST UNIT READY responses. . . . . . . . . . . . . . 135
Table 75 - WRITE BUFFER command . . . . . . . . . . . . . . . . . . . . . 136
Table 76 - WRITE BUFFER mode field. . . . . . . . . . . . . . . . . . . . 137
Table 77 - Diagnostic page format . . . . . . . . . . . . . . . . . . . . 138
Table 78 - Diagnostic page codes. . . . . . . . . . . . . . . . . . . . . 139
Table 79 - Supported diagnostic pages . . . . . . . . . . . . . . . . . . 139
Table 80 - Log page format. . . . . . . . . . . . . . . . . . . . . . . . 140
Table 81 - Log parameter. . . . . . . . . . . . . . . . . . . . . . . . . 140
Table 82 - Threshold met criteria . . . . . . . . . . . . . . . . . . . . 142
Table 83 - Log page codes . . . . . . . . . . . . . . . . . . . . . . . . 143
Table 84 - Parameter code field for buffer over-run/under-run
   counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Table 85 - Count basis definition . . . . . . . . . . . . . . . . . . . . 144
Table 86 - Cause field definition . . . . . . . . . . . . . . . . . . . . 144
Table 87 - Parameter codes for error counter pages. . . . . . . . . . . . 144
Table 88 - Non-medium error event parameter codes . . . . . . . . . . . . 145
Table 89 - Supported log pages. . . . . . . . . . . . . . . . . . . . . . 146
Table 90 - Mode parameter list. . . . . . . . . . . . . . . . . . . . . . 146
Table 91 - Mode parameter header(6) . . . . . . . . . . . . . . . . . . . 146
Table 92 - Mode parameter header(10). . . . . . . . . . . . . . . . . . . 147
Table 93 - Mode parameter block descriptor. . . . . . . . . . . . . . . . 148
Table 94 - Mode page format . . . . . . . . . . . . . . . . . . . . . . . 148
Table 95 - Mode page codes. . . . . . . . . . . . . . . . . . . . . . . . 149
Table 96 - Control mode page. . . . . . . . . . . . . . . . . . . . . . . 149
Table 97 - Queue algorithm modifier . . . . . . . . . . . . . . . . . . . 150
Table 98 - Disconnect-reconnect page. . . . . . . . . . . . . . . . . . . 152
Table 99 - Data transfer disconnect control . . . . . . . . . . . . . . . 153
Table 100 - Peripheral device page. . . . . . . . . . . . . . . . . . . . 154
Table 101 - Interface identifier codes. . . . . . . . . . . . . . . . . . 154
Table 102 - Vital product data page codes . . . . . . . . . . . . . . . . 154
Table 103 - ASCII implemented operating definition  . . . . . . . . . . . 155
Table 104 - ASCII information page. . . . . . . . . . . . . . . . . . . . 156
Table 105 - Implemented operating definition page . . . . . . . . . . . . 156
Table 106 - Supported vital product data pages. . . . . . . . . . . . . . 158
Table 107 - Unit serial number page . . . . . . . . . . . . . . . . . . . 159
Table 108 - Commands for direct-access devices. . . . . . . . . . . . . . 168
Table 109 - FORMAT UNIT command . . . . . . . . . . . . . . . . . . . . . 169
Table 110 - FORMAT UNIT parameter list. . . . . . . . . . . . . . . . . . 170
Table 111 - Defect list header. . . . . . . . . . . . . . . . . . . . . . 170
Table 112 - FORMAT UNIT defect descriptor format and requirements . . . . 171
Table 113 - Defect descriptor - Block format. . . . . . . . . . . . . . . 174
Table 114 - Defect descriptor - Bytes from index format . . . . . . . . . 174
Table 115 - Defect descriptor - Physical sector format. . . . . . . . . . 175
Table 116 - Initialization pattern descriptor . . . . . . . . . . . . . . 175
Table 117 - Initialization pattern modifier . . . . . . . . . . . . . . . 175
Table 118 - Initialization pattern type . . . . . . . . . . . . . . . . . 176
Table 119 - LOCK UNLOCK CACHE command . . . . . . . . . . . . . . . . . . 177
Table 120 - PRE-FETCH command . . . . . . . . . . . . . . . . . . . . . . 178
Table 121 - PREVENT ALLOW MEDIUM REMOVAL command. . . . . . . . . . . . . 179
Table 122 - READ(6) command . . . . . . . . . . . . . . . . . . . . . . . 180
Table 123 - READ(10) command. . . . . . . . . . . . . . . . . . . . . . . 181
Table 124 - READ CAPACITY command . . . . . . . . . . . . . . . . . . . . 182
Table 125 - READ CAPACITY data. . . . . . . . . . . . . . . . . . . . . . 182
Table 126 - READ DEFECT DATA command. . . . . . . . . . . . . . . . . . . 183
Table 127 - READ DEFECT DATA defect list. . . . . . . . . . . . . . . . . 184
Table 128 - READ LONG command . . . . . . . . . . . . . . . . . . . . . . 185
Table 129 - REASSIGN BLOCKS command . . . . . . . . . . . . . . . . . . . 186
Table 130 - REASSIGN BLOCKS defect list . . . . . . . . . . . . . . . . . 186
Table 131 - RELEASE command . . . . . . . . . . . . . . . . . . . . . . . 187
Table 132 - RESERVE command . . . . . . . . . . . . . . . . . . . . . . . 189
Table 133 - Data format of extent descriptors . . . . . . . . . . . . . . 190
Table 134 - Reservation types . . . . . . . . . . . . . . . . . . . . . . 190
Table 135 - REZERO UNIT command . . . . . . . . . . . . . . . . . . . . . 192
Table 136 - SEARCH DATA commands. . . . . . . . . . . . . . . . . . . . . 193
Table 137 - SEARCH DATA parameter list. . . . . . . . . . . . . . . . . . 194
Table 138 - SEEK(6) command . . . . . . . . . . . . . . . . . . . . . . . 196
Table 139 - SEEK(10) command. . . . . . . . . . . . . . . . . . . . . . . 196
Table 140 - SET LIMITS command. . . . . . . . . . . . . . . . . . . . . . 197
Table 141 - START STOP UNIT command . . . . . . . . . . . . . . . . . . . 198
Table 142 - SYNCHRONIZE CACHE command . . . . . . . . . . . . . . . . . . 199
Table 143 - VERIFY command. . . . . . . . . . . . . . . . . . . . . . . . 200
Table 144 - WRITE(6) command. . . . . . . . . . . . . . . . . . . . . . . 201
Table 145 - WRITE(10) command . . . . . . . . . . . . . . . . . . . . . . 202
Table 146 - WRITE AND VERIFY command. . . . . . . . . . . . . . . . . . . 203
Table 147 - WRITE LONG command. . . . . . . . . . . . . . . . . . . . . . 204
Table 148 - WRITE SAME command. . . . . . . . . . . . . . . . . . . . . . 205
Table 149 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 206
Table 150 - Translate address page - SEND DIAGNOSTIC. . . . . . . . . . . 206
Table 151 - Translate address page - RECEIVE DIAGNOSTIC . . . . . . . . . 207
Table 152 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 208
Table 153 - Direct-access medium-type codes . . . . . . . . . . . . . . . 208
Table 154 - Device specific parameter . . . . . . . . . . . . . . . . . . 209
Table 155 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 210
Table 156 - Caching page. . . . . . . . . . . . . . . . . . . . . . . . . 210
Table 157 - Demand read and write retention priority. . . . . . . . . . . 211
Table 158 - Flexible disk page. . . . . . . . . . . . . . . . . . . . . . 213
Table 159 - Examples of transfer rates. . . . . . . . . . . . . . . . . . 214
Table 160 - Pin 34 field. . . . . . . . . . . . . . . . . . . . . . . . . 215
Table 161 - Pin 4 field . . . . . . . . . . . . . . . . . . . . . . . . . 215
Table 162 - Pin 34 field. . . . . . . . . . . . . . . . . . . . . . . . . 216
Table 163 - Format device page. . . . . . . . . . . . . . . . . . . . . . 216
Table 164 - Reporting of default sector formatting support. . . . . . . . 218
Table 165 - Reporting of changeable sector formatting support . . . . . . 219
Table 166 - Medium types supported page . . . . . . . . . . . . . . . . . 219
Table 167 - Notch page. . . . . . . . . . . . . . . . . . . . . . . . . . 220
Table 168 - Read-write error recovery page. . . . . . . . . . . . . . . . 222
Table 169 - Error recovery bit definitions. . . . . . . . . . . . . . . . 223
Table 170 - Combined error recovery parameter descriptions. . . . . . . . 224
Table 171 - Rigid disk drive geometry page. . . . . . . . . . . . . . . . 229
Table 172 - Rotational position locking . . . . . . . . . . . . . . . . . 230
Table 173 - Verify error recovery page. . . . . . . . . . . . . . . . . . 231
Table 174 - Commands for sequential-access devices. . . . . . . . . . . . 241
Table 175 - ERASE command . . . . . . . . . . . . . . . . . . . . . . . . 243
Table 176 - LOAD UNLOAD command . . . . . . . . . . . . . . . . . . . . . 244
Table 177 - LOCATE command. . . . . . . . . . . . . . . . . . . . . . . . 245
Table 178 - READ command. . . . . . . . . . . . . . . . . . . . . . . . . 246
Table 179 - READ BLOCK LIMITS command . . . . . . . . . . . . . . . . . . 248
Table 180 - READ BLOCK LIMITS data. . . . . . . . . . . . . . . . . . . . 248
Table 181 - READ POSITION command . . . . . . . . . . . . . . . . . . . . 249
Table 182 - READ POSITION data format . . . . . . . . . . . . . . . . . . 249
Table 183 - READ REVERSE command. . . . . . . . . . . . . . . . . . . . . 251
Table 184 - RECOVER BUFFERED DATA command . . . . . . . . . . . . . . . . 252
Table 185 - RELEASE UNIT command. . . . . . . . . . . . . . . . . . . . . 253
Table 186 - RESERVE UNIT command. . . . . . . . . . . . . . . . . . . . . 254
Table 187 - REWIND command. . . . . . . . . . . . . . . . . . . . . . . . 255
Table 188 - SPACE command . . . . . . . . . . . . . . . . . . . . . . . . 256
Table 189 - Code field definition . . . . . . . . . . . . . . . . . . . . 256
Table 190 - VERIFY command. . . . . . . . . . . . . . . . . . . . . . . . 258
Table 191 - WRITE command . . . . . . . . . . . . . . . . . . . . . . . . 259
Table 192 - WRITE FILEMARKS command . . . . . . . . . . . . . . . . . . . 261
Table 193 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 262
Table 194 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 262
Table 195 - Device-specific parameter . . . . . . . . . . . . . . . . . . 263
Table 196 - Buffered modes. . . . . . . . . . . . . . . . . . . . . . . . 263
Table 197 - Speed field definition. . . . . . . . . . . . . . . . . . . . 263
Table 198 - Sequential-access density codes . . . . . . . . . . . . . . . 264
Table 199 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 265
Table 200 - Device configuration page . . . . . . . . . . . . . . . . . . 266
Table 201 - EOD formats . . . . . . . . . . . . . . . . . . . . . . . . . 268
Table 202 - Medium partition page(1). . . . . . . . . . . . . . . . . . . 269
Table 203 - Medium partition page(2-4). . . . . . . . . . . . . . . . . . 270
Table 204 - Read-write error recovery page. . . . . . . . . . . . . . . . 270
Table 205 - Commands for printer devices. . . . . . . . . . . . . . . . . 274
Table 206 - FORMAT command. . . . . . . . . . . . . . . . . . . . . . . . 275
Table 207 - Format type . . . . . . . . . . . . . . . . . . . . . . . . . 275
Table 208 - PRINT command . . . . . . . . . . . . . . . . . . . . . . . . 276
Table 209 - RECOVER BUFFERED DATA command . . . . . . . . . . . . . . . . 276
Table 210 - SLEW AND PRINT command. . . . . . . . . . . . . . . . . . . . 277
Table 211 - STOP PRINT command. . . . . . . . . . . . . . . . . . . . . . 278
Table 212 - SYNCHRONIZE BUFFER command. . . . . . . . . . . . . . . . . . 278
Table 213 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 279
Table 214 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 279
Table 215 - Printer device-specific parameter . . . . . . . . . . . . . . 279
Table 216 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 280
Table 217 - Parallel printer interface. . . . . . . . . . . . . . . . . . 280
Table 218 - Parity select . . . . . . . . . . . . . . . . . . . . . . . . 281
Table 219 - VFU control byte. . . . . . . . . . . . . . . . . . . . . . . 281
Table 220 - Printer options . . . . . . . . . . . . . . . . . . . . . . . 282
Table 221 - Font identification . . . . . . . . . . . . . . . . . . . . . 282
Table 222 - Slew mode . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Table 223 - Line slew . . . . . . . . . . . . . . . . . . . . . . . . . . 283
Table 224 - Form slew . . . . . . . . . . . . . . . . . . . . . . . . . . 284
Table 225 - Data termination option . . . . . . . . . . . . . . . . . . . 284
Table 226 - Serial printer interface. . . . . . . . . . . . . . . . . . . 285
Table 227 - Parity selection. . . . . . . . . . . . . . . . . . . . . . . 286
Table 228 - Pacing protocol . . . . . . . . . . . . . . . . . . . . . . . 286
Table 229 - Commands for processor devices. . . . . . . . . . . . . . . . 289
Table 230 - RECEIVE command . . . . . . . . . . . . . . . . . . . . . . . 289
Table 231 - SEND command. . . . . . . . . . . . . . . . . . . . . . . . . 290
Table 232 - SEND command - AEN data format. . . . . . . . . . . . . . . . 290
Table 233 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 291
Table 234 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 291
Table 235 - Commands for write-once devices . . . . . . . . . . . . . . . 294
Table 236 - Example mixed mode CD-ROM disc layout . . . . . . . . . . . . 298
Table 237 - MSF address format. . . . . . . . . . . . . . . . . . . . . . 303
Table 238 - Commands for CD-ROM device. . . . . . . . . . . . . . . . . . 305
Table 239 - PAUSE RESUME command. . . . . . . . . . . . . . . . . . . . . 306
Table 240 - PLAY AUDIO(10) command. . . . . . . . . . . . . . . . . . . . 307
Table 241 - PLAY AUDIO(12) command. . . . . . . . . . . . . . . . . . . . 308
Table 242 - PLAY AUDIO MSF command. . . . . . . . . . . . . . . . . . . . 309
Table 243 - PLAY AUDIO TRACK INDEX command. . . . . . . . . . . . . . . . 310
Table 244 - PLAY AUDIO TRACK RELATIVE(10) command . . . . . . . . . . . . 311
Table 245 - PLAY AUDIO TRACK RELATIVE(12) command . . . . . . . . . . . . 312
Table 246 - READ CD-ROM CAPACITY command. . . . . . . . . . . . . . . . . 313
Table 247 - READ CAPACITY data format . . . . . . . . . . . . . . . . . . 314
Table 248 - READ HEADER command . . . . . . . . . . . . . . . . . . . . . 314
Table 249 - READ HEADER data format . . . . . . . . . . . . . . . . . . . 314
Table 250 - CD-ROM data mode codes. . . . . . . . . . . . . . . . . . . . 315
Table 251 - READ SUB-CHANNEL command. . . . . . . . . . . . . . . . . . . 316
Table 252 - Sub-channel data format codes . . . . . . . . . . . . . . . . 316
Table 253 - Sub-Q channel data format . . . . . . . . . . . . . . . . . . 317
Table 254 - Audio status codes. . . . . . . . . . . . . . . . . . . . . . 318
Table 255 - ADR sub-channel Q field . . . . . . . . . . . . . . . . . . . 318
Table 256 - Sub-channel Q control bits. . . . . . . . . . . . . . . . . . 318
Table 257 - CD-ROM current position data format . . . . . . . . . . . . . 320
Table 258 - Media catalogue number data format. . . . . . . . . . . . . . 320
Table 259 - Track international standard recording code data format . . . 321
Table 260 - READ TOC command. . . . . . . . . . . . . . . . . . . . . . . 323
Table 261 - READ TOC data format  . . . . . . . . . . . . . . . . . . . . 323
Table 262 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 325
Table 263 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 325
Table 264 - CD-ROM medium type codes. . . . . . . . . . . . . . . . . . . 325
Table 265 - CD-ROM device-specific parameter. . . . . . . . . . . . . . . 326
Table 266 - CD-ROM density codes. . . . . . . . . . . . . . . . . . . . . 326
Table 267 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 327
Table 268 - CD-ROM audio control parameters page. . . . . . . . . . . . . 327
Table 269 - Multiplier for LBAs . . . . . . . . . . . . . . . . . . . . . 328
Table 270 - Output port channel selection . . . . . . . . . . . . . . . . 328
Table 271 - CD-ROM parameters page. . . . . . . . . . . . . . . . . . . . 329
Table 272 - Inactivity timer multiplier values. . . . . . . . . . . . . . 329
Table 273 - Read error recovery parameters page . . . . . . . . . . . . . 330
Table 274 - Error recovery bit settings . . . . . . . . . . . . . . . . . 331
Table 275 - CD-ROM error recovery descriptions. . . . . . . . . . . . . . 331
Table 276 - Verify error recovery parameters page . . . . . . . . . . . . 336
Table 277 - Commands for scanner devices. . . . . . . . . . . . . . . . . 340
Table 278 - GET DATA BUFFER STATUS command. . . . . . . . . . . . . . . . 341
Table 279 - Data buffer status format . . . . . . . . . . . . . . . . . . 341
Table 280 - GET WINDOW command. . . . . . . . . . . . . . . . . . . . . . 343
Table 281 - Get window data header. . . . . . . . . . . . . . . . . . . . 343
Table 282 - Window descriptor bytes . . . . . . . . . . . . . . . . . . . 344
Table 283 - Image composition codes . . . . . . . . . . . . . . . . . . . 345
Table 284 - Padding types . . . . . . . . . . . . . . . . . . . . . . . . 346
Table 285 - Compression types and arguments . . . . . . . . . . . . . . . 346
Table 286 - OBJECT POSITION command . . . . . . . . . . . . . . . . . . . 347
Table 287 - Position function . . . . . . . . . . . . . . . . . . . . . . 347
Table 288 - READ command. . . . . . . . . . . . . . . . . . . . . . . . . 349
Table 289 - Data type codes . . . . . . . . . . . . . . . . . . . . . . . 349
Table 290 - SCAN command. . . . . . . . . . . . . . . . . . . . . . . . . 350
Table 291 - SEND command. . . . . . . . . . . . . . . . . . . . . . . . . 350
Table 292 - SET WINDOW command. . . . . . . . . . . . . . . . . . . . . . 351
Table 293 - Set window data header. . . . . . . . . . . . . . . . . . . . 351
Table 294 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 352
Table 295 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 352
Table 296 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 353
Table 297 - Measurement units page. . . . . . . . . . . . . . . . . . . . 353
Table 298 - Basic measurement units . . . . . . . . . . . . . . . . . . . 354
Table 299 - Commands for optical memory devices . . . . . . . . . . . . . 359
Table 300 - ERASE(10) command . . . . . . . . . . . . . . . . . . . . . . 360
Table 301 - ERASE(12) command . . . . . . . . . . . . . . . . . . . . . . 361
Table 302 - MEDIUM SCAN command . . . . . . . . . . . . . . . . . . . . . 362
Table 303 - MEDIUM SCAN parameter list. . . . . . . . . . . . . . . . . . 363
Table 304 - READ(12) command. . . . . . . . . . . . . . . . . . . . . . . 364
Table 305 - READ DEFECT DATA(12) command. . . . . . . . . . . . . . . . . 364
Table 306 - READ DEFECT DATA(12) list header. . . . . . . . . . . . . . . 365
Table 307 - READ GENERATION command . . . . . . . . . . . . . . . . . . . 366
Table 308 - Maximum generation data block . . . . . . . . . . . . . . . . 366
Table 309 - READ UPDATED BLOCK(10) command. . . . . . . . . . . . . . . . 367
Table 310 - SEARCH DATA(12) commands. . . . . . . . . . . . . . . . . . . 368
Table 311 - SET LIMITS(12) command. . . . . . . . . . . . . . . . . . . . 368
Table 312 - UPDATE BLOCK command. . . . . . . . . . . . . . . . . . . . . 369
Table 313 - VERIFY command. . . . . . . . . . . . . . . . . . . . . . . . 370
Table 314 - VERIFY(12) command. . . . . . . . . . . . . . . . . . . . . . 371
Table 315 - WRITE(10) command . . . . . . . . . . . . . . . . . . . . . . 372
Table 316 - WRITE(12) command . . . . . . . . . . . . . . . . . . . . . . 373
Table 317 - WRITE AND VERIFY(10) command. . . . . . . . . . . . . . . . . 373
Table 318 - WRITE AND VERIFY(12) command. . . . . . . . . . . . . . . . . 374
Table 319 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 375
Table 320 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 375
Table 321 - Optical memory medium-type codes. . . . . . . . . . . . . . . 375
Table 322 - Optical memory device specific parameter. . . . . . . . . . . 376
Table 323 - Optical memory density codes. . . . . . . . . . . . . . . . . 376
Table 324 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 377
Table 325 - Optical memory page . . . . . . . . . . . . . . . . . . . . . 378
Table 326 - Volume tag information format . . . . . . . . . . . . . . . . 382
Table 327 - Commands for medium changer devices . . . . . . . . . . . . . 383
Table 328 - EXCHANGE MEDIUM command . . . . . . . . . . . . . . . . . . . 384
Table 329 - INITIALIZE ELEMENT STATUS command . . . . . . . . . . . . . . 385
Table 330 - MOVE MEDIUM command . . . . . . . . . . . . . . . . . . . . . 386
Table 331 - POSITION TO ELEMENT command . . . . . . . . . . . . . . . . . 387
Table 332 - READ ELEMENT STATUS command . . . . . . . . . . . . . . . . . 388
Table 333 - Element type code . . . . . . . . . . . . . . . . . . . . . . 388
Table 334 - Element status data . . . . . . . . . . . . . . . . . . . . . 389
Table 335 - Element status page . . . . . . . . . . . . . . . . . . . . . 391
Table 336 - Medium transport element descriptor . . . . . . . . . . . . . 392
Table 337 - Storage element descriptor. . . . . . . . . . . . . . . . . . 393
Table 338 - Import export element descriptor. . . . . . . . . . . . . . . 394
Table 339 - Data transfer element descriptor. . . . . . . . . . . . . . . 395
Table 340 - REQUEST VOLUME ELEMENT ADDRESS command. . . . . . . . . . . . 396
Table 341 - Volume element address header format. . . . . . . . . . . . . 397
Table 342 - RELEASE command . . . . . . . . . . . . . . . . . . . . . . . 398
Table 343 - RESERVE command . . . . . . . . . . . . . . . . . . . . . . . 399
Table 344 - Data format of element list descriptors . . . . . . . . . . . 400
Table 345 - SEND VOLUME TAG command . . . . . . . . . . . . . . . . . . . 401
Table 346 - Send volume tag action codes. . . . . . . . . . . . . . . . . 402
Table 347 - Send volume tag parameters format . . . . . . . . . . . . . . 402
Table 348 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 404
Table 349 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 404
Table 350 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 405
Table 351 - Device capabilities page. . . . . . . . . . . . . . . . . . . 405
Table 352 - Element address assignment page . . . . . . . . . . . . . . . 406
Table 353 - Transport geometry parameters page. . . . . . . . . . . . . . 409
Table 354 - Commands for communications devices . . . . . . . . . . . . . 413
Table 355 - GET MESSAGE(6) command. . . . . . . . . . . . . . . . . . . . 414
Table 356 - GET MESSAGE(10) command . . . . . . . . . . . . . . . . . . . 414
Table 357 - GET MESSAGE(12) command . . . . . . . . . . . . . . . . . . . 415
Table 358 - SEND MESSAGE(6) command . . . . . . . . . . . . . . . . . . . 416
Table 359 - SEND MESSAGE(10) command. . . . . . . . . . . . . . . . . . . 416
Table 360 - SEND MESSAGE(12) command. . . . . . . . . . . . . . . . . . . 417
Table 361 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 418
Table 362 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 418
Table 363 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 419
Table B.1 - Fast SCSI jitter budget . . . . . . . . . . . . . . . . . . . 425
Table B.2 - Mapping of jitter to SCSI . . . . . . . . . . . . . . . . . . 425
Table D.1 - ASC and ASCQ assignments. . . . . . . . . . . . . . . . . . . 429
Table D.2 - SCSI-2 Operation Codes. . . . . . . . . . . . . . . . . . . . 435
Table E.1 - Vendor identification list. . . . . . . . . . . . . . . . . . 439
Table 1 - Cross-reference to connector contact assignments. . . . . . . .  20
Table 2 - Single-ended contact assignments - A cable. . . . . . . . . . .  20
Table 3 - Single-ended contact assignments - B cable. . . . . . . . . . .  21
Table 4 - Differential contact assignments - A cable. . . . . . . . . . .  22
Table 5 - Differential contact assignments - B cable. . . . . . . . . . .  23
Table 6 - Signal sources. . . . . . . . . . . . . . . . . . . . . . . . .  33
Table 7 - SCSI bus timing values. . . . . . . . . . . . . . . . . . . . .  35
Table 8 - Information transfer phases . . . . . . . . . . . . . . . . . .  43
Table 9 - Message format. . . . . . . . . . . . . . . . . . . . . . . . .  53
Table 10 - Message codes. . . . . . . . . . . . . . . . . . . . . . . . .  53
Table 11 - Extended message format. . . . . . . . . . . . . . . . . . . .  55
Table 12 - Extended message codes . . . . . . . . . . . . . . . . . . . .  55
Table 13 - IDENTIFY message format. . . . . . . . . . . . . . . . . . . .  58
Table 14 - IGNORE WIDE RESIDUE message format . . . . . . . . . . . . . .  59
Table 15 - Ignore field definition. . . . . . . . . . . . . . . . . . . .  59
Table 16 - MODIFY DATA POINTER. . . . . . . . . . . . . . . . . . . . . .  61
Table 17 - Queue tag message format . . . . . . . . . . . . . . . . . . .  61
Table 18 - SYNCHRONOUS DATA TRANSFER REQUEST. . . . . . . . . . . . . . .  63
Table 19 - WIDE DATA TRANSFER MESSAGE . . . . . . . . . . . . . . . . . .  65
Table 20 - Operation code type. . . . . . . . . . . . . . . . . . . . . .  68
Table 21 - Typical command descriptor block for six-byte commands . . . .  69
Table 22 - Typical command descriptor block for ten-byte commands . . . .  69
Table 23 - Typical command descriptor block for twelve-byte commands. . .  69
Table 24 - Operation code . . . . . . . . . . . . . . . . . . . . . . . .  71
Table 25 - Control field. . . . . . . . . . . . . . . . . . . . . . . . .  72
Table 26 - Status byte. . . . . . . . . . . . . . . . . . . . . . . . . .  73
Table 27 - Status byte code . . . . . . . . . . . . . . . . . . . . . . .  73
Table 28 - Commands in order received by target . . . . . . . . . . . . .  83
Table 29 - Commands in order of execution . . . . . . . . . . . . . . . .  84
Table 30 - Modified by HEAD OF QUEUE TAG message. . . . . . . . . . . . .  84
Table 31 - Commands for all device types. . . . . . . . . . . . . . . . .  88
Table 32 - CHANGE DEFINITION command. . . . . . . . . . . . . . . . . . .  89
Table 33 - Definition parameter field . . . . . . . . . . . . . . . . . .  90
Table 34 - COMPARE command. . . . . . . . . . . . . . . . . . . . . . . .  91
Table 35 - COPY command . . . . . . . . . . . . . . . . . . . . . . . . .  92
Table 36 - COPY parameter list. . . . . . . . . . . . . . . . . . . . . .  92
Table 37 - COPY function codes. . . . . . . . . . . . . . . . . . . . . .  93
Table 38 - Segment descriptor for COPY function codes 00h and 01h . . . .  95
Table 39 - Segment descriptor for COPY function code 02h. . . . . . . . .  96
Table 40 - Segment descriptor for COPY function code 03h. . . . . . . . .  96
Table 41 - Segment descriptor for COPY function code 04h. . . . . . . . .  98
Table 42 - Pad and cat bit definition . . . . . . . . . . . . . . . . . .  98
Table 43 - COPY AND VERIFY command. . . . . . . . . . . . . . . . . . . .  99
Table 44 - INQUIRY command. . . . . . . . . . . . . . . . . . . . . . . . 100
Table 45 - Standard INQUIRY data format . . . . . . . . . . . . . . . . . 101
Table 46 - Peripheral qualifier . . . . . . . . . . . . . . . . . . . . . 101
Table 47 - Peripheral device type . . . . . . . . . . . . . . . . . . . . 102
Table 48 - ANSI-approved version. . . . . . . . . . . . . . . . . . . . . 103
Table 49 - LOG SELECT command . . . . . . . . . . . . . . . . . . . . . . 105
Table 50 - Page control field . . . . . . . . . . . . . . . . . . . . . . 106
Table 51 - LOG SENSE command. . . . . . . . . . . . . . . . . . . . . . . 107
Table 52 - MODE SELECT(6) command . . . . . . . . . . . . . . . . . . . . 108
Table 53 - MODE SELECT(10) command. . . . . . . . . . . . . . . . . . . . 110
Table 54 - MODE SENSE(6) command. . . . . . . . . . . . . . . . . . . . . 111
Table 55 - Page control field . . . . . . . . . . . . . . . . . . . . . . 111
Table 56 - Mode page code usage for all devices . . . . . . . . . . . . . 111
Table 57 - MODE SENSE(10) command . . . . . . . . . . . . . . . . . . . . 113
Table 58 - READ BUFFER command. . . . . . . . . . . . . . . . . . . . . . 114
Table 59 - READ BUFFER mode field . . . . . . . . . . . . . . . . . . . . 114
Table 60 - READ BUFFER header . . . . . . . . . . . . . . . . . . . . . . 114
Table 61 - READ BUFFER descriptor . . . . . . . . . . . . . . . . . . . . 115
Table 62 - Buffer offset boundary . . . . . . . . . . . . . . . . . . . . 116
Table 63 - RECEIVE DIAGNOSTIC RESULTS command . . . . . . . . . . . . . . 117
Table 64 - REQUEST SENSE command. . . . . . . . . . . . . . . . . . . . . 118
Table 65 - Error codes 70h and 71h sense data format. . . . . . . . . . . 119
Table 66 - Field pointer bytes. . . . . . . . . . . . . . . . . . . . . . 121
Table 67 - Actual retry count bytes . . . . . . . . . . . . . . . . . . . 121
Table 68 - Format progress indication bytes . . . . . . . . . . . . . . . 122
Table 69 - Sense key (0h-7h) descriptions . . . . . . . . . . . . . . . . 124
Table 70 - Sense key (8h-Fh) descriptions . . . . . . . . . . . . . . . . 125
Table 71 - ASC and ASCQ assignments . . . . . . . . . . . . . . . . . . . 126
Table 72 - SEND DIAGNOSTIC command. . . . . . . . . . . . . . . . . . . . 130
Table 73 - TEST UNIT READY command. . . . . . . . . . . . . . . . . . . . 131
Table 74 - Preferred TEST UNIT READY responses. . . . . . . . . . . . . . 131
Table 75 - WRITE BUFFER command . . . . . . . . . . . . . . . . . . . . . 132
Table 76 - WRITE BUFFER mode field. . . . . . . . . . . . . . . . . . . . 133
Table 77 - Diagnostic page format . . . . . . . . . . . . . . . . . . . . 134
Table 78 - Diagnostic page codes. . . . . . . . . . . . . . . . . . . . . 135
Table 79 - Supported diagnostic pages . . . . . . . . . . . . . . . . . . 135
Table 80 - Log page format. . . . . . . . . . . . . . . . . . . . . . . . 136
Table 81 - Log parameter. . . . . . . . . . . . . . . . . . . . . . . . . 136
Table 82 - Threshold met criteria . . . . . . . . . . . . . . . . . . . . 138
Table 83 - Log page codes . . . . . . . . . . . . . . . . . . . . . . . . 139
Table 84 - Parameter code field for buffer over-run/under-run
   counters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
Table 85 - Count basis definition . . . . . . . . . . . . . . . . . . . . 140
Table 86 - Cause field definition . . . . . . . . . . . . . . . . . . . . 140
Table 87 - Parameter codes for error counter pages. . . . . . . . . . . . 140
Table 88 - Non-medium error event parameter codes . . . . . . . . . . . . 141
Table 89 - Supported log pages. . . . . . . . . . . . . . . . . . . . . . 142
Table 90 - Mode parameter list. . . . . . . . . . . . . . . . . . . . . . 142
Table 91 - Mode parameter header(6) . . . . . . . . . . . . . . . . . . . 142
Table 92 - Mode parameter header(10). . . . . . . . . . . . . . . . . . . 143
Table 93 - Mode parameter block descriptor. . . . . . . . . . . . . . . . 144
Table 94 - Mode page format . . . . . . . . . . . . . . . . . . . . . . . 144
Table 95 - Mode page codes. . . . . . . . . . . . . . . . . . . . . . . . 145
Table 96 - Control mode page. . . . . . . . . . . . . . . . . . . . . . . 145
Table 97 - Queue algorithm modifier . . . . . . . . . . . . . . . . . . . 146
Table 98 - Disconnect-reconnect page. . . . . . . . . . . . . . . . . . . 148
Table 99 - Data transfer disconnect control . . . . . . . . . . . . . . . 149
Table 100 - Peripheral device page. . . . . . . . . . . . . . . . . . . . 150
Table 101 - Interface identifier codes. . . . . . . . . . . . . . . . . . 150
Table 102 - Vital product data page codes . . . . . . . . . . . . . . . . 150
Table 103 - ASCII implemented operating definition  . . . . . . . . . . . 151
Table 104 - ASCII information page. . . . . . . . . . . . . . . . . . . . 152
Table 105 - Implemented operating definition page . . . . . . . . . . . . 152
Table 106 - Supported vital product data pages. . . . . . . . . . . . . . 154
Table 107 - Unit serial number page . . . . . . . . . . . . . . . . . . . 155
Table 108 - Commands for direct-access devices. . . . . . . . . . . . . . 163
Table 109 - FORMAT UNIT command . . . . . . . . . . . . . . . . . . . . . 164
Table 110 - FORMAT UNIT parameter list. . . . . . . . . . . . . . . . . . 165
Table 111 - Defect list header. . . . . . . . . . . . . . . . . . . . . . 165
Table 112 - FORMAT UNIT defect descriptor format and requirements . . . . 166
Table 113 - Defect descriptor - Block format. . . . . . . . . . . . . . . 169
Table 114 - Defect descriptor - Bytes from index format . . . . . . . . . 169
Table 115 - Defect descriptor - Physical sector format. . . . . . . . . . 170
Table 116 - Initialization pattern descriptor . . . . . . . . . . . . . . 170
Table 117 - Initialization pattern modifier . . . . . . . . . . . . . . . 170
Table 118 - Initialization pattern type . . . . . . . . . . . . . . . . . 171
Table 119 - LOCK UNLOCK CACHE command . . . . . . . . . . . . . . . . . . 172
Table 120 - PRE-FETCH command . . . . . . . . . . . . . . . . . . . . . . 173
Table 121 - PREVENT ALLOW MEDIUM REMOVAL command. . . . . . . . . . . . . 174
Table 122 - READ(6) command . . . . . . . . . . . . . . . . . . . . . . . 175
Table 123 - READ(10) command. . . . . . . . . . . . . . . . . . . . . . . 176
Table 124 - READ CAPACITY command . . . . . . . . . . . . . . . . . . . . 177
Table 125 - READ CAPACITY data. . . . . . . . . . . . . . . . . . . . . . 177
Table 126 - READ DEFECT DATA command. . . . . . . . . . . . . . . . . . . 178
Table 127 - READ DEFECT DATA defect list. . . . . . . . . . . . . . . . . 179
Table 128 - READ LONG command . . . . . . . . . . . . . . . . . . . . . . 180
Table 129 - REASSIGN BLOCKS command . . . . . . . . . . . . . . . . . . . 181
Table 130 - REASSIGN BLOCKS defect list . . . . . . . . . . . . . . . . . 181
Table 131 - RELEASE command . . . . . . . . . . . . . . . . . . . . . . . 182
Table 132 - RESERVE command . . . . . . . . . . . . . . . . . . . . . . . 184
Table 133 - Data format of extent descriptors . . . . . . . . . . . . . . 185
Table 134 - Reservation types . . . . . . . . . . . . . . . . . . . . . . 185
Table 135 - REZERO UNIT command . . . . . . . . . . . . . . . . . . . . . 187
Table 136 - SEARCH DATA commands. . . . . . . . . . . . . . . . . . . . . 188
Table 137 - SEARCH DATA parameter list. . . . . . . . . . . . . . . . . . 189
Table 138 - SEEK(6) command . . . . . . . . . . . . . . . . . . . . . . . 191
Table 139 - SEEK(10) command. . . . . . . . . . . . . . . . . . . . . . . 191
Table 140 - SET LIMITS command. . . . . . . . . . . . . . . . . . . . . . 192
Table 141 - START STOP UNIT command . . . . . . . . . . . . . . . . . . . 193
Table 142 - SYNCHRONIZE CACHE command . . . . . . . . . . . . . . . . . . 194
Table 143 - VERIFY command. . . . . . . . . . . . . . . . . . . . . . . . 195
Table 144 - WRITE(6) command. . . . . . . . . . . . . . . . . . . . . . . 196
Table 145 - WRITE(10) command . . . . . . . . . . . . . . . . . . . . . . 197
Table 146 - WRITE AND VERIFY command. . . . . . . . . . . . . . . . . . . 198
Table 147 - WRITE LONG command. . . . . . . . . . . . . . . . . . . . . . 199
Table 148 - WRITE SAME command. . . . . . . . . . . . . . . . . . . . . . 200
Table 149 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 201
Table 150 - Translate address page - SEND DIAGNOSTIC. . . . . . . . . . . 201
Table 151 - Translate address page - RECEIVE DIAGNOSTIC . . . . . . . . . 202
Table 152 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 203
Table 153 - Direct-access medium-type codes . . . . . . . . . . . . . . . 203
Table 154 - Device specific parameter . . . . . . . . . . . . . . . . . . 204
Table 155 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 205
Table 156 - Caching page. . . . . . . . . . . . . . . . . . . . . . . . . 205
Table 157 - Demand read and write retention priority. . . . . . . . . . . 206
Table 158 - Flexible disk page. . . . . . . . . . . . . . . . . . . . . . 208
Table 159 - Examples of transfer rates. . . . . . . . . . . . . . . . . . 209
Table 160 - Pin 34 field. . . . . . . . . . . . . . . . . . . . . . . . . 210
Table 161 - Pin 4 field . . . . . . . . . . . . . . . . . . . . . . . . . 210
Table 162 - Pin 34 field. . . . . . . . . . . . . . . . . . . . . . . . . 211
Table 163 - Format device page. . . . . . . . . . . . . . . . . . . . . . 211
Table 164 - Reporting of default sector formatting support. . . . . . . . 213
Table 165 - Reporting of changeable sector formatting support . . . . . . 214
Table 166 - Medium types supported page . . . . . . . . . . . . . . . . . 214
Table 167 - Notch page. . . . . . . . . . . . . . . . . . . . . . . . . . 215
Table 168 - Read-write error recovery page. . . . . . . . . . . . . . . . 217
Table 169 - Error recovery bit definitions. . . . . . . . . . . . . . . . 218
Table 170 - Combined error recovery parameter descriptions. . . . . . . . 219
Table 171 - Rigid disk drive geometry page. . . . . . . . . . . . . . . . 224
Table 172 - Rotational position locking . . . . . . . . . . . . . . . . . 225
Table 173 - Verify error recovery page. . . . . . . . . . . . . . . . . . 226
Table 174 - Commands for sequential-access devices. . . . . . . . . . . . 236
Table 175 - ERASE command . . . . . . . . . . . . . . . . . . . . . . . . 238
Table 176 - LOAD UNLOAD command . . . . . . . . . . . . . . . . . . . . . 239
Table 177 - LOCATE command. . . . . . . . . . . . . . . . . . . . . . . . 240
Table 178 - READ command. . . . . . . . . . . . . . . . . . . . . . . . . 241
Table 179 - READ BLOCK LIMITS command . . . . . . . . . . . . . . . . . . 243
Table 180 - READ BLOCK LIMITS data. . . . . . . . . . . . . . . . . . . . 243
Table 181 - READ POSITION command . . . . . . . . . . . . . . . . . . . . 244
Table 182 - READ POSITION data format . . . . . . . . . . . . . . . . . . 244
Table 183 - READ REVERSE command. . . . . . . . . . . . . . . . . . . . . 246
Table 184 - RECOVER BUFFERED DATA command . . . . . . . . . . . . . . . . 247
Table 185 - RELEASE UNIT command. . . . . . . . . . . . . . . . . . . . . 248
Table 186 - RESERVE UNIT command. . . . . . . . . . . . . . . . . . . . . 249
Table 187 - REWIND command. . . . . . . . . . . . . . . . . . . . . . . . 250
Table 188 - SPACE command . . . . . . . . . . . . . . . . . . . . . . . . 251
Table 189 - Code field definition . . . . . . . . . . . . . . . . . . . . 251
Table 190 - VERIFY command. . . . . . . . . . . . . . . . . . . . . . . . 253
Table 191 - WRITE command . . . . . . . . . . . . . . . . . . . . . . . . 254
Table 192 - WRITE FILEMARKS command . . . . . . . . . . . . . . . . . . . 256
Table 193 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 257
Table 194 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 257
Table 195 - Device-specific parameter . . . . . . . . . . . . . . . . . . 258
Table 196 - Buffered modes. . . . . . . . . . . . . . . . . . . . . . . . 258
Table 197 - Speed field definition. . . . . . . . . . . . . . . . . . . . 258
Table 198 - Sequential-access density codes . . . . . . . . . . . . . . . 259
Table 199 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 260
Table 200 - Device configuration page . . . . . . . . . . . . . . . . . . 261
Table 201 - EOD formats . . . . . . . . . . . . . . . . . . . . . . . . . 263
Table 202 - Medium partition page(1). . . . . . . . . . . . . . . . . . . 264
Table 203 - Medium partition page(2-4). . . . . . . . . . . . . . . . . . 265
Table 204 - Read-write error recovery page. . . . . . . . . . . . . . . . 265
Table 205 - Commands for printer devices. . . . . . . . . . . . . . . . . 269
Table 206 - FORMAT command. . . . . . . . . . . . . . . . . . . . . . . . 270
Table 207 - Format type . . . . . . . . . . . . . . . . . . . . . . . . . 270
Table 208 - PRINT command . . . . . . . . . . . . . . . . . . . . . . . . 271
Table 209 - RECOVER BUFFERED DATA command . . . . . . . . . . . . . . . . 271
Table 210 - SLEW AND PRINT command. . . . . . . . . . . . . . . . . . . . 272
Table 211 - STOP PRINT command. . . . . . . . . . . . . . . . . . . . . . 273
Table 212 - SYNCHRONIZE BUFFER command. . . . . . . . . . . . . . . . . . 273
Table 213 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 274
Table 214 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 274
Table 215 - Printer device-specific parameter . . . . . . . . . . . . . . 274
Table 216 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 275
Table 217 - Parallel printer interface. . . . . . . . . . . . . . . . . . 275
Table 218 - Parity select . . . . . . . . . . . . . . . . . . . . . . . . 276
Table 219 - VFU control byte. . . . . . . . . . . . . . . . . . . . . . . 276
Table 220 - Printer options . . . . . . . . . . . . . . . . . . . . . . . 277
Table 221 - Font identification . . . . . . . . . . . . . . . . . . . . . 277
Table 222 - Slew mode . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Table 223 - Line slew . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Table 224 - Form slew . . . . . . . . . . . . . . . . . . . . . . . . . . 279
Table 225 - Data termination option . . . . . . . . . . . . . . . . . . . 279
Table 226 - Serial printer interface. . . . . . . . . . . . . . . . . . . 280
Table 227 - Parity selection. . . . . . . . . . . . . . . . . . . . . . . 281
Table 228 - Pacing protocol . . . . . . . . . . . . . . . . . . . . . . . 281
Table 229 - Commands for processor devices. . . . . . . . . . . . . . . . 284
Table 230 - RECEIVE command . . . . . . . . . . . . . . . . . . . . . . . 284
Table 231 - SEND command. . . . . . . . . . . . . . . . . . . . . . . . . 285
Table 232 - SEND command - AEN data format. . . . . . . . . . . . . . . . 285
Table 233 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 286
Table 234 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 286
Table 235 - Commands for write-once devices . . . . . . . . . . . . . . . 289
Table 236 - Example mixed mode CD-ROM disc layout . . . . . . . . . . . . 293
Table 237 - MSF address format. . . . . . . . . . . . . . . . . . . . . . 298
Table 238 - Commands for CD-ROM device. . . . . . . . . . . . . . . . . . 300
Table 239 - PAUSE RESUME command. . . . . . . . . . . . . . . . . . . . . 301
Table 240 - PLAY AUDIO(10) command. . . . . . . . . . . . . . . . . . . . 302
Table 241 - PLAY AUDIO(12) command. . . . . . . . . . . . . . . . . . . . 303
Table 242 - PLAY AUDIO MSF command. . . . . . . . . . . . . . . . . . . . 304
Table 243 - PLAY AUDIO TRACK INDEX command. . . . . . . . . . . . . . . . 305
Table 244 - PLAY AUDIO TRACK RELATIVE(10) command . . . . . . . . . . . . 306
Table 245 - PLAY AUDIO TRACK RELATIVE(12) command . . . . . . . . . . . . 307
Table 246 - READ CD-ROM CAPACITY command. . . . . . . . . . . . . . . . . 308
Table 247 - READ CAPACITY data format . . . . . . . . . . . . . . . . . . 309
Table 248 - READ HEADER command . . . . . . . . . . . . . . . . . . . . . 309
Table 249 - READ HEADER data format . . . . . . . . . . . . . . . . . . . 309
Table 250 - CD-ROM data mode codes. . . . . . . . . . . . . . . . . . . . 310
Table 251 - READ SUB-CHANNEL command. . . . . . . . . . . . . . . . . . . 311
Table 252 - Sub-channel data format codes . . . . . . . . . . . . . . . . 311
Table 253 - Sub-Q channel data format . . . . . . . . . . . . . . . . . . 312
Table 254 - Audio status codes. . . . . . . . . . . . . . . . . . . . . . 313
Table 255 - ADR sub-channel Q field . . . . . . . . . . . . . . . . . . . 313
Table 256 - Sub-channel Q control bits. . . . . . . . . . . . . . . . . . 313
Table 257 - CD-ROM current position data format . . . . . . . . . . . . . 315
Table 258 - Media catalogue number data format. . . . . . . . . . . . . . 315
Table 259 - Track international standard recording code data format . . . 316
Table 260 - READ TOC command. . . . . . . . . . . . . . . . . . . . . . . 318
Table 261 - READ TOC data format  . . . . . . . . . . . . . . . . . . . . 318
Table 262 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 320
Table 263 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 320
Table 264 - CD-ROM medium type codes. . . . . . . . . . . . . . . . . . . 320
Table 265 - CD-ROM device-specific parameter. . . . . . . . . . . . . . . 321
Table 266 - CD-ROM density codes. . . . . . . . . . . . . . . . . . . . . 321
Table 267 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 322
Table 268 - CD-ROM audio control parameters page. . . . . . . . . . . . . 322
Table 269 - Multiplier for LBAs . . . . . . . . . . . . . . . . . . . . . 323
Table 270 - Output port channel selection . . . . . . . . . . . . . . . . 323
Table 271 - CD-ROM parameters page. . . . . . . . . . . . . . . . . . . . 324
Table 272 - Inactivity timer multiplier values. . . . . . . . . . . . . . 324
Table 273 - Read error recovery parameters page . . . . . . . . . . . . . 325
Table 274 - Error recovery bit settings . . . . . . . . . . . . . . . . . 326
Table 275 - CD-ROM error recovery descriptions. . . . . . . . . . . . . . 326
Table 276 - Verify error recovery parameters page . . . . . . . . . . . . 331
Table 277 - Commands for scanner devices. . . . . . . . . . . . . . . . . 335
Table 278 - GET DATA BUFFER STATUS command. . . . . . . . . . . . . . . . 336
Table 279 - Data buffer status format . . . . . . . . . . . . . . . . . . 336
Table 280 - GET WINDOW command. . . . . . . . . . . . . . . . . . . . . . 338
Table 281 - Get window data header. . . . . . . . . . . . . . . . . . . . 338
Table 282 - Window descriptor bytes . . . . . . . . . . . . . . . . . . . 339
Table 283 - Image composition codes . . . . . . . . . . . . . . . . . . . 340
Table 284 - Padding types . . . . . . . . . . . . . . . . . . . . . . . . 341
Table 285 - Compression types and arguments . . . . . . . . . . . . . . . 341
Table 286 - OBJECT POSITION command . . . . . . . . . . . . . . . . . . . 342
Table 287 - Position function . . . . . . . . . . . . . . . . . . . . . . 342
Table 288 - READ command. . . . . . . . . . . . . . . . . . . . . . . . . 344
Table 289 - Data type codes . . . . . . . . . . . . . . . . . . . . . . . 344
Table 290 - SCAN command. . . . . . . . . . . . . . . . . . . . . . . . . 345
Table 291 - SEND command. . . . . . . . . . . . . . . . . . . . . . . . . 345
Table 292 - SET WINDOW command. . . . . . . . . . . . . . . . . . . . . . 346
Table 293 - Set window data header. . . . . . . . . . . . . . . . . . . . 346
Table 294 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 347
Table 295 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 347
Table 296 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 348
Table 297 - Measurement units page. . . . . . . . . . . . . . . . . . . . 348
Table 298 - Basic measurement units . . . . . . . . . . . . . . . . . . . 349
Table 299 - Commands for optical memory devices . . . . . . . . . . . . . 353
Table 300 - ERASE(10) command . . . . . . . . . . . . . . . . . . . . . . 354
Table 301 - ERASE(12) command . . . . . . . . . . . . . . . . . . . . . . 355
Table 302 - MEDIUM SCAN command . . . . . . . . . . . . . . . . . . . . . 356
Table 303 - MEDIUM SCAN parameter list. . . . . . . . . . . . . . . . . . 357
Table 304 - READ(12) command. . . . . . . . . . . . . . . . . . . . . . . 358
Table 305 - READ DEFECT DATA(12) command. . . . . . . . . . . . . . . . . 358
Table 306 - READ DEFECT DATA(12) list header. . . . . . . . . . . . . . . 359
Table 307 - READ GENERATION command . . . . . . . . . . . . . . . . . . . 360
Table 308 - Maximum generation data block . . . . . . . . . . . . . . . . 360
Table 309 - READ UPDATED BLOCK(10) command. . . . . . . . . . . . . . . . 361
Table 310 - SEARCH DATA(12) commands. . . . . . . . . . . . . . . . . . . 362
Table 311 - SET LIMITS(12) command. . . . . . . . . . . . . . . . . . . . 362
Table 312 - UPDATE BLOCK command. . . . . . . . . . . . . . . . . . . . . 363
Table 313 - VERIFY command. . . . . . . . . . . . . . . . . . . . . . . . 364
Table 314 - VERIFY(12) command. . . . . . . . . . . . . . . . . . . . . . 365
Table 315 - WRITE(10) command . . . . . . . . . . . . . . . . . . . . . . 366
Table 316 - WRITE(12) command . . . . . . . . . . . . . . . . . . . . . . 367
Table 317 - WRITE AND VERIFY(10) command. . . . . . . . . . . . . . . . . 367
Table 318 - WRITE AND VERIFY(12) command. . . . . . . . . . . . . . . . . 368
Table 319 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 369
Table 320 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 369
Table 321 - Optical memory medium-type codes. . . . . . . . . . . . . . . 369
Table 322 - Optical memory device specific parameter. . . . . . . . . . . 370
Table 323 - Optical memory density codes. . . . . . . . . . . . . . . . . 370
Table 324 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 371
Table 325 - Optical memory page . . . . . . . . . . . . . . . . . . . . . 372
Table 326 - Volume tag information format . . . . . . . . . . . . . . . . 376
Table 327 - Commands for medium changer devices . . . . . . . . . . . . . 377
Table 328 - EXCHANGE MEDIUM command . . . . . . . . . . . . . . . . . . . 378
Table 329 - INITIALIZE ELEMENT STATUS command . . . . . . . . . . . . . . 379
Table 330 - MOVE MEDIUM command . . . . . . . . . . . . . . . . . . . . . 380
Table 331 - POSITION TO ELEMENT command . . . . . . . . . . . . . . . . . 381
Table 332 - READ ELEMENT STATUS command . . . . . . . . . . . . . . . . . 382
Table 333 - Element type code . . . . . . . . . . . . . . . . . . . . . . 382
Table 334 - Element status data . . . . . . . . . . . . . . . . . . . . . 383
Table 335 - Element status page . . . . . . . . . . . . . . . . . . . . . 385
Table 336 - Medium transport element descriptor . . . . . . . . . . . . . 386
Table 337 - Storage element descriptor. . . . . . . . . . . . . . . . . . 387
Table 338 - Import export element descriptor. . . . . . . . . . . . . . . 388
Table 339 - Data transfer element descriptor. . . . . . . . . . . . . . . 389
Table 340 - REQUEST VOLUME ELEMENT ADDRESS command. . . . . . . . . . . . 390
Table 341 - Volume element address header format. . . . . . . . . . . . . 391
Table 342 - RELEASE command . . . . . . . . . . . . . . . . . . . . . . . 392
Table 343 - RESERVE command . . . . . . . . . . . . . . . . . . . . . . . 393
Table 344 - Data format of element list descriptors . . . . . . . . . . . 394
Table 345 - SEND VOLUME TAG command . . . . . . . . . . . . . . . . . . . 395
Table 346 - Send volume tag action codes. . . . . . . . . . . . . . . . . 396
Table 347 - Send volume tag parameters format . . . . . . . . . . . . . . 396
Table 348 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 398
Table 349 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 398
Table 350 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 399
Table 351 - Device capabilities page. . . . . . . . . . . . . . . . . . . 399
Table 352 - Element address assignment page . . . . . . . . . . . . . . . 400
Table 353 - Transport geometry parameters page. . . . . . . . . . . . . . 403
Table 354 - Commands for communications devices . . . . . . . . . . . . . 407
Table 355 - GET MESSAGE(6) command. . . . . . . . . . . . . . . . . . . . 408
Table 356 - GET MESSAGE(10) command . . . . . . . . . . . . . . . . . . . 408
Table 357 - GET MESSAGE(12) command . . . . . . . . . . . . . . . . . . . 409
Table 358 - SEND MESSAGE(6) command . . . . . . . . . . . . . . . . . . . 410
Table 359 - SEND MESSAGE(10) command. . . . . . . . . . . . . . . . . . . 410
Table 360 - SEND MESSAGE(12) command. . . . . . . . . . . . . . . . . . . 411
Table 361 - Diagnostic page codes . . . . . . . . . . . . . . . . . . . . 412
Table 362 - Log page codes. . . . . . . . . . . . . . . . . . . . . . . . 412
Table 363 - Mode page codes . . . . . . . . . . . . . . . . . . . . . . . 413
Table B.1 - Fast SCSI jitter budget . . . . . . . . . . . . . . . . . . . 418
Table B.2 - Mapping of jitter to SCSI . . . . . . . . . . . . . . . . . . 418
Table D.1 - ASC and ASCQ assignments. . . . . . . . . . . . . . . . . . . 421
Table D.2 - SCSI-2 Operation Codes. . . . . . . . . . . . . . . . . . . . 427
Table E.1 - Vendor identification list. . . . . . . . . . . . . . . . . . 431





Foreword

This Small Computer System Interface -2 standard is designed to provide
an efficient peer-to-peer I/O bus with up to 16 devices, including one or
more hosts.  Data may be transferred asynchronously at rates that only
depend on device implementation and cable length.  Synchronous data
transfers are supported at rates up to 10 mega-transfers per second.  With
the 32-bit wide data transfer option, data rates of up to 40 megabytes per
second are possible.  This standard includes command sets for magnetic and
optical disks, tapes, printers, processors, CD-ROMs, scanners, medium
changers, and communications devices.




Introduction

This part of ANSI X3.131-199x replaces ANSI X3.131-1986 Small Computer
System Interface.

The clauses contain material as described below.

   Clause 1         describes the scope.

   Clause 2         lists the normative references.

   Clause 3         provides a glossary common to the whole document.

   Clause 4         provides descriptions and conventions.

   Clause 5         describes the physical characteristics.

   Clause 6         describes the logical characteristics of the interface.

   Clause 7         describes the SCSI command and status structure.

   Clause 8         specifies those commands that have a consistent meaning for
                    all device types.

   Clause 9         specifies commands for direct-access devices.

   Clause 10            specifies commands for sequential-access devices.

   Clause 11            specifies commands for printer devices.

   Clause 12            specifies commands for processor devices.

   Clause 13            specifies commands for write-once devices.

   Clause 14            specifies commands for CD-ROM devices.

   Clause 15            specifies commands for scanner devices.

   Clause 16            specifies commands for optical memory devices.

   Clause 17            specifies commands for medium changer devices.

   Clause 18            specifies commands for communications devices.

   Annex A              illustrates SCSI signal sequence.

   Annex B              illustrates fast SCSI skew time.

   Annex C              describes other SCSI standardization activities.

   Annex D              contains SCSI-2 additional sense codes and operation 
                        codes in numeric order.

   Annex E              contains the list of SCSI-2 vendor identifications.

The SCSI protocol is designed to provide an efficient peer-to-peer I/O bus
with up to 16 devices, including one or more hosts.  Data may be
transferred asynchronously at rates that only depend on device
implementation and cable length.  Synchronous data transfers are supported
at rates up to 10 mega-transfers per second.  With the 32-bit wide data
transfer option, data rates of up to 40 megabytes per second are possible.

SCSI-2 includes command sets for magnetic and optical disks, tapes,
printers, processors, CD-ROMs, scanners, medium changers, and
communications devices.

In 1985, when the first SCSI standard was being finalized several
manufacturers wanted to increase the mandatory requirements of SCSI and
to define further features for direct-access devices.  Rather than delay
the SCSI standard, formed an ad hoc group was formed to develop a working
paper that was eventually called the Common Command Set (CCS).  Many disk
products were designed using this working paper.

In parallel with the development of the CCS working paper, work began on
an enhanced SCSI standard which was named SCSI-2.  SCSI-2 included the
results of the CCS working paper and extended them to all device types. 
It also added caching commands, performance enhancement features, and
other worthwhile functions.  While SCSI-2 has gone well beyond the
original SCSI standard (now referred to as SCSI-1), it retains a high
degree of compatibility with SCSI-1 devices.

SCSI-2 has evolved significantly from SCSI-1 with the new document nearly
three times larger.  Most of the changes are additions, but several
obsolete options were removed:
   a)     Single initiator option
   b)     Non-arbitrating systems option
   c)     The SCSI-1 alternative 1 shielded connector
   d)     Non-extended sense data option
   e)     Reservation queuing option
   f)     The read-only device command set.

There are several new low-level requirements:
   a)     Parity is now required
   b)     Initiators are required to provide terminator power
   c)     The arbitration delay was increased from 2.2 to 2.4 us
   d)     Message support is now required.

Several low-level options were added:
   a)     Wide SCSI (up to 32 bits wide using a second cable)
   b)     Fast SCSI (synchronous data transfers of up to 10 mega-transfers per
          second)
   c)     Command queuing (up to 256 commands per initiator per logical unit)
   d)     High-density connector alternatives were added
   e)     Asynchronous event notification
   f)     Extended contingent allegiance.

New command sets were added including:
   a)     CD-ROM (replaces read-only device)
   b)     Scanner device
   c)     Optical memory device (provides for write-once, read-only, and
          erasable media)
   d)     Medium changer device
   e)     Communications device

All command sets were enhanced:
   a)     Device models were added
   b)     Extended sense was expanded
   c)     The INQUIRY data was expanded
   d)     The MODE SELECT and MODE SENSE commands were paged for all device
          types
   e)     The CHANGE DEFINITION, LOG SELECT, LOG SENSE, READ BUFFER, and WRITE
          BUFFER commands were added for all device types
   f)     The COPY command definition was expanded to include inexact block
          size handling and an image copy option.
   g)     The direct-access device command set was enhanced to add cache
          management, several new commands and to provide more initiator
          control over defect management
   h)     The sequential-access device command set was enhanced to add a
          partitioned media concept
   i)     The printer device command set was enhanced by adding several mode
          pages
   j)     The write-once (optical) device command set was enhanced by adding
          several new commands plus extending several command descriptor
          blocks to twelve bytes to accommodate larger transfer lengths.





draft proposed American National Standard
for Information Systems



Information technology - Small Computer
System Interface-2

1 Scope

This standard defines an input/output bus for interconnecting computers
and peripheral devices.  It defines extensions to the Small Computer
System Interface (ISO 9316:1989), referred to herein as SCSI-1.  It also
provides more complete standardization of the previously defined command
sets.  It includes the necessary specification of the mechanical,
electrical, and functional characteristics of the interface to allow
inter-operability of conforming devices.  This standard is referred to
herein as SCSI-2.  The term SCSI is used wherever it is not necessary to
distinguish between the two versions.


2 Normative references

The following standards contain provisions which, through reference in
this text, constitute provisions of this standard.  At the time of
publication, the editions indicated were valid.  All standards are subject
to revision, and parties to agreements based on this standard are
encouraged to investigate the possibility of applying the most recent
editions of the standards indicated below.  Members of IEC and ISO
maintain registers of currently valid standards.

ISO/IEC 10149:1989, Information technology - Data interchange on read-only
120 mm optical data disks (CD-ROM).

IEC 908:1987, Compact Disc Digital Audio System.

American National Standard ANSI BSR X3.170A-1991, Enhanced Small Device
Interface.

EIA RS-485-1983, Standard for Electrical Characteristics of Generators
and Receivers for use in Balanced Digital Multipoint Systems.


3 Definitions, symbols and abbreviations


3.1 Definitions

For the purposes of this standard, the following definitions apply.

3.1.1 active I/O process: An I/O process that is presently in execution
(not queued).

3.1.2 byte: Indicates an 8-bit construct.

3.1.3 command descriptor block (CDB): The structure used to communicate
commands from an initiator to a target.

3.1.4 command queue: The queue used to store the queued I/O processes (see
7.8).

3.1.5 connect: The initiator function that selects a target to establish
a nexus and to start an I/O process.  The connection that results is an
initial connection.

3.1.6 connection: An initial connection or reconnection.  A connection can
only occur between one initiator and one target. 

3.1.7 contact: The electrically-conductive portion of a connector
associated with a single conductor in a cable.

3.1.8 contingent allegiance: A condition typically generated by a CHECK
CONDITION status during which a target preserves sense data (see 7.6.).

3.1.9 current I/O process: The I/O process that is presently connected on
the SCSI bus.

3.1.10 disconnect: The action that occurs when an SCSI device releases
control of the SCSI bus, allowing it to go to the BUS FREE phase.

3.1.11 extended contingent allegiance: A condition generated by an
INITIATE RECOVERY message to assist in extended error recovery procedures
in multi-initiator systems (see 7.7).

3.1.12 field: A group of one or more contiguous bits.

3.1.13 host adapter: A device which connects between a host system and the
SCSI bus.  The device usually performs the lower layers of the SCSI
protocol and normally operates in the initiator role.  This function may
be integrated into the host system.

3.1.14 initial connection: An initial connection is the result of a
connect and it exists from the assertion of the BSY signal in a SELECTION
phase until the next BUS FREE phase occurs.

3.1.15 initiator: An SCSI device that requests an I/O process to be
performed by another SCSI device (a target).

3.1.16 invalid: An illegal (reserved) or unsupported field or code value.

3.1.17 I/O process: An I/O process consists of one initial connection and
zero or more reconnections, all pertaining to a single command or a group
of linked commands.  More specifically, the connection(s) pertain to a
nexus in which zero or more command descriptor blocks are transferred. 
An I/O process begins with the establishment of a nexus.  An I/O process
normally ends with the BUS FREE phase following successful transfer of a
COMMAND COMPLETE or a RELEASE RECOVERY message.  An I/O process also ends
with the BUS FREE phase following an ABORT, ABORT TAG, BUS DEVICE RESET,
CLEAR QUEUE message, or a hard RESET condition, or an unexpected
disconnect occurs.

3.1.18 I_T nexus: A nexus which exists between an initiator and a target.

3.1.19 I_T_L nexus: A nexus which exists between an initiator, a target,
and a logical unit.  This relationship replaces the prior I_T nexus.

3.1.20 I_T_R nexus: A nexus which exists between an initiator, a target,
and a target routine.  This relationship replaces the prior I_T nexus.

3.1.21 I_T_x nexus: A nexus which is either an I_T_L or I_T_R nexus.

3.1.22 I_T_L_Q nexus: A nexus between an initiator, a target, a logical
unit, and a queue tag following the successful receipt of one of the queue
tag messages.  This relationship replaces the prior I_T_L nexus.

3.1.23 I_T_x_y nexus: A nexus which is either an I_T_x or I_T_L_Q.

3.1.24 logical block: A unit of data supplied or requested by an
initiator.

3.1.25 logical unit: A physical or virtual peripheral device addressable
through a target.

3.1.26 logical unit number: An encoded three-bit identifier for the
logical unit.

3.1.27 mandatory: The referenced item is required to claim compliance with
this standard.

3.1.28 nexus: A relationship that begins with the establishment of an
initial connection and ends with the completion of the I/O process.  The
relationship may be restricted to specify a single logical unit or target
routine by the successful transfer of an IDENTIFY message.  The
relationship may be further restricted by the successful transfer of a
queue tag message.

3.1.29 one: A true signal value or a true condition of a variable.

3.1.30 optional: The referenced item is not required to claim compliance
with this standard.  Implementation of an optional item must be as defined
in this standard.

3.1.31 page: Several commands use regular parameter structures that are
referred to as pages.  These pages are identified with a value known as
a page code.
 
3.1.32 peripheral device: A physical peripheral device that can be
attached to an SCSI device, which connects to the SCSI bus.  The
peripheral device and the SCSI device (peripheral controller) may be
physically packaged together.  Often there is a one-to-one mapping between
peripheral devices and logical units, but this is not required.  Examples
of peripheral devices are: magnetic disks, printers, optical disks, and
magnetic tapes.

3.1.33 queue tag: The value associated with an I/O process that uniquely
identifies it from other queued I/O processes in the logical unit for the
same initiator.

3.1.34 queued I/O process: An I/O process that is in the command queue.

3.1.35 reconnect: The act of reviving a nexus to continue an I/O process. 
A target reconnects to an initiator by using the RESELECTION and MESSAGE
IN phases after winning arbitration.  An initiator reconnects to a target
by using the SELECTION and MESSAGE OUT phases after winning arbitration
(see 7.5.2).

3.1.36 reconnection: A reconnection is the result of a reconnect and it
exists from the assertion of the BSY signal in a SELECTION or RESELECTION
phase until the next BUS FREE phase occurs.

3.1.37 reserved: Identifies bits, fields, and code values that are set
aside for future standardization.

3.1.38 SCSI address: The hex representation of the unique address (0-15)
assigned to an SCSI device.  This address would normally be assigned and
set in the SCSI device during system installation.

3.1.39 SCSI ID: The bit-significant representation of the SCSI address
referring to one of the signal lines DB(7-0).

3.1.40 SCSI device: A host adapter or a target controller that can be
attached to the SCSI bus.

3.1.41 signal assertion: The act of driving a signal to the true state.

3.1.42 signal negation: The act of driving a signal to the false state or
allowing the cable terminators to bias the signal to the false state (by
placing the driver in the high impedance condition).

3.1.43 signal release: The act of allowing the cable terminators to bias
the signal to the false state (by placing the driver in the high impedance
condition).

3.1.44 status: One byte of information sent from a target to an initiator
upon completion of each command.

3.1.45 target: An SCSI device that performs an operation requested by an
initiator.

3.1.46 target routine: A target routine is an I/O process directed to a
target, and not to a logical unit (see 6.6.7).

3.1.47 third-party: When used in reference to COPY commands, third-party
means a COPY command issued to one device to perform a copy operation
between two other devices.  When used in reference to RESERVE, or RELEASE
commands, third-party means a reservation made on behalf of another device
(e.g. A processor device requests that a direct-access device reserve
itself for exclusive use by a sequential-access device).

3.1.48 unexpected disconnect: A disconnection that occurs as a result of
an exception condition (see 6.1.1).

3.1.49 vendor-specific (VS): Something (e.g. a bit, field, code value,
etc.) that is not defined by this standard and may be used differently in
various implementations.

3.1.50 zero: A false signal value or a false condition of a variable.

3.2 Symbols and abbreviations

AEN       Asynchronous event notification (see 7.5.5)
AWG       American Wire Gauge
LSB       Least significant bit
LUN       Logical unit number
MSB       Most significant bit
SCSI      Either SCSI-1 or SCSI-2
SCSI-1       The Small Computer System Interface (ISO 9316:1989)
SCSI-2       The Small Computer System Interface - 2 (this atandard)



4 General

4.1 Overview

SCSI is a local I/O bus that can be operated over a wide range of data
rates.  The primary objective of the interface is to provide host
computers with device independence within a class of devices.  Thus,
different disk drives, tape drives, printers, optical media drives, and
other devices can be added to the host computers without requiring
modifications to generic system hardware or software.  Provision is made
for the addition of special features and functions through the use of
vendor unique fields and codes.  Reserved fields and codes are provided
for future standardization.

A second key objective of SCSI-2 is to provide compatibility with those
SCSI-1 devices that support bus parity and that meet conformance level 2
of SCSI-1.  While some previously vendor unique commands and parameters
have been defined by the SCSI-2 standard, devices meeting SCSI-1 and SCSI-
2 can co-exist on the same bus.  It is intended that those operating
systems providing support for both command sets be able to operate in
environments mixing SCSI-1 and SCSI-2 devices.  Properly conforming SCSI-1
devices, both initiators and targets, should respond in an acceptable
manner to reject SCSI-2 protocol extensions.  All SCSI-2 protocol
extensions are designed to be permissive of such rejections and to allow
the SCSI-1 device to continue operation without requiring the use of the
extension.

A third key objective of SCSI-2 is to move device-dependent intelligence
out to the SCSI-2 devices.  The command set definitions allow a
sophisticated operating system to obtain all required initialization
information from the attached SCSI-2 devices.  The formalized sequence of
requests identify the type of attached SCSI-2 device, the characteristics
of the device, and all the changeable parameters supported by the device. 
Further requests can determine the readiness of the device to operate, the
types of media supported by the device, and all other pertinent system
information.  Those parameters not required by the operating system for
operation, initialization, or system tuning are not exposed to the SCSI-2
interface, but are managed by the SCSI-2 device itself.

The interface uses logical rather than physical addressing for all data
blocks.  For direct-access devices, each logical unit may be interrogated
to determine how many blocks it contains.  A logical unit may coincide
with all or part of a peripheral device.

The interface protocol includes provision for the connection of multiple
initiators (SCSI devices capable of initiating an operation) and multiple
targets (SCSI devices capable of responding to a request to perform an
operation).  Distributed arbitration (i.e. bus-contention logic) is built
into the architecture of SCSI.  A priority system awards interface control
to the highest priority SCSI device that is contending for use of the bus. 
The time to complete arbitration is independent of the number of devices
that are contending and can be completed in less than 10 us.

There are two electrical alternatives: single-ended and differential. 
Single-ended and differential devices are electrically incompatible and
can not be mixed on the same physical bus.

Provision is made for cable lengths up to 25 m using differential drivers
and receivers.  A single-ended driver and receiver configuration is
defined for cable lengths of up to 6 m and is primarily intended for
applications within a cabinet.

Arbitration is defined to permit multiple initiators and to permit
concurrent I/O operations.  All SCSI devices are required to be capable
of operating with the defined asynchronous transfer protocol.  In
addition, an optional synchronous transfer protocol is defined.  A message
protocol for control of the interface is also specified.  In most cases,
messages are not directly apparent to the host computer software.  

Commands are classified as mandatory, optional, or vendor-specific.  SCSI
devices are required to implement all mandatory commands defined for the
appropriate device type and may implement other commands as well.  SCSI
devices contain commands that facilitate the writing of self-configuring
software drivers that can discover all necessary attributes without prior
knowledge of specific peripheral characteristics (such as storage
capacity).  Many commands also implement a very large logical block
address space (232 blocks), although some commands implement a somewhat
smaller logical block address space (221 blocks). 

Starting with clause 8 and for each clause on a specific device type, the
clause is constructed of at least four subclauses.  The first subclause
is the model for the device type.  The model establishes the framework for
interpreting the commands for the device type.  The attributes and
capabilities of the device type are discussed and examples are given.  The
second subclause defines the commands applicable to the device type.  The
third subclause defines the parameters applicable to the device type. 
These are the diagnostic parameters, log parameters, mode parameters and
vital product data parameters that are transmitted as part of the
appropriate commands.  Most of the parameters are formatted into pages. 
The fourth subclause gives the definition of terms that apply specifically
to that device type. 

Starting with clause 9 the commands in each of these clauses are unique
to the device type, or they have interpretations, fields, or features that
are specific for the device type.  Thus, for example, although the WRITE
command is used for several device types, it has a somewhat different form
for each type, with different parameters and meanings.  Therefore, it is
specified separately for each device type.

4.2 Conventions

Certain words and terms used in this International Standard have a
specific meaning beyond the normal English meaning.  These words and terms
are defined either in clause 3 or in the text where they first appear. 
Names of signals, phases, messages, commands, statuses, sense keys,
additional sense codes, and additional sense code qualifiers are in all
uppercase (e.g. REQUEST SENSE).  Lower case is used for words having the
normal English meaning.

Fields containing only one bit are usually referred to as the name bit
instead of the name field.

Numbers that are not immediately followed by lower-case b or h are decimal
values.

Numbers immediately followed by lower-case b (xxb) are binary values.

Numbers immediately followed by lower-case h (xxh) are hexadecimal values.


5 Physical characteristics

This clause contains the physical definition of SCSI-2.  The connectors,
cables, signals, terminators, and bus timing values needed to implement
the interface are covered.

5.1 Physical description

SCSI devices are daisy-chained together using a common 50-conductor
A cable and, optionally, a 68-conductor B cable.  Both ends of each cable
are terminated.  All signals are common between all SCSI devices on the
A cable.  In systems that employ the wide SCSI option, wide SCSI devices
additionally connect to the B cable.  Various width SCSI devices may be
mixed.

   NOTE 1 An alternate 16-bit single-cable solution and an alternate 32-bit
   solution is being defined and the B cable definition will be removed in a
   future version of SCSI.

Two driver/receiver alternatives are specified:
   a)     Single-ended drivers and receivers, which allow a maximum cable
          length of 6 m (primarily for connection within an enclosure).
   b)     Differential drivers and receivers, which allow a maximum cable
          length of 25 m.

The single-ended and differential alternatives are mutually exclusive on
the same physical bus.

   NOTE 2 Use of single-ended drivers and receivers with the fast synchronous
   data transfer option is not recommended.

5.2 Cable requirements  

The characteristic impedance of the cable should be no less than 90 ohms
and no greater than 140 ohms.  The characteristic impedance of the cable
used when implementing the fast synchronous data transfer option is
defined in 5.2.3.

   NOTE 3 There are successful single-ended implementations using cables with
   less than 90 ohms characteristic impedance.  However, system integrity in
   single-ended implementations is improved when the characteristic impedance
   of the cable is greater than 90 ohms. Cable parameters other than
   characteristic impedance are critical to system integrity.  Alternative 
   cable parameters are being investigated as a part of a future version of 
   SCSI.

A minimum conductor size of 0,080 42 mm2 (28 AWG) should be used to
minimize noise effects and ensure proper distribution of terminator power. 
A smaller conductor size may be used for signals other than terminator
power. 

   NOTES     
   4 To minimize discontinuities and signal reflections, cables of different
   impedances should not be used in the same bus.  Implementations may require
   trade-offs in shielding effectiveness, cable length, the number of loads,
   transfer rates, and cost to achieve satisfactory system operation. 
   5 To minimize discontinuities due to local impedance variation, a flat cable
   should be spaced at least 1,27 mm (0,050 in) from other cables, any other
   conductor, or the cable itself when the cable is folded.
   6 Regulatory agencies may require use of larger wire size.

5.2.1 Single-ended cable

A 50-conductor flat cable or 25-signal twisted-pair cable shall be used
for the A cable.  A 68-conductor flat cable or 34-signal twisted-pair
cable shall be used for the B cable if the wide SCSI option is
implemented.  The maximum cumulative cable length shall be 6,0 m.  If
twisted-pair cables are used, then twisted pairs in the cable shall be
wired to physically opposing contacts in the connector.

A stub length of no more than 0,1 m is allowed off the mainline
interconnection within any connected equipment or from any connected
point.

   NOTE 7 Stub clustering should be avoided.  Stubs should be spaced at least
   0,3 m apart.

SCSI bus termination shall be at each end of the cable and may be internal
to the SCSI devices that are at the ends of the cable.

5.2.2 Differential cable

A 50-conductor flat cable or 25-signal twisted-pair cable shall be used
for the A cable.  A 68-conductor flat cable or 34-signal twisted-pair
cable shall be used for the B cable if the wide SCSI option is
implemented.  The maximum cumulative cable length shall be 25 m.  If
twisted-pair cables are used, then twisted pairs in the cable shall be
wired to physically opposing contacts in the connector.

A stub length of no more than 0,2 m is allowed off the mainline
interconnection within any connected equipment or from any connected
point.

SCSI bus termination shall be at each end of the cable and may be internal
to the SCSI devices that are at the ends of the cable.

   NOTE 8 The use of twisted pair cable (either twisted-flat or discrete wire
   twisted pairs) is strongly recommended.  Without twisted pairs, even at slow
   data rates and very short distances, crosstalk between adjacent signals
   causes spurious pulses with differential signals.

5.2.3 Cable requirements for fast synchronous data transfer

In systems which use the fast synchronous data transfer option (see 5.8),
the A and B cables should meet the conductor size recommendation in 5.2. 
The cable should have an overall shield suitable for termination in a
shielded connector.

In such systems, the cables shall have the following electrical
characteristics:
   Characteristic impedance:               90 ohms to 132 ohms
   Signal attenuation:                     0,095 dB maximum per metre at 5 Mhz
   Pair-to-pair propagation delay delta:   0,20 ns maximum per metre
   DC resistance:                          0,230 ohms maximum per metre at 20 
                                           degrees C

5.3 Connector requirements

Two types of connectors are defined: non-shielded and shielded.  The non-
shielded connectors are typically used for in-cabinet applications. 
Shielded connectors are typically used for external applications where
electromagnetic compatibility (EMC) and electrostatic discharge (ESD)
protection may be required.  Either type of connector may be used with the
single-ended or differential drivers.

5.3.1 Non-shielded connector requirements

Two non-shielded connector alternatives are specified for the A cable and
one non-shielded connector is specified for the B cable.

5.3.1.1 Non-shielded connector alternative 1 - A cable

The alternative 1 non-shielded high-density SCSI device connector for the
A cable (see figure 1) shall be a 50-conductor connector consisting of two
rows of 25 female contacts with adjacent contacts 1,27 mm (0,05 in) apart. 
The non-mating portion of the connector is shown for reference only.

The alternative 1 non-shielded high-density cable connector for the A
cable (see figure 2) shall be a 50-conductor connector consisting of two
rows of 25 male contacts with adjacent contacts 1,27 mm (0,05 in) apart. 
The non-mating portion of the connector is shown for reference only.

5.3.1.2 Non-shielded connector alternative 2 - A cable

The alternative 2 non-shielded low-density SCSI device connector for the
A cable (see figure 3) shall be a 50-conductor connector consisting of two
rows of 25 male pins with adjacent pins 2,54 mm (0,1 in) apart.  A shroud
and header body should be used.  The non-mating portion of the connector
is shown for reference only.

The alternative 2 non-shielded low-density cable connector for the A cable
(see figure 4) shall be a 50-conductor connector consisting of two rows
of 25 female contacts with adjacent contacts 2,54 mm (0,1 in) apart.  It
is recommended that keyed connectors be used.

5.3.1.3 Non-shielded connector - B cable

The non-shielded high-density SCSI device connector for the B cable (see
figure 1) shall be a 68-conductor connector consisting of two rows of 34
female contacts with adjacent contacts 1,27 mm (0,05 in) apart.  The non-
mating portion of the connector is shown for reference only.

The non-shielded high-density cable connector for the B cable (see figure
2) shall be a 68-conductor connector consisting of two rows of 34 male
contacts with adjacent contacts 1,27 mm (0,05 in) apart.  The non-mating
portion of the connector is shown for reference only.


















































   Figure 1 - 50/68-contact non-shielded high-density SCSI device connector
                              (A cable/B cable)






















































      Figure 2 - 50/68-contact non-shielded high-density cable connector
                              (A cable/B cable)




















































     Figure 3 - 50-contact non-shielded low-density SCSI device connector
                                  (A cable)






















































        Figure 4 - 50-Contact non-shielded low-density cable connector
                                  (A cable)


5.3.2 Shielded connector requirements

Two shielded connector alternatives are specified for the A cable and one
shielded connector is specified for the B cable.  The connector shielding
system should provide a d.c. resistance of less than 10 mohms from the
cable shield at its termination point to the SCSI device enclosure.

In order to support daisy-chain connections, SCSI devices that use
shielded connectors should provide two shielded device connectors on the
device enclosure.  These two connectors may be wired one-to-one with a
stub to the SCSI device's drivers and receivers provided the maximum stub
length is not violated.  Alternatively, two cables may be run from the two
shielded connectors to the drivers and receivers so that the maximum stub
length is not violated.  The length of the cable within the device
enclosure is included when calculating the total cable length of the SCSI
bus.

   NOTE 9 SCSI-1 defined three shielded connector systems in an annex.  The
   alternative 1 shielded connector of SCSI-1 has been replaced by a high-
   density connector in this International Standard.  The alternative 2 
   shielded  connector remains unchanged.  The EUROCARD boxes shielded 
   connector system of SCSI-1 has been deleted in this International Standard.

5.3.2.1 Shielded connector alternative 1 - A cable

The shielded high-density SCSI device connector for the A cable (see
figure 5) is a 50-conductor connector consisting of two rows of 25 female
contacts with adjacent contacts 1,27 mm (0,05 in) apart.  The non-mating
portion of the connector is shown for reference only.

The shielded high-density cable connector for the A cable (see figure 6)
is a 50-conductor connector consisting of two rows of 25 male contacts
with adjacent contacts 1,27 mm (0,05 in) apart.  The non-mating portion
of the connector is shown for reference only.

5.3.2.2 Shielded connector alternative 2 - A cable

The shielded low-density device connector for the A cable (see figure 7)
is a 50-conductor connector consisting of two rows of ribbon contacts
spaced 2,16 mm (0,085 in) apart.  The non-mating portion of the connector
is shown for reference only.

The shielded low-density cable connector for the A cable (see figure 8)
is a 50-conductor connector consisting of two rows of ribbon contacts
spaced 2,16 mm (0,085 in) apart.  The non-mating portion of the connector
is shown for reference only.

5.3.2.3 Shielded connector - B cable

The shielded high-density SCSI device connector for the B cable (see
figure 5) is a 68-conductor connector consisting of two rows of 34 female
contacts with adjacent contacts 1,27 mm (0,05 in) apart.  The non-mating
portion of the connector is shown for reference only.

The shielded high-density cable connector for the B cable (see figure 6)
is a 68-conductor connector consisting of two rows of 34 male contacts
with adjacent contacts 1,27 mm (0,05 in) apart.  The non-mating portion
of the connector is shown for reference only.





















































     Figure 5 - 50/68-contact shielded high-density SCSI device connector
                              (A cable/B cable)




















































        Figure 6 - 50/68-contact shielded high-density cable connector
                              (A cable/B cable)




















































       Figure 7 - 50-contact shielded low-density SCSI device connector






















































          Figure 8 - 50-contact shielded low-density cable connector

5.3.3 Connector contact assignments

The connector contact assignments are defined in tables 1 through 5. 
Table 1 defines which of the other four tables to use and which set of
contact assignments to use.

          Table 1 - Cross-reference to connector contact assignments
+==========================-============-=====-=========-==========-=======+
|                          |   Driver/  |     |         |  Contact |       |
|                          |  receiver  |     |Connector|assignment|Contact|
|     Connector type       |    type    |Cable|  figure |   table  |   set |
|--------------------------+------------+-----+---------+----------+-------|
|Non-shielded alternative 1|Single-ended|  A  |  1 & 2  |      2   |    2  |
|Non-shielded alternative 1|Single-ended|  B  |  1 & 2  |      3   |       |
|Non-shielded alternative 1|Differential|  A  |  1 & 2  |      4   |    2  |
|Non-shielded alternative 1|Differential|  B  |  1 & 2  |      5   |       |
|                          |            |     |         |          |       |
|Non-shielded alternative 2|Single-ended|  A  |  3 & 4  |      2   |    1  |
|Non-shielded alternative 2|Differential|  A  |  3 & 4  |      4   |    1  |
|                          |            |     |         |          |       |
| Shielded alternative 1   |Single-ended|  A  |  5 & 6  |      2   |    2  |
| Shielded alternative 1   |Single-ended|  B  |  5 & 6  |      3   |       |
| Shielded alternative 1   |Differential|  A  |  5 & 6  |      4   |    2  |
| Shielded alternative 1   |Differential|  B  |  5 & 6  |      5   |       |
|                          |            |     |         |          |       |
| Shielded alternative 2   |Single-ended|  A  |  7 & 8  |      2   |    2  |
| Shielded alternative 2   |Differential|  A  |  7 & 8  |      4   |    2  |
+==========================================================================+


             Table 2 - Single-ended contact assignments - A cable
+================-===============-=========-===============-================+
|                |  Connector    |         |  Connector    |                |
|                | contact number|  Cable  |contact number |                |
|      Signal    |---------------|conductor|---------------|    Signal      |
|       name     | Set 2 | Set 1 | number  | Set 1 | Set 2 |     name       |
|----------------+-------+-------+---------+-------+-------+----------------|
|      GROUND    |   1   |   1   |  1 |  2 |   2   |  26   |    -DB(0)      |
|      GROUND    |   2   |   3   |  3 |  4 |   4   |  27   |    -DB(1)      |
|      GROUND    |   3   |   5   |  5 |  6 |   6   |  28   |    -DB(2)      |
|      GROUND    |   4   |   7   |  7 |  8 |   8   |  29   |    -DB(3)      |
|      GROUND    |   5   |   9   |  9 | 10 |  10   |  30   |    -DB(4)      |
|      GROUND    |   6   |  11   | 11 | 12 |  12   |  31   |    -DB(5)      |
|      GROUND    |   7   |  13   | 13 | 14 |  14   |  32   |    -DB(6)      |
|      GROUND    |   8   |  15   | 15 | 16 |  16   |  33   |    -DB(7)      |
|      GROUND    |   9   |  17   | 17 | 18 |  18   |  34   |    -DB(P)      |
|      GROUND    |  10   |  19   | 19 | 20 |  20   |  35   |    GROUND      |
|      GROUND    |  11   |  21   | 21 | 22 |  22   |  36   |    GROUND      |
|      RESERVED  |  12   |  23   | 23 | 24 |  24   |  37   |    RESERVED    |
|       OPEN     |  13   |  25   | 25 | 26 |  26   |  38   |    TERMPWR     |
|      RESERVED  |  14   |  27   | 27 | 28 |  28   |  39   |    RESERVED    |
|      GROUND    |  15   |  29   | 29 | 30 |  30   |  40   |    GROUND      |
|      GROUND    |  16   |  31   | 31 | 32 |  32   |  41   |    -ATN        |
|      GROUND    |  17   |  33   | 33 | 34 |  34   |  42   |    GROUND      |
|      GROUND    |  18   |  35   | 35 | 36 |  36   |  43   |    -BSY        |
|      GROUND    |  19   |  37   | 37 | 38 |  38   |  44   |    -ACK        |
|      GROUND    |  20   |  39   | 39 | 40 |  40   |  45   |    -RST        |
|      GROUND    |  21   |  41   | 41 | 42 |  42   |  46   |    -MSG        |
|      GROUND    |  22   |  43   | 43 | 44 |  44   |  47   |    -SEL        |
|      GROUND    |  23   |  45   | 45 | 46 |  46   |  48   |    -C/D        |
|      GROUND    |  24   |  47   | 47 | 48 |  48   |  49   |    -REQ        |
|      GROUND    |  25   |  49   | 49 | 50 |  50   |  50   |    -I/O        |
|---------------------------------------------------------------------------|
|NOTES                                                                      |
|  1 The minus sign next to a signal indicates active low.                  |
|  2 The conductor number refers to the conductor position when using       |
|    0,050 inch centreline flat ribbon cable with a low-density connector or|
|    when using 0,025 inch centreline flat ribbon cable with a high-density |
|    connector.  Other cable types may be used to implement equivalent      |
|    contact assignments.                                                   |
|  3 Two sets of contact assignments are shown.  Refer to table 1 to        |
|    determine which set of contacts applies to each connector.             |
|  4 See 4.4.4 for a definition of the RESERVED lines.                      |
+===========================================================================+



             Table 3 - Single-ended contact assignments - B cable
+================-===============-=========-===============-================+
|                |   Connector   |  Cable  |   Connector   |                |
|      Signal    |    contact    |conductor|    contact    |    Signal      |
|       name     |     number    | number  |     number    |     name       |
|----------------+---------------+---------+---------------+----------------|
|      GROUND    |       1       |  1 |  2 |      35       |    GROUND      |
|      GROUND    |       2       |  3 |  4 |      36       |    -DB(8)      |
|      GROUND    |       3       |  5 |  6 |      37       |    -DB(9)      |
|      GROUND    |       4       |  7 |  8 |      38       |    -DB(10)     |
|      GROUND    |       5       |  9 | 10 |      39       |    -DB(11)     |
|      GROUND    |       6       | 11 | 12 |      40       |    -DB(12)     |
|      GROUND    |       7       | 13 | 14 |      41       |    -DB(13)     |
|      GROUND    |       8       | 15 | 16 |      42       |    -DB(14)     |
|      GROUND    |       9       | 17 | 18 |      43       |    -DB(15)     |
|      GROUND    |      10       | 19 | 20 |      44       |    -DB(P1)     |
|      GROUND    |      11       | 21 | 22 |      45       |    -ACKB       |
|      GROUND    |      12       | 23 | 24 |      46       |    GROUND      |
|      GROUND    |      13       | 25 | 26 |      47       |    -REQB       |
|      GROUND    |      14       | 27 | 28 |      48       |    -DB(16)     |
|      GROUND    |      15       | 29 | 30 |      49       |    -DB(17)     |
|      GROUND    |      16       | 31 | 32 |      50       |    -DB(18)     |
|     TERMPWRB   |      17       | 33 | 34 |      51       |    TERMPWRB    |
|     TERMPWRB   |      18       | 35 | 36 |      52       |    TERMPWRB    |
|      GROUND    |      19       | 37 | 38 |      53       |    -DB(19)     |
|      GROUND    |      20       | 39 | 40 |      54       |    -DB(20)     |
|      GROUND    |      21       | 41 | 42 |      55       |    -DB(21)     |
|      GROUND    |      22       | 43 | 44 |      56       |    -DB(22)     |
|      GROUND    |      23       | 45 | 46 |      57       |    -DB(23)     |
|      GROUND    |      24       | 47 | 48 |      58       |    -DB(P2)     |
|      GROUND    |      25       | 49 | 50 |      59       |    -DB(24)     |
|      GROUND    |      26       | 51 | 52 |      60       |    -DB(25)     |
|      GROUND    |      27       | 53 | 54 |      61       |    -DB(26)     |
|      GROUND    |      28       | 55 | 56 |      62       |    -DB(27)     |
|      GROUND    |      29       | 57 | 58 |      63       |    -DB(28)     |
|      GROUND    |      30       | 59 | 60 |      64       |    -DB(29)     |
|      GROUND    |      31       | 61 | 62 |      65       |    -DB(30)     |
|      GROUND    |      32       | 63 | 64 |      66       |    -DB(31)     |
|      GROUND    |      33       | 65 | 66 |      67       |    -DB(P3)     |
|      GROUND    |      34       | 67 | 68 |      68       |    GROUND      |
|---------------------------------------------------------------------------|
|NOTES                                                                      |
|  1 The minus sign next to a signal indicates active low.                  |
|  2 The conductor number refers to the conductor position when using       |
|    0,025 inch centreline flat ribbon cable.  Other cable types may be used|
|    to implement contact assignments.                                      |
+===========================================================================+


   NOTE 10 An alternate 16-bit single-cable solution and an alternate 32-bit
   solution is being defined and the B cable definition will be removed in a
   future version of SCSI.

             Table 4 - Differential contact assignments - A cable
+================-===============-=========-===============-================+
|                |  Connector    |         |  Connector    |                |
|                |contact number |  Cable  |contact number |                |
|      Signal    |---------------|conductor|---------------|    Signal      |
|       name     | Set 2 | Set 1 | number  | Set 1 | Set 2 |     name       |
|----------------+-------+-------+---------+-------+-------+----------------|
|      GROUND    |   1   |   1   |  1 |  2 |   2   |  26   |    GROUND      |
|      +DB(0)    |   2   |   3   |  3 |  4 |   4   |  27   |    -DB(0)      |
|      +DB(1)    |   3   |   5   |  5 |  6 |   6   |  28   |    -DB(1)      |
|      +DB(2)    |   4   |   7   |  7 |  8 |   8   |  29   |    -DB(2)      |
|      +DB(3)    |   5   |   9   |  9 | 10 |  10   |  30   |    -DB(3)      |
|      +DB(4)    |   6   |  11   | 11 | 12 |  12   |  31   |    -DB(4)      |
|      +DB(5)    |   7   |  13   | 13 | 14 |  14   |  32   |    -DB(5)      |
|      +DB(6)    |   8   |  15   | 15 | 16 |  16   |  33   |    -DB(6)      |
|      +DB(7)    |   9   |  17   | 17 | 18 |  18   |  34   |    -DB(7)      |
|      +DB(P)    |  10   |  19   | 19 | 20 |  20   |  35   |    -DB(P)      |
|      DIFFSENS  |  11   |  21   | 21 | 22 |  22   |  36   |    GROUND      |
|      RESERVED  |  12   |  23   | 23 | 24 |  24   |  37   |    RESERVED    |
|      TERMPWR   |  13   |  25   | 25 | 26 |  26   |  38   |    TERMPWR     |
|      RESERVED  |  14   |  27   | 27 | 28 |  28   |  39   |    RESERVED    |
|      +ATN      |  15   |  29   | 29 | 30 |  30   |  40   |    -ATN        |
|      GROUND    |  16   |  31   | 31 | 32 |  32   |  41   |    GROUND      |
|      +BSY      |  17   |  33   | 33 | 34 |  34   |  42   |    -BSY        |
|      +ACK      |  18   |  35   | 35 | 36 |  36   |  43   |    -ACK        |
|      +RST      |  19   |  37   | 37 | 38 |  38   |  44   |    -RST        |
|      +ACK      |  18   |  35   | 35 | 36 |  36   |  43   |    -ACK        |
|      +RST      |  19   |  37   | 37 | 38 |  38   |  44   |    -RST        |
|      +MSG      |  20   |  39   | 39 | 40 |  40   |  45   |    -MSG        |
|      +SEL      |  21   |  41   | 41 | 42 |  42   |  46   |    -SEL        |
|      +C/D      |  22   |  43   | 43 | 44 |  44   |  47   |    -C/D        |
|      +REQ      |  23   |  45   | 45 | 46 |  46   |  48   |    -REQ        |
|      +I/O      |  24   |  47   | 47 | 48 |  48   |  49   |    -I/O        |
|      GROUND    |  25   |  49   | 49 | 50 |  50   |  50   |    GROUND      |
|---------------------------------------------------------------------------|
|NOTES                                                                      |
|  1 The conductor number refers to the conductor position when using       |
|    0,050 inch centreline flat ribbon cable with a low-density connector or|
|    when using 0,025 inch centreline flat ribbon cable with a high-density |
|    connector.  Other cable types may be used to implement equivalent      |
|    contact assignments.                                                   |
|  2 Two sets of contact assignments are shown.  Refer to table 1 to        |
|    determine which set of contacts applies to each connector.             |
|  3 See 5.4.4 for a definition of the RESERVED lines.                      |
+===========================================================================+


             Table 5 - Differential contact assignments - B cable
+================-===============-=========-===============-================+
|                |   Connector   |  Cable  |   Connector   |                |
|      Signal    |    contact    |conductor|    contact    |    Signal      |
|       name     |     number    | number  |     number    |     name       |
|----------------+---------------+---------+---------------+----------------|
|      GROUND    |       1       |  1 |  2 |      35       |    GROUND      |
|      +DB(8)    |       2       |  3 |  4 |      36       |    -DB(8)      |
|      +DB(9)    |       3       |  5 |  6 |      37       |    -DB(9)      |
|      +DB(10)   |       4       |  7 |  8 |      38       |    -DB(10)     |
|      +DB(11)   |       5       |  9 | 10 |      39       |    -DB(11)     |
|      +DB(12)   |       6       | 11 | 12 |      40       |    -DB(12)     |
|      +DB(13)   |       7       | 13 | 14 |      41       |    -DB(13)     |
|      +DB(14)   |       8       | 15 | 16 |      42       |    -DB(14)     |
|      +DB(15)   |       9       | 17 | 18 |      43       |    -DB(15)     |
|      +DB(P1)   |      10       | 19 | 20 |      44       |    -DB(P1)     |
|      +ACKB     |      11       | 21 | 22 |      45       |    -ACKB       |
|      GROUND    |      12       | 23 | 24 |      46       |    DIFFSENS    |
|      +REQB     |      13       | 25 | 26 |      47       |    -REQB       |
|      +DB(16)   |      14       | 27 | 28 |      48       |    -DB(16)     |
|      +DB(17)   |      15       | 29 | 30 |      49       |    -DB(17)     |
|      +DB(18)   |      16       | 31 | 32 |      50       |    -DB(18)     |
|      TERMPWRB  |      17       | 33 | 34 |      51       |    TERMPWRB    |
|      TERMPWRB  |      18       | 35 | 36 |      52       |    TERMPWRB    |
|      +DB(19)   |      19       | 37 | 38 |      53       |    -DB(19)     |
|      +DB(20)   |      20       | 39 | 40 |      54       |    -DB(20)     |
|      +DB(21)   |      21       | 41 | 42 |      55       |    -DB(21)     |
|      +DB(22)   |      22       | 43 | 44 |      56       |    -DB(22)     |
|      +DB(23)   |      23       | 45 | 46 |      57       |    -DB(23)     |
|      +DB(P2)   |      24       | 47 | 48 |      58       |    -DB(P2)     |
|      +DB(24)   |      25       | 49 | 50 |      59       |    -DB(24)     |
|      +DB(25)   |      26       | 51 | 52 |      60       |    -DB(25)     |
|      +DB(26)   |      27       | 53 | 54 |      61       |    -DB(26)     |
|      +DB(27)   |      28       | 55 | 56 |      62       |    -DB(27)     |
|      +DB(28)   |      29       | 57 | 58 |      63       |    -DB(28)     |
|      +DB(29)   |      30       | 59 | 60 |      64       |    -DB(29)     |
|      +DB(30)   |      31       | 61 | 62 |      65       |    -DB(30)     |
|      +DB(31)   |      32       | 63 | 64 |      66       |    -DB(31)     |
|      +DB(P3)   |      33       | 65 | 66 |      67       |    -DB(P3)     |
|      GROUND    |      34       | 67 | 68 |      68       |    GROUND      |
|---------------------------------------------------------------------------|
|NOTE                                                                       |
|  The conductor number refers to the conductor position when using         |
|  0,025 inch centreline flat ribbon cable.  Other cable types may be used  |
|  to implement equivalent contact assignments.                             |
+===========================================================================+


   NOTE 11 An alternate 16-bit single-cable solution and an alternate 32-bit
   solution is being defined and the B cable definition will be removed in a
   future version of SCSI.


5.4 Electrical description

For the measurements in this subclause, SCSI bus termination is assumed
to be external to the SCSI device.  See 5.4.4 for the terminating
requirements for the RESERVED lines.  SCSI devices may have the provision
for allowing optional internal termination.

5.4.1 Single-ended alternative

All signals not defined as RESERVED, GROUND, or TERMPWR shall be
terminated at both ends of the cable.  The implementor may choose one of
the following two methods to terminate each end (see figures 9 and 10):

   a)     The termination of each signal shall consist of 220 ohms (+/-5%) to
          the TERMPWR line and 330 ohms (+/-5%) to ground.  Using resistors
          with +/-1% tolerance improves noise margins.
   b)     The termination of each signal shall meet these requirements:
       1)    The terminators shall each supply a characteristic impedance
             between 100 ohms and 132 ohms. 
       2)    The terminators shall be powered by the TERMPWR line and may
             receive additional power from other sources but shall not require
             such additional power for proper operation (see 5.4.3).
       3)    The current available to any signal line driver shall not exceed
             48 mA when the driver asserts the line and pulls it to 0,5 V d.c. 
             Only 44,8 mA of this current shall be available from the two
             terminators.
       4)    The voltage on all released signal lines shall be at least 2,5 V
             d.c. when the TERMPWR line is within specified values (see
             5.4.3). 
       5)    These conditions shall be met with any legal configuration of
             targets and initiators as long as at least one device is
             supplying TERMPWR.

The first termination method above is the same as in SCSI-1.  The second
termination method is recommended for better signal quality.

5.4.1.1 Output characteristics

All signals shall use open-collector or three-state drivers.  Each signal
driven by an SCSI device shall have the following output characteristics
when measured at the SCSI device's connector:

VOL (low-level output voltage) = 0,0 to 0,5 V d.c. at 48 mA sinking
(signal assertion)

VOH (high-level output voltage) = 2,5 to 5,25 V d.c. (signal negation)

5.4.1.2 Input characteristics

SCSI devices with power on shall meet the following electrical
characteristics on each signal (including both receivers and passive
drivers):
VIL (low-level input voltage)    = 0,0 V d.c. to 0,8 V d.c. (signal true)
VIH (high-level input voltage)   = 2,0 V d.c. to 5,25 V d.c. (signal false)
IIL (low-level input current)    = -0,4 mA to 0,0 mA at VI = 0,5 V d.c.
IIH (high-level input current)   = 0,0 mAto 0,1 mA at VI = 2,7 V d.c.
Minimum input hysteresis         = 0,2 V d.c.
Maximum input capacitance        = 25 pF (measured at the device connector 
                                   closest to the stub, if any, within the 
                                   device)

It is recommended that SCSI devices with power off also meet the above IIL
and IIH electrical characteristics on each signal.

To achieve maximum noise immunity and to assure proper operation with
complex cable configurations, it is recommended that the nominal switching
threshold be approximately 1,4 V.

5.4.2 Differential alternative

All signals consist of two lines denoted +SIGNAL and -SIGNAL.  A signal
is true when +SIGNAL is more positive than -SIGNAL, and a signal is false
when -SIGNAL is more positive than +SIGNAL.  All assigned signals of the
A and B cables described in 5.6 shall be terminated at each end of the
cable with a terminator network as shown in figure 11.  Resistor
tolerances in the terminator network shall be +/-5 % or less.

The DIFFSENS signal of the connector is used as an active high enable for
the differential drivers.  If a single-ended device or terminator is
inadvertently connected, this signal is grounded, disabling the
differential drivers (see figure 12).

The characteristic impedance of differential terminators is 122 ohms.

5.4.2.1 Output characteristics

Each signal driven by an SCSI device shall have the following output
characteristics when measured at the SCSI device's connector:
VOL (low-level output voltage)    = 1,7 V maximum at IOL (low-level output
                                    current) = 55 mA.
VOH (high-level output voltage)   = 2,7 V minimum at IOH (high-level
                                    output current) = -55 mA.
VOD (differential output voltage) = 1,0 V minimum with common-mode
                                    voltage ranges from -7 V d.c. to +12 V d.c.

VOL and VOH shall be as measured between the output terminal and the SCSI
device's logic ground reference.

The output characteristics shall additionally conform to EIA RS-485-1983.

5.4.2.2 Input characteristics

SCSI devices shall meet the following electrical characteristics on each
signal (including both receivers and passive drivers):
II (input current on either input)    = +/- 2,0 mA maximum.
Maximum input capacitance             = 25 pF.

The II requirement shall be met with the input voltage varying between -7
V d.c. and +12 V d.c., with power on or off, and with the hysteresis
equaling 35 mv, minimum.

The input characteristics shall additionally conform to EIA RS-485-1983.

5.4.3 Terminator power

SCSI initiators shall supply terminator power to the TERMPWR contact(s)
and, if it implements the wide SCSI option, to the TERMPWRB contacts. 
This power shall be supplied through a diode or similar semiconductor that
prevents backflow of power to the SCSI device.  Targets and SCSI devices
that become temporary initiators (e.g. targets which implement the COPY
command or asynchronous event notification) are not required to supply
terminator power.  Any SCSI device may supply terminator power.  Interface
error rates are lower if the termination voltage is maintained at the
extreme ends of the cable.

All terminators independent of location shall be powered from the TERMPWR
and TERMPWRB contact(s).  The use of keyed connectors is recommended in
SCSI devices that provide terminator power to prevent accidental grounding
or the incorrect connection of terminator power.

   NOTE 12 Regulatory agencies may require limiting maximum (short circuit)
   current to the terminator power lines.  Recommended current limiting is 1,5
   A for TERMPWR and 2 A for TERMPWRB.  For systems utilizing multiple
   initiators, the initiators may be configured with option straps or current
   limiting devices.  Maximum available current should not exceed 5 A.

SCSI devices shall sink no more than 1,0 mA from TERMPWR and no more than
1,0 mA from TERMPWRB except to power an optional internal terminator.

Single-ended SCSI devices providing terminator power on cable A shall have
the following characteristics:
VTerm        = 4,25 V d.c. to 5,25 V d.c.
               900 mA minimum source drive capability

Differential SCSI devices providing terminator power on cable A shall have
the following characteristics:
VTerm        = 4,0 V d.c. to 5,25 V d.c.
               600 mA minimum source drive capability

Single-ended SCSI devices providing terminator power on cable B shall have
the following characteristics:
VTerm        = 4,5 V d.c. to 5,25 V d.c.
               1500 mA minimum source drive capability

Differential SCSI devices providing terminator power on cable B shall have
the following characteristics:
VTerm        = 4,0 V d.c. to 5,25 V d.c.
               1000 mA minimum source drive capability

   NOTE 13 It is recommended that the terminator power lines be decoupled at
   each terminator with at least a 2,2 uF high-frequency capacitor to improve
   signal quality.













        Figure 9 - Alternative 1 termination for single-ended devices









































        Figure 10 - Alternative 2 termination for single-ended devices

















               Figure 11 - Termination for differential devices












              Figure 12 - Differential driver protection circuit


5.4.4 RESERVED lines

The lines labelled RESERVED in the A cable contact assignment tables
(table 2 and table 4) shall be connected to ground in the bus terminator
assemblies or in the end devices on the SCSI cable.  The RESERVED lines
should be open in the other SCSI devices, but may be connected to ground.

5.5 SCSI bus

Communication on the SCSI bus is allowed between only two SCSI devices at
any given time.  There is a maximum of eight SCSI devices.  Each SCSI
device has an SCSI ID bit assigned as shown in figure 13.  Three sample
system configurations are shown in figure 14.  There can be any
combination of initiators and targets provided there is at least one of
each.

When two SCSI devices communicate on the SCSI bus, one acts as an
initiator and the other acts as a target.  The initiator originates an
operation and the target performs the operation.  An SCSI device usually
has a fixed role as an initiator or target, but some devices may be able
to assume either role.

An initiator may address up to eight peripheral devices that are connected
to a target.  The target may be physically housed within the peripheral
device in which case the peripheral device is referred to as an embedded
SCSI device.

Certain SCSI bus functions are assigned to the initiator and certain SCSI
bus functions are assigned to the target.  The initiator may arbitrate for
the SCSI bus and select a particular target.  The target may request the
transfer of COMMAND, DATA, STATUS, or other information on the DATA BUS,
and in some cases it may arbitrate for the SCSI bus and reselect an
initiator for the purpose of continuing an operation.

Information transfers on the DATA BUS are asynchronous and follow a
defined REQ/ACK handshake protocol.  One byte of information may be
transferred with each handshake on the A cable and, if the wide data
transfer option is implemented, one or three bytes of information may be
transferred with each handshake on the B cable.  An option is defined for
synchronous data transfer.

























                           Figure 13 - SCSI ID bits














































                    Figure 14 - Sample SCSI configurations

5.6 SCSI bus signals

There are a total of 18 signals on the A cable and 29 signals on the B
cable.  A total of 11 signals are used for control and 36 are used for
data (messages, commands, status and data), including parity.  These
signals are described as follows:

a)        BSY (BUSY).  An OR-tied signal that indicates that the bus is being
          used.

b)        SEL (SELECT).  An OR-tied signal used by an initiator to select a
          target or by a target to reselect an initiator.

   NOTE 14 The SEL signal was not defined as OR-tied in SCSI-1.  It has been
   defined as OR-tied in SCSI-2 in anticipation of needing another OR-tied
   signal for future standardization.  This does not cause an operational
   problem in mixing SCSI-1 and SCSI-2 devices.

c)        C/D (CONTROL/DATA).  A signal driven by a target that indicates
          whether CONTROL or DATA information is on the DATA BUS.  True
          indicates CONTROL.

d)        I/O (INPUT/OUTPUT).  A signal driven by a target that controls the
          direction of data movement on the DATA BUS with respect to an
          initiator. True indicates input to the initiator.  This signal is
          also used to distinguish between SELECTION and RESELECTION phases.

e)        MSG (MESSAGE).  A signal driven by a target during the MESSAGE
          phase.

f)        REQ (REQUEST).  A signal driven by a target on the A cable to
          indicate a request for an ACK information transfer handshake.

g)        REQB (REQUEST).  A signal driven by a target on the B cable to
          indicate a request for an ACKB information transfer handshake.

h)        ACK (ACKNOWLEDGE).  A signal driven by an initiator on the A cable
          to indicate an acknowledgment for a REQ information transfer
          handshake.

i)        ACKB (ACKNOWLEDGE).  A signal driven by an initiator on the B cable
          to indicate an acknowledgment for a REQB information transfer
          handshake.

j)        ATN (ATTENTION).  A signal driven by an initiator to indicate the
          ATTENTION condition.

k)        RST (RESET).  An OR-tied signal that indicates the RESET condition.

l)        DB(7-0,P) (DATA BUS).  Eight data-bit signals, plus a parity-bit
          signal that form a DATA BUS.  DB(7) is the most significant bit and
          has the highest priority during the ARBITRATION phase.  Bit number,
          significance, and priority decrease downward to DB(0).  A data bit
          is defined as one when the signal value is true and is defined as
          zero when the signal value is false.  Data parity DB(P) shall be
          odd.  Parity is undefined during the ARBITRATION phase.

m)     DB(31-8,P1,P2,P3) (DATA BUS).  Twenty-four data-bit signals, plus
       three parity-bit signals that form an extension to the DATA BUS.  
       DB(P1,P2,P3) are parity bits for DB(15-8), DB(23-16), and DB(31-24)
       respectively.  A data bit is defined as one when the signal value is
       true and is defined as zero when the signal value is false.  Data
       parity DB(Px) shall be odd.

5.6.1 Signal values

Signals may assume true or false values.  There are two methods of driving
these signals.  In both cases, the signal shall be actively driven true,
or asserted.  In the case of OR-tied drivers, the driver does not drive
the signal to the false state, rather the bias circuitry of the bus
terminators pulls the signal false whenever it is released by the drivers
at every SCSI device.  If any driver is asserted, then the signal is true. 
In the case of non-OR-tied drivers, the signal may be actively driven
false.  In this International Standard, wherever the term negated is used,
it means that the signal may be actively driven false, or may be simply
released (in which case the bias circuitry pulls it false), at the option
of the implementor.  The advantage to actively driving signals false
during information transfer is that the transition from true to false
occurs more quickly and the noise margin is much higher than if the signal
is simply released.  This facilitates reliable data transfer at high
rates, especially at the longer cable lengths used with differential
drivers.

5.6.2 OR-tied signals

The BSY, SEL, and RST signals shall be OR-tied only.  In the ordinary
operation of the bus, the BSY and RST signals may be simultaneously driven
true by several drivers.  No signals other than BSY, RST, and DB(P) are
simultaneously driven by two or more drivers, and any signal other than
BSY, SEL, and RST may employ OR-tied or non-OR-tied drivers.  DB(P) shall
not be driven false during the ARBITRATION phase but may be driven false
in other phases.  There is no operational problem in mixing OR-tied and
non-OR-tied drivers on signals other than BSY and RST.

5.6.3 Signal sources

Table 6 indicates which type of SCSI device is allowed to source each
signal.  No attempt is made to show if the source is driving asserted,
driving negated, or is passive.  All SCSI device drivers that are not
active sources be in the passive state.  The RST signal may be asserted
by any SCSI device at any time.

                           Table 6 - Signal sources
+==============-=====================================-========================+
|  Bus phase   |         A cable signals             |     B cable signals    |
|              |-------------------------------------+------------------------|
|              |      |      | C/D, |      |         |      |      | DB(31-8) |
|              |      |      | I/O, |      |         |      |      |  DB(P1)  |
|              |      |      | MSG, | ACK, | DB(7-0) |      |      |  DB(P2)  |
|              | BSY  | SEL  | REQ  | ATN  |  DB(P)  | REQB | ACKB |  DB(P3)  |
|--------------+------+------+------+------+---------+------+------+----------|
|  BUS FREE    | None | None | None | None |   None  | None | None |    None  |
|  ARBITRATION | All  | Win  | None | None |   S ID  | None | None |    None  |
|  SELECTION   | I&T  | Init | None | Init |   Init  | None | None |    None  |
|  RESELECTION | I&T  | Targ | Targ | Init |   Targ  | None | None |    None  |
|  COMMAND     | Targ | None | Targ | Init |   Init  | None | None |    None  |
|  DATA IN     | Targ | None | Targ | Init |   Targ  | Targ | Init |    Targ  |
|  DATA OUT    | Targ | None | Targ | Init |   Init  | Targ | Init |    Init  |
|  STATUS      | Targ | None | Targ | Init |   Targ  | None | None |    None  |
|  MESSAGE IN  | Targ | None | Targ | Init |   Targ  | None | None |    None  |
|  MESSAGE OUT | Targ | None | Targ | Init |   Init  | None | None |    None  |
|-----------------------------------------------------------------------------|
|                                                                             |
|All:    The signal shall be driven by all SCSI devices that are actively     |
|        arbitrating.                                                         |
|                                                                             |
|S ID:   A unique data bit (the SCSI ID) shall be driven by each SCSI device  |
|        that is actively arbitrating; the other seven data bits shall be     |
|        released (i.e., not driven) by this SCSI device.  The parity bit     |
|        (DB(P)) may be released or driven to the true state, but shall never |
|        be driven to the false state during this phase.                      |
|                                                                             |
|I&T:    The signal shall be driven by the initiator, target, or both, as     |
|        specified in the SELECTION phase and RESELECTION phase.              |
|                                                                             |
|Init:   If driven, this signal shall be driven only by the active initiator. |
|                                                                             |
|None:   The signal shall be released; that is, not be driven by any SCSI     |
|        device.  The bias circuitry of the bus terminators pulls the signal  |
|        to the false state.                                                  |
|                                                                             |
|Win:    The signal shall be driven by the one SCSI device that wins          |
|        arbitration.                                                         |
|                                                                             |
|Targ:   If the signal is driven, it shall be driven only by the active       |
|        target.                                                              |
+=============================================================================+


5.7 SCSI bus timing

Unless otherwise indicated, the delay-time measurements for each SCSI
device, shown in table 7, shall be calculated from signal conditions
existing at that SCSI device's own SCSI bus connection.  Thus, these
measurements (except cable skew delay) can be made without considering
delays in the cable.  The timing characteristics of each signal are
described in the following paragraphs.

                       Table 7 - SCSI bus timing values
+==============================-===================================+
|  Timing description          |      Timing value                 |
|------------------------------+-----------------------------------|
|  Arbitration delay           |     2,4 us                        |
|  Assertion period            |      90 ns                        |
|  Bus clear delay             |     800 ns                        |
|  Bus free delay              |     800 ns                        |
|  Bus set delay               |     1,8 us                        |
|  Bus settle delay            |     400 ns                        |
|  Cable skew delay            |      10 ns                        |
|  Data release delay          |     400 ns                        |
|  Deskew delay                |      45 ns                        |
|  Disconnection delay         |     200 us                        |
|  Hold time                   |      45 ns                        |
|  Negation period             |      90 ns                        |
|  Power-on to selection time  |      10 s recommended             |
|  Reset to selection time     |     250 ms recommended            |
|  Reset hold time             |      25 us                        |
|  Selection abort time        |     200 us                        |
|  Selection time-out delay    |     250 ms recommended            |
|  Transfer period             |     set during an SDTR message    |
|  Fast assertion period       |      30 ns                        |
|  Fast cable skew delay       |       5 ns                        |
|  Fast deskew delay           |      20 ns                        |
|  Fast hold time              |      10 ns                        |
|  Fast negation period        |      30 ns                        |
+==================================================================+

5.7.1 Arbitration delay 

The minimum time an SCSI device shall wait from asserting BSY for
arbitration until the DATA BUS can be examined to see if arbitration has
been won.  There is no maximum time.

5.7.2 Assertion period 

The minimum time that a target shall assert REQ (or REQB) while using
synchronous data transfers.  Also, the minimum time that an initiator
shall assert ACK (or ACKB) while using synchronous data transfers.  REQB
and ACKB timings only apply to optional wide data transfers. 

5.7.3 Bus clear delay 

The maximum time for an SCSI device to stop driving all bus signals after:
   a)     The BUS FREE phase is detected (see 6.1.1)
   b)     SEL is received from another SCSI device during the ARBITRATION
          phase
   c)     The transition of RST to true.

For the first condition above, the maximum time for an SCSI device to
clear the bus is 1200 nanoseconds from BSY and SEL first becoming both
false.  If an SCSI device requires more than a bus settle delay to detect
BUS FREE phase, it shall clear the bus within a bus clear delay minus the
excess time.

5.7.4 Bus free delay 

The minimum time that an SCSI device shall wait from its detection of the
BUS FREE phase (see 6.1.1) until its assertion of BSY when going to the
ARBITRATION phase.

5.7.5 Bus set delay 

The maximum time for an SCSI device to assert BSY and its SCSI ID bit on
the DATA BUS after it detects BUS FREE phase (see 6.1.1) for the purpose
of entering the ARBITRATION phase.

5.7.6 Bus settle delay 

The minimum time to wait for the bus to settle after changing certain
control signals as called out in the protocol definitions.

5.7.7 Cable skew delay 

The maximum difference in propagation time allowed between any two SCSI
bus signals measured between any two SCSI devices.

5.7.8 Data release delay 

The maximum time for an initiator to release the DATA BUS signals
following the transition of the I/O signal from false to true.

5.7.9 Deskew delay 

The minimum time required for deskew of certain signals.

5.7.10 Disconnection delay 

The minimum time that a target shall wait after releasing BSY before
participating in an ARBITRATION phase when honouring a DISCONNECT message
from the initiator.

5.7.11 Hold time 

The minimum time added between the assertion of REQ (or REQB) or ACK (or
ACKB) and the changing of the data lines to provide hold time in the
initiator or target while using synchronous data transfers.  REQB and ACKB
timings only apply to optional wide data transfers. 

5.7.12 Negation period 

The minimum time that a target shall negate REQ (or REQB) while using
synchronous data transfers.  Also, the minimum time that an initiator
shall negate ACK (or ACKB) while using synchronous data transfers.  REQB
and ACKB timings only apply to optional wide data transfers. 

5.7.13 Power-on to selection time 

The recommended maximum time from power application until an SCSI target
is able to respond with appropriate status and sense data to the TEST UNIT
READY, INQUIRY, and REQUEST SENSE commands.

5.7.14 Reset to selection time 

The recommended maximum time after a hard RESET condition until an SCSI
target is able to respond with appropriate status and sense data to the
TEST UNIT READY, INQUIRY, and REQUEST SENSE commands.

5.7.15 Reset hold time 

The minimum time for which RST is asserted.  There is no maximum time.

5.7.16 Selection abort time 

The maximum time that a target (or initiator) shall take from its most
recent detection of being selected (or reselected) until asserting a BSY
response.  This time-out is required to ensure that a target (or
initiator) does not assert BSY after a SELECTION (or RESELECTION) phase
has been aborted.  This is not the selection time-out period; see 6.1.3.1
and 6.1.4.2 for a complete description.

5.7.17 Selection time-out delay 

The minimum time that an SCSI device should wait for a BSY response during
the SELECTION or RESELECTION phase before starting the time-out procedure. 


   Note 15 The selection time-out delay is only a recommended time period.

5.7.18 Transfer period 

The minimum time allowed between the leading edges of successive REQ
pulses or of successive ACK pulses while using synchronous data transfers. 
(See 6.1.5.2 and 6.6.21.)

5.8 Fast synchronous transfer option

When devices negotiate a synchronous data transfer period of less than 200
ns they are said to be using fast synchronous data transfers.  Devices
that negotiate a synchronous data transfer period greater than or equal
to 200 ns use timing parameters specified in 5.7.  When a fast synchronous
data transfer period is negotiated, those specific times redefined in this
section are used; those not redefined remain the same.  The minimum
synchronous data transfer period is 100 ns.

5.8.1 Fast assertion period 

The minimum time that a target shall assert REQ (or REQB) while using fast
synchronous data transfers.  It is also the minimum time that an initiator
shall assert ACK (or ACKB) while using fast synchronous data transfers. 
REQB and ACKB timings only apply to optional wide data transfers. 

5.8.2 Fast cable skew delay 

The maximum difference in propagation time allowed between any two SCSI
bus signals measured between any two SCSI devices while using fast
synchronous data transfers.

5.8.3 Fast deskew delay 

The minimum time required for deskew of certain signals while using fast
synchronous data transfers.

5.8.4 Fast hold time 

The minimum time added between the assertion of REQ (or REQB) or ACK (or
ACKB) and the changing of the data lines to provide hold time in the
initiator or target while using fast synchronous data transfers.  REQB and
ACKB timings only apply to optional wide data transfers. 

5.8.5 Fast negation period 

The minimum time that a target shall negate REQ (or REQB) while using fast
synchronous data transfers.  Also, the minimum time that an initiator
shall negate ACK (or ACKB) while using fast synchronous data transfers. 
REQB and ACKB timings only apply to optional wide data transfers.


6 Logical characteristics

6.1 SCSI bus phases

The SCSI architecture includes eight distinct phases:

       a)    BUS FREE phase
       b)    ARBITRATION phase
       c)    SELECTION phase
       d)    RESELECTION phase
       e)    COMMAND phase         +
       f)    DATA phase            |      These phases are collectively termed
       g)    STATUS phase          |      the information transfer phases.
       h)    MESSAGE phase         +

The SCSI bus can never be in more than one phase at any given time.  In
the following descriptions, signals that are not mentioned shall not be
asserted.

6.1.1 BUS FREE phase

The BUS FREE phase indicates that there is no current I/O process and that
the SCSI bus is available for a connection.

SCSI devices shall detect the BUS FREE phase after the SEL and BSY signals
are both false for at least a bus settle delay.

SCSI devices shall release all SCSI bus signals within a bus clear delay
after the BSY and SEL signals become continuously false for a bus settle
delay.  If an SCSI device requires more than a bus settle delay to detect
the BUS FREE phase then it shall release all SCSI bus signals within a bus
clear delay minus the excess time to detect the BUS FREE phase.  The total
time to clear the SCSI bus shall not exceed a bus settle delay plus a bus
clear delay.

During normal operation the BUS FREE phase is entered when a target
releases the BSY signal.  However, the BUS FREE phase may be entered
following the release of the SEL signal after a SELECTION or RESELECTION
phase time-out.

Initiators normally do not expect BUS FREE phase to begin because of the
target's release of the BSY signal except after one of the following
occurrences:
   a)     after a reset condition is detected;
   b)     after an ABORT message is successfully received by a target;
   c)     after a BUS DEVICE RESET message is successfully received by a
          target;
   d)     after a DISCONNECT message is successfully transmitted from a target
          (see 6.6.6);
   e)     after a COMMAND COMPLETE message is successfully transmitted from
          a target (see 6.6.5);
   f)     after a RELEASE RECOVERY message is successfully received by a
          target;
   g)     after an ABORT TAG message is successfully received by a target;
   h)     after a CLEAR QUEUE message is successfully received by a target.

If an initiator detects the release of the BSY signal by the target at any
other time, the target is indicating an error condition to the initiator. 
The target may perform this transition to the BUS FREE phase independent
of the state of the ATN signal.  The initiator shall manage this condition
as an unsuccessful I/O process termination.  The target terminates the I/O
process by clearing all pending data and status information for the
affected nexus.  The target may optionally prepare sense data that may be
retrieved by a REQUEST SENSE command.

6.1.2 ARBITRATION phase

The ARBITRATION phase allows one SCSI device to gain control of the SCSI
bus so that it can initiate or resume an I/O process.

The procedure for an SCSI device to obtain control of the SCSI bus is as
follows:
   a)     The SCSI device shall first wait for the BUS FREE phase to occur. 
          The BUS FREE phase is detected whenever both the BSY and SEL signals
          are simultaneously and continuously false for a minimum of a bus
          settle delay.

   NOTE 16 This bus settle delay is necessary because a transmission line
   phenomenon known as a wired-OR glitch may cause the BSY signal to briefly
   appear false, even though it is being driven true.

   b)     The SCSI device shall wait a minimum of a bus free delay after
          detection of the BUS FREE phase (i.e. after the BSY and SEL signals
          are both false for a bus settle delay) before driving any signal.
   c)     Following the bus free delay in step (b), the SCSI device may
          arbitrate for the SCSI bus by asserting both the BSY signal and its
          own SCSI ID, however the SCSI device shall not arbitrate (i.e.
          assert the BSY signal and its SCSI ID) if more than a bus set delay
          has passed since the BUS FREE phase was last observed.

   NOTE 17 There is no maximum delay before asserting the BSY signal and the
   SCSI ID following the bus free delay in step (b) as long as the bus remains
   in the BUS FREE phase.  However, SCSI devices that delay longer than a bus
   settle delay plus a bus set delay from the time when the BSY and SEL signals
   first become false may fail to participate in arbitration when competing 
   with faster SCSI devices.

   d)     After waiting at least an arbitration delay (measured from its
          assertion of the BSY signal) the SCSI device shall examine the DATA
          BUS.  If a higher priority SCSI ID bit is true on the DATA BUS
          (DB(7) is the highest), then the SCSI device has lost the
          arbitration and the SCSI device may release its signals and return
          to step (a).  If no higher priority SCSI ID bit is true on the DATA
          BUS, then the SCSI device has won the arbitration and it shall
          assert the SEL signal.  Any SCSI device other than the winner has
          lost the arbitration and shall release the BSY signal and its SCSI
          ID bit within a bus clear delay after the SEL signal becomes true. 
          An SCSI device that loses arbitration may return to step (a).

   NOTES
   18 Step d) above requires that any device complete the arbitration phase to
   the point of SEL being asserted if it begins the arbitration phase as stated
   in step c).  This precludes the possibility of the bus being hung.
   19 It is recommended that new implementations wait for the SEL signal to
   become true before releasing the BSY signal and SCSI ID bit when arbitration
   is lost.

   e)     The SCSI device that wins arbitration shall wait at least a bus
          clear delay plus a bus settle delay after asserting the SEL signal
          before changing any signals.

   NOTE 20 The SCSI ID bit is a single bit on the DATA BUS that corresponds to
   the SCSI device's unique SCSI address.  All other DATA BUS bits shall be
   released by the SCSI device.  Parity is not valid during the ARBITRATION
   phase.  During the ARBITRATION phase, DB(P) may be released or asserted, but
   shall not be actively driven false.

6.1.3 SELECTION phase

The SELECTION phase allows an initiator to select a target for the purpose
of initiating some target function (e.g., READ or WRITE command).  During
the SELECTION phase the I/O signal is negated so that this phase can be
distinguished from the RESELECTION phase.

The SCSI device that won the arbitration has both the BSY and SEL signals
asserted and has delayed at least a bus clear delay plus a bus settle
delay before ending the ARBITRATION phase.  The SCSI device that won the
arbitration becomes an initiator by not asserting the I/O signal. 

The initiator shall set the DATA BUS to a value that is the OR of its SCSI
ID bit and the target's SCSI ID bit and it shall assert the ATN signal
(indicating that a MESSAGE OUT phase is to follow the SELECTION phase). 
The initiator shall then wait at least two deskew delays and release the
BSY signal.  The initiator shall then wait at least a bus settle delay
before looking for a response from the target.

The target shall determine that it is selected when the SEL signal and its
SCSI ID bit are true and the BSY and I/O signals are false for at least
a bus settle delay.  The selected target may examine the DATA BUS in order
to determine the SCSI ID of the selecting initiator.  The selected target
shall then assert the BSY signal within a selection abort time of its most
recent detection of being selected; this is required for correct operation
of the selection time-out procedure. 

The target shall not respond to a selection if bad parity is detected. 
Also, if more than two SCSI ID bits are on the DATA BUS, the target shall
not respond to selection.

   NOTE 21 Although an SCSI-2 initiator may not use the single initiator option
   or the selection without asserting ATN option of SCSI-1, an SCSI-2 target 
   may elect to support these options for compatibility with SCSI-1 initiators. 
   When doing so the SCSI-2 target responds as described in the SCSI-1 
   standard.

No less than two deskew delays after the initiator detects the BSY signal
is true, it shall release the SEL signal and may change the DATA BUS.  The
target shall wait until the SEL signal is false before asserting the REQ
signal to enter an information transfer phase.

6.1.3.1 SELECTION time-out procedure

Two optional selection time-out procedures are specified for clearing the
SCSI bus if the initiator waits a minimum of a selection time-out delay
and there has been no BSY signal response from the target:
   a)     Optionally, the initiator shall assert the RST signal (see 6.2.2);
   b)     Optionally, the initiator shall continue asserting the SEL and ATN
          signals and shall release the DATA BUS.  If the initiator has not
          detected the BSY signal to be true after at least a selection abort
          time plus two deskew delays, the initiator shall release the SEL and
          ATN signals allowing the SCSI bus to go to the BUS FREE phase.  SCSI
          devices shall ensure that when responding to selection that the
          selection was still valid within a selection abort time of their
          assertion of the BSY signal.  Failure to comply with this
          requirement could result in an improper selection (two targets
          connected to the same initiator, wrong target connected to an
          initiator, or a target connected to no initiator).

6.1.4 RESELECTION phase

RESELECTION is an optional phase that allows a target to reconnect to an
initiator for the purpose of continuing some operation that was previously
started by the initiator but was suspended by the target, (i.e. the target
disconnected by allowing a BUS FREE phase to occur before the operation
was complete).

6.1.4.1 RESELECTION   

Upon completing the ARBITRATION phase, the winning SCSI device has both
the BSY and SEL signals asserted and has delayed at least a bus clear
delay plus a bus settle delay.  The winning SCSI device becomes a target
by asserting the I/O signal.  The winning SCSI device shall also set the
DATA BUS to a value that is the logical OR of its SCSI ID bit and the
initiator's SCSI ID bit.  The target shall wait at least two deskew delays
and release the BSY signal.  The target shall then wait at least a bus
settle delay before looking for a response from the initiator.

The initiator shall determine that it is reselected when the SEL and I/O
signals and its SCSI ID bit are true and the BSY signal is false for at
least a bus settle delay.  The reselected initiator may examine the DATA
BUS in order to determine the SCSI ID of the reselecting target.  The
reselected initiator shall then assert the BSY signal within a selection
abort time of its most recent detection of being reselected; this is
required for correct operation of the time-out procedure.  The initiator
shall not respond to a RESELECTION phase if bad parity is detected.  Also,
the initiator shall not respond to a RESELECTION phase if other than two
SCSI ID bits are on the DATA BUS. 

After the target detects the BSY signal is true, it shall also assert the
BSY signal and wait at least two deskew delays and then release the SEL
signal.  The target may then change the I/O signal and the DATA BUS. 
After the reselected initiator detects the SEL signal is false, it shall
release the BSY signal.  The target shall continue asserting the BSY
signal until it relinquishes the SCSI bus.

   NOTE 22 When the target is asserting the BSY signal, a transmission line
   phenomenon known as a wired-OR glitch may cause the BSY signal to appear
   false for up to a round-trip propagation delay following the release of the
   BSY signal by the initiator.  This is the reason why the BUS FREE phase is
   recognized only after both the BSY and SEL signals are continuously false 
   for a minimum of a bus settle delay.  Cables longer than 25 m should not be 
   used even if the chosen driver, receiver, and cable provide adequate noise
   margins, because they increase the duration of the glitch and could cause
   SCSI devices to inadvertently detect the BUS FREE phase.

6.1.4.2 RESELECTION time-out procedure

Two optional RESELECTION time-out procedures are specified for clearing
the SCSI bus during a RESELECTION phase if the target waits a minimum of
a selection time-out delay and there has been no BSY signal response from
the initiator: 
   a)     Optionally, the target shall assert the RST signal (see 6.2.2);
   b)     Optionally, the target shall continue asserting the SEL and I/O
          signals and shall release all DATA BUS signals.  If the target has
          not detected the BSY signal to be true after at least a selection
          abort time plus two deskew delays, the target shall release the SEL
          and I/O signals allowing the SCSI bus to go to the BUS FREE phase. 
          SCSI devices that respond to the RESELECTION phase shall ensure that
          the reselection was still valid within a selection abort time of
          their assertion of the BSY signal.  Failure to comply with this
          requirement could result in an improper reselection (two initiators
          connected to the same target or the wrong initiator connected to a
          target).

6.1.5 Information transfer phases

   NOTE 23 The COMMAND, DATA, STATUS, and MESSAGE phases are all grouped
   together as the information transfer phases because they are all used to
   transfer data or control information via the DATA BUS.  The actual content
   of the information is beyond the scope of this section.

The C/D, I/O, and MSG signals are used to distinguish between the
different information transfer phases (see table 8).  The target drives
these three signals and therefore controls all changes from one phase to
another.  The initiator can request a MESSAGE OUT phase by asserting the
ATN signal, while the target can cause the BUS FREE phase by releasing the
MSG, C/D, I/O, and BSY signals.

The information transfer phases use one or more REQ/ACK handshakes to
control the information transfer.  Each REQ/ACK handshake allows the
transfer of one byte of information.  During the information transfer
phases the BSY signal shall remain true and the SEL signal shall remain
false.  Additionally, during the information transfer phases, the target
shall continuously envelope the REQ/ACK handshake(s) with the C/D, I/O,
and MSG signals in such a manner that these control signals are valid for
a bus settle delay before the assertion of the REQ signal of the first
handshake and remain valid until after the negation of the ACK signal at
the end of the handshake of the last transfer of the phase.

   NOTES
   24 After the negation of the ACK signal of the last transfer of the phase,
   the target may prepare for a new phase by asserting or negating the C/D, 
   I/O, and MSG signals.  These signals may be changed together or 
   individually. They may be changed in any order and may be changed more than 
   once.  It is desirable that each line change only once.  A new phase does 
   not begin until the REQ signal is asserted for the first byte of the new 
   phase.
   25 A phase is defined as ending when the C/D, I/O, or MSG signals change
   after the negation of the ACK signal.  The time between the end of a phase
   and the assertion of the REQ signal beginning a new phase is undefined.  An
   initiator is allowed to anticipate a new phase based on the previous phase,
   the expected new phase, and early information provided by changes in the 
   C/D, I/O, and MSG signals.  However, the anticipated phase is not valid 
   until the REQ signal is asserted at the beginning of the next phase.

                    Table 8 - Information transfer phases
+=============-===============-==================================-============+
|    Signal   |  Phase name   |       Direction of transfer      |  Comment   |
|-------------|               |                                  |            |
| MSG|C/D|I/O |               |                                  |            |
|----+---+----+---------------+----------------------------------+------------|
|  0 | 0 | 0  |  DATA OUT     |       Initiator to target     \  |  Data      |
|  0 | 0 | 1  |  DATA IN      |       Initiator from target   /  |  phase     |
|  0 | 1 | 0  |  COMMAND      |       Initiator to target        |            |
|  0 | 1 | 1  |  STATUS       |       Initiator from target      |            |
|  1 | 0 | 0  |  *            |                                  |            |
|  1 | 0 | 1  |  *            |                                  |            |
|  1 | 1 | 0  |  MESSAGE OUT  |       Initiator to target     \  |  Message   |
|  1 | 1 | 1  |  MESSAGE IN   |       Initiator from target   /  |  phase     |
|-----------------------------------------------------------------------------|
| Key:  0 = False,  1 = True,  * = Reserved for future standardization        |
+=============================================================================+


6.1.5.1 Asynchronous information transfer

The target shall control the direction of information transfer by means
of the I/O signal.  When the I/O signal is true, information shall be
transferred from the target to the initiator.  When the I/O signal is
false, information shall be transferred from the initiator to the target.

If the I/O signal is true (transfer to the initiator), the target shall
first drive the DB(7-0,P) signals to their desired values, delay at least
one deskew delay plus a cable skew delay, then assert the REQ signal.  The
DB(7-0,P) signals shall remain valid until the ACK signal is true at the
target.  The initiator shall read the DB(7-0,P) signals after the REQ
signal is true, then indicate its acceptance of the data by asserting the
ACK signal.  When the ACK signal becomes true at the target, the target
may change or release the DB(7-0,P) signals and shall negate the REQ
signal.  After the REQ signal is false the initiator shall then negate the
ACK signal.  After the ACK signal is false the target may continue the
transfer by driving the DB(7-0,P) signals and asserting the REQ signal,
as described above.

If the I/O signal is false (transfer to the target) the target shall
request information by asserting the REQ signal.  The initiator shall
drive the DB(7-0,P) signals to their desired values, delay at least one
deskew delay plus a cable skew delay and assert the ACK signal.  The
initiator shall continue to drive the DB(7-0,P) signals until the REQ
signal is false.  When the ACK signal becomes true at the target, the
target shall read the DB(7-0,P), signals then negate the REQ signal.  When
the REQ signal becomes false at the initiator, the initiator may change
or release the DB(7-0,P) signals and shall negate the ACK signal.  After
the ACK signal is false the target may continue the transfer by asserting
the REQ signal, as described above.

6.1.5.2 Synchronous data transfer

Synchronous data transfer is optional and is only used in data phases. 
It shall be used in a data phase if a synchronous data transfer agreement
has been established (see 6.6.21).  The agreement specifies the REQ/ACK
offset and the minimum transfer period.

The REQ/ACK offset specifies the maximum number of REQ pulses that can be
sent by the target in advance of the number of ACK pulses received from
the initiator, establishing a pacing mechanism.  If the number of REQ
pulses exceeds the number of ACK pulses by the REQ/ACK offset, the target
shall not assert the REQ signal until after the leading edge of the next
ACK pulse is received.  For successful completion of the data phase is
that the number of ACK and REQ pulses shall be equal. 

The target shall assert the REQ signal for a minimum of an assertion
period. The target shall then wait at least the greater of a transfer
period from the last transition of the REQ signal to true or a minimum of
a negation period from the last transition of the REQ signal to false
before again asserting the REQ signal.

The initiator shall send one pulse on the ACK signal for each REQ pulse
received.  The ACK signal may be asserted as soon as the leading edge of
the corresponding REQ pulse has been received.  The initiator shall assert
the ACK signal for a minimum of an assertion period.  The initiator shall
wait at least the greater of a transfer period from the last transition
of the ACK signal to true or for a minimum of a negation period from the
last transition of the ACK signal to false before asserting the ACK
signal.

If the I/O signal is true (transfer to the initiator), the target shall
first drive the DB(7-0,P) signals to their desired values, wait at least
one deskew delay plus one cable skew delay, then assert the REQ signals. 
The DB(7-0,P) signals shall be held valid for a minimum of one deskew
delay plus one cable skew delay plus one hold time after the assertion of
the REQ signal.  The target shall assert the REQ signal for a minimum of
an assertion period.  The target may then negate the REQ signal and change
or release the DB(7-0,P) signals.  The initiator shall read the value on
the DB(7-0,P) signals within one hold time of the transition of the REQ
signal to true.  The initiator shall then respond with an ACK pulse.

If the I/O signal is false (transfer to the target), the initiator shall
transfer one byte for each REQ pulse received.  After receiving the
leading edge of a REQ pulse, the initiator shall first drive the DB(7-0,P)
signals to their desired values, delay at least one deskew delay plus one
cable skew delay, then assert the ACK signal.  The initiator shall hold
the DB(7-0,P) signals valid for at least one deskew delay plus one cable
skew delay plus one hold time after the assertion of the ACK signal.  The
initiator shall assert the ACK signal for a minimum of an assertion
period.  The initiator may then negate the ACK signal and may change or
release the DB(7-0,P) signals.  The target shall read the value of the
DB(7-0,P) signals within one hold time of the transition of the ACK signal
to true.

   NOTE 26 The description in SCSI-1 allowed some implementors to presume that
   the leading edge of the first REQ pulse beyond the REQ/ACK offset agreement
   would not occur until after the trailing edge of the last ACK pulse within
   the agreement.  Devices implemented with this understanding may be subject
   to data destruction when in synchronous data transfer mode with devices that
   issue the leading edge of the next REQ pulse, at the boundary of the
   agreement, as soon as the leading edge of the last ACK pulse within the
   agreement is received.  Implementors using devices of the former type in
   initiator designs may insure data integrity by restricting the synchronous
   offset agreement to values smaller than the maximum nominally offered by
   their device.

6.1.5.3 Wide data transfer

Wide data transfer is optional and may be used in the DATA phase only if
a non-zero wide data transfer agreement is in effect (see WIDE DATA
TRANSFER REQUEST message, 6.6.23).  The messages determine the use of wide
mode by both SCSI devices and establish a data path width to be used
during the DATA phase.

Wide data transfers of 16- or 32-bits may be established.  Targets and
initiators that support 32-bit wide transfers should also support 16-bit
wide transfers.  All SCSI devices shall support 8-bit data transfers.

During 16-bit wide data transfers, the first logical data byte for each
data phase shall be transferred across the DB(7-0,P) signals on the A
cable and the second logical data byte shall be transferred across the
DB(15-8,P1) signals on the B cable.  Subsequent pairs of data bytes are
likewise transferred in parallel across the A and B cables (see figure
15).

   NOTE 27 X3T9.2 is documenting an alternate 16-bit single-cable solution and
   an alternate 32-bit solution and expects to be able to remove the B cable
   definition in a future version of SCSI.

During 32-bit wide data transfers, the first logical data byte for each
data phase shall be transferred across the DB(7-0,P) signals on the A
cable and the second, third, and fourth logical data bytes shall be
transferred across the DB(15-8,P1), DB(23-16,P2), and DB(31-24,P3)
signals, respectively, on the B cable.  Subsequent groups of four data
bytes are likewise transferred in parallel across the A and B cables (see
figure 15).
























                     Figure 15 - Wide SCSI byte ordering


If the last data byte transferred does not fall on the DB(15-8,P1) signals
for a 16-bit wide transfer or the DB(31-24,P3) signals for a 32-bit wide
transfer, then the values of the remaining higher-numbered bits are
undefined.  However, parity bits for these undefined bytes shall be valid
for whatever data is placed on the bus.

To ensure proper data integrity, certain sequence requirements shall be
met between the REQ/ACK handshakes on the A cable and the REQB/ACKB
handshakes on the B cable:
   a)     The REQB and ACKB signals shall only be asserted during data phases
          while a nonzero wide data transfer agreement is in effect.  These
          signals shall not be asserted during other phases.
   b)     The same information transfer mode (asynchronous or synchronous)
          shall be used for both the A cable and the B cable.  If synchronous
          data transfer mode is in effect, the same REQ/ACK offset and
          transfer period shall be used for both cables.
   c)     The information transfer procedures defined in 6.1.5.1 and 6.1.5.2
          for the A cable (the REQ, ACK, and DB(7-0,P) signals) shall also
          apply to the B cable (the REQB, ACKB, and DB(31-8,P1,P2,P3)
          signals).  The only means available for a target to manage the
          timing relationship between the signals on the two cables is its
          management of the REQ and REQB signals.  Similarly, the only means
          for the initiator to manage the timing between the two cables is its
          management of the ACK and ACKB signals.
   d)     The target shall ensure that the number of REQ/ACK handshakes and
          the number of REQB/ACKB handshakes in a data phase are equal before
          it changes to another phase.  The target shall not change the phase
          until the ACK and ACKB signals have both become false for the last
          REQ/ACK handshake and the last REQB/ACKB handshake.

   NOTE 28 If any violations of these rules are detected by the target, the
   target may attempt to end the data phase and return CHECK CONDITION status. 
   If it is impossible to correctly terminate the data phase, the target may
   abnormally terminate the I/O process by an unexpected disconnect.  If any
   violations of these rules are detected by the initiator, the initiator may
   attempt to send an INITIATOR DETECTED ERROR message to the target.  If the
   initiator is unable to terminate the I/O process normally, it may generate
   the reset condition.

6.1.6 COMMAND phase

The COMMAND phase allows the target to request command information from
the initiator.

The target shall assert the C/D signal and negate the I/O and MSG signals
during the REQ/ACK handshake(s) of this phase.

6.1.7 Data phase

The data phase is a term that encompasses both the DATA IN phase and the
DATA OUT phase.

6.1.7.1 DATA IN phase

The DATA IN phase allows the target to request that data be sent to the
initiator from the target.

The target shall assert the I/O signal and negate the C/D and MSG signals
during the REQ/ACK handshake(s) of this phase.

6.1.7.2 DATA OUT phase

The DATA OUT phase allows the target to request that data be sent from the
initiator to the target.

The target shall negate the C/D, I/O, and MSG signals during the REQ/ACK
handshake(s) of this phase.

4s STATUS phase

The STATUS phase allows the target to request that status information be
sent from the target to the initiator.

The target shall assert the C/D and I/O signals and negate the MSG signal
during the REQ/ACK handshake of this phase.

6.1.9 Message phase

The message phase is a term that references either a MESSAGE IN, or a
MESSAGE OUT phase.  Multiple messages may be sent during either phase. 
The first byte transferred in either of these phases shall be either a
single-byte message or the first byte of a multiple-byte message. 
Multiple-byte messages shall be wholly contained within a single message
phase.

6.1.9.1 MESSAGE IN phase

The MESSAGE IN phase allows the target to request that message(s) be sent
to the initiator from the target.

The target shall assert the C/D, I/O, and MSG signals during the REQ/ACK
handshake(s) of this phase.

6.1.9.2 MESSAGE OUT phase

The MESSAGE OUT phase allows the target to request that message(s) be sent
from the initiator to the target.  The target invokes this phase in
response to the attention condition created by the initiator (see 6.2.1).

The target shall assert the C/D and MSG signals and negate the I/O signal
during the REQ/ACK handshake(s) of this phase.  The target shall handshake
byte(s) in this phase until the ATN signal is negated, except when
rejecting a message.

If the target detects one or more parity error(s) on the message byte(s)
received, it may indicate its desire to retry the message(s) by asserting
the REQ signal after detecting the ATN signal has gone false and prior to
changing to any other phase.  The initiator, upon detecting this
condition, shall resend all of the previous message byte(s) in the same
order as previously sent during this phase.  When resending more than one
message byte, the initiator shall assert the ATN signal at least two
deskew delays prior to asserting the ACK signal on the first byte and
shall maintain the ATN signal asserted until the last byte is sent as
described in 6.2.1.

If the target does not retry the MESSAGE OUT phase or it exhausts its
retry limit it may
   a)     return CHECK CONDITION status and set the sense key to ABORTED
          COMMAND and the additional sense code to MESSAGE ERROR or;
   b)     indicate an exception condition by performing an unexpected
          disconnect.

The target may act on messages as received as long as no parity error is
detected and may ignore all remaining messages sent under one ATN
condition after a parity error is detected.  When a sequence of messages
is resent by an initiator because of a target detected parity error, the
target shall not act on any message which it acted on the first time
received.  

If the target receives all of the message byte(s) successfully (i.e. no
parity errors), it shall indicate that it does not wish to retry by
changing to any information transfer phase other than the MESSAGE OUT
phase and transfer at least one byte.  The target may also indicate that
it has successfully received the message byte(s) by changing to the BUS
FREE phase (e.g. ABORT or BUS DEVICE RESET messages).

6.1.10 Signal restrictions between phases

When the SCSI bus is between two information transfer phases, the
following restrictions shall apply to the SCSI bus signals:
   a)     The BSY, SEL, REQ, REQB, ACK and ACKB signals shall not change.
   b)     The C/D, I/O, MSG, and DATA BUS signals may change.  When switching
          the DATA BUS direction from out (initiator driving) to in (target
          driving), the target shall delay driving the DATA BUS by at least
          a data release delay plus a bus settle delay after asserting the I/O
          signal and the initiator shall release the DATA BUS no later than
          a data release delay after the transition of the I/O signal to true. 
          When switching the DATA BUS direction from in (target driving) to
          out (initiator driving), the target shall release the DATA BUS no
          later than a deskew delay after negating the I/O signal.
   c)     The ATN and RST signals may change as defined under the descriptions
          for the attention condition (see 6.2.1) and reset condition (see
          6.2.2).


6.2 SCSI bus conditions

The SCSI bus has two asynchronous conditions; the attention condition and
the reset condition.  These conditions cause the SCSI device to perform
certain actions and can alter the phase sequence.

Furthermore, SCSI devices may not all be powered-on at the same time. 
This standard does not address power sequencing issues.  However, each
SCSI device, as it is powered on, should perform appropriate internal
reset operations and internal test operations.  Following a power-on to
selection time after power-on, SCSI targets should be able to respond with
appropriate status and sense data to the TEST UNIT READY, INQUIRY, and
REQUEST SENSE commands.  

6.2.1 Attention condition

The attention condition allows an initiator to inform a target that the
initiator has a message ready.  The target may get this message by
performing a MESSAGE OUT phase.

The initiator creates the attention condition by asserting ATN at any time
except during the ARBITRATION or BUS FREE phases.

The initiator shall negate the ATN signal at least two deskew delays
before asserting the ACK signal while transferring the last byte of the
messages indicated with a Yes in table 10.  If the target detects that the
initiator failed to meet this requirement, then the target shall go to BUS
FREE phase (see unexpected disconnect, 6.1.1).

The initiator shall assert the ATN signal at least two deskew delays
before negating the ACK signal for the last byte transferred in a bus
phase for the attention condition to be honoured before transition to a
new bus phase.  Asserting the ATN signal later might not be honoured until
a later bus phase and then may not result in the expected action.

A target shall respond with MESSAGE OUT phase as follows:
   a)     If the ATN signal becomes true during a COMMAND phase, the target
          shall enter MESSAGE OUT phase after transferring part or all of the
          command descriptor block bytes.
   b)     If the ATN signal becomes true during a DATA phase, the target shall
          enter MESSAGE OUT phase at the target's earliest convenience (often,
          but not necessarily on a logical block boundary).  The initiator
          shall continue REQ/ACK handshakes until it detects the phase change. 
          
   c)     If the ATN signal becomes true during a STATUS phase, the target
          shall enter MESSAGE OUT phase after the status byte has been
          acknowledged by the initiator.  
   d)     If the ATN signal becomes true during a MESSAGE IN phase, the target
          shall enter MESSAGE OUT phase before it sends another message.  This
          permits a MESSAGE PARITY ERROR message from the initiator to be
          associated with the appropriate message.
   e)     If the ATN signal becomes true during a SELECTION phase and before
          the initiator releases the BSY signal, the target shall enter
          MESSAGE OUT phase immediately after that SELECTION phase. 
   f)     If the ATN signal becomes true during a RESELECTION phase, the
          target shall enter MESSAGE OUT phase after the target has sent its
          IDENTIFY message for that RESELECTION phase.  

   NOTE 29 The initiator should only assert the ATN signal during a RESELECTION
   phase to transmit a BUS DEVICE RESET or DISCONNECT message.  Other uses may
   result in ambiguities concerning the nexus.

The initiator shall keep the ATN signal asserted if more than one byte is
to be transferred.  The initiator may negate the ATN signal at any time
except it shall not negate the ATN signal while the ACK signal is asserted
during a MESSAGE OUT phase.  Normally, the initiator negates the ATN
signal while the REQ signal is true and the ACK signal is false during the
last REQ/ACK handshake of the MESSAGE OUT phase.

6.2.2 Reset condition

The reset condition is used to immediately clear all SCSI devices from the
bus.  This condition shall take precedence over all other phases and
conditions.  Any SCSI device may create the reset condition by asserting
the RST signal for a minimum of a reset hold time.

All SCSI devices shall release all SCSI bus signals (except the RST
signal) within a bus clear delay of the transition of the RST signal to
true.  The BUS FREE phase always follows the reset condition.

The effect of the reset condition on I/O processes that have not
completed, SCSI device reservations, and SCSI device operating modes is
determined by whether the SCSI device has implemented the hard reset
alternative or the soft reset alternative (one of which shall be
implemented) as defined in 6.2.2.1 and 6.2.2.2.  The hard and soft reset
alternatives are mutually exclusive within a system.  A facility for
targets to report which reset alternative is implemented is provided in
the SftRe bit of the INQUIRY data (see 8.2.5).

   NOTE 30 Environmental conditions (e.g. static discharge) may generate brief
   glitches on the RST signal.  It is recommended that SCSI devices not react
   to these glitches.  The manner of rejecting glitches is vendor-specific.  
   The bus clear delay following a RST signal transition to true is measured 
   from the original transition of the RST signal, not from the time that the 
   signal has been confirmed.  This limits the time to confirm the RST signal 
   to a maximum of a bus clear delay.

6.2.2.1 Hard reset alternative

SCSI devices that implement the hard reset alternative, upon detection of
the reset condition, shall:
   a)     clear all I/O processes including queued I/O processes.
   b)     release all SCSI device reservations.
   c)     return any SCSI device operating modes to their appropriate initial
          conditions, similar to those conditions that would be found after
          a normal power-on reset.  MODE SELECT conditions shall be restored
          to their last saved values if saved values have been established. 
          MODE SELECT conditions for which no values have been saved shall be
          returned to their default values.
   d)     unit attention condition shall be set (see 7.9).

It is recommended that following a reset to selection time after a hard
reset condition ends, SCSI targets be able to respond with appropriate
status and sense data to the TEST UNIT READY, INQUIRY, and REQUEST SENSE
commands.

6.2.2.2 Soft reset alternative

SCSI devices that implement the soft reset alternative, upon detection of
the reset condition, shall:
   a)     Attempt to complete any I/O processes which have not completed and
          that were fully identified
   b)     Preserve all SCSI device reservations
   c)     Preserve any SCSI device operating modes (MODE SELECT, PREVENT/ALLOW
          MEDIUM REMOVAL commands, etc.)
   d)     Preserve all the information required to continue normal dispatching
          of I/O processes queued prior to the reset condition.

The soft reset alternative allows an initiator to reset the SCSI bus with
minimum disruption to the operation of other initiators in a multiple
initiator system.  To ensure proper operation the following conditions
shall be met.
   a)     An initiator shall not consider an I/O process to be fully
          identified until the IDENTIFY message (and queue tag message, if
          any) is sent to the target and the target responds by changing to
          any other information transfer phase and requests that at least one
          byte be transferred.
   b)     A target shall consider an I/O process to be fully identified when
          it successfully receives the IDENTIFY message and any queue tag
          message and the initiator negates the ATN signal.
   c)     If an initiator selects a logical unit for which there already is
          an active I/O process with the same queue tag (if any) for the same
          initiator, the target shall clear the original I/O process and
          perform the new I/O process.
   d)     If a target reselects an initiator to continue an I/O process for
          which the initiator has no record, the initiator shall abort that
          I/O process by sending the ABORT or ABORT TAG message, depending on
          whether the reselecting I/O process is a tagged I/O process.
   e)     An initiator shall consider an I/O process to be completed when it
          negates ACK for a successfully received COMMAND COMPLETE message.
   f)     A target shall consider an I/O process to be completed when it
          detects the transition of ACK to false for the COMMAND COMPLETE
          message with the ATN signal false.
   g)     An initiator shall not negate the ACK signal for the SAVE DATA
          POINTER message until it has actually saved the data pointer for the
          I/O process.
   h)     A target shall consider the data pointer to be saved when it detects
          the transition of the ACK signal to false for the SAVE DATA POINTER
          message with the ATN signal false.
   i)     If the reset condition occurs between the time that the target
          asserts the REQ signal for the SAVE DATA POINTER message and it
          detects the transition of the ACK signal to false, the target shall
          terminate the I/O process with CHECK CONDITION status.  The target
          shall set the sense key to ABORTED COMMAND.  This is necessary
          because the target cannot determine whether the data pointer has
          actually been saved.

   NOTE 31 If the ATN signal is true in conditions f) or h), the target would
   normally switch to MESSAGE OUT phase and attempt to transfer a message byte. 
   If the reset condition occurs before the target successfully receives the
   message byte, it may assume that the initiator has not successfully received
   the COMMAND COMPLETE message or the SAVE DATA POINTER message.  In the case
   of COMMAND COMPLETE message, the target may reselect the initiator and
   attempt to send the COMMAND COMPLETE message again.  In the case of the SAVE
   DATA POINTER message, the target may reselect the initiator and terminate the
   I/O process as described in condition i).

6.3 SCSI bus phase sequences

The order in which phases are used on the SCSI bus follows a prescribed
sequence.

The reset condition can abort any phase and is always followed by the BUS
FREE phase.  Also any other phase can be followed by the BUS FREE phase
but many such instances are error conditions (see 6.1.1).

The additional allowable sequences shall be as shown in Figure 16.  The
normal progression is from the BUS FREE phase to ARBITRATION, from
ARBITRATION to SELECTION or RESELECTION, and from SELECTION or RESELECTION
to one or more of the information transfer phases (COMMAND, DATA, STATUS,
or MESSAGE).  The final information transfer phase is normally the MESSAGE
IN phase where a DISCONNECT, or COMMAND COMPLETE message is transferred,
followed by the BUS FREE phase.

































                         Figure 16 - Phase sequences


6.4 SCSI pointers

Consider the system shown in figure 17 in which an initiator and target
communicate on the SCSI bus in order to execute an I/O process.

The SCSI architecture provides for a set of three pointers for each I/O
process, called the saved pointers.  The set of three pointers consist of
one for the command, one for the data, and one for the status.  When an
I/O process becomes active, its three saved pointers are copied into the
initiator's set of three current pointers.  There is only one set of
current pointers in each initiator.  The current pointers point to the
next command, data, or status byte to be transferred between the
initiator's memory and the target.  The saved and current pointers reside
in the initiator.

The saved command pointer always points to the start of the command
descriptor block (see 7.2) for the I/O process.  The saved status pointer
always points to the start of the status area for the I/O process.  The
saved data pointer points to the start of the data area until the target
sends a SAVE DATA POINTER message (see 6.6.20) for the I/O process.











                      Figure 17 - Simplified SCSI system


In response to the SAVE DATA POINTER message, the initiator stores the
value of the current data pointer into the saved data pointer for that I/O
process.  The target may restore the current pointers to the saved pointer
values for the active I/O process by sending a RESTORE POINTERS message
(see 6.6.19) to the initiator.  The initiator then copies the set of saved
pointers into the set of current pointers.  Whenever a target disconnects
from the bus, only the set of saved pointers are retained.  The set of
current pointers is restored from the set of saved pointers upon
reconnection of the I/O process.

   NOTE 32 Since the data pointer value may be modified by the target before 
   the I/O process ends, it should not be used to test for actual transfer 
   length because it is not reliable.

6.5 Message system description

The message system allows communication between an initiator and target
for the purpose of interface management.  A message may be one, two, or
multiple bytes in length.  One or more messages may be sent during a
single MESSAGE phase, but a message may not be split between multiple
MESSAGE phases.  The initiator is required to end the MESSAGE OUT phase
(by negating ATN) when it sends certain messages identified in table 10.

One-byte, two-byte, and extended message formats are defined.  The first
byte of the message determines the format as defined in table 9.

                           Table 9 - Message format
+=============-===============================================================+
|    Value    |  Message format                                               |
|-------------+---------------------------------------------------------------|
|     00h     |  One-byte message (COMMAND COMPLETE)                          |
|     01h     |  Extended messages                                            |
|  02h - 1Fh  |  One-byte messages                                            |
|  20h - 2Fh  |  Two-byte messages                                            |
|  30h - 7Fh  |  Reserved                                                     |
|  80h - FFh  |  One-byte message (IDENTIFY)                                  |
+=============================================================================+


One-byte messages consist of a single byte transferred during a MESSAGE
phase.  The value of the byte determines which message is to be performed
as defined in table 10.

                           Table 10 - Message codes
+========-=========-===================================-=========-===============+
|Code    | Support |Message Name                       |Direction|               |
|        |---------|                                   |         |   Negate ATN  |
|        |Init|Targ|                                   |         |before last ACK|
|--------+----+----+-----------------------------------+---------+---------------|
|06h     | O  | M  |ABORT                              |      Out|      Yes      |
|0Dh     | O  | O  |ABORT TAG see note 1)              |      Out|      Yes      |
|0Ch     | O  | M  |BUS DEVICE RESET                   |      Out|      Yes      |
|0Eh     | O  | O  |CLEAR QUEUE see note 1)            |      Out|      Yes      |
|00h     | M  | M  |COMMAND COMPLETE                   | In      |      ---      |
|04h     | O  | O  |DISCONNECT                         | In      |      ---      |
|04h     | O  | O  |DISCONNECT                         |      Out|      Yes      |
|80h+    | M  | O  |IDENTIFY                           | In      |      ---      |
|80h+    | M  | M  |IDENTIFY                           |      Out|      No       |
|23h     | O  | O  |IGNORE WIDE RESIDUE (two bytes)    | In      |      ---      |
|0Fh     | O  | O  |INITIATE RECOVERY                  | In      |      ---      |
|0Fh     | O  | O  |INITIATE RECOVERY see note 2)      |      Out|      Yes      |
|05h     | M  | M  |INITIATOR DETECTED ERROR           |      Out|      Yes      |
|0Ah     | O  | O  |LINKED COMMAND COMPLETE            | In      |      ---      |
|0Bh     | O  | O  |LINKED COMMAND COMPLETE (WITH FLAG)| In      |      ---      |
|09h     | M  | M  |MESSAGE PARITY ERROR               |      Out|      Yes      |
|07h     | M  | M  |MESSAGE REJECT                     | In   Out|      Yes      |
|***     | O  | O  |MODIFY DATA POINTER                | In      |      ---      |
|08h     | M  | M  |NO OPERATION                       |      Out|      Yes      |
|        |    |    |Queue tag messages (two bytes)     |         |               |
|21h     | O  | O  |  HEAD OF QUEUE TAG                |      Out|      No       |
|22h     | O  | O  |  ORDERED QUEUE TAG                |      Out|      No       |
|20h     | O  | O  |  SIMPLE QUEUE TAG                 | In   Out|      No       |
|10h     | O  | O  |RELEASE RECOVERY                   |      Out|      Yes      |
|03h     | O  | O  |RESTORE POINTERS                   | In      |      ---      |
|02h     | O  | O  |SAVE DATA POINTER                  | In      |      ---      |
|***     | O  | O  |SYNCHRONOUS DATA TRANSFER REQUEST  | In   Out|      Yes      |
|11h     | O  | O  |TERMINATE I/O PROCESS              |      Out|      Yes      |
|***     | O  | O  |WIDE DATA TRANSFER REQUEST         | In   Out|      Yes      |
|12h-1Fh |    |    |Reserved                           |         |               |
|24h-2Fh |    |    |Reserved for two-byte messages     |         |               |
|30h-7Fh |    |    |Reserved                           |         |               |
|--------------------------------------------------------------------------------|
|Key:      M    = Mandatory support, O = Optional support.                       |
|          In   = Target to initiator,  Out = Initiator to target.               |
|          Yes  = Initiator shall negate ATN before last ACK of message.         |
|          No   = Initiator may or may not negate ATN before last ACK of         |
|                 message.  (see attention condition, 6.2.1.)                    |
|          ---  = Not applicable                                                 |
|          ***  = Extended message (see tables 11 and 12)                        |
|          80h+ = Codes 80h through FFh are used for IDENTIFY messages           |
|                 (see table 13).                                                |
|--------------------------------------------------------------------------------|
|      NOTES                                                                     |
|      1 The ABORT TAG and CLEAR QUEUE messages are required if tagged queuing   |
|        is implemented.                                                         |
|      2 Outbound INITIATE RECOVERY messages are only valid during the           |
|        asynchronous event notification protocol.                               |
+================================================================================+



Two-byte messages consist of two consecutive bytes transferred during a
MESSAGE phase.  The value of the first byte determines which message is
to be performed as defined in table 10.  The second byte is a parameter
byte which is used as defined in the message description (see 6.6).

A value of one in the first byte of a message indicates the beginning of
a multiple-byte extended message.  The minimum number of bytes sent for
an extended message is three.  The extended message format and the
extended message codes are shown in tables 11 and 12, respectively.

                      Table 11 - Extended message format
+=======-========-========-========-========-========-========-========-========+
|   Bit |   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte   |        |        |        |        |        |        |        |        |
|=======+=======================================================================|
| 0     |                           Extended message (01h)                      |
|-------+-----------------------------------------------------------------------|
| 1     |                           Extended message length (n)                 |
|-------+-----------------------------------------------------------------------|
| 2     |                           Extended message code (y)                   |
|-------+-----------------------------------------------------------------------|
| 3     |                                                                       |
|-------+---                        Extended message arguments               ---|
| n+1   |                                                                       |
+===============================================================================+


The extended message length specifies the length in bytes of the extended
message code plus the extended message arguments to follow.  Therefore,
the total length of the message is equal to the extended message length
plus two.  A value of zero for the extended message length indicates 256
bytes follow.

The extended message codes are listed in table 12.  The extended message
arguments are specified within the extended message descriptions.

                      Table 12 - Extended message codes
+=============-===============================================================+
|  Code (y)   |  Description                                                  |
|-------------+---------------------------------------------------------------|
|     02h     |  Reserved (see note)                                          |
|     00h     |  MODIFY DATA POINTER                                          |
|     01h     |  SYNCHRONOUS DATA TRANSFER REQUEST                            |
|     03h     |  WIDE DATA TRANSFER REQUEST                                   |
|  04h - 7Fh  |  Reserved                                                     |
|  80h - FFh  |  Vendor-specific                                              |
|-----------------------------------------------------------------------------|
|   NOTE - Extended message code 02h was used for the EXTENDED IDENTIFY       |
|   message in SCSI-1.                                                        |
+=============================================================================+


The first message sent by the initiator after the SELECTION phase shall
be an IDENTIFY, ABORT, or BUS DEVICE RESET message.  If a target receives
any other message it shall go to BUS FREE phase (see unexpected
disconnect, 6.1.1).

If the first message is an IDENTIFY message, then it may be immediately
followed by other messages, such as the first of a pair of SYNCHRONOUS
DATA TRANSFER REQUEST messages.  If tagged queuing is used the queue tag
message immediately follows the IDENTIFY message (see 6.6.7).  The
IDENTIFY message establishes a logical connection between the initiator
and the specified logical unit or target routine within the target known
as an I_T_L nexus or I_T_R nexus.  After the RESELECTION phase, the
target's first message shall be IDENTIFY.  This allows the I_T_L nexus or
I_T_R nexus to be reestablished.  Only one logical unit or target routine
shall be identified for any connection.  If a target receives a second
IDENTIFY message with a different logical unit number or target routine
number during a connection, it shall go to BUS FREE phase (see unexpected
disconnect, 6.1.1).  The treatment of other logical unit addressing errors
is described in 7.5.

All initiators shall implement the mandatory messages tabulated in the
Init column of table 10.  All targets shall implement the mandatory
messages tabulated in the Targ column of table 10.

Whenever an I_T_L nexus or I_T_R nexus is established by an initiator that
is allowing disconnection, the initiator shall ensure that the current
pointers are equal to the saved pointers for that particular logical unit
or target routine.  An implied restore pointers operation shall occur as
a result of a reconnection.

6.6 Messages

The SCSI messages are defined in this subclause.

6.6.1 ABORT

The ABORT message is sent from the initiator to the target to clear any
I/O process for the I_T_x nexus.  The target shall go to the BUS FREE
phase following successful receipt of this message.  The pending data,
status, and I/O processes for any other nexus shall not be cleared.

If only an I_T nexus has been established, the target shall go to the BUS
FREE phase.  No status or message shall be sent for the current I/O
process and no other I/O process shall be affected.

   NOTES
   33 The ABORT message in the case of only an I_T nexus is useful to an
   initiator that cannot get an IDENTIFY message through to the target due to
   parity errors and just needs to end the current connection.  Any pending
   data, status, or queued I/O processes for the I_T nexus is not affected.
   34 It is not possible to abort an I_T nexus on a reconnection because of item
   f) in 6.2.1.

It is not an error to issue this message to an I_T_x nexus that does not
have an active or queued I/O process.

Previously established conditions, including MODE SELECT parameters,
reservations, and extended contingent allegiance shall not be changed by
the ABORT message.

   NOTE 35 The BUS DEVICE RESET, CLEAR QUEUE, ABORT, and ABORT TAG messages
   provide a means to clear one or more I/O processes prior to normal
   termination.  The BUS DEVICE RESET message clears all I/O processes for all
   initiators on all logical units and all target routines of the target.  The
   CLEAR QUEUE message clears all I/O processes for all initiators on the
   specified logical unit or target routine of the target.  The ABORT message
   clears all I/O processes for the selecting initiator on the specified logical
   unit or target routine of the target.  The ABORT TAG message clears the
   current I/O process only.

6.6.2 ABORT TAG

The ABORT TAG message shall be implemented if tagged queuing is
implemented and may be implemented if untagged queuing is implemented. 
The target shall go to the BUS FREE phase following successful receipt of
this message.  The target shall clear the current I/O process.  If the
target has already started execution of the I/O process, the execution
shall be halted.  The medium contents may have been modified before the
execution was halted.  In either case, any pending status or data for the
I/O process shall be cleared and no status or ending message shall be sent
to the initiator.  Pending status, data, and commands for other active or
queued I/O processes shall not be affected.  Execution of other I/O
processes queued for the I_T_x nexus shall not be aborted.

Previously established conditions, including MODE SELECT parameters,
reservations, and extended contingent allegiance shall not be changed by
the ABORT TAG message.

On a reconnection, the ABORT TAG message aborts the current I/O process
if it is fully identified.  If the I/O process is not fully identified
(i.e. an I_T_L nexus exists, but the target is reconnecting for an I_T_L_Q
nexus), then the I/O process is not aborted and the target goes to the BUS
FREE phase.

   NOTE 36 A nexus is not fully identified on a reconnection if the ATN signal
   is asserted during or prior to the IDENTIFY message and the target only has
   tagged I/O processes for that initiator on that logical unit. 

6.6.3 BUS DEVICE RESET

The BUS DEVICE RESET message is sent from an initiator to direct a target
to clear all I/O processes on that SCSI device.  This message forces a
hard reset condition to the selected SCSI device.  The target shall go to
the BUS FREE phase following successful receipt of this message.  The
target shall create a unit attention condition for all initiators (see
7.9).

6.6.4 CLEAR QUEUE

The CLEAR QUEUE message shall be implemented if tagged queuing is
implemented and may be implemented if untagged queuing is implemented. 
The target shall go to the BUS FREE phase following successful receipt of
this message.  The target shall perform an action equivalent to receiving
a series of ABORT messages from each initiator.  All I/O processes, from
all initiators, in the queue for the specified logical unit shall be
cleared from the queue.  All active I/O processes shall be terminated. 
The medium may have been altered by partially executed commands.  All
pending status and data for that logical unit or target routine for all
initiators shall be cleared.  No status or message shall be sent for any
of the I/O processes.  A unit attention condition shall be generated for
all other initiators with I/O processes that either were active or were
queued for that logical unit or target routine.  When reporting the unit
attention condition the additional sense code shall be set to COMMANDS
CLEARED BY ANOTHER INITIATOR.

Previously established conditions, including MODE SELECT parameters,
reservations, and extended contingent allegiance shall not be changed by
the CLEAR QUEUE message.

6.6.5 COMMAND COMPLETE

The COMMAND COMPLETE message is sent from a target to an initiator to
indicate that the execution of an I/O process has completed and that valid
status has been sent to the initiator.  After successfully sending this
message, the target shall go to the BUS FREE phase by releasing the BSY
signal.  The target shall consider the message transmission to be
successful when it detects the negation of ACK for the COMMAND COMPLETE
message with the ATN signal false.  

   NOTE 37 The I/O process may have completed successfully or unsuccessfully as
   indicated in the status.

6.6.6 DISCONNECT

The DISCONNECT message is sent from a target to inform an initiator that
the present connection is going to be broken (the target plans to
disconnect by releasing the BSY signal), but that a later reconnect will
be required in order to complete the current I/O process.  This message
shall not cause the initiator to save the data pointer.  After
successfully sending this message, the target shall go to the BUS FREE
phase by releasing the BSY signal.  The target shall consider the message
transmission to be successful when it detects the negation of the ACK
signal for the DISCONNECT message with the ATN signal false.

Targets that break data transfers into multiple connections shall end each
successful connection (except possibly the last) with a SAVE DATA POINTER
- DISCONNECT message sequence.

This message may also be sent from an initiator to a target to instruct
the target to disconnect from the SCSI bus.  If this option is supported,
and after the DISCONNECT message is received, the target shall switch to
MESSAGE IN phase, send the DISCONNECT message to the initiator (possibly
preceded by SAVE DATA POINTER message), and then disconnect by releasing
BSY.  After releasing the BSY signal, the target shall not participate in
another ARBITRATION phase for at least a disconnection delay or the time
limit specified in the disconnect time limit mode parameter (see 8.3.3.2)
whichever is greater.  If this option is not supported or the target
cannot disconnect at the time when it receives the DISCONNECT message from
the initiator, the target shall respond by sending a MESSAGE REJECT
message to the initiator.

6.6.7 IDENTIFY

The IDENTIFY message (see table 13) is sent by either the initiator or the
target to establish an I_T_L nexus or an I_T_R nexus.

   NOTE 38 Use of the IDENTIFY message to establish an I_T_R nexus allows
   connection to one of up to eight target routines or functions in the target. 
   These target routines are expected to be used for maintenance and diagnostic
   purposes.

                      Table 13 - IDENTIFY message format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|=====+========+========+========+========+========+==========================|
|     |Identify|DiscPriv| LUNTAR |Reserved|Reserved|          LUNTRN          |
+=============================================================================+


The identify bit shall be set to one to specify that this is an IDENTIFY
message.

A disconnect privilege (DiscPriv) bit of one specifies that the initiator
has granted the target the privilege of disconnecting.  A DiscPriv bit of
zero specifies that the target shall not disconnect.  This bit is not
defined and shall be set to zero when an IDENTIFY message is sent by a
target.

A logical unit target (LUNTAR) bit of zero specifies that the I/O process
is directed to or from a logical unit.  A LUNTAR bit of one specifies that
the I/O process is directed to or from a target routine.  

The logical unit number target routine number (LUNTRN) field specifies a
logical unit number if the LUNTAR bit is zero.  The LUNTRN field specifies
a target routine number if the LUNTAR bit is one.  The response to an
invalid value in the LUNTRN field is described in 7.5.3.  Only the INQUIRY
and REQUEST SENSE commands are valid for target routines.  If a target
receives any other command for a target routine, it shall return CHECK
CONDITION status and shall set the sense key to ILLEGAL REQUEST.

An IDENTIFY message is invalid if a reserved bit is set to one or if the
LUNTAR bit is set to one and the target does not implement target
routines.  A device may respond to an invalid IDENTIFY message by
immediately sending a MESSAGE REJECT message or by returning CHECK
CONDITION status.  If a CHECK CONDITION status is returned, the sense key
shall be set to ILLEGAL REQUEST and the additional sense code shall be set
to INVALID BITS IN IDENTIFY MESSAGE FIELD.

Only one logical unit number or target routine number shall be identified
per I/O process.  The initiator may send one or more IDENTIFY messages
during a connection.  A second IDENTIFY message with a different value in
either the LUNTAR bit or LUNTRN field shall not be issued before a BUS
FREE phase has occurred;  if a target receives a second IDENTIFY message
with a different value in either of these fields, it shall go to BUS FREE
phase (see unexpected disconnect, 6.1.1).  Thus an initiator may change
the DiscPriv bit, but may not attempt to switch to another I/O process. 
(See the DTDC field of the disconnect-reconnect page (8.3.3.2) for
additional controls over disconnection.)

An implied RESTORE POINTERS message shall be performed by the initiator
prior to the assertion of the ACK signal on the next phase for an inbound
IDENTIFY message sent during reconnection.

An implied RESTORE POINTERS message shall be performed by the initiator 
following  successful identification of the nexus during the MESSAGE IN
phase of a reconnection and before the  negation  of  the  ACK  signal 
for  the  next transfer following the successful identification.

Identification is considered successful during an initial connection or
an initiator reconnect when the target detects no error during the
transfer of the IDENTIFY message and an optional queue tag message in the
MESSAGE OUT phase immediately following the SELECTION phase.   See 6.5 for
the ordering of the  IDENTIFY and queue tag messages.  See 6.1.9.2 for
handling target detected errors during the MESSAGE OUT phase. 

Identification is considered successful during a target reconnect when the
ATN signal is not asserted during the transfer of either the IDENTIFY
message or the SIMPLE QUEUE TAG message for an I_T_L_Q nexus in the
MESSAGE IN phase immediately following the RESELECTION phase.  See clause
6.5 for the ordering of the IDENTIFY and queue tag messages.  See 6.2.1,
item d), for handling target detected errors during the MESSAGE IN phase.

6.6.8 IGNORE WIDE RESIDUE

                Table 14 - IGNORE WIDE RESIDUE message format
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
| 0    |                           Message code (23h)                          |
|------+-----------------------------------------------------------------------|
| 1    |                           Ignore (01h, 02h, 03h)                      |
+==============================================================================+


The IGNORE WIDE RESIDUE message (see table 14) shall be sent from a target
to indicate that the number of valid bytes sent during the last REQ/ACK
handshake and REQB/ACKB handshake of a DATA IN phase is less than the
negotiated transfer width.  The ignore field indicates the number of
invalid data bytes transferred.  This message shall be sent immediately
following that DATA IN phase and prior to any other messages.  The ignore
field is defined in table 15.

   NOTE 39 More than one IGNORE WIDE RESIDUE message may occur during an I/O
   process.

                      Table 15 - Ignore field definition
+=============-=======================================+
|   Ignore    |           Invalid data bits           |
|             |---------------------------------------|
|             |  32-bit transfers | 16-bit transfers  |
|-------------+-------------------+-------------------|
|     00h     |      Reserved     |    Reserved       |
|     01h     |      DB(31-24)    |    DB(15-8)       |
|     02h     |      DB(31-16)    |    Reserved       |
|     03h     |      DB(31-8)     |    Reserved       |
|  04h - FFh  |      Reserved     |    Reserved       |
+=====================================================+


Even though a byte is invalid its corresponding parity bit shall be valid
for the value transferred.  For 16-bit transfers, DB(31-16) are always
invalid and the corresponding parity bits are also invalid.

6.6.9 INITIATE RECOVERY

A target that supports extended contingent allegiance shall inform the
initiator it is entering this condition by sending an INITIATE RECOVERY
message immediately following a CHECK CONDITION or COMMAND TERMINATED
status.  The extended contingent allegiance condition remains in effect
until terminated as described in 7.7.

If an asynchronous event occurs, the target may enter an extended
contingent allegiance condition by becoming a temporary initiator and
sending the INITIATE RECOVERY message following the IDENTIFY message and
any queue tag message and before the COMMAND phase of the SEND command
that is used to perform the asynchronous event notification (see 7.5.5). 
The successful transmission of this message establishes the extended
contingent allegiance condition which remains in effect until terminated
as described in 7.7.

   NOTE 40 If the target notifies multiple initiators of the asynchronous event,
   it should include the INITIATE RECOVERY message in only one of the
   notifications.

A MESSAGE REJECT response to an INITIATE RECOVERY message indicates that
an extended contingent allegiance condition shall not be established.  The
enabled or disabled state of an extended contingent allegiance (see
8.3.3.1) is not changed by the rejection of an INITIATE RECOVERY message.

6.6.10 INITIATOR DETECTED ERROR

The INITIATOR DETECTED ERROR message is sent from an initiator to inform
a target that an error has occurred that does not preclude the target from
retrying the operation.  The source of the error may either be related to
previous activities on the SCSI bus or may be internal to the initiator
and unrelated to any previous SCSI bus activity.  Although present pointer
integrity is not assured, a RESTORE POINTERS message or a disconnect
followed by a reconnect, shall cause the pointers to be restored to their
defined prior state.

6.6.11 LINKED COMMAND COMPLETE

The LINKED COMMAND COMPLETE message is sent from a target to an initiator
to indicate that the execution of a linked command has completed and that
status has been sent.  The initiator shall then set the pointers to the
initial state for the next linked command.

6.6.12 LINKED COMMAND COMPLETE (WITH FLAG)

The LINKED COMMAND COMPLETE (WITH FLAG) message is sent from a target to
an initiator to indicate that the execution of a linked command (with the
flag bit set to one) has completed and that status has been sent.  The
initiator shall then set the pointers to the initial state of the next
linked command.  Typically this message would be used to cause an
interrupt in the initiator between two linked commands.

6.6.13 MESSAGE PARITY ERROR

The MESSAGE PARITY ERROR message is sent from the initiator to the target
to indicate that it received a message byte with a parity error (see
6.1.9.2).

In order to indicate its intentions of sending this message, the initiator
shall assert the ATN signal prior to its release of the ACK signal for the
REQ/ACK handshake of the message byte that has the parity error.  This
provides an interlock so that the target can determine which message byte
has the parity error.  If the target receives this message under any other
circumstance, it shall signal a catastrophic error condition by releasing
the BSY signal without any further information transfer attempt (see
6.1.1).

If after receiving the MESSAGE PARITY ERROR message the target returns to
the MESSAGE IN phase before switching to some other phase, the target
shall resend the entire message that had the parity error.

6.6.14 MESSAGE REJECT

The MESSAGE REJECT message is sent from either the initiator or target to
indicate that the last message or message byte it received was
inappropriate or has not been implemented.

In order to indicate its intentions of sending this message, the initiator
shall assert the ATN signal prior to its release of the ACK signal for the
REQ/ACK handshake of the message byte that is to be rejected.  If the
target receives this message under any other circumstance, it shall reject
this message.  

When a target sends this message, it shall change to MESSAGE IN phase and
send this message prior to requesting additional message bytes from the
initiator.  This provides an interlock so that the initiator can determine
which message byte is rejected.

After a target sends a MESSAGE REJECT message and if the ATN signal is
still asserted, then it shall return to the MESSAGE OUT phase.  The
subsequent MESSAGE OUT phase shall begin with the first byte of a message.

6.6.15 MODIFY DATA POINTER Message

                        Table 16 - MODIFY DATA POINTER
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
| 0    |                           Extended message (01h)                      |
|------+-----------------------------------------------------------------------|
| 1    |                           Extended message length (05h)               |
|------+-----------------------------------------------------------------------|
| 2    |                           MODIFY DATA POINTER (00h)                   |
|------+-----------------------------------------------------------------------|
| 3    | (MSB)                                                                 |
|------+---                        Argument                                 ---|
| 6    |                                                                 (LSB) |
+==============================================================================+


The MODIFY DATA POINTER message (see table 16) is sent from the target to
the initiator and requests that the signed argument be added (two's
complement) to the value of the current data pointer.

6.6.16 NO OPERATION

The NO OPERATION message is sent from an initiator in response to a
target's request for a message when the initiator does not currently have
any other valid message to send.

For example, if the target does not respond to the attention condition
until a later phase and at that time the original message is no longer
valid the initiator may send the NO OPERATION message when the target
enters the MESSAGE OUT phase.

6.6.17 Queue tag messages

                     Table 17 - Queue tag message format
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
| 0    |                           Message code (20h, 21h, 22h)                |
|------+-----------------------------------------------------------------------|
| 1    |                           Queue tag (00h - FFh)                       |
+==============================================================================+


Table 17 defines the format for the queue tag messages.  If the target
implements tagged queuing, all of the queue tag messages are mandatory: 
HEAD OF QUEUE TAG, ORDERED QUEUE TAG, and SIMPLE QUEUE TAG.  Tagged
queuing is only defined for logical units, not for target routines.

If a target does not implement tagged queuing and a queue tag message is
received or if a queue tag message is received for a target routine, it
shall respond with a MESSAGE REJECT message and accept the I/O process as
if it were untagged.

The queue tag messages are used to specify an identifier, called a queue
tag, for the I/O process that establishes the I_T_L_Q nexus.  The queue
tag field is an 8-bit unsigned integer assigned by the initiator during
an initial connection.  The queue tag for every I/O process for each I_T_L
nexus should be unique.  If the target receives a queue tag that is
currently in use for the I_T_L nexus, then it shall respond as defined in
7.5.2.  A queue tag becomes available for reassignment when the I/O
process ends.  The numeric value of a queue tag has no effect on the order
of execution.

   NOTE 41 For each logical unit on each target, each initiator has up to 256
   queue tags to assign to I/O processes.  Thus a target with eight logical
   units could have up to 14 336 I/O processes concurrently in existence if
   there were seven initiators on the bus.

Whenever an initiator connects to a target, the appropriate queue tag
message shall be sent immediately following the IDENTIFY message and
within the same MESSAGE OUT phase to establish the I_T_L_Q nexus for the
I/O process.  Only one I_T_L_Q nexus may be established during a
connection.  If a queue tag message is not sent, then only an I_T_x nexus
is established for the I/O process (untagged command).

Whenever a target reconnects to an initiator to continue a tagged I/O
process, the SIMPLE QUEUE TAG message shall be sent immediately following
the IDENTIFY message and within the same MESSAGE IN phase to revive the
I_T_L_Q nexus for the I/O process.  Only one I_T_L_Q nexus may be revived
during a reconnection.  If the SIMPLE QUEUE TAG message is not sent, then
only an I_T_x nexus is revived for the I/O process (untagged command).

If a target attempts to reconnect using an invalid queue tag, then the
initiator should respond with an ABORT TAG message.

6.6.17.1 HEAD OF QUEUE TAG

The HEAD OF QUEUE TAG message specifies that the I/O process be placed
first in that logical unit's command queue.  An I/O process already being
executed by the target shall not be preempted.  A subsequent I/O process
received with a HEAD OF QUEUE TAG message shall be placed at the head of
the command queue for execution in last-in, first-out order. 

6.6.17.2 ORDERED QUEUE TAG

The ORDERED QUEUE TAG message specifies that the I/O process be placed in
that logical unit's command queue for execution in the order received. 
All queued I/O processes for the logical unit received prior to this I/O
process shall be executed before this I/O process is executed.   All
queued I/O processes received after this I/O process shall be executed
after this I/O process, except for I/O processes received with a HEAD OF
QUEUE TAG message.

6.6.17.3 SIMPLE QUEUE TAG

The SIMPLE QUEUE TAG message specifies that the I/O process be placed in
that logical unit's command queue.  The order of execution is described
in 7.8.

6.6.18 RELEASE RECOVERY

The RELEASE RECOVERY message is sent from an initiator to a target to
terminate an extended contingent allegiance condition previously
established by an INITIATE RECOVERY message.  This message shall be sent
immediately following the IDENTIFY message in the same MESSAGE OUT phase. 
The extended contingent allegiance condition ends upon successful receipt
of the RELEASE RECOVERY message.  The target shall go to the BUS FREE
phase following successful receipt of this message.

If a RELEASE RECOVERY message is received by a target that implements
extended contingent allegiance when an extended contingent allegiance
condition does not exist, the message shall not be rejected and the target
shall go to the BUS FREE phase.

6.6.19 RESTORE POINTERS

The RESTORE POINTERS message is sent from a target to direct the initiator
to copy the most recently saved command, data, and status pointers for the
I/O process to the corresponding current pointers.  The command and status
pointers shall be restored to the beginning of the present command and
status areas.  The data pointer shall be restored to the value at the
beginning of the data area in the absence of a SAVE DATA POINTER message
or to the value at the point at which the last SAVE DATA POINTER message
occurred for that nexus.

6.6.20 SAVE DATA POINTER

The SAVE DATA POINTER message is sent from a target to direct the
initiator to copy the current data pointer to the saved data pointer for
the current I/O process.  (See 6.4 for a definition of pointers.)

6.6.21 SYNCHRONOUS DATA TRANSFER REQUEST message

                 Table 18 - SYNCHRONOUS DATA TRANSFER REQUEST
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
| 0    |                           Extended message (01h)                      |
|------+-----------------------------------------------------------------------|
| 1    |                           Extended message length (03h)               |
|------+-----------------------------------------------------------------------|
| 2    |                           SYNCHRONOUS DATA TRANSFER REQUEST code (01h)|
|------+-----------------------------------------------------------------------|
| 3    |                           Transfer period factor                      |
|------+-----------------------------------------------------------------------|
| 4    |                           REQ/ACK offset                              |
+==============================================================================+

A SYNCHRONOUS DATA TRANSFER REQUEST (SDTR) message (see table 18) exchange
shall be initiated by an SCSI device whenever a previously-arranged data
transfer agreement may have become invalid.  The agreement becomes invalid
after any condition which may leave the data transfer agreement in an
indeterminate state such as:
   a)     after a hard reset condition;
   b)     after a BUS DEVICE RESET message and;
   c)     after a power cycle.

In addition, an SCSI device may initiate an SDTR message exchange whenever
it is appropriate to negotiate a new data transfer agreement (either
synchronous or asynchronous).  SCSI devices that are capable of
synchronous data transfers shall not respond to an SDTR message with a
MESSAGE REJECT message.

   NOTES
   42 Renegotiation at every selection is not recommended, since a significant
   performance impact is likely.  
   43 Due to historical problems with early host adapters that could not accept
   an SDTR message, some targets may not initiate synchronous negotiation after
   a power cycle as required by this standard.  Host adapters that support
   synchronous mode may avoid the ensuing failure modes when the target is
   independently power cycled by initiating a synchronous negotiation on each
   REQUEST SENSE and INQUIRY command.

The SDTR message exchange establishes the permissible transfer periods and
the REQ/ACK offsets for all logical units and target routines on the two
devices.  This agreement only applies to data phases.

The transfer period factor times four is the value of the transfer period. 
The transfer period is the minimum time allowed between leading edges of
successive REQ pulses and of successive ACK pulses to meet the device
requirements for successful reception of data.  

The REQ/ACK offset is the maximum number of REQ pulses allowed to be
outstanding before the leading edge of its corresponding ACK pulse is
received at the target.  This value is chosen to prevent overflow
conditions in the device's reception buffer and offset counter.  A REQ/ACK
offset value of zero shall indicate asynchronous data transfer mode; a
value of FFh shall indicate unlimited REQ/ACK offset.

The originating device (the device that sends the first of the pair of
SDTR messages) sets its values according to the rules above to permit it
to receive data successfully.  If the responding device can also receive
data successfully with these values (or smaller transfer periods or larger
REQ/ACK offsets or both), it returns the same values in its SDTR message. 
If it requires a larger transfer period, a smaller REQ/ACK offset, or both
in order to receive data successfully, it substitutes values in its SDTR
message as required, returning unchanged any value not required to be
changed.  Each device when transmitting data shall respect the limits set
by the other's SDTR message, but it is permitted to transfer data with
larger transfer periods, smaller REQ/ACK offsets, or both than specified
in the other's SDTR message.  The successful completion of an exchange of
SDTR messages implies an agreement as follows:

Responding device SDTR response                           Implied agreement
a) Non-zero REQ/ACK offset                             Each device transmits data with a
                                                       transfer period equal to or greater than
                                                       and a REQ/ACK offset equal to or less
                                                       than the values received in the other
                                                       device's SDTR message.

b) REQ/ACK offset equal to zero                              Asynchronous transfer

c) MESSAGE REJECT message                          Asynchronous transfer

If the initiator recognizes that negotiation is required, it asserts the
ATN signal and sends a SDTR message to begin the negotiating process. 
After successfully completing the MESSAGE OUT phase, the target shall
respond with the proper SDTR message.  If an abnormal condition prevents
the target from returning an appropriate response, both devices shall go
to asynchronous data transfer mode for data transfers between the two
devices.

Following target response (1) above, the implied agreement for synchronous
operation shall be considered to be negated by both the initiator and the
target if the initiator asserts the ATN signal and the first message out
is either MESSAGE PARITY ERROR or MESSAGE REJECT. In this case, both
devices shall go to asynchronous data transfer mode for data transfers
between the two devices.  For the MESSAGE PARITY ERROR case, the implied
agreement shall be reinstated if a retransmittal of the second of the pair
of messages is successfully accomplished.  After a vendor-specific number
of retry attempts (greater than zero), if the target receives a MESSAGE
PARITY ERROR message, it shall terminate the retry activity.  This may be
done either by changing to any other information transfer phase and
transferring at least one byte of information or by going to the BUS FREE
phase (see 6.1.1).  The initiator shall accept such action as aborting the
negotiation, and both devices shall go to asynchronous data transfer mode
for data transfers between the two devices.  

If the target recognizes that negotiation is required, it sends an SDTR
message to the initiator.  Prior to releasing the ACK signal on the last
byte of the SDTR message from the target, the initiator shall assert the
ATN signal and respond with its SDTR message or with a MESSAGE REJECT
message.  If an abnormal condition prevents the initiator from returning
an appropriate response, both devices shall go to asynchronous data
transfer mode for data transfers between the two devices.

Following an initiator's responding SDTR message, an implied agreement for
synchronous operation shall not be considered to exist until the target
leaves the MESSAGE OUT phase, indicating that the target has accepted the
negotiation.  After a vendor-specific number of retry attempts (greater
than zero), if the target has not received the initiator's responding SDTR
message, it shall go to the BUS FREE phase without any further information
transfer attempt (see 6.1.1).  This indicates that a catastrophic error
condition has occurred.  Both devices shall go to asynchronous data
transfer mode for data transfers between the two devices.

If, following an initiator's responding SDTR message, the target shifts
to MESSAGE IN phase and the first message in is MESSAGE REJECT, the
implied agreement shall be considered to be negated and both devices shall
go to asynchronous data transfer mode for data transfers between the two
devices.

The implied synchronous agreement shall remain in effect until a BUS
DEVICE RESET message is received, until a hard reset condition occurs, or
until one of the two SCSI devices elects to modify the agreement.  The
default data transfer mode is asynchronous data transfer mode.  The
default data transfer mode is entered at power on, after a BUS DEVICE
RESET message, or after a hard reset condition.

6.6.22 TERMINATE I/O PROCESS

The TERMINATE I/O PROCESS message is sent from the initiator to the target
to terminate the current I/O process without corrupting the medium.

With the following exceptions, the target shall terminate the current I/O
process and return COMMAND TERMINATED status.  The sense key shall be set
to NO SENSE.  The additional sense code and qualifier are set to I/O
PROCESS TERMINATED.

If the associated I/O process involves a data phase, the target shall set
the valid bit in the sense data to one and set the information field as
follows:
   a)     If the command descriptor block specifies an allocation length or
          parameter list length, the information field shall be set to the
          difference (residue) between the number of bytes successfully
          transferred and the requested length.
   b)     If the command descriptor block specifies a transfer length field,
          the information field shall be set as defined in the REQUEST SENSE
          command (see 8.2.14).

If an error is detected for the associated I/O process the target shall
ignore the TERMINATE I/O PROCESS message.

If the operation requested for the associated I/O process has been
completed but status has not been returned, the target shall ignore the
TERMINATE I/O PROCESS message.

If the target does not support this message or is unable to stop the
current I/O process, it shall send a MESSAGE REJECT message to the
initiator and continue the I/O process in a normal manner.

The effect of a TERMINATE I/O PROCESS message on the command queue depends
on the queue error recovery option specified in the control mode page (see
8.3.3.1) and on whether or not a contingent allegiance condition is
generated.

   NOTE 44 The TERMINATE I/O PROCESS message provides a means for the initiator
   to request the target to reduce the transfer length of the current command
   to the amount that has already been transferred.  The initiator can use the
   sense data to determine the actual number of bytes or blocks that have been
   transferred.  This message is normally used by the initiator to stop a
   lengthy read, write, or verify operation when a higher-priority command is
   available to be executed.  It is up to the initiator to complete the
   terminated command at a later time, if required.

6.6.23 WIDE DATA TRANSFER REQUEST message

                    Table 19 - WIDE DATA TRANSFER MESSAGE
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
| 0    |                           Extended message (01h)                      |
|------+-----------------------------------------------------------------------|
| 1    |                           Extended message length (02h)               |
|------+-----------------------------------------------------------------------|
| 2    |                           WIDE DATA TRANSFER REQUEST code (03h)       |
|------+-----------------------------------------------------------------------|
| 3    |                           Transfer width exponent                     |
+==============================================================================+


A WIDE DATA TRANSFER REQUEST (WDTR) message (see table 19) exchange shall
be initiated by an SCSI device whenever a previously-arranged transfer
width agreement may have become invalid.  The agreement becomes invalid
after any condition which may leave the data transfer agreement in an
indeterminate state such as:
   a)     after a hard reset condition;
   b)     after a BUS DEVICE RESET message and;
   c)     after a power cycle.

In addition, an SCSI device may initiate a WDTR message exchange whenever
it is appropriate to negotiate a new transfer width agreement.  SCSI
devices that are capable of wide data transfers (greater than eight bits)
shall not respond to a WDTR message with a MESSAGE REJECT message.

   NOTE 45 Renegotiation at every selection is not recommended, since a
   significant performance impact is likely. 

The WDTR message exchange establishes an agreement between two SCSI
devices on the width of the data path to be used for DATA phase transfers
between the two devices.  This agreement applies to DATA IN and DATA OUT
phases only.  All other information transfer phases shall use an eight-bit
data path.

If an SCSI device implements both wide data transfer option and
synchronous data transfer option, then it shall negotiate the wide data
transfer agreement prior to negotiating the synchronous data transfer
agreement.  If a synchronous data transfer agreement is in effect, then
an SCSI device that accepts a WDTR message shall reset the synchronous
agreement to asynchronous mode.

The transfer width is two to the transfer width exponent bytes wide.  The
transfer width that is established applies to all logical units on both
SCSI devices.  Valid transfer widths are 8 bits (m = 00h), 16 bits
(m = 01h), and 32 bits (m = 02h).  Values of m greater than 02h are
reserved.

The originating SCSI device (the SCSI device that sends the first of the
pair of WDTR messages) sets its transfer width value to the maximum data
path width it elects to accommodate.  If the responding SCSI device can
also accommodate this transfer width, it returns the same value in its
WDTR message.  If it requires a smaller transfer width, it substitutes the
smaller value in its WDTR message.  The successful completion of an
exchange of WDTR messages implies an agreement as follows:

Responding device WDTR response                           Implied agreement
a) Non-zero transfer width                                Each device transmits and receives data
                                                          with a transfer width equal to the
                                                          responding SCSI device's transfer
                                                          width.

b) Transfer width equal to zero                                  Eight-bit data transfer

c) MESSAGE REJECT message                          Eight-bit data transfer

If the initiator recognizes that negotiation is required, it asserts the
ATN signal and sends a WDTR message to begin the negotiating process. 
After successfully completing the MESSAGE OUT phase, the target shall
respond with the proper WDTR message.  If an abnormal condition prevents
the target from returning an appropriate response, both devices shall go
to eight-bit data transfer mode for data transfers between the two
devices.

Following target response 1) above, the implied agreement for wide data
transfers shall be considered to be negated by both the initiator and the
target if the initiator asserts ATN and the first message out is either
MESSAGE PARITY ERROR or MESSAGE REJECT.  In this case, both devices shall
go to eight-bit data transfer mode for data transfers between the two
devices.  For the MESSAGE PARITY ERROR case, the implied agreement shall
be reinstated if a retransmittal of the second of the pair of messages is
successfully accomplished.  After a vendor-specific number of retry
attempts (greater than zero), if the target receives a MESSAGE PARITY
ERROR message, it shall terminate the retry activity.  This may be done
either by changing to any other information transfer phase and
transferring at least one byte of information or by going to the BUS FREE
phase (see 6.1.1).  The initiator shall accept such action as aborting the
negotiation, and both devices shall go to eight-bit data transfer mode for
data transfers between the two devices. 

If the target recognizes that negotiation is required, it sends a WDTR
message to the initiator.  Prior to releasing the ACK signal on the last
byte of the WDTR message from the target, the initiator shall assert the
ATN signal and respond with its WDTR message or with a MESSAGE REJECT
message.  If an abnormal condition prevents the initiator from returning
an appropriate response, both devices shall go to eight-bit data transfer
mode for data transfers between the two devices.

Following an initiator's responding WDTR message, an implied agreement for
wide data transfer operation shall not be considered to exist until the
target leaves the MESSAGE OUT phase, indicating that the target has
accepted the negotiation.  After a vendor-specific number of retry
attempts (greater than zero), if the target has not received the
initiator's responding WDTR message, it shall go to the BUS FREE phase
without any further information transfer attempt (see 6.1.1).  This
indicates that a catastrophic error condition has occurred.  Both devices
shall go to eight-bit data transfer mode for data transfers between the
two devices.

If, following an initiator's responding WDTR message, the target shifts
to MESSAGE IN phase and the first message in is MESSAGE REJECT, the
implied agreement shall be considered to be negated and both devices shall
go to eight-bit data transfer mode for data transfers between the two
devices.

The implied transfer width agreement shall remain in effect until a BUS
DEVICE RESET message is received, until a hard reset condition occurs, or
until one of the two SCSI devices elects to modify the agreement.  The
default data transfer width is eight-bit data transfer mode.  The default
data transfer mode is entered at power on, after a BUS DEVICE RESET
message, or after a hard reset condition.


7 SCSI commands and status

This clause defines the SCSI command and status structures and gives
several examples.

By keeping to a minimum the functions essential to communicate via this
protocol, a wide range of peripheral devices of varying capability can
operate in the same environment.  Because subsets of the full architecture
may be implemented, optional functions are noted.

7.1 Command implementation requirements

The first byte of all SCSI commands shall contain an operation code as
defined in this International Standard.  Targets shall implement all
commands with a mandatory operation code (see 7.1.2) both in clause 8 and
in the appropriate clause for their device type.

7.1.1 Reserved

Reserved bits, fields, bytes, and code values are set aside for future
standardization.  Their use and interpretation may be specified by future
extensions to this standard.  A reserved bit, field, or byte shall be set
to zero, or in accordance with a future extension to this standard.  A
target that receives a reserved bit, field, or byte that is not zero or
receives a reserved code value shall terminate the command with CHECK
CONDITION status and the sense key shall be set to ILLEGAL REQUEST.  It
shall also be acceptable for a target to interpret a bit, field, byte, or
code value in accordance with a future extension to this International
Standard.

7.1.2 Operation code types

The operation code types are defined in table 20.

                        Table 20 - Operation code type
+=============-===============================================================+
|  Operation  |  Description                                                  |
|  code type  |                                                               |
|-------------+---------------------------------------------------------------|
|      M      |  Mandatory - Commands so designated shall be implemented in   |
|             |  order to meet the minimum requirement of this International  |
|             |  Standard.                                                    |
|             |                                                               |
|      O      |  Optional - Commands so designated, if implemented, shall be  |
|             |  implemented as defined in this International Standard.       |
|             |                                                               |
|      V      |  Vendor-specific - Operation codes so designated are available|
|             |  for vendor defined commands.  See the vendor specifications  |
|             |  where compatibility is desired.                              |
|             |                                                               |
|      R      |  Reserved - Operation codes so designated shall not be used.  |
|             |  They are reserved for future extensions to this              |
|             |  International Standard.                                      |
+=============================================================================+


7.2 Command descriptor block

A command is communicated by sending a command descriptor block to the
target.  For several commands, the command descriptor block is accompanied
by a list of parameters sent during the DATA OUT phase.  See the specific
commands for detailed information.

The command descriptor block always has an operation code as its first
byte and a control byte as its last byte.

For all commands, if there is an invalid parameter in the command
descriptor block, then the target shall terminate the command without
altering the medium.

      Table 21 - Typical command descriptor block for six-byte commands
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
| 0    |                           Operation code                              |
|------+-----------------------------------------------------------------------|
| 1    |   Logical unit number    | (MSB)                                      |
|------+------------------------------                                      ---|
| 2    |                           Logical block address (if required)         |
|------+---                                                                 ---|
| 3    |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
|      |                           Transfer length (if required)               |
| 4    |                           Parameter list length (if required)         |
|      |                           Allocation length (if required)             |
|------+-----------------------------------------------------------------------|
| 5    |                           Control                                     |
+==============================================================================+

      Table 22 - Typical command descriptor block for ten-byte commands
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
| 0    |                           Operation code                              |
|------+-----------------------------------------------------------------------|
| 1    |   Logical unit number    |                  Reserved                  |
|------+-----------------------------------------------------------------------|
| 2    | (MSB)                                                                 |
|------+---                                                                 ---|
| 3    |                                                                       |
|------+---                        Logical block address (if required)      ---|
| 4    |                                                                       |
|------+---                                                                 ---|
| 5    |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
| 6    |                           Reserved                                    |
|------+-----------------------------------------------------------------------|
| 7    | (MSB)                     Transfer length (if required)               |
|------+---                        Parameter list length (if required)      ---|
| 8    |                           Allocation length (if required)       (LSB) |
|------+-----------------------------------------------------------------------|
| 9    |                           Control                                     |
+==============================================================================+


     Table 23 - Typical command descriptor block for twelve-byte commands
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
| 0    |                           Operation code                              |
|------+-----------------------------------------------------------------------|
| 1    |   Logical unit number    |                  Reserved                  |
|------+-----------------------------------------------------------------------|
| 2    | (MSB)                                                                 |
|------+---                                                                 ---|
| 3    |                                                                       |
|------+---                        Logical block address (if required)      ---|
| 4    |                                                                       |
|------+---                                                                 ---|
| 5    |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
| 6    | (MSB)                                                                 |
|------+---                                                                 ---|
| 7    |                           Transfer length (if required)               |
|------+---                        Parameter list length (if required)      ---|
| 8    |                           Allocation length (if required)             |
|------+---                                                                 ---|
| 9    |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
|10    |                           Reserved                                    |
|------+-----------------------------------------------------------------------|
|11    |                           Control                                     |
+==============================================================================+


7.2.1 Operation code

The operation code (see table 24) of the command descriptor block has a
group code field and a command code field.  The three-bit group code field
provides for eight groups of command codes.  The five-bit command code
field provides for thirty-two command codes in each group.  Thus, a total
of 256 possible operation codes exist.  Operation codes are defined in the
subsequent subclauses.

The group code specifies one of the following groups:
   a)     Group 0 - six-byte commands (see table 21)
   b)     Group 1 - ten-byte commands (see table 22)
   c)     Group 2 - ten-byte commands (see table 22)
   d)     Group 3 - reserved
   e)     Group 4 - reserved
   f)     Group 5 - twelve-byte commands (see table 23)
   g)     Group 6 - vendor-specific 
   h)     Group 7 - vendor-specific

                          Table 24 - Operation code
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|=====+==========================+============================================|
|     |         Group code       |                Command code                |
+=============================================================================+

7.2.2 Logical unit number

The logical unit number is defined in the IDENTIFY message (6.6.7).  The
target shall ignore the logical unit number specified within the command
descriptor block if an IDENTIFY message was received.  It is recommended
that the logical unit number in the command descriptor block be set to
zero.  

   NOTICE:  The logical unit number field is included in the command descriptor
   block for compatibility with some SCSI-1 devices.  This field may be
   reclaimed in SCSI-3.  New implementations should use the outbound IDENTIFY
   message, which is mandatory in SCSI-2, to establish the I_T_L nexus.

7.2.3 Logical block address

The logical block address on logical units or within a partition on device
volumes shall begin with block zero and be contiguous up to the last
logical block on that logical unit or within that partition.

A six-byte command descriptor block contains a 21-bit logical block
address.  The ten-byte and the twelve-byte command descriptor blocks
contain 32-bit logical block addresses.  Logical block addresses in
additional parameter data have their length specified for each occurrence. 
See the specific command descriptions.

7.2.4 Transfer length

The transfer length field specifies the amount of data to be transferred,
usually the number of blocks.  For several commands the transfer length
indicates the requested number of bytes to be sent as defined in the
command description.  For these commands the transfer length field may be
identified by a different name.  See the following descriptions and the
individual command descriptions for further information.

Commands that use one byte for the transfer length allow up to 256 blocks
of data to be transferred by one command.  A transfer length value of 1
to 255 indicates the number of blocks that shall be transferred.  A value
of zero indicates 256 blocks.

In commands that use multiple bytes for the transfer length, a transfer
length of zero indicates that no data transfer shall take place.  A value
of one or greater indicates the number of blocks that shall be
transferred.

Refer to the specific command description for further information.

7.2.5 Parameter list length

The parameter list length is used to specify the number of bytes sent
during the DATA OUT phase.  This field is typically used in command
descriptor blocks for parameters that are sent to a target (e.g. mode
parameters, diagnostic parameters, log parameters, etc.).  A parameter
length of zero indicates that no data shall be transferred.  This
condition shall not be considered as an error.

7.2.6 Allocation length

The allocation length field specifies the maximum number of bytes that an
initiator has allocated for returned data.  An allocation length of zero
indicates that no data shall be transferred.  This condition shall not be
considered as an error.  The target shall terminate the DATA IN phase when
allocation length bytes have been transferred or when all available data
have been transferred to the initiator, whichever is less.  The allocation
length is used to limit the maximum amount of data (e.g. sense data, mode
data, log data, diagnostic data, etc.) returned to an initiator.

7.2.7 Control field

The control field is the last byte of every command descriptor block.  The
control field is defined in table 25.

                           Table 25 - Control field
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|=====+=================+===================================+========+========|
|     | Vendor-specific |         Reserved                  |  Flag  |  Link  |
+=============================================================================+


The flag bit specifies which message the target shall return to the
initiator if the link bit is one and the command completes without error. 
Implementation of the flag bit is optional.

The flag bit should be set to zero if the link bit is zero.  If link bit
is zero and the flag bit is one, the target shall return CHECK CONDITION
status.  The sense key shall be set to ILLEGAL REQUEST.

If the flag bit is zero and the link bit is one, and if the command
completes successfully, the target shall send the LINKED COMMAND COMPLETE
message.  If the flag bit is one and the link bit is one, and if the
command completes successfully, the target shall send the LINKED COMMAND
COMPLETE (WITH FLAG) message.

   NOTE 46 The flag bit is typically used to cause an interrupt in the initiator
   between linked commands.

The link bit is used to continue the I/O process across multiple commands. 
Implementation of the link bit is optional.  
A link bit of one indicates that the initiator requests a continuation of
the I/O process and that the target should enter the command phase upon
successful completion of the current command. 

If the link bit is one, and if the command completes successfully, the
target shall return INTERMEDIATE or INTERMEDIATE-CONDITION MET status and
shall then send one of the two messages defined by the flag bit.

If either of the link and flag bits are set to one, and the target does
not implement linked commands, it shall return CHECK CONDITION status. 
The sense key shall be set to ILLEGAL REQUEST.

7.3 Status

The status byte and status byte code are defined in tables 26 and 27.  A
status byte shall be sent from the target to the initiator during the
STATUS phase at the completion of each command unless the command is
terminated by one of the following events:  
   a)     an ABORT message;
   b)     an ABORT TAG message;
   c)     a BUS DEVICE RESET message;
   d)     a CLEAR QUEUE message;
   e)     a hard reset condition;
   f)     an unexpected disconnect (see 6.1.1).

The STATUS phase normally occurs at the end of a command but in some cases
may occur prior to transferring the command descriptor block.

                            Table 26 - Status byte
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|=====+=================+============================================+========|
|     |     Reserved    |               Status byte code             |Reserved|
+=============================================================================+


                         Table 27 - Status byte code
+==================================-==============================+
|    Bits of status byte           |  Status                      |
|----------------------------------|                              |
|   7 | 6 | 5 | 4 | 3 | 2 | 1 | 0  |                              |
|-----+---+---+---+---+---+---+----+------------------------------|
|   R | R | 0 | 0 | 0 | 0 | 0 | R  |  GOOD                        |
|   R | R | 0 | 0 | 0 | 0 | 1 | R  |  CHECK CONDITION             |
|   R | R | 0 | 0 | 0 | 1 | 0 | R  |  CONDITION MET               |
|   R | R | 0 | 0 | 1 | 0 | 0 | R  |  BUSY                        |
|   R | R | 0 | 1 | 0 | 0 | 0 | R  |  INTERMEDIATE                |
|   R | R | 0 | 1 | 0 | 1 | 0 | R  |  INTERMEDIATE-CONDITION MET  |
|   R | R | 0 | 1 | 1 | 0 | 0 | R  |  RESERVATION CONFLICT        |
|   R | R | 1 | 0 | 0 | 0 | 1 | R  |  COMMAND TERMINATED          |
|   R | R | 1 | 0 | 1 | 0 | 0 | R  |  QUEUE FULL                  |
|----------------------------------|                              |
|           All other codes        |  Reserved                    |
|-----------------------------------------------------------------|
|  Key: R = Reserved bit                                          |
+=================================================================+

A definition of the status byte codes is given below.

7.3.1 GOOD:  This status indicates that the target has successfully
completed the command.

7.3.2 CHECK CONDITION:  This status indicates that a contingent allegiance
condition has occurred (see 7.6).

7.3.3 CONDITION MET:  This status or INTERMEDIATE-CONDITION MET is
returned whenever the requested operation is satisfied (see the SEARCH
DATA and PREFETCH commands).  

7.3.4 BUSY:  This status indicates that the target is busy.  This status
shall be returned whenever a target is unable to accept a command from an
otherwise acceptable initiator (i.e. no reservation conflicts).  The
recommended initiator recovery action is to issue the command again at a
later time.

7.3.5 INTERMEDIATE:  This status or INTERMEDIATE-CONDITION MET shall be
returned for every successfully completed command in a series of linked
commands (except the last command), unless the command is terminated with
CHECK CONDITION, RESERVATION CONFLICT, or COMMAND TERMINATED status.  If
INTERMEDIATE or INTERMEDIATE-CONDITION MET status is not returned, the
series of linked commands is terminated and the I/O process is ended.

7.3.6 INTERMEDIATE-CONDITION MET:  This status is the combination of the
CONDITION MET and INTERMEDIATE statuses.

7.3.7 RESERVATION CONFLICT:  This status shall be returned whenever an
initiator attempts to access a logical unit or an extent within a logical
unit that is reserved with a conflicting reservation type for another SCSI
device (see the RESERVE and RESERVE UNIT commands).  The recommended
initiator recovery action is to issue the command again at a later time.

7.3.8 COMMAND TERMINATED:  This status shall be returned whenever the
target terminates the current I/O process after receiving a TERMINATE I/O
PROCESS message (see 6.6.22).  This status also indicates that a
contingent allegiance condition has occurred (see 7.6).

7.3.9 QUEUE FULL:  This status shall be implemented if tagged queuing is
implemented.  This status is returned when a SIMPLE QUEUE TAG, ORDERED
QUEUE TAG, or HEAD OF QUEUE TAG message is received and the command queue
is full.  The I/O process is not placed in the command queue.

7.4 Command examples

The following subclauses give examples of typical command processing in
the SCSI environment.

7.4.1 Single command example

An I/O process containing one untagged READ command is used in this clause
to illustrate a simple I/O process on the SCSI bus.  This example does not
include error or exception conditions.

The initiator has one set of active pointers that includes a command
pointer, a data pointer, and a status pointer.  In addition, the initiator
has one set of saved pointers for each I/O process that it is able to
concurrently manage.  The initiator sets up the saved pointers to point
to the appropriate bytes for the I/O process and copies the saved pointers
to the active pointers.  It then arbitrates for the SCSI bus, and upon
winning arbitration, selects the target.  Once the target is selected, the
target assumes control of the I/O process.

During the SELECTION phase, the initiator asserts the ATN signal to inform
the target that the initiator wishes to send a message.  The target enters
the MESSAGE OUT phase and transfers the IDENTIFY message from the
initiator.  This message informs the target of which logical unit is to
be used.  At this point, an I_T_L nexus has been established for the I/O
process.  This nexus associates the initiator's pointers with the I/O
process.

The target switches to the COMMAND phase and transfers the command
descriptor block from the initiator.  In this case, the command descriptor
block contains a READ command.  The target interprets the command and
switches to the DATA IN phase, transfers the data, switches to STATUS
phase, sends GOOD status, switches to MESSAGE IN phase, and transfers a
COMMAND COMPLETE message.  After successfully sending the COMMAND COMPLETE
message, the target goes to the BUS FREE phase by releasing the BSY signal
and the I/O process ends.

7.4.2 Disconnect example

In the above single command example, the length of time necessary to
obtain the data may require a time-consuming physical positioning
operation.  In order to improve system throughput, the target may
disconnect from the initiator, thereby freeing the SCSI bus to allow other
I/O process to occur.  

After the target has received the READ command (and has determined that
there will be a delay), it disconnects from the SCSI bus by sending a
DISCONNECT message and by going to the BUS FREE phase.

After the target retrieves the requested data from the peripheral device
it arbitrates for the SCSI bus.  Upon winning arbitration, it reselects
the initiator and sends an IDENTIFY message to the initiator via the
MESSAGE IN phase.  This revives the I_T_L nexus so that the initiator can
retrieve the correct set of pointers for the I/O process.  The initiator
restores the active pointers to their most recent saved values (which, in
this case, are the initial values) and the target continues (as in the
single command example) to finish the I/O process.

If target wishes to disconnect after transferring part of the data (e.g.
while crossing a cylinder boundary), it may do so by sending a SAVE DATA
POINTER message and a DISCONNECT message to the initiator and then
disconnecting.  When reconnection is completed, the current data pointer
is restored to its value immediately prior to the SAVE DATA POINTER
message.

On those occasions when an error or exception condition occurs and the
target elects to repeat the information transfer, the target may repeat
the transfer by either issuing a RESTORE POINTERS message or by
disconnecting without issuing a SAVE DATA POINTER message.  When
reconnection is completed, the most recent saved pointer values are
restored.

7.4.3 Linked command example

An I/O process may contain multiple commands linked together.  Upon
completing a linked command successfully, the target automatically
proceeds to the next linked command for the I/O process.  All commands in
a series of linked commands are addressed to the same nexus and are part
of a single I/O process.

The commands are not entirely independent.  When using the relative
address bit (see 9.1.11), the address of the last logical block accessed
by one of the commands is available to the next command.  Thus one can
search for a particular data pattern using a SEARCH DATA command and then
read the logical block containing the data pattern with a READ command
linked to the SEARCH DATA command.  One can also read a logical block at
a specified displacement from the block containing the data pattern.

A LINKED COMMAND COMPLETE or LINKED COMMAND COMPLETE (WITH FLAG) message
is sent from the target to the initiator to indicate that a linked command
completed.  The initiator then updates the saved pointers for the nexus
so that subsequent transfers from the target reference the next command
of the series.  Command processing of linked and single commands is
similar except that relative addressing is permitted in linked commands.

For example, a successful completion of a SEARCH DATA EQUAL command causes
the target to continue with the linked READ command from the initiator. 
If the relative address bit in the READ command has been set to one, and
the address field of the READ command is set to zero, the target transfers
the successfully searched block to the initiator. 

7.5 Command processing considerations and exception
conditions 

The following subclauses describe some exception conditions and errors
associated with command processing and the sequencing of commands.

7.5.1 Programmable operating definition

Some applications require that the operating definition of a logical unit
be modified to meet the special requirements of a particular initiator. 
The program-controlled modification of the operating definition is
typically provided to allow operating systems to change the operating
definition of a more recently developed targets to one that is more
compatible with the operating system.  This ability requires that the
system comply with the low-level hardware definitions of SCSI-2.

The parameters that can be changed by modifying the operating definition
of a logical unit include the vendor identification, the device type, the
device model, the SCSI compliance level, the SCSI specification level, the
command set, and other parameters.  The low-level hardware parameters
including signal timing and parity definitions cannot be changed by
modifying the operating definition.  The present operating definition of
a logical unit with respect to an initiator can be determined at any time
by execution of an INQUIRY command.  In some vendor-specific cases, it may
also be necessary to perform other commands including MODE SENSE and READ
CAPACITY.

Each logical unit begins with a particular operating definition.  If the
logical unit supports the CHANGE DEFINITION command, the present operating
definition can be changed to any other operating definition supported by
the logical unit.  The actual details of the operating definition of a
logical unit are vendor-specific.  If the operating definition is changed
to one that does not include the CHANGE DEFINITION command, the target
should continue to accept the CHANGE DEFINITION command.

If an error occurs during execution of a CHANGE DEFINITION command, the
original operating definition remains in effect after the command is
executed. The new operating definition becomes active only after
successful execution of the CHANGE DEFINITION command.  

Since new operating definitions may preclude the execution of I/O
processes that are already in progress, the target may disconnect to allow
completion of any I/O processes that are in progress.  Operating
definition changes that may cause conflicts with the normal operation from
other initiators shall be indicated to those initiators by generating a
unit attention condition for each other initiator.  The additional sense
code shall be set to CHANGED OPERATING DEFINITION.

An initiator may request a list of the operating definitions that the
target supports and descriptive text for each operating definition using
the INQUIRY command.

7.5.2 Incorrect initiator connection

An incorrect initiator connection occurs on a reconnection if:
   a)     an initiator attempts to reconnect to an I/O process, and
   b)     a soft reset condition has not occurred, and 
   c)     the initiator does not send an ABORT, ABORT TAG, BUS DEVICE RESET,
          CLEAR QUEUE, or TERMINATE I/O PROCESS message during the same
          MESSAGE OUT phase as the IDENTIFY message.

An incorrect initiator connection also occurs on an initial connection
when an initiator:
   a)     attempts to establish an I_T_L_Q nexus when an I_T_L nexus already
          exists from a previous connection, or
   b)     attempts to establish an I_T_L nexus when an I_T_L_Q nexus already
          exists, unless there is a contingent allegiance or extended
          contingent allegiance condition present for the logical unit. 

A target that detects an incorrect initiator connection shall abort all
I/O processes for the initiator on the logical unit or target routine and
shall return CHECK CONDITION status.  The sense key shall be set to
ABORTED COMMAND and the additional sense code shall be set to OVERLAPPED
COMMANDS ATTEMPTED.

If an initiator reconnects to an I/O process and a soft reset condition
has occurred, the target shall meet the requirements of 6.2.2.2.

   NOTES
   47 An incorrect initiator connection may be indicative of a serious error
   and, if not detected, could result in an I/O process operating with a wrong
   set of pointers.  This is considered a catastrophic failure on the part of
   the initiator.  Therefore, vendor-specific error recovery procedures may be
   required to guarantee the data integrity on the medium.  The target may
   return additional sense data to aid in this error recovery procedure (e.g.
   sequential-access devices may return the residue of blocks remaining to be
   written or read at the time the second command was received).
   48 Some targets may not detect an incorrect initiator connection until after
   the command descriptor block has been received.

7.5.3 Selection of an invalid logical unit

The target's response to selection of a logical unit that is not valid is
described in the following paragraphs.

The logical unit may not be valid because:
   a)     the target does not support the logical unit (e.g. some targets
          support only one peripheral device).  In response to an INQUIRY
          command, the target shall return the INQUIRY data with the
          peripheral qualifier set to the value required in 8.2.5.1.  In
          response to any other command except REQUEST SENSE, the target shall
          terminate the command with CHECK CONDITION status.  In response to
          a REQUEST SENSE command, the target shall return sense data.  The
          sense key shall be set to ILLEGAL REQUEST and the additional sense
          code shall be set to LOGICAL UNIT NOT SUPPORTED.
   b)     the target supports the logical unit, but the peripheral device is
          not currently attached to the target.  In response to an INQUIRY
          command, the target shall return the INQUIRY data with the
          peripheral qualifier set to the value required in 8.2.5.1.  In
          response to any other command except REQUEST SENSE, the target shall
          terminate the command with CHECK CONDITION status.  In response to
          a REQUEST SENSE command, the target shall return sense data.  The
          sense key shall be set to ILLEGAL REQUEST and the additional sense
          code shall be set to LOGICAL UNIT NOT SUPPORTED.
   c)     the target supports the logical unit and the peripheral device is
          attached, but not operational.  In response to an INQUIRY command,
          the target shall return the INQUIRY data with the peripheral
          qualifier set to the value required in 8.2.5.1.  The target's
          response to any command other than INQUIRY and REQUEST SENSE is
          vendor-specific.
   d)     the target supports the logical unit but is incapable of determining
          if the peripheral device is attached or is not operational when it
          is not ready.  In response to an INQUIRY command,the target shall
          return the INQUIRY data with the peripheral qualifier set to the
          value required in 8.2.5.1.  In response to a REQUEST SENSE command,
          the target shall return the REQUEST SENSE data with a sense key of
          NO SENSE unless a contingent allegiance exists.  The target's
          response to any other command is vendor-specific.

7.5.4 Parameter rounding

Certain parameters sent to a target with various commands contain a range
of values.  Targets may choose to implement only selected values from this
range.  When the target receives a value that it does not support, it
either rejects the command (CHECK CONDITION status with ILLEGAL REQUEST
sense key) or it rounds the value received to a supported value.  The
target shall reject unsupported values unless rounding is permitted in the
description of the parameter.

Rounding of parameter values, when permitted, shall be performed as
follows -  A target that receives a parameter value that is not an exact
supported value shall adjust the value to one that it supports and shall
return CHECK CONDITION status with a sense key of RECOVERED ERROR.  The
additional sense code shall be set to ROUNDED PARAMETER.  The initiator
is responsible to issue an appropriate command to learn what value the
target has selected.

   NOTE 49 Generally, the target should adjust maximum-value fields down to the
   next lower supported value than the one specified by the initiator.  Minimum-
   value fields should be rounded up to the next higher supported value than the
   one specified by the initiator.  In some cases, the type of rounding (up or
   down) is explicitly specified in the description of the parameter.

7.5.5 Asynchronous event notification 

Implementation of asynchronous event notification is optional.  This
protocol can be used to inform processor devices that an asynchronous
event has occurred.  A SEND command with an AEN bit of one is issued to
a processor device with a subsequent data phase that includes the REQUEST
SENSE information.  SCSI devices that respond to an INQUIRY command as a
processor device type with asynchronous event notification capability may
be notified of asynchronous events using this protocol.  An SCSI device
has to be capable of acting as an initiator in order to perform
asynchronous event notification.

   NOTE 50 Asynchronous event notification cannot be used with a device that
   acts as a temporary initiator (e.g. devices executing COPY commands) since
   they are not identified as a processor device.

Parameters affecting the use of asynchronous event notification are
contained in the control mode page (see 8.3.3.1).

The four uses of asynchronous event notification are:
   a)     informing a processor of an error condition encountered after
          command completion;
   b)     informing all processor devices that a newly initialized device is
          available;
   c)     informing all processor devices of other unit attention conditions;
   d)     informing all processor devices of other asynchronous events.

An example of the first case above is a device that implements a write
cache.  If the target is unable to write cached data to the medium, it may
use an asynchronous event notification to inform the initiator of the
failure.  An extended contingent allegiance condition may also be
established during the same I_T_L nexus used for the asynchronous event
notification (see 6.6.9).

An example of the third case above is a device that supports removable
media.  Asynchronous event notification may be used to inform an initiator
of a not-ready-to-ready transition (medium changed) or of an operator
initiated event (e.g. activating a write protect switch or activating a
start or stop switch).

An example of the fourth case above is a sequential-access device
performing a REWIND command with the immediate bit set to one. 
Asynchronous event notification may be used to inform an initiator that
the beginning of medium has been reached.  Completion of a CD-ROM AUDIO
PLAY command started in the immediate mode is another example of this
case.

Notification of an asynchronous event is performed using the SEND command
with the AEN bit set to one.  The information identifying the condition
being reported shall be returned during the DATA OUT phase of the SEND
command.  See 12.2.2 for further information on the format of the data
sent.

An error condition or unit attention condition shall be reported once per
occurrence of the event causing it.  The target may choose to use an
asynchronous event notification or to return CHECK CONDITION status on a
subsequent command, but not both.  Notification of command-related error
conditions shall be sent only to the processor that initiated the I/O
process.

The asynchronous event notification protocol can be used to notify
processor devices that a system resource has become available.  If a
target chooses to use this method, the sense key in the sense data sent
to the processor device shall be set to UNIT ATTENTION. 

The asynchronous event notification protocol shall be sent only to SCSI
devices that return processor device type with an AENC bit of one in
response to an INQUIRY command.  The INQUIRY command should be issued to
logical unit zero of each SCSI device responding to selection.  This
procedure shall be conducted prior to the first asynchronous event
notification and shall be repeated whenever the device deems it
appropriate or when an event occurs that may invalidate the current
information.  (See 6.6.21, SYNCHRONOUS DATA TRANSFER REQUEST message, for
examples of these events.)

Each SCSI device that returns processor device type with an AENC bit of
one shall be issued a TEST UNIT READY command to determine that the SCSI
device is ready to receive an asynchronous event notification.  An SCSI
device returning CHECK CONDITION status is issued a REQUEST SENSE command. 
This clears any pending unit attention condition.  An SCSI device that
returns processor device type with an AENC bit of one and returns GOOD
status when issued a TEST UNIT READY command shall accept a SEND command
with an AEN bit of one.

   NOTE 51 An SCSI device which can use asynchronous event notification at
   initialization time should provide means to defeat these notifications.  This
   can be done with a switch or jumper wire.  Devices that implement saved
   parameters may alternatively save the asynchronous event notification
   permissions either on a per SCSI device basis or as a system-wide option. 
   In any case, a device conducts a survey with INQUIRY commands to be sure that
   the devices on the SCSI bus are appropriate destinations for SEND commands
   with an AEN bit of one.  (The devices on the bus or the SCSI ID assignments
   may have changed.)

7.5.6 Unexpected reselection

An unexpected reselection occurs if an SCSI device attempts to reconnect
to an I/O process for which a nexus does not exist.  An SCSI device should
respond to an unexpected reselection by sending an ABORT message.

7.6 Contingent allegiance condition

The contingent allegiance condition shall exist following the return of
CHECK CONDITION or COMMAND TERMINATED status.  The contingent allegiance
condition shall be preserved for the I_T_x nexus until it is cleared.  The
contingent allegiance condition shall be cleared upon the generation of
a hard reset condition, or by an ABORT message, a BUS DEVICE RESET
message, or any subsequent command for the I_T_x nexus.  While the
contingent allegiance condition exists the target shall preserve the sense
data for the initiator.

While the contingent allegiance condition exists, if the target is unable
to maintain separate sense data, the target shall respond to any other
requests for access to the logical unit or target routine from another
initiator with a BUSY status.  Execution of all tagged I/O processes for
the I_T_L nexus for which the contingent allegiance condition exists shall
be suspended until the contingent allegiance condition is cleared.

7.7 Extended contingent allegiance condition

Implementation of extended contingent allegiance is optional.  The
extended contingent allegiance condition extends the contingent allegiance
condition for an I_T_x nexus.  This condition is generated by the target
sending an INITIATE RECOVERY message to the initiator following CHECK
CONDITION or COMMAND TERMINATED status and prior to the COMMAND COMPLETE
message.  This condition shall be preserved until it is cleared by a BUS
DEVICE RESET message, a RELEASE RECOVERY message, or a hard reset
condition.

While the extended contingent allegiance condition exists, the target
shall respond to any other request for access to the logical unit from
another initiator with BUSY status.  Execution of all I/O processes for
the logical unit for which the extended contingent allegiance condition
exists shall be suspended until the RELEASE RECOVERY message is received
by the target.

   NOTES
   52 It is not required to generate an extended contingent allegiance condition
   for every CHECK CONDITION or COMMAND TERMINATED status that occurs.  Simple
   errors not requiring an extended recovery may be dealt with by using the
   contingent allegiance protocol.
   53 During the existence of the extended contingent allegiance condition, 
   appropriate error recovery sequences may be executed.  Such commands can
   correct data, modify or delete queued commands, perform LOG SENSE commands
   and obtain diagnostic information.  Extended contingent allegiance is
   recommended for error conditions that may require execution of multiple-step
   error-recovery protocols without interference from other initiators.

An extended contingent allegiance condition may also be generated using
an asynchronous event notification protocol.  When the event is detected,
the bus device that detected the event assumes the initiator role and
transmits a SEND command with an AEN bit of one to the appropriate
device(s) (see 12.2.2).

If the device wishes to generate an extended contingent allegiance
condition during an asynchronous event notification, it shall send an
INITIATE RECOVERY message following the IDENTIFY message (and following
any queue tag message) and prior to the COMMAND phase of the SEND command. 
An extended contingent allegiance condition can be generated for only one
I_T_L nexus at a time.  The extended contingent allegiance condition is
cleared when a RELEASE RECOVERY message is received from the device to
which the INITIATE RECOVERY message was sent.  The generation of a hard
reset condition, or receipt of a BUS DEVICE RESET message, shall also
clear the extended contingent allegiance condition.

During an extended contingent allegiance, only untagged I/O processes from
the SCSI device to which the INITIATE RECOVERY message was sent shall be
executed by the target for the logical unit.  If the initiator sends a
queue tag message, the target shall respond with QUEUE FULL status.  After
the extended contingent allegiance condition is cleared, any commands
remaining in the command queue shall be executed.

 Queued I/O processes

The implementation of queuing for I/O processes is optional.  Queuing of
I/O processes allows a target to accept multiple I/O processes.

There are two methods for implementation of queuing, tagged and untagged.
Tagged queuing allows a target to accept multiple I/O processes from each
initiator for each logical unit.  Untagged queuing allows a target to
accept one I/O process from each initiator for each logical unit or target
routine.  Untagged queuing may be supported by SCSI-1 or SCSI-2 devices. 
Tagged queuing is new in SCSI-2.

A target may support both tagged and untagged queuing.  An initiator may
not mix the use of tagged and untagged queuing for I/O processes to a
logical unit, except during a contingent allegiance or extended contingent
allegiance condition when only untagged initial connections are allowed. 
An initiator that elects to use tagged queuing does not preclude another
initiator on the same SCSI bus from using untagged queuing.

7.8.1 Untagged queuing

Untagged queuing allows a target to accept a command from an initiator for
a logical unit or target routine while I/O processes from other initiators
are being executed.  Only one command for each I_T_x nexus shall be
accepted at a time.  

An I/O process may be initiated any time the BUS FREE phase exists, even
if an I/O process from a different initiator is  active.  If the
disconnect privilege is not granted in the IDENTIFY message of the current
I/O process, the target may either suspend all other I/O processes or it
may return BUSY status to the current I/O process.

The I_T_x nexus sufficiently specifies the relationship so that the target
can reconnect to the initiator to restore the pointers for I/O process as
long as only one I/O process per I_T_x nexus is issued.  It is the
responsibility of the initiator to assure that only one such I/O process
is issued at any time (see 7.5.2).

7.8.2 Tagged queuing

Tagged queuing allows a target to accept multiple I/O processes from the
same or different initiators until the logical unit's command queue is
full.  If an I/O process is received and the command queue is full, the
target shall terminate the I/O process with QUEUE FULL status.  

The command queue is setup by the target for each supported logical unit. 
Initiators may add or delete I/O processes to the queue.  When adding an
I/O process, the initiator may specify fixed order of execution, allow the
target to define the order of execution, or specify that the I/O process
is to be executed next.

If the disconnect privilege is not granted in the IDENTIFY message for a
tagged I/O process, the target shall return BUSY status.

The queue tag messages (see 6.6.17) allow the initiator to establish a
unique I_T_L_Q nexus to identify each I/O process.  The I_T_L_Q nexus
allows the target to reconnect to a specific I/O process, and allows the
initiator to restore the set of pointers for that I/O process.  An
initiator may have several I/O processes ongoing to the same or different
logical units as long as each has a unique nexus.

If only SIMPLE QUEUE TAG messages are used, the target may execute the
commands in any order that is deemed desirable within the constraints of
the queue management algorithm specified in the control mode page (see
8.3.3.1).

If ORDERED QUEUE TAG messages are used, the target shall execute the
commands in the order received with respect to other commands received
with ORDERED QUEUE TAG messages.  All commands received with a SIMPLE
QUEUE TAG message prior to a command received with an ORDERED QUEUE TAG
message, regardless of initiator, shall be executed before that command
with the ORDERED QUEUE TAG message.  All commands received with a SIMPLE
QUEUE TAG message after a command received with an ORDERED QUEUE TAG
message, regardless of initiator, shall be executed after that command
with the ORDERED QUEUE TAG message. 

A command received with a HEAD OF QUEUE TAG message is placed first in the
queue, to be executed next.  A command received with a HEAD OF QUEUE TAG
message shall be executed prior to any queued I/O process.  Consecutive
commands received with HEAD OF QUEUE TAG messages are executed in a last-
in-first-out order.

An I/O process received without a queue tag message, while there are any
tagged I/O commands in the command queue from the same initiator, is an
incorrect initiator connection (see 7.5.2), unless there is a contingent
allegiance or extended contingent allegiance condition.

A series of linked commands constitute a single I/O process.  These
commands are assigned the queue tag established in the initial connection. 
A command received with a HEAD OF QUEUE TAG message shall not suspend a
series of linked commands for which the target has begun execution.

The RESERVE and RELEASE commands should be sent with an ORDERED QUEUE TAG
message.  Use of the HEAD OF QUEUE TAG message with these commands could
result in reservation conflicts with previously issued commands.

   NOTE 54 Initiators should not issue another I/O processes following a
   reservation request until that request is honoured by the target.  This
   prevents possible sequencing errors or file system corruption.

There are two methods of dealing with the command queue following a
contingent allegiance condition.  The method used is specified in the
control mode page by the queue error management bit (see 8.3.3.1).

The first method allows the execution of tagged I/O processes to resume
when the contingent allegiance or extended contingent allegiance condition
is cleared.  The target returns BUSY status to other initiators while the
contingent allegiance or extended contingent allegiance condition exists. 
During this time, all tagged I/O processes are suspended.  All I/O
processes used for recovery operations shall be untagged.  The queue may
be modified by removing all or selected I/O processes from the queue as
part of the recovery procedure.

If commands are combined by the queuing algorithm such that the exception
condition affects more than one command, then a contingent allegiance
condition shall be generated for all affected commands.

The second method aborts all I/O processes when the contingent allegiance
or extended contingent allegiance condition is cleared.  A unit attention
condition shall be generated for all other initiators and the additional
sense code shall be set to COMMANDS CLEARED BY ANOTHER INITIATOR.

A device that does not support tagged I/O processes (e.g. not implemented,
disabled by the Dque bit in the control mode page, or switched to an
operating definition that does not include tagged I/O processes) it shall
respond to any queue tag message with a MESSAGE REJECT message.  The
target shall continue the I/O process as if it were an untagged I/O
process.

Tagged queuing may also be temporarily disabled during certain
initialization periods or to control internal resource utilization. 
During these periods the target may return QUEUE FULL status or it may
respond to any queue tag message with a MESSAGE REJECT message.

Several messages may be used to clear part or all of the command queue. 
Please refer to the ABORT, ABORT TAG, BUS DEVICE RESET, and CLEAR QUEUE
messages in clause 6 for details.

7.8.3 Example of queued I/O process

This example of queuing I/O processes illustrates the execution of a
number of commands.  After each command, the state of the queue kept in
the target is shown to indicate the function actually performed by the
queuing.

7.8.3.1 Typical sequences for tagged queuing

An I/O process using tagged queuing uses the following sequences for
normal execution.  The initiator first arbitrates for the SCSI bus, and
after successfully obtaining the SCSI bus, selects the appropriate SCSI
device.  The ATN signal is asserted during the SELECTION phase to indicate
that a MESSAGE OUT phase is requested by the initiator.  The first message
byte transferred is an IDENTIFY message.  The ATN signal continues to be
asserted during the MESSAGE OUT phase to indicate that the initiator has
another message.  The second message byte transferred is the first byte
of the appropriate queue tag message, in this case a SIMPLE QUEUE TAG
message.  The third and last message byte is transmitted containing the
second byte of the queue tag message, the queue tag.  As it is
transferred, the ATN signal is negated to indicate that no more message
bytes are available.  The target then transfers the command descriptor
block.  Assuming the command requires disconnection, the target transmits
a DISCONNECT message to the initiator and then enters the BUS FREE phase. 
The target places the command, identified by the I_T_L_Q nexus, at the
appropriate place in the command queue.

When the target removes I/O processes from the queue for execution, a
physical latency period may occur.  At the end of this period, when the
target is prepared to transfer the appropriate data, the target begins an
ARBITRATION phase and, upon winning, enters a RESELECTION phase.  After
a successful reselection, the target sends the IDENTIFY message followed
by a SIMPLE QUEUE TAG message with the queue tag value originally sent by
the initiator.  The initiator uses the I_T_L_Q nexus to identify the
correct set of pointers and control blocks associated with the I/O process
and to establish the necessary conditions for data transfer.  The target
begins data transfer.  When the data transfer is successfully completed,
the target returns GOOD status and terminates the I/O process with a
COMMAND COMPLETE message.

7.8.3.2 Example of tagged queuing

An example of the execution of five queued I/O processes is described to
demonstrate how tagged queuing operates.  All tagged I/O processes are
from one initiator to a single logical unit of a single target.  The five
I/O processes are defined in table 28.  The target is a direct-access
device.  At the time the I/O processes are first being executed, it is
assumed that the actuator is in position to access logical block 10 000.

               Table 28 - Commands in order received by target
+===========-=============-=============-============-=============-==========+
|  Command  |  Queue tag  |  Queue tag  |  Logical   |   Transfer  |  Status  |
|           |   message   |    value    |   block    |    length   |          |
|           |             |             |  address   |             |          |
|-----------+-------------+-------------+------------+-------------+----------|
|   READ    |    SIMPLE   |     01h     |   10 000   |    1 000    |  Queued  |
|   READ    |    SIMPLE   |     02h     |      100   |        1    |  Queued  |
|   READ    |   ORDERED   |     03h     |    1 000   |    1 000    |  Queued  |
|   READ    |    SIMPLE   |     04h     |   10 000   |        1    |  Queued  |
|   READ    |    SIMPLE   |     05h     |    2 000   |    1 000    |  Queued  |
+=============================================================================+

The optimum order would require that those blocks close to the actuator
position be the first blocks accessed, followed by those increasingly far
from the actuator position.  However, the command with queue tag 03h is
an ordered I/O process, so that all simple I/O processes transferred
previously must be executed before, while all simple I/O processes
transferred after the ordered I/O process must be executed after the
ordered I/O process.

If a target supports an optimizing algorithm the actual order in which the
I/O processes are executed could be as shown in table 29.

                  Table 29 - Commands in order of execution
+===========-=============-=============-============-=============-==========+
|  Command  |  Queue tag  |  Queue tag  |  Logical   |   Transfer  |  Status  |
|           |   message   |    value    |   block    |    length   |          |
|           |             |             |  address   |             |          |
|-----------+-------------+-------------+------------+-------------+----------|
|   READ    |    SIMPLE   |     01h     |   10 000   |    1 000    |  Queued  |
|   READ    |    SIMPLE   |     02h     |      100   |        1    |  Queued  |
|   READ    |   ORDERED   |     03h     |    1 000   |    1 000    |  Queued  |
|   READ    |    SIMPLE   |     05h     |    2 000   |    1 000    |  Queued  |
|   READ    |    SIMPLE   |     04h     |   10 000   |        1    |  Queued  |
+=============================================================================+

I/O processes with queue tag values 01h and 02h are executed in the order
received since the actuator is already in position to execute I/O process
01h.  I/O process 02h must be executed before I/O process 04h or 05h
because the ordered I/O process 03h was transmitted after I/O processes
01h and 02h but before I/O processes 04h and 05h.  I/O process 03h is then
executed after I/O process 02h.  The I/O processes 04h and 05h are
executed after the ordered I/O process 03h.  I/O process 05h is executed
before I/O process 04h because the actuator is in position to access block
2 000 after executing I/O process 03h.  I/O process 04h is executed last. 

As an example of the operation of the HEAD OF QUEUE TAG I/O process,
consider that a new I/O process, identified by a HEAD OF QUEUE TAG message
with a queue tag of 08h, is transmitted to the target while the ordered
I/O process 03h is being executed.  The I/O process 03h continues
execution, but the new HEAD OF QUEUE TAG I/O process is placed in the
queue for execution before all subsequent I/O processes.  In this case,
the queue for execution after the ordered I/O process 03h was executed
would appear as shown in table 30.

               Table 30 - Modified by HEAD OF QUEUE TAG message
+===========-=============-=============-============-=============-==========+
|  Command  |  Queue tag  |  Queue tag  |  Logical   |   Transfer  |  Status  |
|           |   message   |    value    |   block    |    length   |          |
|           |             |             |  address   |             |          |
|-----------+-------------+-------------+------------+-------------+----------|
|   READ    |   ORDERED   |     03h     |    1 000   |    1 000    | Executing|
|   READ    |HEAD OF QUEUE|     08h     |        0   |        8    |  Queued  |
|   READ    |    SIMPLE   |     05h     |    2 000   |    1 000    |  Queued  |
|   READ    |    SIMPLE   |     04h     |   10 000   |        1    |  Queued  |
+=============================================================================+

To obtain maximum performance gains using tagged queuing requires careful
implementation of the queuing algorithms in the target.  In addition,
initiators should allow a maximum number of simple I/O processes to be
executed with a minimum number of ordered I/O processes.  RESERVE and
RELEASE commands, SET LIMITS commands, and appropriate software locking
conventions should be used to guarantee the proper relationship between
the commands executed and the data stored on the peripheral devices. 
These conventions are not defined by this standard.

7.9  Unit attention condition

The target shall generate a unit attention condition for each initiator
on each valid logical unit whenever the target has been reset by a BUS
DEVICE RESET message, a hard reset condition, or by a power-on reset.  The
target shall also generate a unit attention condition on the affected
logical unit(s) for each initiator whenever one of the following events
occurs:
   a)     A removable medium may have been changed;
   b)     The mode parameters in effect for this initiator have been changed
          by another initiator; 
   c)     The version or level of microcode has been changed;
   d)     Tagged commands queued for this initiator were cleared by another
          initiator;
   e)     INQUIRY data has been changed;
   f)     The mode parameters in effect for the initiator have been restored
          from non-volatile memory;
   g)     A change in the condition of a synchronized spindle;
   h)     Any other event occurs that requires the attention of the initiator.

   NOTES
   56 Targets may queue unit attention conditions on logical units.  After the
   first unit attention condition is cleared, another unit attention condition
   may exist (e.g. a power on condition followed by a microcode change
   condition).
   57 See 7.5.3 for requirements concerning selection of an invalid logical
   unit.

The unit attention condition shall persist on the logical unit for each
initiator until that initiator clears the condition as described in the
following paragraphs.

If an INQUIRY command is received from an initiator to a logical unit with
a pending unit attention condition (before the target generates the
contingent allegiance condition), the target shall perform the INQUIRY
command and shall not clear the unit attention condition.  If the INQUIRY
command is received after the target has generated the contingent
allegiance condition for a pending unit attention condition, then the unit
attention condition on the logical unit shall be cleared, and the target
shall perform the INQUIRY command.

If any other command is received after the target has generated the
contingent allegiance condition for a pending unit attention condition,
the unit attention condition on the logical unit shall be cleared, and if
no other unit attention condition is pending the target shall perform the
command.  If another unit attention condition is pending, the target shall
not perform the command and shall generate another contingent allegiance
condition.

If a REQUEST SENSE command is received from an initiator with a pending
unit attention condition (before the target generates the contingent
allegiance condition), then the target shall either:
   a)     report any pending sense data and preserve the unit attention
          condition on the logical unit, or,
   b)     report the unit attention condition, may discard any pending sense
          data, and clear the unit attention condition on the logical unit for
          that initiator.

If the target has already generated the contingent allegiance condition
for the unit attention condition, the target shall perform the second
action listed above.

If an initiator issues a command other than INQUIRY or REQUEST SENSE while
a unit attention condition exists for that initiator (prior to generating
the contingent allegiance condition for the unit attention condition), the
target shall not perform the command and shall report CHECK CONDITION
status unless a higher priority status as defined by the target is also
pending (e.g. BUSY or RESERVATION CONFLICT).

If, after generating the contingent allegiance condition for a pending
unit attention condition, the next command received from that initiator
on the logical unit is not REQUEST SENSE, then that command shall be
performed and the unit attention condition shall be cleared for that
initiator on the logical unit and the sense data is lost (see 7.6).

If a target becomes a temporary initiator to issue a SEND command with an
AEN bit of one, which informs the initiator (temporary target) of the unit
attention condition, and the SEND command completes with GOOD status, then
the target shall clear the unit attention condition for that initiator on
the logical unit (see 7.5.5).

8  All device types


8.1 Model for all device types

This model describes some of the general characteristics expected of most
SCSI devices.  It is not intended to define any requirements nor is it
intended to alter any requirements defined elsewhere in this International
Standard.  Clause 7 also contains model information pertaining to all
device types.

8.1.1 SCSI addresses

There are two levels of addresses within the SCSI architecture: the SCSI
device address and the logical unit number or target routine number.

8.1.1.1 SCSI device address

SCSI devices occupy (i.e. respond to) one address on the SCSI bus. 
Generally, the SCSI device provides a means (e.g. switches, jumpers) to
select one of the eight available addresses (0 through 7).  This address
is used during bus arbitration and selection or reselection of SCSI
devices.  Each device on the SCSI bus is assigned a unique address.

Normally, the SCSI device address is set when the system is configured and
it remains static thereafter.  Some systems and devices provide vendor-
specific means to alter this address at other times.

8.1.1.2 Logical units

Each target has one or more logical units, beginning with logical unit
zero.  There is a maximum of eight logical units.  These logical units are
usually mapped directly to peripheral devices, but they may be a portion
of a peripheral device or may comprise multiple peripheral devices.

An initiator can determine whether a target implements a logical unit by
issuing an INQUIRY command and examining the returned peripheral qualifier
and peripheral device type.

The concept of a logical unit is not defined for an initiator.  (An SCSI
device may implement both the initiator role and the target role.  In this
case logical unit(s) are defined only for the target role.)

8.1.1.3 Target routines

An optional feature of the SCSI architecture permits each target to have
one or more target routines, beginning with target routine number zero. 
There is a maximum of eight target routines.  These target routines are
processes that execute directly on the target and are not associated with
a particular logical unit or peripheral device.  Target routines are
addressed using the LUNTAR bit of the IDENTIFY message (see 6.6.7).

Target routines are principally intended to return information about the
target and the only valid commands are INQUIRY and REQUEST SENSE.

8.1.2 Commands implemented by all SCSI devices

This standard defines four commands that all SCSI-2 targets implement -
INQUIRY, REQUEST SENSE, SEND DIAGNOSTIC, and TEST UNIT READY.  These
commands are used to configure the system, to test targets, and to return
important information concerning errors and exception conditions.

8.1.2.1 Using the INQUIRY command

The INQUIRY command may be used by a system to determine the configuration
of the SCSI bus.  Target devices respond with information that includes
their type and standard level and may include the vendor's identification,
model number and other useful information.  It is recommended that SCSI
targets be capable of returning this information (or whatever part of it
that is available) upon completing power-on initialization.  An SCSI
device may take longer to get certain portions of this information,
especially if it retrieves the information from the medium.

8.1.2.2 Using the REQUEST SENSE command

Whenever a contingent allegiance condition (see 7.6) is established, the
initiator that received the error should issue a REQUEST SENSE command to
receive the sense data describing what caused the contingent allegiance
condition.  If the initiator issues some other command, the sense data is
lost.

8.1.2.3 Using the SEND DIAGNOSTIC command

The SEND DIAGNOSTIC command provides a means to request the target to
perform a self test.  While the test is target specific, the means of
requesting the test is standardized and the response is simply GOOD status
if all is well or CHECK CONDITION status if the test fails.

The SEND DIAGNOSTIC command also provides other powerful features when
used in conjunction with the RECEIVE DIAGNOSTIC RESULTS command, but this
capability is optional.

8.1.2.4 Using the TEST UNIT READY command

The TEST UNIT READY command is useful in that it allows an initiator to
poll a logical unit until it is ready without the need to allocate space
for returned data.  It is especially useful to check cartridge status of
logical units with removable media.  Targets are expected to respond
promptly to indicate the current status of the device (i.e. a target
should avoid lengthy disconnections in an attempt to respond with GOOD
status).
 
8.2 Commands for all device types

The operation codes for commands that apply to all device types are listed
in table 31.

                   Table 31 - Commands for all device types
+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
|  CHANGE DEFINITION                  |    40h     |   O  |   8.2.1    |
|  COMPARE                            |    39h     |   O  |   8.2.2    |
|  COPY                               |    18h     |   O  |   8.2.3    |
|  COPY AND VERIFY                    |    3Ah     |   O  |   8.2.4    |
|  INQUIRY                            |    12h     |   M  |   8.2.5    |
|  LOG SELECT                         |    4Ch     |   O  |   8.2.6    |
|  LOG SENSE                          |    4Dh     |   O  |   8.2.7    |
|  MODE SELECT(6)                     |    15h     |   Z  |   8.2.8    |
|  MODE SELECT(10)                    |    55h     |   Z  |   8.2.9    |
|  MODE SENSE(6)                      |    1Ah     |   Z  |   8.2.10   |
|  MODE SENSE(10)                     |    5Ah     |   Z  |   8.2.11   |
|  READ BUFFER                        |    3Ch     |   O  |   8.2.12   |
|  RECEIVE DIAGNOSTIC RESULTS         |    1Ch     |   O  |   8.2.13   |
|  REQUEST SENSE                      |    03h     |   M  |   8.2.14   |
|  SEND DIAGNOSTIC                    |    1Dh     |   M  |   8.2.15   |
|  TEST UNIT READY                    |    00h     |   M  |   8.2.16   |
|  WRITE BUFFER                       |    3Bh     |   O  |   8.2.17   |
|----------------------------------------------------------------------|
|Key:  M = Command implementation is mandatory.                        |
|      O = Command implementation is optional.                         |
|      Z = Command implementation is device type specific.             |
+======================================================================+


8.2.1 CHANGE DEFINITION command

The CHANGE DEFINITION command (see table 32) modifies the operating
definition of the selected logical unit or target with respect to commands
from the selecting initiator or for all initiators. 

                     Table 32 - CHANGE DEFINITION command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (40h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |              Reserved                      |
|-----+-----------------------------------------------------------------------|
| 2   |                  Reserved                                    |  Save  |
|-----+-----------------------------------------------------------------------|
| 3   |Reserved|                  Definition parameter                        |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Parameter data length                       |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+
 
A save control bit (Save) of zero indicates that the target shall not save
the operating definition.  A Save bit of one indicates that the target
shall save the operating definition to non-volatile memory. 

The definition parameter field is defined in table 33.

                    Table 33 - Definition parameter field
+============-====================================+
|   Value    |  Meaning of definition parameter   |
|------------+------------------------------------|
|    00h     |  Use current operating definition  |
|    01h     |  SCSI-1 operating definition       |
|    02h     |  CCS operating definition          |
|    03h     |  SCSI-2 operating definition       |
|  04 - 3Fh  |  Reserved                          |
|  40 - 7Fh  |  Vendor-specific                   |
+=================================================+

   NOTE 57 The current operating definition parameter values establish operating
   definitions compatible with the appropriate SCSI specification.  Vendor-
   specific values are available for those applications where more complex
   operation definition changes are required. Definitions supported by a device
   are returned in the implemented operating definition page (see 8.3.4.3).

The parameter data length field specifies the length in bytes of the
parameter data that shall be transferred from the initiator to the target. 
A parameter data length of zero indicates that no data shall be
transferred.  This condition shall not be considered as an error. 
Parameter data lengths greater than zero indicate the number of bytes of
parameter data that shall be transferred.

The parameter data is vendor-specific.

   NOTE 58 The parameter data may be used to specify a password to validate an
   operating definition change.

The CHANGE DEFINITION command causes one of the operating definition
modifications listed below:
   a)     Change the operating definition of a logical unit relative to the
          initiator that issued the command.  In this case, the target is
          capable of maintaining an unique operating definition for each
          logical unit relative to each initiator in the system.
   b)     Change the operating definition of the target relative to the
          initiator that issued the command.  In this case, the target is
          capable of maintaining a unique operating definition, for each
          initiator in the system, that applies to all logical units of the
          target.
   c)     The operating definition of a logical unit relative to all
          initiators in the system.  In this case, the target is capable of
          maintaining an unique operating definition for each logical unit
          relative to all initiators in the system.
   d)     The operating definition of the target relative to all initiators
          in the system.  In this case, the target is capable of maintaining
          only one operating definition.

   NOTES
   59 This International Standard does not provide a direct means to determine
   which of the above four methods has been implemented by the target.  An
   indirect means of determining which method is implemented exists in that the
   target is required to inform affected initiators of operating definition
   changes via the unit attention condition.  
   60 The final two mondifications listed above may result in incompatibilities
   if other initiators are operated below the SCSI-2 level.

The operating definition is modified after successful completion of the
command.  A target shall consider the command successfully completed when
it detects the assertion of the ACK signal for the COMMAND COMPLETE
message.  The initiator should verify the new operating definition by
issuing an INQUIRY command requesting the implemented operating definition
page (see 8.3.4.1). 

It is permissible for an SCSI-2 device that has its definition changed to
an SCSI-1 device to accept a CHANGE DEFINITION command.

   NOTE 61 The method of changing the operating definition is implementation
   dependent.  Some implementations may require that the target's operating mode
   be reinitialized as if a power-up or hard-reset had occurred.  Other
   implementations may modify only those operating definitions that are affected
   by the CHANGE DEFINITION command.

If the CHANGE DEFINITION command is not executed successfully for any
reason, the operating definition shall remain the same as it was before
the CHANGE DEFINITION command was attempted.  If it is impossible to
return to the previous operating definition, a unit attention condition
shall be generated by the target.

   NOTE 62 The present operating definition of the target may always be
   interrogated through the INQUIRY command.  When an SCSI-2 target has its
   operating definition changed to CCS or SCSI-1, certain changes are needed to
   promote compatibility with preexisting SCSI-1 initiators.  The recommended
   changes are as follows:
   a)     The target should not initiate selections to other SCSI devices to
          determine if any initiators support AEN.  The target should assume that
          none are capable of receiving AEN and not issue an AEN.
   b)     The target should not generate extended contingent allegiance conditions
          by issuing an INITIATE RECOVERY message.
   c)     If a REQUEST SENSE command with an allocation length of zero is received,
          the target should return four bytes of sense data.
   d)     If an INQUIRY command is received, the returned data should have
          appropriate values in the ANSI version and response data format fields. 
          The features supported bits should be zero.
   e)     A change in the operating definition may change the vendor identifier, the
          device type, the device model, the SCSI implementation level, the command
          set, mode pages, and any other operating characteristics.

After a power-on condition or a hard RESET condition, the target shall set
its initial operating definition to the last saved value, if saving is
implemented, or its default value, if saving is not implemented.

8.2.2 COMPARE command

The COMPARE command (see table 34) provides the means to compare data from
one logical unit with another or the same logical unit in a manner similar
to the COPY command.

                          Table 34 - COMPARE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (39h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |              Reserved             |  Pad   |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 4   |                           Parameter list length                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


This command functions in the same manner as the COPY command, except that
the data from the source is compared on a byte-by-byte basis with the data
from the destination.  The parameter list transferred to the target is the
same as for the COPY command.  This parameter list contains the
information to identify the logical units involved in the comparison and
the length of the comparison.  (See 8.2.3 for additional information about
the COPY command.)

If the comparison is unsuccessful, the command shall be terminated with
CHECK CONDITION status and the sense key shall be set to MISCOMPARE.  The
remaining fields in the sense data shall be set as documented in the COPY
command.

8.2.3 COPY command

The COPY command (see table 35) provides a means to copy data from one
logical unit to another or the same logical unit.  The logical unit that
receives and performs the COPY command is called the copy manager.  The
copy manager is responsible for copying data from a logical unit (source
device) to a logical unit (destination device).  These logical units may
reside on different SCSI devices or the same SCSI device (in fact all
three may be the same logical unit).  Some SCSI devices that implement
this command may not support copies to or from another SCSI device, or may
not support third party copies (i.e. both the source and the destination
logical units reside on other SCSI devices).

                           Table 35 - COPY command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (18h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |              Reserved             |  Pad   |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Parameter list length                       |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The pad bit (8.2.3.7) is used in conjunction with the cat bit (8.2.3.7)
in the segment descriptors to define what action should be taken when a
segment of the copy does not fit exactly into an integer number of
destination blocks. 

The parameter list length field specifies the length in bytes of the
parameters that shall be sent during the DATA OUT phase of the command. 
A parameter list length of zero indicates that no data shall be
transferred. This condition shall not be considered as an error.

The COPY parameter list (see table 36) begins with a four-byte header that
contains the COPY function code and priority.  Following the header is one
or more segment descriptors.

                        Table 36 - COPY parameter list
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+============================================+==========================|
| 0   |         COPY function code                 |         Priority         |
|-----+-----------------------------------------------------------------------|
| 1   |                           Vendor-specific                             |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|=====+=======================================================================|
|     |                         Segment descriptor(s)                         |
|=====+=======================================================================|
| 0   |                           Segment descriptor 0                        |
|- - -+---                                                                 ---|
| n   |                     (See specific table for length.)                  |
|-----+-----------------------------------------------------------------------|
|     |                                 .                                     |
|     |                                 .                                     |
|-----+-----------------------------------------------------------------------|
| 0   |                           Segment descriptor x                        |
|- - -+---                                                                 ---|
| n   |                     (See specific table for length.)                  |
+=============================================================================+


The COPY function code field defines a specific format for the segment
descriptors.  The COPY function codes are defined in table 37.  A target
need not support all function codes for its device type.

                        Table 37 - COPY function codes
+===============================================-========-==========-========+
|       Peripheral device type                  |  COPY  | Segment  |        |
|-----------------------------------------------|function|descriptor|        |
| Source                | Destination           |  code  |  table   |Comments|
|-----------------------+-----------------------+--------+----------+--------|
| Block devices         | Stream devices        |    0   |    38    |        |
| (Device types 0,4,5,7)| (Device types 1,2,3,9)|        |          |        |
| Stream devices        | Block devices         |    1   |    38    |(Note 3)|
| (Device types 1,3,9)  | (Device types 0,4,5,7)|        |          |        |
| Block devices         | Block devices         |    2   |    39    |(Note 3)|
| (Device types 0,4,5,7)| (Device types 0,4,5,7)|        |          |        |
| Stream devices        | Stream devices        |    3   |    40    |        |
| (Device types 1,3,9)  | (Device types 1,2,3,9)|        |          |        |
| Sequential-access     | Sequential-access     |    4   |    41    | Image  |
| (Device type 1)       | (Device type 1)       |        |          |  copy  |
|----------------------------------------------------------------------------|
|  NOTES                                                                     |
|   1 COPY function codes 05h - 0Fh are reserved.                            |
|   2 COPY function codes 10h - 1Fh are vendor-specific.                     |
|   3 When using the COMPARE command the destination block device may be a   |
|      CD-ROM device or an optical-memory device that uses read-only media.  |
|   4 See 8.2.5.1 for peripheral device type definitions.                    |
+============================================================================+


The priority field of the COPY parameter list establishes the relative
priority of this COPY command to other commands being executed by the same
target.  All other commands are assumed to have a priority of 1. 
Priority 0 is the highest priority, with increasing values indicating
lower priorities.

The segment descriptor formats are determined by the COPY function code. 
The segment descriptor format used for block devices (i.e. write-once, CD-
ROM, optical-memory, and direct-access devices) shall be the same.  The
segment descriptor format used for stream devices (i.e. printer,
processor, communications, and sequential-access devices)
 shall be the same.  Thus a copy operation from a write-once device to a
printer device uses the same segment descriptor format as a copy operation
from a direct-access device to a sequential-access device (see table 37). 
The segment descriptor formats are described in 8.2.3.3 through 8.2.3.6. 
A maximum of 256 segment descriptors are permitted.  The segment
descriptors are identified by ascending numbers beginning with zero.

8.2.3.1 Errors detected by the managing SCSI device

Two classes of exception conditions may occur during execution of a COPY
command.  The first class consists of those exception conditions detected
by the SCSI device that received the COPY command and is managing the
execution of the command.  These conditions include parity errors while
transferring the COPY command and status byte, invalid parameters in the
COPY command, invalid segment descriptors, and inability of the SCSI
device controlling the COPY functions to continue operating.  In the event
of such an exception condition, the SCSI device managing the COPY shall:
   a)     terminate the COPY command with CHECK CONDITION status.
   b)     set the valid bit in the sense data to one.  The segment number
          shall contain the number of the segment descriptor being processed
          at the time the exception condition is detected.  The sense key
          shall contain the sense key code describing the exception condition
          (i.e. not COPY ABORTED).  The information field shall contain the
          difference between the number of blocks field in the segment
          descriptor being processed at the time of the failure and the number
          of blocks successfully copied.  This number is the residue of
          unprocessed blocks remaining for the segment descriptor.

8.2.3.2 Errors detected by a target

The second class of errors consists of exception conditions detected by
the SCSI device transferring data at the request of the SCSI device
managing the transfer.  The SCSI device managing the COPY command detects
exception conditions by receiving CHECK CONDITION status from one of the
SCSI devices it is managing.  It then shall recover the sense data
associated with the exception condition.

The SCSI device managing the COPY command may also be the source or
destination SCSI device (or both).  It shall distinguish between a failure
of the management of the COPY and a failure of the data transfer being
requested. It shall then create the appropriate sense data internally.

After recovering the sense data associated with the detected error, the
SCSI device managing the COPY command shall:
   a)     terminate the COPY command with CHECK CONDITION status.
   b)     The valid bit in the sense data shall be set to one.  The segment
          number shall contain the number of the segment descriptor being
          processed at the time the exception condition is detected.  The
          sense key shall be set to COPY ABORTED.  The information field shall
          contain the difference between the number of blocks field in the
          segment descriptor being processed at the time of the failure and
          the number of blocks successfully copied.  This number is the
          residue of unprocessed blocks remaining for the segment descriptor.

The first byte of the command-specific information field shall specify the
starting byte number, relative to the first byte of sense data, of an area
that contains (unchanged) the source logical unit's status byte and sense
data.  A zero value indicates that no status byte or sense data is being
returned for the source logical unit.

The second byte of the command-specific information field shall specify
the starting byte number, relative to the first byte of sense data, of an
area that contains (unchanged) the destination logical unit's status byte
and sense data.  A zero value indicates that no status byte or sense data
is being returned for the destination logical unit.

8.2.3.3 COPY function code 00h and 01h

The format for the segment descriptors for COPY transfers between block
and stream devices is specified in table 38.  This format is required for
COPY function codes 00h or 01h.  The segment descriptor may be repeated
up to 256 times within the parameter list length specified in the command
descriptor block.

      Table 38 - Segment descriptor for COPY function codes 00h and 01h
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+==========================+========+========+==========================|
| 0   | Source address           |Reserved|  Cat   |     Source LUN           |
|-----+--------------------------+-----------------+--------------------------|
| 1   | Destination address      |    Reserved     |     Destination LUN      |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Stream device block length               ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Block device number of blocks            ---|
| 7   |                                                                 (LSB) |
|--- -+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|--- -+---                        Block device logical block address       ---|
| 11  |                                                                 (LSB) |
+=============================================================================+


The source address and source LUN fields specify the SCSI bus ID and
logical unit of the device to copy the data from for this segment of the
COPY command. The destination address and destination LUN fields specify
the SCSI bus ID and logical unit to copy the data to for this segment of
the COPY command.  Some SCSI devices may not support third-party COPY in
which the copying SCSI device is not the source or destination device. 
Some SCSI devices only support COPY within the SCSI device and not to
other SCSI devices.  If an unsupported COPY operation is requested, the
command shall be terminated with CHECK CONDITION status and the sense key
shall be set to ILLEGAL REQUEST with an additional sense code of INVALID
FIELD IN PARAMETER LIST (see 8.2.3.1).

A catenate (Cat) bit (optional) of one indicates that the COPY manager
shall catenate the last source block of a segment with the first source
block of the next segment if the last source block does not end exactly
at the end of the destination block.  The definition of a cat bit of zero
depends on the setting of the pad bit in the command descriptor block (see
8.2.3.7).

The stream device block-length field specifies the block length to be used
on the stream device logical unit during this segment of the COPY command. 
If the SCSI device managing the COPY knows this block length is not
supported, the command shall be terminated with CHECK CONDITION status and
the sense key shall be set to ILLEGAL REQUEST with an additional sense
code of INVALID FIELD IN PARAMETER LIST.  If the block length is found to
be invalid while executing a read or write operation to the stream device,
the command shall be terminated with CHECK CONDITION status and the sense
key shall be set to COPY ABORTED (see 8.2.3.2).

The block device number of blocks field specifies the number of blocks in
the current segment to be copied.  A value of zero indicates that no
blocks shall be transferred in this segment.

The block device logical block address field specifies the starting
logical block address on the logical unit for this segment.

8.2.3.4 COPY function code 02h

The format for the segment descriptors for COPY transfers among block
devices is specified in table 39.  This format is required for COPY
function code 02h.  The segment descriptor may be repeated up to 256 times
within the parameter list length specified in the command descriptor
block.

           Table 39 - Segment descriptor for COPY function code 02h
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+==========================+========+========+==========================|
| 0   | Source address           |   DC   |  Cat   | Source LUN               |
|-----+--------------------------+-----------------+--------------------------|
| 1   | Destination address      |   Reserved      | Destination LUN          |
|-----+-----------------------------------------------------------------------|
| 2   |                              Reserved                                 |
|-----+-----------------------------------------------------------------------|
| 3   |                              Reserved                                 |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|- - -+---                Number of blocks                                 ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|- - -+---                Source logical block address                     ---|
| 11  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 12  | (MSB)                                                                 |
|- - -+---                Destination logical block address                ---|
| 15  |                                                                 (LSB) |
+=============================================================================+


See 8.2.3.3 for definitions of the source address, the source LUN, the
destination address, the destination LUN, and CAT fields.

A destination count (DC) bit of zero indicates that the number of blocks
field refers to the source logical unit.  A DC bit of one indicates that
the number of blocks field refers to the destination logical unit. 

The number of blocks field specifies the number of blocks to be
transferred to or from (depending on the DC bit) the block device during
this segment.  A value of zero indicates that no blocks shall be
transferred.

The source logical block address field specifies the starting logical
block address on the source block device. 

The destination logical block address field specifies the starting logical
block address on the destination block device.

8.2.3.5 COPY function code 03h

The format for the segment descriptors for COPY transfers among stream
devices is specified by table 40.  This format is required for COPY
function code 03h.  The segment descriptor may be repeated up to 256 times
within the parameter list length specified in the command descriptor
block.

           Table 40 - Segment descriptor for COPY function code 03h
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+==========================+========+========+==========================|
| 0   | Source address           |   DC   |  Cat   | Source LUN               |
|-----+--------------------------+-----------------+--------------------------|
| 1   | Destination address      |   Reserved      | Destination LUN          |
|-----+-----------------------------------------------------------------------|
| 2   |                              Reserved                                 |
|-----+-----------------------------------------------------------------------|
| 3   |                              Reserved                                 |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Source block length                      ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        Destination block length                 ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|- - -+---                        Number of blocks                         ---|
| 11  |                                                                 (LSB) |
+=============================================================================+


See 8.2.3.3 for definitions of the source address, the source LUN, the
destination address, the destination LUN, and CAT fields.

A destination count (DC) bit of zero indicates that the number of blocks
field refers to the source logical unit.  A DC bit of one indicates that
the number of blocks field refers to the destination logical unit. 

The source block length field specifies the block-length of the source
device for this segment of the COPY.  A zero in this field indicates
variable block-length.  For non-zero values, this field shall match the
logical unit's actual block-length. 

If block-length mismatches are detected prior to the beginning of the read
operation by the SCSI device managing the COPY, the command shall be
terminated 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 (see 8.2.3.1). 

If the mismatches are detected during the read operation by the COPY
manager, the command shall be terminated with CHECK CONDITION status.  The
sense key shall be set to COPY ABORTED (see 8.2.3.2).  and the additional
sense code shall be set to INVALID FIELD IN PARAMETER LIST.

The destination block-length field specifies the block length to be used
on the destination logical unit during the COPY.  Destination block length
mismatches are handled in an analogous manner as source block length
mismatches.

The number of blocks field specifies the number of blocks to be
transferred to or from (depending on the DC bit) the device during this
segment.  A value of zero indicates that no blocks shall be transferred.

8.2.3.6 COPY function code 04h

The format for the segment descriptors for image COPY transfers between
sequential-access devices is specified in table 41.  This format is
required for COPY function code 04h.  The segment descriptor may be
repeated up to 256 times within the parameter list length specified in the
command descriptor block.

           Table 41 - Segment descriptor for COPY function code 04h
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+==========================+=================+==========================|
| 0   | Source address           |   Reserved      | Source LUN               |
|-----+--------------------------+-----------------+--------------------------|
| 1   | Destination address      |   Reserved      | Destination LUN          |
|-----+-----------------------------------------------------------------------|
| 2   |                              Count                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                                                                       |
|- - -+---                           Reserved                              ---|
| 7   |                                                                       |
|-----+-----------------------------------------------------------------------|
| 8   |                                                                       |
|- - -+---                           Vendor-specific                       ---|
| 11  |                                                                       |
+=============================================================================+


See 8.2.3.3 for definitions of the source address, the source LUN, the
destination address, the destination LUN, and CAT fields.

The image mode COPY command copies an exact image of the source device
medium to the destination device medium, beginning at their current
positions. The copy function terminates when the source device:
   a)     encounters an end-of-partition as defined by the source device;
   b)     encounters an end-of-data as defined by the source device (i.e.
          BLANK CHECK sense key);
   c)     has copied the number of consecutive filemarks specified in the
          count field from the source device to the destination device;
   d)     has copied the number of consecutive setmarks specified in the count
          field from the source device to the destination device, if the RSmk
          bit in the device configuration page (see 10.3.3.1) is one. 

A count field of zero indicates that the COPY command shall not terminate
due to any number of consecutive filemarks or setmarks.  Other error or
exception conditions (e.g. early-warning end-of-partition on the
destination device) may cause the COPY command to terminate prior to
completion.  In such cases, it is not possible to calculate a residue, so
the information field in the sense data shall be set to zero.

4s Copies with unequal block lengths

When copying data between two devices with unequal block lengths, it is
possible for the last source block to not completely fill the last
destination block for one or more segments in the COPY command.  Two
optional bits are defined to assist in controlling the copy manager's
actions in this circumstance.  The Pad bit (in the command descriptor
block) and the Cat bit (in each applicable segment descriptor) are defined
in table 42.

                    Table 42 - Pad and cat bit definition
+=====-=====-=================================================================+
| Pad | Cat | COPY manager's action                                           |
|-----+-----+-----------------------------------------------------------------|
|  0  |  0  | On inexact segments, it is device specific whether the COPY     |
|     |     | manager rejects the COPY command with CHECK CONDITION status and|
|     |     | ILLEGAL REQUEST sense key, the COPY manager writes or accepts   |
|     |     | short blocks (variable-block mode on sequential-access devices),|
|     |     | or the COPY manager adds pad characters (00h) to the destination|
|     |     | block or strips pad characters from the source block.           |
|     |     |                                                                 |
|  1  |  0  | On inexact segments, the COPY manager shall add pad characters  |
|     |     | (00h) to the destination block to completely fill the block, or |
|     |     | it shall strip pad characters from the source block, always     |
|     |     | stopping at the end of a complete block.                        |
|     |     |                                                                 |
|  X  |  1  | The COPY manager shall always write or read complete blocks.  On|
|     |     | inexact segments, the remainder of the block contains data from |
|     |     | the next segment.  This code is not valid in the last segment of|
|     |     | the COPY command.                                               |
+=============================================================================+


   NOTE 63 Use of pad characters is intended to assist in managing COPY commands
   between devices of different block lengths where partial-block residues may
   occur.  The initiator who issued the COPY command is responsible for
   management of these pad areas (i.e. remembering where they are).  One
   possible method is to write the COPY parameter list information to the
   destination medium prior to issuing the COPY command for backup and to read
   this information prior to issuing the COPY command for restore.

8.2.4 COPY AND VERIFY command

The COPY AND VERIFY command (see table 43) performs the same function as
the COPY command, except that a verification of the data written to the
destination logical unit is performed after the data is written.  The
parameter list transferred to the target is the same as for the COPY
command. This parameter list contains the information to identify the
logical units involved in the copy and the length of the copy.  See 8.2.3
for additional information about the COPY command.

                      Table 43 - COPY AND VERIFY command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (3Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |        Reserved          | BytChk |  Pad   |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 4   |                           Parameter list length                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


A byte check (BytChk) bit of zero causes a medium verification to be
performed with no data comparison.  A BytChk bit of one causes a byte-by-
byte comparison of data written on the destination medium and the data
transferred from the source medium.  If the comparison is unsuccessful for
any reason, the copy manager shall return CHECK CONDITION status with the
sense key set to MISCOMPARE.  The remaining fields in the sense data shall
be set as documented in the COPY command.

8.2.5 INQUIRY command

The INQUIRY command (see table 44) requests that information regarding
parameters of the target and its attached peripheral device(s) be sent to
the initiator.  An option allows the initiator to request additional
information about the target or logical unit (see 8.2.5.2).

                          Table 44 - INQUIRY command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (12h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved         |  EVPD  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Page code                                   |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Allocation length                           |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


An enable vital product data (EVPD) bit of one specifies that the target
shall return the optional vital product data specified by the page code
field.  If the target does not support vital product data and this bit is
set to one, the target shall return CHECK CONDITION status with the sense
key set to ILLEGAL REQUEST and an additional sense code of INVALID FIELD
IN CDB.

An EVPD bit of zero specifies that the target shall return the standard
INQUIRY data.  If the page code field is not zero, the target shall return
CHECK CONDITION status with the sense key set to ILLEGAL REQUEST and an
additional sense code of INVALID FIELD IN CDB.

The page code field specifies which page of vital product data information
the target shall return (see 8.3.4).

The INQUIRY command shall return CHECK CONDITION status only when the
target cannot return the requested INQUIRY data. 

   NOTE 64 The INQUIRY data should be returned even though the peripheral device
   may not be ready for other commands.

If an INQUIRY command is received from an initiator with a pending unit
attention condition (i.e. before the target reports CHECK CONDITION
status), the target shall perform the INQUIRY command and shall not clear
the unit attention condition (see 7.9).

   NOTES
   65 The INQUIRY command is typically used by the initiator after a reset or
   power-up condition to determine the device types for system configuration. 
   To minimize delays after a reset or power-up condition, the standard INQUIRY
   data should be available without incurring any media access delays.  If the
   target does store some of the INQUIRY data on the device, it may return zeros
   or ASCII spaces (20h) in those fields until the data is available from the
   device.
   66 The INQUIRY data may change as the target executes its initialization
   sequence or in response to a CHANGE DEFINITION command.  For example, the
   target may contain a minimum command set in its non-volatile memory and may
   load its final firmware from the device when it becomes ready.  After it has
   loaded the firmware, it may support more options and therefore return
   different supported options information in the INQUIRY data.

8.2.5.1 Standard INQUIRY data

The standard INQUIRY data (see table 45) contains 36 required bytes,
followed by a variable number of vendor-specific parameters.  Bytes 56
through 95, if returned, are reserved for future standardization.  

                   Table 45 - Standard INQUIRY data format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+==========================+============================================|
| 0   | Peripheral qualifier     |           Peripheral device type           |
|-----+-----------------------------------------------------------------------|
| 1   |  RMB   |                  Device-type modifier                        |
|-----+-----------------------------------------------------------------------|
| 2   |   ISO version   |       ECMA version       |  ANSI-approved version   |
|-----+-----------------+-----------------------------------------------------|
| 3   |  AENC  | TrmIOP |     Reserved    |         Response data format      |
|-----+-----------------------------------------------------------------------|
| 4   |                           Additional length (n-4)                     |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | RelAdr | WBus32 | WBus16 |  Sync  | Linked |Reserved| CmdQue | SftRe  |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|- - -+---                        Vendor identification                    ---|
| 15  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 16  | (MSB)                                                                 |
|- - -+---                        Product identification                   ---|
| 31  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 32  | (MSB)                                                                 |
|- - -+---                        Product revision level                   ---|
| 35  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 36  |                                                                       |
|- - -+---                        Vendor-specific                          ---|
| 55  |                                                                       |
|-----+-----------------------------------------------------------------------|
| 56  |                                                                       |
|- - -+---                        Reserved                                 ---|
| 95  |                                                                       |
|=====+=======================================================================|
|     |                       Vendor-specific parameters                      |
|=====+=======================================================================|
| 96  |                                                                       |
|- - -+---                        Vendor-specific                          ---|
| n   |                                                                       |
+=============================================================================+


The peripheral qualifier and peripheral device-type fields identify the
device currently connected to the logical unit.  If the target is not
capable of supporting a device on this logical unit, this field shall be
set to 7Fh (peripheral qualifier set to 011b and peripheral device type
set to 1Fh).  The peripheral qualifier is defined in table 46 and the
peripheral device type is defined in table 47.

                       Table 46 - Peripheral qualifier
+=========-===================================================================+
|Qualifier|  Description                                                      |
|---------+-------------------------------------------------------------------|
|   000b  |  The specified peripheral device type is currently connected to   |
|         |  this logical unit.  If the target cannot determine whether or    |
|         |  not a physical device is currently connected, it shall also use  |
|         |  this peripheral qualifier when returning the INQUIRY data.       |
|         |  This peripheral qualifier does not mean that the device is ready |
|         |  for access by the initiator.                                     |
|         |                                                                   |
|   001b  |  The target is capable of supporting the specified peripheral     |
|         |  device type on this logical unit;  however, the physical device  |
|         |  is not currently connected to this logical unit.                 |
|         |                                                                   |
|   010b  |  Reserved                                                         |
|         |                                                                   |
|   011b  |  The target is not capable of supporting a physical device on     |
|         |  this logical unit. For this peripheral qualifier the peripheral  |
|         |  device type shall be set to 1Fh to provide compatibility with    |
|         |  previous versions of SCSI.  All other peripheral device type     |
|         |  values are reserved for this peripheral qualifier.               |
|         |                                                                   |
|   1XXb  |  Vendor-specific                                                  |
+=============================================================================+


                      Table 47 - Peripheral device type
+=============-===============================================================+
|    Code     |  Description                                                  |
|-------------+---------------------------------------------------------------|
|     00h     |  Direct-access device (e.g. magnetic disk)                    |
|     01h     |  Sequential-access device (e.g. magnetic tape)                |
|     02h     |  Printer device                                               |
|     03h     |  Processor device                                             |
|     04h     |  Write-once device (e.g. some optical disks)                  |
|     05h     |  CD-ROM device                                                |
|     06h     |  Scanner device                                               |
|     07h     |  Optical memory device (e.g. some optical disks)              |
|     08h     |  Medium changer device (e.g. jukeboxes)                       |
|     09h     |  Communications device                                        |
|  0Ah - 0Bh  |  Defined by ASC IT8 (Graphic arts pre-press devices)          |
|  0Ch - 1Eh  |  Reserved                                                     |
|     1Fh     |  Unknown or no device type                                    |
+=============================================================================+


A removable medium (RMB) bit of zero indicates that the medium is not
removable.  A RMB bit of one indicates that the medium is removable.

The device-type modifier field was defined in SCSI-1 to permit vendor-
specific qualification codes of the device type.  This field is retained
for compatibility with SCSI-1.  Targets that do not support this field
should return a value of zero.

The usage of non-zero code values in the ISO version and ECMA version
fields are defined by the International Organization for Standardization
and the European Computer Manufacturers Association, respectively.  A zero
code value in these fields shall indicate that the target does not claim
compliance to the ISO version of SCSI (ISO 9316) or the ECMA version of
SCSI (ECMA-111). It is possible to claim compliance to more than one of
these SCSI standards.

The ANSI-approved version field indicates the implemented version of this
International Standard and is defined in table 48.

                       Table 48 - ANSI-approved version
+=============-===============================================================+
|    Code     |  Description                                                  |
|-------------+---------------------------------------------------------------|
|      0h     |  The device might or might not comply to an ANSI-approved     |
|             |  standard.                                                    |
|      1h     |  The device complies to ANSI X3.131-1986 (SCSI-1).            |
|      2h     |  The device complies to this version of SCSI.  This code is   |
|             |  reserved to designate this standard upon approval by ANSI.   |
|   3h - 7h   |  Reserved                                                     |
+=============================================================================+


The asynchronous event notification capability (AENC) bit indicates that
the device supports the asynchronous event notification capability as
defined in 7.5.5. 
   a)     Processor device-type definition:  An AENC bit of one indicates that
          the processor device is capable of accepting asynchronous event
          notifications. An AENC bit of zero indicates that the processor
          device does not support asynchronous event notifications.
   b)     All other device-types:  This bit is reserved.

A terminate I/O process (TrmIOP) bit of one indicates that the device
supports the TERMINATE I/O PROCESS message as defined in 6.6.22.  A value
of zero indicates that the device does not support the TERMINATE I/O
PROCESS message.

A response data format value of zero indicates the INQUIRY data format is
as specified in SCSI-1.  A response data format value of one indicates
compatibility with some products that were designed prior to the
development of this standard (i.e. CCS).  A response data format value of
two indicates that the data shall be in the format specified in this
International Standard.  Response data format values greater than two are
reserved.

The additional length field shall specify the length in bytes of the
parameters.  If the allocation length of the command descriptor block is
too small to transfer all of the parameters, the additional length shall
not be adjusted to reflect the truncation.

A relative addressing (RelAdr) bit of one indicates that the device
supports the relative addressing mode for this logical unit.  If this bit
is set to one, the linked command (Linked) bit shall also be set to one;
since relative addressing can only be used with linked commands.  A RelAdr
bit of zero indicates the device does not support relative addressing for
this logical unit.

A wide bus 32 (Wbus32) bit of one indicates that the device supports 32-
bit wide data transfers.  A value of zero indicates that the device does
not support 32-bit wide data transfers.

A wide bus 16 (Wbus16) bit of one indicates that the device supports 16-
bit wide data transfers.  A value of zero indicates that the device does
not support 16-bit wide data transfers.

   NOTE 67 If the values of both the Wbus16 and Wbus32 bits are zero, the device
   only supports 8-bit wide data transfers.

A synchronous transfer (Sync) bit of one indicates that the device
supports synchronous data transfer.  A value of zero indicates the device
does not support synchronous data transfer.

A linked command (Linked) bit of one indicates that the device supports
linked commands for this logical unit.  A value of zero indicates the
device does not support linked commands for this logical unit.

A command queuing (CmdQue) bit of one indicates that the device supports
tagged command queuing for this logical unit.  A value of zero indicates
the device does not support tagged command queuing for this logical unit.

A soft reset (SftRe) bit of zero indicates that the device responds to the
RESET condition with the hard RESET alternative (see 6.2.2.1).  A SftRe
bit of one indicates that the device responds to the RESET condition with
the soft RESET alternative (see 6.2.2.2).

ASCII data fields shall contain only graphic codes (i.e. code values 20h
through 7Eh).  Left-aligned fields shall place any unused bytes at the end
of the field (highest offset) and the unused bytes shall be filled with
space characters (20h).  Right-aligned fields shall place any unused bytes
at the start of the field (lowest offset) and the unused bytes shall be
filled with space characters (20h).

The vendor identification field contains eight bytes of ASCII data
identifying the vendor of the product.  The data shall be left aligned
within this field.  

   NOTE 68 It is intended that this field provide a unique vendor identification
   of the manufacturer of the SCSI device.  In the absence of a formal
   registration procedure, X3T9.2 maintains a list of vendor identification
   codes in use.  Vendors are requested to voluntarily submit their
   identification codes to X3T9.2 to prevent duplication of codes (see annex E).

The product identification field contains sixteen bytes of ASCII data as
defined by the vendor.  The data shall be left-aligned within this field.

The product revision level field contains four bytes of ASCII data as
defined by the vendor.  The data shall be left-aligned within this field.

8.2.5.2 Vital product data

Implementation of vital product data is optional.  The information
returned consists of configuration data (e.g. vendor identification,
product identification, model, serial number), manufacturing data (e.g.
plant and date of manufacture), field replaceable unit data and other
vendor- or device-specific data.  

The initiator requests the vital product data information by setting the
EVPD bit to one and specifying the page code of the desired vital product
data (see 8.3.4).  If the target does not implement the requested page it
shall return CHECK CONDITION status.  The a sense key shall be set to
ILLEGAL REQUEST and the additional sense code shall be set to INVALID
FIELD IN CDB.

   NOTES
   69 The target should have the ability to execute the INQUIRY command even
   when a device error occurs that prohibits normal command execution.  In such
   a case, CHECK CONDITION status should be returned for commands other than
   INQUIRY or REQUEST SENSE.  The sense data returned may contain the field
   replaceable unit code.  The vital product data should be obtained for the
   failing device using the INQUIRY command.
   70 This International Standard defines a format that allows device-
   independent initiator software to display the vital product data returned by
   the INQUIRY command.  For example, the initiator may display the data
   associated for the field replaceable unit returned in the sense data.  The
   contents of the data may be vendor-specific; therefore, it may not be usable
   without detailed information about the device.
   71 This International Standard does not define the location or method of
   storing the vital product data.  The retrieval of the data may require
   completion of initialization operations within the device that may induce
   delays before the data is available to the initiator.  Time-critical
   requirements are an implementation consideration and are not addressed in
   this International Standard.

8.2.6 LOG SELECT command

The LOG SELECT command (see table 49) provides a means for the initiator
to manage statistical information maintained by the device about the
device or its logical units.  Targets that implement the LOG SELECT
command shall also implement the LOG SENSE command.  Structures in the
form of log parameters within log pages are defined as a way to manage the
log data. The LOG SELECT command provides for sending zero or more log
pages during a DATA OUT phase.  This International Standard defines the
format of the log pages, but does not define the exact conditions and
events that are logged.

                        Table 49 - LOG SELECT command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (4Ch)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |              Reserved    |  PCR   |   SP   |
|-----+-----------------------------------------------------------------------|
| 2   |        PC       |         Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Parameter list length                    ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


A parameter code reset (PCR) bit of one and a parameter list length of
zero shall cause all implemented parameters to be set to the target-
defined default values (e.g. zero).  If the PCR bit is one and the
parameter list length is greater than zero, the command is terminated 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 CDB.  A PCR bit
of zero specifies that the log parameters shall not be reset.

A save parameters (SP) bit of one indicates that after performing the
specified LOG SELECT operation the target shall save to non-volatile
memory all parameters identified as savable by the DS bit in the log page
(see 8.3.2).  A SP bit of zero specifies that parameters shall not be
saved.

Saving of log parameters is optional and indicated for each log parameter
by the DS bit in the page.  Log parameters may be saved at vendor-specific
times subject to the TSD bit (see 8.3.2) in the log parameter.  If the
target does not implement saved parameters for any log parameter and the
SP bit is set to one, the command shall be terminated with CHECK CONDITION
status.  The sense key shall be set to ILLEGAL REQUEST, and the additional
sense code set to INVALID FIELD IN CDB. 

It is not an error to set the SP bit to one and to set the DS bit of a log
parameter to one.  In this case, the parameter value for that log
parameter is not saved.

The page control (PC) field defines the type of parameter values to be
selected.  The page control field is defined in table 50.

                        Table 50 - Page control field
   +=======-==============================-==============================+
   | Type  |  LOG SELECT parameter values |  LOG SENSE parameter values  |
   |-------+------------------------------+------------------------------|
   |  00b  |  Current threshold values    |  Threshold values            |
   |  01b  |  Current cumulative values   |  Cumulative values           |
   |  10b  |  Default threshold values    |  Default threshold values    |
   |  11b  |  Default cumulative values   |  Default cumulative values   |
   +=====================================================================+


The current cumulative values may be updated by the target or by the
initiator using the LOG SELECT command to reflect the cumulative number
of events experienced by the target.  Fields in the parameter control byte
(8.3.2) of each log parameter control the updating and saving of the
current cumulative parameters.  

The target shall set the current threshold parameters to the default
threshold values in response to a LOG SELECT command with the PC field set
to 10b and the parameter list length field set to zero.

The target shall set all cumulative parameters to their default values in
response to a LOG SELECT command with the PC field set to 11b and the
parameter list length field set to zero. 

The current threshold value can only be modified by the initiator via the
LOG SELECT command.  If the initiator attempts to change current threshold
values that are not available or not implemented for that log parameter,
then the target shall terminate the LOG SELECT command with CHECK
CONDITION status, the sense key set to ILLEGAL REQUEST, and the additional
sense code set to INVALID FIELD IN PARAMETER LIST.  The saving of current
threshold parameters and the criteria for the current threshold being met
are controlled by bits in the parameter control byte (8.3.2). 

   NOTE 72 Pages or log parameters that are not available may become available
   at some later time (e.g. after the device has become ready).

The parameter list length field specifies the length in bytes of the
parameter list that shall be transferred from the initiator to the target
during the DATA OUT phase.  A parameter list length of zero indicates that
no pages shall be transferred.  This condition shall not be considered an
error.  If the initiator sends page codes or parameter codes within the
parameter list that are reserved or not implemented by the target, the
target shall terminate the LOG SELECT command with CHECK CONDITION status. 
The sense key shall be set to ILLEGAL REQUEST and the additional sense
code set to INVALID FIELD IN PARAMETER LIST.

If a parameter list length results in the truncation of any log parameter,
the target shall terminate the command with CHECK CONDITION status.  The
sense key shall be set to ILLEGAL REQUEST and the additional sense code
set to INVALID FIELD IN CDB. 

The initiator should send pages in ascending order by page code value if
multiple pages are sent during a DATA OUT phase.  If multiple log
parameters within a page are sent during the DATA OUT phase, they should
be sent in ascending order by parameter code value.  The target shall
return CHECK CONDITION status if the initiator sends pages out of order
or parameter codes out of order.  The sense key shall be set to ILLEGAL
REQUEST and the additional sense code set to INVALID FIELD IN PARAMETER
LIST.

   NOTE 73 Initiators should issue LOG SENSE commands prior to issuing LOG
   SELECT commands to determine supported pages and page lengths.

The target may provide independent sets of log parameters for each logical
unit or for each combination of logical units and initiators.  If the
target does not support independent sets of log parameters and any log
parameters are changed that affect other initiators, then the target shall
generate a unit attention condition for all initiators except the one that
issued the LOG SELECT command (see 7.9).  This unit attention condition
is returned with an additional sense code of LOG PARAMETERS CHANGED.

If the initiator sends a log parameter that is not supported by the
target, the target shall terminate the command with CHECK CONDITION
status, set the sense key to ILLEGAL REQUEST, and set the additional sense
code to INVALID FIELD IN PARAMETER LIST.

8.2.7 LOG SENSE command

The LOG SENSE command (see table 51) provides a means for the initiator
to retrieve statistical information maintained by the device about the
device or its logical units.  It is a complementary command to the LOG
SELECT command.

                         Table 51 - LOG SENSE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (4Dh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |         Reserved         |  PPC   |    SP  |
|-----+-----------------------------------------------------------------------|
| 2   |        PC        |        Page code                                   |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   | (MSB)                                                                 |
|-----+---                        Parameter pointer                        ---|
| 6   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Allocation length                        ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The parameter pointer control (PPC) bit controls the type of parameters
requested from the target:
   a)     A PPC bit of one indicates that the target shall return a log page
          with parameter code values that have changed since the last LOG
          SELECT or LOG SENSE command.  The target shall return only those
          parameter codes following the parameter pointer field.
   b)     A PPC bit of zero indicates that the log parameter requested from
          the target shall begin with the parameter code specified in the
          parameter pointer field and return the number of bytes specified by
          the allocation length field in ascending order of parameter codes
          from the specified log page.  A PPC bit of zero and a parameter
          pointer field of zero shall cause all available log parameters for
          the specified log page to be returned to the initiator subject to
          the specified allocation length.

Saving parameters is an optional function of the LOG SENSE command.  If
the target does not implement saving log parameters and if the save
parameters (SP) bit is one, then the target shall return CHECK CONDITION
status, set the sense key to ILLEGAL REQUEST, and set the additional sense
code to INVALID FIELD IN CDB. 

An SP bit of zero indicates the target shall perform the specified LOG
SENSE command and shall not save any log parameters.  If saving log
parameters is implemented, an SP bit of one indicates that the target
shall perform the specified LOG SENSE command and shall save all log
parameters identified as savable by the DS bit (8.3.2) to a non-volatile,
vendor-specific location. 

The page control (PC) field defines the type of parameter values to be
selected (see 8.2.6 for the definition of the page control field).  The
parameter values returned by a LOG SENSE command are determined as
follows:
   a)     The specified parameter values at the last update (in response to
          a LOG SELECT or LOG SENSE command or done automatically by the
          target for cumulative values).
   b)     The saved values, if an update has not occurred since the last
          power-on, hard RESET condition, or BUS DEVICE RESET message and
          saved parameters are implemented.
   c)     The default values, if an update has not occurred since the last
          power-on, hard RESET condition, or BUS DEVICE RESET message and
          saved values are not available or not implemented.

The page code field identifies which page of data is being requested (see
8.3.2).  If the page code is reserved or not implemented, the target shall
terminate the command with CHECK CONDITION status.  The sense key shall
be set to ILLEGAL REQUEST with the additional sense code set to INVALID
FIELD IN CDB. 

The parameter pointer field allows the initiator to request parameter data
beginning from a specific parameter code to the maximum allocation length
or the maximum parameter code supported by the target, whichever is less. 
If the value of the parameter pointer field is larger than the largest
available parameter code that can be returned by the target on the
specified page, 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 CDB. 

Log parameters within the specified log page shall be transferred in
ascending order according to parameter code.

8.2.8 MODE SELECT(6) command

The MODE SELECT(6) command (see table 52) provides a means for the
initiator to specify medium, logical unit, or peripheral device parameters
to the target.  Targets that implement the MODE SELECT command shall also
implement the MODE SENSE command.  Initiators should issue MODE SENSE
prior to each MODE SELECT to determine supported pages, page lengths, and
other parameters.

                      Table 52 - MODE SELECT(6) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (15h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |   PF   |         Reserved         |  SP    |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Parameter list length                       |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+

If a target supports saved pages, it may save only one copy of the page
for each logical unit and have it apply to all initiators, or it may save
separate copies for each initiator for each logical unit.  If separate
copies are saved, the target shall maintain separate current values for
each I_T_L nexus. Pages that are common to all initiators are not required
to have multiple copies. 

If an initiator sends a MODE SELECT command that changes any parameters
applying to other initiators, the target shall generate a unit attention
condition for all initiators except the one that issued the MODE SELECT
command (see 7.9).  The target shall set the additional sense code to MODE
PARAMETERS CHANGED. 

The target may provide for independent sets of parameters for each
attached logical unit or for each combination of logical unit and
initiator.  If independent sets of parameters are implemented, and a third
party reservation is requested, the target transfers the set of parameters
in effect for the initiator of the RESERVE command to the parameters used
for commands from the third party device (see 9.2.12.3 and 10.2.10.1).

A page format (PF) bit of zero indicates that the MODE SELECT parameters
are as specified in SCSI-1, (i.e. all parameters after the block
descriptors are vendor-specific).  A PF bit of one indicates that the MODE
SELECT parameters following the header and block descriptor(s) are
structured as pages of related parameters and are as specified in this
standard.

A save pages (SP) bit of zero indicates the target shall perform the
specified MODE SELECT operation, and shall not save any pages.  An SP bit
of one indicates that the target shall perform the specified MODE SELECT
operation, and shall save to a non-volatile vendor-specific location all
the savable pages including any sent during the DATA OUT phase.  The SP
bit is optional, even when mode pages are supported by the target.  Pages
that are saved are identified by the parameter savable bit that is
returned in the page header by the MODE SENSE command (see 8.3.3).  If the
PS bit is set in the MODE SENSE data then the page shall be savable by
issuing a MODE SELECT command with the SP bit set.  If the target does not
implement saved pages and the SP bit is set to one, the command shall be
terminated with CHECK CONDITION status. The sense key shall be set to
ILLEGAL REQUEST, and the additional sense code set to INVALID FIELD IN
CDB.

The parameter list length field specifies the length in bytes of the mode
parameter list that shall be transferred from the initiator to the target
during the DATA OUT phase.  A parameter list length of zero indicates that
no data shall be transferred.  This condition shall not be considered as
an error.

The target shall terminate the command with CHECK CONDITION status if the
parameter list length results in the truncation of any mode parameter
header, mode parameter block descriptor(s), or mode page.  The sense key
shall be set to ILLEGAL REQUEST, and the additional sense code shall be
set to PARAMETER LIST LENGTH ERROR. 

The mode parameter list for the MODE SELECT and MODE SENSE commands is
defined in 8.3.3.  Parts of each mode parameter list are uniquely defined
for each device-type.

The target shall terminate the MODE SELECT command with CHECK CONDITION
status, set the sense key to ILLEGAL REQUEST, set the additional sense
code to INVALID FIELD IN PARAMETER LIST, and  shall not change any mode
parameters for the following conditions:
   a)     If the initiator sets any field that is reported as not changeable
          by the target to a value other than its current value.
   b)     If the initiator sets any field in the mode parameter header or
          block descriptor(s) to an unsupported value.
   c)     If an initiator sends a mode page with a page length not equal to
          the page length returned by the MODE SENSE command for that page.
   d)     If the initiator sends a unsupported value for a mode parameter and
          rounding is not implemented for that mode parameter.
   e)     If the initiator sets any reserved field in the mode parameter list
          to a non-zero value.

If the initiator sends a value for a mode parameter that is outside the
range supported by the target and rounding is implemented for that mode
parameter, the target may either:
   a)     round the parameter to an acceptable value and terminate the command
          as described in 7.5.4;
   b)     terminate the command with CHECK CONDITION status, the sense key set
          to ILLEGAL REQUEST, and set the additional sense code to INVALID
          FIELD IN PARAMETER LIST.

A target may alter any mode parameter in any mode page (even those
reported as non-changeable) as a result of changes to other mode
parameters.

The target validates the non-changeable mode parameters against the
current values that existed for those mode parameters prior to the MODE
SELECT command.

   NOTE 74 If the current values calculated by the target affect the initiator's
   operation, the initiator should issue a MODE SENSE command after each MODE
   SELECT command.

8.2.9 MODE SELECT(10) command

The MODE SELECT(10) command (see table 53) provides a means for the
initiator to specify medium, logical unit, or peripheral device parameters
to the target.  See the MODE SELECT(6) command (8.2.8) for a description
of the fields in this command.  Initiators should issue MODE SENSE prior
to each MODE SELECT to determine supported mode pages, mode page lengths,
and other parameters.

                      Table 53 - MODE SELECT(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (55h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |   PF   |         Reserved         |  SP    |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Parameter list length                    ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


Targets that implement the MODE SELECT(10) command shall also implement
the MODE SENSE(10) command.  

8.2.10 MODE SENSE(6) command

The MODE SENSE(6) command (see table 54) provides a means for a target to
report parameters to the initiator.  It is a complementary command to the
MODE SELECT(6) command. 

                       Table 54 - MODE SENSE(6) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (1Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |Reserved|   DBD  |         Reserved         |
|-----+-----------------------------------------------------------------------|
| 2   |       PC        |                   Page code                         |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Allocation length                           |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


A disable block descriptors (DBD) bit of zero indicates that the target
may return zero or more block descriptors in the returned MODE SENSE data
(see 8.3.3), at the target's discretion.  A DBD bit of one specifies that
the target shall not return any block descriptors in the returned MODE
SENSE data.

The page control (PC) field defines the type of mode parameter values to
be returned in the mode pages.  The page control field is defined in
table 55.

                        Table 55 - Page control field
+=======-=====================-============+
| Code  |  Type of parameter  | Subclause  |
|-------+---------------------+------------|
|  00b  |  Current values     |  8.2.10.1  |
|  01b  |  Changeable values  |  8.2.10.2  |
|  10b  |  Default values     |  8.2.10.3  |
|  11b  |  Saved values       |  8.2.10.4  |
+==========================================+

   NOTE 75 The page control field only affects the mode parameters within the
   mode pages, however the PS bit, page code and page length fields should
   return current values since they have no meaning when used with other types.
   The mode parameter header and mode parameter block descriptor should return
   current values.

The page code specifies which mode page(s) to return.  Mode page code
usage is defined in table 56.

               Table 56 - Mode page code usage for all devices
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     00h     |  Vendor-specific (does not require page format)  |            |
|  01h - 1Fh  |  See specific device-types                       |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all mode pages                           |            |
+=============================================================================+

An initiator may request any one or all of the supported mode pages from
a target.  If an initiator issues a MODE SENSE command with a page code
value not implemented by the target, the target shall return CHECK
CONDITION status and shall set the sense key to ILLEGAL REQUEST and the
additional sense code to INVALID FIELD IN CDB. 

A page code of 3Fh indicates that all mode pages implemented by the target
shall be returned to the initiator.  If the mode parameter list exceeds
256 bytes for a MODE SENSE(6) command or 65 536 bytes for a MODE SENSE(10)
command, the target shall return CHECK CONDITION status and the sense key
shall be set to ILLEGAL REQUEST and the additional sense code set to
INVALID FIELD IN CDB. 

Mode page 00h, if implemented, shall be returned after all other mode
pages.

   NOTES
   76 Mode pages should be returned in ascending page code order except for mode
   page 00h.
   77 If the PC field and the page code field are both set to zero the target
   should return a mode parameter header and block descriptor (if applicable). 
   This provides for compatibility with existing SCSI-1 initiators.

The mode parameter list for all device types for MODE SELECT and MODE
SENSE is defined in 8.3.3.  Parts of the mode parameter list are
specifically defined for each device type.  See subclause three of each
peripheral device type for further information.

8.2.10.1 Current values

A PC field value of 0h requests that the target return the current values
of the mode parameters.  The current values returned are:
   a)     the current values of the mode parameters established by last
          successful MODE SELECT command;
   b)     the saved values of the mode parameters if a MODE SELECT command has
          not successfully completed since the last power-on, hard RESET
          condition, or BUS DEVICE RESET message;
   c)     the default values of the mode parameters, if saved values, are not
          available or not supported.

8.2.10.2 Changeable values

A PC field value of 1h requests that the target return a mask denoting
those mode parameters that are changeable.  In the mask, the fields of the
mode parameters that are changeable shall be set to all one bits and the
fields of the mode parameters that are non-changeable (i.e. defined by the
target) shall be set to all zero bits.

   NOTES
   78 An attempt to change a non-changeable mode parameter (via MODE SELECT)
   results in an error condition (see 8.2.8).
   79 The initiator should issue a MODE SENSE command with the PC field set to
   1h and the page code field set to 3Fh to determine which mode pages are
   supported, which mode parameters within the mode pages are changeable, and
   the supported length of each mode page prior to issuing any MODE SELECT
   commands.

8.2.10.3 Default values

A PC field value of 2h requests that the target return the default values
of the mode parameters.  Parameters not supported by the target shall be
set to zero.  Default values are accessible even if the device is not
ready.

8.2.10.4 Saved values

A PC field value of 3h requests that the target return the saved values
of the mode parameters.  Implementation of saved page parameters is
optional.  Mode parameters not supported by the target shall be set to
zero.  If saved values are not implemented, the command shall be
terminated with CHECK CONDITION status, the sense key set to ILLEGAL
REQUEST and the additional sense code set to SAVING PARAMETERS NOT
SUPPORTED.

   NOTE 80 The method of saving parameters is vendor-specific.  The parameters
   are preserved in such a manner that they are retained when the target is
   powered down.  All savable pages can be considered saved when a MODE SELECT
   command issued with the SP bit set to one has returned a GOOD status or after
   the successful completion of a FORMAT UNIT command.

8.2.10.5 Initial responses

After a power-up condition or hard reset condition, the target shall
respond in the following manner:
   a)     If default values are requested, report the default values.
   b)     If saved values are requested, report valid restored mode
          parameters, or restore the mode parameters and report them.  If the
          saved values of the mode parameters are not able to be accessed from
          the non-volatile vendor-specific location, terminate the command
          with CHECK CONDITION status and set the sense key set to NOT READY. 
          If saved parameters are not implemented respond as defined in
          8.2.10.4.
   c)     If current values are requested and the current values of the mode
          parameters have not been sent by the initiator (via a MODE SELECT
          command), the target may return either the default or saved values,
          as defined above.  If current values have been sent, the current
          values shall be reported.

 MODE SENSE(10) command

The MODE SENSE(10) command (see table 57) provides a means for a target
to report parameters to the initiator.  It is a complementary command to
the MODE SELECT(10) command.  If the MODE SELECT(10) command is
implemented the MODE SENSE(10) command shall be implemented.  See the MODE
SENSE(6) command for a description of the fields in this command.

                      Table 57 - MODE SENSE(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (5Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |Reserved|  DBD   |         Reserved         |
|-----+-----------------------------------------------------------------------|
| 2   |       PC        |                   Page code                         |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Allocation length                        ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


8.2.12 READ BUFFER Command

The READ BUFFER command (see table 58) is used in conjunction with the
WRITE BUFFER command as a diagnostic function for testing target memory
and the SCSI bus integrity.  This command shall not alter the medium.

                        Table 58 - READ BUFFER command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (3Ch)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |     Reserved    |           Mode           |
|-----+-----------------------------------------------------------------------|
| 2   |                           Buffer ID                                   |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 4   |                           Buffer offset                               |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                           Allocation length                           |
|-----+---                                                                 ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The function of this command and the meaning of fields within the command
descriptor block depend on the contents of the mode field.  The mode field
is defined in table 59.

                      Table 59 - READ BUFFER mode field
         +========-============================-===================+
         |  Mode  |  Description               |    Type           |
         |--------+----------------------------+-------------------|
         |  000b  |  Combined header and data  |  Optional         |
         |  001b  |  Vendor-specific           |  Vendor-specific  |
         |  010b  |  Data                      |  Optional         |
         |  011b  |  Descriptor                |  Optional         |
         |  100b  |  Reserved                  |  Reserved         |
         |  101b  |  Reserved                  |  Reserved         |
         |  110b  |  Reserved                  |  Reserved         |
         |  111b  |  Reserved                  |  Reserved         |
         +=========================================================+

   NOTE 81 Modes 000b and 001b are included for compatibility with products that
   were designed prior to the generation of this International Standard.  Some
   products that were designed prior to the generation of this International
   Standard restrict the available length to 65 535 bytes.

8.2.12.1 Combined header and data mode (000b)

In this mode, a four-byte header followed by data bytes is returned to the
initiator during the DATA IN phase.  The buffer ID and the buffer offset
fields are reserved. 

The four-byte READ BUFFER header (see table 60) is followed by data bytes
from the target's data buffer.

                        Table 60 - READ BUFFER header
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 1   | (MSB)                                                                 |
|- - -+---                        Buffer capacity                          ---|
| 3   |                                                                 (LSB) |
+=============================================================================+


The buffer capacity field specifies the total number of data bytes
available in the target's data buffer.  This number is not reduced to
reflect the allocation length;  nor is it reduced to reflect the actual
number of bytes written using the WRITE BUFFER command.  Following the
READ BUFFER header, the target shall transfer data from its data buffer. 
The target terminates the DATA IN phase when allocation length bytes of
header plus data have been transferred or when all available header and
buffer data have been transferred to the initiator, whichever is less.

8.2.12.2 Vendor-specific mode (001b)

In this mode, the meanings of the buffer ID, buffer offset, and allocation
length fields are not specified by this International Standard.

8.2.12.3 Data mode (010b)

In this mode, the DATA IN phase contains buffer data.  The buffer ID field
identifies a specific buffer within the target from which data shall be
transferred.  The vendor assigns buffer ID codes to buffers within the
target. Buffer ID zero shall be supported.  If more than one buffer is
supported, additional buffer ID codes shall be assigned contiguously,
beginning with one. Buffer ID code assignments for the READ BUFFER command
shall be the same as for the WRITE BUFFER command.  If an unsupported
buffer ID code is selected, the target shall return CHECK CONDITION
status, shall set the sense key to ILLEGAL REQUEST, and set the additional
sense code to ILLEGAL FIELD IN CDB.  The target terminates the DATA IN
phase when allocation length bytes have been transferred or when all the
available data from the buffer has been transferred to the initiator,
whichever amount is less.

The buffer offset field contains the byte offset within the specified
buffer from which data shall be transferred from.  The initiator should
conform to the offset boundary requirements returned in the READ BUFFER
descriptor (see 8.2.12.4).  If the target is unable to accept the
specified buffer offset, it shall return CHECK CONDITION status, shall set
the sense key to ILLEGAL REQUEST, and set the additional sense code to
ILLEGAL FIELD IN CDB.

8.2.12.4 Descriptor mode (011b)

In this mode, a maximum of four bytes of READ BUFFER descriptor
information is returned.  The target shall return the descriptor
information for the buffer specified by the buffer ID (see the description
of the buffer ID in 8.2.12.3).  If there is no buffer associated with the
specified buffer ID, the target shall return all zeros in the READ BUFFER
descriptor.  The buffer offset field is reserved in this mode.  The
allocation length should be set to four or greater.  The target shall
transfer the lesser of the allocation length or four bytes of READ BUFFER
descriptor.  The READ BUFFER descriptor is defined as shown in table 61.

                      Table 61 - READ BUFFER descriptor
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Offset boundary                             |
|--- -+-----------------------------------------------------------------------|
| 1   | (MSB)                                                                 |
|- - -+---                        Buffer capacity                          ---|
| 3   |                                                                 (LSB) |
+=============================================================================+


The offset boundary field returns the boundary alignment within the
selected buffer for subsequent WRITE BUFFER and READ BUFFER commands.  The
value contained in the offset boundary field shall be interpreted as a
power of two.

The value contained in the buffer offset field of subsequent WRITE BUFFER
and READ BUFFER commands should be a multiple of 2offset boundary as shown in
table 62.

                      Table 62 - Buffer offset boundary
+========-====================-==========================================+
|Offset  |                    |                                          |
|boundary| 2**Offset boundary |  Buffer offsets                          |
|--------+--------------------+------------------------------------------|
|   0    |      2**0 = 1      |  Byte boundaries                         |
|   1    |      2**1 = 2      |  Even-byte boundaries                    |
|   2    |      2**2 = 4      |  Four-byte boundaries                    |
|   3    |      2**3 = 8      |  Eight-byte boundaries                   |
|   4    |      2**4 = 16     |  16-byte boundaries                      |
|   .    |          .         |         .                                |
|   .    |          .         |         .                                |
|  FFh   |  Not applicable    |  0 is the only supported buffer offset.  |
+========================================================================+


The buffer capacity field shall return the size of the selected buffer in
bytes.

   NOTE 82 In a multi-tasking system, a buffer may be altered between the WRITE
   BUFFER and READ BUFFER commands by another task.  Buffer testing applications
   may wish to insure that only a single task is active. Use of reservations (to
   all logical units on the device) or linked commands may also be helpful in
   avoiding buffer alteration between these two commands. 

8.2.13 RECEIVE DIAGNOSTIC RESULTS command

The RECEIVE DIAGNOSTIC RESULTS command (see table 63) requests analysis
data be sent to the initiator after completion of a SEND DIAGNOSTIC
command (see 8.2.15).  If the target supports the optional page format,
the page code field sent in the previous SEND DIAGNOSTIC command specifies
the format of the returned data. 

                Table 63 - RECEIVE DIAGNOSTIC RESULTS command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (1Ch)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |             Reserved                       |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|-----+---                        Allocation length                        ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+

   NOTES
   83 To insure that the diagnostic command information is not destroyed by a
   command sent from another initiator, either the SEND DIAGNOSTIC command
   should either be linked to the RECEIVE DIAGNOSTIC RESULTS command or the
   logical unit should be reserved.
   84 Although diagnostic software is generally device-specific, this command
   and the SEND DIAGNOSTIC command provide a means to isolate the operating
   system software from the device-specific diagnostic software. Hence, the
   operating system can remain device-independent.  This also allows diagnostic
   software to be transferred more easily to other operating systems.

See 8.3.1 for RECEIVE DIAGNOSTIC RESULTS page format definitions.

8.2.14 REQUEST SENSE Command

The REQUEST SENSE command (see table 64) requests that the target transfer
sense data to the initiator.

                       Table 64 - REQUEST SENSE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (03h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Allocation length                           |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The sense data:
   a)     shall be available if a contingent allegiance condition exists for
          the I_T_x nexus;
   b)     shall be available if other information (e.g. medium position) is
          available in any field;
   c)     may be available if an unexpected disconnect occurred.

If the target has no other sense data available to return, it shall return
a sense key of NO SENSE and an additional sense code of NO ADDITIONAL
SENSE INFORMATION.

The sense data shall be preserved by the target fo  the initiator until
retrieved by a REQUEST SENSE command or until the receipt of any other I/O
process for the same I_T_x nexus.  Sense data shall be cleared upon
receipt of any subsequent I/O process (including REQUEST SENSE) to the
same I_T_x nexus.

   NOTE 85 Some target implementations do not update sense data except on
   commands that return CHECK CONDITION or COMMAND TERMINATED status.  Thus when
   polling for a logical unit to become ready, the initiator should issue TEST
   UNIT READY commands until GOOD status is returned.  If desired, the initiator
   may issue REQUEST SENSE commands after the TEST UNIT READY commands that
   return CHECK CONDITION or COMMAND TERMINATED status to obtain the sense data.

The target shall return CHECK CONDITION status for a REQUEST SENSE command
only to report exception conditions specific to the command itself.  For
example:
   a)     A non-zero reserved bit is detected in the command descriptor block;
   b)     An unrecovered parity error is detected on the data bus; 
   c)     A target malfunction prevents return of the sense data.

If a recovered error occurs during the execution of the REQUEST SENSE
command, the target shall return the sense data with GOOD status.  If a
target returns CHECK CONDITION status for a REQUEST SENSE command, the
sense data may be invalid. 

   NOTE 86 The sense data appropriate to the selection of an invalid logical
   unit is defined in 7.5.3.

Targets shall be capable of returning eighteen bytes of data in response
to a REQUEST SENSE command.  If the allocation length is eighteen or
greater, and a target returns less than eighteen bytes of data, the
initiator should assume that the bytes not transferred would have been
zeros had the target returned those bytes.  Initiators can determine how
much sense data has been returned by examining the allocation length
parameter in the command descriptor block and the additional sense length
in the sense data.  Targets shall not adjust the additional sense length
to reflect truncation if the allocation length is less than the sense data
available. 

The sense data format for error codes 70h (current errors) and 71h
(deferred errors) are defined in table 65.  Error code values of 72h to
7Eh are reserved.  Error code 7Fh is for a vendor-specific sense data
format.  Targets shall implement error code 70h; implementation of error
code 71h is optional. Error code values of 00h to 6Fh are not defined by
this International Standard and their use is not recommended.

             Table 65 - Error codes 70h and 71h sense data format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+==============================================================|
| 0   | Valid  |                  Error code (70h or 71h)                     |
|-----+-----------------------------------------------------------------------|
| 1   |                           Segment number                              |
|-----+-----------------------------------------------------------------------|
| 2   |Filemark|  EOM   |  ILI   |Reserved|         Sense key                 |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|- - -+---                        Information                              ---|
| 6   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 7   |                           Additional sense length (n-7)               |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|- - -+---                        Command-specific information             ---|
| 11  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 12  |                           Additional sense code                       |
|-----+-----------------------------------------------------------------------|
| 13  |                           Additional sense code qualifier             |
|-----+-----------------------------------------------------------------------|
| 14  |                           Field replaceable unit code                 |
|-----+-----------------------------------------------------------------------|
| 15  |  SKSV  |                                                              |
|- - -+------------               Sense-key specific                       ---|
| 17  |                                                                       |
|-----+-----------------------------------------------------------------------|
| 18  |                                                                       |
|- - -+---                        Additional sense bytes                   ---|
| n   |                                                                       |
+=============================================================================+


A valid bit of zero indicates that the information field is not as defined
in this International Standard.  A valid bit of one indicates the
information field contains valid information as defined in this
International Standard.  Targets shall implement the valid bit.

The segment number field contains the number of the current segment
descriptor if the REQUEST SENSE command is in response to a COPY, COMPARE,
or COPY AND VERIFY command.  Up to 256 segments are supported, beginning
with segment zero.  

The filemark bit is mandatory for sequential-access devices, and this bit
is reserved for all other device types.  A filemark bit of one indicates
that the current command has read a filemark or setmark.  The additional
sense code field may be used to indicate whether a filemark or setmark was
read.  Reporting of setmarks is optional and indicated by the Rsmk bit for
sequential-access devices in the configuration parameters page (see
10.3.3.1).

The end-of-medium (EOM) bit is mandatory for sequential-access and printer
devices, and this bit is reserved for all other device types.  An EOM bit
of one indicates that an end-of-medium condition (end-of-partition,
beginning-of-partition, out-of-paper, etc.) exists.  For sequential-access
devices, this bit indicates that the unit is at or past the early-warning
if the direction was forward, or that the command could not be completed
because beginning-of-partition was encountered if the direction was
reverse.  

An incorrect length indicator (ILI) bit of one usually indicates that the
requested logical block length did not match the logical block length of
the data on the medium.

The sense key, additional sense code and additional sense code qualifier
provide a hierarchy of information.  The intention of the hierarchy is to
provide a top-down approach for an initiator to determine information
relating to the error and exception conditions.  The sense key provides
generic categories in which error and exception conditions can be
reported.  Initiators would typically use sense keys for high level error
recovery procedures.  Additional sense codes provide further detail
describing the sense key.  Additional sense code qualifiers add further
detail to the additional sense code.  The additional sense code and
additional sense code qualifier can be used by initiators where
sophisticated error recovery procedures require detailed information
describing the error and exception conditions.

The sense key field is mandatory and indicates generic information
describing an error or exception condition.  The sense keys are defined
in 8.2.14.3.

The contents of the information field is device-type or command specific
and is defined within the appropriate clause for the device type or
command of interest.  Targets shall implement the information field. 
Unless specified otherwise, this field contains:
   a)     the unsigned logical block address associated with the sense key,
          for direct-access devices (device type 0), write-once devices
          (device type 4), CD-ROM devices (device type 5), and optical memory
          devices (device type 7).
   b)     the difference (residue) of the requested length minus the actual
          length in either bytes or blocks, as determined by the command, for
          sequential-access devices (device type 1), printer devices (device
          type 2), processor devices (device type 3) and some direct access
          device commands, except as defined for d) below. (Negative values
          are indicated by two's complement notation.)
   c)     the difference (residue) of the requested number of blocks minus the
          actual number of blocks copied or compared for the current segment
          descriptor of a COPY, COMPARE, or COPY AND VERIFY command.
   d)     For sequential-access devices operating in buffered modes 1h or 2h
          that detect an unrecoverable write error when unwritten data blocks,
          filemarks, or setmarks remain in the buffer, the value of the
          information field for all commands shall be:
       1)    the total number of data blocks, filemarks, and setmarks in the
             buffer if the device is in fixed block mode (block length field
             of the MODE SENSE block descriptor is non-zero and the fixed bit
             of the WRITE command is one). 
       2)    the number of bytes in the buffer, including filemarks and
             setmarks, if the device is in variable mode (the fixed bit of the
             WRITE command is zero).   

The additional sense length field indicates the number of additional sense
bytes to follow.  If the allocation length of the command descriptor block
is too small to transfer all of the additional sense bytes, the additional
sense length is not adjusted to reflect the truncation.

The command-specific information field contains information that depends
on the command that was executed.  Further meaning for this field is
defined within the command description.  The command-specific information
field is mandatory if the target supports any of the following commands: 
COPY, COMPARE, COPY AND VERIFY, SEARCH DATA, and REASSIGN BLOCKS.

The additional sense code (ASC) field indicates further information
related to the error or exception condition reported in the sense key
field.  Targets shall support the additional sense code field.  Support
of the additional sense codes not explicitly required by this
International Standard is optional.  A list of additional sense codes is
in 8.2.14.3.  If the target does not have further information related to
the error or exception condition, the additional sense code is set to NO
ADDITIONAL SENSE INFORMATION.

The additional sense code qualifier (ASCQ) indicates detailed information
related to the additional sense code.  The additional sense code qualifier
is optional.  If the error or exception condition is reportable by the
device, the value returned shall be as specified in 8.2.14.3.  If the
target does not have detailed information related to the error or
exception condition, the additional sense code qualifier is set to zero.

Non-zero values in the field replaceable unit code field are used to
define a device-specific mechanism or unit that has failed.  A value of
zero in this field shall indicate that no specific mechanism or unit has
been identified to have failed or that the data is not available.  The
field replaceable unit code field is optional. The format of this
information is not specified by this standard.  Additional information
about the field replaceable unit may be available in the ASCII information
page (see 8.3.4.2), if supported by the target. 

The sense-key specific bytes are described in 8.2.14.1, below.

The additional sense bytes field may contain command specific data,
peripheral device specific data, or vendor-specific data that further
defines the nature of the CHECK CONDITION status.

8.2.14.1 Sense-key specific

The sense-key specific field as defined by this International Standard
when the value of the sense-key specific valid (SKSV) bit is one.  The
sense-key specific valid bit and sense-key specific field are optional. 
The definition of this field is determined by the value of the sense key
field.  This field is reserved for sense keys not described below.  An
SKSV value of zero indicates that this field is not as defined by this
International Standard. 

If the sense key field is set to ILLEGAL REQUEST and the SKSV bit is set
to one, the sense-key specific field shall be as defined as shown in table
66. The field pointer field indicates which illegal parameters in the
command descriptor block or the data parameters are in error.

                        Table 66 - Field pointer bytes
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+========+========+========+==========================|
| 15  |  SKSV  |  C/D   |Reserved|Reserved|  BPV   |    Bit pointer           |
|-----+-----------------------------------------------------------------------|
| 16  | (MSB)                                                                 |
|-----+---                        Field pointer                            ---|
| 17  |                                                                 (LSB) |
+=============================================================================+


A command data (C/D) bit of one indicates that the illegal parameter is
in the command descriptor block.  A C/D bit of zero indicates that the
illegal parameter is in the data parameters sent by the initiator during
the DATA OUT phase.

A bit pointer valid (BPV) bit of zero indicates that the value in the bit
pointer field is not valid.  A BPV bit of one indicates that the bit
pointer field specifies which bit of the byte designated by the field
pointer field is in error.  When a multiple-bit field is in error, the bit
pointer field shall point to the most-significant (left-most) bit of the
field.

The field pointer field indicates which byte of the command descriptor
block or of the parameter data was in error.  Bytes are numbered starting
from zero, as shown in the tables describing the commands and parameters. 
When a multiple-byte field is in error, the pointer shall point to the
most- significant (left-most) byte of the field.

   NOTE 87 Bytes identified as being in error are not necessarily the place that
   has to be changed to correct the problem.

If the sense key is RECOVERED ERROR, HARDWARE ERROR or MEDIUM ERROR and
if the SKSV bit is one, the sense-key specific field shall be as shown in
table 67.

                     Table 67 - Actual retry count bytes
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+==============================================================|
| 15  |  SKSV  |                  Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 16  | (MSB)                                                                 |
|-----+---                        Actual retry count                       ---|
| 17  |                                                                 (LSB) |
+=============================================================================+


The actual retry count field returns implementation-specific information
on the actual number of retries of the recovery algorithm used in
attempting to recover an error or exception condition. 

   NOTE 88 This field should relate to the retry count fields within the error
   recovery page of the MODE SELECT command.

If the sense key is NOT READY and the SKSV bit is one, the sense-key
specific field shall be as shown in table 68.  These fields only apply to
the FORMAT UNIT command with the Immed bit set to one.

                 Table 68 - Format progress indication bytes
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+==============================================================|
| 15  |  SKSV  |                  Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 16  | (MSB)                                                                 |
|-----+---                        Progress indication                      ---|
| 17  |                                                                 (LSB) |
+=============================================================================+


The progress indication field is a percent complete indication in which
the returned value is the numerator that has 65 536 (10000h) as its
denominator. The progress indication shall based upon the total format
operation including any certification or initialization operations.

   NOTE 89 It is intended that the progress indication be time related. 
   However, since format time varies with the number of defects encountered,
   etc., it is reasonable for the target to assign values to various steps
   within the process.  The granularity of these steps should be small enough
   to provide reasonable assurances to the initiator that progress is being
   made.

8.2.14.2 Deferred errors

Error code 70h indicates that the CHECK CONDITION or COMMAND TERMINATED
status returned is the result of an error or exception condition on the
I/O process that returned the CHECK CONDITION or COMMAND TERMINATED status
or an unexpected disconnect.  This includes errors generated during
execution of the command by the actual execution process.  It also
includes errors not related to any command that are first observed during
execution of a command.  Examples of this latter type of error include
disk servo-mechanism, off-track errors, and power-up test errors. 

Error code 71h (deferred error) indicates that the CHECK CONDITION status
returned is the result of an error or exception condition that occurred
during execution of a previous command for which GOOD status has already
been returned.  Such commands are associated with use of the immediate
bit, with some forms of caching, and with multiple command buffering. 
Targets that implement these features are required to implement deferred
error reporting.

The deferred error indication may be sent at a time selected by the target
through the asynchronous event notification process (see 7.5.5) if AEN is
supported by both the initiator and target.  

If AEN is not supported, the deferred error may be indicated by returning
CHECK CONDITION status to the appropriate initiator as described below. 
The subsequent execution of a REQUEST SENSE command shall return the
deferred error sense information.

If an I/O process terminates with CHECK CONDITION status and the
subsequent sense data returns a deferred error that I/O process shall not
have been executed.  After the target detects a deferred error condition
on a logical unit, it shall return a deferred error according to the rules
described below: 
   a)     If a deferred error can be recovered with no external system
          intervention, a deferred error indication shall not be posted unless
          required by the error handling parameters of the MODE SELECT
          command.  The occurrence of the error may be logged if statistical
          or error logging is supported.
   b)     If a deferred error can be associated with a causing initiator and
          with a particular function or a particular subset of data, and the
          error is either unrecovered or required to be reported by the mode
          parameters, a deferred error indication shall be returned to the
          causing initiator.  If an initiator other than the causing initiator
          attempts access to the particular function or subset of data
          associated with the deferred error, a BUSY status shall be returned
          to that initiator in response to the command attempting the access.

   NOTE 91 Not all devices may be sufficiently sophisticated to identify the
   function or data that failed.  Those that cannot should treat the error in
   the following manner.

   c)     If a deferred error cannot be associated with a causing initiator
          or with a particular subset of data, a deferred error indication
          shall be returned on behalf of the failing logical unit to each
          initiator.  If multiple deferred errors have accumulated for some
          initiators, only the last error shall be returned.
   d)     If a deferred error cannot be associated with a particular logical
          unit, it shall be returned to the appropriate initiator for all
          logical units supported by the target.
   e)     If a current command has not yet started executing, and a deferred
          error occurs, the command shall be terminated with CHECK CONDITION
          status and deferred error information posted in the sense data.  By
          convention, the current command is considered to have started
          execution if the target has changed phase from the COMMAND phase to
          the next normal phase of the command sequence.  If a deferred error
          occurs while a current command is executing and the current command
          has been affected by the error, the command shall be terminated by
          CHECK CONDITION status and current error information shall be
          returned in the sense data.  In this case, if the current error
          information does not adequately define the deferred error condition,
          a deferred error may be returned after the current error information
          has been recovered.  If a deferred error occurs while a current
          command is executing and the current command completes successfully,
          the target may choose to return the deferred error information after
          the completion of the current command.

   NOTE 91 Deferred errors may indicate that an operation was unsuccessful long
   after the command performing the data transfer returned GOOD status.  If data
   that cannot be replicated or recovered from other sources is being stored
   using buffered write operations, synchronization commands should be performed
   before the critical data is destroyed in the host initiator.  This is
   necessary to be sure that recovery actions can be taken if deferred errors
   do occur in the storing of the data. If AEN is not implemented, the
   synchronizing process should provide the necessary commands to allow
   returning CHECK CONDITION status and subsequent returning of deferred error
   sense information after all buffered operations are guaranteed to be
   complete.


8.2.14.3 Sense key and sense code definitions

The sense keys are defined in tables 69 and 70.

                  Table 69 - Sense key (0h-7h) descriptions
+========-====================================================================+
| Sense  |  Description                                                       |
|  key   |                                                                    |
|--------+--------------------------------------------------------------------|
|   0h   |  NO SENSE.  Indicates that there is no specific sense key          |
|        |  information to be reported for the designated logical unit.  This |
|        |  would be the case for a successful command or a command that      |
|        |  received CHECK CONDITION or COMMAND TERMINATED status because one |
|        |  of the filemark, EOM, or ILI bits is set to one.                  |
|--------+--------------------------------------------------------------------|
|   1h   |  RECOVERED ERROR.  Indicates that the last command completed       |
|        |  successfully with some recovery action performed by the target.   |
|        |  Details may be determinable by examining the additional sense     |
|        |  bytes and the information field.  When multiple recovered errors  |
|        |  occur during one command, the choice of which error to report     |
|        |  (first, last, most severe, etc.) is device specific.              |
|--------+--------------------------------------------------------------------|
|   2h   |  NOT READY.  Indicates that the logical unit addressed cannot be   |
|        |  accessed.  Operator intervention may be required to correct this  |
|        |  condition.                                                        |
|--------+--------------------------------------------------------------------|
|   3h   |  MEDIUM ERROR.  Indicates that the command terminated with a non-  |
|        |  recovered error condition that was probably caused by a flaw in   |
|        |  the medium or an error in the recorded data.  This sense key may  |
|        |  also be returned if the target is unable to distinguish between a |
|        |  flaw in the medium and a specific hardware failure (sense key 4h).|
|--------+--------------------------------------------------------------------|
|   4h   |  HARDWARE ERROR.  Indicates that the target detected a non-        |
|        |  recoverable hardware failure (for example, controller failure,    |
|        |  device failure, parity error, etc.) while performing the command  |
|        |  or during a self test.                                            |
|--------+--------------------------------------------------------------------|
|   5h   |  ILLEGAL REQUEST.  Indicates that there was an illegal parameter in|
|        |  the command descriptor block or in the additional parameters      |
|        |  supplied as data for some commands (FORMAT UNIT, SEARCH DATA,     |
|        |  etc.).  If the target detects an invalid parameter in the command |
|        |  descriptor block, then it shall terminate the command without     |
|        |  altering the medium.  If the target detects an invalid parameter  |
|        |  in the additional parameters supplied as data, then the target may|
|        |  have already altered the medium.  This sense key may also indicate|
|        |  that an invalid IDENTIFY message was received (6.6.7).            |
|--------+--------------------------------------------------------------------|
|   6h   |  UNIT ATTENTION.  Indicates that the removable medium may have been|
|        |  changed or the target has been reset.  See 7.9 for more detailed  |
|        |  information about the unit attention condition.                   |
|--------+--------------------------------------------------------------------|
|   7h   |  DATA PROTECT.  Indicates that a command that reads or writes the  |
|        |  medium was attempted on a block that is protected from this       |
|        |  operation.  The read or write operation is not performed.         |
+=============================================================================+


                  Table 70 - Sense key (8h-Fh) descriptions
+========-====================================================================+
| Sense  |  Description                                                       |
|  key   |                                                                    |
|--------+--------------------------------------------------------------------|
|   8h   |  BLANK CHECK.  Indicates that a write-once device or a sequential- |
|        |  access device encountered blank medium or format-defined end-of-  |
|        |  data indication while reading or a write-once device encountered a|
|        |  non-blank medium while writing.                                   |
|--------+--------------------------------------------------------------------|
|   9h   |  VENDOR-SPECIFIC.  This sense key is available for reporting vendor|
|        |  specific conditions.                                              |
|--------+--------------------------------------------------------------------|
|   Ah   |  COPY ABORTED.  Indicates a COPY, COMPARE, or COPY AND VERIFY      |
|        |  command was aborted due to an error condition on the source       |
|        |  device, the destination device, or both.  (See 8.2.3.2 for        |
|        |  additional information about this sense key.)                     |
|--------+--------------------------------------------------------------------|
|   Bh   |  ABORTED COMMAND.  Indicates that the target aborted the command.  |
|        |  The initiator may be able to recover by trying the command again. |
|--------+--------------------------------------------------------------------|
|   Ch   |  EQUAL.  Indicates a SEARCH DATA command has satisfied an equal    |
|        |  comparison.                                                       |
|--------+--------------------------------------------------------------------|
|   Dh   |  VOLUME OVERFLOW.  Indicates that a buffered peripheral device has |
|        |  reached the end-of-partition and data may remain in the buffer    |
|        |  that has not been written to the medium.  A RECOVER BUFFERED DATA |
|        |  command(s) may be issued to read the unwritten data from the      |
|        |  buffer.                                                           |
|--------+--------------------------------------------------------------------|
|   Eh   |  MISCOMPARE.  Indicates that the source data did not match the data|
|        |  read from the medium.                                             |
|--------+--------------------------------------------------------------------|
|   Fh   |  RESERVED.                                                         |
+=============================================================================+


The additional sense codes and additional sense code qualifiers are
defined in table 71.

                     Table 71 - ASC and ASCQ assignments
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                                          |
|           .T - SEQUENTIAL ACCESS DEVICE                                     |
|           . L - PRINTER DEVICE                                              |
|           .  P - PROCESSOR DEVICE                                           |
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE                           |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
| ASC ASCQ  DTLPWRSOMC  DESCRIPTION                                           |
| --- ----              ----------------------------------------------------- |
| 13h  00h  D   W  O    ADDRESS MARK NOT FOUND FOR DATA FIELD                 |
| 12h  00h  D   W  O    ADDRESS MARK NOT FOUND FOR ID FIELD                   |
| 00h  11h       R      AUDIO PLAY OPERATION IN PROGRESS                      |
| 00h  12h       R      AUDIO PLAY OPERATION PAUSED                           |
| 00h  14h       R      AUDIO PLAY OPERATION STOPPED DUE TO ERROR             |
| 00h  13h       R      AUDIO PLAY OPERATION SUCCESSFULLY COMPLETED           |
| 00h  04h   T    S     BEGINNING-OF-PARTITION/MEDIUM DETECTED                |
| 14h  04h   T          BLOCK SEQUENCE ERROR                                  |
| 30h  02h  DT  WR O    CANNOT READ MEDIUM - INCOMPATIBLE FORMAT              |
| 30h  01h  DT  WR O    CANNOT READ MEDIUM - UNKNOWN FORMAT                   |
| 52h  00h   T          CARTRIDGE FAULT                                       |
| 3Fh  02h  DTLPWRSOMC  CHANGED OPERATING DEFINITION                          |
| 11h  06h      WR O    CIRC UNRECOVERED ERROR                                |
| 30h  03h  DT          CLEANING CARTRIDGE INSTALLED                          |
| 4Ah  00h  DTLPWRSOMC  COMMAND PHASE ERROR                                   |
| 2Ch  00h  DTLPWRSOMC  COMMAND SEQUENCE ERROR                                |
| 2Fh  00h  DTLPWRSOMC  COMMANDS CLEARED BY ANOTHER INITIATOR                 |
| 2Bh  00h  DTLPWRSO C  COPY CANNOT EXECUTE SINCE HOST CANNOT DISCONNECT      |
| 41h  00h  D           DATA PATH FAILURE (SHOULD USE 40 NN)                  |
| 4Bh  00h  DTLPWRSOMC  DATA PHASE ERROR                                      |
| 11h  07h      W  O    DATA RESYNCHRONIZATION ERROR                          |
| 16h  00h  D   W  O    DATA SYNCHRONIZATION MARK ERROR                       |
| 19h  00h  D      O    DEFECT LIST ERROR                                     |
| 19h  03h  D      O    DEFECT LIST ERROR IN GROWN LIST                       |
| 19h  02h  D      O    DEFECT LIST ERROR IN PRIMARY LIST                     |
| 19h  01h  D      O    DEFECT LIST NOT AVAILABLE                             |
| 1Ch  00h  D      O    DEFECT LIST NOT FOUND                                 |
| 32h  01h  D   W  O    DEFECT LIST UPDATE FAILURE                            |
| 40h  NNh  DTLPWRSOMC  DIAGNOSTIC FAILURE ON COMPONENT NN (80H-FFH)          |
| 63h  00h       R      END OF USER AREA ENCOUNTERED ON THIS TRACK            |
| 00h  05h   T    S     END-OF-DATA DETECTED                                  |
| 14h  03h   T          END-OF-DATA NOT FOUND                                 |
| 00h  02h   T    S     END-OF-PARTITION/MEDIUM DETECTED                      |
| 51h  00h   T     O    ERASE FAILURE                                         |
| 0Ah  00h  DTLPWRSOMC  ERROR LOG OVERFLOW                                    |
| 11h  02h  DT  W SO    ERROR TOO LONG TO CORRECT                             |
| 03h  02h   T          EXCESSIVE WRITE ERRORS                                |
| 3Bh  07h    L         FAILED TO SENSE BOTTOM-OF-FORM                        |
| 3Bh  06h    L         FAILED TO SENSE TOP-OF-FORM                           |
| 00h  01h   T          FILEMARK DETECTED                                     |
| 14h  02h   T          FILEMARK OR SETMARK NOT FOUND                         |
| 09h  02h      WR O    FOCUS SERVO FAILURE                                   |
| 31h  01h  D L    O    FORMAT COMMAND FAILED                                 |
| 58h  00h         O    GENERATION DOES NOT EXIST                             |
+=============================================================================+


Table 71  (continued)
+=============================================================================+
| ASC ASCQ  DTLPWRSOMC  DESCRIPTION                                           |
| --- ----              ----------------------------------------------------- |
| 1Ch  02h  D      O    GROWN DEFECT LIST NOT FOUND                           |
| 00h  06h  DTLPWRSOMC  I/O PROCESS TERMINATED                                |
| 10h  00h  D   W  O    ID CRC OR ECC ERROR                                   |
| 22h  00h  D           ILLEGAL FUNCTION (SHOULD USE 20 00, 24 00, OR 26 00)  |
| 64h  00h       R      ILLEGAL MODE FOR THIS TRACK                           |
| 28h  01h          M   IMPORT OR EXPORT ELEMENT ACCESSED                     |
| 30h  00h  DT  WR OM   INCOMPATIBLE MEDIUM INSTALLED                         |
| 11h  08h   T          INCOMPLETE BLOCK READ                                 |
| 48h  00h  DTLPWRSOMC  INITIATOR DETECTED ERROR MESSAGE RECEIVED             |
| 3Fh  03h  DTLPWRSOMC  INQUIRY DATA HAS CHANGED                              |
| 44h  00h  DTLPWRSOMC  INTERNAL TARGET FAILURE                               |
| 3Dh  00h  DTLPWRSOMC  INVALID BITS IN IDENTIFY MESSAGE                      |
| 2Ch  02h        S     INVALID COMBINATION OF WINDOWS SPECIFIED              |
| 20h  00h  DTLPWRSOMC  INVALID COMMAND OPERATION CODE                        |
| 21h  01h          M   INVALID ELEMENT ADDRESS                               |
| 24h  00h  DTLPWRSOMC  INVALID FIELD IN CDB                                  |
| 26h  00h  DTLPWRSOMC  INVALID FIELD IN PARAMETER LIST                       |
| 49h  00h  DTLPWRSOMC  INVALID MESSAGE ERROR                                 |
| 11h  05h      WR O    L-EC UNCORRECTABLE ERROR                              |
| 60h  00h        S     LAMP FAILURE                                          |
| 5Bh  02h  DTLPWRSOM   LOG COUNTER AT MAXIMUM                                |
| 5Bh  00h  DTLPWRSOM   LOG EXCEPTION                                         |
| 5Bh  03h  DTLPWRSOM   LOG LIST CODES EXHAUSTED                              |
| 2Ah  02h  DTL WRSOMC  LOG PARAMETERS CHANGED                                |
| 21h  00h  DT  WR OM   LOGICAL BLOCK ADDRESS OUT OF RANGE                    |
| 08h  00h  DTL WRSOMC  LOGICAL UNIT COMMUNICATION FAILURE                    |
| 08h  02h  DTL WRSOMC  LOGICAL UNIT COMMUNICATION PARITY ERROR               |
| 08h  01h  DTL WRSOMC  LOGICAL UNIT COMMUNICATION TIME-OUT                   |
 | 05h  00h  DTLPWRSOMC  LOGICAL UNIT DOES NOT RESPOND TO SELECTION            | 
| 4Ch  00h  DTLPWRSOMC  LOGICAL UNIT FAILED SELF-CONFIGURATION                |
| 3Eh  00h  DTLPWRSOMC  LOGICAL UNIT HAS NOT SELF-CONFIGURED YET              |
| 04h  01h  DTLPWRSOMC  LOGICAL UNIT IS IN PROCESS OF BECOMING READY          |
| 04h  00h  DTLPWRSOMC  LOGICAL UNIT NOT READY, CAUSE NOT REPORTABLE          |
| 04h  04h  DTL    O    LOGICAL UNIT NOT READY, FORMAT IN PROGRESS            |
| 04h  02h  DTLPWRSOMC  LOGICAL UNIT NOT READY, INITIALIZING COMMAND REQUIRED |
| 04h  03h  DTLPWRSOMC  LOGICAL UNIT NOT READY, MANUAL INTERVENTION REQUIRED  |
| 25h  00h  DTLPWRSOMC  LOGICAL UNIT NOT SUPPORTED                            |
| 15h  01h  DTL WRSOM   MECHANICAL POSITIONING ERROR                          |
| 53h  00h  DTL WRSOM   MEDIA LOAD OR EJECT FAILED                            |
| 3Bh  0Dh          M   MEDIUM DESTINATION ELEMENT FULL                       |
| 31h  00h  DT  W  O    MEDIUM FORMAT CORRUPTED                               |
| 3Ah  00h  DTL WRSOM   MEDIUM NOT PRESENT                                    |
| 53h  02h  DT  WR OM   MEDIUM REMOVAL PREVENTED                              |
| 3Bh  0Eh          M   MEDIUM SOURCE ELEMENT EMPTY                           |
| 43h  00h  DTLPWRSOMC  MESSAGE ERROR                                         |
| 3Fh  01h  DTLPWRSOMC  MICROCODE HAS BEEN CHANGED                            |
| 1Dh  00h  D   W  O    MISCOMPARE DURING VERIFY OPERATION                    |
| 11h  0Ah  DT     O    MISCORRECTED ERROR                                    |
| 2Ah  01h  DTL WRSOMC  MODE PARAMETERS CHANGED                               |
| 07h  00h  DTL WRSOM   MULTIPLE PERIPHERAL DEVICES SELECTED                  |
| 11h  03h  DT  W SO    MULTIPLE READ ERRORS                                  |
| 00h  00h  DTLPWRSOMC  NO ADDITIONAL SENSE INFORMATION                       |
| 00h  15h       R      NO CURRENT AUDIO STATUS TO RETURN                     |
| 32h  00h  D   W  O    NO DEFECT SPARE LOCATION AVAILABLE                    |
| 11h  09h   T          NO GAP FOUND                                          |
| 01h  00h  D   W  O    NO INDEX/SECTOR SIGNAL                                |
| 06h  00h  D   WR OM   NO REFERENCE POSITION FOUND                           |
+=============================================================================+


Table 71  (continued)
+=============================================================================+
| ASC ASCQ  DTLPWRSOMC  DESCRIPTION                                           |
| --- ----              ----------------------------------------------------- |
| 02h  00h  D   WR OM   NO SEEK COMPLETE                                      |
| 03h  01h   T          NO WRITE CURRENT                                      |
| 28h  00h  DTLPWRSOMC  NOT READY TO READY TRANSITION, MEDIUM MAY HAVE CHANGED|
| 5Ah  01h  DT  WR OM   OPERATOR MEDIUM REMOVAL REQUEST                       |
| 5Ah  00h  DTLPWRSOM   OPERATOR REQUEST OR STATE CHANGE INPUT (UNSPECIFIED)  |
| 5Ah  03h  DT  W  O    OPERATOR SELECTED WRITE PERMIT                        |
| 5Ah  02h  DT  W  O    OPERATOR SELECTED WRITE PROTECT                       |
| 61h  02h        S     OUT OF FOCUS                                          |
| 4Eh  00h  DTLPWRSOMC  OVERLAPPED COMMANDS ATTEMPTED                         |
| 2Dh  00h   T          OVERWRITE ERROR ON UPDATE IN PLACE                    |
| 3Bh  05h    L         PAPER JAM                                             |
| 1Ah  00h  DTLPWRSOMC  PARAMETER LIST LENGTH ERROR                           |
| 26h  01h  DTLPWRSOMC  PARAMETER NOT SUPPORTED                               |
| 26h  02h  DTLPWRSOMC  PARAMETER VALUE INVALID                               |
| 2Ah  00h  DTL WRSOMC  PARAMETERS CHANGED                                    |
| 03h  00h  DTL W SO    PERIPHERAL DEVICE WRITE FAULT                         |
| 50h  02h   T          POSITION ERROR RELATED TO TIMING                      |
| 3Bh  0Ch        S     POSITION PAST BEGINNING OF MEDIUM                     |
| 3Bh  0Bh        S     POSITION PAST END OF MEDIUM                           |
| 15h  02h  DT  WR O    POSITIONING ERROR DETECTED BY READ OF MEDIUM          |
| 29h  00h  DTLPWRSOMC  POWER ON, RESET, OR BUS DEVICE RESET OCCURRED         |
| 42h  00h  D           POWER-ON OR SELF-TEST FAILURE (SHOULD USE 40 NN)      |
| 1Ch  01h  D      O    PRIMARY DEFECT LIST NOT FOUND                         |
| 40h  00h  D           RAM FAILURE (SHOULD USE 40 NN)                        |
| 15h  00h  DTL WRSOM   RANDOM POSITIONING ERROR                              |
| 3Bh  0Ah        S     READ PAST BEGINNING OF MEDIUM                         |
| 3Bh  09h        S     READ PAST END OF MEDIUM                               |
| 11h  01h  DT  W SO    READ RETRIES EXHAUSTED                                |
| 14h  01h  DT  WR O    RECORD NOT FOUND                                      |
| 14h  00h  DTL WRSO    RECORDED ENTITY NOT FOUND                             |
| 18h  02h  D   WR O    RECOVERED DATA - DATA AUTO-REALLOCATED                |
| 18h  05h  D   WR O    RECOVERED DATA - RECOMMEND REASSIGNMENT               |
| 18h  06h  D   WR O    RECOVERED DATA - RECOMMEND REWRITE                    |
| 17h  05h  D   WR O    RECOVERED DATA USING PREVIOUS SECTOR ID               |
| 18h  03h       R      RECOVERED DATA WITH CIRC                              |
| 18h  01h  D   WR O    RECOVERED DATA WITH ERROR CORRECTION & RETRIES APPLIED|
| 18h  00h  DT  WR O    RECOVERED DATA WITH ERROR CORRECTION APPLIED          |
| 18h  04h       R      RECOVERED DATA WITH L-EC                              |
| 17h  03h  DT  WR O    RECOVERED DATA WITH NEGATIVE HEAD OFFSET              |
| 17h  00h  DT  WRSO    RECOVERED DATA WITH NO ERROR CORRECTION APPLIED       |
| 17h  02h  DT  WR O    RECOVERED DATA WITH POSITIVE HEAD OFFSET              |
| 17h  01h  DT  WRSO    RECOVERED DATA WITH RETRIES                           |
| 17h  04h      WR O    RECOVERED DATA WITH RETRIES AND/OR CIRC APPLIED       |
| 17h  06h  D   W  O    RECOVERED DATA WITHOUT ECC - DATA AUTO-REALLOCATED    |
| 17h  07h  D   W  O    RECOVERED DATA WITHOUT ECC - RECOMMEND REASSIGNMENT   |
| 17h  08h  D   W  O    RECOVERED DATA WITHOUT ECC - RECOMMEND REWRITE        |
| 1Eh  00h  D   W  O    RECOVERED ID WITH ECC CORRECTION                      |
| 3Bh  08h   T          REPOSITION ERROR                                      |
| 36h  00h    L         RIBBON, INK, OR TONER FAILURE                         |
| 37h  00h  DTL WRSOMC  ROUNDED PARAMETER                                     |
| 5Ch  00h  D      O    RPL STATUS CHANGE                                     |
| 39h  00h  DTL WRSOMC  SAVING PARAMETERS NOT SUPPORTED                       |
| 62h  00h        S     SCAN HEAD POSITIONING ERROR                           |
| 47h  00h  DTLPWRSOMC  SCSI PARITY ERROR                                     |
| 54h  00h     P        SCSI TO HOST SYSTEM INTERFACE FAILURE                 |
| 45h  00h  DTLPWRSOMC  SELECT OR RESELECT FAILURE                            |
+=============================================================================+


Table 71  (concluded)
+=============================================================================+
| ASC ASCQ  DTLPWRSOMC  DESCRIPTION                                           |
| --- ----              ----------------------------------------------------- |
| 3Bh  00h   TL         SEQUENTIAL POSITIONING ERROR                          |
| 00h  03h   T          SETMARK DETECTED                                      |
| 3Bh  04h    L         SLEW FAILURE                                          |
| 09h  03h      WR O    SPINDLE SERVO FAILURE                                 |
| 5Ch  02h  D      O    SPINDLES NOT SYNCHRONIZED                             |
| 5Ch  01h  D      O    SPINDLES SYNCHRONIZED                                 |
| 1Bh  00h  DTLPWRSOMC  SYNCHRONOUS DATA TRANSFER ERROR                       |
| 55h  00h     P        SYSTEM RESOURCE FAILURE                               |
| 33h  00h   T          TAPE LENGTH ERROR                                     |
| 3Bh  03h    L         TAPE OR ELECTRONIC VERTICAL FORMS UNIT NOT READY      |
| 3Bh  01h   T          TAPE POSITION ERROR AT BEGINNING-OF-MEDIUM            |
| 3Bh  02h   T          TAPE POSITION ERROR AT END-OF-MEDIUM                  |
| 3Fh  00h  DTLPWRSOMC  TARGET OPERATING CONDITIONS HAVE CHANGED              |
| 5Bh  01h  DTLPWRSOM   THRESHOLD CONDITION MET                               |
| 26h  03h  DTLPWRSOMC  THRESHOLD PARAMETERS NOT SUPPORTED                    |
| 2Ch  01h        S     TOO MANY WINDOWS SPECIFIED                            |
| 09h  00h  DT  WR O    TRACK FOLLOWING ERROR                                 |
| 09h  01h      WR O    TRACKING SERVO FAILURE                                |
| 61h  01h        S     UNABLE TO ACQUIRE VIDEO                               |
| 57h  00h       R      UNABLE TO RECOVER TABLE-OF-CONTENTS                   |
| 53h  01h   T          UNLOAD TAPE FAILURE                                   |
| 11h  00h  DT  WRSO    UNRECOVERED READ ERROR                                |
| 11h  04h  D   W  O    UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED       |
| 11h  0Bh  D   W  O    UNRECOVERED READ ERROR - RECOMMEND REASSIGNMENT       |
| 11h  0Ch  D   W  O    UNRECOVERED READ ERROR - RECOMMEND REWRITE THE DATA   |
| 46h  00h  DTLPWRSOMC  UNSUCCESSFUL SOFT RESET                               |
| 59h  00h         O    UPDATED BLOCK READ                                    |
| 61h  00h        S     VIDEO ACQUISITION ERROR                               |
| 50h  00h   T          WRITE APPEND ERROR                                    |
| 50h  01h   T          WRITE APPEND POSITION ERROR                           |
| 0Ch  00h   T    S     WRITE ERROR                                           |
| 0Ch  02h  D   W  O    WRITE ERROR - AUTO REALLOCATION FAILED                |
| 0Ch  01h  D   W  O    WRITE ERROR RECOVERED WITH AUTO REALLOCATION          |
| 27h  00h  DT  W  O    WRITE PROTECTED                                       |
|                                                                             |
| 80h  XXh     \                                                              |
| THROUGH       >       Vendor-specific.                                      |
| FFh  XX      /                                                              |
|                                                                             |
| XXh  80h     \                                                              |
| THROUGH       >       Vendor-specific QUALIFICATION OF STANDARD ASC.        |
| XXh  FFh     /                                                              |
|                       ALL CODES NOT SHOWN ARE RESERVED.                     |
|-----------------------------------------------------------------------------|
|NOTE - Annex D contains the ASC and ASCQ assignments in numeric order.       |
+=============================================================================+



8.2.15 SEND DIAGNOSTIC Command

The SEND DIAGNOSTIC command (see table 72) requests the target to perform
diagnostic operations on itself, on the logical unit, or on both.  The
only mandatory implementation of this command is the self-test feature
with the parameter list length of zero.  Except when the self-test bit is
one, this command is usually followed by a RECEIVE DIAGNOSTIC RESULTS
command.

                      Table 72 - SEND DIAGNOSTIC command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (1Dh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |   PF   |Reserved|SelfTest| DevOfL | UnitOfL|
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|-----+---                        Parameter list length                    ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


A page format (PF) bit of one specifies that the SEND DIAGNOSTIC
parameters conform to the page structure as specified in this
International Standard.  The implementation of the PF bit is optional. 
See 87.3.1 for the definition of diagnostic pages.  A PF bit of zero
indicates that the SEND DIAGNOSTIC parameters are as specified in SCSI-1
(i.e. all parameters are vendor-specific).

A self-test (SelfTest) bit of one directs the target to complete its
default self-test.  If the self-test successfully passes, the command
shall be terminated with GOOD status; otherwise, the command shall be
terminated with CHECK CONDITION status and the sense key shall be set to
HARDWARE ERROR.

A self-test bit of zero requests that the target perform the diagnostic
operation specified in the parameter list.  The diagnostic operation might
or might not require a target to return data that contains diagnostic
results.  If the return of data is not required, the return of GOOD status
indicates successful completion of the diagnostic operation.  If the
return of data is required, the target shall either:
   a)     perform the requested diagnostic operation, prepare the data to be
          returned and indicate completion by returning GOOD status.  The
          initiator issues a RECEIVE DIAGNOSTIC RESULTS command to recover the
          data;
   b)     accept the parameter list, and if no errors are detected in the
          parameter list, return GOOD status.  The requested diagnostic
          operation and the preparation of the data to be returned are
          performed upon receipt of a RECEIVE DIAGNOSTIC RESULTS command.

   NOTE 92 To insure that the diagnostic command information is not destroyed
   by a command sent from another initiator, either the SEND DIAGNOSTIC command
   should be linked to the RECEIVE DIAGNOSTIC RESULTS command or the logical
   unit should be reserved.

The device off-line (DevOfL) and unit off-line (UnitOfL) bits are
generally set by operating system software, while the parameter list is
prepared by diagnostic application software.  These bits grant permission
to perform vendor-specific diagnostic operations on the target that may
be visible to attached initiators.  Thus, by preventing operations that
are not enabled by these bits, the target assists the operating system in
protecting its resources.

A UnitOfL bit of one grants permission to the target to perform diagnostic
operations that may affect the user accessible medium on the logical unit,
e.g. write operations to the user accessible medium, or repositioning of
the medium on sequential access devices.  The implementation of the
UnitOfl bit is optional.  A UnitOfL bit of zero prohibits any diagnostic
operations that may be detected by subsequent I/O processes.  

A DevOfl bit of one grants permission to the target to perform diagnostic
operations that may affect all the logical units on a target, e.g.
alteration of reservations, log parameters, or sense data. The
implementation of the DevOfl bit is optional.  A DevOfL bit of zero
prohibits diagnostic operations that may be detected by subsequent I/O
processes.

The parameter list length field specifies the length in bytes of the
parameter list that shall be transferred from the initiator to the target. 
A parameter list length of zero indicates that no data shall be
transferred. This condition shall not be considered an error.  If the
specified parameter list length results in the truncation of one or more
pages (PF bit set to one) the target shall return CHECK CONDITION status
with a sense key of ILLEGAL REQUEST and an additional sense code of
INVALID FIELD IN CDB.  

See note 83 under the RECEIVE DIAGNOSTIC RESULTS command in 8.2.13.

8.2.16 TEST UNIT READY Command

The TEST UNIT READY command (see table 73) provides a means to check if
the logical unit is ready.  This is not a request for a self-test.  If the
logical unit would accept an appropriate medium-access command without
returning CHECK CONDITION status, this command shall return a GOOD status. 
If the logical unit cannot become operational or is in a state such that
an initiator action (e.g. START UNIT command) is required to make the unit
ready, the target shall return CHECK CONDITION status with a sense key of
NOT READY.

                      Table 73 - TEST UNIT READY command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (00h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


Table 74 defines the preferred responses to the TEST UNIT READY command.
Higher-priority responses (e.g. BUSY or RESERVATION CONFLICT) are also
permitted.

                Table 74 - Preferred TEST UNIT READY responses
+=================-=================-=========================================+
|      Status     |    Sense key    |             ASC and ASCQ                |
|-----------------+-----------------+-----------------------------------------|
| GOOD            | NO SENSE        | NO ADDITIONAL SENSE INFORMATION or      |
|                 |                 |    other valid additional sense code.   |
|-----------------+-----------------+-----------------------------------------|
| CHECK CONDITION | ILLEGAL REQUEST | LOGICAL UNIT NOT SUPPORTED              |
|                 |                 |                                         |
|-----------------+-----------------+-----------------------------------------|
| CHECK CONDITION | NOT READY       | LOGICAL UNIT DOES NOT RESPOND           |
|                 |                 |    TO SELECTION                         |
|-----------------+-----------------+-----------------------------------------|
| CHECK CONDITION | NOT READY       | MEDIUM NOT PRESENT                      |
|                 |                 |                                         |
|-----------------+-----------------+-----------------------------------------|
| CHECK CONDITION | NOT READY       | LOGICAL UNIT NOT READY,                 |
|                 |                 |    CAUSE NOT REPORTABLE                 |
|-----------------+-----------------+-----------------------------------------|
| CHECK CONDITION | NOT READY       | LOGICAL UNIT IS IN PROCESS              |
|                 |                 |    OF BECOMING READY                    |
|-----------------+-----------------+-----------------------------------------|
| CHECK CONDITION | NOT READY       | LOGICAL UNIT NOT READY,                 |
|                 |                 |    INITIALIZING COMMAND REQUIRED        |
|-----------------+-----------------+-----------------------------------------|
| CHECK CONDITION | NOT READY       | LOGICAL UNIT NOT READY,                 |
|                 |                 |    MANUAL INTERVENTION REQUIRED         |
|-----------------+-----------------+-----------------------------------------|
| CHECK CONDITION | NOT READY       | LOGICAL UNIT NOT READY,                 |
|                 |                 |    FORMAT IN PROGRESS                   |
+=============================================================================+


8.2.17 WRITE BUFFER command

The WRITE BUFFER command (see table 75) is used in conjunction with the
READ BUFFER command as a diagnostic for testing target memory and the SCSI
bus integrity.  Additional modes are provided for downloading microcode
and for downloading and saving microcode.

                       Table 75 - WRITE BUFFER command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (3Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |     Reserved    |          Mode            |
|-----+-----------------------------------------------------------------------|
| 2   |                           Buffer ID                                   |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 4   |                           Buffer offset                               |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                           Parameter list length                       |
|-----+---                                                                 ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


This command shall not alter any medium of the target when the data mode
or the combined header and data mode is specified.  

The function of this command and the meaning of fields within the command
descriptor block depend on the contents of the mode field.  The mode field
is defined in table 76.

                      Table 76 - WRITE BUFFER mode field
      +========-==================================-===================+
      |  Mode  |  Description                     |  Implementation   |
      |        |                                  |  requirements     |
      |--------+----------------------------------+-------------------|
      |  000b  |  Write combined header and data  |  Optional         |
      |  001b  |  Vendor-specific                 |  Vendor-specific  |
      |  010b  |  Write data                      |  Optional         |
      |  011b  |  Reserved                        |  Reserved         |
      |  100b  |  Download microcode              |  Optional         |
      |  101b  |  Download microcode and save     |  Optional         |
      |  110b  |  Reserved                        |  Reserved         |
      |  111b  |  Reserved                        |  Reserved         |
      +===============================================================+


   NOTE 93 Modes 000b and 001b are included for compatibility with CCS products
   that were designed prior to the generation of this International Standard.
   These products restrict the maximum transfer length to 65 535 bytes.

8.2.17.1 Combined header and data mode (000b)

In this mode, data to be transferred is preceded by a four-byte header. 
The four-byte header consists of all reserved bytes.  The buffer ID and
the buffer offset fields shall be zero.  The parameter list length field
specifies the maximum number of bytes that shall be transferred during the
DATA OUT phase.  This number includes four bytes of header, so the data
length to be stored in the target's buffer is parameter list length minus
four.  The initiator should attempt to ensure that the parameter list
length is not greater than four plus the buffer capacity (see 8.2.12.1)
that is returned in the header of the READ BUFFER command (mode 00b).  If
the parameter list length exceeds the buffer capacity target shall return
CHECK CONDITION status and shall set the sense key to ILLEGAL REQUEST.

8.2.17.2 Vendor-specific mode (001b)

In this mode, the meaning of the buffer ID, buffer offset, and parameter
list length fields are not specified by this International Standard.

8.2.17.3 Data mode (010b)

In this mode, the DATA OUT phase contains buffer data.  The buffer ID
field identifies a specific buffer within the target.  The vendor assigns
buffer ID codes to buffers within the target.  Buffer ID zero shall be
supported.  If more than one buffer is supported, additional buffer ID
codes shall be assigned contiguously, beginning with one.  If an
unsupported buffer ID code is selected, the target shall return CHECK
CONDITION status and shall set the sense key to ILLEGAL REQUEST with an
additional sense code of INVALID FIELD IN CDB.

Data are written to the target buffer starting at the location specified
by the buffer offset.  The initiator should conform to the offset boundary
requirements returned in the READ BUFFER descriptor.  If the target is
unable to accept the specified buffer offset, it shall return CHECK
CONDITION status and it shall set the sense key to ILLEGAL REQUEST with
an additional sense code of INVALID FIELD IN CDB.

The parameter list length specifies the maximum number of bytes that shall
be transferred during the DATA OUT phase to be stored in the specified
buffer beginning at the buffer offset.  The initiator should attempt to
ensure that the parameter list length plus the buffer offset does not
exceed the capacity of the specified buffer.  (The capacity of the buffer
can be determined by the buffer capacity field in the READ BUFFER
descriptor.)  If the buffer offset and parameter list length fields
specify a transfer that would exceed the buffer capacity, the target shall
return CHECK CONDITION status and shall set the sense key to ILLEGAL
REQUEST with an additional sense code of INVALID FIELD IN CDB. 

8.2.17.4 Download microcode mode (100b)

In this mode, vendor-specific microcode or control information shall be
transferred to the control memory space of the target.  After a power-
cycle or reset, the device operation shall revert to a vendor-specific
condition.  The meanings of the buffer ID, buffer offset, and parameter
list length fields are not specified by this International Standard and
are not required to be zero-filled.  When the microcode download has
completed successfully the target shall generate a unit attention
condition for all initiators except the one that issued the WRITE BUFFER
command (see 7.9).  The additional sense code shall be set to MICROCODE
HAS BEEN CHANGED.

8.2.17.5 Download microcode and save mode (101b)

In this mode, vendor-specific microcode or control information shall be
transferred to the target and, if the 
WRITE BUFFER command is completed successfully, also shall be saved in a
non-volatile memory space (semiconductor, disk, or other).  The downloaded
code shall then be effective after each power-cycle and reset until it is
supplanted in another download microcode and save operation.  The meanings
of the buffer ID, buffer offset, and parameter list length fields are not
specified by this International Standard and are not required to be zero-
filled.  When the download microcode and save command has completed
successfully the target shall generate a unit attention condition (see
7.9) for all initiators except the one that issued the WRITE BUFFER
command.  When reporting the unit attention condition, the target shall
set the additional sense code to MICROCODE HAS BEEN CHANGED.

8.3 Parameters for all device types


8.3.1 Diagnostic parameters 

This subclause describes the diagnostic page structure and the diagnostic
pages that are applicable to all SCSI devices.  Pages specific to each
device type are described in the third subclause of each device-type
clause (i.e. 9.3, 10.3, etc.).

A SEND DIAGNOSTIC command with a PF bit of one specifies that the SEND
DIAGNOSTIC parameter list consists of zero or more diagnostic pages and
that the data returned by the subsequent RECEIVE DIAGNOSTIC RESULTS
command shall use the diagnostic page format (see table 77) described in
this International Standard.

                      Table 77 - Diagnostic page format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Page code                                   |
|-----+-----------------------------------------------------------------------|
| 1   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Page length (n-3)                        ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                                                                       |
|- - -+---                        Diagnostic parameters                    ---|
| n   |                                                                       |
+=============================================================================+


Each diagnostic page defines a function or operation that the target shall
perform.  The page contains a page header followed by the analysis data
that is formatted according to the page code specified in the previous
SEND DIAGNOSTIC command.


Targets that implement diagnostic pages are only required to accept a
single diagnostic page per command.

The page code field identifies which diagnostic page is being sent or
returned.  The page codes are defined in table 78.

                       Table 78 - Diagnostic page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     00h     |  Supported diagnostics pages                     |  8.3.1.1   |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|  40h - 7Fh  |  See specific device type for definition         |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+


The page length field specifies the length in bytes of the diagnostic
parameters that follow this field.  If the initiator sends a page length
that results in the truncation of any parameter, the target shall
terminate the command with CHECK CONDITION status.  The sense key shall
be set to ILLEGAL REQUEST with the additional sense code set to INVALID
FIELD IN PARAMETER LIST.

The diagnostic parameters are defined for each page code.  The diagnostic
parameters within a page may be defined differently in a SEND DIAGNOSTIC
command than in a RECEIVE DIAGNOSTIC RESULTS command.

8.3.1.1 Supported diagnostic pages

The supported diagnostics page (see table 79) returns the list of
diagnostic pages implemented by the target.  This page shall be
implemented if the target implements the page format option of the SEND
DIAGNOSTIC and RECEIVE DIAGNOSTIC RESULTS commands.

                    Table 79 - Supported diagnostic pages
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Page code (00h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Page length (n-3)                        ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                                                                       |
|- - -+---                        Supported page list                      ---|
| n   |                                                                       |
+=============================================================================+


The definition of this page for the SEND DIAGNOSTIC command includes only
the first four bytes.  If the page length field is not zero, the target
shall terminate the SEND DIAGNOSTIC command with CHECK CONDITION status. 
The sense key shall be set to ILLEGAL REQUEST with an additional sense
code of INVALID FIELD IN PARAMETER LIST.  This page instructs the target
to make available the list of all supported diagnostic pages to be
returned by a subsequent RECEIVE DIAGNOSTIC RESULTS command. 

The definition of this page for the RECEIVE DIAGNOSTIC RESULTS command
includes the list of diagnostic pages supported by the target.

The page length field specifies the length in bytes of the following
supported page list.

The supported page list field shall contain a list of all diagnostic page
codes implemented by the target in ascending order beginning with page
code 00h.

8.3.2 Log parameters

This subclause describes the log page structure and the log pages that are
applicable to all SCSI devices.  Pages specific to each device type are
described in the third subclause of each device-type clause (i.e. 9.3.2,
10.3.2, etc.).  The LOG SELECT command supports the ability to send zero
or more log pages.  The LOG SENSE command returns a single log page
specified in the page code field of the command descriptor block (see
8.2.7).

Each log page begins with a four-byte page header followed by zero or more
variable-length log parameters defined for that page.  The log page format
is defined in table 80.

                          Table 80 - Log page format
+=======-========-========-========-========-========-========-========-========+
|    Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte   |        |        |        |        |        |        |        |        |
|=======+=================+=====================================================|
| 0     |    Reserved     |            Page code                                |
|-------+-----------------------------------------------------------------------|
| 1     |                              Reserved                                 |
|-------+-----------------------------------------------------------------------|
| 2     | (MSB)                                                                 |
|-------+---                           Page length (n-3)                     ---|
| 3     |                                                                 (LSB) |
|=======+=======================================================================|
|       |                         Log parameters(s)                             |
|=======+=======================================================================|
| 4     |                              Log parameter (First)                    |
|- --- -+---                           (Length x)                            ---|
| x+3   |                                                                       |
|-------+-----------------------------------------------------------------------|
|       |                                 .                                     |
|       |                                 .                                     |
|-------+-----------------------------------------------------------------------|
| n-y+1 |                              Log parameter (Last)                     |
|- --- -+---                           (Length y)                            ---|
| n     |                                                                       |
+===============================================================================+


The page code field identifies which log page is being transferred.  

The page length field specifies the length in bytes of the following log
parameters.  If the initiator sends a page length that results in the
truncation of any parameter, the target shall terminate the command with
CHECK CONDITION status.  The sense key shall be set to ILLEGAL REQUEST
with the additional sense code set to INVALID FIELD IN PARAMETER LIST.

Most log pages contain one or more special data structures called log
parameters (see table 81).  Log parameters may be data counters that
record a count of a particular event (or events) or log parameters may be
list parameters (strings) which contain a description of a particular
event.

                           Table 81 - Log parameter
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|-----+---                        Parameter code                           ---|
| 1   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 2   |   DU   |   DS   |  TSD   |   ETC  |       TMC       |Reserved|  LP    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Parameter length (n-3)                      |
|-----+-----------------------------------------------------------------------|
| 4   |                                                                       |
|- - -+---                        Parameter value                          ---|
| n   |                                                                       |
+=============================================================================+


Each log parameter begins with a four-byte parameter header followed by
one or more bytes of parameter value data.

The parameter code field identifies the log parameter is being transferred
for that log page.  

The DU, DS, TSD, ETC, TMC, and LP fields are collectively referred to as
the parameter control byte.  These fields are described below.

For cumulative log parameter values (indicated by the PC field of the LOG
SELECT and LOG SENSE command descriptor block), the disable update (DU)
bit is defined as follows:
   a)     A zero value indicates that the target shall update the log
          parameter value to reflect all events that should be noted by that
          parameter.  
   b)     A one value indicates that the target shall not update the log
          parameter value except in response to a LOG SELECT command that
          specifies a new value for the parameter.

   NOTE 94 When updating cumulative log parameter values, a target may use
   volatile memory to hold these values until a LOG SELECT or LOG SENSE command
   is received with an SP bit of one (or a target-defined event occurs).  Thus
   the updated cumulative log parameter values may be lost if a power cycle
   occurs.

The DU bit is not defined for threshold values (indicated by the PC field
of the LOG SENSE command descriptor block) nor for list parameters
(indicated by the LP bit).  The target shall ignore the value of any DU
bits in a LOG SELECT command.

A disable save (DS) bit of zero indicates that the target supports saving
for that log parameter.  The target shall save the current cumulative or
the current threshold parameter value (depending on the value in the PC
field of the command descriptor block) in response to a LOG SELECT or LOG
SENSE command with an SP bit of one.  A DS bit of one indicates that the
target does not support saving that log parameter in response to a LOG
SELECT or LOG SENSE command with an SP bit of one.

A target save disable (TSD) bit of zero indicates that the target provides
a target-defined method for saving log parameters.  This implicit saving
operation shall be done frequently enough to insure that the cumulative
parameter values retain statistical significance (i.e. across power
cycles).  A TSD bit of one indicates that either the target does not
provide a target-defined method for saving log parameters or the target-
defined method has been disabled by the initiator.

An enable threshold comparison (ETC) bit of one indicates that a
comparison to the threshold value is performed whenever the cumulative
value is updated.  An ETC bit of zero indicates that a comparison is not
performed.  The value of the ETC bit is the same for cumulative and
threshold parameters.

The threshold met criteria (TMC) field (see table 82) defines the basis
for comparison of the cumulative and threshold values.  The TMC field is
valid only if the ETC bit is one.  The value of the TMC field is the same
for cumulative and threshold parameters.

                      Table 82 - Threshold met criteria
+========-=================================================+
|  Code  |  Basis for comparison                           |
|--------+-------------------------------------------------|
|   00b  |  Every update of the cumulative value           |
|   01b  |  Cumulative value     equal    threshold value  |
|   10b  |  Cumulative value   not equal  threshold value  |
|   11b  |  Cumulative value greater than threshold value  |
+==========================================================+


If the ETC bit is one and the result of the comparison is true, a unit
attention condition shall be generated for all initiators.  When reporting
the unit attention condition, the target shall set the sense key to UNIT
ATTENTION and set the additional sense code to THRESHOLD CONDITION MET.

The list parameter (LP) bit indicates the format of the log parameter. 
If an initiator attempts to set the value of the LP bit to a value other
than the one returned for the same parameter in the LOG SENSE command, the
target shall terminate the command with CHECK CONDITION status.  The sense
key shall be set to ILLEGAL REQUEST with the additional sense code set to
INVALID FIELD IN PARAMETER LIST.

An LP bit of zero indicates that the parameter is a data counter.  Data
counters are associated with one of more events;  the data counter is
updated whenever one of these events occurs by incrementing of the counter
value. If each data counter has associated with it a target-defined
maximum value.  Upon reaching this maximum value, the data counter shall
not be incremented (i.e. it does not wrap).  When a data counter reaches
its maximum value, the target shall set the associated DU bit to one.  If
the data counter is at or reaches its maximum value during the execution
of a command, the target shall complete the command.  If the command
completes correctly (except for the data counter being at its maximum
value) and if the RLEC bit of the control mode page (8.3.3.1) is set to
one; then the target shall terminate the command with CHECK CONDITION
status and set the sense key to RECOVERED ERROR with the additional sense
code set to LOG COUNTER AT MAXIMUM.  

An LP bit of one indicates that the parameter is a list parameter.  List
parameters are not counters and thus the ETC and TMC fields shall be set
to zero.  A list parameter is a string of ASCII graphic codes (i.e. code
values 20h through 7Eh).

If more than one list parameter is defined in a single log page, the
following rules apply to assigning parameter codes:
   a)     The parameter updated last shall have a higher parameter code than
          the previous parameter, except as defined in rule b).
   b)     When the maximum parameter code value supported by the target is
          reached, the target shall assign the lowest parameter code value to
          the next log parameter (i.e. wrap-around parameter codes).  If the
          associated command completes correctly (except for the parameter
          code being at its maximum value) and if the RLEC bit of the control
          mode page (8.3.3.1) is set to one; then the target shall terminate
          the command with CHECK CONDITION status and set the sense key to
          RECOVERED ERROR with the additional sense code set to LOG LIST CODES
          EXHAUSTED.

   NOTE 95 List parameters can be used to store the locations of defective
   blocks in the following manner.  When a defective block is identified, a list
   parameter is updated to reflect the location and cause of the defect.  When
   the next defect is encountered, the list parameter with the next higher
   parameter code is updated to record this defect.  The size of the page can
   be made target specific to accommodate memory limitations.  It is recommended
   that one or more data counter parameters be defined for the page to keep
   track of the number of valid list parameters and the parameter code of the
   parameter with the oldest recorded defect.  This technique can be adapted to
   record other types of information.

The parameter length field specifies the length in bytes of the following
parameter value.  If the initiator sends a parameter length value that
results in the truncation of the parameter value, the target shall
terminate the command with CHECK CONDITION status.  The sense key shall
be set to ILLEGAL REQUEST with the additional sense code set to INVALID
FIELD IN PARAMETER LIST.

If the initiator sends a log parameter value that is outside the range
supported by the target, and rounding is implemented for that parameter,
the target may either:
   a)     round to an acceptable value and terminate the command as described
          in 7.5.4; or
   b)     terminate the command with CHECK CONDITION status and set the sense
          key to ILLEGAL REQUEST with the additional sense code set to INVALID
          FIELD IN PARAMETER LIST.

When any counter in a log page reaches its maximum value, incrementing of
all counters in that log page shall cease until reinitialized by the
initiator via a LOG SELECT command.  If the RLEC bit of the control mode
page is one, then the target shall report the exception condition.

The page code assignments for the log pages are listed in table 83.

                          Table 83 - Log page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |  8.3.2.1   |
|     03h     |  Error counter page (read) page                  |  8.3.2.2   |
|     04h     |  Error counter page (read reverse) page          |  8.3.2.2   |
|     05h     |  Error counter page (verify) page                |  8.3.2.2   |
|     02h     |  Error counter page (write) page                 |  8.3.2.2   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|     06h     |  Non-medium error page                           |  8.3.2.4   |
|     00h     |  Supported log pages                             |  8.3.2.5   |
|  08h - 2Fh  |  Reserved                                        |            |
|     3Fh     |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific pages                           |            |
+=============================================================================+


8.3.2.1 Buffer over-run/under-run page

The buffer over-run/under-run page (page code 01h) defines 24 data
counters that may be used to record the number of buffer over-runs or
under-runs for the logical unit.  A target that implements this page may
implement one or more of the defined data counters.  

A buffer over-run or under-run can occur when an initiator does not
transmit data to or from the target's buffer fast enough to keep up with
reading or writing the media.  This can be caused by a slow transfer rate
across the SCSI bus or by a high SCSI bus utilization that prevents
reconnection by the target.  A buffer over-run condition can occur during
a read operation when a buffer full condition prevents continued transfer
of data from the media to the buffer.  A buffer under-run condition can
occur during a write operation when a buffer empty condition prevents
continued transfer of data to the media from the buffer.  Most devices
incur a delay at this point while the media is repositioned.

Table 84 defines the parameter code field for the buffer over-run/under-
run counters.

    Table 84 - Parameter code field for buffer over-run/under-run counters
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                          Reserved                                     |
|-----+-----------------------------------------------------------------------|
| 1   |      Count basis         |               Cause               |  Type  |
+=============================================================================+


The parameter code field for buffer over-run/under-run counters is a 16-
bit value comprised of eight reserved bits, a three-bit count basis field
(see table 85), a four-bit cause field (see table 86), and a one-bit type
field.  These are concatenated to determine the value of the parameter
code for that log parameter.  For example, a counter for parameter code
value of 0023h specifies a count basis of 001b; a cause of 0001b; and a
type of 1b; this counter is incremented once per command that experiences
an over-run due to the SCSI bus being busy.

                      Table 85 - Count basis definition
+=============-========================+
| Count basis |  Description           |
|-------------+------------------------|
|    000b     |  Undefined             |
|    001b     |  Per command           |
|    010b     |  Per failed reconnect  |
|    011b     |  Per unit of time      |
| 100b - 111b |  Reserved              |
+======================================+


The count basis field defines the criteria for incrementing the counter. 
The following criteria are defined: 

   NOTE 95 The per unit of time count basis is device type specific.  Direct-
   access devices typically use a latency period (i.e. one revolution of the
   medium) as the unit of time.

The cause field indicates the reason that the over-run or under-run
occurred.  The following causes are defined in table 86.

                      Table 86 - Cause field definition
+============-========================+
|    Cause   |Description             |
|------------+------------------------|
|      0h    |Undefined               |
|      1h    |SCSI bus busy           |
|      2h    |Transfer rate too slow  |
|   3h - Fh  |Reserved                |
+=====================================+


The type field indicates whether the counter records under-runs or over-
runs.  A value of zero specifies a buffer under-run condition and a value
of one specifies a buffer over-run condition.

The counters contain the total number of times buffer over-run or under-
run conditions have occurred since the last time the counter was cleared. 
The counter shall be incremented for each occurrence of an under-run or
over-run condition and can be incremented more than once for multiple
occurrences during the execution of a single command.

8.3.2.2 Error counter pages

This clause defines the optional error counter pages for write errors
(page code 02h), read errors (page code 03h), read reverse errors (page
code 04h) and verify errors (page code 05h).  The log page format is
defined near the beginning of 8.3.2.  A page can return one or more log
parameters this record events defined by the parameter codes.

Table 87 defines the parameter codes for the error counter pages.  Support
of each log parameter is optional. 

              Table 87 - Parameter codes for error counter pages
       +=================-==============================================+
       | Parameter code  |  Description                                 |
       |-----------------+----------------------------------------------|
       |     0000h       |  Errors corrected without substantial delay  |
       |     0001h       |  Errors corrected with possible delays       |
       |     0002h       |  Total (e.g. rewrites or rereads)            |
       |     0003h       |  Total errors corrected                      |
       |     0004h       |  Total times correction algorithm processed  |
       |     0005h       |  Total bytes processed                       |
       |     0006h       |  Total uncorrected errors                    |
       |  0007h - 7FFFh  |  Reserved                                    |
       |  8000h - FFFFh  |  Vendor-specific                             |
       +================================================================+


   NOTE 96 The exact definition of the error counters is not part of this
   International Standard.  These counters should not be used to compare
   products because the products may define errors differently.

8.3.2.3 Last n error events page

Log page (07h) provides for a number of error-event records using the list
parameter format of the log page.  The number of these error-event records
supported, n, is device-specific.  Each error-event record contains
device-specific diagnostic information for a single error encountered by
the device.  The parameter code associated with error-event record
indicates the relative time at which the error occurred.  A higher
parameter code indicates that the error event occurred later in time.

The content of the parameter value field of each log parameter is an ASCII
character string which may describe the error event.  The exact contents
of the character string is not defined by this International Standard.

When the last supported parameter code is used by an error-event record,
the recording on this page of all subsequent error information shall cease
until one or more of the list parameters with the highest parameter codes
have been reinitialized.  If the RLEC bit of the control mode page
(8.3.3.1) is set to one, the target shall return CHECK CONDITION status
with the sense key set to RECOVERED ERROR and the additional sense code
set to LOG LIST CODES EXHAUSTED.  Alternatively, the target may report
this condition via asynchronous event notification (see 7.5.5).

8.3.2.4 Non-medium error page 

This page (page code 06h) provides for summing the occurrences of
recoverable error events other than write, read, or verify failures.  No
discrimination among the various types of events is provided by parameter
code (see table 88).  Vendor-specific discrimination may be provided
through the vendor-specific parameter codes.

              Table 88 - Non-medium error event parameter codes
+=================-==============================================+
| Parameter code  |  Description                                 |
|-----------------+----------------------------------------------|
|      0000h      |  Non-medium error count                      |
|  0001h - 7FFFh  |  Reserved                                    |
|  8000h - FFFFh  |  Vendor-specific error counts                |
+================================================================+


8.3.2.5 Supported log pages

The supported log page (see table 89) returns the list of log pages
implemented by the target.  Targets that implement the LOG SENSE command
shall implement this log page.

                        Table 89 - Supported log pages
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=================+=====================================================|
| 0   |    Reserved     |        Page code (00h)                              |
|-----+-----------------------------------------------------------------------|
| 1   |                          Reserved                                     |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                       Page length (n-3)                         ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                                                                       |
|- - -+---                       Supported page list                       ---|
| n   |                                                                       |
+=============================================================================+


This page is not defined for the LOG SELECT command.  This log page
returns the list of supported log pages for the specified logical unit.

The page length field specifies the length in bytes of the following
supported page list.

The supported page list field shall contain a list of all log page codes
implemented by the target in ascending order beginning with page code 00h.

8.3.3 Mode parameters

This subclause describes the block descriptors and the pages used with
MODE SELECT and MODE SENSE commands that are applicable to all SCSI
devices.  Pages specific to each device type are described in the third
subclause of each device-type clause (i.e. 9.3, 10.3, etc.).

The mode parameter list shown in table 90 contains a header, followed by
zero or more block descriptors, followed by zero or more variable-length
pages.  Parameter lists are defined for each device type.

                        Table 90 - Mode parameter list
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
|0 - n |                        Mode parameter header                          |
|======+=======================================================================|
|0 - n |                        Block descriptor(s)                            |
|======+=======================================================================|
|0 - n |                        Page(s)                                        |
+==============================================================================+


The six-byte command descriptor block parameter header is defined in table
91.

                     Table 91 - Mode parameter header(6)
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Mode data length                            |
|-----+-----------------------------------------------------------------------|
| 1   |                           Medium type                                 |
|-----+-----------------------------------------------------------------------|
| 2   |                           Device-specific parameter                   |
|-----+-----------------------------------------------------------------------|
| 3   |                           Block descriptor length                     |
+=============================================================================+


The ten-byte command descriptor block parameter header is defined in table
92.

                     Table 92 - Mode parameter header(10)
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|-----+---                        Mode data length                         ---|
| 1   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 2   |                           Medium type                                 |
|-----+-----------------------------------------------------------------------|
| 3   |                           Device-specific parameter                   |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        Block descriptor length                  ---|
| 7   |                                                                 (LSB) |
+=============================================================================+

When using the MODE SENSE command, the mode data length field specifies
the length in bytes of the following data that is available to be
transferred.  The mode data length does not include itself.  When using
the MODE SELECT command, this field is reserved.

   NOTE 97 Targets that support more than 256 bytes of block descriptors and
   pages may need to implement ten-byte mode commands.  The mode data length
   field in the six-byte command descriptor block header limits the returned
   data to 256 bytes.

Medium types are unique for each device type.  Refer to the mode
parameters clause of the specific device type for definition of these
values.  Some device types reserve this field.

The device specific parameter is unique for each device type.  Refer to
the mode parameters clause of the specific device type for definition of
this field.  Some device types reserve all or part of this field.

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 pages or vendor-specific parameters, if any, that may
follow the last block descriptor.  A block descriptor length of zero
indicates that no block descriptors are included in the mode parameter
list.  This condition shall not be considered an error.

The mode parameter block descriptor is shown in table 93.

                  Table 93 - Mode parameter block descriptor
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Density code                                |
|-----+-----------------------------------------------------------------------|
| 1   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 2   |                           Number of blocks                            |
|-----+---                                                                 ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 6   |                           Block length                                |
|-----+---                                                                 ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


Block descriptors specify some of the medium characteristics for all or
part of a logical unit.  Support for block descriptors is optional.  Each
block descriptor contains a density code field, a number of blocks field,
and a block length field.  Block descriptor values are always current
(i.e. saving is not supported).  A unit attention condition (see 7.9)
shall be generated when any block descriptor values are changed.

The density code field is unique for each device type. Refer to the mode
parameters clause of the specific device type for definition of this
field.  Some device types reserve all or part of this field.

The number of blocks field specifies the number of logical blocks on the
medium to which the density code and block length fields apply.  A value
of zero indicates that all of the remaining logical blocks of the logical
unit shall have the medium characteristics specified.

   NOTES
   98 There may be implicit association between parameters defined in the pages
   and block descriptors.  For direct-access devices, the block length affects
   the optimum values (the values that achieve best performance) for the sectors
   per track, bytes per physical sector, track skew factor, and cylinder skew
   factor fields in the format parameters page.  In this case, the target may
   change parameters not explicitly sent with the MODE SELECT command.  A
   subsequent MODE SENSE command would reflect these changes.
   99 The number of remaining logical blocks may be unknown for some device
   types.

The block length specifies the length in bytes of each logical block
described by the block descriptor.  For sequential-access devices, a block
length of zero indicates that the logical block size written to the medium
is specified by the transfer length field in the command descriptor block
(see 10.2.4 and 10.2.14)

The mode page format is defined in table 94.

                         Table 94 - Mode page format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code                                   |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length (n-1))                          |
|-----+-----------------------------------------------------------------------|
| 2   |                                                                       |
|-----+--                         Mode parameters                          ---|
| n   |                                                                       |
+=============================================================================+


Each mode page contains a page code, a page length, and a set of mode
parameters.  The page codes are defined in this subclause and in the mode
parameter sub-clauses of the specific device type.

When using the MODE SENSE command, a parameters savable (PS) bit of one
indicates that the mode page can be saved by the target in a non-volatile,
vendor-specific location.  A PS bit of zero indicates that the supported
parameters cannot be saved.  When using the MODE SELECT command, the PS
bit is reserved.

The page code field identifies the format and parameters defined for that
mode page.  Some page codes are defined as applying to all device types
and other page codes are defined for the specific device type.  

When using the MODE SENSE command, if page code 00h (vendor-specific page)
is implemented, the target shall return that page last in response to a
request to return all pages (page code 3Fh).  When using the MODE SELECT
command, this page should be sent last.

The page length field specifies the length in bytes of the mode parameters
that follow.  If the initiator does not set this value to the value that
is returned for the page by the MODE SENSE command, the target shall
terminate the command with CHECK CONDITION status.  The sense key shall
be set to ILLEGAL REQUEST with the additional sense code set to INVALID
FIELD IN PARAMETER LIST.  The target is permitted to implement a mode page
that is less than the full page length defined in this International
Standard, provided no field is truncated and the page length field
correctly specifies the actual length implemented.

The mode parameters for each page are defined in the following subclauses,
or in the mode parameters sub-clause for the specific device type.  Mode
parameters not implemented by the target shall be set to zero.

Table 95 defines the mode pages that are applicable to all device types
that include the MODE SELECT and MODE SENSE commands.

                          Table 95 - Mode page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     0Ah     |  Control mode page                               |  8.3.3.1   |
|     02h     |  Disconnect-reconnect page                       |  8.3.3.2   |
|     09h     |  Peripheral device page                          |  8.3.3.3   |
|     01h     |  (See specific device type)                      |            |
|  03h - 08h  |  (See specific device type)                      |            |
|  0Bh - 1Fh  |  (See specific device type)                      |            |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+


8.3.3.1 Control mode page

The control mode page (see table 96) provides controls over several SCSI-2
features that are applicable to all device types such as tagged queuing,
extended contingent allegiance, asynchronous event notification, and error
logging.

                         Table 96 - Control mode page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (0Ah)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length (06h)                           |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                           |  RLEC  |
|-----+--------------------------------------------------------------+--------|
| 3   |     Queue algorithm modifier      |    Reserved     |  QErr  |  DQue  |
|-----+-----------------------------------------------------+--------+--------|
| 4   |  EECA  |              Reserved             | RAENP  | UAAENP | EAENP  |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        Ready AEN holdoff period                 ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


A report log exception condition (RLEC) bit of one specifies that the
target shall report log exception conditions as described in 8.3.2.  A
RLEC bit of zero specifies that the target shall not report log exception
conditions.

The queue algorithm modifier field (see table 97) specifies restrictions
on the algorithm used for reordering commands that are tagged with the
SIMPLE QUEUE TAG message.

                     Table 97 - Queue algorithm modifier
+===========-====================================+
|   Value   |  Definition                        |
|-----------+------------------------------------|
|     0h    |  Restricted reordering             |
|     1h    |  Unrestricted reordering allowed   |
|  2h - 7h  |  Reserved                          |
|  8h - Fh  |  Vendor-specific                   |
+================================================+


A value of zero in this field specifies that the target shall order the
actual execution sequence of the commands with a SIMPLE QUEUE tag such
that data integrity is maintained for that initiator.  This means that,
if the transmission of new commands is halted at any time, the final value
of all data observable on the medium shall have exactly the same value as
it would have if the commands had been executed in the same received
sequence without tagged queuing.  The restricted reordering value shall
be the default value.

A value of one in this field specifies that the target may reorder the
actual execution sequence of the commands with a SIMPLE QUEUE tag in any
manner.  Any data integrity exposures related to command sequence order
are explicitly handled by the initiator through the selection of
appropriate commands and queue tag messages. 

A queue error management (QErr) bit of zero specifies that remaining
suspended I/O process shall resume after the contingent allegiance
condition or extended contingent allegiance condition (see 7.8).  

A QErr bit of one specifies all remaining suspended I/O processes shall
be aborted after the contingent allegiance condition or extended
contingent allegiance condition (see 7.8).  A unit attention condition
(see 7.9) shall be generated for each initiator that had a suspended I/O
process aborted except for the initiator that had the contingent
allegiance condition or extended contingent allegiance condition.  The
target shall set the additional sense code to TAGGED COMMANDS CLEARED BY
ANOTHER INITIATOR.

A disable queuing (DQue) bit of zero specifies that tagged queuing shall
be enabled if the target supports tagged queuing.  A DQue bit of one
specifies that tagged queuing shall be disabled.  Any queued commands for
that I_T_x nexus shall be aborted.  Any subsequent queue tag message
received shall be rejected with a MESSAGE REJECT message and the I/O
process shall be executed as an untagged command (see 7.8.1).

An enable extended contingent allegiance (EECA) bit of one specifies that
extended contingent allegiance is enabled (see 7.7).  An EECA bit of zero
specifies that extended contingent allegiance is disabled.

The RAENP, UAAENP, and EAENP bits enable specific events to be reported
via the asynchronous event notification protocol.  When all three bits are
zero, the target shall not create asynchronous event notifications.

A ready AEN permission (RAENP) bit of one specifies that the target may
issue an asynchronous event notification upon completing its
initialization sequence instead of generating a unit attention condition. 
A RAENP bit of zero specifies that the target shall not issue an
asynchronous event notification upon completing its initialization
sequence.

   NOTE 100 If the target's default value for the RAENP bit is one and it does
   not implement saved parameters or include a hardware switch, then it may not
   be possible to disable the initialization sequence asynchronous event
   notification.

A unit attention AEN permission (UAAENP) bit of one specifies that the
target may issue an asynchronous event notification instead of creating
a unit attention condition upon detecting an event that would cause a unit
attention condition (other than upon completing an initialization
sequence).  A UAAENP bit of zero specifies that the target shall not issue
an asynchronous event notification instead of creating a unit attention
condition.

An error AEN permission (EAENP) bit of one specifies that the target may
issue an asynchronous event notification upon detecting a deferred error
condition instead of waiting to report the deferred error on the next
command.  An EAENP bit of zero specifies that the target shall not report
deferred error conditions via an asynchronous event notification.

The ready AEN holdoff period field specifies the minimum time in
milliseconds after the target starts its initialization sequence that it
shall delay before attempting to issue an asynchronous event notification. 
This value may be rounded up as defined in 7.5.4.

8. Disconnect-reconnect page

The disconnect-reconnect page (see table 98) provides the initiator the
means to tune the performance of the SCSI bus.

                     Table 98 - Disconnect-reconnect page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (02h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length (0Eh)                           |
|-----+-----------------------------------------------------------------------|
| 2   |                           Buffer full ratio                           |
|-----+-----------------------------------------------------------------------|
| 3   |                           Buffer empty ratio                          |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Bus inactivity limit                     ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        Disconnect time limit                    ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|-----+---                        Connect time limit                       ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  | (MSB)                                                                 |
|-----+---                        Maximum burst size                       ---|
| 11  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 12  |                           Reserved                  |      DTDC       |
|-----+-----------------------------------------------------------------------|
| 13  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 14  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 15  |                           Reserved                                    |
+=============================================================================+


The buffer full ratio field indicates to the target, on read operations,
how full the buffer should be prior to attempting a reselection.  Targets
that do not implement the requested ratio should round down to the nearest
implemented ratio as defined in 7.5.4.

The buffer empty ratio field indicates to the target, on write operations,
how empty the buffer should be prior to attempting a reselection.  Targets
that do not implement the requested ratio should round down to the nearest
implemented ratio as defined in 7.5.4.

The buffer full and buffer empty ratios are numerators of a fractional
multiplier that has 256 as its denominator.  A value of zero indicates
that the target determines when to initiate reselection consistent with
the disconnect time limit parameter.  These parameters are advisory to the
target.

   NOTE 101 As an example, consider a target with ten 512-byte buffers and a
   specified buffer full ratio of 3Fh.  The formula is:
   INTEGER((ratio/256)*number of buffers).  Thus INTEGER((3Fh/256)*10) = 2.  The
   target should attempt to reselect the initiator on read operations whenever
   two or more buffers are full.

The bus inactivity limit field indicates the maximum time in 100 us
increments that the target is permitted to assert the BSY signal without
a REQ/ACK handshake.  If the bus inactivity limit is exceeded the target
shall attempt to disconnect if the initiator has granted the disconnect
privilege (see 6.6.7) and it is not restricted by DTDC.  This value may
be rounded as defined in 7.5.4.  A value of zero indicates that there is
no bus inactivity limit.

The disconnect time limit field indicates the minimum time in 100 us
increments that the target shall wait after releasing the SCSI bus before
attempting reselection.  This value may be rounded as defined in 7.5.4. 
A value of zero indicates that there is no disconnect time limit.

The connect time limit field indicates the maximum time in 100 us
increments that the target is allowed to use the SCSI bus before
disconnecting, if the initiator has granted the disconnect privilege (see
6.6.7) and it is not restricted by DTDC.  This value may be rounded as
defined in 7.5.4.  A value of zero indicates that there is no connect time
limit.

The maximum burst size field indicates the maximum amount of data that the
target shall transfer during a data phase before disconnecting if the
initiator has granted the disconnect privilege.  This value is expressed
in increments of 512 bytes (e.g. a value of one means 512 bytes, two means
1024 bytes, etc.).  A value of zero indicates there is no limit on the
amount of data transferred per connection.  

The data transfer disconnect control (DTDC) field (see table 99) defines
further restrictions on when a disconnect is permitted.

                 Table 99 - Data transfer disconnect control
+=======-=====================================================================+
| DTDC  |  Description                                                        |
|-------+---------------------------------------------------------------------|
|  00b  |  Data transfer disconnect control is not used.  Disconnect is       |
|       |  controlled by the other fields in this page.                       |
|  01b  |  A target shall not attempt to disconnect once the data transfer of |
|       |  a command has started until all data the command is to transfer has|
|       |  been transferred.  The connect time limit and bus inactivity limit |
|       |  are ignored during the data transfer.                              |
|  10b  |  Reserved                                                           |
|  11b  |  A target shall not attempt to disconnect once the data transfer of |
|       |  a command has started, until the command is complete.  The connect |
|       |  time limit and bus inactivity limit are ignored once data transfer |
|       |  has started.                                                       |
+=============================================================================+


If DTDC is non-zero and the maximum burst size is non-zero, the target
shall return CHECK CONDITION status.  The sense key shall be set to
ILLEGAL REQUEST and the additional sense code set to ILLEGAL FIELD IN
PARAMETER LIST. 

8.3.3.3 Peripheral device page

The peripheral device page (see table 100) is used to pass vendor-specific
information between an initiator and a peripheral interface below the
target (i.e. between the target and the peripheral device).  This
International Standard does not define the format of this data, except to
provide a standard header. 

                      Table 100 - Peripheral device page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (09h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length (n-1)                           |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Interface identifier                     ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                                                                       |
|-----+---                        Vendor-specific                          ---|
| n   |                                                                       |
+=============================================================================+


Interface identifier codes are defined in the table 101.

                    Table 101 - Interface identifier codes
+=================-======================================-====================+
|                 |                                      |       ANSI         |
|   Code value    |               Interface              | Reference standard |
|-----------------+--------------------------------------+--------------------|
|      0000h      |  Small computer cystem interface     |  X3.131-1986       |
|      0001h      |  Storage module interface            |  X3.91M-1990       |
|      0002h      |  Enhanced small device interface     |  X3.170A-1991      |
|      0003h      |  Intelligent peripheral interface-2  |  X3.130-1986;      |
|                 |                                      |    X3T9.3/87-002   |
|      0004h      |  Intelligent peripheral interface-3  |  X3.132-1987;      |
|                 |                                      |    X3.147-1988     |
|  0005h - 7FFFh  |  Reserved                            |                    |
|  8000h - FFFFh  |  Vendor-specific                     |                    |
+=============================================================================+

8.3.4 Vital product data parameters

This clause describes the optional vital product data page structure and
the vital product data pages (see table 102) that are applicable to all
SCSI devices.  These pages are optionally returned by the INQUIRY command
(8.2.5) and contain vendor-specific product information about a target or
logical unit.  The vital product data may include vendor identification,
product identification, unit serial numbers, device operating definitions,
manufacturing data, field replaceable unit information, and other vendor-
specific information.  This International Standard defines the structure
of the vital product data, but not the contents.

                  Table 102 - Vital product data page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     82h     |  ASCII implemented operating definition page     |  8.3.4.1   |
|  01h - 7Fh  |  ASCII information page                          |  8.3.4.2   |
|     81h     |  Implemented operating definitions page          |  8.3.4.3   |
|     00h     |  Supported vital product data pages              |  8.3.4.4   |
|     80h     |  Unit serial number page                         |  8.3.4.5   |
|  83h - BFh  |  Reserved                                        |            |
|  C0h - FFh  |  Vendor-specific                                 |            |
+=============================================================================+


8.3.4.1 ASCII implemented operating definition page

The ASCII implemented operation definition page (see table 103) contains
operating definition description data for all operating definitions
implemented by the target.  The contents of this data is not defined by
this International Standard.

              Table 103 - ASCII implemented operating definition 
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+==========================+============================================|
| 0   | Peripheral qualifier     |           Peripheral device type           |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page code (82h)                             |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Page length (n-3)                           |
|-----+-----------------------------------------------------------------------|
| 4   |              ASCII operating definition description length (m-4)      |
|-----+-----------------------------------------------------------------------|
| 5   |                                                                       |
|- - -+---           ASCII operating definition description data           ---|
| m   |                                                                       |
|-----+-----------------------------------------------------------------------|
| m+1 |                                                                       |
|- - -+---           Vendor-specific description data                      ---|
| n   |                                                                       |
+=============================================================================+


The peripheral qualifier field and the peripheral device type field are
as defined in 8.2.5.1.

The page length field specifies the length of the following page data. 
If the allocation length is less than the length of the data to be
returned, the page length shall not be adjusted to reflect the truncation.

The ASCII operating definition description length field specifies the
length in bytes of the ASCII operating definition description data that
follows.  If the allocation length is less than the length of data to be
returned, the ASCII operating definition description length shall not be
adjusted to reflect the truncation.  A value of zero in this field
indicates that no ASCII operating definition description data is
available.

The ASCII operating definition description data field contains the ASCII
operating definition description data for the target or logical unit.  The
data in this field shall be formatted in lines (or character strings). 
Each line shall contain only graphic codes (i.e. code values 20h through
7Eh) and shall be terminated with a NULL (00h) character. 

8.3.4.2 ASCII information page

The ASCII information page (see table 104) returns information for the
field replaceable unit code returned in the REQUEST SENSE data (see
8.2.14).  

                      Table 104 - ASCII information page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+==========================+============================================|
| 0   | Peripheral qualifier     |           Peripheral device type           |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page code (01h - 7Fh)                       |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Page length (n-3)                           |
|-----+-----------------------------------------------------------------------|
| 4   |                           ASCII length (m-4)                          |
|-----+-----------------------------------------------------------------------|
| 5   |                                                                       |
|- - -+---                        ASCII information                        ---|
| m   |                                                                       |
|-----+-----------------------------------------------------------------------|
| m+1 |                                                                       |
|- - -+---                        Vendor-specific information              ---|
| n   |                                                                       |
+=============================================================================+


The peripheral qualifier field and the peripheral device type field are
defined in 8.2.5.1.

The page code field contains the same value as in the page code field of
the INQUIRY command descriptor block (see 8.2.5) and is associated with
the field replaceable unit code returned by the REQUEST SENSE command.

   NOTE 102 The field replaceable unit field in the sense data provides for 255
   possible codes, while the page code field provides for only 127 possible
   codes.  Thus it is not possible to return ASCII information pages for the
   upper code values.

The page length field specifies the length of the following page data. 
If the allocation length of the command descriptor block is too small to
transfer all of the page, the page length shall not be adjusted to reflect
the truncation.

The ASCII length field specifies the length in bytes of the ASCII
information that follows.  If the allocation length is less than the
length of the data to be returned, the ASCII length shall not be adjusted
to reflect the truncation.  A value of zero in this field indicates that
no ASCII information is available for the specified page code.

The ASCII information field contains ASCII information concerning the
field replaceable unit identified by the page code.  The data in this
field shall be formatted in one or more lines (or character strings). 
Each line shall contain only graphic codes (i.e. code values 20h through
7Eh) and shall be terminated with a NULL (00h) character. 

The contents of the vendor-specific information field is not defined in
this International Standard.

8.3.4.3 Implemented operating definition page

The implemented operating definition page (see table 105) defines the
current operating definition, the default operating definition, and the
operating definitions implemented by the target.  These operating
definition values are specified in the CHANGE DEFINITION command (see
8.2.1).

              Table 105 - Implemented operating definition page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+==========================+============================================|
| 0   | Peripheral qualifier     |           Peripheral device type           |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page code (81h)                             |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Page length (n-3)                           |
|-----+-----------------------------------------------------------------------|
| 4   |Reserved|         Current operating definition                         |
|-----+--------+--------------------------------------------------------------|
| 5   | SavImp |         Default operating definition                         |
|-----+--------+--------------------------------------------------------------|
| 6   | SavImp |                                                              |
|-----+---     +         Supported operating definition list               ---|
| n   | SavImp |                                                              |
+=============================================================================+


The peripheral qualifier field and the peripheral device type field are
defined in 8.2.5.1.

The page length field specifies the length of the following operating
definitions.  If the allocation length of the command descriptor block is
too small to transfer all of the page, the page length shall not be
adjusted to reflect the truncation.

For each operating definition, there is an associated save implemented
(SavImp) bit.  A SavImp bit of zero indicates that the corresponding
operating definition parameter cannot be saved.  A SavImp bit of one
indicates that the corresponding operating definition parameter can be
saved.

All returned operating definitions use the codes defined in table 33.  The
current operating definition field returns the value of the present
operating definition.  If no operating definition is saved, the default
operating definition field returns the value of the operating definition
the target uses when power is applied.  The supported operating definition
list returns one or more operating definitions implemented by the target.

8.3.4.4 Supported vital product data pages

The supported vital product data pages are shown in table 106.

                Table 106 - Supported vital product data pages
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+==========================+============================================|
| 0   | Peripheral qualifier     |           Peripheral device type           |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page code (00h)                             |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Page length (n-3)                           |
|-----+-----------------------------------------------------------------------|
| 4   |                                                                       |
|-----+---                        Supported page list                      ---|
| n   |                                                                       |
+=============================================================================+


The peripheral qualifier field and the peripheral device type field are
defined in 8.2.5.1.

The page code field shall be set to the value of the page code field in
the INQUIRY command descriptor block (see 8.2.5).

The page length field specifies the length of the supported page list. 
If the allocation length is too small to transfer all of the page, the
page length shall not be adjusted to reflect the truncation.

The supported page list field shall contain a list of all vital product
data page codes implemented for the target or logical unit in ascending
order beginning with page code 00h.

8.3.4.5 Unit serial number page

This page (see table 107) provides a product serial number for the target
or logical unit.

                     Table 107 - Unit serial number page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+==========================+============================================|
| 0   | Peripheral qualifier     |           Peripheral device type           |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page code (80h)                             |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Page length (n-3)                           |
|-----+-----------------------------------------------------------------------|
| 4   |                                                                       |
|- - -+---                        Product serial number                    ---|
| n   |                                                                       |
+=============================================================================+


The peripheral qualifier field and the peripheral device type field are
defined in 8.2.5.1.

The page length field specifies the length of the product serial number. 
If the allocation length is too small to transfer all of the page, the
page length shall not be adjusted to reflect the truncation.

The product serial number field contains ASCII data that is vendor-
specific. The least significant ASCII character of the serial number shall
appear as the last byte of a successful data transfer.  If the product
serial number is not available, the target shall return ASCII spaces (20h)
in this field. 


9 Direct-access devices


9.1 Direct-access device model

Direct-access devices store blocks of data for later retrieval.  Each
block of data is stored at a unique logical block address.  An initiator
issues WRITE commands to store the blocks of data (write operations) and
READ commands to retrieve the blocks of data (read operations).  Other
commands issued by the initiator may also cause write and read operations
to occur. A write operation causes a block of data to be written on the
medium.  A read operation causes a block of data to be read from the
medium.  A verify operation confirms that a block of data can be read
without error from the medium.

Blocks of data are stored by a process that causes localized changes or
transitions within the medium.  The changes made to the medium to store
the blocks of data may be volatile (i.e. not retained through a power
cycle) or non-volatile (retained through a power cycle).  The medium may
be divided in parts that are used for data blocks, parts that are reserved
for defect management, and parts that are reserved for use by the
controller for the management of the device.

9.1.1 Removable medium

The medium may be removable (e.g. used in a floppy disk drive) or non-
removable (e.g. used in a hard disk drive).  Removable medium is contained
within a cartridge (or jacket) to prevent damage to the recording
surfaces. The combination of medium and cartridge is often called a
volume.

A volume has an attribute of being mounted or de-mounted on a suitable
transport mechanism.  A volume is mounted when the direct-access device
is capable of performing write or read operations to the medium.  A
mounted volume may not be accessible by an initiator if it is reserved by
another initiator.  A volume is de-mounted at any other time (e.g. during
loading, unloading, or storage).  

An initiator may check whether a volume is mounted by issuing a TEST UNIT
READY command.  A volume that is loaded may need a START STOP UNIT command
issued to become accessible for write or read operations.

The PREVENT ALLOW MEDIUM REMOVAL command allows an initiator to restrict
the demounting of the volume.  This is useful in maintaining system
integrity. If the direct-access device implements cache memory, it must
ensure that all logical blocks of the medium contain the most recent data
prior to permitting demounting of the volume.  If the initiator issues a
START STOP UNIT command to eject the cartridge, and the direct-access
device is prevented from demounting by the PREVENT ALLOW MEDIUM REMOVAL
command, the START STOP unit command is rejected by the direct-access
device.

 Logical blocks

Blocks of data are stored on the medium along with additional information
that the controller uses to manage the storage and retrieval.  The format
of the additional information is unique and is hidden from the initiator
during normal read or write operations.  This additional information is
often used to identify the physical location of the blocks of data and the
address of the logical block, and to provide protection against the loss
of the user data.

The address of the first logical block is zero.  The address of the last
logical block is [n-1], where [n] is the number of logical blocks
available on the medium.  A READ CAPACITY command may be issued to
determine the value of [n-1].  If a command is issued that requests access
to a logical block not within the capacity of the medium, the command is
terminated with CHECK CONDITION. 

The number of bytes of data contained in a logical block is known as the
block length.  Each logical block has a block length associated with it. 
The block length may be different for each logical block on the medium. 
However, in a typical device only one block length is used at a time.  The
block descriptor in the MODE SENSE data describes the block lengths that
are used on the medium.  A MODE SELECT command can be used to set up
extents.  An extent is a specified number of logical blocks that have the
specified block length.  The FORMAT UNIT command is typically required to
change the block length of devices that support variable block lengths and
make the extents that were setup active.

The location of a logical block on the medium does not have a relationship
to the location of any other logical block. However, in a typical device
the logical blocks are located in an ascending order.  The time to access
the logical block at address [x] and then the logical block at address
[x+1] need not be less than time to access [x] and then [x+100].  The READ
CAPACITY with a PMI bit of one is useful in determining where longer
access times occur. 

9.1.3 Ready state

A direct-access device is ready when medium access commands can be
executed.  A device using removable media is usually not ready until a
volume is mounted.  Such a device, with a volume not mounted, normally
returns CHECK CONDITION status and sets the sense key to NOT READY.

Some direct-access devices may be switched from being ready to being not
ready by using the START STOP UNIT command.  An initiator may need to
issue a START UNIT command to bring a device ready.

9.1.4 Initialization

Many direct-access devices require initialization prior to write or read
operations.  This initialization is usually performed by a FORMAT UNIT
command.  Parameters related to the geometry and performance
characteristics can be set with the MODE SELECT command prior to the
format operation.  Some devices are initialized by means not specified in
this International Standard.  The time at which this occurs is specific
to the implementation of the direct-access device.

Devices using a non-volatile medium typically save the parameters and only
need to be initialized once.  However, some mode parameters may need to
be initialized after each power-on and reset.  A catastrophic failure of
the direct-access device may require the FORMAT UNIT command to be
reissued. 

Devices that use a volatile medium may need to be initialized at each
power-on prior to the execution of read or write operations.  Mode
parameters may also need initialization.

9.1.5 Medium defects

Any medium has the potential for defects that can cause user data to be
lost.  Therefore, each logical block may contain information that allows
the detection of changes to the user data caused by defects in the medium
or other phenomena, and may also allow the data to be reconstructed
following the detection of such a change.  Some devices provide the
initiator control through use of the mode parameters.  Some devices allow
the initiator to examine and modify the additional information by using
the READ LONG and WRITE LONG commands.  Some media having a very low
probability of defects may not require these structures.

Defects may also be detected and managed during execution of the FORMAT
UNIT command.  The FORMAT UNIT command defines four sources of defect
information.  These defects may be reassigned or avoided during the
initialization process so that they do not appear in a logical block.

Defects may also be avoided after initialization.  The initiator issues
a REASSIGN BLOCKS command to request that the specified logical block
address be reassigned to a different part of the medium.  This operation
can be repeated if a new defect appears at a later time.  The total number
of defects that may be handled in this manner can be specified in the mode
parameters.

Defect management on direct-access devices is usually vendor-specific. 
Devices not using a removable medium typically optimize the defect
management for capacity or performance or both.  Devices that use a
removable medium typically do not support defect management (e.g. some
floppy disk drives) or use defect management that is based on the ability
to interchange the medium.

9.1.6 Data cache

Some direct-access devices implement cache memory.  A cache memory is
usually an area of temporary storage in the direct-access device with a
fast access time that is used to enhance performance.  It exists
separately from the blocks of data stored and is normally not directly
accessible by the initiator.  Use of cache memory for write or read
operations typically reduces the access time to a logical block and can
increase the overall data throughput.  

During read operations, the direct-access device uses the cache memory to
store blocks of data that the initiator may request at some future time.
The algorithm used to manage the cache memory is not part of this
International Standard.  However, parameters are provided to advise the
direct-access device about future requests, or to restrict the use of
cache memory for a particular request. 

During write operations, the direct-access device uses the cache memory
to store data that is written to the medium at a later time.  This is
called a write-back caching algorithm.  Thus the command may complete
prior to blocks of data being written to the medium.  As a result of using
a write-back caching algorithm there is a period of time when the data may
be lost if a power or a hardware failure occurs.  There is also the
possibility of an error occurring during the write operation.  If an error
occurred during the write, it may be reported as a deferred error on a
later command.  However, the initiator can request write-through caching
to prevent these circumstances from arising. 

When the cache memory fills up with blocks of data that are being kept for
possible future access, new blocks of data that are to be kept must
replace those currently in cache memory.  The disable page out (DPO) bit
is used to control replacement of logical blocks in the cache.  For write
operations, setting this bit to one advises the direct-access device to
not replace existing blocks in the cache memory with the write data.  For
read operations, setting this bit to one causes blocks of data that are
being read to not replace existing ones in the cache memory.

Sometimes the initiator may wish to have the blocks of data read from the
medium instead of from the cache memory.  The force unit access (FUA) bit
is used to indicate that the direct-access device shall access the
physical medium.  For a write operation, setting FUA to one causes the
direct-access device to complete the data write to the physical medium
before completing the command.  For a read operation, setting FUA to one
causes the logical blocks to be retrieved from the physical medium.  

When the DPO and FUA bits are both set to one, write and read operations
bypass the cache memory.

When a VERIFY command is executed, a forced unit access is implied, since
the blocks of data stored on the medium are being verified.  Furthermore,
a SYNCHRONIZE CACHE operation (see below) is also implied to write
unwritten blocks of data still in the cache memory.  These blocks of data
must be stored on the medium before the verify operation can begin.  The
DPO bit is provided since the VERIFY command may cause the replacement of
blocks in the cache.  The above also applies to the WRITE AND VERIFY
command.

Commands may be implemented by the direct-access device that allow the
initiator to control other behaviour of the cache memory:

=      LOCK UNLOCK CACHE controls whether certain logical blocks will be held
       in the data cache for future use.  Locking a logical block prevents
       its replacement by a future access.  Unlocking a logical block exposes
       it to possible replacement by a future access (see 9.2.2).

=      PRE-FETCH causes a set of logical blocks requested by the initiator
       to be read into the data cache for possible future access.  The blocks
       fetched are subject to later replacement unless they are locked (see
       9.2.3).

=      SYNCHRONIZE CACHE forces any pending write data in the requested set
       of logical blocks to be stored in the physical medium.  This command
       can be used to ensure that the data was written and any errors
       reported (see 9.2.18).

=      The MODE SELECT command defines a page for the control of cache
       behavior and handles certain basic elements of cache replacement
       algorithms (see 9.3.3.1).

9.1.7 Reservations

The access enabled or access disabled condition determines when an
initiator may store or retrieve user data on all or part of the medium. 
Access may be restricted for read operations, write operations, or both. 
This attribute may be controlled by an external mechanism or by the
RESERVE and RELEASE commands (see 9.2.12 and 9.2.11).

The RESERVE and RELEASE commands define how different types of restricted
access may be achieved, and to whom the access is restricted.  This
subclause describes the interaction of the initiator that requested the
reservation, and the other initiators.

An initiator uses reservations to gain a level of exclusivity in access
to all or part of the medium for itself or another initiator.  It is
expected that the reservation will be retained until released.  The
direct-access device must ensure that the initiator with the reservation
is able to access the reserved media within the operating parameters
established by that initiator.  

The following paragraphs explain, on a command by command basis, the
appropriate target response when a reservation exists.  Unless otherwise
noted, the appropriate response to an initiator that issues a command to
a direct-access device that is reserved to another initiator is
RESERVATION CONFLICT status.

The CHANGE DEFINITION command is dealt with as follows.  If any initiator
has an extent reservation on a direct-access device, no other initiator
may affect the operating definition of that initiator by use of this
command.  If the direct-access device allows different operating
definitions for each initiator, then there is no conflict; otherwise, a
reservation conflict occurs.

The COMPARE, COPY, and COPY AND VERIFY commands are evaluated for
reservation conflict as if they were normal write and read operations even
when a direct-access device is requested to copy to or from itself.  For
example, if a COPY is issued to logical unit 0 that requests the direct-
access device to copy from logical unit 0 to logical unit 1, access to
logical unit 1 must also be evaluated for conflict.

The FORMAT UNIT, PREVENT ALLOW MEDIUM REMOVAL (with a prevent bit of one),
REZERO UNIT, and START STOP UNIT commands return a RESERVATION CONFLICT
status if any other initiator has an extent reservation on a direct-access
device.

The INQUIRY and REQUEST SENSE commands are not affected by any kind of
reservation.

The LOG SELECT, LOG SENSE, MODE SENSE, TEST UNIT READY, READ CAPACITY (PMI
set to zero), READ BUFFER, WRITE BUFFER, and READ DEFECT DATA commands are
not affected by extent reservations.  

The SEEK, LOCK UNLOCK CACHE, PRE-FETCH, and SYNCHRONIZE CACHE commands are
evaluated for reservation conflict as if they were normal write or read
operations.

The MODE SELECT command is dealt with as follows. If an initiator has an
extent reservation on a direct-access device, and another initiator
attempts one of these commands, a reservation conflict occurs if the
command affects the manner in which access of the extent by the first
initiator is performed.  If the command does not affect access to the
extent, or parameters are saved for each initiator, then a conflict does
not occur. 

The SEND DIAGNOSTIC, RECEIVE DIAGNOSTIC RESULTS commands conflict with an
extent reservation only if they affect access to the extent (as with MODE
SELECT).

The REASSIGN BLOCKS command may not reassign a block that is in an extent
reserved to another initiator.

The SET LIMITS command generates a reservation conflict if the logical
blocks specified are within an extent reserved to another initiator.

ALL other commands are that request read or write operations are evaluated
for reservation conflict as described in the RESERVE command.

When a system is integrated with more than one initiator, there must be
agreement between the initiators as to how media is reserved and released
during operations, otherwise, an initiator may be locked out of access to
a target in the middle of an operation.  For example, initiator 'A' has
a write operation in progress to a direct-access device which has data
stored in cache memory.  Then, initiator 'B' issues a RESERVE command to
the direct-access device.  As a result, initiator 'A' is locked out of
issuing a SYNCHRONIZE CACHE command to ensure the integrity of the data. 
To prevent this from happening, initiator 'A' should issue a RESERVE prior
to the write command.

9.1.8 Seek and rezero

The SEEK command provides a way for the initiator to position the device
in preparation for access to a particular logical block at some later
time.  Since this positioning action is implicit in other commands, the
SEEK command may not be useful with some direct-access devices.

The REZERO UNIT command is provided to bring the direct-access device to
a known condition.  This International Standard does not specify the
condition.  The REZERO UNIT command is used in some devices to position
the actuator at cylinder zero.  Some devices return GOOD status without
attempting any action.

9.1.9 Notched drives

A notched (also called partitioned or zoned) drive has areas of the medium
in which the drive geometry changes.  In the simplest case, the entire
medium consists of a single notch.  Multiple notches are often used to
increase capacity of the drive.  The notch page is used to indicate the
notch for assignment of values to the parameters in the format device
page.  By sequencing the notch page through each notch, the format device
parameters of each notch are set.  This is usually done prior to
initialization by the FORMAT UNIT command.

9.1.10 Rotational position locking

Rotational position locking is an optional feature implemented in some
direct-access devices to allow the synchronization of spindles between a
number of devices.  The rotational position offset feature allows devices
to synchronize spindles at offsets from index.  This may be useful in
improving performance in systems that implement arrays of devices.

9.1.11 Relative addressing

Relative addressing is a technique useful in accessing structured data in
a uniform manner.  Relative addressing is only allowed when commands are
linked.  An example of relative addressing and linking for SEARCH DATA
commands appropriate to direct-access devices is given in 7.4.3.

The SET LIMITS command is provided to define the limits of a linked chain
of relative addressing commands.  This gives an additional protection
against exceeding a particular set of blocks.  The SET LIMITS command has
no effect on any other initiator.

9.1.12 Error reporting

If any of the following conditions occur during the execution of a
command, the target shall return CHECK CONDITION status.  The appropriate
sense key and additional sense code should be set.  The following list
illustrates some error conditions and the applicable sense keys.  The list
does not provide an exhaustive enumeration of all conditions that may
cause the CHECK CONDITION status.

Condition                                                                                Sense key
Invalid logical block address                                                                          ILLEGAL
REQUEST

Unsupported option requested                                                                       ILLEGAL REQUEST

Target reset or medium change since last command from this initiator                                                       
UNIT ATTENTION

Self diagnostic failed                                                                             HARDWARE ERROR

Unrecovered read error                                                                          MEDIUM ERROR or
                                                                                  HARDWARE ERROR

Recovered read error                                                                            RECOVERED ERROR

Overrun or other error that might be resolved by repeating the command                                                     
ABORTED COMMAND

Attempt to write on write protected medium                                                                   DATA
PROTECT


In the case of an invalid logical block address, the sense data
information field shall be set to the logical block address of the first
invalid address.

In the case of an attempt to read a blank or previously unwritten block,
the information field shall be set to the logical block address of the
first blank block encountered.  The data read up to that block shall be
transferred (optical memory and write-once devices only).

In the case of an attempt to write a previously written block when blank
checking is enabled, the information field shall be set to the logical
block address of the first non-blank block encountered (optical memory and
write-once devices only).

9.1.13 Examples

The following examples show some typical variations of the direct-access
device.  Other variations are possible.

9.1.13.1 Rotating media

The typical application of a direct-access device is a disk drive.  The
medium is a disk coated with a material in which flux changes may be
induced.  The disk drive allows direct and random access to the medium. 
This is done with an actuator that positions the read-write head, and a
rotating disk. Data is stored and retrieved through the interaction of the
read-write head and the disk.

The disk is typically divided into cylinders.  Each cylinder is typically
divided into tracks.  Each track is typically divided into sectors.  A
cylinder is a set of tracks that can be accessed without movement of the
actuator.  A track is a recording path over which the read-write head
travels during one rotation of the disk.  A sector is a part of a track
that contains the stored data blocks.

A logical block is stored in one or more sectors, or a sector may store
more than one logical block.  A sector is typically made up of a header,
data and a trailer.  The header contains a preamble used to synchronize
read circuits to the data, an address field to identify the sector, flags
to use for defect management, and a checksum that validates the header. 
The data contains the block of data.  The trailer contains checksum or
error correction information.  The checksum or the error correction
information allows the correction of data for medium defects.

A disk drive is ready when the disks are rotating at the correct speed and
the read-write circuitry is powered and ready to access the disks. Some
disks, particularly removable disks, require the user to issue load or
start commands to bring the disk drive to the ready state.

A disk drive will typically have to be formatted prior to the initial
access.  Exceptions to this are drives that are formatted at the factory
and some optical drives with pre-formatted media (see 13.1).  A disk drive
format will typically create the headers for each sector and initialize
the data field.  The MODE SELECT command is often used at format time to
establish the geometry (number of heads and tracks, sectors per track,
etc.) and defect management scheme.  Disk drives are usually non-volatile.

The defect management scheme of a disk drive is often shielded from the
user, though some aspects can be evaluated and controlled by the
initiator.  The direct-access device will usually reserve some sectors and
tracks for recording defect lists and for reassigning defective blocks. 
The READ LONG and WRITE LONG commands will typically access the user data
and checksum portions of the data field so that defects may be induced by
the initiator to test the defect detection logic of the direct-access
device.

Notches find their most typical use in a rotating disk drive.  On a disk,
the inner tracks are physically shorter than the outer tracks.  As a
result, if each track is made to store the same number of data bits, the
data is packed more densely on the inner tracks than the outer tracks. 
By using notches, the outer tracks may be made to contain a different
number of sectors than the inner tracks, while balancing the data density. 
This results in increased capacity.

9.1.13.2 Sequential media

Some tape devices are implemented as a direct access device so that they
can be used in disk oriented operating system environments.  These devices
are sometimes referred to as random access tape or floppy tape.  These
devices might be thought of as a disk drive with one or more long tracks. 
Access time to a logical block is usually longer than for a disk drive,
since the tape must be fast forwarded or rewound to the block.  As a
result, the SEEK command will often be more useful for a tape than for a
disk.  The only way an initiator may determine if a direct-access device
is a tape is by using the medium type code returned by the MODE SENSE
command.

9.1.13.3 Memory media

Memory media includes devices that are traditionally used for primary
storage within computer systems, such as solid state static or dynamic
random access memories (SRAM or DRAM), or magnetic core or bubble memory. 
These devices are typically non-mechanical, and therefore the entire
physical medium may be accessed in virtually the same access time.  The
data is typically accessed as a bit or byte and this also speeds access
time.  Memory devices typically store less data than disks or tapes, and
are usually volatile when not protected by battery backup.

9.2 Commands for direct-access devices.

The commands for direct-access devices shall be as shown in table 108.

                Table 108 - Commands for direct-access devices
+=====================================-============-======-=============+
|  Command name                       | Operation  | Type | Subclause   |
|                                     |   code     |      |             |
|-------------------------------------+------------+------+-------------|
|  CHANGE DEFINITION                  |    40h     |   O  |   8.2.1     |
|  COMPARE                            |    39h     |   O  |   8.2.2     |
|  COPY                               |    18h     |   O  |   8.2.3     |
|  COPY AND VERIFY                    |    3Ah     |   O  |   8.2.4     |
|  FORMAT UNIT                        |    04h     |   M  |   9.2.1     |
|  INQUIRY                            |    12h     |   M  |   8.2.5     |
|  LOCK-UNLOCK CACHE                  |    36h     |   O  |   9.2.2     |
|  LOG SELECT                         |    4Ch     |   O  |   8.2.6     |
|  LOG SENSE                          |    4Dh     |   O  |   8.2.7     |
|  MODE SELECT(6)                     |    15h     |   O  |   8.2.8     |
|  MODE SELECT(10)                    |    55h     |   O  |   8.2.9     |
|  MODE SENSE(6)                      |    1Ah     |   O  |   8.2.10    |
|  MODE SENSE(10)                     |    5Ah     |   O  |   8.2.11    |
|  PRE-FETCH                          |    34h     |   O  |   9.2.3     |
|  PREVENT-ALLOW MEDIUM REMOVAL       |    1Eh     |   O  |   9.2.4     |
|  READ(6)                            |    08h     |   M  |   9.2.5     |
|  READ(10)                           |    28h     |   M  |   9.2.6     |
|  READ BUFFER                        |    3Ch     |   O  |   8.2.12    |
|  READ CAPACITY                      |    25h     |   M  |   9.2.7     |
|  READ DEFECT DATA                   |    37h     |   O  |   9.2.8     |
|  READ LONG                          |    3Eh     |   O  |   9.2.9     |
|  REASSIGN BLOCKS                    |    07h     |   O  |   9.2.10    |
|  RECEIVE DIAGNOSTIC RESULTS         |    1Ch     |   O  |   8.2.13    |
|  RELEASE                            |    17h     |   M  |   9.2.11    |
|  REQUEST SENSE                      |    03h     |   M  |   8.2.14    |
|  RESERVE                            |    16h     |   M  |   9.2.12    |
|  REZERO UNIT                        |    01h     |   O  |   9.2.13    |
|  SEARCH DATA EQUAL                  |    31h     |   O  |   9.2.14.1  |
|  SEARCH DATA HIGH                   |    30h     |   O  |   9.2.14.2  |
|  SEARCH DATA LOW                    |    32h     |   O  |   9.2.14.3  |
|  SEEK(6)                            |    0Bh     |   O  |   9.2.15    |
|  SEEK(10)                           |    2Bh     |   O  |   9.2.15    |
|  SEND DIAGNOSTIC                    |    1Dh     |   M  |   8.2.15    |
|  SET LIMITS                         |    33h     |   O  |   9.2.16    |
|  START STOP UNIT                    |    1Bh     |   O  |   9.2.17    |
|  SYNCHRONIZE CACHE                  |    35h     |   O  |   9.2.18    |
|  TEST UNIT READY                    |    00h     |   M  |   8.2.16    |
|  VERIFY                             |    2Fh     |   O  |   9.2.19    |
|  WRITE(6)                           |    0Ah     |   O  |   9.2.20    |
|  WRITE(10)                          |    2Ah     |   O  |   9.2.21    |
|  WRITE AND VERIFY                   |    2Eh     |   O  |   9.2.22    |
|  WRITE BUFFER                       |    3Bh     |   O  |   8.2.17    |
|  WRITE LONG                         |    3Fh     |   O  |   9.2.23    |
|  WRITE SAME                         |    41h     |   O  |   9.2.24    |
|-----------------------------------------------------------------------|
|Key:  M = Command implementation is mandatory.                         |
|      O = Command implementation is optional.                          |
+=======================================================================+


The following operation codes are vendor-specific: 02h, 05h, 06h, 09h,
0Ch, 0Dh, 0Eh, 0Fh, 10h, 11h, 13h, 14h, 19h, 20h, 21h, 22h, 23h, 24h, 26h,
27h, 29h, 2Ch, 2Dh and C0h through FFh.  All remaining operation codes for
direct-access devices are reserved for future standardization.

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.


9.2.2 LOCK UNLOCK CACHE command

The LOCK UNLOCK CACHE command (see table 119) requests that the target
disallow or allow logical blocks within the specified range to be removed
from the cache memory by the target's cache replacement algorithm.  Locked
logical blocks may be written to the medium when modified, but a copy of
the modified logical block shall remain in the cache memory.

                    Table 119 - LOCK UNLOCK CACHE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (36h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |         Reserved         |  Lock  | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Number of blocks                         ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


A lock bit of one indicates that any logical block in the specified range
that is currently present in the cache memory shall be locked into cache
memory.  Only logical blocks that are already present in the cache memory
are actually locked.  A lock bit of zero indicates that all logical blocks
in the specified range that are currently locked into the cache memory
shall be unlocked, but not necessarily removed.

A relative address (RelAdr) bit of one indicates that the logical block
address field is a two's complement displacement.  This negative or
positive displacement shall be added to the logical block address last
accessed on the logical unit to form the logical block address for this
command.  This feature is only available when linking commands.  The
feature requires that a previous command in the linked group have accessed
a block of data on the logical unit.

A RelAdr bit of zero indicates that the logical block address field
specifies the first logical block of the range of logical blocks to be
operated on by this command.

The number of blocks specifies the total number of contiguous logical
blocks within the range.  A number of blocks field of zero indicates that
all remaining logical blocks on the logical unit shall be within the
range.  

Multiple locks may be in effect from more than one initiator.  Locks from
different initiators may overlap.  An unlock of an overlapped area does
not release the lock of another initiator.

9.2.3 PRE-FETCH command

The PRE-FETCH command (see table 120) requests that the target transfer
the specified logical blocks to the cache memory.  No data shall be
transferred to the initiator.

                        Table 120 - PRE-FETCH command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (34h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |         Reserved         | Immed  | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                             |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


An immediate (Immed) bit of one indicates that status shall be returned
as soon as the command descriptor block has been validated.  An Immed bit
of zero indicates that status shall be returned after the operation is
complete.

See 9.2.2 for a definition of the RelAdr bit and the logical block address
field.

The transfer length field specifies the number of contiguous logical
blocks of data that shall be transferred to the target's cache memory. 
A transfer length of zero indicates that the contiguous logical blocks up
to and including the last logical block of the logical unit shall be
transferred to the target's cache memory.  Any other value indicates the
number of logical blocks that shall be transferred.  The target may elect
to not transfer logical blocks that already are contained in the cache
memory.

If the Immed bit is zero and the specified logical blocks were
successfully transferred to the cache memory, the target shall return
CONDITION MET status.  If the link bit (see 7.2.7) is one, the target
shall return INTERMEDIATE-CONDITION MET status.

If Immed is one, and the unlocked cache memory has sufficient capacity to
accept all of the specified logical blocks, the target shall return
CONDITION MET status.  If the link bit (see 7.2.7) is one, the target
shall return INTERMEDIATE-CONDITION MET status.

If Immed is one, and the unlocked cache memory does not have sufficient
capacity to accept all of the specified logical blocks, the target shall
return GOOD status.  The target shall transfer to cache memory as many
logical blocks as will fit.  If the link bit (see 7.2.7) is one, the
target shall return INTERMEDIATE status.

9.2.4 PREVENT ALLOW MEDIUM REMOVAL command

The PREVENT ALLOW MEDIUM REMOVAL command (see table 121) requests that the
target enable or disable the removal of the medium in the logical unit. 
This mechanism is independent of device reservations and the target shall
not allow medium removal if any initiator currently has medium removal
prevented.

               Table 121 - PREVENT ALLOW MEDIUM REMOVAL command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (1Eh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                           | Prevent|
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The prevention of medium removal shall begin when any initiator issues a
PREVENT ALLOW MEDIUM REMOVAL command with a prevent bit of one (medium
removal prevented).  The prevention of medium removal for the logical unit
shall terminate:
   a)     after all initiators that have medium removal prevented issue
          PREVENT ALLOW MEDIUM REMOVAL commands with a prevent bit of zero,
          and the target has successfully performed a synchronize cache
          operation;
   b)     upon the receipt of a BUS DEVICE RESET message from any initiator;
          or
   c)     upon a hard RESET condition.

While a prevention of medium removal condition is in effect the target
shall inhibit mechanisms that normally allow removal of the medium by an
operator.

9.2.5 READ(6) command

The READ(6) command (see table 122) requests that the target transfer data
to the initiator.  The most recent data value written in the addressed
logical block shall be returned.  

                         Table 122 - READ(6) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (08h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | (MSB)                                      |
|-----+------------------------------                                      ---|
| 2   |                           Logical block address                       |
|-----+---                                                                 ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                           Transfer length                             |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The cache control bits (see 9.2.6) are not provided for this command. 
Targets with cache memory may have values for the cache control bits that
affect the READ(6) command; however, no default value is defined by this
International Standard.  If explicit control is required, the READ(10)
command should be used.

The logical block address field specifies the logical block at which the
read operation shall begin.

The transfer length field specifies the number of contiguous logical
blocks of data to be transferred.  A transfer length of zero indicates
that 256 logical blocks shall be transferred.  Any other value indicates
the number of logical blocks that shall be transferred.

9.2.6 READ(10) command

The READ(10) command (see table 123) requests that the target transfer
data to the initiator.  The most recent data value written in the
addressed logical block shall be returned. 

                         Table 123 - READ(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (28h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |   FUA  |     Reserved    | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                             |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


A disable page out (DPO) bit of one indicates that the target shall assign
the logical blocks accessed by this command the lowest priority for being
fetched into or retained by the cache.  A DPO bit of one overrides any
retention priority specified in the cache page (see 9.3.3.1).  A DPO bit
of zero indicates the priority shall be determined by the retention
priority fields in the cache page.  All other aspects of the algorithm
implementing the cache memory replacement strategy are not defined by this
International Standard.

   NOTE 107 The DPO bit is used to control replacement of logical blocks in the
   cache memory when the host has information on the future usage of the logical
   blocks.  If the DPO bit is set to one, the host knows the logical blocks
   accessed by the command are not likely to be accessed again in the near
   future and should not be put in the cache memory nor retained by the cache
   memory.  If the DPO bit is zero, the host expects that logical blocks
   accessed by this command are likely to be accessed again in the near future.

A force unit access (FUA) bit of one indicates that the target shall
access the media in performing the command prior to returning GOOD status. 
 Read commands shall access the specified logical blocks from the media
(i.e.  the data is not directly retrieved from the cache).  In the case
where the cache contains a more recent version of a logical block than the
media, the logical block shall first be written to the media.  Write
commands shall not return GOOD status until the logical blocks have
actually been written on the media (i.e. the data is not write cached). 

An FUA bit of zero indicates that the target may satisfy the command by
accessing the cache memory.  For read operations, any logical blocks that
are contained in the cache memory may be transferred to the initiator
directly from the cache memory.  For write operations, logical blocks may
be transferred directly to the cache memory.  GOOD status may be returned
to the initiator prior to writing the logical blocks to the medium.  Any
error that occurs after the GOOD status is returned is a deferred error,
and information regarding the error is not reported until a subsequent
command.

See 9.2.2 for a definition of the RelAdr bit and the logical block address
field.

The transfer length field specifies the number of contiguous logical
blocks of data that shall be transferred.  A transfer length of zero
indicates that no logical blocks shall be transferred.  This condition
shall not be considered an error.  Any other value indicates the number
of logical blocks that shall be transferred.

9.2.7 READ CAPACITY command

The READ CAPACITY command (see table 124) provides a means for the
initiator to request information regarding the capacity of the logical
unit.

                      Table 124 - READ CAPACITY command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (25h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |             Reserved              | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                           |  PMI   |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


See 9.2.2 for a definition of the RelAdr bit and the logical block address
field.

The logical block address shall be zero if the PMI bit is zero.  If the
PMI bit is zero and the logical block address is not zero, the target
shall return a CHECK CONDITION status, the sense key shall be set to
ILLEGAL REQUEST and the additional sense code set to ILLEGAL FIELD IN CDB.

A partial medium indicator (PMI) bit of zero indicates that the returned
logical block address and the block length in bytes are those of the last
logical block on the logical unit.  

A PMI bit of one indicates that the returned logical block address and
block length in bytes are those of the logical block address after which
a substantial delay in data transfer will be encountered.  This returned
logical block address shall be greater than or equal to the logical block
address specified by the RelAdr and logical block address fields in the
command descriptor block.  

   NOTE 108 This function is intended to assist storage management software in
   determining whether there is sufficient space on the current track, cylinder,
   etc., to contain a frequently accessed data structure, such as a file
   directory or file index, without incurring an access delay.

The READ CAPACITY data (see table 125) shall be sent during the DATA IN
phase of the command.

                        Table 125 - READ CAPACITY data
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|- - -+---                        Returned logical block address           ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|- - -+---                        Block length In bytes                    ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


9.2.8 READ DEFECT DATA command

The READ DEFECT DATA command (see table 126) requests that the target
transfer the medium defect data to the initiator.
                     Table 126 - READ DEFECT DATA command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (37h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+--------------------------+--------------------------------------------|
| 2   |          Reserved        | Plist  | Glist  | Defect list format       |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Allocation length                           |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


If the target is unable to access any medium defect data, it shall
terminate the command with CHECK CONDITION status.  The sense key shall
be set to either MEDIUM ERROR, if a medium error occurred, or NO SENSE,
if the list does not exist; and the additional sense code shall be set to
DEFECT LIST NOT FOUND.

   NOTE 109 Some targets may not be able to return medium defect data until
   after a FORMAT UNIT command has been completed successfully.

A primary defect list (Plist) bit of one request that the target return
the primary list of defects.  A Plist bit of zero requests that the target
not return the primary list of defects.

A grown defect list (Glist) bit of one request that the target return the
grown defect list.  A Glist bit of zero requests that the target not
return the grown defect list.

A Plist bit of one and a Glist bit of one requests that the target return
the primary and the grown defect lists.  The  order in which the lists are 
returned is vendor-specific.  Whether the lists are merged or not is
vendor-specific. 

A Plist bit of zero and a Glist bit of zero requests that the target
return only the defect list header.

The defect list format field is used by the initiator to indicate the
preferred format for the defect list.  This field is intended for those
targets capable of returning more than one format, as defined in the
FORMAT UNIT command (see 9.2.1.2, defect list format).  A target unable
to return the requested format shall return the defect list in its default
format (see the defect list format field in the defect list header below).

If the requested defect list format and the returned defect list format
are not the same, the target shall transfer the defect data and then
terminate the command with CHECK CONDITION status.  The sense key shall
be set to RECOVERED ERROR and the additional sense code shall be set to
DEFECT LIST NOT FOUND. 

The READ DEFECT DATA defect list (see table 127) contains a four-byte
header, followed by zero or more defect descriptors.

                   Table 127 - READ DEFECT DATA defect list
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 1   |          Reserved        | Plist  | Glist  | Defect list format       |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Defect list length                          |
| 3   |                                                                 (LSB) |
|=====+=======================================================================|
|     |                           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   |                                                                       |
+=============================================================================+


A Plist bit of one indicates that the data returned contains the primary
defect list.  A Plist bit of zero indicates that the data returned does
not contain the primary defect list.

A Glist bit of one indicates that the data returned contains the grown
defect list.  A Glist bit of zero indicates that the data returned does
not contain the grown defect list.

The defect list format field indicates the format of the defect
descriptors returned by the target.  This field is defined in the FORMAT
UNIT command (see 9.2.1.2).

   NOTE 110 The use of the block format is not recommended. There is no
   universal model that sensibly defines the meaning of the logical block
   address of a defect.  In the usual case, a defect that has been reassigned
   no longer has a logical block address.

Defect descriptors returned in the block format are vendor-specific. 
Defect descriptors returned in the physical sector format may or may not
include defects in areas not accessible to the initiator.  Defect
descriptors returned in bytes-from-index format shall comprise a complete
list of defects.  A complete list of defects may include defects in areas
not within the capacity returned in the READ CAPACITY command.

The defect list length field specifies the length in bytes of the defect
descriptors that follow.  The defect list length is equal to four or eight
times the number of defect descriptors, depending on the format of the
returned descriptors (see 9.2.1.1).

If the allocation length is insufficient to transfer all of the defect
descriptors, the defect list length shall not be adjusted to reflect the
truncation.  The target shall not create CHECK CONDITION status.  The
initiator is responsible for comparing the defect list length and the
allocation length to ensure that a partial list was not received.

   NOTE 111 The initiator may determine the length of the defect list by sending
   the READ DEFECT DATA command with an allocation length of   four.  The target
   will return the defect list header that contains the length of the defect
   list.

The defect descriptors may or may not be sent in ascending order.  The
initiator may determine the exact number of defects by dividing the defect
list length by the length of a single defect descriptor for the returned
format.

9.2.9 READ LONG command

The READ LONG command (see table 128) requests that the target transfer
data to the initiator.  The data passed during the READ LONG command is
vendor-specific, but shall include the data bytes and the ECC bytes
recorded on the medium.  The most recent data written in the addressed
logical block shall be returned.

                        Table 128 - READ LONG command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (3Eh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |  Logical unit number      |        Reserved         | CORRCT | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Byte transfer length                        |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


   NOTE 112 Any other bytes that can be corrected by ECC should be included
   (e.g. data synchronization mark within the area covered by ECC).  It is not
   important for the ECC bytes to be at the end of the data bytes; however, they
   should be in the same order as they are on the media.

A corrected (CORRCT) bit of zero causes a logical block to be read without
any correction made by the target.  A CORRCT bit of one causes the data
to be corrected by ECC before being transferred to the initiator.

See 9.2.2 for a definition of the RelAdr bit and the logical block address
field.

The byte transfer length field should specify exactly the number of bytes
of data that are available for transfer.  If a non-zero byte transfer
length does not exactly match the available data length, the target shall
terminate the command with CHECK CONDITION status, the sense key shall be
set to ILLEGAL REQUEST and an additional sense code set to INVALID FIELD
IN CDB.  The valid and ILI bits shall be set to one and the information
field shall be set to the difference (residue) of the requested length
minus the actual length in bytes.  Negative values shall be indicated by
two's complement notation.  

A byte transfer length of zero indicates that no bytes shall be
transferred and shall not be considered an error.  

9.2.10 REASSIGN BLOCKS command

The REASSIGN BLOCKS command (see table 129) requests the target to
reassign the defective logical blocks to another area on the medium set
aside for this purpose.  The target should also record the location of the
defective logical blocks to the grown defect list if such a list is
supported.  More than one physical or logical block may be relocated by
each defect descriptor sent by the initiator.  This command does not alter
the contents or location of the Plist (see 9.2.1, FORMAT UNIT command).

                     Table 129 - REASSIGN BLOCKS command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (07h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The initiator transfers a defect list that contains the logical block
addresses to be reassigned.  The target shall reassign the physical medium
used for each logical block address in the list.  The data contained in
the logical blocks specified in the defect list may be altered, but the
data in all other logical blocks on the medium shall be preserved.

   NOTE 113 The effect of specifying a logical block to be reassigned that
   previously has been reassigned is to reassign the block again.  Over the life
   of the medium, a logical block can be assigned to multiple physical addresses
   until no more spare locations remain on the medium.

The REASSIGN BLOCKS defect list (see table 130) contains a four-byte
header followed by one or more defect descriptors.  The length of each
defect descriptor is four bytes.

                   Table 130 - REASSIGN BLOCKS defect list
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 1   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Defect list length                       ---|
| 3   |                                                                 (LSB) |
|=====+=======================================================================|
|     |                        Defect descriptor(s)                           |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|- - -+---                     Defect logical block address                ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
|     |                                  .                                    |
|     |                                  .                                    |
|-----+-----------------------------------------------------------------------|
| 0   | (MSB)                                                                 |
|- - -+---                     Defect logical block address                ---|
| 3   |                                                                 (LSB) |
+=============================================================================+

The defect list length field specifies the total length in bytes of the
defect descriptors that follow.  The defect list length is equal to four
times the number of defect descriptors and does not include the defect
list header length.

The defect descriptor specifies a four-byte defect logical block address
that contains the defect.  The defect descriptors shall be in ascending
order.

If the logical unit has insufficient capacity to reassign all of the
logical blocks specified in the defect descriptors, the command shall
terminate with CHECK CONDITION status, the sense key shall be set to
HARDWARE ERROR and the additional sense code set to NO DEFECT SPARE
LOCATION AVAILABLE.  

If the logical unit is unable to successfully complete a REASSIGN BLOCKS
command, the command shall terminate with CHECK CONDITION status with the
appropriate sense information.  The logical block address of the first
defect descriptor not reassigned shall be returned in the command-specific
information field of the sense data.  If information about the first
defect descriptor not reassigned is not available, or if all the defects
have been reassigned, this field shall be set to FFFFFFFFh.

If the REASSIGN BLOCKS command failed due to an unexpected unrecoverable
read error that would cause the loss of data in a block not specified in
the defect list, the logical block address of the unrecoverable block
shall be returned in the information field of the sense data and the valid
bit shall be set to one.

   NOTE 114 If the REASSIGN BLOCKS command returns CHECK CONDITION status and
   the sense data command-specific information field contains a valid logical
   block address, the initiator should remove all defect descriptors from the
   defect list prior to the one returned in the command-specific information
   field. If the sense key is MEDIUM ERROR and the valid bit is one (the
   information field contains the valid block address) the initiator should
   insert that new defective logical block address into the defect list and
   reissue the REASSIGN BLOCKS command with the new defect list.  Otherwise, the
   initiator should perform any corrective action indicated by the sense data
   and then reissue the REASSIGN BLOCKS command with the new defect list.

9.2.11 RELEASE command

The RELEASE command (see table 131) is used to release a previously
reserved logical unit, or, if the extent release option is implemented,
to release previously reserved extents within a logical unit.

                         Table 131 - RELEASE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (17h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | 3rdPty | Third party device ID    | Extent |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reservation identification                  |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The RESERVE and RELEASE commands provide the basic mechanism for
contention resolution in multiple-initiator systems.  A reservation may
only be released by the initiator that made it.  It is not an error for
an initiator to attempt to release a reservation that is not currently
valid, or is held by another initiator.  In this case, the target shall
return GOOD status without altering any other reservation.

   NOTE 115 The reservation queuing option in X3.131-1986 has been removed from
   SCSI-2.

9.2.11.1 Logical unit release

Implementation of logical unit release is mandatory.  If the extent bit
is zero, this command shall cause the target to terminate all non-third-
party logical unit and extent reservations that are active from the
initiator to the specified logical unit.  The reservation ID field in the
command descriptor block is ignored by the target.

9.2.11.2 Extent release

Implementation of extent release is optional.  If the extent bit is one
and the extent release option is not implemented, then the RELEASE command
shall be terminated with CHECK CONDITION status and the sense key shall
be set to ILLEGAL REQUEST.  This option shall be implemented if the extent
reservation option (see 9.2.12.2) is implemented.

If the extent bit is one and the extent release option is implemented,
this command shall cause any reservation from the requesting initiator
with a matching reservation identification to be terminated.  Other
reservations from the requesting initiator shall remain in effect.

9.2.11.3 Third-party release

Implementation of third-party release is mandatory. Third-party release
allows an initiator to release a logical unit or extents within a logical
unit that were previously reserved using third-party reservation (see
9.2.12.3).  Third-party release shall be implemented and is intended for
use in multiple-initiator systems that use the COPY command.

If the third-party (3rdPty) bit is zero, then a third-party release is not
requested.  If the 3rdPty bit is one then the target shall release the
specified logical unit or extents, but only if the reservation was made
using a third-party reservation by the initiator that is requesting the
release for the same SCSI device as specified in the third-party device
ID field.

If the 3rdPty bit is one the target shall not modify the mode parameters
for commands received from the third-party device even if the target
implements the transfer of mode parameters with a third-party RESERVE
command.

   NOTE 116 If a target implements independent storage of mode parameters for
   each initiator, a third-party RESERVE command copies the current mode
   parameters for the initiator that sent the RESERVE command to the current
   mode parameters for the initiator specified as the third-party device
   (usually a copy master device).  A unit attention condition notifies the
   third-party of the changed mode parameters due to the reservation.  A
   successful third-party RELEASE command  does not return the third-party
   devices' current mode parameters back to their previous values.  The third-
   party device can issue MODE SENSE and MODE SELECT commands to query and
   modify the mode parameters.   

9.2.12 RESERVE command

The RESERVE command (see table 132) is used to reserve a logical unit or,
if the extent reservation option is implemented, extents within a logical
unit.

                         Table 132 - RESERVE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (16h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | 3rdPty | Third party device ID    | Extent |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reservation identification                  |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|-----+---                        Extent list length                       ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The RESERVE and RELEASE commands provide the basic mechanism for
contention resolution in multiple-initiator systems.  The third-party
reservation allows logical units or extents to be reserved for another
specified SCSI device.

   NOTE 117 The reservation queuing option in X3.131-1986 has been removed from
   SCSI-2.

9.2.12.1 Logical unit reservation

Implementation of logical unit reservation is mandatory.  If the extent
bit is zero, this command shall request that the entire logical unit be
reserved for the exclusive use of the initiator until the reservation is
superseded by another valid RESERVE command from the initiator that made
the reservation or until released by a RELEASE command from the same
initiator that made the reservation, by a BUS DEVICE RESET message from
any initiator, by a hard RESET condition, or by a power on cycle.  A
logical unit reservation shall not be granted if the logical unit or any
extent is reserved by another initiator.  It shall be permissible for an
initiator to reserve a logical unit that is currently reserved by that
initiator.  If the extent bit is zero, the reservation identification and
the extent list length shall be ignored.

If the logical unit, or any extent within the logical unit is reserved for
another initiator, the target shall return RESERVATION CONFLICT status. 


If, after honouring the reservation, any other initiator attempts to
perform any command on the reserved logical unit other than an INQUIRY,
REQUEST SENSE, PREVENT ALLOW MEDIUM REMOVAL (with a prevent bit of zero),
or a RELEASE command the command shall be rejected with RESERVATION
CONFLICT status.

9.2.12.2 Extent reservation

Implementation of extent reservation is optional.  The reservation
identification field provides a means for an initiator to identify each
extent reservation.  This allows an initiator in a multiple tasking
environment, to have multiple reservations outstanding.  The reservation
identification is used in the RELEASE command to specify which reservation
is to be released.  It is also used in superseding RESERVE commands to
specify which reservation is to be superseded.

If the extent reservation option is implemented, then the extent release
option (see 9.2.11.2) shall also be implemented.  These options permit
multiple extents within the logical unit to be reserved, each with a
separate reservation type.

If the extent bit is one, and the extent reservation option is
implemented, then the target shall process the reservation request as
follows:
   a)     The extent list shall be checked for the number of extents in the
          reservation request.  If the extent list length is zero, no current
          reservations shall be changed, no new reservations shall be created,
          and this condition shall not be treated as an error.  If the extent
          list contains more extents than are supported on the logical unit,
          the command shall be terminated with CHECK CONDITION status and the
          sense key shall be set to ILLEGAL REQUEST.  If the extent list
          contains more extents than are currently available on the logical
          unit, then the target shall return a RESERVATION CONFLICT status. 
   b)     The extent list shall be checked for valid extent logical block
          addresses.  If any logical block address is invalid for this logical
          unit, the command shall be terminated with CHECK CONDITION status
          and the sense key shall be set to ILLEGAL REQUEST.  The extent list
          shall be checked for invalid extent overlaps (as defined by
          reservation type) with other extent descriptors in the extent list
          and if invalid overlaps are found, the command shall be terminated
          with CHECK CONDITION status and the sense key shall be set to
          ILLEGAL REQUEST.
   c)     If the requested reservation does not conflict with an existing
          reservation, the extents specified shall be reserved until
          superseded by another valid RESERVE command from the initiator that
          made the reservation or until released by a RELEASE command from the
          same initiator, by a BUS DEVICE RESET message from any initiator,
          or by a hard RESET condition.  If either of the last two conditions
          occur, the next command from each initiator shall be terminated with
          CHECK CONDITION status and the sense key shall be set to UNIT
          ATTENTION.
   d)     If the reservation request conflicts with an existing reservation,
          then the target shall return a RESERVATION CONFLICT status.

If the extent bit is one, and the extent reservation option is not
implemented, then the RESERVE command shall be rejected with CHECK
CONDITION status and the sense key shall be set to ILLEGAL REQUEST.

The size of the extent list shall be defined by the extent list length
field.  The extent list shall consist of zero or more descriptors as shown
in table 133.  Each extent descriptor defines an extent beginning at the
specified logical block address for the specified number of blocks.  If
the number of blocks is zero, the extent shall begin at the specified
logical block address and continue through the last logical block address
on the logical unit.

                Table 133 - Data format of extent descriptors
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+============================================+========+=================|
| 0   |               Reserved                     | RelAdr | Reservation type|
|-----+-----------------------------------------------------------------------|
| 1   | (MSB)                                                                 |
|- - -+---                        Number of blocks                         ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|- - -+---                        Logical block address                    ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


The reservation type field shall define the type of reservation in effect
for the extent.  The types of reservation are defined in table 134.

                        Table 134 - Reservation types
+====================-=====================+
| Reservation type   |  Description        |
|--------------------+---------------------|
|        00b         |  Read shared        |
|        01b         |  Write exclusive    |
|        10b         |  Read exclusive     |
|        11b         |  Exclusive access   |
+==========================================+

a)     Read exclusive.  While this reservation is active, no other initiator
       shall be permitted read operations to the indicated extent.  This
       reservation shall not inhibit write operations from any initiator or
       conflict with a write exclusive reservation; however, read exclusive,
       exclusive access, and read shared reservations that overlap this
       extent shall conflict with this reservation.

b)     Write exclusive.  While this reservation is active, no other initiator
       shall be permitted write operations to the indicated extent.  This
       reservation shall not inhibit read operations from any initiator or
       conflict with a read exclusive reservation from any initiator.  This
       reservation shall conflict with write exclusive, exclusive access, and
       read shared reservations that overlap this extent.

c)     Exclusive access.  While this reservation is active, no other
       initiator shall be permitted any access to the indicated extent.  All
       reservation types that overlap this extent shall conflict with this
       reservation.

d)     Read shared.  While this reservation is active, no write operations
       shall be permitted by any initiator to the indicated extent.  This
       reservation shall not inhibit read operations from any initiator or
       conflict with a read shared reservation.  Read exclusive, write
       exclusive, and exclusive access reservations that overlap with this
       extent shall conflict with this reservation.

If the relative address bit is one, the logical block address in the
extent descriptor shall be treated as a two's complement displacement. 
This displacement shall be added to the logical block address last
accessed on the logical unit to form the logical block address for this
extent.  This feature is only available when linking commands and requires
that a previous command in the linked group has accessed a logical block
on the logical unit; if not, the RESERVE command shall be terminated with
CHECK CONDITION status and the sense key shall be set to ILLEGAL REQUEST.

If an initiator attempts a command to a logical block that has been
reserved and that access is prohibited by the reservation, the command
shall not be performed and the command shall be terminated with a
RESERVATION CONFLICT status.  If a reservation conflict precludes any part
of the command, none of the command shall be performed.  COPY commands
shall be terminated with CHECK CONDITION status and the sense key shall
be set to DATA PROTECT if any part of the copy operation is prohibited by
an active reservation.  If any extent in a logical unit is reserved in any
way, by any initiator, a FORMAT UNIT command shall be rejected with a
RESERVATION CONFLICT status.

9.2.12.3 Third-party reservation 

Implementation of third-party reservation is mandatory.  The third-party
reservation for the RESERVE command allows an initiator to reserve a
logical unit or extents within a logical unit for another SCSI device. 
This is intended for use in multiple-initiator systems that use the COPY
command.  Third-party reservation is required. 

If the third-party (3rdPty) bit is zero, then a third-party reservation
is not requested.  If the 3rdPty bit is one then the target shall reserve
the specified logical unit or extents for the SCSI device specified in the
third-party device ID field.  The target shall preserve the reservation
until it is superseded by another valid RESERVE command from the initiator
that made the reservation or until it is released by the same initiator,
by a BUS DEVICE reset message from any initiator, or a hard reset
condition.  The target shall ignore any attempt to release the reservation
made by any other initiator.

If independent sets of parameters are implemented, a third party
reservation shall cause the target to transfer the set of parameters in
effect for the initiator of the RESERVE command to the parameters used for
commands from the third party device.  Any subsequent command issued by
the third-party device is executed according to the mode parameters in
effect for the initiator that sent the RESERVE command.

   NOTE 118 This transfer of the mode parameters is applicable to target devices
   which store mode information independently for different initiators.  This
   mechanism allows an initiator to set the mode parameters of a target for the
   use of a copy master (i.e. the third-party device).  The third-party copy
   master may subsequently issue a MODE SELECT command to modify the mode
   parameters.

9.2.12.4 Superseding reservations

Implementation of superseding reservations is mandatory.  An initiator
that holds a current reservation (unit or extent) may modify that
reservation by issuing another RESERVE command (unit or extent) to the
same logical unit.  The superseding RESERVE command shall release the
previous reservation state (unit or extent) when the new reservation
request is granted.  If the superseding reservation is for an extent
reservation and the current reservation is also an extent reservation, the
current extent reservation identification value is used for the
superseding reservation.  The current reservation shall not be modified
if the superseding reservation request cannot be granted.  If the
superseding reservation cannot be granted because of conflicts with a
previous reservation (other than the reservation being superseded), then
the target shall return RESERVATION CONFLICT status.  

   NOTE 119 Superseding reservations allow the SCSI device ID to be changed on
   a reservation using the third-party reservation option.  This capability is
   necessary for certain situations when using COMPARE, COPY, and COPY AND
   VERIFY commands.

9.2.13 REZERO UNIT command

The REZERO UNIT command (see table 135) requests that the target set the
logical unit to a specific state.  See vendor specifications for details.

                       Table 135 - REZERO UNIT command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (01h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


9.2.14 SEARCH DATA commands

The SEARCH DATA commands (see table 136) search one or more logical blocks
for equality or inequality to a data pattern.  The concept of records
within a logical block is used to allow multiple records within a logical
block to be searched.

                       Table 136 - SEARCH DATA commands
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (31h 30h 32h)                |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | Invert |     Reserved    | SpnDat | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Number of blocks to search               ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The invert bit determines whether the search condition is to be inverted. 
See 9.2.14.1 through 9.2.14.3 for a description of the search conditions
for the individual SEARCH DATA commands.

A spanned data (SpnDat) bit of zero indicates that each record shall be
wholly contained within a single block.  Any space at the end of a block
that is smaller than the record length is ignored by the SEARCH DATA
commands.   A SpnDat bit of one indicates that records span block
boundaries (i.e.  record may start in one block and end in the next or a
subsequent block.

The number of blocks to search field specifies the maximum number of
contiguous logical blocks to be searched.  A value of zero indicates that
no logical blocks shall be searched. This condition shall not be
considered an error.  Any other value indicates the maximum number of
logical blocks that shall be searched.

A link bit (see 7.2.7) of zero indicates a non-linked command and if the
search is satisfied, the command shall be terminated with a CONDITION MET
status.  A REQUEST SENSE command can then be issued to determine the
logical block address and record offset of the matching record.  If the
search is not satisfied and no error occurs, the command shall be
terminated with GOOD status.

A link bit (see 7.2.7) of one indicates a command is linked to the SEARCH
DATA command and if the search is satisfied, INTERMEDIATE-CONDITION MET
status is returned and the next command is executed.  If the RelAdr bit
in the next command is one, the logical block address of the next command
is used as a displacement from the logical block address at which the
search was satisfied.  If a linked search is not satisfied, the command
is terminated with CHECK CONDITION status.  A REQUEST SENSE command may
then be issued.

A REQUEST SENSE command following a satisfied SEARCH DATA command shall:
   a)     return a sense key of EQUAL if the search was satisfied by an exact
          match.  If the search was satisfied by an inequality then a sense
          key of NO SENSE shall be returned.
   b)     return the valid bit set to one.
   c)     return the logical block address of the logical block containing the
          first matching record in the information field.
   d)     return the record offset of the matching record in the command-
          specific information field.

A REQUEST SENSE command following a SEARCH DATA command that is not
satisfied shall:
   a)     return a sense key of NO SENSE, if no errors occurred during the
          command execution.
   b)     return the valid bit set to zero.

The SEARCH DATA parameter list (see table 137) contains a fourteen-byte
header, followed by one or more search argument descriptors. 

                    Table 137 - SEARCH DATA parameter list
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|- - -+---                        Logical record length                    ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|- - -+---                        First record offset                      ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|- - -+---                        Number of records                        ---|
| 11  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 12  | (MSB)                                                                 |
|-----+---                        Search argument length                   ---|
| 13  |                                                                 (LSB) |
|=====+=======================================================================|
|     |                        Search argument descriptor(s)                  |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|- - -+---                        Displacement                             ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Pattern length                           ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                                                                       |
|-----+---                        Pattern                                  ---|
| n   |                                                                       |
+=============================================================================+


The logical record length field specifies the record length in bytes.

The first record offset field specifies the number of bytes that shall be
ignored in the first logical block before the search begins.  If the value
of the first record offset field shall is larger than the logical block
length the target shall terminate the command with a CHECK CONDITION
status, set the sense key to ILLEGAL REQUEST and set the additional sense
code to INVALID FIELD IN PARAMETERS LIST.  Subsequent logical blocks shall
be searched beginning with the first byte in the logical block.  This
permits one or more records to be skipped initially.

The number of records field specifies the maximum number of records that
shall be searched by this command.  An search shall terminate when the
search pattern is found or when the number of records is exhausted or when
the number of blocks to search is exhausted.

The search argument length field specifies the length in bytes of all the
search argument descriptors that follow.  

   NOTE 120 Since the pattern length can vary, there is no fixed multiple of the
   search argument descriptor to determine the search argument length.

The search argument descriptors specify one or more search conditions to
execute within a single record in order to satisfy the search.  Each
search argument descriptor is made up of a displacement field, a pattern
length field, and a pattern field.

The displacement field specifies the displacement in bytes of the first
byte of the data to be compared from the start of the logical record.

The pattern length field specifies the length in bytes of the pattern that
follows.

The pattern field specifies the data to compare to the logical record.

9.2.14.1 SEARCH DATA EQUAL command

The SEARCH DATA EQUAL command (see table 136, operation code 31h) shall
be satisfied by the first logical record searched that contains data that
satisfies all of the search argument descriptor(s).  If the invert bit in
the command descriptor block is zero, the search argument descriptor(s)
shall be satisfied by data in the logical record being equal to the data
in the pattern.  If the invert bit is one, the search argument
descriptor(s) shall be satisfied by data in the logical record being not
equal to the data in the pattern.  (See 9.2.14.)

9.2.14.2 SEARCH DATA HIGH command

The SEARCH DATA HIGH command (see table 136, operation code 30h) shall be
satisfied by the first logical record searched that contains data that
satisfies all of the search argument descriptor(s).  If the invert bit in
the command descriptor block is zero, the search argument descriptor(s)
shall be satisfied by data in the logical record being greater than the
data in the pattern.  If the invert bit is one, the search argument
descriptor(s) shall be satisfied by data in the logical record being less
than or equal to the data in the pattern.  (See 9.2.14.)

9.2.14.3 SEARCH DATA LOW command

The SEARCH DATA LOW command (see table 136, operation code 32h) shall be
satisfied by the first logical record searched that contains data that
satisfies all of the search argument descriptor(s).  If the invert bit in
the command descriptor block is zero, the search argument descriptor(s)
shall be satisfied by data in the logical record being less than the data
in the pattern.  If the invert bit is one, the search argument
descriptor(s) shall be satisfied by data in the logical record being
greater than or equal to the data in the pattern.  (See 9.2.14.)

9.2.15 SEEK(6) and SEEK(10) commands

The SEEK(6) (see table 138) and SEEK(10) (see table 139) commands request
that the logical unit seek to the specified logical block address.

                         Table 138 - SEEK(6) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (0Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | (MSB)                                      |
|-----+-------------------------------                                     ---|
| 2   |                           Logical block address                       |
|-----+---                                                                 ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


                         Table 139 - SEEK(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


9.2.16 SET LIMITS command

The SET LIMITS command (see table 140) defines the range within which
subsequent linked commands may operate.  A second SET LIMITS command may
not be linked to a chain of commands in which a SET LIMITS command has
already been issued.

                        Table 140 - SET LIMITS command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (33h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |         Reserved         | RdInh  | WrInh  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Number of blocks                         ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The read inhibit (RdInh) bit of one indicates that read operations within
the range shall be inhibited.  

A write inhibit (WrInh) bit of one indicates that write operations within
the range shall be inhibited.

The logical block address field specifies the starting address for the
range.

The number of blocks field specifies the number of logical blocks within
the range.  A number of blocks of zero indicates that the range shall
extend to the last logical block on the logical unit.

Any attempt to access outside of the restricted range or any attempt to
perform an inhibited operation within the restricted range shall not be
performed.  The command shall be terminated with CHECK CONDITION status
and the sense key shall be set to DATA PROTECT.  A second SET LIMITS
command within a linked list of commands shall be rejected with CHECK
CONDITION status and the sense key shall be set to DATA PROTECT.

9.2.17 START STOP UNIT command

The START STOP UNIT command (see table 141) requests that the target
enable or disable the logical unit for media access operations.

                     Table 141 - START STOP UNIT command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (1Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved         | Immed  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                  |  LoEj  |  Start |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


An immediate (Immed) bit of one indicates that status shall be returned
as soon as the command descriptor block has been validated.  An Immed bit
of zero indicates that status shall be returned after the operation is
completed. 

A load eject (LoEj) bit of zero requests that no action be taken regarding
loading or ejecting the medium.  A LoEj bit of one requests that the
medium shall be unloaded if the start bit is zero.  A LoEj bit of one
requests that the medium is to be loaded if the start bit is one.

A start bit of one requests the logical unit be made ready for use.  A
start bit of zero requests that the logical unit be stopped (media cannot
be accessed by the initiator).

Targets that contain cache memory shall implicitly perform a SYNCHRONIZE
CACHE command for the entire medium prior to executing the STOP UNIT
command.

9.2.18 SYNCHRONIZE CACHE command

The SYNCHRONIZE CACHE command (see table 142) ensures that logical blocks
in the cache memory, within the specified range, have their most recent
data value recorded on the physical medium.  If a more recent data value
for a logical block within the specified range exists in the cache memory
than on the physical medium, then the logical block from the cache memory
shall be written to the physical medium.  Logical blocks are not
necessarily removed from the cache memory as a result of the synchronize
cache operation.

                    Table 142 - SYNCHRONIZE CACHE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (35h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number       |         Reserved        | Immed  | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Number of blocks                         ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


An immediate (Immed) bit of one indicates that the target shall return
status as soon as the command descriptor block has been validated.  An
Immed bit of zero indicates that the status shall not be returned until
the operation has been completed. If the Immed bit is one and the target
does not support it then the command shall terminate 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 CDB.

See 9.2.2 for a definition of the RelAdr bit and the logical block address
field.

The number of blocks field specifies the total number of contiguous
logical blocks within the range.  A number of blocks of zero indicates
that all remaining logical blocks on the logical unit shall be within the
range.  

A logical block within the specified range that is not in cache memory is
not considered an error.

9.2.19 VERIFY command

The VERIFY command (see table 143) requests that the target verify the
data written on the medium.

                          Table 143 - VERIFY command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Fh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |Reserved|Reserved| BytChk | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Verification length                         |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


If the MODE SELECT command is implemented, and the verify error recovery
parameters page is also implemented, then the current settings in that
page specifies the verification error criteria. If the verify error
recovery parameters page is not implemented, then the verification
criteria is vendor-specific. 

A byte check (BytChk) bit of zero causes a medium verification to be
performed with no data comparison.  A BytChk bit of one causes a byte-by-
byte compare of data written on the medium and the data transferred from
the initiator.  If the compare is unsuccessful for any reason, the target
shall return CHECK CONDITION status with the sense key set to MISCOMPARE.

See 9.2.2 for a definition of the RelAdr bit and the logical block address
field.

The verification length field specifies the number of contiguous logical
blocks of data that shall be verified.  A transfer length of zero
indicates that no logical blocks shall be verified.  This condition shall
not be considered as an error.  Any other value indicates the number of
logical blocks that shall be verified.

See 9.2.6 for a description of the cache control bit (DPO).

9.2.20 WRITE(6) command

The WRITE(6) command (see table 144) requests that the target write the
data transferred by the initiator to the medium.  

                         Table 144 - WRITE(6) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (0Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | (MSB)                                      |
|-----+------------------------------                                      ---|
| 2   |                           Logical block address                       |
|-----+---                                                                 ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                           Transfer length                             |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The cache control bits (see 9.2.6) are not provided for this command. 
Targets with cache memory may have values for the cache control bits which
may affect the WRITE(6) command, however no default value is defined by
this International Standard.  If explicit control is required, the
WRITE(10) command should be used.

The logical block address field specifies the logical block at which the
write operation shall begin.

The transfer length field specifies the number of contiguous logical
blocks of data to transferred.  A transfer length of zero indicates that
256 logical blocks shall be transferred.  Any other value indicates the
number of logical blocks that shall be transferred.

9.2.21 WRITE(10) command

The WRITE(10) command (see table 145) requests that the target write the
data transferred by the initiator to the medium.

                        Table 145 - WRITE(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |   DPO  |   FUA  |Reserved|Reserved| RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                             |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


See READ(10) command (9.2.6) for a definition of the cache control bits
(DPO and FUA).

See 9.2.2 for a definition of the RelAdr bit and the logical block address
field.

The transfer length field specifies the number of contiguous logical
blocks of data that shall be transferred.  A transfer length of zero
indicates that no logical blocks shall be transferred.  This condition
shall not be considered an error and no data shall be written.  Any other
value indicates the number of logical blocks that shall be transferred.

9.2.22 WRITE AND VERIFY command

The WRITE AND VERIFY command (see table 146) requests that the target
write the data transferred from the initiator to the medium and then
verify that the data is correctly written. The data is only transferred
once from the initiator to the target.

                     Table 146 - WRITE AND VERIFY command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Eh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |Reserved|Reserved| BytChk | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                             |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


If the MODE SELECT command is implemented, and the verify error recovery
page is also implemented (see 9.3.3.8), then the current settings in that
page along with the AWRE bit from the read-write error recovery page
specify the verification error criteria. If these pages are not
implemented, then the verification criteria is vendor-specific.

A byte check (BytChk) bit of zero requests a medium verification to be
performed with no data comparison.  A BytChk bit of one requests a byte-
by-byte compare of data written on the medium and the data transferred
from the initiator.  If the compare is unsuccessful for any reason, the
target shall return CHECK CONDITION status with the sense key set to
MISCOMPARE.

See 9.2.2 for a definition of the RelAdr bit and the logical block address
field.

See WRITE(10) command (see 9.2.21) for a definition of the transfer length
field.

See 9.2.6 for a description of the cache control bit (DPO).

   NOTE 121 The WRITE AND VERIFY command specifically states that the data are
   not to be transferred twice (i.e. once for the write pass, and once for the
   verify pass) when performing a byte compare.  If there is a need for two
   transfers to occur (e.g. to ensure the integrity of the path to the media),
   then the initiator should issue a WRITE command with a LINK bit of one
   followed by a VERIFY command with a BytCmp bit of one, transferring the same
   data on each command.

9.2.23 WRITE LONG command

The WRITE LONG command (see table 147) requests that the target write the
data transferred by the initiator to the medium.  The data passed during
the WRITE LONG command is implementation specific, but shall include the
data bytes and the ECC bytes.  

                        Table 147 - WRITE LONG command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (3Fh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |              Reserved             | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Byte transfer length                        |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


   NOTE 122 Any other bytes that can be corrected by ECC should be included
   (e.g. a data synchronization mark within the area covered by ECC). The READ
   LONG command is usually issued before issuing a WRITE LONG command. The WRITE
   LONG data should be the same length and in the same order as the data
   returned by the READ LONG command.

See 9.2.2 for a definition of the RelAdr bit and the logical block address
field.

The byte transfer length field should specify the number of bytes of data
that the target would return for the READ LONG command.  If a non-zero
byte transfer length does not exactly match the data length the target
would return for the READ LONG command, then the target shall terminate
the command with CHECK CONDITION status and a sense key of ILLEGAL REQUEST
and an additional sense code of INVALID FIELD IN CDB. The ILI and valid
bits shall be set to one and the information field shall be set to the
difference (residue) of the requested length minus the actual length in
bytes. Negative values shall be indicated by two's complement notation. 
A transfer length of zero indicates that no bytes shall be transferred and
shall not be considered an error.

9.2.24 WRITE SAME command

The WRITE SAME command (see table 148) requests that the target write the
single block of data transferred by the initiator to the medium multiple
times.

                        Table 148 - WRITE SAME command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (41h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |     Reserved    | PBdata | LBdata | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Number of blocks                            |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


   NOTE 123 This command is useful if large areas of the medium need to be
   written, prepared for certification, or otherwise initialized without the
   initiator having to transfer all the data.

A logical block data (LBdata) bit of one requests that the target replace
the first four bytes of the data to be written to the current logical
block with the logical block address of the block currently being written.

A physical block data (PBdata) bit of one requests that the target replace
the first eight bytes of the data to be written to the current physical
sector with the physical address of the sector currently being written
using the physical sector format (see 9.2.1.1).

If PBdata and LBdata are one the command shall be terminated with CHECK
CONDITION status.  The sense key shall be set to ILLEGAL REQUEST.

See 9.2.2 for a definition of the RelAdr bit and the logical block address
field.

The number of blocks field specifies the number of contiguous logical
blocks to be written.  A number of blocks field of zero requests that all
the remaining logical blocks on the medium be written.


9.3 Parameters for direct-access devices


9.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic parameters
used with direct-access devices. 

The diagnostic page codes for direct-access devices are defined in table
149.

                      Table 149 - Diagnostic page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     00h     |  Supported diagnostic pages                      |  8.3.1.1   |
|     40h     |  Translate address page                          |  9.3.1.1   |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|  41h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+


9.3.1.1 Translate address page - SEND DIAGNOSTIC 

The translate address page allows the initiator to translate a logical
block address, physical sector address or physical bytes from index
address into any one of the other formats.  The address to be translated
is passed to the target with the SEND DIAGNOSTIC command and the results
are returned to the initiator by the RECEIVE DIAGNOSTIC RESULTS command. 
The format of the translate address page - SEND DIAGNOSTIC is shown in
table 150.  The translated address is returned in the translate address
page - RECEIVE DIAGNOSTIC RESULTS (see 9.3.1.2).

             Table 150 - Translate address page - SEND DIAGNOSTIC
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Page code (40h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Page length (000Ah)                      ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                   Reserved                 |     Supplied format      |
|-----+--------------------------------------------+--------------------------|
| 5   |                   Reserved                 |     Translate format     |
|-----+-----------------------------------------------------------------------|
| 6   |                                                                       |
|- - -+---                        Address to translate                     ---|
| 13  |                                                                       |
+=============================================================================+


The supplied format field specifies the format of address to translate
field.  Valid values for this field are defined in the FORMAT UNIT command
(see 9.2.1).  If the target does not support the requested format it shall
terminate the SEND DIAGNOSTIC command with CHECK CONDITION status.  The
sense key shall be set to ILLEGAL REQUEST and an additional sense code
shall be set to INVALID FIELD IN PARAMETER LIST.

The translate format field specifies which format the initiator would like
the address to be translated to.  Valid values for this field are defined
in the FORMAT UNIT command (see 9.2.1).  If the target does not support
the requested format it shall terminate the command with CHECK CONDITION
status.  The sense key shall be set to ILLEGAL REQUEST and an additional
sense code shall be set to INVALID FIELD IN PARAMETER LIST.

The address to translate field contains a single address the initiator is
requesting the target to translate.  The format of this field depends on
the value in the supplied format field.  The formats are described in
9.2.1.1.  If the logical block format is specified the block address shall
be in the first four bytes of the field with the remaining bytes set to
zero.

9.3.1.2 Translate address page - RECEIVE DIAGNOSTIC 

The translate address page allows the initiator to translate a logical
block address, physical sector address, or physical bytes from index
address into any one of the other formats.  The address to be translated
is passed to the target with the SEND DIAGNOSTIC command and the results
are returned to the initiator by the RECEIVE DIAGNOSTIC RESULTS command. 
The translated address is returned in the translate address page - RECEIVE
DIAGNOSTIC (see table 151).

           Table 151 - Translate address page - RECEIVE DIAGNOSTIC
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
| 0    |                           Page code (40h)                             |
|------+-----------------------------------------------------------------------|
| 1    |                           Reserved                                    |
|------+-----------------------------------------------------------------------|
| 2    | (MSB)                                                                 |
|------+---                        Page length                              ---|
| 3    |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
| 4    |                   Reserved                 |     Supplied format      |
|------+--------------------------------------------+--------------------------|
| 5    | RAREA  | ALTSEC | ALTTRK |     Reserved    |     Translated format    |
|======+=======================================================================|
|      |                          Translated addresses                         |
|======+=======================================================================|
| 6    |                                                                       |
|- - --+---                        Translated address 1                     ---|
| 13   |                                                                       |
|------+-----------------------------------------------------------------------|
|      |                                 .                                     |
|      |                                 .                                     |
|------+-----------------------------------------------------------------------|
| n    |                                                                       |
|- - --+---                        Translated address x (if required)       ---|
| n+7  |                                                                       |
+==============================================================================+


The translate address page contains a four byte page header which
specifies the page code and length followed by two bytes which describe
the translated address followed by zero or more translated address(s).

The page length field contains the number of parameter bytes which follow.

The supplied format field contains the value from the SEND DIAGNOSTIC
command supplied format field (see 9.3.1.1).

A reserved area (RAREA) bit of one indicates that all or part of the
translated address falls within a reserved area of the medium (e.g. speed
tolerance gap, alternate sector, vendor reserved area, etc.).  If the
entire translated address falls within a reserved area the target may not
return a translated address.  An RAREA bit of zero indicates that no part
of the translated address falls within a reserved area of the medium.

An alternate sector (ALTSEC) bit of one indicates that the translated
address is physically located in an alternate sector of the medium.  If
the target cannot determine if all or part of the translated address is
located in an alternate sector it shall set this bit to zero.  An ALTSEC
bit of zero indicates that no part of the translated address is located
in an alternate sector of the medium or that the target is unable to
determine this information.

An alternate track (ALTTRK) bit of one indicates that part or all of the
translated address is located on an alternate track of the medium or the
target cannot determine if all or part of the translated address is
located on an alternate track.  An ALTTRK bit of zero indicates that no
part of the translated address is located on an alternate track of the
medium.

The translated format field contains the value from the SEND DIAGNOSTIC
command translate format field (see 9.3.1.1).

The translated address field contains the address(s) the target translated
from the address supplied by the initiator in the SEND DIAGNOSTIC command.
This field shall be in the format specified in the translate format field.
The different formats are described in 9.2.1.1.  If the logical block
format is specified the block address shall be in the first four bytes of
the field and the remaining bytes shall be set to zero.

If the returned data is in the logical block or physical sector format and
the address to be translated covers more than one address after it has
been translated (e.g. accounting for speed tolerance or multiple physical
sectors within a single logical block or multiple logical blocks within
a single physical sector) the target shall return all possible addresses
which are contained in the area specified by the address to be translated.

If the returned data is in bytes from index format the target shall return
a pair of translated values for each of the possible addresses which are
contained in the area specified by the address to translate field.  Of the
pair of translated values returned, the first indicates the starting
location and the second the ending location of the area.

9.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters used
with direct-access devices. 

The log page codes for direct-access devices are defined in table 152.

                          Table 152 - Log page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |  8.3.2.1   |
|     03h     |  Error counter page (read) page                  |  8.3.2.2   |
|     05h     |  Error counter page (verify) page                |  8.3.2.2   |
|     02h     |  Error counter page (write) page                 |  8.3.2.2   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|     06h     |  Non-medium error page                           |  8.3.2.    |
|     00h     |  Supported log pages                             |  8.3.2.5   |
|     04h     |  Reserved                                        |            |
|  08h - 2Fh  |  Reserved                                        |            |
|     3Fh     |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific pages                           |            |
+=============================================================================+


9.3.3 Mode parameters

This subclause defines the descriptors and pages for mode parameters used
with direct-access devices. 

The mode parameter list, including the mode parameter header and mode
block descriptor are described in 8.3.3.

The medium-type code field is contained in the mode parameter header (see
8.3.3).  Table 153 defines this field for direct-access devices.

                 Table 153 - Direct-access medium-type codes
+=======-=====================================================================+
|  Code |                                                                     |
| value |                        Medium type                                  |
|-------+---------------------------------------------------------------------|
|  00h  |  Default medium type (currently mounted medium type)                |
|  01h  |  Flexible disk, single-sided; unspecified medium                    |
|  02h  |  Flexible disk, double-sided; unspecified medium                    |
|       |                                                                     |
|       |                     Flexible disks                                  |
|       |  Diameter    Bit density  Track density  Number     ANSI reference  |
|       |  mm (in)     Bits/radian   /mm (/in)     of sides      standard     |
|       | ----------  -----------  -------------  --------  ----------------  |
|  05h  | 200 (8,0)      6 631        1,9 (48)        1      ANSI X3.73-1980  |
|  06h  | 200 (8,0)      6 631        1,9 (48)        2          (Note 1)     |
|  09h  | 200 (8,0)     13 262        1,9 (48)        1            None       |
|  0Ah  | 200 (8,0)     13 262        1,9 (48)        2      ANSI X3.121-1984 |
|  0Dh  | 130 (5,25)     3 979        1,9 (48)        1      ANSI X3.82-1980  |
|  12h  | 130 (5,25)     7 958        1,9 (48)        2      ANSI X3.125-1985 |
|  16h  | 130 (5,25)     7 958        3,8 (96)        2      ANSI X3.126-1986 |
|  1Ah  | 130 (5,25)    13 262        3,8 (96)        2      ISO DIS8630-1985 |
|  1Eh  |  90 (3,5)      7 958        5,3 (135)       2        ANSI X3.137    |
|       |                                                        (Note 2)     |
|       |             Direct-access magnetic yapes                            |
|       |  Width               Density      ANSI reference                    |
|       |  mm (in)     Tracks  ftpmm (ftpi)    standard                       |
|       | ----------  ------  ------------  --------------                    |
|  40h  | 6,3 (0,25)    12    394 (10 000)      Note 1                        |
|  44h  | 6,3 (0,25)    24    394 (10 000)      Note 1                        |
|-----------------------------------------------------------------------------|
|  Code values 80h - FFh are vendor-specific.  All remaining code values      |
|  are reserved.                                                              |
|-----------------------------------------------------------------------------|
|  NOTES                                                                      |
|   1  See annex c for additional standards information.                      |
|   2  This standard is under development.  Please contact the secretariat    |
|      for current information on status and availability.                    |
+=============================================================================+


The device specific parameter field (see table 154) is contained in the
mode parameter header (see 8.3.3).

                    Table 154 - Device specific parameter
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|=====+========+=================+========+===================================|
|     |   WP   |     Reserved    | DPOFUA |             Reserved              |
+=============================================================================+


When used with the MODE SELECT command the write protect (WP) bit is not
defined.

When used with the MODE SENSE command a WP bit of zero indicates that the
medium is write enabled.  A WP bit of one indicates that the medium is
write protected.

When used with the MODE SELECT command, the DPOFUA bit is not used and the
field is reserved.

When used with the MODE SENSE command, a DPOFUA bit of one indicates that
the target supports the DPO and FUA bits (see 9.2.6).  When used with the
MODE SENSE command, a DPOFUA bit of zero indicates that the target does
not support the DPO and FUA bits.

The density code field is contained in the mode parameter block descriptor
(see 7.3.3).  This field is reserved for direct-access devices.

The mode page codes for direct-access devices are shown in table 155.

                         Table 155 - Mode page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     08h     |  Caching page                                    |  9.3.3.1   |
|     0Ah     |  Control mode page                               |  8.3.3.1   |
|     02h     |  Disconnect-reconnect page                       |  8.3.3.2   |
|     05h     |  Flexible disk page                              |  9.3.3.2   |
|     03h     |  Format device page                              |  9.3.3.3   |
|     0Bh     |  Medium types supported page                     |  9.3.3.4   |
|     0Ch     |  Notch and partition page                        |  9.3.3.5   |
|     09h     |  Peripheral device page                          |  8.3.3.3   |
|     01h     |  Read-write error recovery page                  |  9.3.3.6   |
|     04h     |  Rigid disk geometry page                        |  9.3.3.7   |
|     07h     |  Verify error recovery page                      |  9.3.3.8   |
|     06h     |  Reserved                                        |            |
|  0Dh - 1Fh  |  Reserved                                        |            |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+


For direct-access devices, if the notch page is not supported, or if the
active notch field in the notch page is zero then each page descriptor
specifies mode parameters for the target to use for subsequent operations
on the specified logical unit.  If the notch page is supported, and the
active notch is not zero, then each page descriptor specifies parameters
for the target to use for subsequent operations on the disk notch
specified by the current value of the active notch field on the specified
logical unit.

9.3.3.1 Caching page 

The caching parameters page (see table 156) defines the parameters that
affect the use of the cache.

                           Table 156 - Caching page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|        Page code (08h)                              |
|-----+-----------------------------------------------------------------------|
| 1   |                          Page length (0Ah)                            |
|-----+-----------------------------------------------------------------------|
| 2   |                          Reserved          |  WCE   |   MF   |  RCD   |
|-----+-----------------------------------------------------------------------|
| 3   |   Demand read retention priority  |     Write retention priority      |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                       Disable pre-fetch transfer length         ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                       Minimum pre-fetch                         ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|-----+---                       Maximum pre-fetch                         ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  | (MSB)                                                                 |
|-----+---                       Maximum pre-fetch ceiling                 ---|
| 11  |                                                                 (LSB) |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE command. 
This bit is reserved with the MODE SELECT command.  A PS bit of one
indicates that the target is capable of saving the page in a non-volatile
vendor-specific location.  If the PS is set to one in MODE SENSE data then
the page shall be savable by issuing a MODE SELECT command with SP set to
one.

A write cache enable (WCE) bit of zero specifies that the target shall
return GOOD status for a WRITE command after successfully writing all of
the data to the medium.  A WCE bit of one specifies that the target may
return GOOD status for a WRITE command after successfully receiving the
data and prior to having successfully written it to the medium.

A multiplication factor (MF) bit of zero specifies that the target shall
interpret the minimum and maximum pre-fetch fields in terms of the number
of logical blocks for each of the respective types of pre-fetch.  An MF
bit of one specifies that the target shall interpret the minimum and
maximum pre-fetch fields to be specified in terms of a scaler number
which, when multiplied by the number of logical blocks to be transferred
for the current command, yields the number of logical blocks for each of
the respective types of pre-fetch.

A read cache disable (RCD) bit of zero specifies that the target may
return data requested by a READ command by accessing either the cache or
media.  A RCD bit of one specifies that the target shall transfer all of
the data requested by a READ command from the medium (i.e. data cannot be
transferred from the cache).

The demand read retention priority field (see table 157) advises the
target on the retention priority to assign data read into the cache that
has also been transferred from the target to the initiator.

             Table 157 - Demand read and write retention priority
+===========-=================================================================+
|   Value   |  Description                                                    |
|-----------+-----------------------------------------------------------------|
|     0h    |  Indicates the target should not distinguish between retaining  |
|           |  the indicated data and data placed into the cache memory by    |
|           |  other means (e.g. pre-fetch).                                  |
|           |                                                                 |
|     1h    |  Demand read retention priority:  Data put into the cache via a |
|           |  READ command should be replaced sooner (has lower priority)    |
|           |  than data placed into the cache by other means (e.g.           |
|           |  pre-fetch).                                                    |
|           |                                                                 |
|           |  Write retention priority:  Data put into the cache during a    |
|           |  WRITE or WRITE AND VERIFY command should be replaced sooner    |
|           |  (has lower priority) than data placed into the cache by other  |
|           |  means (e.g. pre-fetch).                                        |
|           |                                                                 |
|     Fh    |  Demand read retention priority:  Data put into the cache via a |
|           |  READ command should not be replaced if there is other data in  |
|           |  the cache that was placed into the cache by other means (e.g.  |
|           |  pre-fetch) and it may be replaced (i.e. it is not locked).     |
|           |                                                                 |
|           |  Write retention priority:  Data put into the cache during a    |
|           |  WRITE or WRITE AND VERIFY command should not be replaced if    |
|           |  there is other data in the cache that was placed into the cache|
|           |  by other means (e.g. pre-fetch) and it may be replaced (i.e.   |
|           |  it is not locked).                                             |
|           |                                                                 |
|  2h - Eh  |  Reserved                                                       |
+=============================================================================+


The write retention priority field (see table 157) advises the target on
the retention priority to assign data written into the cache that has also
been transferred from the cache memory to the medium.

An anticipatory pre-fetch occurs when data is placed in the cache that has
not been requested.  This usually happens in conjunction with the reading
of data that has been requested.  All the following parameters give an
indication to the target how it should manage the cache based on the last
READ command.  An anticipatory pre-fetch may occur based on other
information. All the remaining caching parameters are only recommendations
to the target and should not cause a CHECK CONDITION to occur if the
target cannot satisfy the request.

The disable pre-fetch transfer length field specifies the selective
disabling of anticipatory pre-fetch on long transfer lengths.  The value
in this field is compared to the number of blocks requested by the current
READ command.  If the number of blocks is greater than the disable pre-
fetch transfer length, then an anticipatory pre-fetch is not done for the
command.  Otherwise the target should attempt an anticipatory pre-fetch. 
If the pre-fetch disable transfer length is set to zero, then all
anticipatory pre-fetching is disabled for any request for data, including
those for zero logical blocks.

The minimum pre-fetch field indicates either a number of blocks or a
scaler multiplier of the transfer length, depending upon the setting of
the MF bit.  In either case, the resulting number of blocks is the number
to pre-fetch regardless of the delays it might cause in executing
subsequent commands.

The pre-fetching operation begins at the logical block immediately after
the last logical block of the previous READ command.  Pre-fetching shall
always halt before the end of the media.  Errors that occur during the
pre-fetching operation shall not be reported to the initiator unless that
target cannot, as a result of the error, execute subsequent commands
correctly.  In this case the error may be reported either immediately as
an error for the current READ command, or as a deferred error, at the
discretion of the target and according to the rules for reporting deferred
errors.

If pre-fetch has read more than the amount of data indicated by the
minimum pre-fetch then pre-fetching should be terminated whenever another
command is ready to execute.  This consideration is ignored when the
minimum pre-fetch is equal to the maximum pre-fetch. 

The maximum pre-fetch field indicates either a number of blocks or a
scaler multiplier of the transfer length, depending upon the setting of
the MF bit.  In either case, the resulting number of blocks is the number
to pre-fetch if there are no delays in executing subsequent commands.

The maximum pre-fetch field contains the maximum amount of data to pre-
fetch into the cache as a result of one READ command.  It is used in
conjunction with the disable pre-fetch transfer length and maximum pre-
fetch ceiling parameters to trade off pre-fetching new data with
displacing old data already stored in the cache.

The maximum pre-fetch ceiling field specifies an upper limit on the number
of logical blocks computed as the maximum pre-fetch.  If this number of
blocks is greater than the maximum pre-fetch, then the number of logical
blocks to pre-fetch shall be truncated to the value stored in the maximum
pre-fetch ceiling field.

   NOTE 124 If the MF bit is one the maximum pre-fetch ceiling field is useful
   in limiting the amount of data to be pre-fetched.

9.3.3.2 Flexible disk page

The flexible disk page (see table 158) contains parameters for control and
reporting of flexible disk drive parameters.

                        Table 158 - Flexible disk page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (05h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length in bytes (1Eh)                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Transfer rate                            ---|
| 3   |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 4   |                           Number of heads                             |
|-----+-----------------------------------------------------------------------|
| 5   |                           Sectors per track                           |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                     Data bytes per sector                      ----|
| 7   |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|-----+---                       Number of cylinders                       ---|
| 9   |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 10  | (MSB)                                                                 |
|-----+---                Starting cylinder-write precompensation             |
| 11  |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 12  | (MSB)                                                                 |
|-----+---                Starting cylinder-reduced write current             |
| 13  |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 14  | (MSB)                                                                 |
|-----+---                       Drive step rate                           ---|
| 15  |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 16  |                          Drive step pulse width                       |
|-----+-----------------------------------------------------------------------|
| 17  | (MSB)                                                                 |
|-----+---                       Head settle delay                         ---|
| 18  |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 19  |                          Motor on delay                               |
|-----+-----------------------------------------------------------------------|
| 20  |                          Motor off delay                              |
|-----+-----------------------------------------------------------------------|
| 21  | TRDY   |   SSN  |   MO   |            Reserved                        |
|-----+-----------------------------------------------------------------------|
| 22  |            Reserved               |               SPC                 |
|-----+-----------------------------------------------------------------------|
| 23  |                          Write compensation                           |
|-----+-----------------------------------------------------------------------|
| 24  |                          Head load delay                              |
|-----+-----------------------------------------------------------------------|
| 25  |                          Head unload delay                            |
|-----+-----------------------------------------------------------------------|
| 26  |             Pin 34                |               Pin 2               |
|-----+-----------------------------------+-----------------------------------|
| 27  |             Pin 4                 |               Pin 1               |
|-----+-----------------------------------------------------------------------|
| 28  |                                                                       |
|-----+---                       Medium rotation rate                      ---|
| 29  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 30  |                          Reserved                                     |
|-----+-----------------------------------------------------------------------|
| 31  |                          Reserved                                     |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE command. 
This bit is reserved with the MODE SELECT command.  A PS bit of one
indicates that the target is capable of saving the page in a non-volatile
vendor-specific location.

   NOTE 125 This page is mainly intended for defining parameters of flexible
   disk drives, but may be used for other devices, if applicable.

The transfer rate indicates the data rate of the peripheral device.  See
table 159 for examples of common transfer rates.

                    Table 159 - Examples of transfer rates
+=========-==============================+
|  Value  |  Transfer rate               |
|---------+------------------------------|
|  00FAh  |  250 kbit/s transfer rate    |
|  012Ch  |  300 kbit/s transfer rate    |
|  01F4h  |  500 kbit/s tranfer rate     |
|  03E8h  |  1 mbit/s transfer rate      |
|  07D0h  |  2 mbit/s transfer rate      |
|  1388h  |  5 mbit/s transfer rate      |
+========================================+


The number of heads field specifies the number of heads used for reading
and writing data on the medium.  Heads used exclusively for servo
information are excluded.

The sectors per track field specifies the number of sectors per revolution
per head.

The data bytes per sector field specifies the number of bytes of data per
sector that an initiator can read or write.

The number of cylinders field specifies the number of cylinders used for
data storage. 

The starting cylinder for write precompensation field specifies the
cylinder at which write precompensation is to begin.  Cylinders are
numbered starting with zero.  If the starting cylinder for write
precompensation is equal to the value in the number of cylinders field,
write precompensation shall be disabled by the target.  

The starting cylinder for reduced write current field specifies cylinder
at which write current is reduced.  Cylinders are numbered starting with
zero.  If the starting cylinder for reduced write current is equal to the
value in the number of cylinders field, reduced write current shall be
disabled by the target.  

The drive step rate field specifies the step rate in units of 100 us. 
This value may be rounded as defined in 7.5.4.  A value of zero requests
the target to set its default value.

The drive step pulse width field specifies the width of the step pulse in
microseconds.  This value may be rounded as defined in 7.5.4.  A value of
zero requests the target to set its default value.

The head settle delay field specifies the head settle time in units of 100
us.  This value may be rounded as defined in 7.5.4.  A value of zero
requests the target to set its default value.

If a true ready signal is not available, the motor on delay field
specifies in tenths of a second the time that the target shall wait before
attempting to access the medium after the motor on signal is asserted. 
If a true ready signal is available, the motor on delay field specifies
in tenths of a second the time that the target shall wait for drive ready
status before aborting an attempt to access the medium.  This value may
be rounded as defined in 7.5.4.  

The motor off delay field specifies in tenths of a second the time that
the target shall wait before releasing the motor on signal after an idle
condition exists.  A value of FFh indicates that the motor on signal shall
not be released.  The START STOP UNIT command is not affected by this
parameter. This value may be rounded as defined in 7.5.4.  

A true ready (TRDY) bit of one specifies that a signal is provided that
indicates the medium is ready to be accessed.

A start sector number (SSN) bit of one specifies that sectors are numbered
starting with one.  An SSN bit of zero specifies that sectors are numbered
starting with zero.

A motor on (MO) bit of one specifies that pin 16 (motor on) shall remain
released.  This bit shall be set to one when using high capacity (192
tracks per inch) drives and their pre-formatted diskettes.  An MO bit of
zero indicates that pin 16 (motor on) shall be asserted.

The step pulse per cylinder (SPC) field is used to specify the number of
additional step pulses required per cylinder.  Non-zero values allow a
drive to read a diskette formatted on a drive with a lower number of
tracks per inch.  For example, a value of one allows a 96 track-per-inch
drive to access tracks on a diskette that was formatted for 48 tracks per
inch.

The write compensation field is used to specify the amount of write
compensation to be used starting at the cylinder specified in the starting
cylinder for write precompensation field.  The correlation of any values
used in this field to actual write precompensation time values is vendor-
specific.  If a zero is specified in this field the target shall use its
default write precompensation value.  This value may be rounded as defined
in 7.5.4.  

The head load delay field specifies the head loading time in milliseconds. 
This value may be rounded as defined in 7.5.4.  A value of zero requests
the target to set its default value.

The head unload delay field specifies the head unloading time in
milliseconds.  This value may be rounded as defined in 7.5.4.  A value of
zero requests the target to set its default value.

The Pin 34 field defines the usage of pin 34 of the flexible disk drive
interface.  This use of this pin varies among vendors and drives.  The
settings allow the initiator to select how pin 34 shall be used by the
interface.  See table 160.

                           Table 160 - Pin 34 field
+==============-==============================================================+
| Bit 7 6 5 4  |  Description of pin 34 use                                   |
|--------------+--------------------------------------------------------------|
|     P 0 0 0  |  Open                                                        |
|     P 0 0 1  |  Ready                                                       |
|     P 0 1 0  |  Disk changed                                                |
|-----------------------------------------------------------------------------|
|  NOTES                                                                      |
|   1  P is a polarity bit, where 0 is active low and 1 is active high.       |
|   2  All undefined values are reserved.                                     |
+=============================================================================+


The pin 4 field defines the usage of pin 4 of the flexible disk drive
interface.  This use of this pin varies among drive vendors and drives. 
 The settings allow the initiator to specify how pin 4 shall be used by
the interface.  See table 161.

                           Table 161 - Pin 4 field
+==============-==============================================================+
| Bit 7 6 5 4  |  Description of pin 4 use                                    |
|--------------+--------------------------------------------------------------|
|     P 0 0 0  |  Open                                                        |
|     P 0 0 1  |  In use                                                      |
|     P 0 1 0  |  Eject                                                       |
|     P 0 0 0  |  Head load                                                   |
|-----------------------------------------------------------------------------|
|  NOTES                                                                      |
|   1  P is a polarity bit, where 0 is active low and 1 is active high.       |
|   2  All undefined values are reserved.                                     |
+=============================================================================+


The pin 1 field defines the usage of pin 1 of the flexible disk drive
interface.  This use of this pin varies among vendors and drives.  The
settings allow the initiator to specify how pin 1 shall be used by the
interface.  See table 162.

                           Table 162 - Pin 34 field
+==============-==============================================================+
| Bit 7 6 5 4  |  Description of pin 34 use                                   |
|--------------+--------------------------------------------------------------|
|     P 0 0 0  |  Open                                                        |
|     P 0 0 1  |  Disk change reset                                           |
|-----------------------------------------------------------------------------|
|  NOTES                                                                      |
|   1  P is a polarity bit, where 0 is active low and 1 is active high.       |
|   2  All undefined values are reserved.                                     |
+=============================================================================+


The medium rotation rate field specifies the speed at which the medium
rotates.  The unit of measure is rotations per minute (e.g. 2 400 rpm). 
This field cannot be changed by a MODE SELECT command.

9.3.3.3 Format device page

The format device page (see table 163) contains parameters which specify
the medium format.

                        Table 163 - Format device page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|            Page code (03h)                          |
|-----+-----------------------------------------------------------------------|
| 1   |                              Page length (16h)                        |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                  Tracks per zone                                ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                  Alternate sectors per zone                     ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                  Alternate tracks per zone                      ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|-----+---                  Alternate tracks per logical unit              ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  | (MSB)                                                                 |
|-----+---                  Sectors per track                              ---|
| 11  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 12  | (MSB)                                                                 |
|-----+---                  Data bytes per physical sector                 ---|
| 13  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 14  | (MSB)                                                                 |
|-----+---                  Interleave                                     ---|
| 15  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 16  | (MSB)                                                                 |
|-----+---                  Track skew factor                              ---|
| 17  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 18  | (MSB)                                                                 |
|-----+---                  Cylinder skew factor                           ---|
| 19  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 20  |  SSEC  |  HSEC  |  RMB   |  SURF  |             Reserved              |
|-----+-----------------------------------------------------------------------|
| 21  |                                                                       |
|- - -+---                  Reserved                                       ---|
| 23  |                                                                       |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE command. 
This bit is reserved with the MODE SELECT command.  A PS bit of one
indicates that the target is capable of saving the page in a non-volatile
vendor-specific location.

   NOTE 126 If the initiator changes any of the current physical parameters
   defined below, the target may not be able to access the media until a FORMAT
   UNIT command has been successfully completed.

If the defect handling format parameters (tracks per zone, alternate
sectors per zone, alternate tracks per zone and alternate tracks per
logical unit) requested by the initiator are not supported by the target 
the target may round these fields to acceptable values as described in
7.5.4.  

The tracks per zone field specifies the number of tracks per zone to use
in dividing the capacity of the device for the purpose of allocating
alternate sectors.  A value of zero means that one zone is defined for the
entire device.  The last zone on the device might not contain the same
number of tracks as the previous zone(s).  

The alternate sectors per zone field specifies the number of sectors per
zone the target shall reserve for defect handling.  The target shall de-
allocate these sectors from the initiator addressable blocks during the
FORMAT UNIT command.  If the notch page is implemented and the ND bit of
the notch page is one and the active notch field of the notch page is
zero, then a value of zero indicates that no alternate sectors shall be
reserved.  Otherwise, a value of zero indicates that the number of
alternate sectors is target specific.

The alternate tracks per zone field specifies the number of tracks per
zone the target shall reserve for defect handling.  The target shall de-
allocate these tracks from the initiator addressable blocks during the
FORMAT UNIT command.  If the notch page is implemented and the ND bit of
the notch page is one and the active notch field of the notch page is
zero, then a value of zero indicates that no alternate tracks shall be
reserved.  Otherwise, a value of zero indicates that the number of
alternate tracks is target specific.

The alternate tracks per logical unit field specifies the number of tracks
per logical unit the target shall reserve for defect handling. The target
shall de-allocate these tracks from the initiator addressable blocks
during the FORMAT UNIT command.  If the notch page is implemented and the
ND bit of the notch page is one and the active notch field of the notch
page is zero, then a value of zero indicates that no alternate tracks
shall be reserved.  Otherwise, a value of zero indicates that the number
of alternate tracks is target specific.

The sectors per track field specifies the number of physical sectors  
included within each track.  This number includes any alternate sectors
the target may allocate.  A value of zero during MODE SELECT indicates
that the target shall define the number of sectors per track.  For devices
with a variable number of sectors per track, the value in MODE SELECT
shall be zero and the value reported in MODE SENSE for the number of
sectors per track is vendor-specific.

The data bytes per physical sector field specifies the number of data
bytes per physical sector that the target shall use.  This value may be
different than the logical block size reported in the MODE SELECT data. 
The target shall return CHECK CONDITION status if it determines that the
combination of this field and the sectors per track field exceed the
capability of the medium.  A value of zero indicates that the data bytes
per physical sector is defined by the target.

For MODE SENSE the interleave field returns the same parameter passed in
the FORMAT UNIT command, The target shall report this field as target
defined in the corresponding MODE SENSE command.  For MODE SELECT this
field is ignored.

   NOTE 127 It is recommended that this field be marked non-changeable and that
   initiators send the value returned in MODE SENSE.  This allows migration to
   specifying interleave as a mode parameter instead of in the FORMAT UNIT
   command.

The track skew factor field specifies 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 same cylinder.

The cylinder skew factor field specifies the number of physical sectors
between the last logical block of one cylinder and the first logical block
on the next sequential cylinder.

The SSEC bit set to one indicates that the target shall use soft sector
formatting.

The HSEC bit set to one indicates that the target shall use hard sector
formatting.  The HSEC bit and the SSEC bit are mutually exclusive in MODE
SELECT commands.

The combinations sector formatting supported that are reported in response
to a request for default values are defined in table 164.

          Table 164 - Reporting of default sector formatting support
+======-======-========================================================+
| SSEC | HSEC |  Description                                           |
|------+------+--------------------------------------------------------|
|   0  |   0  |  Target shall not return this combination              |
|   1  |   0  |  Target supports soft sector formatting only           |
|   0  |   1  |  Target supports hard sector formatting only           |
|   1  |   1  |  Target supports both soft and hard sector formatting  |
+======================================================================+


The combinations sector formatting supported that are reported in response
to a request for changeable values are defined in table 165.

        Table 165 - Reporting of changeable sector formatting support
+======-======-========================================================+
| SSEC | HSEC |  Description                                           |
|------+------+--------------------------------------------------------|
|   0  |   0  |  Sector formatting not changeable                      |
|   1  |   0  |  Target shall not return this combination              |
|   0  |   1  |  Target shall not return this combination              |
|   1  |   1  |  Target supports both soft and hard sector formatting  |
+======================================================================+


The removable (RMB) bit set to one indicates that the logical unit
supports removable media.  A RMB  bit set to zero indicates that the
logical unit does not support removable media.  The status of this bit
shall be reflected in the INQUIRY command removable media bit (RMB).

The surface (SURF) bit set to zero indicates that the target shall
allocate progressive addresses to all logical blocks within a cylinder
prior to allocating addresses on the next cylinder.  A  SURF bit set to
one indicates that the target shall allocate progressive addresses to all
logical blocks on a surface prior to allocating sector addresses on the
next surface.

   NOTE 128 If the target supports savable parameters, all savable parameters
   for this initiator, including those in page codes 3, 4, and 5, are saved to
   non-volatile memory when the save parameters bit (SP) in the command
   descriptor block is set to one.  The savable parameters may also be saved to
   non-volatile memory during a FORMAT UNIT command (see 9.2.1).

9.3.3.4 Medium types supported page

The medium types supported page (see table 166) contains a list of the
medium types implemented by the target for logical units.

                   Table 166 - Medium types supported page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (0Bh)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length (06h)                           |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Medium type one supported                   |
|-----+-----------------------------------------------------------------------|
| 5   |                           Medium type two supported                   |
|-----+-----------------------------------------------------------------------|
| 6   |                           Medium type three supported                 |
|-----+-----------------------------------------------------------------------|
| 7   |                           Medium type four supported                  |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE command. 
This bit is reserved with the MODE SELECT command.  A PS bit of one
indicates that the target is capable of saving the page in a non-volatile
vendor-specific location.

The code values for each medium type supported by the target (up to four
maximum), are reported in ascending order.  If only the default medium
type is supported zero is reported.  If less than four medium types are
supported the unused entries shall be returned as zero.

9.3.3.5 Notch and partition page

The notch page (see table 167) contains parameters for direct-access
devices which implement a variable number of blocks per cylinder and
support this page.  Each clause of the logical unit with a different
number of blocks per cylinder is referred to as a notch.

                            Table 167 - Notch page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (0Ch)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length (16h)                           |
|-----+-----------------------------------------------------------------------|
| 2   |   ND   |  LPN   |         Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Maximum number of notches                ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        Active notch                             ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|- - -+---                        Starting boundary                        ---|
| 11  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 12  | (MSB)                                                                 |
|- - -+---                        Ending boundary                          ---|
| 15  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 16  | (MSB)                                                                 |
|- - -+---                        Pages notched                            ---|
| 23  |                                                                 (LSB) |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE command. 
This bit is reserved with the MODE SELECT command.  A PS bit of one
indicates that the target is capable of saving the page in a non-volatile
vendor-specific location.

A notched drive (ND) bit of zero indicates that the device is not notched
and that all other parameters in this page shall be returned as zero by
the target.  A ND bit of one indicates that the device is notched.  For
each supported active notch value this page defines the starting and
ending boundaries of the notch.

A logical or physical notch (LPN) bit of zero indicates that the
boundaries are based on the physical parameters of the logical unit.  The
cylinder is considered most significant, the head least significant.  A
LPN bit of one indicates that the notch boundaries are based on logical
blocks of the logical unit. 

The maximum number of notches field indicates the maximum number of
notches supported by the logical unit.  This field shall be reported as
unchangeable.

The active notch field indicates the notch that this and subsequent MODE
SELECT and MODE SENSE commands shall refer to, until the active notch is
changed by a later MODE SELECT command.  The value of the active notch
shall be greater than or equal to 0 and less than or equal to the maximum
number of notches.  An active notch value of zero indicates that this and
subsequent MODE SELECT and MODE SENSE commands refer to the parameters
that apply across all notches. 

The starting boundary field indicates the beginning of the active notch
or, if the active notch is zero, the beginning boundary of the logical
unit.  If the LPN bit is one, then the four bytes represent a logical
block address.  If the LPN bit is zero, then the three most significant
bytes shall represent the cylinder number and the least significant byte
shall represent the head number.  This field shall be reported as
unchangeable.  When used with the MODE SELECT command this field is
ignored.

The ending boundary field indicates the ending of the active notch or, if
the active notch is zero, the ending of the logical unit.  If the LPN bit
is one, then the four bytes represent logical block address.  If the LPN
bit is zero, then the three most significant bytes shall represent the
cylinder number and the least significant byte shall represent the head
number.  This field shall be reported as unchangeable.  When used with the
MODE SELECT command this field is ignored.

Each notch shall span a set of consecutive logical blocks on the logical
unit, the notches shall not overlap, and no logical block shall be
excluded from a notch.

The pages notched field is a bit map of the mode page codes that indicates
which pages contain parameters that may be different for different
notches.  The most significant bit of this field corresponds to page code
3Fh and the least significant bit corresponds to page code 00h.  If a bit
is one, then the corresponding mode page contains parameters that may be
different for different notches.  If a bit is zero, then the corresponding
mode page contains parameters that are constant for all notches.  This
field shall be reported as unchangeable.

9.3.3.6 Read-write error recovery page

The read-write error recovery page (see table 168) specifies the error
recovery parameters the target shall use during any command that performs
a read or write operation to the medium (e.g. READ(6), READ(10), WRITE(6),
WRITE(10), COPY, COMPARE, WRITE & VERIFY, etc.).

                  Table 168 - Read-write error recovery page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|        Page code (01h)                              |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length (0Ah)                           |
|-----+-----------------------------------------------------------------------|
| 2   |  AWRE  |  ARRE  |   TB   |   RC   |  EER   |  PER   |  DTE   |  DCR   |
|-----+-----------------------------------------------------------------------|
| 3   |                           Read retry count                            |
|-----+-----------------------------------------------------------------------|
| 4   |                           Correction span                             |
|-----+-----------------------------------------------------------------------|
| 5   |                           Head offset count                           |
|-----+-----------------------------------------------------------------------|
| 6   |                           Data strobe offset count                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Write retry count                           |
|-----+-----------------------------------------------------------------------|
| 9   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 10  | (MSB)                                                                 |
|-----+---                        Recovery time limit                      ---|
| 11  |                                                                 (LSB) |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE command. 
This bit is reserved with the MODE SELECT command.  A PS bit of one
indicates that the target is capable of saving the page in a non-volatile
vendor-specific location.

An automatic write reallocation enabled (AWRE) bit of one indicates that
the target shall enable automatic reallocation to be performed during
write operations.  The automatic reallocation shall be performed only if
the target has the valid data (e.g. original data in the buffer or
recovered from the medium).  The valid data shall be placed in the
reallocated block.  Error reporting as required by the error recovery bits
(EER, PER, DTE, and DCR) shall be performed only after completion of the
reallocation.  The reallocation operation shall report any failures that
occur.  See the REASSIGN BLOCKS command (9.2.10) for error procedures.

An AWRE bit of zero indicates that the target shall not perform automatic
reallocation of defective data blocks during write operations.

An automatic read reallocation enabled (ARRE) bit of one indicates that
the target shall enable automatic reallocation of defective data blocks
during read operations.  All error recovery actions required by the error
recovery bits (TB, EER, PER, DTE, and DCR) shall be executed.  The
automatic reallocation shall then be performed only if the target
successfully recovers the data.  The recovered data shall be placed in the
reallocated block.  Error reporting as required by the error recovery bits
shall be performed only after completion of the reallocation.  The
reallocation process shall present any failures that occur. See the
REASSIGN BLOCKS command (9.2.10) for error procedures. 

An ARRE bit of zero indicates that the target shall not perform automatic
reallocation of defective data blocks during read operations.

A transfer block (TB) bit of one indicates that a data block that is not
recovered within the recovery limits specified shall be transferred to the
initiator before CHECK CONDITION status is returned.  A TB bit of zero
indicates that such a data block shall not be transferred to the
initiator.  The TB bit does not affect the action taken for recovered
data.

A read continuous (RC) bit of one indicates the target shall transfer the
entire requested length of data without adding delays to perform error
recovery procedures.  This implies that the target may send data that is
erroneous or fabricated in order to maintain a continuous flow of data. 
The target shall assign priority to this bit over conflicting error
control bits (EER, DCR, DTE, and PER) within this byte.  

   NOTE 129 Fabricated data may be data already in the buffer or any other
   target-specific data.  This bit is typically used in image processing, audio,
   or video applications.

A RC bit of zero indicates that error recovery operations that cause
delays are acceptable during the data transfer.  Data shall not be
fabricated.

The individual bit definitions for EER, PER, DTE and DCR are contained in
table 169.  The combinations of these bits are explained in table 170. 

                  Table 169 - Error recovery bit definitions
+====================-===========================================================+
|EER  PER  DTE  DCR  |  Description                                              |
|--------------------+-----------------------------------------------------------|
| 1    -    -    -   |  An enable early recovery (EER) bit of one indicates that |
|                    |  the target shall use of the most expedient form of error |
|                    |  recovery first.  This bit only applies to data error     |
|                    |  recovery and it does not affect positioning retries and  |
|                    |  the message system error recovery procedures.            |
|                    |                                                           |
| 0    -    -    -   |  An EER bit of zero indicates that the target shall use an|
|                    |  error recovery procedure that minimizes the risk of mis- |
|                    |  detection or mis-correction.                             |
|                    |                                                           |
| -    1    -    -   |  A post error (PER) bit of one indicates that the target  |
|                    |  shall report recovered errors.                           |
|                    |                                                           |
| -    0    -    -   |  A PER bit of zero indicates that the target shall not    |
|                    |  report recovered errors.  Error recovery procedures shall|
|                    |  be performed within the limits established by the error  |
|                    |  recovery parameters.                                     |
|                    |                                                           |
| -    -    1    -   |  A disable transfer on error (DTE) bit of one indicates   |
|                    |  that the target shall terminate the data phase upon      |
|                    |  detection of a recovered error.                          |
|                    |                                                           |
| -    -    0    -   |  A DTE bit of zero indicates that the target shall not    |
|                    |  terminate the data phase upon detection of a recovered   |
|                    |  error.                                                   |
|                    |                                                           |
| -    -    -    1   |  A disable correction (DCR) bit of one indicates that     |
|                    |  error correction codes shall not be used for data error  |
|                    |  recovery.                                                |
|                    |                                                           |
| -    -    -    0   |  A DCR bit of zero allows the use of error correction     |
|                    |  codes for data error recovery.                           |
+================================================================================+


   NOTE 130 An EER bit of one may imply an increase in the probability of mis-
   detection or mis-correction.  An EER bit of zero typically means that the
   specified retry limit is exhausted prior to using error correction codes.

          Table 170 - Combined error recovery parameter descriptions
+====================-===========================================================+
|EER  PER  DTE  DCR  |  Description                                              |
|--------------------+-----------------------------------------------------------|
| 0    0    0    0   |  The full number of retries (specified in the read, write |
|                    |  or verify retry count field) and error correction are    |
|                    |  attempted to recover the data (EER and DCR set to 0).  A |
|                    |  CHECK CONDITION is not reported at the completion of the |
|                    |  command for recovered errors (PER set to 0).  The command|
|                    |  terminates with CHECK CONDITION status before the        |
|                    |  transfer count is exhausted only if an unrecoverable     |
|                    |  error is detected.  If an unrecoverable data error       |
|                    |  occurred, the data in the block with the unrecoverable   |
|                    |  error may or may not be transferred to the initiator     |
|                    |  depending on the setting of the transfer block (TB) bit  |
|                    |  (read operation only).                                   |
|                    |                                                           |
| 0    0    0    1   |  Error correction is disabled (DCR set to one) so only the|
|                    |  full number of retries (specified in the read, write or  |
|                    |  verify retry count field) are attempted to recover the   |
|                    |  data (EER set to 0).  A CHECK CONDITION is not reported  |
|                    |  at the completion of the command for recoverable errors  |
|                    |  (PER set to 0).  The command terminates with CHECK       |
|                    |  CONDITION status before the transfer count is exhausted  |
|                    |  only if an unrecoverable error is detected.  If an       |
|                    |  unrecoverable data error occurred, the data in the block |
|                    |  with the unrecoverable error may or may not be           |
|                    |  transferred to the initiator depending on the setting of |
|                    |  the transfer block (TB) bit (read operation only).       |
|                    |                                                           |
| 0    0    1    0   |  Invalid mode (PER must be set to one if DTE is set to    |
|                    |  one).  1)                                                |
|                    |                                                           |
| 0    0    1    1   |  Invalid mode (PER must be set to one if DTE is set to    |
|                    |  one).  1)                                                |
|                    |                                                           |
| 0    1    0    0   |  The full number of retries (specified in the read, write |
|                    |  or verify retry count field) and error correction are    |
|                    |  attempted to recover the data (EER and DCR set to 0).    |
|                    |  The command terminates with CHECK CONDITION status before|
|                    |  the transfer count is exhausted only if an unrecoverable |
|                    |  error is detected.  If an unrecoverable data error       |
|                    |  occurred, the data in the block with the unrecoverable   |
|                    |  error may or may not be transferred to the initiator     |
|                    |  depending on the setting of the transfer block (TB) bit  |
|                    |  (read operation only).  A CHECK CONDITION with a sense   |
|                    |  key of RECOVERED ERROR is reported at the completion of  |
|                    |  the command for any recoverable error that occurs (PER   |
|                    |  set to 1).  The information field in the sense data shall|
|                    |  contain the logical block address of the last recovered  |
|                    |  error which occurred during the transfer.                |
+================================================================================+


Table 170 - (continued)
+====================-===========================================================+
|EER  PER  DTE  DCR  |  Description                                              |
|--------------------+-----------------------------------------------------------|
|                    |                                                           |
| 0    1    0    1   |  Error correction is disabled (DCR set to one) so only the|
|                    |  full number of retries (specified in the read, write or  |
|                    |  verify retry count field) are attempted to recover the   |
|                    |  data (EER set to 0).  The command terminates with CHECK  |
|                    |  CONDITION status before the transfer count is exhausted  |
|                    |  only if an unrecoverable error is detected.  If an       |
|                    |  unrecoverable data error occurred, the data in the block |
|                    |  with the unrecoverable error may or may not be           |
|                    |  transferred to the initiator depending on the setting of |
|                    |  the transfer block (TB) bit (read operation only).  A    |
|                    |  CHECK CONDITION with a sense key of RECOVERED ERROR is   |
|                    |  reported at the completion of the command for any        |
|                    |  recoverable error that occurs (PER set to 1).  The       |
|                    |  information field in the sense data shall contain the    |
|                    |  logical block address of the last recovered error which  |
|                    |  occurred during the transfer.                            |
|                    |                                                           |
| 0    1    1    0   |  The full number of retries (specified in the read, write |
|                    |  or verify retry count field) and error correction are    |
|                    |  attempted to recover the data (EER and DCR set to 0).    |
|                    |  The command terminates with CHECK CONDITION status before|
|                    |  the transfer count is exhausted if any error (recoverable|
|                    |  or unrecoverable) is detected (DTE set to 1).  The       |
|                    |  information field in the sense data shall contain the    |
|                    |  logical block address of the block in error.  If an      |
|                    |  unrecoverable data error occurs the data in the block    |
|                    |  with the error may or may not be transferred to the      |
|                    |  initiator depending on the setting of the transfer block |
|                    |  (TB) bit (read operation only).                          |
|                    |                                                           |
| 0    1    1    1   |  Error correction is disabled (DCR set to one) so only the|
|                    |  full number of retries (specified in the read, write or  |
|                    |  verify retry count field) are attempted to recover the   |
|                    |  data (EER set to 0).  The command terminates with CHECK  |
|                    |  CONDITION status before the transfer count is exhausted  |
|                    |  if any error (recoverable or unrecoverable) is detected  |
|                    |  (DTE set to 1).  The information field in the sense data |
|                    |  shall contain the logical block address of the block in  |
|                    |  error.  If an unrecoverable data error occurs the data in|
|                    |  the block with the error may or may not be transferred to|
|                    |  the initiator depending on the setting of the transfer   |
|                    |  block (TB) bit (read operation only).                    |
|                    |                                                           |
| 1    0    0    0   |  The fewest possible retries and error correction are     |
|                    |  attempted to recover the data (EER set to one and DCR set|
|                    |  to 0).  A CHECK CONDITION is not reported at the         |
|                    |  completion of the command for recoverable errors (PER set|
|                    |  to 0).  The command terminates with CHECK CONDITION      |
|                    |  status before the transfer count is exhausted only if an |
|                    |  unrecoverable error is detected.  If an unrecoverable    |
|                    |  data error occurred, the data in the block with the      |
|                    |  unrecoverable error may or may not be transferred to the |
|                    |  initiator depending on the setting of the transfer block |
|                    |  (TB) bit (read operation only).                          |
+================================================================================+


Table 170 - (concluded)
+=====================-==========================================================+
|EER  PER  DTE  DCR   | Description                                              |
|---------------------+----------------------------------------------------------|
|                     |                                                          |
| 1    0    0    1    | Invalid mode (DCR must be set to zero if EER is set to   |
|                     | one).  1)                                                |
|                     |                                                          |
| 1    0    1    0    | Invalid mode (PER must be set to one if DTE is set to    |
|                     | one).  1)                                                |
|                     |                                                          |
| 1    0    1    1    | Invalid mode (PER must be set to one if DTE is set to    |
|                     | one).  1)                                                |
|                     |                                                          |
| 1    1    0    0    | The fewest possible retries and error correction are     |
|                     | attempted to recover the data (EER set to one and DCR set|
|                     | to 0).  The command terminates with CHECK CONDITION      |
|                     | status before the transfer count is exhausted only if an |
|                     | unrecoverable error is detected.  If an unrecoverable    |
|                     | data error occurred, the data in the block with the      |
|                     | unrecoverable error may or may not be transferred to the |
|                     | initiator depending on the setting of the transfer block |
|                     | (TB) bit (read operation only).  A CHECK CONDITION with a|
|                     | sense key of RECOVERED ERROR is reported at the          |
|                     | completion of the command for any recoverable error that |
|                     | occurs (PER set to 1).  The information field in the     |
|                     | sense data shall contain the logical block address of the|
|                     | last recovered error which occurred during the transfer. |
|                     |                                                          |
| 1    1    0    1    | Invalid mode (DCR must be set to zero if EER is set to   |
|                     | one).  1)                                                |
|                     |                                                          |
| 1    1    1    0    | The fewest possible retries and error correction are     |
|                     | attempted to recover the data (EER set to one and DCR set|
|                     | to 0).  The command terminates with CHECK CONDITION      |
|                     | status before the transfer count is exhausted if any     |
|                     | error (recoverable or unrecoverable) is detected (DTE set|
|                     | to 1).  The information field in the sense data shall    |
|                     | contain the logical block address of the block in error. |
|                     | If an unrecoverable data error occurs the data in the    |
|                     | block with the error may or may not be transferred to the|
|                     | initiator depending on the setting of the transfer block |
|                     | (TB) bit (read operation only).                          |
|                     |                                                          |
| 1    1    1    1    | Invalid mode (DCR must be set to zero if EER is set to   |
|                     | one).  1)                                                |
|--------------------------------------------------------------------------------|
|   1)     If an invalid mode for the error recovery combination is              |
|          sent by the initiator the target shall return CHECK CONDITION         |
|          status with the sense key set to ILLEGAL REQUEST and the              |
|          additional sense code set to INVALID FIELD IN PARAMETER LIST.         |
+================================================================================+


The read and write retry count fields specify the number of times that
the target shall attempt its recovery algorithm during read and write
operations, respectively.  If the retry count field and the recovery
time limit field are both specified in a MODE SELECT command, the field
that requires the least time for data error recovery actions shall have
priority.  

The correction span field specifies the size, in bits, of the largest
data error burst for which data error correction may be attempted.  A
correction span of zero specifies that the target shall use its default
value or that this field is not supported.

The head offset count field specifies in two's-complement notation an
incremental offset position from the track center to which the heads
shall be moved.  The effect of this field on write operations is
unspecified.  A head offset count of zero indicates that no offset is
specified.  A positive value indicates moving in the direction of
increasing logical block addresses.  A negative value indicates moving
in the direction of decreasing logical block addresses.  Any value
specified in this field does not preclude the target from using
positive or negative head offset during error recovery.  However, after
any error recovery is completed the target shall return the head offset
to the value specified in this field.

   NOTE 131 The degree of offset for each incremental value and the number of
   valid values are device specific.  It is recommended that the number of
   valid values be equal for the positive and negative head offset counts.

The target shall return CHECK CONDITION status and shall set the sense
key to ILLEGAL REQUEST if an unsupported head offset value is
specified.  The valid bit shall be set to one and the information field
shall be set to the positive value of the maximum head offset count
that is supported.  The target shall set the valid bit to zero if it
cannot determine the maximum head offset count supported.  

   NOTE 132 If the target does not support this field, it returns a zero
   value in the MODE SENSE command.)

The data strobe offset count field specifies in two's-complement
notation an incremental position to which the recovered data strobe
shall be adjusted from its nominal setting.  The effect of this field
on write operations is unspecified.  A value of zero indicates that no
data strobe offset is specified.  A positive value indicates movement
in a positive direction as defined by the target.  A negative value
indicates movement in the negative direction as defined by the target. 
Any value specified in this field does not preclude the target from
using positive or negative data strobe offset during error recovery. 
However, after any error recovery is completed the target shall return
the data strobe offset to the value specified in this field.

   NOTE 133 The degree of offset for each incremental value and the number of
   valid values are device specific.  It is recommended that the number of
   valid values be equal for the positive and negative data strobe offset
   counts.

The target shall return CHECK CONDITION status and shall set the sense
key to ILLEGAL REQUEST if an unsupported data strobe offset count value
is specified.  The valid bit shall be set to one and the information
field shall be set to the positive value of the maximum data strobe
offset count that is supported.  The target shall set the valid bit to
zero if it cannot determine the maximum data strobe offset supported.  


   NOTE 134 If the target does not support the data strobe offset count
   field, it returns a zero value in the MODE SENSE command.

The recovery time limit field specifies in increments of one ms the
maximum time duration that the target shall use for data error recovery
procedures.  The target may round this value as described in 7.5.4. 
The limits in this field specifies the maximum error recovery time
allowed for any individual logical block.  A recovery time limit of
zero specifies that the target shall use its default value.

If both retry count and recovery time limit are specified, the field
that specifies the recovery action of least duration shall have
priority. 

9.3.3.7 Rigid disk drive geometry page

The rigid disk drive geometry page (see table 171) specifies parameters
for direct-access devices employing a rigid disk drive.

                  Table 171 - Rigid disk drive geometry page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (04h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length (16h)                           |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|- - -+---                        Number of cylinders                      ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Number of heads                             |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|- - -+---               Starting cylinder-write precompensation           ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   | (MSB)                                                                 |
|- - -+---               Starting cylinder-reduced write current           ---|
| 11  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 12  | (MSB)                                                                 |
|-----+---                        Drive step rate                          ---|
| 13  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 14  | (MSB)                                                                 |
|- - -+---                        Landing zone cylinder                    ---|
| 16  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 17  |                           Reserved                  |       RPL       |
|-----+-----------------------------------------------------------------------|
| 18  |                           Rotational offset                           |
|-----+-----------------------------------------------------------------------|
| 19  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 20  | (MSB)                                                                 |
|-----+---                        Medium rotation rate                     ---|
| 21  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 22  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 23  |                           Reserved                                    |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

   NOTE 135 This page is intended to define drive geometry parameters of
   rigid disk drives.  It may be used for other devices if applicable.

The number of cylinders field defines the number of physical cylinders
used for data storage.  

The number of heads field defines the physical number of heads used for
data storage.  Heads used exclusively for servo information are
excluded. 

The starting cylinder for write precompensation field is the physical
cylinder at which write precompensation is to begin.  The first
cylinder is number zero.  If the starting cylinder for write
precompensation is equal to the value in the number of cylinders field,
write precompensation shall be disabled by the target.

The starting cylinder for reduced write current field is the physical
cylinder at which write current is reduced.  The first cylinder is
number zero.  If the starting cylinder for reduced write current is
equal to the value in the number of cylinders field, reduced write
current shall be disabled by the target.

The drive step rate field indicates the step rate in 100 ns increments.
The target shall use the drive step rate, greater than or equal to the
drive step rate specified.  If the target rounds this field it shall
terminate the command as described in 7.5.4.  A value of zero requests
the target to set its default value.

The landing zone cylinder field indicates two's complement location
where the target shall position the disk heads.  A negative value
indicates that the heads are positioned below cylinder zero by that
number of cylinders.  A positive value greater than the number of
cylinders indicates that the heads are positioned beyond the cylinders
used for data storage at the cylinder location specified.  A zero
indicates that the default should be used.

The rotational position locking (RPL) field is used for spindle
synchronization as defined in table 172.  See K of the ANSI X3.170A-
1991 for further information on synchronized spindles.

                   Table 172 - Rotational position locking
+=======-=====================================================================+
|  RPL  |  Description                                                        |
|-------+---------------------------------------------------------------------|
|  00b  |  Indicates that spindle synchronization is disabled or not supported|
|  01b  |  The target operates as a synchronized-spindle slave                |
|  10b  |  The target operates as a synchronized-spindle master               |
|  11b  |  The target operates as a synchronized-spindle master control       |
+=============================================================================+


   NOTE 136 The signals and connectors used for rotational position locking
   are external to the SCSI bus and are not part of this International
   Standard.

If a target fails to achieve synchronization it shall create a unit
attention condition to all initiators.  The sense key shall be set to
UNIT ATTENTION and the additional sense code set to RPL STATUS CHANGE. 


If subsequent to achieving synchronization the target detects a change
of synchronization:
   a)     and, if the logical unit is not presently executing an I/O
          process for the initiator, the target shall create a unit
          attention condition.  The sense key shall be set to UNIT
          ATTENTION and the additional sense code set to RPL STATUS CHANGE.
   b)     and, if the logical unit is presently executing an I/O process
          and no other error occurs, then the target shall return CHECK
          CONDITION status.  The sense key shall be set to RECOVERED ERROR
          if the target is able to complete the I/O process or HARDWARE
          ERROR if the target is unable to complete the I/O process.  The
          additional sense code is set to RPL STATUS CHANGE.

The rotational offset indicates the amount of rotational skew that the
target shall use when synchronized.  The rotational skew is applied in
the retarded direction (lagging the synchronized spindle master
control).  The value in the field is the numerator of a fractional
multiplier that has 256 as its denominator (e.g. a value of 128
indicates a one-half revolution skew).  A value of zero indicates that
rotational offset shall not be used.  This value may be rounded as
defined in 7.5.4.  The rotational offset is not used when a target is
configured as synchronized-spindle master. 

The medium rotation rate indicates the speed at which the medium
rotates.  The unit of measure is rotations per minute (e.g. 3 600 rpm). 


9.3.3.8 Verify error recovery page

The verify error recovery page (see table 173) specifies the error
recovery parameters the target shall use during the VERIFY command, the
verify operation of the WRITE AND VERIFY command and the verify
operation of the COPY AND VERIFY command.

                    Table 173 - Verify error recovery page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|            Page code (07h)                          |
|-----+-----------------------------------------------------------------------|
| 1   |                           Parameter length (0Ah)                      |
|-----+-----------------------------------------------------------------------|
| 2   |             Reserved              |  EER   |  PER   |  DTE   |  DCR   |
|-----+-----------------------------------------------------------------------|
| 3   |                           Verify retry count                          |
|-----+-----------------------------------------------------------------------|
| 4   |                           Verify correction span                      |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 9   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 10  | (MSB)                                                                 |
|-----+---                        Verify recovery time limit               ---|
| 11  |                                                                 (LSB) |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

The AWRE bit as defined in the read-write error recovery page (see
9.3.3.6) applies to the WRITE AND VERIFY command.  The VERIFY and
COMPARE commands shall not perform automatic reallocation.  The COPY
and COPY AND VERIFY commands might or might not perform automatic
reallocation depending on the settings of the mode parameters.

The EER, PER, DTE and DCR bits are defined in 9.3.3.6.  The
combinations of these bits is defined in 93.3.6.

The verify retry count field specifies the number of times that the
target shall attempt its recovery algorithm during a verify operation. 
If the verify retry count and the verify recovery time limit are both
specified, the one that requires the least time for data error recovery
actions shall have priority.

The verify correction span field specifies the size, in bits, of the
largest burst data error for which data error correction may be
attempted.  If the target does not implement this field, a value of
zero is returned in MODE SENSE data.

The verify recovery time limit field specifies in increments of one
millisecond the maximum time duration that the target shall use error
recovery procedures to recover data for an individual logical block. 
The target may round this value as described in 7.5.4.  If the verify
retry count and the verify recovery time limit are both specified, the
one that requires the least time for data error recovery actions shall
have priority.

   NOTE 137 To disable all types of correction and retries the initiator
   should set the EER bit to zero, the PER, DTE and DCR bits to one and the
   number of retries and recovery time limit to zero.

9.4 Definitions specific to direct-access devices

9.4.1 cache memory:   A temporary (and often volatile) data storage
area outside the user-accessible area.  A cache memory is usually
faster to access than the medium and thus has the effect of increasing
data throughput by reducing the number of accesses to the medium.

9.4.2 non-volatile medium:  Physical storage medium that retains data
written to it for a subsequent read operation through a power-on
condition. An example of this is a disk device that stores data as
magnetic fields that do not require device power to exist.

9.4.3 notch:  A notch refers to all or part of the medium having a
consistent set of geometry parameters.  Notches are used to increase
storage capacity by optimizing the number of sectors per track between
the inner and outer tracks.

9.4.4 user-accessible:  The area of the medium that can be read from or
written to by READ and WRITE commands.

9.4.5 volatile medium:  Medium that may not retain data written to it
for a subsequent read operation through a power-on condition. An
example of this is a silicon memory device that loses data written to
it if device power is lost.


10 Sequential-access devices


10.1 Sequential-access device model

10.1.1 Physical elements

Sequential-access devices (called devices below) optimize their use in
storing or retrieving user data in a sequential manner.  Since access
is sequential, position changes typically take a long time, when
compared to direct-access devices.

Sequential-access devices are usually tape devices.  The remainder of
this description is from the point of view of a tape device; however,
other implementations are not precluded.

The recording medium for tape devices consists of various widths and
lengths of a flexible substrate coated with a semi-permanent magnetic
material.  The recording medium may be wound onto single reels or
encapsulated into cartridges containing both a supply reel and a take-
up reel.  Several American National Standards exist covering the
construction of reels and cartridges for interchange as well as
recording techniques for many of the format or density combinations.

A complete unit composed of the recording medium and its physical
carrier (e.g. reel, cartridge, cassette) is called a volume.  Volumes
have an attribute of being mounted or de-mounted on a suitable
transport mechanism.

Mounted is the state of a volume when the device is physically capable
of executing commands that cause the medium to be moved.  A volume is
de-mounted when it is being loaded, threaded, unloaded, unthreaded, or
when not attached to the device.  

Ready is the state of the device when medium access and non-medium
access commands can be executed.  The device is not ready when no
volume is mounted or, from the initiator's perspective, whenever all
medium access commands report CHECK CONDITION status and a NOT READY
sense key.  Some devices may have a separate switch function which
places the device in a not ready state even when a volume is mounted.  

The write enabled or write protected state determines when an initiator
may write information on a volume.  This attribute is usually
controlled by the user of the volume through manual intervention (e.g.
thumbwheel switch).

The recording medium has two physical attributes called beginning-of-
medium (BOM) and end-of-medium (EOM).  Beginning-of-medium is at the
end of the medium that is attached to the take-up reel.  End-of-medium
is at the end of the medium that is attached to the supply reel.  In
some cases, the medium is permanently affixed to one or both of the
reel hubs.

As shown in figure 18, the entire physical length of medium is not
usable for recording data. For most volumes, a length of the medium is
reserved before the beginning-of-medium and after the end-of-medium
position. This is done to provide sufficient tape wraps onto the reel
hub(s) and to ensure that recording starts in an undamaged section of
the medium.














                      Figure 18 - Typical volume layout

10.1.2 Data storage characteristics

The position on the medium where a pattern of recorded signal may be
written by one write component is called a track (see figure 19).  A
device may write or read from one or more tracks at a time, depending
on the format.  












                   Figure 19 - Typical medium track layout

On a new volume, recording of one or more tracks begins after mounting
the volume and moving from beginning-of-medium toward end-of-medium.
The number of tracks written at one time is called a track group
(TrkGrp).  For recorded volumes, reading in the forward direction
follows the same course of tracks as when writing.

If not all tracks are recorded at the same time, and the device
reverses direction when approaching end-of-medium and begins writing on
remaining tracks, the recording method is called serpentine. For
serpentine devices that record only one track at a time, each physical
track represents one track group (see figure 20).












                   Figure 20 - Serpentine recording example 

Some multi-track devices have only one track group, using a parallel
storage format that supports the simultaneous recording of all
available tracks (see figure 21).












                    Figure 21 - Parallel recording example

The serpentine and parallel recording formats shown in the previous
examples define tracks as longitudinal patterns of recorded
information.  One other storage format used by some devices records
tracks diagonally across the medium.  This recording technique is known
as helical scan (see figure 22).












                  Figure 22 - Helical scan recording example

For most recording formats, an area at beginning-of-medium contains a
format identification in the form of a tone burst or some other
recognizable pattern.  User data is not recorded in this area.  The
format identification is an attribute of a volume used for interchange
purposes and is defined in applicable standards. 

When writing, the initiator needs an indication that it is approaching
the end of the permissible recording area.  This position, called
early-warning (EW), is typically reported to the initiator at a
position early enough for the device to write any buffered data to the
medium while still leaving enough room for additional recorded labels
or filemarks.  Some American National Standards include physical
requirements for a marker placed on the medium to be detected by the
device as early-warning (see figure 23).










                      Figure 23 - Early-warning example

For devices which implement large data buffers, the early-warning
position defined by a physical marker may be too close to the end of
the recording region to permit emptying the data buffer(s).  For these
devices, a logical concept of early-warning is often used to signal the
initiator at an appropriate location prior to the physical marker.

10.1.3 Partitions within a volume

Another attribute of a volume is called a partition.  Partitions
consist of one or more non-overlapped mini-volumes, each with its own
beginning and ending points, contained within single physical volume. 
Each partition (x) within a volume has a defined beginning-of-partition
(BOP x), an early-warning position (EW x), and an end-of-partition (EOP
x).  

All volumes have a minimum of one partition called partition 0, the
default data partition.  For devices which support only one partition,
the beginning-of-partition zero (BOP 0) may be equivalent to the
beginning-of-medium and the end-of-partition zero (EOP 0) may be
equivalent to the end-of-medium.

When a volume is mounted, it is logically positioned to beginning of
the default data partition (BOP 0).  When a REWIND command is received
in any partition (x), the device positions to the beginning-of-
partition (BOP x).

Partitions on a volume do not need to be recorded in any defined order,
nor do all partition numbers in a sequence need to be present on a
volume.  It is sufficient for a device to be able to locate a
partition, given its code value, or determine that it does or does not
exist on the volume.  For interchange, information about which
partitions are present on a volume may be stored on the volume in a
device-defined area (possibly unavailable to the initiator) or the
information may be an intrinsic attribute of the device implementation.

Figure 24 shows a possible partition implementation for a four-track
serpentine recording device, assuming that each track group defines a
partition.










       Figure 24 - Partitioning example - one partition per track group

Another possible partition implementation for this four-track
serpentine recording device is shown in figure 25, using two track
groups to define each partition.











    Figure 25 - Partitioning example - one partition per two track groups

The previous examples show the beginning and ending points for a
partition aligned with physical bounds of the medium.  This is not a
mandatory requirement for partitioning; it is sufficient for a device
to be able to locate to and stay in any partition bounded by a BOP x
and EOP x.  In this case, a recorded mark or some other device-
recognizable attribute could be used to delineate the partitions. 
Figure 26 shows a possible two-partition implementation for a device
with only one track group.












      Figure 26 - Partitioning example - two partitions per track group

Three methods are defined in the MODE SENSE and MODE SELECT commands
for managing partitions; each method is progressively more difficult to
implement and manage: 
   a)     device-defined fixed locations;
   b)     device-defined based on an initiator supplied number of
          partitions and a device specific allocation algorithm; and,
   c)     definition by name and capacity by an initiator.

10.1.4 Logical elements within a partition

The area between BOP x and EOP x on a typical recorded volume contains
at least two types of initiator accessible elements, data blocks and
tape marks.  These elements are controlled and transferred between the
initiator and the medium using READ, READ REVERSE, WRITE, and WRITE
FILEMARKS commands.

A unit of data supplied or requested by an initiator is called a
logical block.  Logical blocks are stored according to the
specifications of the format for the volume and may be recorded as one
or more physical blocks on the medium.  When the physical block and the
logical block are not recorded in a one-to-one relationship, it is the
responsibility of the device to perform all blocking, de-blocking,
padding, stripping, splitting or rebuilding of the logical data
block(s) sent by an initiator.  

Filemarks are special recorded elements containing no user data.  The
filemark format is defined in some American National Standards. 
Initiators traditionally use filemarks to separate user data from
labels and logical groupings of data from each other.  Since some
format standards do not define an explicit end-of-data (EOD), host
software has often used conventions with filemarks to represent an EOD
indication.  At least one American National Standard specifically
defines filemark use for this purpose.  In some implementations, the
device's EOD definition may be specified the initiator using the MODE
SELECT command.

A setmark is another type of special recorded element containing no
user data, providing a segmentation scheme hierarchically superior to
filemarks. This level of segmentation is useful for some high capacity
storage devices to provide concise addressing and fast positioning to
specific sets of data within a partition.  In some implementations, the
detection and reporting of setmarks may be controlled by the initiator
using the MODE SELECT command.

Inter-block gaps, the gaps between blocks, filemarks, and setmarks, are
introduced on the medium at the time a block or mark is written without
explicit action by the initiator.  Minimum and maximum lengths for
inter-block gaps are defined in some American National Standards.  In
some devices, the length of inter-block gaps may be selected by the
initiator using the MODE SELECT command while in other devices the gaps
are fixed and non-changeable.  
In addition to blocks, filemarks, and setmarks, erase gaps may be
recorded on the medium through use of the ERASE command or device-
initiated error recovery actions.  Although explicitly recorded on the
medium, there is normally no distinction between two contiguous erase
gaps.  An erase gap may be a length of erased medium or a recorded
pattern not distinguishable as a block or mark.  Minimum and maximum
lengths for erase gaps are defined in some American National Standards
while some devices may have no implementation of an erase gap.  

After writing data from BOP x, the medium is considered to be a
contiguous grouping of blocks, filemarks, setmarks, and gaps.  Certain
American National Standards define gap lengths which, if exceeded, are
to be considered as having reached blank medium.  Depending on the
format, this blank medium may be treated as an end-of-data indication,
an error recovery area, or an unrecoverable medium error causing an
interchange error.  Unrecorded volumes (new or erased) may exhibit
blank medium characteristics if an attempt is made to read or space the
volume before data has been written.  

A sequential-access device may be capable of supporting fixed or
variable length blocks.  The concept of fixed or variable mode for
writing and reading blocks only indicates the method by which the
initiator specifies the size of a logical block for transfer and not
the method of recording physical blocks on the medium.  However, a
device that supports only fixed-length physical blocks may only be
capable of supporting logical blocks of the same length.  The length of
a logical block is always described in bytes.  The length of a physical
block may or may not be recorded as an exact byte count, depending on
the format.

10.1.5 Data buffering

A device may contain a temporary storage area capable of holding one or
more logical blocks - a data buffer.  A device data buffer may include
any combination of blocks, filemarks, and setmarks in the process of
being written to the medium, or it may contain read-ahead data blocks
transferred from the medium.

A device with a data buffer may be capable of operating in either a
buffered mode or an unbuffered mode.  A device with no data buffer
operates only in unbuffered mode.  Either term is only applicable to
the manner in which the device manages information to be written to the
medium. Buffered mode is not applicable during read commands,
regardless of whether read data passes through a data buffer.

A device operating in buffered mode may return GOOD status for write
operations when all write data has been successfully transferred from
the initiator into the device data buffer.  For devices operating in
unbuffered mode, GOOD status is not returned until all requested data,
filemarks, or setmarks are successfully recorded on the medium.

When issuing a buffered WRITE FILEMARKS command with the immediate bit
set to one, GOOD status is returned as soon as the command is
validated.  A WRITE FILEMARKS command with the immediate bit set to
zero causes any buffered blocks, filemarks, and setmarks to be written
to the medium.  Upon successful completion of this process, which is
called a synchronize operation, no blocks, filemarks, or setmarks
remain in the data buffer which have not been written to the medium.  A
synchronize operation has no effect on a data buffer which contains
only read-ahead data or write data which has already been successfully
written to the medium.

Should an unrecoverable write error occur while in buffered mode, the
device generates an error condition to the current active command.  If
no command is active, the error may be reported on the next applicable
operation as a deferred error (see 8.2.14.2).  For some
implementations, asynchronous event notification or extended contingent
allegiance may be required.  Refer to 10.5.5 and 10.7 for descriptions
of asynchronous event notification and extended contingent allegiance
protocol.

The READ POSITION command may be used to determine the number and
storage space of buffered blocks not written before the unrecoverable
error was encountered.

A device with read-ahead data blocks in the data buffer does not report
an unrecovered read error until the data block in error is requested by
an initiator.

10.1.6 Recorded object descriptors (block identifiers)

Some recording formats specify that recorded objects (blocks,
filemarks, and setmarks) have identifiers included in the recorded
information to help determine write sequence and also to help detect
device positioning errors.  The identifier values are unique within a
partition and may be unique within a volume.

The use of the term block identifier may imply some arithmetic sequence
applied to the assignment of recorded objects.  The block identifier
assignment algorithm may be defined in an applicable format standard.

For some pre-formatted volumes, the identifiers are associated with
physical blocks.  In variable-length implementations, the identifier
can be associated with a physical block when the logical block and the
physical block have a one-to-one relationship on the medium.  

Some formats may carry both physical and logical block identifiers
recorded on the medium.  When a logical block is split over more than
one physical block, or multiple logical blocks are concatenated to form
a physical block, the logical block identifier and the physical block
identifier are not the same.  Filemarks and setmarks may or may not
have recorded identifiers, but if identifiers are used in the format,
then each mark is assigned a value even if it is not explicitly
recorded.

The READ POSITION and LOCATE commands use four-byte fields to hold
these format dependent identifiers.  For some implementations, this
value may correspond to a real physical location; however, it is
sufficient for the device to map the identifier to a value representing
the unique recorded object.  With this capability, the READ POSITION
command may be used to report a device-defined block identifier and the
initiator may use this value with a LOCATE command to position to the
same location at some future time (provided the volume has not been
rewritten in the interim).  

10.1.7 Direction and position definitions

For sequential-access devices, positioning has the connotation of
logically being in, at, before, or after some defined place within a
volume.  This definition means the position is capable of being
repeated under the same circumstances.  The orientation of usage for
the four words (in, at, before, or after) is in one direction, from BOP
x toward EOP x.  All positioning defined below is worded from this
perspective.  Devices without buffers have some physical position which
relates to these logical positions.  However, these definitions do not
require the medium to have a physical position equivalent to the
logical position unless explicitly stated.

The forward direction is defined as logically progressing from BOP x
toward EOP x. The reverse direction is defined as logically progressing
from EOP x toward BOP x.  In serpentine devices, the logical forward or
reverse direction has an alternating relationship to the physical
motion of the medium.  

The concept of being in some position means not being outside a defined
region.  The definition allows the position to be on the boundary of a
defined region.  When a volume is first mounted, the logical position
is always at the beginning of the default data partition (BOP0). 
Whenever a volume is mounted and the medium motion is stopped, the
position is in some partition.  While moving between partitions, there
is no stable position.  

The concept of being at some position indicates being positioned to a
logical or physical extremity of a partition.  A sequential-access
device may be positioned at beginning-of-medium, at BOP x, at end-of-
data (EOD), at EOP x, or at end-of-medium (EOM), since these are stable
positions at extremities of a partition.

The concept of being before some position indicates that there is some
element (data block, filemark, setmark, or other defined point) which
may be encountered when moving toward EOP x, if the proper commands are
issued.  Being positioned before a particular data block means that if
the device receives a valid READ command, the data block is transferred
to the initiator.  This position may also be before EW x and EOP x,
since these are defined points within any partition.  However, if data
has not been written to the end-of-partition, these points may not be
accessible by the initiator.

The concept of being after some position indicates that there is some
element (data block, filemark, setmark, or other defined point) on the
BOP x side of the current position which may be encountered if the
proper commands are issued.  When a READ command for a single data
block has been successfully executed, the logical position is after the
transferred data block.

10.1.8 Error reporting

If any of the following conditions occur during the execution of a
command the target shall return CHECK CONDITION status.  The
appropriate sense key and additional sense code should be set.  The
following list illustrates some error conditions and the applicable
sense keys.  The list does not provide an exhaustive enumeration of all
conditions that may cause the CHECK CONDITION status.

Condition                                                                                   Sense Key
Invalid logical block address                                                                             ILLEGAL
REQUEST

Unsupported option requested                                                                           ILLEGAL
REQUEST

Target reset or medium change since last command from this initiator                                                       
   UNIT ATTENTION

Self diagnostic failed                                                                                    HARDWARE
ERROR

Unrecovered read error                                                                                 MEDIUM
ERROR
                                                                                     HARDWARE ERROR

Recovered read or write error                                                                             RECOVERED
ERROR

Overrun or other error that might be resolved by repeating the command                                                    
ABORTED command

Attempt a WRITE, READ, READ REVERSE, VERIFY, or RECOVER BUFFERED DATA
command
with the fixed bit set to zero and variable block mode is not supported                                                   
ILLEGAL REQUEST

Attempt a WRITE, READ, READ REVERSE, VERIFY, or RECOVER BUFFERED DATA
command with a fixed bit of zero and requested block length is not
supported           ILLEGAL REQUEST

Attempt a WRITE, READ, READ REVERSE, VERIFY, or RECOVER BUFFERED DATA
command with a fixed bit of one and MODE SENSE block length set to zero                                                   
ILLEGAL REQUEST

Attempt to execute an erase or write-type operation on write protected 
medium                                                                                   DATA PROTECT

Deferred write error                                                                                   MEDIUM
ERROR
                                                                                     VOLUME OVERFLOW

In the case of an unrecovered read or write error, if the read-write
error recovery page (10.3.3.4) is implemented, the current values
specify the target error recovery criteria.  If this page is not
implemented, the error recovery is vendor-specific.

In the case of an unrecovered read error, if the fixed bit is one, the
valid bit shall be set to one and the information field shall be set to
the requested transfer length minus the actual number of blocks read
(not including the unrecovered block).  If the fixed bit is zero, the
valid bit shall be set to one and the information field shall be set to
the requested transfer length.  Upon termination, the logical position
shall be after the unrecovered block.

In the case of an unrecovered write error, if unbuffered mode is
selected and the fixed bit is set to one, the valid bit shall be set to
one and the information field shall be set to the requested transfer
length minus the actual number of blocks written.  If unbuffered mode
is selected and the fixed bit is set to zero, the information field
shall be set to the requested transfer length.

In the case of an unrecovered write error or a deferred write error, if
buffered mode is selected and the fixed bit is one, the valid bit shall
be set to one and the information field shall be set to the total
number of blocks, filemarks, and setmarks not written (the number of
blocks not transferred from the initiator plus the number of blocks,
filemarks, and setmarks remaining in the target's buffer).  If buffered
mode is selected and the fixed bit is zero, the information field shall
be set to the total number of bytes, filemarks, and setmarks not
written (the number of bytes not transferred from the initiator plus
the number of bytes, filemarks, and setmarks remaining in the target's
buffer).  In both cases, the value in the information field may exceed
the transfer length.

In the case of an unrecovered write error or a deferred write error, if
buffered mode 1h is selected, the error shall be reported to the first
initiator issuing a command (other than INQUIRY or REQUEST SENSE) or
the first initiator responding to asynchronous event notification.  If
buffered mode 2h is selected, the error shall be reported to the
initiator with unwritten data in the buffer.

10.2 Command descriptions for sequential-access devices

The commands for sequential-access devices shall be as shown in table
174.

              Table 174 - Commands for sequential-access devices
+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| COMPARE                             |    39h     |   O  |   8.2.2    |
| COPY                                |    18h     |   O  |   8.2.3    |
| COPY AND VERIFY                     |    3Ah     |   O  |   8.2.4    |
| ERASE                               |    19h     |   M  |  10.2.1    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOAD UNLOAD                         |    1Bh     |   O  |  10.2.2    |
| LOCATE                              |    2Bh     |   O  |  10.2.3    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| MODE SELECT(6)                      |    15h     |   M  |   8.2.8    |
| MODE SELECT(10)                     |    55h     |   O  |   8.2.9    |
| MODE SENSE(6)                       |    1Ah     |   M  |   8.2.10   |
| MODE SENSE(10)                      |    5Ah     |   O  |   8.2.11   |
| PREVENT ALLOW MEDIUM REMOVAL        |    1Eh     |   O  |   9.2.4    |
| READ                                |    08h     |   M  |  10.2.4    |
| READ BLOCK LIMITS                   |    05h     |   M  |  10.2.5    |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| READ POSITION                       |    34h     |   O  |  10.2.6    |
| READ REVERSE                        |    0Fh     |   O  |  10.2.7    |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| RECOVER BUFFERED DATA               |    14h     |   O  |  10.2.8    |
| RELEASE UNIT                        |    17h     |   M  |  10.2.9    |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| RESERVE UNIT                        |    16h     |   M  |  10.2.10   |
| REWIND                              |    01h     |   M  |  10.2.11   |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| SPACE                               |    11h     |   M  |  10.2.12   |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| VERIFY                              |    13h     |   O  |  10.2.13   |
| WRITE                               |    0Ah     |   M  |  10.2.14   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
| WRITE FILEMARKS                     |    10h     |   M  |  10.2.15   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
+======================================================================+


The following command codes are vendor-specific: 02h, 06h, 07h, 09h,
0Ch, and 0Eh.  All other command codes for sequential-access devices
are reserved for future standardization.

10.2.1 ERASE command

The ERASE command (see table 175) causes part or all of the medium to
be erased beginning at the current position on the logical unit.  As
used here, erased means either the medium shall be erased or a pattern
shall be written on the medium that appears as a gap to the target.

                          Table 175 - ERASE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (19h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |         Reserved          | Immed |  Long  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


An immediate (Immed) bit of zero indicates that the target shall not
return status until the erase operation has completed.  An Immed bit of
one indicates that the target shall return status as soon as the
command has been validated. If CHECK CONDITION status is returned for
an ERASE command with an Immed bit of one, the erase operation shall
not be performed. 

A long bit of one indicates that all remaining medium in the current
partition shall be erased beginning at the current logical position. 
If the Immed bit is one, the target shall return status as soon as all
buffered commands have completed execution and the command descriptor
block of the ERASE command has been validated.  The logical position
following an ERASE command with a long bit of one is not specified by
this standard.

   NOTE 138 Some targets may reject an ERASE command with the long bit set to
   one if the logical unit is not at beginning-of-partition.

A long bit of zero specifies an erase gap defined by the gap size field
in the device configuration page (10.3.3.1).  If the gap size is zero
or the field is not supported, a device defined erase gap operation
shall be performed.  If the Immed bit is one, the target shall return
status as soon as the command descriptor block has been validated. 
Erase gaps may be used in initiator controlled error recovery or update
in place applications. 

If the logical unit encounters early-warning during an ERASE command,
and any buffered data, filemarks, or setmarks remain to be written, the
target action shall be as defined for the early-warning condition of
the WRITE command (10.2.14).  If the long bit is zero, the erase
operation shall terminate with CHECK CONDITION status and return sense
data as defined for the WRITE command.  Any buffered erases are not
reported as part of the information field.

10.2.2 LOAD UNLOAD command

The LOAD UNLOAD command (see table 176) requests that the target enable
or disable the logical unit for further operations.  This command may
also be used to request a retension function.  Prior to performing the
load or unload operation, the target shall ensure that all buffered
data, filemarks, and setmarks have been transferred to the medium.

                       Table 176 - LOAD UNLOAD command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (1Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |              Reserved             | Immed  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved         |   EOT  |  Reten |  Load  |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


An immediate (Immed) bit of zero indicates that the target shall not
return status until the load or unload operation has completed.  An
Immed bit of one indicates that the target shall return status as soon
as all buffered commands have completed execution and the command
descriptor block of the LOAD UNLOAD command has been validated.  If
CHECK CONDITION status is returned for a LOAD UNLOAD command with an
Immed bit of one, the load or unload operation shall not be performed.

   NOTE 139 For compatibility with devices implemented prior to this version
   of the standard, a WRITE FILEMARKS command with an Immed bit of zero
   should be used to ensure that all buffered data, filemarks, or setmarks
   have been transferred to the medium prior to issuing a LOAD UNLOAD command
   with an Immed bit of one.

An end-of-tape (EOT) bit of one indicates that an unload operation
(load bit set to zero) shall position the medium at end-of-medium for
removal from the device.  An EOT bit of zero indicates that an unload
operation shall position the medium at beginning-of-medium for removal
from the device.

An EOT bit of one and a load bit of one shall cause the target to
return CHECK CONDITION status and the sense key shall be set to ILLEGAL
REQUEST in the sense data.

A retension (ReTen) bit of one indicates that the medium on the logical
unit shall have the correct tension applied.  Implementation of the
retension function is device specific.

If the load bit is set to one, the medium in the logical unit shall be
loaded and positioned to the beginning-of-partition zero.  If the load
bit is zero, the medium in the logical unit shall be positioned for
removal at the extreme position along the medium specified by the EOT
bit.  Following successful completion of an unload operation, the
target shall return CHECK CONDITION status with the sense key set to
NOT READY for all subsequent medium-access commands until a new volume
is mounted or a load operation is successfully completed.

When operating in buffered mode 1h or 2h (see 10.3.3), the target shall
discard any unwritten buffered data after the LOAD UNLOAD command is
validated if the previous command was terminated with CHECK CONDITION
status and the device is unable to continue successfully writing. 

10.2.3 LOCATE command

LOCATE command (see table 177) causes the target to position the
logical unit to the specified block address in a specified partition. 
Upon completion, the logical position shall be before the specified
location.  Prior to performing the locate operation, the target shall
ensure that all buffered data, filemarks, and setmarks have been
transferred to the medium.

                          Table 177 - LOCATE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |    Logical unit number   |      Reserved   |   BT   |   CP   | Immed  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 4   |                                                                       |
|-----+---                        Block address                            ---|
| 5   |                                                                       |
|-----+---                                                                 ---|
| 6   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Partition                                   |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


A block address type (BT) bit of one indicates the value in the block
address field shall be interpreted as a device-specific value.  A BT
bit of zero indicates the value in the block address field shall be
interpreted as an SCSI logical block address.

A change partition (CP) bit of one indicates that a change to the
partition specified in the partition field is to occur prior to
positioning to the block specified in the block address field.  A CP
bit of zero indicates no partition change is to be made and the
partition field is to be ignored.

An immediate (Immed) bit of zero indicates that the target shall not
return status until the locate operation has completed.  An Immed bit
of one indicates that the target shall return status as soon as all
buffered commands have completed execution and the command descriptor
block of the LOCATE command has been validated.  If CHECK CONDITION
status is returned for a LOCATE command with an Immed bit of one, the
locate operation shall not be performed.

The block address field (see 10.1.6) specifies the block address to
which the target shall position the medium based on the current setting
of the BT bit.

The partition field specifies which partition to select if the CP bit
is one.  Refer to the sequential-access device model (see 10.1.3) and
the medium partition pages (see 10.3.3.2 and 10.3.3.3) for additional
information about partitioning.

10.2.4 READ command

The READ command (see table 178) requests that the target transfer one
or more block(s) of data to the initiator beginning with the next block
on the logical unit.

                           Table 178 - READ command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (08h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number     |        Reserved         |  SILI  | Fixed  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The fixed bit specifies whether fixed-length or variable-length blocks
are to be transferred.  Refer to the READ BLOCK LIMITS command (see
10.2.5) for additional information about fixed and variable block mode.

If the fixed bit is one, the transfer length specifies the number of
fixed-length blocks to be transferred, using the current block length
reported in the mode parameters block descriptor (see 8.3.3).  If the
fixed bit is zero, a variable-length block is requested with the
transfer length specifying the maximum number of bytes allocated for
the returned data.

A successful READ command with a fixed bit of one shall transfer the
requested transfer length times the current block length in bytes to
the initiator.  A successful READ command with a fixed bit of zero
shall transfer the requested transfer length in bytes to the initiator. 
Upon completion, the logical position shall be after the last block
transferred (end-of-partition side).

If the suppress incorrect length indicator (SILI) bit is one and the
fixed bit is zero, the target shall:
   a)     report CHECK CONDITION status for an incorrect length condition
          only if the overlength condition exists (see 10.4) and the block
          length field in the mode parameter block descriptor is nonzero
          (see 8.3.3).
   b)     not report CHECK CONDITION status if the only error is the
          underlength condition (see 10.4), or if the only error is the
          overlength condition and the block length field of the mode
          parameters block descriptor is zero.

   NOTE 140 Since the residue information normally provided in the
   information field of the sense data may not be available when the SILI bit
   is set, other methods for determining the actual block length should be
   used (e.g. including length information in the data block).

If the SILI bit is one and the fixed bit is one, the target shall
terminate the command with CHECK CONDITION status and the sense key
shall be set to ILLEGAL REQUEST with an additional sense code of
INVALID FIELD IN CDB.

If the SILI bit is zero and an incorrect length block is read, CHECK
CONDITION status shall be returned and the ILI and valid bits shall be
set to one in the sense data.  Upon termination, the logical position
shall be after the incorrect length block (end-of-partition side).  If
the fixed bit is one, the information field shall be set to the
requested transfer length minus the actual number of blocks read (not
including the incorrect length block).  If the fixed bit is zero, the
information field shall be set to the requested transfer length minus
the actual block length.  Targets that do not support negative values
shall set the information field to zero if the overlength  condition
exists (see 10.4).

   NOTE 141 In the above case with the fixed bit of one, only the position of
   the incorrect-length logical block can be determined from the sense data. 
   The actual length of the incorrect block is not reported.  Other means may
   be used to determine its actual length (e.g. read it again with the fixed
   bit set to zero).

A transfer length of zero indicates that no data shall be transferred. 
This condition shall not be considered an error and the logical
position shall not be changed.

If the logical unit encounters a filemark during a READ command, CHECK
CONDITION status shall be returned and the filemark and valid bits
shall be set to one in the sense data.  The sense key shall be set to
NO SENSE or RECOVERED ERROR, as appropriate.  Upon termination, the
logical position shall be after the filemark (end-of-partition side). 
If the fixed bit is one, the information field shall be set to the
requested transfer length minus the actual number of blocks read (not
including the filemark).  If the fixed bit is zero, the information
field shall be set to the requested transfer length. 

If the logical unit encounters a setmark during a READ command and the
RSmk bit is set to one in the device configuration page (see 10.3.3.1),
CHECK CONDITION status shall be returned and the filemark and valid
bits shall be set to one in the sense data.  The sense key shall be set
to NO SENSE or RECOVERED ERROR, as appropriate, and the additional
sense code shall be set to SETMARK DETECTED.  Upon termination, the
logical position shall be after the setmark (end-of-partition side). 
If the fixed bit is one, the information field shall be set to the
requested transfer length minus the actual number of blocks read (not
including the setmark).  If the fixed bit is zero, the information
field shall be set to the requested transfer length.  The target shall
not return CHECK CONDITION when a setmark is encountered if the RSmk
bit is set to zero or if this option is not supported.

If the logical unit encounters early-warning during a READ command and
the REW bit is set to one in the device configuration page (see
10.3.3.1), CHECK CONDITION status shall be returned upon completion of
the current block.  The sense key shall be set to NO SENSE or RECOVERED
ERROR, as appropriate.  The EOM and valid bits shall be set to one in
the sense data.  Upon termination, the logical position shall be after
the last block transferred (end-of-partition side).  If the fixed bit
is one, the information field shall be set to the requested transfer
length minus the actual number of blocks read.  If the fixed bit is
zero, the information field shall be set to the requested transfer
length minus the actual block length.  The target shall not return
CHECK CONDITION status when early-warning is encountered if the REW bit
is zero or if the REW option is not supported.

   NOTE 142 A REW bit of one is not recommended for most system applications
   since read data may be present after early-warning. 

If the logical unit encounters end-of-data during a READ command, CHECK
CONDITION status shall be returned, the sense key shall be set to BLANK
CHECK, and the valid bit shall be set to one in the sense data.  If
end-of-data is encountered at or after early-warning, the EOM bit shall
also be set to one. Upon termination, the logical position shall be
after the last recorded logical block (end-of-partition side).  If the
fixed bit is one, the information field shall be set to the requested
transfer length minus the actual number of blocks read.  If the fixed
bit is zero, the information field shall be set to the requested
transfer length.

If the logical unit encounters end-of-partition during a READ command,
CHECK CONDITION status shall be returned, the sense key shall be set to
MEDIUM ERROR, and the EOM and valid bits shall be set to one in the
sense data. The medium position following this condition is not
defined.  If the fixed bit is one, the information field shall be set
to the requested transfer length minus the actual number of blocks
read. If the fixed bit is zero, the information field shall be set to
the requested transfer length.

10.2.5 READ BLOCK LIMITS command

The READ BLOCK LIMITS command (see table 179) requests that the logical
unit's block length limits capability be returned.  The READ BLOCK
LIMITS data shown in table 180 shall be returned.

                    Table 179 - READ BLOCK LIMITS command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (05h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


                      Table 180 - READ BLOCK LIMITS data
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 1   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 2   |                           Maximum block length limit                  |
|-----+---                                                                 ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Minimum block length limit               ---|
| 5   |                                                                 (LSB) |
+=============================================================================+


If the maximum block length limit value equals the minimum block length
limit value, the logical unit supports the transfer of data in the
fixed-block mode only, with the block length equal to the given value. 
In this case the fixed bit shall be set to one in the WRITE and READ
commands.

If the maximum block length limit value is not equal to the minimum
block length limit value, the logical unit supports the transfer of
data in either fixed-block or variable-block modes, with the block
length constrained between the given limits in either mode.  The
transfer mode is controlled by the fixed bit in the WRITE or READ
commands. If the maximum block limit is zero a maximum block length is
not specified.

10.2.6 READ POSITION command

The READ POSITION command (see table 181) reports the current position
of the logical unit and any data blocks in the buffer.  No medium
movement shall occur as a result of the command.  

                      Table 181 - READ POSITION command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (34h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |             Reserved              |   BT   |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


A block address type (BT) bit of one requests the target to return its
current first block location and last block location as a device-
specific value.  A BT bit of zero requests the target to return the
first block location and the last block location as an SCSI logical
block address (relative to a partition).  

If the logical unit is not capable of reporting block locations, the
BPU bit shall be set to one in the returned data.  Support for this
option of the READ POSITION command is indicated by a BIS bit set to
one in the device configuration page (see 10.3.3.1).

The READ POSITION data shown in table 182 shall be returned.

                    Table 182 - READ POSITION data format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+==========================+========+=================|
| 0   |  BOP   |   EOP  |        Reserved          |  BPU   |     Reserved    |
|-----+-----------------------------------------------------------------------|
| 1   |                          Partition number                             |
|-----+-----------------------------------------------------------------------|
| 2   |                          Reserved                                     |
|-----+-----------------------------------------------------------------------|
| 3   |                          Reserved                                     |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|- - -+---                       First block location                      ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|- - -+---                       Last block location                       ---|
| 11  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 12  |                          Reserved                                     |
|-----+-----------------------------------------------------------------------|
| 13  | (MSB)                                                                 |
|- - -+---                       Number of blocks in buffer                ---|
| 15  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 16  | (MSB)                                                                 |
|- - -+---                       Number of bytes in buffer                 ---|
| 19  |                                                                 (LSB) |
+=============================================================================+


A beginning of partition (BOP) bit of one indicates that the logical
unit is at the beginning-of-partition in the current partition.  A BOP
bit of zero indicates that the current logical position is not at the
beginning-of-partition.  

An end of partition (EOP) bit of one indicates that the logical unit is
positioned between early-warning and end-of-partition in the current
partition.  An EOP bit of zero indicates that the current logical
position is not between early-warning and end-of-partition.

   NOTE 143 The BOP and EOP indications are not necessarily a result of a
   physical tape marker (e.g. reflective marker). 

A block position unknown (BPU) bit of one indicates that the first and
last block locations are not known or cannot be obtained.  A BPU bit of
zero indicates that the first and last block location fields contain
valid position information.

The partition number field reports the partition number for the current
logical position.  If the logical unit only supports one partition for
the medium, this field shall be set to zero.

The first block location field indicates the block address associated
with the current logical position.  The value shall indicate the block
address of the next data block to be transferred between the initiator
and the target if a READ or WRITE command is issued.

The last block location field indicates the block address (see 10.1.6)
associated with the next block to be transferred from the buffer to the
medium.  The value shall indicate the block address of the next data
block to be transferred between the buffer and the medium.  If the
buffer does not contain a whole block of data or is empty, the value
reported for the last block location shall be equal to the value
reported for the first block location.

   NOTE 144 The information provided by the first and last block location
   fields can be used in conjunction with the LOCATE command to position the
   medium at the appropriate logical block on another device in the case of
   unrecoverable errors on the first device.

The number of blocks in buffer field indicates the number of data
blocks in the target's buffer that have not been written to the medium.

The number of bytes in buffer field indicates the total number of data
bytes in the target's buffer that have not been written to the medium.

10.2.7 READ REVERSE command

The READ REVERSE command (see table 183) requests that the target
transfer one or more block(s) of data to the initiator beginning at the
current position on the logical unit.

                       Table 183 - READ REVERSE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (0Fh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |         Reserved         |  SILI  | Fixed  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The execution of this command is similar to the READ command except
that medium motion is in the reverse direction.  All block(s), and the
byte(s) within the block(s), are transferred in the reverse order.  The
order of bits within each byte shall not be changed.  Upon completion
of a READ REVERSE command, the logical position shall be before the
last block transferred (beginning-of-partition side).

Refer to the READ command (see 10.2.4) for a description of the fixed
bit, the SILI bit, the transfer length field, and any associated error
conditions.

Filemarks, setmarks, incorrect length blocks, and unrecovered read
errors are handled the same as in the READ command, except that upon
termination the logical position shall be before the filemark, setmark,
incorrect length block, or unrecovered block (beginning-of-partition
side).

If the logical unit encounters beginning-of-partition during a READ
REVERSE command, CHECK CONDITION status shall be returned and the EOM
and valid bits shall be set to one in the sense data.  The sense key
shall be set to NO SENSE or RECOVERED ERROR, as appropriate.  If the
fixed bit is one, the information field shall be set to the requested
transfer length minus the actual number of blocks transferred.  If the
fixed bit is zero, the information field shall be set to the requested
transfer length.

10.2.8 RECOVER BUFFERED DATA command

The RECOVER BUFFERED DATA command (see table 184) is used to recover
data that has been transferred to the target's buffer but has not been
successfully written to the medium.  It is normally used to recover
from error or exception conditions that make it impossible to write the
buffered data to the medium. One or more RECOVER BUFFERED DATA commands
may be required to recover all unwritten buffered data.

                  Table 184 - RECOVER BUFFERED DATA command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (14h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |         Reserved         |  SILI  | Fixed  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The execution of this command is similar to the READ command except
that the data is transferred from the target's buffer instead of the
medium.  The order in which block(s) are transferred is defined by the
RBO bit in the device configuration page (see 10.3.3.1).  If the RBO
bit is not implemented, block(s) are transferred in the same order they
would have been transferred to the medium.

Refer to the READ command (see 10.2.4) for a description of the fixed
bit, the SILI bit, the transfer length field, and any associated error
conditions.

If the fixed bit is zero, no more than the requested transfer length
shall be transferred to the initiator.  If the requested transfer
length is smaller than the actual length of the logical block to be
recovered, only the requested transfer length shall be transferred to
the initiator and the remaining data for the current logical block
shall be discarded.

   NOTE 145 During recovery operations involving unknown block sizes, the
   initiator should select the maximum block length supported by the target
   to ensure that all buffered data will be transferred and set the fixed bit
   to zero.

If a buffered filemark is encountered during a RECOVER BUFFERED DATA
command, CHECK CONDITION status shall be returned, the sense key shall
be set to NO SENSE, and the filemark and valid bits shall be set to one
in the sense data.  Upon termination, the logical position shall be
after the filemark.  If the fixed bit is one, the information field
shall be set to the requested transfer length minus the actual number
of blocks transferred (not including the filemark).  

If the fixed bit is zero, the information field shall be set to the
requested transfer length.  
If a buffered setmark is encountered during a RECOVER BUFFERED DATA
command and the RSmk bit is set to one in the device configuration page
(see 10.3.3.1), CHECK CONDITION status shall be returned and the
filemark and valid bits shall be set to one in the sense data.  The
sense key shall be set to NO SENSE and the additional sense code shall
be set to SETMARK DETECTED.  Upon termination, the logical position
shall be after the setmark.  If the fixed bit is one, the information
field shall be set to the requested transfer length minus the actual
number of blocks transferred (not including the setmark).  If the fixed
bit is zero, the information field shall be set to the requested
transfer length. The target shall not return CHECK CONDITION when a
setmark is encountered if the RSmk bit is zero or if this option is not
supported.

If an attempt is made to recover more logical blocks of data than are
contained in the target's buffer, CHECK CONDITION status shall be
returned, the sense key shall be set to NO SENSE, and the EOM and valid
bits shall be set to one in the sense data.  If the fixed bit is one,
the information field shall be set to the requested transfer length
minus the actual number of blocks transferred.  If the fixed bit is
zero, the information field shall be set to the requested transfer
length.

10.2.9 RELEASE UNIT command

The RELEASE UNIT command (see table 185) is used to release previously
reserved logical units for the requesting initiator, or if it is a
third-party release, to another specified SCSI device.

                       Table 185 - RELEASE UNIT command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (17h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | 3rdPty | Third party device ID    |Reserved|
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The RESERVE UNIT and RELEASE UNIT commands provide the basic mechanism
for contention resolution in multiple-initiator systems.

If a valid reservation exists for the I_T_L nexus, the target shall
release the reservation and return GOOD status.

A reservation may only be released by the initiator that made it.  It
is not an error to attempt to release a reservation that is not
currently valid or is held by another initiator.  In this case, the
target shall return GOOD status without altering any other reservation.

10.2.9.1 Third-party release 

Third-party release allows an initiator to release a logical unit that
was previously reserved using a third-party reservation (see
10.2.10.1).

If the third party (3rdPty) bit is zero, then a third-party release is
not requested.  If the 3rdPty bit is one, and if the reservation was
made using a third-party reservation by the initiator that is
requesting the release for the same SCSI device as specified in the
third-party device ID, then the target shall release the reservation.

If the 3rdPty bit is one, the target shall not modify the mode
parameters for commands received from the third-party device even if
the target implements the transfer of mode parameters with a third-
party RESERVE UNIT command.

   NOTE 146 When a target implements independent storage of mode parameters
   for each initiator, a third-party RESERVE UNIT command effects a transfer
   of the current mode parameters.  Those set up by the initiator of the
   RESERVE UNIT are to be set as the mode parameters used for commands from
   the third-party device (usually a copy master device).  A unit attention
   condition notifies the third-party device of the changed mode parameters. 
   A successful third-party RELEASE UNIT command leaves the transferred
   parameters intact.  The third-party device can issue MODE SENSE and MODE
   SELECT commands to query and modify the mode parameters.   

10.2.10 RESERVE UNIT command

The RESERVE UNIT command (see table 186) is used to reserve logical
units for the exclusive use of the requesting initiator, or if it is a
third-party reservation, to another specified SCSI device.

                       Table 186 - RESERVE UNIT command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (16h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | 3rdPty | Third party device ID    |Reserved|
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+

The RESERVE UNIT and RELEASE UNIT commands provide the basic mechanism
for contention resolution in multiple-initiator systems.

This command requests that the entire logical unit be reserved for the
exclusive use of the initiator until the reservation is superseded by
another valid RESERVE UNIT command from the initiator that made the
reservation or until released by a RELEASE UNIT command from the same
initiator that made the reservation, by a BUS DEVICE RESET message from
any initiator, by a hard reset condition, or by a power on cycle.  The
reservation shall not be granted if the logical unit is reserved by
another initiator.  It shall be permissible for an initiator to reserve
a logical unit that is currently reserved by that initiator.

If the logical unit is reserved for another initiator, the target shall
return RESERVATION CONFLICT status.  

If, after honouring the reservation, any other initiator attempts to
perform any command on the reserved logical unit other than an INQUIRY,
REQUEST SENSE, PREVENT ALLOW MEDIUM REMOVAL (with a prevent bit of
zero), or a RELEASE UNIT command, the command shall be rejected with
RESERVATION CONFLICT status. 

10.2.10.1 Third-party reservation

Third-party reservation allows an initiator to reserve a logical unit
for another SCSI device.  This is intended for use in multiple-
initiator systems that use the COPY command.  

If the third-party (3rdPty) bit is zero, a third-party reservation is
not requested.  If the 3rdPty bit is one the target shall reserve the
logical unit for the SCSI device specified in the third-party device ID
field. The target shall preserve the reservation until it is superseded
by another valid RESERVE UNIT command from the initiator that made the
reservation or until it is released by the same initiator, by a BUS
DEVICE RESET message from any initiator, or a hard reset condition. 
The target shall ignore any attempt to release the reservation made by
any other initiator.

If independent sets of parameters are implemented, a third party
reservation shall cause the target to transfer the set of parameters in
effect for the initiator of the RESERVE command to the parameters used
for commands from the third-party device.  Any subsequent command
issued by the third-party device is executed according to the mode
parameters in effect for the initiator that sent the RESERVE command.

If independent sets of parameters are implemented, a third party
reservation shall cause the target to transfer the set of parameters in
effect for the initiator of the RESERVE command to the parameters used
for commands from the third party device.  Any subsequent command
issued by the third-party device is executed according to the mode
parameters in effect for the initiator that sent the RESERVE command.

   NOTE 147 This transfer of the mode parameters is applicable to target
   devices which store mode information independently for different
   initiators.  This mechanism allows an initiator to set the mode parameters
   of a target for the use of a copy master (i.e. the third-party device). 
   The third-party copy master may subsequently issue a MODE SELECT command
   to modify the mode parameters.

10.2.10.2 Superseding reservations

An initiator that currently has a logical unit reserved may modify the
current reservation by issuing another RESERVE UNIT command to the same
logical unit.  The superseding reservation shall release the current
reservation if the superseding reservation request is granted.  The
current reservation shall not be modified if the superseding
reservation request cannot be granted.  If the superseding reservation
cannot be granted because of conflicts with a previous reservation
(other than the current reservation), then the target shall return
RESERVATION CONFLICT status.  

   NOTE 148 Superseding reservations allow the third-party SCSI device ID to
   be changed during a reservation using the third-party reservation option. 
   This capability is necessary for certain situations when using COMPARE,
   COPY, and COPY AND VERIFY commands.

10.2.11 REWIND command

The REWIND command (see table 187) causes the target to position the
logical unit to the beginning-of-partition in the current partition. 
Prior to performing the rewind operation, the target shall ensure that
all buffered data, filemarks, and setmarks have been transferred to the
medium.

                          Table 187 - REWIND command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (01h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |              Reserved             | Immed  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


An immediate (Immed) bit of zero indicates that the target shall not
return status until the rewind operation has completed.  An Immed bit
of one indicates that the target shall return status as soon as all
buffered commands have completed execution and the command descriptor
block of the REWIND command has been validated.  If CHECK CONDITION
status is returned for a REWIND command with an Immed bit of one, the
rewind operation shall not be performed.

   NOTE 149 For compatibility with devices implemented prior to this
   standard, it is suggested that a WRITE FILEMARKS command with an Immed bit
   of zero be used to ensure that all buffered data, filemarks, or setmarks
   have been transferred to the medium before issuing a REWIND command with
   an Immed bit of one.

When operating in buffered mode 1h or 2h (see 10.3.3), the target shall
discard any unwritten buffered data after the REWIND command is
validated if the previous command was terminated with CHECK CONDITION
status and the device is unable to continue successfully writing. 

10.2.12 SPACE command

The SPACE command (see table 188) provides a variety of positioning
functions that are determined by the code and count.  Both forward and
reverse positioning are provided, although some targets may only
support a subset of this command.  If an initiator requests an
unsupported function, the command shall be terminated with CHECK
CONDITION status and the sense key shall be set to ILLEGAL REQUEST.

                          Table 188 - SPACE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation  (11h)                            |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |     Reserved    |           Code           |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Count                                       |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The code field is defined in table 189.

                      Table 189 - Code field definition
+=============-========================-=============+
|    Code     |  Description           |  Support    |
|-------------+------------------------+-------------|
|    000b     |  Blocks                |  Mandatory  |
|    001b     |  Filemarks             |  Mandatory  |
|    010b     |  Sequential filemarks  |  Optional   |
|    011b     |  End-of-data           |  Optional   |
|    100b     |  Setmarks              |  Optional   |
|    101b     |  Sequential setmarks   |  Optional   |
| 110b - 111b |  Reserved              |             |
+====================================================+

When spacing over blocks, filemarks, or setmarks, the count field
specifies the number of blocks, filemarks, or setmarks to be spaced
over in the current partition.  A positive value N in the count field
shall cause forward positioning (toward end-of-partition) over N
blocks, filemarks, or setmarks ending on the end-of-partition side of
the last block, filemark, or setmark.  A zero value in the count field
shall cause no change of logical position.  A negative value -N (two's
complement notation) in the count field shall cause reverse positioning
(toward beginning-of-partition) over N blocks, filemarks, or setmarks
ending on the beginning-of-partition side of the last block, filemark,
or setmark.  Support of spacing in the reverse direction is optional. 

If a filemark is encountered while spacing over blocks, the command
shall be terminated.  The logical position shall be on the end-of-
partition side of the filemark if movement was in the forward direction
and on the beginning-of-partition side of the filemark if movement was
in the reverse direction.  CHECK CONDITION status shall be returned to
the initiator, the sense key shall be set to NO SENSE, and the filemark
and valid bits shall be set to one in the sense data.  The information
field shall be set to the requested count minus the actual number of
blocks spaced over (not including the filemark).

If a setmark is encountered while spacing over blocks or filemarks and
the RSmk bit is set to one in the device configuration page (see
10.3.3.1), the command shall be terminated, CHECK CONDITION status
shall be returned to the initiator, and the filemark and valid bits
shall be set to one in the sense data.  The sense key shall be set to
NO SENSE and the additional sense code shall be set to SETMARK
DETECTED.  The information field shall be set to the requested count
minus the actual number of blocks or filemarks spaced over (not
including the setmark).  The logical position shall be on the end-of-
partition side of the setmark if movement was in the forward direction
and on the beginning-of-partition side of the setmark if movement was
in the reverse direction.  The target shall not return CHECK CONDITION
status when a setmark is encountered if the RSmk bit is set to zero or
if this option is not supported.

If early-warning is encountered while spacing over blocks, filemarks,
or setmarks and the REW bit is set to one in the device configuration
page (see 10.3.3.1), CHECK CONDITION status shall be returned, the
sense key shall be set to NO SENSE, and the EOM and valid bits shall be
set to one in the sense data.  The information field shall be set to
the requested count minus the actual number of blocks, filemarks, or
setmarks spaced over as defined by the code value.  If the REW bit is
zero or the option is not supported by the target, the target shall not
report CHECK CONDITION status at the early-warning point.

   NOTE 150 Setting the REW bit is not recommended for most system
   applications since data may be present after early-warning.

If end-of-data is encountered while spacing over blocks, filemarks, or
setmarks, CHECK CONDITION status shall be returned, the sense key shall
be set to BLANK CHECK, and the valid bit shall be set to one in the
sense data.  Additionally, the EOM bit shall be set to one if end-of-
data is encountered at or after early-warning.  The information field
shall be set to the requested count minus the actual number of blocks,
filemarks, or setmarks spaced over as defined by the code value.

If the end-of-partition is encountered while spacing forward over
blocks, filemarks, or setmarks, CHECK CONDITION status shall be
returned, the sense key shall be set to MEDIUM ERROR, the EOM bit shall
be set to one, and the valid bit shall be set to one.  The information
field shall be set to the requested count minus the actual number of
blocks, filemarks, or setmarks spaced over as defined by the code
value.

If beginning-of-partition is encountered while spacing over blocks,
filemarks, or setmarks in the reverse direction, the target shall
return CHECK CONDITION status and shall set the sense key to NO SENSE. 
The EOM and valid bits shall be set to one, and the information field
set to the total number of blocks, filemarks, or setmarks not spaced
over (the requested number of blocks, filemarks, or setmarks minus the
actual number of blocks, filemarks, or setmarks spaced over).

When spacing over sequential filemarks (or setmarks), the count field
is interpreted as follows:
   a)     A positive value N shall cause forward movement to the first
          occurrence of N or more consecutive filemarks (or setmarks) being
          logically positioned after the Nth filemark (or setmark).
   b)     A zero value shall cause no change in the logical position.
   c)     A negative value -N (2's complement notation) shall cause reverse
          movement to the first occurrence of N or more consecutive
          filemarks (or setmarks) being logically positioned on the
          beginning-of-partition side of the Nth filemark (or setmark).

If a setmark is encountered while spacing to sequential filemarks and
the RSmk bit is set to one in the device configuration page (see
10.3.3.1), CHECK CONDITION status shall be returned, the filemark bit
shall be set to one, and the valid bit shall be set to zero.  The sense
key shall be set to NO SENSE and the additional sense code shall be set
to SETMARK DETECTED.  The target shall not return CHECK CONDITION
status when a setmark is encountered if the RSmk bit is set to zero or
if this option is not supported.

If end-of-partition is encountered while spacing to sequential
filemarks or setmarks, CHECK CONDITION status shall be returned, the
sense key shall be set to MEDIUM ERROR, the EOM bit shall be set to
one, and the valid bit shall be set to zero.

If end-of-data is encountered while spacing to sequential filemarks or
setmarks, CHECK CONDITION status shall be returned, the sense key shall
be set to BLANK CHECK, and the valid bit shall be set to zero. 
Additionally, the EOM bit shall be set to one if end-of-data is
encountered at or after early-warning.

When spacing to end-of-data, the count field is ignored.  Upon
successful completion, the medium shall be positioned such that a
subsequent write operation would append to the last logically recorded
information.

If end-of-partition is encountered while spacing to end-of-data, CHECK
CONDITION status shall be returned, the sense key shall be set to
MEDIUM ERROR, the EOM bit shall be set to one, and the valid bit shall
be set to zero.

10.2.13 VERIFY command

The VERIFY command (see table 190) requests that the target verify one
or more block(s) beginning with the next block on the logical unit.

                          Table 190 - VERIFY command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (13h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |    Reserved     | Immed  | BytCmp | Fixed  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Verification length                         |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


An immediate (Immed) bit of zero indicates that the command shall not
return status until the verify operation has completed.  An Immed bit
of one indicates that status shall be returned as soon as the command
descriptor block has been validated (but after the data transfer from
the initiator, if the BytCmp bit is one).  

   NOTE 151 In order to ensure that no errors are lost, the initiator should
   set the Immed bit to zero on the last VERIFY command when issuing a series
   of VERIFY commands.

A byte compare (BytCmp) bit of zero indicates that the verification
shall be simply a medium verification (e.g. CRC, ECC).  No data shall
be transferred from the initiator to the target.

A BytCmp bit of one indicates that the target shall perform a byte-by-
byte compare of the data on the medium and the data transferred from
the initiator.  Data shall be transferred from the initiator to the
target as in a WRITE command.  If the BytCmp bit is one and the byte
compare option is not supported, the target shall terminate the command
with CHECK CONDITION status and the sense key shall be set to ILLEGAL
REQUEST.

The verification length specifies the amount of data to verify, in
blocks or bytes, as indicated by the fixed bit. Refer to the READ
command (see 10.2.4) for a description of the fixed bit and any
associated error conditions. If the BytCmp bit is one and the
verification length is zero, no data shall be verified and the current
logical position shall not be changed.  This condition shall not be
considered as an error.

The VERIFY command shall terminate when the verification length has
been satisfied, when an incorrect length block is encountered, when a
filemark is encountered, when a setmark is encountered (if the RSmk bit
is one in the device configuration page, see 10.3.3.1), when end-of-
data is encountered, when the end-of-partition is encountered, when
early-warning is encountered (if the REW bit is one in the device
configuration page, see 10.3.3.1), or when an unrecoverable read error
is encountered.  The status and sense data for each of these conditions
are handled in the same manner as in the READ command (see 10.2.4). 
Upon successful completion of a VERIFY command, the logical position
shall be after the last block verified.

If the data does not compare (BytCmp bit of one), the command shall
terminate with CHECK CONDITION status, the valid bit shall be set to
one, and the sense key shall be set to MISCOMPARE.  If the fixed bit is
one, the information field shall be set to the requested verification
length minus the actual number of blocks successfully verified.  If the
fixed bit is zero, the information field shall be set to the requested
verification length minus the actual number of bytes successfully
verified.  This number may be larger than the requested verification
length if the error occurred on a previous VERIFY command with an Immed
bit of one.  Upon termination, the medium shall be positioned after the
block containing the miscompare (end-of-partition side).

10.2.14 WRITE command

The WRITE command (see table 191) requests that the target write the
data that is transferred from the initiator to the current position on
the logical unit. 

                          Table 191 - WRITE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (0Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |              Reserved             | Fixed  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The fixed bit specifies whether fixed-length or variable-length blocks
are to be transferred.  See the READ BLOCK LIMITS command (see 10.2.5)
for additional information about fixed and variable block mode.

If the fixed bit is one, the transfer length specifies the number of
fixed-length blocks to be transferred, using the current block length
reported in the mode parameter block descriptor (see 8.3.3).  If the
fixed bit is zero, a single block is transferred with the transfer
length specifying the block length in bytes.

If the transfer length is zero, no data shall be transferred and the
current position on the logical unit shall not be changed.  This
condition shall not be considered an error.

A WRITE command may be buffered or unbuffered, as indicated by the
buffered mode field of the mode parameter header (see 10.3.3).  For
unbuffered operation (buffered mode 0h), the target shall not return
GOOD status until all data block(s) are successfully written to the
medium.  For buffered operation (buffered mode 1h or 2h), the target
may return GOOD status as soon as all data block(s) are successfully
transferred to the target's buffer.

   NOTE 152 For compatibility with devices implemented prior to this version
   of this International Standard, a WRITE FILEMARKS command with the Immed
   bit set to zero should be issued when completing a buffered write
   operation to ensure that all buffered data, filemarks, and setmarks are
   written to the medium.

If the logical unit encounters early-warning during a WRITE command, an
attempt to finish writing any data may be made, as determined by the
current settings of the REW and SEW bits in the device configuration
page (see 10.3.3.1).  The command shall terminate with CHECK CONDITION
status and the EOM and valid bits shall be set to one in the sense
data.  If all data that is to be written is successfully transferred to
the medium, the sense key shall be set to NO SENSE or RECOVERED ERROR,
as appropriate.  If any data that is to be written cannot be
transferred to the medium when early-warning is encountered, the sense
key shall be set to VOLUME OVERFLOW.

The information field shall be defined as follows:
   a)     If unbuffered mode is reported in the mode parameter header and
          the fixed bit is set to one, the information field shall be set
          to the requested transfer length minus the actual number of
          blocks written.
   b)     If unbuffered mode is reported and the fixed bit is set to zero,
          the information field shall be set to the requested transfer
          length.
   c)     If buffered mode is reported in the mode parameter header and the
          fixed bit is set to one, the information field shall be set to
          the total number of blocks, filemarks, and setmarks not written
          (the number of blocks not transferred from the initiator plus the
          number of blocks, filemarks, and setmarks remaining in the
          target's buffer).  Note that the value in the information field
          may exceed the transfer length.
   d)     If buffered mode is reported and the fixed bit is set to zero,
          the information field shall be set to the total number of bytes,
          filemarks, and setmarks not written (the number of bytes not
          transferred from the initiator plus the number of bytes,
          filemarks, and setmarks remaining in the target's buffer).  

   NOTES   
   153 The value in the information field may exceed the transfer length.
   154 The target should ensure that some additional data can be written to the
   medium (e.g. labels, filemarks, or setmarks) after the first early-warning
   indication has been returned to the initiator.

If a WRITE command is received while the logical unit is positioned
between early-warning and end-of-partition, the target shall return
CHECK CONDITION status after attempting to perform the command.  The
EOM and valid bits shall be set to one in the sense data.  If all data
that is to be written is successfully transferred to the medium, the
information field shall be set to zero.  If any data that is to be
written is not transferred to the medium prior to encountering end-of-
partition, the sense key shall be set to VOLUME OVERFLOW and the
information field shall be defined as follows:
   a)     If the fixed bit is one, the information field shall be set to
          the requested transfer length minus the actual number of blocks
          written to the medium.
   b)     If the fixed bit is zero, the information field shall be set to
          the requested transfer length.

   NOTE 155 In some systems it is important to recognize an error if end-of-
   partition is encountered during execution of a WRITE command, without
   regard for whether all data that is to be written is successfully
   transferred to the medium.  By its definition, the VOLUME OVERFLOW sense
   key may always validly be returned if end-of-partition is encountered
   while writing, and such usage is recommended.  Reporting the MEDIUM ERROR
   sense key, as was done in some SCSI-1 implementations, may cause confusion
   as to whether there was really defective medium encountered during
   execution of the last write command.

10.2.15 WRITE FILEMARKS command

The WRITE FILEMARKS command (see table 192) requests that the target
write the specified number of filemarks or setmarks to the current
position on the logical unit.

                     Table 192 - WRITE FILEMARKS command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (10h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |         Reserved         |  WSmk  | Immed  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


If the Write Setmark (WSmk) bit is one, the transfer length specifies
the number of setmarks to be written.  If the WSmk bit is zero, the
transfer length specifies the number of filemarks to be written.

An immediate (Immed) bit of one indicates that the target shall return
status as soon as the command descriptor block has been validated.  An
Immed bit of one is only valid if buffered mode is reported in the mode
parameter header (see 10.3.3).

An Immed bit of zero indicates that the target shall not return status
until the write operation has completed.  Any buffered data, filemarks,
and setmarks shall be written to the medium prior to completing the
command.

   NOTE 156 Upon completion of any buffered write operation, the initiator
   can issue a WRITE FILEMARKS command with the Immed bit set to zero and the
   transfer length field set to zero to ensure that all buffered data,
   filemarks, and setmarks are successfully written to the medium.

If the logical unit encounters early-warning during a WRITE FILEMARKS
command, an attempt to finish writing any buffered data, filemarks, or
setmarks may be made, as determined by the current settings of the REW
and SEW bits in the device configuration page (see 10.3.3.1).  The
command shall terminate with CHECK CONDITION status and the EOM and
valid bits shall be set to one in the sense data.  If all buffered
data, filemarks, and setmarks are successfully transferred to the
medium, the sense key shall be set to NO SENSE or RECOVERED ERROR, as
appropriate. If any buffered data, filemarks, or setmarks to be written
are not transferred to the medium when early-warning is encountered,
the sense key shall be set to VOLUME OVERFLOW.

The information field shall be defined as follows:
   a)     If unbuffered mode is reported in the mode parameter header, the
          information field shall be set to the requested transfer length
          minus the actual number of filemarks or setmarks written.
   b)     If buffered mode is reported in the mode parameter header and the
          buffered data was written in variable block mode (see 10.2.14),
          the information field shall be set to the total number of bytes,
          filemarks, and setmarks not written (the number of filemarks or
          setmarks not transferred from the initiator plus the number of
          bytes, filemarks and setmarks remaining in the target's buffer). 
          Note that it is possible for the value in the information field
          to exceed the transfer length.
   c)     If buffered mode is reported and the buffered data was written in
          fixed block mode (see 10.2.14), the information field shall be
          set to the total number of blocks, filemarks, and setmarks not
          written (the number filemarks or setmarks not transferred from
          the initiator plus the number of blocks, filemarks, and setmarks
          remaining in the target's buffer).  Note that it is possible for
          the value in the information field to exceed the transfer length.

   NOTE 157 The target should ensure that some additional data can be written
   to the medium (e.g. labels, filemarks, or setmarks) after the first early-
   warning indication has been returned to the initiator.

If a WRITE FILEMARKS command is received while the logical unit is
positioned between early-warning and end-of-partition, the target shall
return CHECK CONDITION status after attempting to perform the command. 
The EOM and valid bits shall be set to one in the sense data.  If all
filemarks or setmarks to be written are successfully transferred to the
medium, the information field shall be set to zero.  If any filemarks
or setmarks to be written are not transferred to the medium prior to
encountering end-of-partition, the sense key shall be set to VOLUME
OVERFLOW and the information field shall be set to the requested
transfer length minus the actual number of filemarks or setmarks
written to the medium.

10.3 Parameters for sequential-access devices

   
10.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic
parameters used with sequential-access devices. 

The diagnostic page codes for sequential-access devices are defined in
table 193.

                      Table 193 - Diagnostic page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     00h     |  Supported diagnostic pages                      |  8.3.1.1   |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|  40h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+


10.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters
used with sequential-access devices. 

The log page codes for sequential-access devices are defined in table
194.

                          Table 194 - Log page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |  8.3.2.1   |
|     02h     |  Error counter page (write) page                 |  8.3.2.2   |
|     03h     |  Error counter page (read) page                  |  8.3.2.2   |
|     04h     |  Error counter page (read reverse) page          |  8.3.2.2   |
|     05h     |  Error counter page (verify) page                |  8.3.2.2   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|     06h     |  Non-media error page                            |  8.3.2.4   |
|     00h     |  Supported log pages                             |  8.3.2.5   |
|  08h - 2Fh  |  Reserved                                        |            |
|     3Fh     |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific                                 |            |
+=============================================================================+


10.3.3 Mode parameters

This subclause defines the descriptors and pages for mode parameters
used with sequential-access devices. 

The mode parameter list, including the mode parameter header and mode
block descriptor, are described in 8.3.3.

The medium-type code field in the mode parameter header is reserved for
sequential-access devices.

The device-specific parameter byte of the mode parameter header (see
8.3.3) is defined in table 195 for sequential-access devices.

                    Table 195 - Device-specific parameter 
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|=====+========+==========================+===================================|
|     |   WP   |      Buffered mode       |               Speed               |
+=============================================================================+


When used with the MODE SENSE command, a write protect (WP) bit of zero
indicates that medium is write enabled.  A WP bit of one indicates that
the medium is write protected.  When used with the MODE SELECT command,
this field is not defined.

Values for the buffered mode field are defined in table 196.


                          Table 196 - Buffered modes
+===========-=================================================================+
|  Code     |  Description                                                    |
|-----------+-----------------------------------------------------------------|
|   0h      |  The target shall not report GOOD status on write commands until|
|           |  the data blocks are actually written on the medium.            |
|           |                                                                 |
|   1h      |  The target may report GOOD status on write commands as soon as |
|           |  as all the data specified in the write command has been        |
|           |  transferred to the target's buffer.  One or more blocks may be |
|           |  buffered prior to writing the block(s) to the medium.          |
|           |                                                                 |
|   2h      |  The target may report GOOD status on write commands as soon as:|
|           |     a) All the data specified in the write command has been     |
|           |    successfully transferred to the target's buffer, and         |
|           |     b) All buffered data from different initiators has been     |
|           |    successfully written to the medium.                          |
|           |                                                                 |
|  3h - 7h  |  Reserved                                                       |
+=============================================================================+


Values for the speed field shall be assigned as defined in table 197.

                      Table 197 - Speed field definition
+===========-=================================================================+
|  Code     |  Description                                                    |
|-----------+-----------------------------------------------------------------|
|     0h    |  Default (Use the peripheral device's default speed).           |
|     1h    |  Use the peripheral device's lowest speed.                      |
|  2h - Fh  |  Use increasing peripheral device speeds.                       |
+=============================================================================+


For the MODE SELECT command, the density code field of the sequential-
access device block descriptor (8.3.3) indicates the density selected
by the initiator for use in subsequent read and write operations.  For
devices capable of automatic density recognition, the density code
selected by the initiator may be overridden by the target for a
subsequent read operation if the selected value does not match the
current recorded density of the medium.  If the MODE SELECT command
specifies the default density code the device selects the actual
density code to be used in a vendor-specific manner.  The value is
expected to be the principal density code (or an optimal density code).

For the MODE SENSE command, the density code field reflects the current
operating density of the device.  If a current operating density has
not been selected, either because no medium is installed or because the
density of the installed medium has not been determined, the density
code field should be set to the principal density code value.  The
principal density code is the highest density code supported, the
optimal density code supported, or the most common density code
supported.  In some devices, the principal density code value returned
in response to a MODE SENSE command may change dynamically to match the
most recently selected density.  The density code value returned in
response to a MODE SENSE command shall be as described below:
   a)     Following a UNIT ATTENTION condition for a power on or hard reset
          condition, while not ready, the target shall report the principal
          density.
   b)     Following a UNIT ATTENTION condition for a not-ready-to-ready
          transition, the target shall:
       1)    report the principal density if no attempt has been made by the
             target to determine the density;
       2)    report the principal density if the target cannot automatically
             determine the density from the medium;
       3)    report the current medium density if the target has determined


 the density from the medium.
   c)     Following a successful read operation at or after beginning-of-
          medium, the target shall report a density code value reflecting
          the recorded density of the medium.  For some implementations,
          the target may automatically determine this value from the
          medium.  For devices not capable of automatic density
          determination, the principal density is reported if the density
          code value is not provided by the preceding MODE SELECT command.
   d)     Following an unsuccessful read operation or a successful write
          operation, while at beginning-of-partition, the target shall:
       1)    report a density code value as described for item b) if a
             previous MODE SELECT command has not established a density code
             for the currently mounted volume;
       2)    report a density code value as provided by the last successful
             MODE SELECT command for the currently mounted volume.
   e)     Following a successful unload operation the target shall report
          the most recent density code value as determined by items b)
          through d) above.

Table 198 lists the sequential-access device density codes 

                 Table 198 - Sequential-access density codes
+==========-======================================================================-====+
|Code value|                           Description                                |Note|
|----------+----------------------------------------------------------------------+----|
|   00h    | Default density (MODE SELECT command only)                           |    |
|   0Eh    | Reserved for ECMA                                                    |    |
|15h - 7Eh | Reserved                                                             |    |
|   7Fh    | No change from previous density (NO-OP)                              |  7 |
|80h - FFh | Vendor-specific                                                      |    |
|          |----------------------------------------------------------------------+----|
|          |               Descriptions for magnetic tapes                        |    |
|          |----------------------------------------------------------------------|    |
|          |Width      mm(in) |Tracks|Density     bpmm(bpi)|Code|Type|Reference   |    |
|          |------------------+------+---------------------+----+----+------------|    |
|   01h    |12,7      (0,5)   |   9  |     32        (800) |NRZI| R  |X3.22-1983  |  2 |
|   02h    |12,7      (0,5)   |   9  |     63      (1 600) |PE  | R  |X3.39-1986  |  2 |
|   03h    |12,7      (0,5)   |   9  |    246      (6 250) |GCR | R  |X3.54-1986  |  2 |
|   05h    | 6,3      (0,25)  |  4/9 |    315      (8 000) |GCR | C  |X3.136-1986 |  1 |
|   06h    |12,7      (0,5)   |   9  |    126      (3 200) |PE  | R  |X3.157-1987 | 2,4|
|   07h    | 6,3      (0,25)  |   4  |    252      (6 400) |IMFM| C  |X3.116-1986 |  1 |
|   08h    | 3,81     (0,15)  |   4  |    315      (8 000) |GCR | CS |X3.158-1987 | 1,4|
|   09h    |12,7      (0,5)   |  18  |  1 491     (37 871) |GCR | C  |X3B5/87-099 | 2,4|
|   0Ah    |12,7      (0,5)   |  22  |    262      (6 667) |MFM | C  |X3B5/86-199 | 1,4|
|   0Bh    | 6,3      (0,25)  |   4  |     63      (1 600) |PE  | C  |X3.56-1986  |  1 |
|   0Ch    |12,7      (0,5)   |  24  |    500     (12 690) |GCR | C  |HI-TC1      | 1,6|
|   0Dh    |12,7      (0,5)   |  24  |    999     (25 380) |GCR | C  |HI-TC2      | 1,6|
|   0Fh    | 6,3      (0,25)  |  15  |    394     (10 000) |GCR | C  |QIC-120     | 1,6|
|   10h    | 6,3      (0,25)  |  18  |    394     (10 000) |GCR | C  |QIC-150     | 1,6|
|   11h    | 6,3      (0,25)  |  26  |    630     (16 000) |GCR | C  |QIC-320     | 1,6|
|   12h    | 6,3      (0,25)  |  30  |  2 034     (51 667) |RLL | C  |QIC-1350    | 1,6|
|   13h    | 3,81     (0,15)  |   1  |  2 400     (61 000) |DDS | CS |X3B5/88-185A|  5 |
|   14h    | 8,00     (0,315) |   1  |  1 703     (43 245) |RLL | CS |X3.202-1991 |  5 |
|   15h    | 8,00     (0,315) |   1  |  1 789     (45 434) |RLL | CS |ECMA TC17   |  5 |
|   16h    |12,7      (0,5)   |  48  |    394     (10 000) |MFM | C  |X3.193-1990 | 1,4|
|   17h    |12,7      (0,5)   |  48  |  1 673     (42 500) |MFM | C  |X3B5/91-174 | 1,4|
|--------------------------------------------------------------------------------------|
|   Code  Description                                              Type  Description   |
|   ----  ---------------------------------------                  ----  ------------  |
|   NRZI  Non return to zero, change on ones                         R   Reel-to-reel  |
|   GCR   Group code recording                                       C   Cartridge     |
|   PE    Phase encoded                                              CS  Cassette      |
|   IMFM  Inverted modified frequency modulation                                       |
|   MFM   Modified frequency modulation                                                |
|   DDS   DAT data storage                                                             |
|   RLL   Run length limited                                                           |
|--------------------------------------------------------------------------------------|
| NOTES                                                                                |
|  1   Serial recorded.                                                                |
|  2   Parallel recorded.                                                              |
|  3   Old format known as QIC-11.                                                     |
|  4   See annex D for additional standards information.                               |
|  5   Helical scan                                                                    |
|  6   This is not an American National Standard.  The reference is based              |
|      on an industry standard definition of the media format.                         |
|  7   This density code value is defined for the MODE SELECT command and              |
|      shall not be returned by the MODE SENSE command.                                |
+======================================================================================+


The mode page codes for sequential-access devices are defined in table
199.

                         Table 199 - Mode page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     0Ah     |  Control mode page                               |  8.3.3.1   |
|     10h     |  Device configuration page                       | 10.3.3.1   |
|     02h     |  Disconnect-reconnect page                       |  8.3.3.2   |
|     11h     |  Medium partition page(1)                        | 10.3.3.2   |
|     12h     |  Medium partition page(2)                        | 10.3.3.3   |
|     13h     |  Medium partition page(3)                        | 10.3.3.3   |
|     14h     |  Medium partition page(4)                        | 10.3.3.3   |
|     09h     |  Peripheral device page                          |  8.3.3.3   |
|     01h     |  Read-write error recovery page                  | 10.3.3.4   |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  03h - 08h  |  Reserved                                        |            |
|  0Bh - 0Fh  |  Reserved                                        |            |
|  15h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+


10.3.3.1 Device configuration page

The device configuration page (see table 200) is used to specify the
appropriate sequential-access device configuration.

                    Table 200 - Device configuration page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (10h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length (0Eh)                           |
|-----+-----------------------------------------------------------------------|
| 2   |Reserved|  CAP   |  CAF   |                Active format               |
|-----+-----------------------------------------------------------------------|
| 3   |                           Active partition                            |
|-----+-----------------------------------------------------------------------|
| 4   |                           Write buffer full ratio                     |
|-----+-----------------------------------------------------------------------|
| 5   |                           Read buffer empty ratio                     |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        Write delay time                         ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   |  DBR   |  BIS   |  RSmk  |  AVC   |      SOCF       |   RBO  |  REW   |
|-----+-----------------------------------------------------------------------|
| 9   |                           Gap size                                    |
|-----+-----------------------------------------------------------------------|
| 10  |      EOD defined         |  EEG   |  SEW   |        Reserved          |
|-----+-----------------------------------------------------------------------|
| 11  | (MSB)                                                                 |
|-----+---                                                                 ---|
| 12  |                           Buffer size at early warning                |
|-----+---                                                                 ---|
| 13  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 14  |                           Select data compression algorithm           |
|-----+-----------------------------------------------------------------------|
| 15  |                           Reserved                                    |
+=============================================================================+


A change active partition (CAP) bit of one indicates that the logical
partition is to be changed to the one specified by the active partition
field. A CAP bit of zero indicates no partition change is specified.

A change active format (CAF) bit of one indicates that the active
format is to be changed to the value specified in the active format
field.  A CAF bit of zero indicates no active format change is
specified.  For some devices, the format may only be changed when the
logical unit is at beginning-of-partition.

 The active format field indicates which recording format is in use for
the selected density code when reading or writing data on a logical
unit.  The value of the active format field is vendor-specific.  

The active partition field indicates the current logical partition
number in use on the medium.

The write buffer full ratio, on WRITE commands, indicates to the target
how full the buffer shall be before writing data to the medium.  A
value of zero indicates that the value is not specified.

The read buffer empty ratio, on READ commands, indicates to the target
how empty the buffer shall be before retrieving additional data from
the medium.  A value of zero indicates that the value is not specified.

The write delay time indicates the maximum time, in 100 ms increments,
that the target should wait before any buffered data that is to be
written, is forced to the medium after the last buffered WRITE command
that did not cause the buffer to exceed the buffer full ratio.  A value
of zero indicates that the target shall never force buffered data to
the medium under these conditions.

A data buffer recovery (DBR) bit of one indicates that the target
supports data buffer recovery using the RECOVER BUFFERED DATA command. 
A DBR bit of zero indicates that the target does not support data
buffer recovery.  This bit is target-defined.

A block identifiers supported (BIS) bit of zero indicates that block
IDs are not supported in the format written on the medium.  A BIS bit
of one indicates that the format on the medium has recorded information
about the block IDs relative to a partition.  This bit is target-
defined.

A report setmarks (RSmk) bit of one indicates that the target shall
recognize and report setmarks during appropriate read or space
operations.  A RSmk bit of zero indicates that the target shall not
report setmarks.

The automatic velocity control (AVC) bit of one, indicates that the
device shall select the speed (if the device supports more than one
speed) based on the data transfer rate that should optimize streaming
activity and minimize medium repositioning.  An AVC bit of zero
indicates the speed chosen should be the device's default speed.

A stop on consecutive filemarks (SOCF) field of 00b indicates that the
device shall pre-read data from the medium in buffered mode to the
limits of the buffer capacity without regard for filemarks.  This
implies that the device can differentiate between data blocks and
filemarks in the buffer.  Values 01b, 10b, and 11b specify that the
device shall terminate the pre-read operation if one, two, or three
consecutive filemarks are detected, respectively.  If the RSmk bit is
one, the target shall interpret this field as stop on consecutive
setmarks.

A recover buffer order (RBO) bit of one indicates that data blocks
shall be returned from the target's buffer on a RECOVERED BUFFERED DATA
command in LIFO order (last-in-first-out) from which they were written
to the buffer.  A RBO bit of zero indicates data blocks shall be
returned in FIFO (first-in-first-out) order.

A report early-warning (REW) bit of zero indicates that the target
shall not report the early-warning condition for read operations and it
shall report early-warning at or before any medium-defined early-
warning position during write operations. 

A REW bit of one indicates that the target shall return CHECK CONDITION
status with the EOM bit set in the sense data when the early-warning
position is encountered during read and write operations.  If the REW
bit is one and the SEW bit is zero, the target shall return CHECK
CONDITION status with the sense key set to VOLUME OVERFLOW when early-
warning is encountered during write operations.

   NOTE 158 A REW bit of one is intended for compatibility with those systems
   using old tape formats that require an early-warning indication during
   read operations.  Other systems should set this bit to zero to avoid
   potential data loss when interchanging tapes between peripheral devices.

The GapSize field value determines the size of the inter-block gap when
writing data.  A value of 00h specifies the device's defined gap size. 
A value of 01h specifies a device defined gap size sufficiently long to
support update-in-place.  Values of 02h through 0Fh are multipliers on
the device's defined gap size.  Values 10h through 7Fh are reserved. 
Values 80h through FFh are vendor-specific.

The end-of-data (EOD) defined field indicates which format type the
logical unit shall use to detect and generate the EOD area.  The types
of EOD formats are specified in table 201.

                           Table 201 - EOD formats
+=============-===================================================+
|    Value    |  Description                                      |
|-------------+---------------------------------------------------|
|     000b    |  Logical unit's default EOD definition            |
|     001b    |  Format-defined erased area of medium             |
|     010b    |  As specified in the SOCF field                   |
|     011b    |  EOD recognition and generation is not supported  |
| 100b - 111b |  Reserved                                         |
+=================================================================+


An enable EOD generation (EEG) bit set to one indicates that the
logical unit shall generate the appropriate EOD area, as determined by
the EOD defined field. A value of zero indicates that EOD generation is
disabled.

   NOTE 159 Some logical units may not generate EOD at the completion of any
   write-type operation.

The synchronize at early-warning (SEW) bit set to one indicates that
the target shall cause any buffered write data, filemarks, or setmarks
to be transferred to the medium when early-warning is encountered. A
value of zero indicates that the target shall retain any unwritten
buffered data, filemarks, or setmarks in the buffer when early-warning
is encountered (see the WRITE command, 10.2.14, and the WRITE FILEMARKS
command, 10.2.15).

The buffer size at early-warning field indicates the value, in bytes,
to which the target shall reduce its logical buffer size when writing. 
The target should reduce the buffer size only when the logical unit is
positioned between its early-warning and end-of-partition.  A value of
zero indicates that the implementation of this function is device
specific.  

   NOTE 160 The intent is to prevent the loss of data by limiting the size of
   the buffer when near the end-of-partition.

The select data compression algorithm field set to 00h indicates that
the target shall not use a compression algorithm on any data sent to it
prior to writing the data to the medium.  A value of 01h indicates that
the data to be written shall be compressed using the target's default
compression algorithm.  Values 02h through 7Fh are reserved.  Values
80h through FFh are vendor-specific.

10.3.3.2 Medium partition page(1)

The medium partition page(1) (see table 202) is used to specify the
first group of medium partitions.  Additional groups are specified in
medium partition pages(2-4).

                     Table 202 - Medium partition page(1)
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (11h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length                                 |
|-----+-----------------------------------------------------------------------|
| 2   |                           Maximum additional partitions               |
|-----+-----------------------------------------------------------------------|
| 3   |                           Additional partitions defined               |
|-----+-----------------------------------------------------------------------|
| 4   |  FDP   |  SDP   |  IDP   |       PSUM      |       Reserved           |
|-----+-----------------------------------------------------------------------|
| 5   |                           Medium format recognition                   |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|=====+=======================================================================|
|     |                   Partition size descriptor(s)                        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|-----+---                        Partition size                           ---|
| 1   |                                                                 (LSB) |
+=============================================================================+


The maximum additional partitions field is a target-defined value
indicating the maximum number of additional partitions supported by the
logical unit.  A value of zero indicates that no value is specified.

The additional partitions defined field specifies the number of
additional partitions to be defined for a volume when the SDP or IDP
bit is set to one.  The maximum value allowed is the value returned in
the maximum additional partitions field.

A fixed data partitions (FDP) bit of one indicates that the device
assigns partitions based on its fixed definition of partitions. 
Setting this bit to one may only be valid at beginning-of-partition and
is mutually exclusive with the SDP and IDP bits.

A select data partitions (SDP) bit of one indicates that the device is
to partition the medium into the number of partitions as specified by
the additional partitions defined field using partition sizes defined
by the device.  Setting this bit to one may only be valid at beginning-
of-partition and it is mutually exclusive with the FDP and IDP fields.

An initiator-defined partitions (IDP) bit of one indicates that the
initiator is defining the number and size of the data partitions using
the additional partitions defined field and the partition size
descriptors. Setting this bit to one may only be valid at beginning-of-
partition and is mutually exclusive with the FDP and SDP fields.

   NOTE 161 Since defining partitions may require reformatting the medium for
   some implementations, an implicit write to the medium may occur as a
   result of a MODE SELECT command that supplies any of these parameters.

Partition size unit of measure (PSUM) field defines the units in which
the partition size descriptors select the partition size.  The values
00b, 01b, and 10b define the units as bytes, kilobytes, and megabytes,
respectively.  The value 11b is reserved.

 The medium format recognition field is a target-defined value
indicating the device's capability to automatically identify the medium
format and partition information when reading an unknown volume.

Values for the medium format recognition field shall be assigned as
follows:
   a)     00h       Logical unit is incapable of format or partition
                    recognition.
   b)     01h       Logical unit is capable of format recognition only.
   c)     02h       Logical unit is capable of partition recognition only.
   d)     03h       Logical unit is capable of format and partition
                    recognition.
       e)    04h - FFh            Reserved.

   NOTE 162 If a target indicates that it is not capable of medium format
   recognition, the initiator must supply all necessary parameters for the
   device to identify the specific format.  The value in this field may be
   different following a medium change.

Partition size descriptors define the size of the respective partitions
in the units specified in the PSUM field.  Up to 64 partitions may be
defined using this page.  If additional partitions need to be defined,
up to 64 partitions can be defined in each of the medium partition
pages(2-4) defined in 10.3.3.3.

10.3.3.3 Medium partition page(2-4)

The medium partition page(2-4) (see table 203) is used to specify
additional groups of medium partitions.  The first group is specified
in the medium partition page(1) (see 10.3.3.2).

                    Table 203 - Medium partition page(2-4)
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (12h, 13h, 14h)                   |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length                                 |
|=====+=======================================================================|
|     |                       Partition size descriptor(s)                    |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|-----+---                        Partition size                           ---|
| 1   |                                                                 (LSB) |
+=============================================================================+


The additional page codes defined for partition size definition are
12h, 13h, and 14h.  Up to a maximum of 64 partitions can be defined in
each of these pages.  The partition size is defined by the value of the
partition size field.  The units of size used by the partition size
field is specified in the PSUM field of the medium partition page(1)
(see 10.3.3.2).

   NOTE 163 Since defining partitions may require reformatting the medium for
   some implementations, an implicit write to the medium may occur as a
   result of a MODE SELECT command that supplies these parameters. 

10.3.3.4 Read-write error recovery page

The read-write error recovery page (see table 204) specifies the error
recovery and reporting parameters that the target shall use when
transferring data between the initiator and the medium.  These
parameters only apply to read-write errors and do not affect message
system retries or positioning error recovery procedures.

                  Table 204 - Read-write error recovery page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (01h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Page length (0Ah)                           |
|-----+-----------------------------------------------------------------------|
| 2   |Reserved|Reserved|   TB   |Reserved|  EER   |  PER   |  DTE   |  DCR   |
|-----+-----------------------------------------------------------------------|
| 3   |                           Read retry count                            |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Write retry count                           |
|-----+-----------------------------------------------------------------------|
| 9   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Reserved                                    |
|-----------------------------------------------------------------------------|
|   NOTE - The parameters in this page also apply to verify operations.       |
+=============================================================================+


A transfer block (TB) bit of one indicates that a data block that is
not recoverable within the specified recovery limits shall be
transferred to the initiator before CHECK CONDITION status is returned. 
A TB bit of zero indicates that the unrecoverable data block shall not
be transferred to the initiator.  Data blocks that can be recovered
within the recovery limits are always transferred, regardless of the
value of the TB bit.

An enable early recovery (EER) bit of one indicates that the target
shall use the most expedient error recovery algorithm (e.g. attempt
error correction prior to retries).  An EER bit of zero indicates that
the target shall use the most deliberate error recovery algorithm,
within the limits established by the other error recovery parameters
(e.g. attempt to recover the block error-free prior to using error
correction).

A post error (PER) bit of one indicates that the target shall return
CHECK CONDITION status to report recovered errors.  A PER bit of zero
indicates that the target shall not report errors recovered within the
limits established by the error recovery parameters.  If this bit is
zero, the DTE bit must also be set to zero.

A disable transfer on error (DTE) bit of one indicates that the target
shall terminate the data transfer after a recovered read-write error
occurs.  All data from the recovered block shall be transferred prior
to terminating the read-write operation.  A DTE bit of zero indicates
that the target shall not terminate the transfer for errors recovered
within the limits established by the read-write error recovery
parameters.

A disable correction (DCR) bit of one indicates that the target shall
not use error correction codes during error recovery.  A DCR bit of
zero allows the use of error correction codes for error recovery.

The read retry count specifies the number of times that the target
should attempt its recovery algorithm during a read operation before an
unrecoverable error is reported.  A read retry count of zero indicates
that the target shall not use its recovery algorithm during read
operations.

The write retry count specifies the number of times that the target
should attempt its recovery algorithm during a write operation before
an unrecoverable error is reported.  A write retry count of zero
indicates that the target shall not use its recovery algorithm during
write operations.

10.4 Definitions specific to sequential access devices

10.4.1 beginning-of-partition:  The position at the beginning of the
permissible recording region of a partition.  If only one partition is
defined, this position is typically equivalent to the beginning-of-
medium.

10.4.2 beginning-of-medium:  The extreme position along the medium in
the direction away from the supply reel which can be accessed by the
device. 

10.4.3 buffered mode:  A mode of data transfer in write operations
which facilitates tape streaming (10.1.5), as reported in the mode
parameter header device-specific parameter (10.3.3).

10.4.4 early-warning:  A physical mark or device computed position near
but logically before the end-of-partition (independent of physical
direction).  See the REW bit in the device configuration page in
10.3.3.1.

10.4.5 end-of-data:  End of data in a partition is denoted in format-
specific manner. See the EOD defined field in the device configuration
page in 10.3.3.1.

10.4.6 end-of-medium:  The extreme position along the medium in the
direction away from the take-up reel which can be accessed by the
device.  This position may be accessed by devices that support the LOAD
UNLOAD command with the EOT bit set to one.

10.4.7 end-of-partition:  The position at the end of the permissible
recording region of a partition.

10.4.8 filemark:  A special recorded element within a partition,
containing no user data, which provides a segmentation scheme.

10.4.9 overlength:  The incorrect length condition that exists after
executing a read command when the length of the actual block read
exceeds the requested transfer length in the command descriptor block.

10.4.10 partition:  The entire usable region of recording and reading
paths in a volume or in a portion of a volume, defined in a device-
specific manner.  If there is more than one partition, they shall be
numbered starting with zero (i.e. beginning-of-partition-zero).

10.4.11 setmark:  A special recorded element within a partition,
containing no user data, which provides a segmentation scheme
hierarchically superior to filemarks for use in addressing or fast
positioning on high capacity storage devices.

10.4.12 spacing:  The act of positioning the medium on a sequential
access device.

10.4.13 underlength:  The incorrect length condition that exists after
executing a read command when the requested transfer length in the
command descriptor block exceeds the length of the actual block read.

10.4.14 volume:  A recording medium together with its physical carrier.


11 Commands for printer devices


11.1 Model for printer devices 

This command set includes capability for the printer-controlling
device, that is an SCSI target to be is functionally separate from the
physical printer device (see figure 27) as well as integrated with it. 
The physical printer device is connected to the SCSI target via one of
several common device-level interfaces.  There may be more than one
physical printer device attached to the printer controlling device.  In
such a case, each physical printer device is assigned a separate
logical unit number, beginning with zero.  The printer-controlling
device, printer device-level interface, and the physical printer device
are referred to collectively as the printer device.










                        Figure 27 - SCSI printer model

Specific control mechanisms are defined in mode pages for two industry-
standard interfaces known as the line printer interface (e.g. the Data
Products interface or equivalent) and the EIA RS-232C interface.  These
mode pages are used to control optional features of these interfaces. 
No mode page was defined for the popular industry-standard parallel
interface because the options requiring controls are embedded in the
data.

The printer-controlling device may be integrated within the printer
device; it is not required to use one of the industry-standard
interfaces referenced above.

The printer device commands are structured on the assumption that
specific printer control codes may be embedded in the data transferred
by the FORMAT, PRINT, and SLEW AND PRINT commands.  The transparent
control codes may take the form of escape code sequences.  commands for
the operation of the target function and some printer controls, which
are not convenient to handle in a transparent way, are specified in
11.2.

This International Standard does not specify which character set is
used by the printer device; nor does it specify the meaning of the
escape code sequences that may be used.  

11.2 Commands for printer devices

The commands for printer devices shall be as shown in table 205.

                   Table 205 - Commands for printer devices
+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| COMPARE                             |    39h     |   O  |   8.2.2    |
| COPY                                |    18h     |   O  |   8.2.3    |
| COPY AND VERIFY                     |    3Ah     |   O  |   8.2.4    |
| FORMAT                              |    04h     |   O  |  11.2.1    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| MODE SELECT(6)                      |    15h     |   O  |   8.2.8    |
| MODE SELECT(10)                     |    55h     |   O  |   8.2.9    |
| MODE SENSE(6)                       |    1Ah     |   O  |   8.2.10   |
| MODE SENSE(10)                      |    5Ah     |   O  |   8.2.11   |
| PRINT                               |    0Ah     |   M  |  11.2.2    |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| RECOVER BUFFERED DATA               |    14h     |   O  |  11.2.3    |
| RELEASE UNIT                        |    17h     |   M  |  10.2.9    |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| RESERVE UNIT                        |    16h     |   M  |  10.2.10   |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| SLEW AND PRINT                      |    0Bh     |   O  |  11.2.4    |
| STOP PRINT                          |    1Bh     |   O  |  11.2.5    |
| SYNCHRONIZE BUFFER                  |    10h     |   O  |  11.2.6    |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
+======================================================================+


The following operation codes are vendor-specific: 01h, 02h, 05h, 06h,
07h, 08h, 09h, 0Ch, 0Dh, 0Eh, 0Fh, 11h, 13h, 19h, and C0h through FFh. 
All remaining operation codes for printer devices are reserved for
future standardization.

11.2.1 FORMAT command

The FORMAT command (see table 206) provides a means for the initiator
to specify forms or fonts to printers that support programmable forms
or fonts.  The format information is peripheral-device specific.

                          Table 206 - FORMAT command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (04h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |         Reserved         | Format type     |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The format type field specifies the type of format information to be
transferred from the initiator to the target.  This field is defined in
table 207.

                           Table 207 - Format type
+========-===================+
|  Code  |  Format type      |
|--------+-------------------|
|   00b  |  Set form         |
|   01b  |  Set font         |
|   10b  |  Vendor-specific  |
|   11b  |  Reserved         |
+============================+


The transfer length specifies the length in bytes of format information
that shall be transferred during the DATA OUT phase.  A transfer length
of zero indicates that no format information shall be transferred. 
This condition shall not be considered as error.

11.2.2 PRINT command

The PRINT command (see table 208) transfers the specified number of
bytes from the initiator to the target to be printed.

                          Table 208 - PRINT command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (0Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The transfer length specifies the length in bytes of data that shall be
transferred during the DATA OUT phase.  A transfer length of zero
indicates that no data shall be transferred.  This condition shall not
be considered as error.

11.2.3 RECOVER BUFFERED DATA command

The RECOVER BUFFERED DATA command (see table 209) returns to the
initiator data that was transferred to the target, but not yet printed.

                  Table 209 - RECOVER BUFFERED DATA command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (14h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


This command is normally used only to recover from error or exception
conditions that make it impossible to print the buffered data.  The
order in which data are transferred from the target to the initiator is
the same as when the data were previously transferred using the PRINT
command or SLEW AND PRINT command.  Data transferred by this command
are  deleted from the target data buffer.  One or more RECOVER BUFFERED
DATA commands may be used to return the buffered data that is not
printed.

If an attempt is made to recover more data than is contained in the
buffer, the command shall be terminated with CHECK CONDITION status and
the sense key shall be set to NO SENSE.  In addition, the EOM, valid,
and ILI bits shall be set to one.  The information bytes shall be set
to the difference (residue) between the transfer length and the actual
number of bytes returned. 

The transfer length specifies the maximum length in bytes of data that
shall be transferred during the DATA IN phase.  A transfer length of
zero indicates that no data shall be transferred.  This condition shall
not be considered as error.

11.2.4 SLEW AND PRINT command

The SLEW AND PRINT command (see table 210) transfers the specified
number of bytes from the initiator to the target to be printed.  This
command is provided for printer devices that do not support forms
control information embedded within the print data.

                      Table 210 - SLEW AND PRINT command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (0Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved         | Channel|
|-----+-----------------------------------------------------------------------|
| 2   |                           Slew value                                  |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|-----+---                        Transfer length                          ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The transfer length specifies the length in bytes of data that shall be
transferred during the DATA OUT phase.  A transfer length of zero
indicates that no data shall be transferred.  This condition shall not
be considered as error.

If the channel bit is zero, the slew value specifies the number of
lines the form shall be advanced before printing.  A value of 255
indicates that the form shall be advanced to the first line of the next
form before printing.  If the channel bit is one, the slew value
specifies the forms control channel number to which the form shall be
advanced prior to printing the data.  If implemented, the printer
options page in the MODE SELECT command provides additional control
over the usage of the slew value field.

If the channel bit is one, and the channel option is not implemented,
the command shall be terminated with CHECK CONDITION status and the
sense key shall be set to ILLEGAL REQUEST.

11.2.5 STOP PRINT command

The STOP PRINT command (see table 211) requests that the target halt
printing on buffered devices in an orderly fashion.

                        Table 211 - STOP PRINT command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (1Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved         | Retain |
|-----+-----------------------------------------------------------------------|
| 2   |                           Vendor-specific                             |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


A retain bit of zero requests that the target data buffer be discarded;
otherwise, the data not printed shall be retained.  The data not
printed may be recovered using the RECOVER BUFFERED DATA command, if
implemented by the target.  A subsequent SYNCHRONIZE BUFFER command,
PRINT command, or SLEW AND PRINT command shall cause the remaining data
not already printed to be printed, followed by the data transferred by
the subsequent command, if any.  The point at which printing is
suspended by this command is vendor-specific.

11.2.6 SYNCHRONIZE BUFFER command

The SYNCHRONIZE BUFFER command (see table 212) provides a means for an
initiator to ensure that the data have been printed successfully prior
to releasing the peripheral device.  This is useful for applications
that handle any error or exception conditions (e.g. end-of-medium)
prior to termination of the application.

                    Table 212 - SYNCHRONIZE BUFFER command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (10h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


When all buffered data are actually printed, the command shall be
terminated with a GOOD status.  If it is not possible to finish
printing all of the buffered data (due to an error or exception
condition on the peripheral device), then this command shall be
terminated with a CHECK CONDITION status and the appropriate sense key.

The printer options page in the MODE SELECT command, if implemented,
provides additional control over termination sequences when using this
command.

11.3 Parameters for printer devices


11.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic
parameters used with printer devices. 

The diagnostic page codes for printer devices are defined in table 213.

                      Table 213 - Diagnostic page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     00h     |  Supported diagnostic pages                      |  8.3.1.1   |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|  40h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+


11.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters
used with printer devices. 

The log page codes for printer devices are defined in table 214.

                          Table 214 - Log page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |  8.3.2.1   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|     06h     |  Non-medium error page                           |  8.3.2.4   |
|     00h     |  Supported log pages                             |  8.3.2.5   |
|  02h - 05h  |  Reserved                                        |            |
|  08h - 2Fh  |  Reserved                                        |            |
|     3Fh     |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific pages                           |            |
+=============================================================================+


11.3.3 Mode parameters

This subclause defines the descriptors and pages for mode parameters
used with printer devices. 

The mode parameter list, including the mode parameter header and mode
block descriptor, are described in 8.3.3.

The medium-type code field is contained in the mode parameter header
(see 8.3.3).  This field is reserved for printer devices.

The device-specific parameter field is contained in the mode parameter
header (see 8.3.3).  Table 215 defines the device-specific parameter
used for printer devices. 

                Table 215 - Printer device-specific parameter
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|=====+========+==========================+===================================|
|     |   WP   |      Buffered mode       |            Reserved               |
+=============================================================================+


When using the MODE SELECT command, a buffered mode of zero indicates
that the target shall not report a GOOD status on PRINT commands or
SLEW AND PRINT commands until the data are actually printed.  A
buffered mode of one indicates that the target may report a GOOD status
on PRINT commands or SLEW AND PRINT commands as soon as the data have
been transferred to the SCSI device buffer.  The data from one or more
commands may be buffered prior to printing.  Buffered modes of 2h
through 7h are reserved.

When using the MODE SENSE command, the buffered mode field returns the
current value of this parameter.

The density code field is contained in the mode parameter block
descriptor (see table 93).  This field is reserved for printer devices.

The mode page codes for printer devices are shown in table 216.

                         Table 216 - Mode page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     0Ah     |  Control mode page                               |  8.3.3.1   |
|     02h     |  Disconnect-reconnect page                       |  8.3.3.2   |
|     03h     |  Parallel printer interface page                 | 11.3.3.1   |
|     09h     |  Peripheral device page                          |  8.3.3.3   |
|     05h     |  Printer options page                            | 11.3.3.2   |
|     04h     |  Serial printer interface page                   | 11.3.3.3   |
|     01h     |  Reserved                                        |            |
|  06h - 08h  |  Reserved                                        |            |
|  0Bh - 1Fh  |  Reserved                                        |            |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+


11.3.3 Parallel printer interface page

The parallel printer interface page (see table 217) is intended to
support printer devices that use the industry-standard line printer
interface.

                    Table 217 - Parallel printer interface
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|            Page code (03h)                          |
|-----+-----------------------------------------------------------------------|
| 1   |                           Parameter length (03h)                      |
|-----+-----------------------------------------------------------------------|
| 2   |  Parity select  |  PIPC  |Reserved|  VCBP  |  VCBS  |  VES   | Autofd |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile, vendor-specific location.

The parity select field specifies parity generation on the printer
interface is defined in table 218.

                          Table 218 - Parity select
+========-========================+
|  Code  |  Parity select         |
|--------+------------------------|
|   00b  |  No parity generation  |
|   01b  |  Even parity           |
|   10b  |  Odd parity            |
|   11b  |  Reserved              |
+=================================+


A paper instruction parity check (PIPC) bit of one indicates that the
printer interface Paper Instruction signal is included in parity
generation on the printer interface by the target.  A PIPC bit of zero
indicates that the Paper Instruction signal is not included in parity
generation on the printer interface by the target.

   NOTES
   164 The format of the vertical forms unit (VFU) control byte is specified
   by the VCBP, VCBS, and VES bits.  The VFU control byte is not part of this
   standard; however, a discussion of it is included here for a better
   understanding.  This VFU control byte (see table, below) includes a
   control bit (C) to select whether to slew over a number of lines or to
   skip to a vertical forms unit (VFU) channel number.  This bit may be
   located in two different bit positions and may have either polarity.  
   165 The number of lines to slew over may be coded as an unsigned four-bit
   number (NNNN) or an unsigned six-bit number (EENNNN).  The upper two bits
   of the six-bit number (EE) may be positioned contiguously with the lower
   four bits (NNNN) or they may be separated from the lower four bits by the
   control bit (C).  Furthermore, the upper two bits may or may not be
   supported.
   166 The VFU channel to select is specified by an unsigned four-bit number
   (NNNN) in the VFU control byte.
   167 Pictorially, the control byte is shown in table 219.

                         Table 219 - VFU control byte
+=======================-==============================================+
|   VFU control byte    |  Description                                 |
|-----------------------|                                              |
| Bits 7 6 5 4 3 2 1 0  |                                              |
|-----------------------+----------------------------------------------|
|      0 E E C N N N N  |  Advance (EE)NNNN lines   (C = line skip)    |
|      0 0 0 C N N N N  |  Skip to VFU channel NNNN (C = VFU channel)  |
|      0 C E E N N N N  |  Advance (EE)NNNN lines   (C = line skip)    |
|      0 C 0 0 N N N N  |  Skip to VFU channel NNNN (C = VFU channel)  |
|----------------------------------------------------------------------|
| Key:  C = VFU control bit                                            |
+======================================================================+


A VFU control bit polarity (VCBP) bit of one indicates that the VFU
control bit (C) is true for a VFU channel command and false for a line
skip command.  A VCBP bit of zero indicates the opposite polarity. 

A VFU control bit select (VCBS) bit of one indicates that the control
bit (C) is in bit position 6 and the EE bits are in bit positions 5 and
4.  A VCBS bit of zero indicates that the control bit (C) is in bit
position 4 and the EE bits are in bit positions 6 and 5.

A VFU extended skip (VES) bit of one indicates that the EE bits are
supported for line skip operations.  A VES bit of zero indicates that
the EE bits are not supported.

For MODE SELECT, an automatic line feed (Autofd) bit of one specifies
that the target assert the printer interface Auto Line Feed signal.  An
Autofd bit of zero specifies that the target negate the printer
interface Auto Line Feed signal.  For MODE SENSE, the target shall
return the current value of this bit.

11.3.3.2 Printer options page

The printer options page (see table 220) supports control and reporting
of various target functions and features.

                         Table 220 - Printer options
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|            Page code (05h)                          |
|-----+-----------------------------------------------------------------------|
| 1   |                           Parameter length (0Ah)                      |
|-----+-----------------------------------------------------------------------|
| 2   |  EVFU  |                  Font identification                         |
|-----+-----------------------------------------------------------------------|
| 3   |     Reserved    |    Slew mode    |    Reserved     |  SCTE  |  AFC   |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Maximum line length                      ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           EVFU format start character                 |
|-----+-----------------------------------------------------------------------|
| 7   |                           EVFU format stop character                  |
|-----+-----------------------------------------------------------------------|
| 8   |  Line slew options                |  Form slew options                |
|-----+-----------------------------------+-----------------------------------|
| 9   |  Data termination options         |         Reserved                  |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Reserved                                    |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

An electronic vertical forms unit (EVFU) bit of one indicates that a
tape or electronic vertical forms unit is present in the printer
device.  An EVFU bit of zero indicates that the electronic vertical
forms unit should not be used or that the unit is not present in the
printer device.  

For the MODE SELECT command, the font identification field specifies
which font is to be used.  For the MODE SENSE command, this field
identifies the currently selected font.  The font identification codes
are defined table 221.

                       Table 221 - Font identification
+=============-========================+
|    Code     |  Font identification   |
|-------------+------------------------|
|     00h     |  Default font          |
|  01h - 3Fh  |  Reserved              |
|  40h - 7Fh  |  Vendor-specific font  |
+======================================+


For the MODE SELECT command, the slew mode field controls the target's
behavior when a SLEW AND PRINT command is received with a channel bit
of zero (see 11.2.4).  For the MODE SENSE command, this field reports
the current slew mode.  This slew mode is defined in table 222.

                            Table 222 - Slew mode
+========-====================================================================+
|  Code  |  Slew mode                                                         |
|--------+--------------------------------------------------------------------|
|   00b  |  SLEW AND PRINT commands with a channel bit of zero are supported  |
|        |  without any required setup.                                       |
|        |                                                                    |
|   01b  |  SLEW AND PRINT commands with a channel bit of zero are only       |
|        |  accepted after the initiator issues a FORMAT command with a format|
|        |  type of set form (to initialize the electronic vertical forms     |
|        |  unit).                                                            |
|        |                                                                    |
|   10b  |  SLEW AND PRINT commands with a channel bit of zero are always     |
|        |  accepted.  The target shall use the electronic vertical forms unit|
|        |  if it has previously been initialized or it shall initialize the  |
|        |  electronic vertical forms unit for line skipping by sending the   |
|        |  EVFU start format character immediately followed by the EVFU stop |
|        |  format character (both are defined below) prior to executing the  |
|        |  SLEW AND PRINT command.                                           |
|        |                                                                    |
|   11b  |  Reserved                                                          |
+=============================================================================+


For the MODE SELECT command, a step count truncate enable (SCTE) bit of
one indicates that the target shall assume the printer truncates slew
values in SLEW AND PRINT commands, so that the data prints on the first
line of the next form.  A SCTE bit of zero indicates that the target
shall assume the printer continues to slew over forms boundaries in
SLEW AND PRINT commands if the slew value exceeds the number of
remaining lines on the current form.  The target shall return the
current value of this field in the MODE SENSE data.

An ASCII forms control (AFC) bit of one indicates that the printer
supports ASCII forms control characters.  An AFC bit of zero indicates
that the printer does not support ASCII forms control characters.

The maximum line length field specifies the maximum transfer length
(maximum number of bytes per line) to be accepted in the SLEW AND PRINT
command.  A value of 0000h in MODE SELECT specifies that the target
shall use its default value.  In any case, the target shall report its
actual value in the MODE SENSE data (not 0000h).

The EVFU format start character field specifies the character code to
be used by the target to start the initialization of the electronic
vertical forms unit, if slew mode option 10b is selected.

The EVFU format stop character field specifies the character code to be
used by the target to stop the initialization of the electronic
vertical forms unit, if slew mode option 10b is selected.

The line slew options field specifies the implementation of the line
slew (using ASCII forms control characters) in the SLEW AND PRINT
command.  Code values in this field are defined in table 223.

                            Table 223 - Line slew
+=========-===================================================================+
|   Code  |  Line slew option                                                 |
|---------+-------------------------------------------------------------------|
|    0h   |  Not implemented.  (SLEW AND PRINT commands cause CHECK CONDITION |
|         |  status with ILLEGAL REQUEST sense key.)                          |
|         |                                                                   |
|    1h   |  The target shall insert an ASCII carriage return character (0Dh) |
|         |  for each line to slew over.                                      |
|         |                                                                   |
|    2h   |  The target shall insert an ASCII line feed character (0Ah) for   |
|         |  each line to slew over.                                          |
|         |                                                                   |
|    3h   |  The target shall insert an ASCII carriage return character (0Dh) |
|         |  and line feed character (0Ah) for each line to slew over.        |
|         |                                                                   |
| 4h - 7h |  Reserved                                                         |
|         |                                                                   |
| 8h - Fh |  Vendor-specific                                                  |
+=============================================================================+


The form slew options field specifies the implementation of form
slewing in the SLEW AND PRINT command.  Code values in this field are
defined in table 224.

                            Table 224 - Form slew
+=========-===================================================================+
|   Code  |  Form slew option                                                 |
|---------+-------------------------------------------------------------------|
|    0h   |  Not implemented.  (SLEW AND PRINT commands cause CHECK CONDITION |
|         |  status with ILLEGAL REQUEST sense key.)                          |
|         |                                                                   |
|    1h   |  The target shall insert an ASCII form feed character (0Ch) to    |
|         |  move to the beginning of the next form.                          |
|         |                                                                   |
|    2h   |  The target shall insert an ASCII carriage return character (0Dh) |
|         |  and form feed character (0Ch) to move to the beginning of the    |
|         |  next form.                                                       |
|         |                                                                   |
| 3h - 7h |  Reserved                                                         |
|         |                                                                   |
| 8h - Fh |  Vendor-specific                                                  |
+=============================================================================+


The data termination options field specifies the termination sequence
to be issued to the printer device when a SYNCHRONIZE BUFFER command is
received.  Code values for this field are defined in table 225.

                     Table 225 - Data termination option
+=========-===================================================================+
|   Code  |  Line slew option                                                 |
|---------+-------------------------------------------------------------------|
|    0h   |  Selects the target default implementation (MODE SELECT).         |
|         |                                                                   |
|    1h   |  No termination sequence.  (The target sends any remaining data   |
|         |  in its buffer to the printer device with no termination sequence |
|         |                                                                   |
|    2h   |  The target shall print any buffered data followed by an ASCII    |
|         |  carriage return character (0Dh).                                 |
|         |                                                                   |
|    3h   |  The target shall print any buffered data followed by an ASCII    |
|         |  line feed character (0Ah).                                       |
|         |                                                                   |
|    4h   |  The target shall print any buffered data followed by an ASCII    |
|         |  carriage return, line feed character sequence (0Dh, 0Ah).        |
|         |                                                                   |
|    5h   |  The target shall send any buffered data followed by an ASCII     |
|         |  form feed character (0Ch).                                       |
|         |                                                                   |
|    6h   |  The target shall print any buffered data followed by an ASCII    |
|         |  carriage return, form feed character sequence (0Dh, 0Ch).        |
|         |                                                                   |
|    7h   |  The target shall issue a zero line slew command to the printer   |
|         |  device.                                                          |
|         |                                                                   |
| 8h - Bh |  Reserved                                                         |
|         |                                                                   |
| Ch - Fh |  Vendor-specific                                                  |
+=============================================================================+


11.3.3.3 Serial printer interface page

The serial printer interface page (see table 226) is intended to
support printer devices that use the industry-standard serial interface
usually referred to as EIA RS-232C.

                     Table 226 - Serial printer interface
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|            Page code (04h)                          |
|-----+-----------------------------------------------------------------------|
| 1   |                           Parameter length (06h)                      |
|-----+-----------------------------------------------------------------------|
| 2   |     Reserved    |         Stop bit length                             |
|-----+-----------------------------------------------------------------------|
| 3   |     Parity selection     |Reserved|        Bits per character         |
|-----+-----------------------------------+-----------------------------------|
| 4   |  RTS   |  CTS   |     Reserved    |        Pacing protocol            |
|-----+-----------------------------------------------------------------------|
| 5   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 6   |                           Baud rate                                   |
|-----+---                                                                 ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

The stop bit length field specifies the length of the stop bit(s) in
units of 1/16 bit.  The target may round this field as described in
7.5.4.  A stop bit length of zero in the MODE SELECT command indicates
that the target shall use its default value.

The parity selection field specifies parity generation and checking as
defined in table 227.

                         Table 227 - Parity selection
+========-===================+
|  Code  |  Parity selection |
|--------+-------------------|
|  000b  |  None             |
|  001b  |  Mark             |
|  010b  |  Space            |
|  011b  |  Odd              |
|  100b  |  Even             |
|  101b  |  Reserved         |
|  110b  |  Reserved         |
|  111b  |  Reserved         |
+============================+


The bits per character field specifies the number of bits in each
character.  A value of zero in the MODE SELECT command indicates that
the target shall use its default character size.

For the MODE SELECT command, a request to send (RTS) bit of one
specifies that the target shall insure the Request to Send (RTS) signal
in the serial interface follows the line state of the Data Terminal
Ready (DTR) signal in the serial interface.  A RTS bit of zero
specifies that the target shall set the Request to Send (RTS) signal to
high whenever the target power is on.  For the MODE SENSE command, the
target shall report the current value of this field.

For the MODE SELECT command, a clear to send (CTS) bit of one specifies
that the target shall delay data transmission to the printer device
until the printer device asserts the Clear to Send (CTS) signal in the
serial interface.  A CTS bit of zero indicates that the target shall
ignore the Clear to Send signal.  For the MODE SENSE command, the
target shall report the current value of this field.

The code values for the pacing protocol field are defined in table 228.

                         Table 228 - Pacing protocol
+=========-==================+
|   Code  |  Pacing protocol |
|---------+------------------|
|    0h   |  None            |
|    1h   |  XON/XOFF        |
|    2h   |  ETX/ACK         |
|    3h   |  DTR             |
| 4h - 7h |  Reserved        |
| 8h - Fh |  Vendor-specific |
+============================+


The baud rate field specifies the baud rate in bits per second.  The
target may round this value as described in 7.5.4.  A baud rate of zero
in the MODE SELECT command specifies that the target shall use its
default baud rate.


12 Processor devices


12.1 Model for processor devices

The SCSI processor device is a target with the characteristics of a
primary computing device, typically a personal computer, minicomputer,
mainframe computer, or auxiliary computing device or server.  Such a
primary computing device is often called a host.  The processor device
receives or provides packets of data as requested by the initiator.

In the SCSI processor device, the target accepts and provides the data
packets transferred according to the commands of the initiator.  The
initiator and the processor device are both assumed to know the rules
by which information is exchanged between them, how the information is
interpreted by the processor device, and when it is allowable to
exchange the information.  These rules are not specified by this
International Standard.

The initiator requests that the processor device accept a packet of
data by transmitting a SEND command.  The initiator requests that the
processor device return a packet of data by transmitting a RECEIVE
command.  A COPY command can also be transmitted to the processor
device to request that it serve as a copy manager.  The actual data
flow can be between the processor device and another SCSI device or can
be between two SCSI devices under control of the processor device
acting as a copy manager.

If a processor device temporarily has no resource available to manage a
data packet from the initiator, has no data packet to provide to the
initiator, or has no resources assigned to perform the operation, the
device may then choose one of the following responses: 
   a)     Terminate the command with CHECK CONDITION status and the sense
          key NOT READY with the appropriate additional sense code for the
          condition.  This is the appropriate response to a TEST UNIT READY
          command. 
   b)     Disconnect until the necessary resource or data packet becomes
          available, and then reconnect to the initiator and resume the
          operation.
   c)     Terminate the command with BUSY status.

More than one logical unit can be implemented by a processor device.  
Logical units can serve as additional paths to a single resource,
and/or each logical unit can serve as a path to different resources
within the device.  A single logical unit may also serve as a path to
multiple resources if the processor device can interpret information
within the data packet and route the packet to the appropriate
resource.  If the logical unit addressed by the initiator does not have
an available resource or data packet associated with it, the processor
device may choose to treat the logical unit as an invalid logical unit
(see 7.5.3) or respond as described in the previous paragraph.

If the processor device determines that an error or unusual condition
has occurred while performing an operation specified by the contents of
a data packet, the information describing the condition is normally
returned as a part of a data packet.  If the processor device
determines that an error or unusual condition has occurred while
executing the SCSI command from the initiator, the command is
terminated with a CHECK CONDITION and the failures are identified
through a REQUEST SENSE command.

The SCSI processor device is distinguished from a SCSI communications
device by the fact that the primary destination of the data packets is
within the target device.  A SCSI communications device, in contrast,
passes the data on to an ultimate destination outside the target
through a network.  Many types of devices may find it convenient to
function as processor devices if no other suitable SCSI device type
exists and if the packet exchange protocol dictated by the processor
device model meets their functional requirements.  Devices requiring
totally incompatible protocols and command sets should be examined
carefully to ensure that the incompatibilities are based on functional
requirements.  If  they are, they should be treated as vendor-unique
device types.

Several examples of processor device implementations are provided to
clarify the range of utility of the SCSI processor device.

12.1.1 Host-to-host communication, SEND only

A host system, (host A), takes the initiator role and selects a
processor device (host B), transmitting a packet to host B using the
SEND command.  The SEND command contains an operating system call that
requests data from the local storage devices attached to host B.  After
performing the functions required by the data packet, Host B assumes
the initiator mode and selects host A as a processor device and uses a
SEND command to transmit the requested data back to host A.  Host A
thus acts as a primary computer and host B acts as a specialized data
server computer.  Note that the SEND command is sufficient to perform a
complete transaction if both host A and host B are capable of acting as
initiators.  This provides the capability of a high bandwidth inter-
communication among nearby host processors.

12.1.2 Host-to-host communication, SEND and RECEIVE

A host system (host A) takes the initiator role and selects a processor
device (host B), transmitting a packet using the SEND command to host B
containing instructions about an operation to be performed.  Host A
again takes the initiator role and sends the data to be used by host B
in the operation.  Host A then assumes that a result will be obtained
consistent with rules understood by both devices.  Host A generates a
RECEIVE command to obtain the result from host B.  If the result is not
yet ready, host B may disconnect until the calculation is complete and
the requested data packet can be returned to host A.  

   NOTE 168 Host A need not support target mode and host B need not support
   initiator mode to successfully complete an exchange between the two
   devices.

12.1.3 Host-to-special-output peripheral

A special co-processor device which can use the processor device
command set is a high-performance graphics display terminal.  The
initiator sends to the display terminal control and data packets  that
contain the image to be displayed.  Only the SEND command is required. 
A peripheral failure should be indicated through the normal CHECK
CONDITION / REQUEST SENSE protocol. 

12.1.4 Host-to-special-input peripheral

A second special co-processor device that can use the processor device
command set is a data acquisition subsystem.  Such subsystems may
multiplex and compact streams of data from many sources.  A host could
control the data acquisition modes and the selection of data streams by
transmitting control packets to the processor device using the SEND
command.  The host could then obtain the acquired data by executing a
series of RECEIVE commands.  The data acquisition device could also
serve as an initiator, selecting peripheral storage devices and storing
the compacted acquired data there for later access directly by the host
or through host to host communication protocols.  A peripheral failure
would be indicated through the normal CHECK CONDITION / REQUEST SENSE
protocol.

12.2 Commands for processor devices

The commands for processor devices shall be as shown in table 229.

                  Table 229 - Commands for processor devices
+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| COMPARE                             |    39h     |   O  |   8.2.2    |
| COPY                                |    18h     |   O  |   8.2.3    |
| COPY AND VERIFY                     |    3Ah     |   O  |   8.2.4    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| RECEIVE                             |    08h     |   O  |  12.2.1    |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| SEND                                |    0Ah     |   M  |  12.2.2    |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
+======================================================================+


The following operation codes are vendor-specific: 02h, 05h, 06h, 09h,
0Ch, 0Dh, 0Eh, 0Fh, 10h, 11h, 13h, 14h, 19h, C0h through FFh.  All
remaining operation codes for processor devices are reserved for future
standardization.

12.2.1 RECEIVE command

The RECEIVE command (see table 230) requests that the target transfer
data to the initiator.  The contents of the data are not defined by
this International Standard.

                         Table 230 - RECEIVE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (08h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Allocation length                           |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


12.2.2 SEND command

The SEND command (see table 231) requests that the target transfer data
from the initiator.

                           Table 231 - SEND command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (0Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved         |  AEN   |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


An asynchronous event notification (AEN) bit of one indicates that the
data to be transferred conforms to AEN data format as defined in table
232.  A SEND command with an AEN bit of one shall be only issued to
logical unit zero.

                  Table 232 - SEND command - AEN data format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=================+========+=================+==========================|
| 0   |     Reserved    | LUNTAR |     Reserved    |          LUNTRN          |
|-----+-----------------------------------------------------------------------|
| 1   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 2   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 3   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 4   |                               Sense data byte (0)                     |
|- - -+---                                                                 ---|
| n+4 |                               Sense data byte (n)                     |
+=============================================================================+


An AEN bit of zero indicates that the data to be transferred are
vendor-specific.

The transfer length specifies the length in bytes of data that shall be
sent during the DATA OUT phase.  A transfer length of zero indicates
that no data shall be sent.  This condition shall not be considered an
error.

A logical unit target (LUNTAR) bit of zero specifies that the
asynchronous event occurred on a logical unit.  A LUNTAR bit of one
specifies that the asynchronous event occurred on a target routine.

If the LUNTAR bit is zero, the logical unit number target routine
number (LUNTRN) field specifies the logical unit on which the
asynchronous event occurred.  If the LUNTAR bit is one, the LUNTRN
field specifies on the routine on which the asynchronous event
occurred.

The sense data bytes are defined in table 65.

12.3 Parameters for processor devices


12.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic
parameters used with processor devices. 

The diagnostic page codes for processor devices are defined in table
233.

                      Table 233 - Diagnostic page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     00h     |  List of supported parameters page               |  8.3.1.1   |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|  40h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+


12.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters
used with processor devices.

The log page codes for processor devices are defined in table 234.

                          Table 234 - Log page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |  8.3.2.1   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|     00h     |  List of supported parameters page               |  8.3.2.5   |
|     06h     |  Non-medium error page                           |  8.3.2.4   |
|  02h - 05h  |  Reserved                                        |            |
|  08h - 2Fh  |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific pages                           |            |
|     3Fh     |  Reserved                                        |            |
+=============================================================================+


12.4 Definitions specific to processor devices

12.4.1 host:  A device with the characteristics of a primary computing
device, typically a personal computer, workstation, minicomputer,
mainframe computer, or auxiliary computing device or server.

12.4.2 data packet:  The data transferred during the DATA IN phase of a
RECEIVE command, or during the DATA OUT phase of a SEND command. A data
packet often contains information at the beginning or end of the packet
that describes the contents of the packet. A data packet might contain
control or status information for the destination device.

12.4.3 resource:  A part of the device required to operate on or store
the data packet.


13 Write-once devices


13.1 Model for write-once devices

The model for the write-once device is a variation on the optical
memory model.  Most of the aspects of a write-once device are similar
to optical memory devices.  The differences are summarized in this
clause.

13.1.1 Logical blocks

Data may be written to a logical block only once.  A subsequent write
to a logical block already written may or may not be corrupted,
depending on the implementation.  Write-once physical media is non-
volatile.

The updating of blocks (see 16.1) is discouraged.  SCSI write-once
devices are intended to be archival in nature.  Data at a logical block
address is not expected to change once it is written.  The update
commands are not defined for this device type.  Devices are not
precluded from implementing the update function by this standard,
though devices that require the update function should use the optical
memory device type.

Devices may be able to determine the state of a logical block prior to
access.  These devices can determine whether a block is blank or
written. This is useful in detecting previously written blocks, and
preventing a destructive overwrite.  This is also useful in finding
blank areas for later writing.  The MEDIUM SCAN command can be used to
find blank and written areas prior to WRITE and READ access.

13.1.2 Initialization

The FORMAT UNIT command is not defined for write-once devices.  Write-
once media is shipped pre-formatted by the manufacturer and is ready
for use when mounted.

13.1.3 Physical medium defects

The raw defect rate is typically higher for optical medium than for
magnetic medium.  Data is usually recovered through the use of
sophisticated error correction algorithms.  The level of error
correction used for data recovery is often can be selected.  However,
many write-once devices have a minimum level that is always used and
cannot be de-selected through the error recovery mode parameter. 
Control of the error correction algorithms and level of correction is
vendor-specific.

Defect management on write-once devices is usually vendor-specific. 
However, there are standards for some types of write-once media that
specify defect management techniques.  These standards, where they
exist, may supersede the implementation requirements pertaining to
error and defect reporting in this International Standard.

13.1.4 Error reporting

If any of the following conditions occur during the execution of a
command the target shall return CHECK CONDITION status.  The
appropriate sense key and additional sense code should be set.  The
following list illustrates some error conditions and the applicable
sense keys.  The list does not provide an exhaustive enumeration of all
conditions that may cause the CHECK CONDITION status.

Condition                                                                                Sense Key
Invalid logical block address                                                                          ILLEGAL
REQUEST

Unsupported option requested                                                                       ILLEGAL
REQUEST

Target reset or medium change since last command from this initiator                                                       
   UNIT ATTENTION

Self diagnostic failed                                                                                 HARDWARE
ERROR

Unrecovered read error                                                                             MEDIUM ERROR
                                                                                  HARDWARE ERROR

Recovered read error                                                                            RECOVERED ERROR

Overrun or other error that might be resolved by repeating the command                                                    
ABORTED command

Attempt to write on write protected medium                                                                   DATA
PROTECT

Attempt to read a blank or previously unwritten block                                                               
BLANK CHECK

Attempt to write a previously written block and blank checking is
enabled          BLANK CHECK


In the case of an invalid logical block address, the sense data
information field shall be set to the logical block address of the
first invalid address.

In the case of an attempt to read a blank or previously unwritten
block, the sense data information field shall be set to the logical
block address of the first blank block encountered.  The data read up
to that block shall be transferred.

In the case of an attempt to write a previously written block and blank
checking is enabled, the sense information field shall be set to the
logical block address of the first non-blank block encountered.

13.2 Commands for write-once devices

The commands for write-once devices shall be as shown in table 235.

                 Table 235 - Commands for write-once devices
+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| COMPARE                             |    39h     |   O  |   8.2.2    |
| COPY                                |    18h     |   O  |   8.2.3    |
| COPY AND VERIFY                     |    3Ah     |   O  |   8.2.4    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOCK UNLOCK CACHE                   |    36h     |   O  |   9.2.2    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| MEDIUM SCAN                         |    38h     |   O  |  16.2.3    |
| MODE SELECT(6)                      |    15h     |   O  |   8.2.8    |
| MODE SELECT(10)                     |    55h     |   O  |   8.2.9    |
| MODE SENSE(6)                       |    1Ah     |   O  |   8.2.10   |
| MODE SENSE(10)                      |    5Ah     |   O  |   8.2.11   |
| PRE-FETCH                           |    34h     |   O  |   9.2.3    |
| PREVENT ALLOW MEDIUM REMOVAL        |    1Eh     |   O  |   9.2.4    |
| READ(6)                             |    08h     |   O  |   9.2.5    |
| READ(10)                            |    28h     |   M  |   9.2.6    |
| READ(12)                            |    A8h     |   O  |  16.2.4    |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| READ CAPACITY                       |    25h     |   M  |   9.2.7    |
| READ LONG                           |    3Eh     |   O  |   9.2.9    |
| REASSIGN BLOCKS                     |    07h     |   O  |   9.2.10   |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| RELEASE                             |    17h     |   M  |   9.2.11   |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| RESERVE                             |    16h     |   M  |   9.2.12   |
| REZERO UNIT                         |    01h     |   O  |   9.2.13   |
| SEARCH DATA EQUAL(10)               |    31h     |   O  |   9.2.14.1 |
| SEARCH DATA EQUAL(12)               |    B1h     |   O  |  16.2.8    |
| SEARCH DATA HIGH(10)                |    30h     |   O  |   9.2.14.2 |
| SEARCH DATA HIGH(12)                |    B0h     |   O  |  16.2.8    |
| SEARCH DATA LOW(10)                 |    32h     |   O  |   9.2.14.3 |
| SEARCH DATA LOW(12)                 |    B2h     |   O  |  16.2.8    |
| SEEK(6)                             |    0Bh     |   O  |   9.2.15   |
| SEEK(10)                            |    2Bh     |   O  |   9.2.15   |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| SET LIMITS(10)                      |    33h     |   O  |   9.2.16   |
| SET LIMITS(12)                      |    B3h     |   O  |  16.2.9    |
| START STOP UNIT                     |    1Bh     |   O  |   9.2.17   |
| SYNCHRONIZE CACHE                   |    35h     |   O  |   9.2.18   |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| VERIFY(10)                          |    2Fh     |   O  |  16.2.11   |
| VERIFY(12)                          |    AFh     |   O  |  16.2.12   |
| WRITE(6)                            |    0Ah     |   O  |   9.2.20   |
| WRITE(10)                           |    2Ah     |   M  |   9.2.21   |
| WRITE(12)                           |    AAh     |   O  |  16.2.14   |
| WRITE AND VERIFY(10)                |    2Eh     |   O  |   9.2.22   |
| WRITE AND VERIFY(12)                |    AEh     |   O  |  16.2.16   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
| WRITE LONG                          |    3Fh     |   O  |   9.2.23   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
+======================================================================+


The following command codes are vendor-specific:  02h, 05h, 06h, 09h,
0Ch, 0Dh, 0Eh, 0Fh, 10h, 11h, 13h, 14h, 19h, 20h, 21h, 22h, 23h, 24h,
26h, 27h, 29h, and C0h through FFh.  All remaining command codes for
write-once devices are reserved for future standardization.

13.3 Parameters for write-once devices

Refer to the parameters for optical memory devices (see 16.3).

13.4 Definitions specific to write-once devices

See 16.4.


14 CD-ROM devices


14.1 Model for CD-ROM devices

CD-ROM devices permit reading data from a rotating media.  Writing the
media is not supported.  Data transfer can begin with any of the
consecutively numbered logical blocks.  Data on CD-ROM devices are
addressed the same as usual (magnetic) direct-access devices. Some CD-
ROM devices support a separate information stream (e.g. audio and/or
video but referred to as audio in this clause) transmitted via a
connection other than the SCSI Bus. This device type defines commands
for controlling these other information streams. 

CD-ROM drives are designed to work with any disc that meets IEC.  Many
new drives read CD-ROM data discs, digital audio discs, and audio-
combined discs (i.e. some tracks are audio, some tracks are data).

14.1.1 CD-ROM media organization

The formats written on the CD-ROM and CD-DA (Digital Audio) media
require special interfacing considerations. 

   NOTE 169 This subclause contains a number of terms that have special
   meanings peculiar to CD-ROM technology or that may be unfamiliar to many
   readers of this International Standard. The glossary (see 14.4.) defines
   these terms.

Discs may contain either audio, data or a mixture of the two.  Table
236 gives an example of a of a audio-combined disc to illustrate the
relationship between the logical block addresses reported in SCSI and
the MSF address encoded on the media.  The logical addresses given in
the table assume a block length of 2 048, 2 336 or 2 340 bytes.  For
block lengths of 1 024, 512 or 256 multiply all values given in the
SCSI address columns by 2, 4 or 8 respectively.

   NOTE 170 The term frame is used in two different ways in the CD-ROM media
   standard.  The intended meaning can only be determined from the context.
   Whenever possible, this description replaces the larger data unit with the
   more familiar term sector.  The primary exception to this policy is the
   use of frame when referring to the MSF address.  In the MSF context, one
   frame (F field unit) equals one sector.  On a typical two channel CD-DA
   media, each frame (F field unit) is played in 1/75th of a second.


              Table 236 - Example mixed mode CD-ROM disc layout
+================-==========================-===========================================================+
|                |      SCSI address        |       /--- Sub-channel information ----\                  |
|----------------+--------------------------+-----------------------------------------------------------|
|                |  Logical    |   Track    |    Absolute  |  Track |  Track    |Sector  | Mode  |CD-ROM|
|                |  address    |  relative  |      MSF     |   and  | relative  |is info | audio |data  |
|     Block      |  (decimal)  |  logical   |    address1  |  index |   MSF     | or is  |  or   |mode2 |
|  description   |             |  address   |              |        | address   | pause  | data  |      |
|----------------+-------------+------------+--------------+--------+-----------+--------+-------+------|
|Lead-in area3)  |      ---    |    ---     |     ---      |  0/-   |    ---    |  ---   | Audio | ---  |
|Pre-gap3)       |     ---     |    ---     |  00/00/00    |  1/0   | 00/02/00  | Pause  | Data  | Null |
|                |             |            |              |        |           |        |       |      |
|1st track data  |   0 0005)   |       0    |  00/02/004)  |  1/1   | 00/00/00  | Info   | Data  | L-EC |
|2nd track data  |   6 0005)   |       0    |  01/22/004)  |  2/1   | 00/00/00  | Info   | Data  | L-EC |
|                |   7 500     |   1 500    |  01/42/00    |  2/2   | 00/20/00  | Info   | Data  | L-EC |
|                |             |            |              |        |           |        |       |      |
|Post-gap        |   9 000     |   3 000    |  02/02/00    |  2/3   | 00/40/00  | Pause  | Data  | Null |
|                |             |            |              |        |           |        |       |      |
|Pause-silence   |   9 150     |    -1509)  |  02/04/00    |  3/0   | 00/02/008 | Pause  | Audio | ---  |
|                |             |            |              |        |           |        |       |      |
|3rd track audio |   9 3007)   |       0    |  02/04/006)  |  3/1   | 00/00/00  | Info   | Audio | ---  |
|                |  11 400     |   2 250    |  02/34/00    |  3/2   | 00/30/00  | Info   | Audio | ---  |
|4th track audio |  21 9757)   |       0    |  04/53/006)  |  4/1   | 00/00/00  | Info   | Audio | ---  |
|                |             |            |              |        |           |        |       |      |
|Pre-gap part 1  |  30 000     |    -2259)  |  06/40/00    |  5/0   | 00/03/00  | Pause  | Audio | ---  |
|Pre-gap part 2  |  30 075     |    -150    |  06/41/00    |  5/0   | 00/02/00  | Pause  | Data  | Null |
|                |             |            |              |        |           |        |       |      |
|5th track data  |  30 225     |       0    |  06/43/00    |  5/1   | 00/00/00  | Info   | Data  | L-EC |
|                |             |            |              |        |           |        |       |      |
|Last information| 263 99910)  | 233 774    |  58/39/74    |  5/1   | 51/56/74  | Info   | Data  | L-EC |
|                |             |            |              |        |           |        |       |      |
|Post-gap        |     ---     | 233 775    |  58/40/00    |  5/2   | 51/57/00  | Pause  | Data  | Null |
|                |             |            |              |        |           |        |       |      |
|Lead-out track  | 264 00011)  |       0    |  58/42/0012) | AA/13  | 00/00/00  | Pause  | Audio | ---  |
|-------------------------------------------------------------------------------------------------------|
|  Notes                                                                                                |
|  1  Absolute MSF address repeated in the header field of data blocks.                                 |
|  2  The CD-ROM data mode is stored in the header of data tracks. This indicates that                  |
|     the block is part of a data pre-gap or post-gap (null), that this is a data                       |
|     block using the auxiliary field for L-EC symbols (ECC - CD-ROM data mode one),                    |
|     or that this is a data block using the auxiliary field for user data (CD-ROM                      |
|     data mode two).                                                                                   |
|  3  Table of contents information is stored in the sub-channel of lead-in area.  The                  |
|     lead-in area is coded as track zero. Track zero and the initial 150 sector pre-                   |
|     -gap (or audio pause) are not accessible with logical addressing.                                 |
|  4  Value stored in table of contents with zero tolerance.                                            |
|  5  Exact value returned by READ TOC command.                                                         |
|  6  Value stored in table of contents plus or minus 75 sectors.                                       |
|  7  Value returned by READ TOC command plus or minus 75 blocks.                                       |
|  8  Track relative MSF value decreases to 0 in pre-gap areas.                                         |
|  9  Track relative logical addresses are negative in the pre-gap areas.                               |
|     Pre-gap areas have index values of zero.                                                          |
|  10  Minimum value returned by READ CD-ROM CAPACITY - exact value depends                             |
|      on encoding of this track and the lead out track and whether this is                             |
|      derived from the TOC data.                                                                       |
|  11  Value returned by READ TOC command - exact if lead-out track is                                  |
|      encoded as data, or plus or minus 75 blocks if encoded as audio.                                 |
|  12  Value stored in table of contents -  exact if lead-out track is coded                            |
|      as data, or plus or minus 75 blocks if coded as audio.                                           |
|  13  Lead-out track number is defined as 0AAh.                                                        |
+=======================================================================================================+


The physical format defined by the CD-ROM media standards provides 2
352 bytes per sector. For usual computer data applications, 2 048 bytes
are used for user data, 12 bytes for a synchronization field, 4 bytes
for a sector address tag field and 288 bytes - the auxiliary field -
for L-EC (CD-ROM data mode 1). In less critical applications, the
auxiliary field may also be used for user data (CD-ROM data mode 2). A
CD-ROM physical sector size is 2 048, 2 336 or 2 340 bytes per sector.
These values correspond to user data field only, user data plus
auxiliary data, the 4 byte address tag plus user data plus auxiliary
data.

Selection among these options is made by setting the density code field
of the MODE SELECT block descriptor. The usual selection is 2 048 bytes
per physical sector via a density code setting of 1. See the table of
CD-ROM density code values in 14.3.3.

This same area of the CD-ROM or CD audio media may store 1/75th of a
second of two channel audio information formatted according to the CD-
DA specification. (These audio channels are usually the left and right
components of a stereo pair.) An audio only density code value can be
used to declare an area of the media to be invalid for data operations.


For data and mixed mode media (those conforming to ISO/IEC 10149),
logical block address zero shall be assigned to the block at MSF
address 00/02/00.  For audio media (those conforming only to IEC 908),
logical block address zero should be assigned to the actual starting
address of track 1.  This may be approximated by using the starting
address of track 1 contained in the table of contents (TOC) or by
assigning logical block address zero to the block at MSF address
00/02/00.

Logical addressing of CD-ROM information may use any logical block
length. When the specified logical block length is an exact divisor or
integral multiple of the selected number of bytes per CD-ROM sector,
the device shall map (one to one) the bytes transferred from CD-ROM
sectors to the bytes of logical blocks.  For instance, if 2 048 bytes
are transferred from each CD-ROM sector (specified by the CD-ROM
density code value), and the logical block length is 512 bytes, then
each CD-ROM sector shall map to exactly four logical blocks.  This
International Standard does not define the mapping of logical block
lengths which do not evenly divide or are not exact multiples of the
selected number of bytes per CD-ROM sector.

A track may be viewed as a partition of the CD-ROM address space. A CD-
ROM media contains from one to ninety-nine tracks.  All information
sectors of a track are required to be of the same type (audio or data)
and mode.  Each change in the type of information on the disc requires
a change in track number.  A disc containing both audio and data would
have at least two tracks, one for audio and one for data.  

The tracks of a CD media are numbered consecutively with values between
1 and 99. However, the first information track may have a number
greater than 1. Tracks have a minimum length of 300 sectors including
any transition area that is part of a track. 

The CD-ROM media standards require transition areas between tracks
encoded with different types of information.  In addition, transition
areas may be used at the beginning or end of any track.  For audio
tracks the transition areas are called pause areas.  For data tracks,
transition areas are called pre-gap and post-gap areas.  See table 236
for an example.  The IEC 908 and ISO/IEC 10149 standards specify
minimum time durations for these areas.  Maximum time durations are not
specified. 

Transition areas are formatted and the logical address continues to
increment through transition areas.  Some media (i.e. discs with only
one track) may not have transition areas.  The means to determine the
location of the transition areas is vendor or application-specific and
is addressed by other standards (e.g. ISO 9660).

CD-ROM is a unique SCSI device in the respect that some logical blocks
on a disc may not be accessible by all commands.  SEEK commands may be
issued to any logical block address within the reported capacity of the
disc.  READ commands cannot be issued to logical blocks that occur in
some transition areas, or to logical blocks within an audio track. 
PLAY commands cannot be issued to logical blocks within a data track.  


The blank verify (BlkVfy) option of the verify command (see 16.2.11),
for CD-ROM devices, shall verify that the addressed blocks are
transition area blocks.

CD-ROM media have lead-in and lead-out areas.  These areas are outside
of the user-accessible area as reported in the READ CD-ROM CAPACITY
data.  The lead-in area of the media is designated track zero.  The
lead-out area is designated track 0AAh.  The sub-channel Q in the lead-
in track contains a table of contents (TOC) of the disc.

   NOTE 171 The READ CD-ROM CAPACITY command returns the logical block
   address of the last block prior to the lead-out area. This location may be
   in a transition area and therefore not a valid address for read
   operations. 

The table of contents gives the absolute MSF location of the first
information sector of each track.  Control information (audio/data,
method of audio encoding, etc.) for each track is also given in the
TOC.  However, the TOC does not distinguish between the different modes
of data tracks (i.e. CD-ROM data mode one vs. CD-ROM data mode two).  

The MSF locations of the beginning of data tracks in the TOC are
required to be accurate, however, the TOC values for audio tracks have
a tolerance of plus or minus 75 sectors. Information from the TOC can
be used to reply to a READ CD-ROM CAPACITY command.  When this is done,
the drive implementor should consider the possible tolerances and
return a value that allows access to all information sectors.

An index is a partition of a track.  Pre-gap areas are encoded with an
index value of zero.  Pause areas at the beginning of audio tracks are
also encoded with an index value of zero.  The first information sector
of a track has an index value of one.  Consecutive values up to 99 are
permitted.  Index information is not contained in the TOC.  Not all
sectors are encoded with the index value in the Q-sub-channel data (the
requirement is 9 out of 10).  A sector without an index value is
presumed to have the same index as the preceding sector.

Tracks and indexes are not defined to be any particular length, (except
for a minimum track length of 300 sectors.)  A CD disc may be created
with a single information track that has a single index; or with 99
information tracks, each with 99 indexes.

The sub-channel information which is part of each sector includes a
track relative MSF location value giving the distance from the first
information sector of the track. On the media, this value decreases
during the pre-gap area (sectors with index values of 0) and increases
for the rest of the track. The data, returned by the READ SUB-CHANNEL
command with MSF bit set to zero, converts this to a track relative
logical block address (TRLBA). The TRLBA is continually increasing over
the whole track, and pre-gap areas shall return negative values. When
the MSF bit in the read sub-channel command is set to one, the MSF
track relative location value from the media is reported without
change.

14.1.2 CD-ROM physical data format

The physical format of CD-ROM and CD-DA media uses a smaller unit of
synchronization than the more familiar magnetic or optical recording
systems. The basic data stream synchronization unit is a small frame. 
This is not the same large frame (sector) as referred to in the MSF
unit.  Each small frame consists of 588 bits.  A sector on CD-ROM media
consists of 98 small frames.

A CD-ROM small frame consists of:
   a)     1      synchronization pattern                         (24+3 bits)
   b)     1      byte of sub-channel data                    (14+3 bits)
   c)     24     bytes of data                            (24 x (14+3) bits)
   d)     8      bytes of CIRC code                       (8 x (14+3) bits)                     Total: 588
          bits.

Data, sub-channel and CIRC bytes are encoded with an eight-to-fourteen
bit code; then three merging bits are added.  The merging bits are
chosen to provide minimum low-frequency signal content and optimize
phase lock loop performance. 

14.1.2.1 Frame format for audio

Each small frame of an audio track on a two-channel CD-DA or CD-ROM
media consists of six digitized 16-bit samples of each audio channel.
These 24 bytes of data are combined with a synchronization pattern,
CIRC bytes and a sub-channel byte to make a frame. Each frame takes
approximately 136.05 uS to play. This gives a sampling rate of 44,1 khz
for each channel. The sub-channel information creates the higher level
sector grouping for audio tracks.

14.1.2.2 Sector format for data

The data bytes of 98 small frames comprise the physical unit of data
referred to as a sector.  (98 small frames times 24 bytes per small
frame equal 2 352 bytes of data per sector.)   

A sector that contains CD-ROM data mode one data has the following
format:

   a)   12 bytes    Synchronization field
   b)   4 bytes     CD-ROM data header   
                      Absolute M field in bcd format 
                      Absolute S field in bcd format
                      Absolute F field in bcd format 
                      CD-ROM data mode field  
   c)   2048 bytes                User data field     
   d)    4 bytes               Error detection code
   e)    8 bytes               Zero                
   f)  276 bytes               Layered error correction code


A sector that contains CD-ROM Data Mode two data has the following
format:

   a)  12 bytes      Synchronization field
   b)  4 bytes       CD-ROM data header  
                      Absolute M field in bcd format
                      Absolute S field in bcd format
                      Absolute F field in bcd format
                      CD-ROM data mode field
   c)  2 336 bytes                User data field (2048 bytes of mode 1 data   
                      plus 288 bytes of auxiliary data)       


   NOTE 172 Many drives are capable of returning CD-ROM data mode one data in
   a CD-ROM data mode two format.  This allows the user to investigate the
   error detection and error correction codes.  However data encoded as CD-
   ROM data mode two cannot be read as CD-ROM data mode one data.

14.1.2.3 Sub-channel information formats

The sub-channel byte of each frame is assigned one bit for each of the
8 sub-channels, designated P, Q, R, S, T, U, V, W.  Only sub-channels P
and Q are defined for CD-ROM media.  The other sub-channel bits are
zero.

Sub-channel P is a simple flag bit that may be used for audio muting
control and track boundary determination. 

Sub-channel Q has a higher level of structure. All the sub-channel Q
bits of a sector define the sub-channel Q information block.  (For
audio tracks, decoding the Q sub-channel is the only way to distinguish
sector boundaries.) 

The sub-channel Q block consists of 98 bits, one bit from each small
frame in a sector.  Three formats are defined for the sub-channel Q
information block. The first format provides location information and
is defined as follows:

   a)     2 bits           Sub-channel synchronization field
   b)     4 bits           ADR field - defines the format 
   c)     4 bits           Control field - defines the type  
                   of information in this sector
   d)     8 bits           Track number (in BCD)
   e)     8 bits           Index number (in BCD)
   f)     24 bits          Track relative MSF address
   g)     8 bits           Reserved (0)           
   h)     24 bits          Absolute MSF address 
   i)     16 bits          CRC error detection code 

This format is required to exist in at least nine out of ten
consecutive sectors. 

The second and third formats are optional.  If used, they must exist in
at least one out of 100 consecutive sectors.  They include the absolute
frame byte of the MSF address to provide location information
continuity.

The second format gives the catalogue number of the disc (UPC/EAN bar
code number).  This information is constant over the whole media. 

The third format gives the International Standard Recording Code (ISRC)
for each track.  The ISRC is defined in ISO 3901.  This format is not
present on lead-in or lead-out tracks and may change only after the
track number changes.

14.1.3 CD Audio error reporting

PLAY AUDIO commands with the immediate bit set in the audio control
mode return status as soon as the command has been validated (which may
involve a seek to the starting address). The playback operation
continues and may complete without notification to the initiator. 
Error termination of audio operations shall be reported to the
initiator by returning immediate CHECK CONDITION status to the next
command (except for REQUEST SENSE and INQUIRY.)  The deferred error
sense data (see 8.2.14.2.) is used to indicate that the error is not
due to the current command.

The status of the play operation may be determined by issuing a REQUEST
SENSE command.  The sense key is set to NO SENSE and the audio status
(see 14.2.10) is reported in the additional sense code qualifier field.

14.1.4 CD-ROM ready condition/not ready condition

The ready condition occurs after a cartridge is inserted and the drive
has performed its initialization tasks.  These may include reading the
table of contents from the media.

A not ready condition may occur for the following reasons:  
   a)     There is no cartridge inserted.
   b)     The drive is unable to load or unload the cartridge.
   c)     The drive is unable to recover the table of contents.
   d)     The controller cannot select the drive.  

14.1.5 CD-ROM address reporting formats (MSF bit)

Several CD-ROM specific commands can report addresses either in logical
or in MSF format (see table 237).  The READ HEADER, READ SUB-CHANNEL
and READ TABLE OF CONTENTS commands have this feature.

                        Table 237 - MSF address format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 1   |                           M field                                     |
|-----+-----------------------------------------------------------------------|
| 2   |                           S field                                     |
|-----+-----------------------------------------------------------------------|
| 3   |                           F field                                     |
+=============================================================================+

An MSF bit of zero requests that the logical block address format be
used for the CD-ROM absolute address field or for the offset from the
beginning of the current track expressed as a number of logical blocks
in a CD-ROM track relative address field.  This track relative logical
block address (TRLBA) value is reported as a negative value in twos-
complement notation for transition areas that have decreasing MSF
encoded relative addresses.

An MSF bit of one requests that the MSF format be used for these
fields.  In certain transition areas, the relative MSF addresses are
decreasing positive values.  The absolute MSF addresses are always
increasing positive values (see entry in 14.4).

The M, S, and F fields are expressed as binary numbers.  The values
match those on the media, except for the encoding.  The ratios of M
field units to S field units and S field units to F field units are
reported in the mode parameters page (see 14.3.3).

14.1.6 Sensing support for CD-audio commands.

If any commands related to audio operations are implemented, then the
PLAY AUDIO command shall be implemented to allow a method for the
initiator to determine if audio operations are supported.  A target
responding to a PLAY AUDIO command which has a transfer length of zero,
with CHECK CONDITION status, and setting the sense key to ILLEGAL
REQUEST does not support audio play operations. 

   NOTE 173 The PLAY AUDIO command may be implemented without support for any
   of the other audio operations commands. 

14.1.7 Error reporting

If any of the following conditions occur during the execution of a
command, the target shall return CHECK CONDITION status.  The
appropriate sense key and additional sense code should be set.  The
following list illustrates some error conditions and the applicable
sense keys.  The list does not provide an exhaustive enumeration of all
conditions that may cause the CHECK CONDITION status.

Condition                                                                                Sense Key
Invalid logical block address                                                                          ILLEGAL
                                                                                                       REQUEST

Unsupported option requested                                                                       ILLEGAL
                                                                                                   REQUEST

Target reset or medium change since last command from this initiator                                                       
   UNIT ATTENTION

Self diagnostic failed                                                                                 HARDWARE
                                                                                                       ERROR

Unrecovered read error                                                                             MEDIUM ERROR
                                                                                  HARDWARE ERROR

Recovered read error                                                                            RECOVERED ERROR

Overrun or other error that might be resolved by repeating the command                                                    
ABORTED command

Attempt to read a blank block                                                                          BLANK CHECK

Attempt to play a data block as audio                                                                     BLANK
                                                                                                          CHECK


In the case of an invalid logical block address, the sense data
information field shall be set to the logical block address of the
first invalid address.

In the case of an attempt to read a blank or previously unwritten
block, the sense data information field shall be set to the logical
block address of the first blank block encountered.  The data read up
to that block shall be transferred.

There are other special error situations for CD-ROM devices. In the
following cases the sense key shall be set to BLANK CHECK and the
additional sense code set to END OF USER AREA ENCOUNTERED ON THIS
TRACK: 
   a)     a post-gap area is encountered (i.e. a block with CD-ROM Data
          Mode 0);
   b)     a pre-gap area is encountered (i.e. a block with index equal to
          0);
   c)     The information type (data vs. audio) changes. 

When not performing audio playback, if the logical block address
requested is not within a data track, the command shall be terminated
with CHECK CONDITION status.  The sense key shall be set to BLANK CHECK
and the additional sense code set to ILLEGAL MODE FOR THIS TRACK.  This
applies to audio-combined and audio media.   

14.2 Commands for CD-ROM devices

The commands for CD-ROM devices shall be as shown in table 238.

                    Table 238 - Commands for CD-ROM device
+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| COMPARE                             |    39h     |   O  |   8.2.2    |
| COPY                                |    18h     |   O  |   8.2.3    |
| COPY AND VERIFY                     |    3Ah     |   O  |   8.2.4    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOCK/UNLOCK CACHE                   |    36h     |   O  |   9.2.2    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| MODE SELECT(6)                      |    15h     |   O  |   8.2.8    |
| MODE SELECT(10)                     |    55h     |   O  |   8.2.9    |
| MODE SENSE(6)                       |    1Ah     |   O  |   8.2.10   |
| MODE SENSE(10)                      |    5Ah     |   O  |   8.2.11   |
| PAUSE/RESUME                        |    4Bh     |   O  |  14.2.1    |
| PLAY AUDIO(10)                      |    45h     |   O* |  14.2.2    |
| PLAY AUDIO(12)                      |    A5h     |   O* |  14.2.3    |
| PLAY AUDIO MSF                      |    47h     |   O* |  14.2.4    |
| PLAY AUDIO TRACK/INDEX              |    48h     |   O* |  14.2.5    |
| PLAY TRACK RELATIVE(10)             |    49h     |   O* |  14.2.6    |
| PLAY TRACK RELATIVE(12)             |    A9h     |   O* |  14.2.7    |
| PRE-FETCH                           |    34h     |   O  |   9.2.3    |
| PREVENT/ALLOW MEDIUM REMOVAL        |    1Eh     |   O  |   9.2.4    |
| READ(6)                             |    08h     |   O  |   9.2.5    |
| READ(10)                            |    28h     |   M  |   9.2.6    |
| READ(12)                            |    A8h     |   O  |  16.2.4    |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| READ CD-ROM CAPACITY                |    25h     |   M  |  14.2.8    |
| READ HEADER                         |    44h     |   O  |  14.2.9    |
| READ LONG                           |    3Eh     |   O  |   9.2.9    |
| READ SUB-CHANNEL                    |    42h     |   O  |  14.2.10   |
| READ TOC                            |    43h     |   O  |  14.2.11   |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| RELEASE                             |    17h     |   M  |   9.2.11   |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| RESERVE                             |    16h     |   M  |   9.2.12   |
| REZERO UNIT                         |    01h     |   O  |   9.2.13   |
| SEARCH DATA EQUAL(10)               |    31h     |   O  |   9.2.14.1 |
| SEARCH DATA EQUAL(12)               |    B1h     |   O  |  16.2.8    |
| SEARCH DATA HIGH(10)                |    30h     |   O  |   9.2.14.2 |
| SEARCH DATA HIGH(12)                |    B0h     |   O  |  16.2.8    |
| SEARCH DATA LOW(10)                 |    32h     |   O  |   9.2.14.3 |
| SEARCH DATA LOW(12)                 |    B2h     |   O  |  16.2.8    |
| SEEK(6)                             |    0Bh     |   O  |   9.2.15   |
| SEEK(10)                            |    2Bh     |   O  |   9.2.15   |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| SET LIMITS(10)                      |    33h     |   O  |   9.2.16   |
| SET LIMITS(12)                      |    B3h     |   O  |  16.2.9    |
| START STOP UNIT                     |    1Bh     |   O  |   9.2.17   |
| SYNCHRONIZE CACHE                   |    35h     |   O  |   9.2.18   |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| VERIFY(10)                          |    2Fh     |   O  |  16.2.11   |
| VERIFY(12)                          |    Afh     |   O  |  16.2.12   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
|      * = indicates a PLAY AUDIO command                              |
+======================================================================+


The following command codes are vendor-specific:  02h, 05h, 06h, 09h,
0Ch, 0Dh, 0Eh, 0Fh, 10h, 11h, 13h, 14h, 19h, 20h, 21h, 22h, 23h, 24h,
26h, 27h, 29h, and C0h through FFh.  All remaining command codes for
CD-ROM devices are reserved for future standardization.

If any of the PLAY AUDIO commands (indicated by an * in the type
column) are implemented, the PLAY AUDIO command shall be implemented by
the target. 

14.2.1 PAUSE RESUME command

The PAUSE RESUME command (see table 239) requests that the device stop
or start an audio play operation.  This command is used with PLAY AUDIO
commands issued while the immediate bit is set to one.

                       Table 239 - PAUSE RESUME command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (4Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                     Reserved               |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                           | Resume |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


A resume bit of zero causes the drive to enter the hold track state
with the audio output muted after the current block is played.   A
resume bit of one causes the drive to release the pause and begin play
at the block following the last block played.

If an audio play operation cannot be resumed and the resume bit is one,
the command is terminated with CHECK CONDITION status. If the resume
bit is zero and an audio play operation cannot be paused, (no audio
play operation has been requested, or the requested audio play
operation has been completed), the command is terminated with CHECK
CONDITION status.   

It shall not be considered an error to request a pause when a pause is
already in effect, or to request a resume when a play operation is in
progress.

14.2.2 PLAY AUDIO(10) command

The PLAY AUDIO command (see table 240) requests that the target begin
an audio playback operation. The command function (Immed and SOTC bits)
and the output of audio signals shall be as specified by the settings
of the mode parameters (see 14.3.3.1.).

                      Table 240 - PLAY AUDIO(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (45h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |             Reserved              | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                 Starting logical block address                  ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                          ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


If any commands related to audio operations are implemented then the
PLAY AUDIO command shall be implemented to allow a method for the
initiator to determine if audio operations are supported.  A target
responding to a PLAY AUDIO command that has a transfer length of zero
with CHECK CONDITION status and setting the sense key to ILLEGAL
REQUEST does not support audio play operations. 

The logical block address field specifies the logical block at which
the audio playback operation shall begin.

The transfer length field specifies the number of contiguous logical
blocks that shall be played. A transfer length field of zero indicates
that no audio operation shall occur.  This condition shall not be
considered an error.  

If the logical block length is not equal to the sector size, the target
may adjust the starting logical block address and the transfer length.
In such case, it is recommended that the target start the audio play
operation with the beginning of a sector whenever the starting logical
address falls within that sector (MSF unit). If the requested transfer
length causes the end of an audio play operation to fall within a
sector, the target may continue the play operation through the end of
that sector.

If the starting address is not found, if the address is not within an
audio track, or if a not ready condition exists, the command shall be
terminated with CHECK CONDITION status. 

If the CD-ROM information type (data vs. audio) changes, the sense key
shall be set to BLANK CHECK and the additional sense code set to END OF
USER AREA ENCOUNTERED ON THIS TRACK. 

If the logical block address requested is not within an audio track,
the command shall be terminated with CHECK CONDITION status.  The sense
key shall be set to BLANK CHECK and the additional sense code set to
ILLEGAL MODE FOR THIS TRACK.

14.2.3 PLAY AUDIO(12) command 

The PLAY AUDIO(12) command (see table 241) requests that the target to
begin an audio playback operation. The command function (Immed and SOTC
bits) and the output of audio signals shall be as specified by the
settings of the mode parameters (see 14.3.3.1.). See the PLAY AUDIO(10)
command for a description of the fields in this command.

                      Table 241 - PLAY AUDIO(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (A5h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |               Reserved            | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                      Logical block address                      ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Transfer length                          ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                             Reserved                                  |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


14.2.4 PLAY AUDIO MSF command

The PLAY AUDIO MSF command (see table 242) requests that the target to
begin an audio playback operation.  The command function (Immed and
SOTC bits) and the output of audio signals shall be as specified by the
settings of the mode parameters (see 14.3.3.1.).

                      Table 242 - PLAY AUDIO MSF command
+=====-========-========-========-========-========-========-========-========+
|  Bit|        |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (47h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Starting M field                            |
|-----+-----------------------------------------------------------------------|
| 4   |                           Starting S field                            |
|-----+-----------------------------------------------------------------------|
| 5   |                           Starting F field                            |
|-----+-----------------------------------------------------------------------|
| 6   |                           Ending M field                              |
|-----+-----------------------------------------------------------------------|
| 7   |                           Ending S field                              |
|-----+-----------------------------------------------------------------------|
| 8   |                           Ending F field                              |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The starting M field, the starting S field, and the starting F field
specify the absolute MSF address at which the audio play operation
shall begin.  The ending M field, the ending S field, and the ending F
field specify the absolute MSF address where the audio play operation
shall end.  All contiguous audio sectors between the starting and the
ending MSF address shall be played.

A starting MSF address equal to an ending MSF address causes no audio
play operation to occur.  This shall not be considered an error.  If
the starting MSF address is less than the ending MSF address, the
command shall be terminated with CHECK CONDITION status.  The sense key
shall be set to ILLEGAL REQUEST.

If the starting address is not found, if the address is not within an
audio track, or if a not ready condition exists, the command shall be
terminated with CHECK CONDITION status.  See 14.1.7 for a description
of error reporting information.

14.2.5 PLAY AUDIO TRACK INDEX command

The PLAY AUDIO TRACK INDEX command (see table 243) requests the target
to begin an audio play operation. The command function (Immed and SOTC
bits) and the output of audio signals shall be as specified by the
settings of the mode parameters (see 14.3.3.1.).

                  Table 243 - PLAY AUDIO TRACK INDEX command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (48h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Starting track                              |
|-----+-----------------------------------------------------------------------|
| 5   |                           Starting index                              |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Ending track                                |
|-----+-----------------------------------------------------------------------|
| 8   |                           Ending index                                |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The starting track field specifies the track number of the starting
audio track.  The starting index field specifies the index number
within the track at which the audio play operation shall begin.  

The ending track field specifies the track number of the ending audio
track.  The ending index field specifies the index number within the
track after which the audio play operation shall stop.  The audio play
operation shall terminate at the last block with an index number equal
to the ending index. All contiguous audio sectors between the starting
and the ending address shall be played.

If the starting address is less than the ending address, the command
shall be terminated with CHECK CONDITION status.  The sense key shall
be set to ILLEGAL REQUEST.

If the starting address is not found, or if the address is not within
an audio track, or if a not ready condition exists, the command shall
be terminated with CHECK CONDITION status.  See 14.1.7 for a
description of error reporting information.

   NOTE 174 Valid values for the track and index fields are 1 to 99. A
   starting index value of one specifies that playback is to start with the
   first audio sector of the track following the (optional) pause.  A last
   index value of 99 specifies that playback continues through the last
   sector of the track. 

If the ending track is greater than the last information track on the
media, the playback shall continue until the last track is complete. 
If the ending index is greater than the largest index value on the
ending track, the playback shall continue until this track is complete;
then terminate.  These conditions shall not be considered errors.

If the starting index is greater than the largest index value on the
starting track, and the stop on track crossing (SOTC) bit of the audio
control MODE SELECT parameters page (see 14.3.3.1) is zero, the
playback operation shall start at the beginning of the next track. 
This situation is not an error.

If the starting index is greater than the largest index value on the
starting track, and the stop on track crossing (SOTC) bit of the audio
control MODE SELECT parameters page (see 14.3.3.1) is one, the playback
shall not begin. The target shall return CHECK CONDITION, and the sense
key shall be set to ILLEGAL REQUEST.

   NOTE 175 The operation of the SOTC bit described above comes about because
   the user may not be able to determine the largest index value on a track,
   either from the table of contents or by other means. The SOTC bit one case
   allows the user to determine the largest index. The SOTC bit zero case
   allows the user to set up play operations without complete knowledge of
   the media layout. 

14.2.6 PLAY AUDIO TRACK RELATIVE(10) command

The PLAY AUDIO TRACK RELATIVE(10) command (see table 244) requests that
the device begin an audio playback operation.  The starting address is
specified as a track relative logical block address within the
specified starting track. The command function (Immed and SOTC bits)
and the output of audio signals shall be as specified by the settings
of the mode parameters (see 14.3.3.1.).

              Table 244 - PLAY AUDIO TRACK RELATIVE(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (49h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---              Track relative logical block address               ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 6   |                           Starting track                              |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                          ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The starting track field specifies the track number of the starting
audio track.  

The track relative logical block address (TRLBA) field specifies the
two's complement starting logical block address relative to the
beginning of the first sector on the track with an index value of one.
Negative values indicate a starting location within the audio pause
area at the beginning of the requested track.

The transfer length field specifies the number of contiguous logical
blocks that shall be output as audio data.  A transfer length field of
zero indicates that no audio playback operation shall occur.  This
condition shall not be considered an error.  Any other value indicates
the number of logical blocks that shall be output.

If the logical block length is not equal to the sector size the target
may adjust the starting logical block address and the transfer length.
In such case, it is recommended that the target start the audio play
operation with the beginning of a sector whenever the starting logical
address falls within that sector (MSF unit). If the requested transfer
length causes the end of an audio play operation to fall within a
sector, the target may continue the play operation through the end of
that sector.

If the starting address is not found, or if the address is not within
an audio track, or if a not ready condition exists, the command is
terminated with CHECK CONDITION status.  See 14.1.7 for a description
of error reporting information.

14.2.7 PLAY AUDIO TRACK RELATIVE(12) command

The PLAY AUDIO TRACK RELATIVE(12) command (see table 245) requests that
the device begin an audio playback operation. The command function
(Immed and SOTC bits) and the output of audio signals shall be as
specified by the settings of the mode parameters (see 14.3.3.1.). See
the PLAY AUDIO TRACK RELATIVE(10) command for a description of the
fields in this command.

              Table 245 - PLAY AUDIO TRACK RELATIVE(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (A9h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---              Track relative logical block address               ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Transfer length                          ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Starting track                              |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


14.2.8 READ CD-ROM CAPACITY command

The READ CD-ROM CAPACITY command (see table 246) provides a means for
the initiator to request information regarding the capacity of the
logical unit.

                   Table 246 - READ CD-ROM CAPACITY command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (25h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |             Reserved              | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                           |  PMI   |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


   NOTE 176 This command has the same operation code (25h) as the READ
   CAPACITY command (see 92.7).  The general function is the same but the
   exact definitions of the returned logical block address is modified to
   allow returning a possibly inexact value (but one with a known error
   bound) based on CD-ROM table of contents data.  For many CD-ROM devices,
   this implementation allows a quicker response.

A partial medium indicator (PMI) bit of zero indicates that the
information returned in the READ CD-ROM CAPACITY data shall be the
logical block address and block length (in bytes) of the last valid
logical block of the logical unit for seek operations. The logical
block address returned shall be greater than or equal to the last
readable or playable block. If greater, this address may be in a
transition area beyond the last valid logical block for read or audio
play operations. The value returned shall not be not be more than 75
sectors (MSF units) greater than the logical block address of the last
readable or playable block. (This value arises because the CD-ROM table
of contents lead-out track location  has a +/- 75 sector tolerance when
the lead-out track is encoded as an audio track.) The logical block
address in the command descriptor block shall be set to zero for this
option.

A PMI bit of one indicates that the information returned shall be the
logical block address and block length (in bytes) of the last logical
block address after which a substantial delay in data transfer will be
encountered. This logical block address shall be greater than or equal
to the logical block address specified in the command descriptor block. 
On CD-ROM media, this is interpreted as being the last readable or
playable logical block of the information area containing or
immediately following the specified logical block address.  

   NOTE 177 This option may take several seconds to complete on CD-ROM media.

See 9.1.10 for a description of the relative address bit (RelAdr).

Eight bytes of READ CD-ROM CAPACITY data (see table 247) shall be sent
during the DATA IN phase of the command.

                    Table 247 - READ CAPACITY data format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|- - -+---                        Logical block address                    ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|- - -+---                        Block length                             ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


14.2.9 READ HEADER command

The READ HEADER command (see table 248) requests that the device return
the CD-ROM data block address header of the requested logical block. 

                       Table 248 - READ HEADER command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (44h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |         Reserved         |  MSF   |Reserved|
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Allocation length                        ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


See 14.1.5. for a description of the MSF bit.

The logical block address field specifies the logical block at which
the read header operation shall begin.

See the READ command for exception handling.  If the logical block size
is other than the physical block size, it shall be mapped into the
appropriate physical block from which the data would have been read. 

The READ HEADER data format (see table 249) defines the CD-ROM data
block address header of the requested logical block.

                     Table 249 - READ HEADER data format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                       CD-ROM data mode                                |
|-----+-----------------------------------------------------------------------|
| 1   |                          Reserved                                     |
|-----+-----------------------------------------------------------------------|
| 2   |                          Reserved                                     |
|-----+-----------------------------------------------------------------------|
| 3   |                          Reserved                                     |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|- - -+---                    Absolute CD-ROM address                      ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


The CD-ROM data mode field specifies the CD-ROM data mode of the
logical blocks in this sector of data.  The values in this field are
defined in table 250.

                      Table 250 - CD-ROM data mode codes
  +=============-============================-============================+
  |    CD-ROM   |  User data field contents  |  Auxiliary field contents  |
  |     mode    |       (2 048 bytes)        |        (288 bytes)         |
  |-------------+----------------------------+----------------------------|
  |     00h     |  All bytes zero            |  All bytes zero            |
  |     01h     |  User data                 |  L-EC symbols              |
  |     02h     |  User data                 |  User data                 |
  |  03h - FFh  |  Reserved                  |  Reserved                  |
  +=======================================================================+


If the MSF bit is zero, the absolute address field gives the logical
block address of the first logical block in the physical sector where
the data for the requested logical block address is found.  If the MSF
bit is one, the absolute address field gives the MSF address of the
sector where the data for the requested logical block address is found.
(See 14.1.5.) 

14.2.10 READ SUB-CHANNEL command

The READ SUB-CHANNEL command (see table 251) requests that the target
return the requested sub-channel data plus the state of audio play
operations.

                     Table 251 - READ SUB-CHANNEL command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                          Operation code (42h)                         |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |         Reserved         |  MSF   |Reserved|
|-----+-----------------------------------------------------------------------|
| 2   |Reserved|  SubQ  |                       Reserved                      |
|-----+-----------------------------------------------------------------------|
| 3   |                        Sub-channel data format                        |
|-----+-----------------------------------------------------------------------|
| 4   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 5   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 6   |                             Track number                              |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                       Allocation length                         ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                               Control                                 |
+=============================================================================+


   NOTE 178 Sub-channel data returned by this command may be from the last
   appropriate sector encountered by a current or previous media accessing
   operation. When there is no current audio play operation, the target may
   access the media to read the sub-channel data. The target is responsible
   that the data returned are current and consistent.  For example with sub-
   channel data format 0, the International Standard Recording Code (ISRC)
   data reported must have been read from the same track as the reported
   current position data.

See 14.1.5. for a description of the MSF bit.

The sub Q bit set to one requests that the target return the Q sub-
channel data. The sub Q bit set to zero requests that no sub-channel
data be returned. This shall not be considered an error.

   NOTE 179 The other bits in this byte are reserved for future
   standardization when they may be defined to request other sub-channel
   data.

The sub-channel data format field specifies the returned sub channel
data (see table 252). If this field is 00h, sub-Q channel data is
returned. If this field is 01h, 02h or 03h, the requested sub-Q data
item is returned.

                  Table 252 - Sub-channel data format codes
+=============-======================================================+
| Format Code |  Returned data                                       |
|-------------+------------------------------------------------------|
|     00h     |  Sub-Q channel data                                  |
|     01h     |  CD-ROM current position                             |
|     02h     |  Media catalogue number (UPC/bar code)               |
|     03h     |  Track international standard recording code (ISRC)  |
|  04h - EFh  |  Reserved                                            |
|  F0h - FFh  |  Vendor-specific                                     |
+====================================================================+


The track number field specifies the track from which ISRC data is
read. This field must have a value between 01h and 63h (99bcd), and is
valid only when the sub-channel data format field is 03h.  In this
case, the target returns ISRC data for this track.

14.2.10.1 Sub-Q channel data format

The sub-CHANNEL command data formats consist of a four-byte header
followed by a sub-channel data block.  The header contains the audio
status byte and the sub-channel data length field.  If the sub Q bit is
zero, the target shall not return the sub-channel data block; in this
case, the sub-channel data length is 0.

Table 253 defines the sub-Q channel data format.

                    Table 253 - Sub-Q channel data format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
|     |                        Sub-channel data header                        |
|=====+=======================================================================|
| 0   |                                Reserved                               |
|-----+-----------------------------------------------------------------------|
| 1   |                              Audio status                             |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                     Sub-channel data length                     ---|
| 3   |                                                                 (LSB) |
|=====+=======================================================================|
|     |                        Sub-Q channel data block                       |
|=====+=======================================================================|
| 4   |                    Sub channel data format code (00h)                 |
|-----+-----------------------------------------------------------------------|
| 5   |                ADR                |             Control               |
|-----+-----------------------------------------------------------------------|
| 6   |                             Track number                              |
|-----+-----------------------------------------------------------------------|
| 7   |                             Index number                              |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|- - -+---                     Absolute CD-ROM address                     ---|
| 11  |                                                                 (LSB) |
|--- -+-----------------------------------------------------------------------|
| 12  | (MSB)                                                                 |
|- - -+---                  Track relative CD-ROM address                  ---|
| 15  |                                                                 (LSB) |
|--- -+-----------------------------------------------------------------------|
| 16  |  MCVal |                       Reserved                               |
|--- -+-----------------------------------------------------------------------|
| 17  | (MSB)                                                                 |
|- - -+---                Media catalogue number (UPC/Bar code)            ---|
| 31  |                                                                 (LSB) |
|--- -+-----------------------------------------------------------------------|
| 32  |  TCVal |                       Reserved                               |
|--- -+-----------------------------------------------------------------------|
| 33  | (MSB)                                                                 |
|- - -+---        Track international standard recording code (ISRC)       ---|
| 47  |                                                                 (LSB) |
+=============================================================================+


The audio status field indicates the status of audio play operations. 
The audio status values are defined in table 254. Audio status values
greater than zero are returned only to the initiator that requested the
last audio play operation. Audio status values 13h and 14h return
information on previous audio operations; they are returned only once
after the condition has occurred.  If another audio play operation is
not requested, the audio status returned for subsequent READ SUB-
CHANNEL commands is 15h.

                        Table 254 - Audio status codes
         +========-================================================+
         | Status |  Description                                   |
         |--------+------------------------------------------------|
         |   00h  |  Audio status byte not supported or not valid  |
         |   11h  |  Audio play operation in progress              |
         |   12h  |  Audio play operation paused                   |
         |   13h  |  Audio play operation successfully completed   |
         |   14h  |  Audio play operation stopped due to error     |
         |   15h  |  No current audio status to return             |
         +=========================================================+


The sub-channel data length specifies the length in bytes of the
following sub-channel data block.  A sub-channel data length of zero
indicates that no sub-channel data block is included in the returned
data. 

   NOTE 180 Usual values for sub-channel data length are 0, 12, 20, 28 and 44
   bytes.  Sub-channel data length does not include the sub channel header.

The sub-Q channel data block consists of control data (bytes 4-5),
current position data (bytes 6 - 15) and identification data (bytes 16
- 47).  The control data and current position data is obtained from the
Q sub-channel information of the current block. Identification data may
be reported that was obtained from a previous block.  If identification
data is reported, the data shall be valid for the sector addressed by
the current position data.
   a)     If an audio play operation is proceeding in the background,
          position data for the last sector played shall be reported.
   b)     In other cases, for instance after a READ command, the target may
          either report position data for the last sector processed for
          that operation or may report position data from the sector at the
          current read head position.

   NOTE 181 When the type of information encoded in the Q sub-channel of the
   current sector is the media catalog number or ISRC; the track, index, and
   address fields should be extrapolated from the previous sector.

The ADR field gives the type of information encoded in the Q sub-
channel of this block, as shown in table 255.

                     Table 255 - ADR sub-channel Q field
  +===========-===========================================================+
  |  ADR code |  Description                                              |
  |-----------+-----------------------------------------------------------|
  |     0h    |  Sub-channel Q mode information not supplied              |
  |     1h    |  Sub-channel Q encodes current position data              |
  |           |  (i.e. track, index, absolute address, relative address)  |
  |     2h    |  Sub-channel Q encodes media catalogue number             |
  |     3h    |  Sub-channel Q encodes ISRC                               |
  |  4h - Fh  |  Reserved                                                 |
  +=======================================================================+

The control bits are defined in table 256.

                    Table 256 - Sub-channel Q control bits
+=====-==============================-===========================+
| Bit |       Equals zero            |       Equals one          |
|-----+------------------------------+---------------------------|
|  0  |  Audio without pre-emphasis  |  Audio with pre-emphasis  |
|  1  |  Digital copy prohibited     |  Digital copy permitted   |
|  2  |  Audio track                 |  Data track               |
|  3  |  Two-channel audio           |  Four-channel audio       |
+================================================================+







The track number specifies the current track number.

The index number specifies the index number in the current track.

The absolute CD-ROM address field gives the current location relative
to the logical beginning of the media.  If the MSF bit is zero, this
field is a logical block address.  If the MSF bit is one, this field is
an absolute MSF address. (See 14.1.5.)

The track relative CD-ROM address field gives the current location
relative to the logical beginning of the current track.  If the MSF bit
is zero, this field is a track relative logical block address.  (If the
current block is in the pre-gap area of a track, this will be a
negative value, expressed as a twos-complement number. See 14.1.5).  If
the MSF bit is one, this field is the relative MSF address from the Q
sub-channel. 

A media catalogue valid (MCVal) bit of one indicates that the media
catalogue number field is valid.  A MCVal bit of zero indicates that
the media catalogue number field is not valid.

The media catalogue number field contains the identifying number of
this media according to the uniform product code values (UPC/EAN bar
coding) expressed in ASCII. Non-zero values in this field are
controlled by the Uniform Product Code Council 1) and the European
Article Number Council 2).  A value in this field of all ASCII zeros
indicates that the media catalog number is not supplied.

The track code valid (TCVal) bit of one indicates that the track ISRC
field is valid.  A TCVal bit of zero indicates that the track
international standard recording code (ISRC) field is not valid.

The track ISRC field contains the identifying number of this media
according to the ISRC standards (DIN-31-621) expressed in ASCII.  
----
   1) The Uniform Product Code Council is located at 8163 Old Yankee
Road, Suite J, Dayton, Ohio 45459.
   2) The European Article Number Council is located at Rue des
Colonies, 54-BTE8, 1000 Brussels, Belgium.




14.2.10.2 CD-ROM current position data format

Table 257 defines the CD-ROM current position data format.

               Table 257 - CD-ROM current position data format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
|     |                        Sub-channel data header                        |
|=====+=======================================================================|
| 0   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 1   |                             Audio status                              |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                     Sub-channel data length                     ---|
| 3   |                                                                 (LSB) |
|=====+=======================================================================|
|     |                  CD-ROM current position data block                   |
|=====+=======================================================================|
| 4   |                  Sub channel data format code (01h)                   |
|-----+-----------------------------------------------------------------------|
| 5   |                ADR                |             Control               |
|-----+-----------------------------------------------------------------------|
| 6   |                             Track number                              |
|-----+-----------------------------------------------------------------------|
| 7   |                             Index number                              |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|- - -+---                     Absolute CD-ROM address                     ---|
| 11  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 12  | (MSB)                                                                 |
|- - -+---                  Track relative CD-ROM address                  ---|
| 15  |                                                                 (LSB) |
+=============================================================================+


14.2.10.3 Media catalogue number data format

Table 258 defines the media catalogue number data format.

                Table 258 - Media catalogue number data format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
|     |                        Sub-channel data header                        |
|=====+=======================================================================|
| 0   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 1   |                             Audio status                              |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                     Sub-channel data length                     ---|
| 3   |                                                                 (LSB) |
|=====+=======================================================================|
|     |                   Media catalogue number data block                   |
|=====+=======================================================================|
| 4   |                  Sub channel data format code (02h)                   |
|-----+-----------------------------------------------------------------------|
| 5   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 6   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 7   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 8   |  MCVal |                      Reserved                                |
|-----+-----------------------------------------------------------------------|
| 9   | (MSB)                                                                 |
|- - -+---              Media catalogue number (UPC/Bar code)              ---|
| 23  |                                                                 (LSB) |
+=============================================================================+

If media catalogue number data is found, the MCVal bit is set to one. 
If MCN data is not detected, the MCVal bit is set to zero to indicate
the media catalogue number field is invalid.

   NOTE 182 Media catalogue number data returned by this command with sub-
   channel data format field code 02h may be from any block that has UPC bar
   code Q sub-channel data. (This code is constant anywhere in every
   applicable disc.)

14.2.10.4 Track international standard recording code data format

Table 259 defines the track international standard recording code data
format.

     Table 259 - Track international standard recording code data format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
|     |                       Sub-channel data header                         |
|=====+=======================================================================|
| 0   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 1   |                             Audio status                              |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                     Sub-channel data length                     ---|
| 3   |                                                                 (LSB) |
|=====+=======================================================================|
|     |                         Track ISRC data block                         |
|=====+=======================================================================|
| 4   |                    Sub channel data format code (03h)                 |
|-----+-----------------------------------------------------------------------|
| 5   |              ADR                  |               Control             |
|-----+-----------------------------------------------------------------------|
| 6   |                             Track number                              |
|-----+-----------------------------------------------------------------------|
| 7   |                               Reserved                                |
|-----+-----------------------------------------------------------------------|
| 8   |  TCVal |                      Reserved                                |
|-----+-----------------------------------------------------------------------|
| 9   | (MSB)                                                                 |
|- - -+---         Track international standard recording code (ISRC)      ---|
| 23  |                                                                 (LSB) |
+=============================================================================+


If ISRC data is detected, the TCVal bit is set to one.  If ISRC data is
not detected, the TCVal bit is set to zero to indicate the ISRC field
is invalid.

   NOTE 183 Track ISRC data returned by this command with sub-channel data
   format field 03h may be from any block in the specified track that has
   ISRC data.

14.2.11 READ TOC command

The READ TOC command (see table 260) requests that the target transfers
data from the table of contents to the initiator.

                         Table 260 - READ TOC command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                         Operation code (43h)                          |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |         Reserved         |  MSF   |Reserved|
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Starting track                              |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Allocation length                        ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


See 14.1.5. for a description of the MSF bit.

The starting track field specifies the starting track number for which
the data shall be returned.  If this value is zero, the table of
contents data shall begin with the first track on the medium.  The data
are returned in contiguous ascending track number order.  

If the starting track field is not valid for the currently installed
medium, the command shall be terminated with CHECK CONDITION status. 
The sense key shall be set to ILLEGAL REQUEST and the additional sense
code set to INVALID FIELD IN CDB.

   NOTE 184 The maximum TOC data length possible on currently available CD-
   ROM media is 804 bytes, or 100 TOC track descriptors.

The format of the data returned is specified in table 261.

                       Table 261 - READ TOC data format 
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|-----+---                        TOC data length                          ---|
| 1   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 2   |                           First track number                          |
|-----+-----------------------------------------------------------------------|
| 3   |                           Last track number                           |
|=====+=======================================================================|
|     |                         TOC track descriptor(s)                       |
|=====+=======================================================================|
| 0   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 1   |              ADR                  |             Control               |
|-----+-----------------------------------------------------------------------|
| 2   |                           Track number                                |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|- ---+---                        Absolute CD-ROM address                  ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


The TOC data block contains a four-byte header followed by zero or more
TOC track descriptors.

The TOC data length specifies the length in bytes of the following TOC
data that is available to be transferred during the DATA IN phase. The
TOC data length value does not include the TOC data length field
itself.

The first track number field indicates the first track number in the
table of contents.  

The last track number field indicates the last track number in the
table of contents before the lead-out track number.

   NOTE 185 The first track number is not required to be one.  A disc may
   start at any valid track number.  The track numbers between the first
   track number and the last track number are required to be in contiguous
   ascending order, except for the lead-out track.

The ADR field gives the type of information encoded in the Q sub-
channel of the block where this TOC entry was found.  The possible ADR
values are defined in 14.2.10.1.

The control field indicates the attributes of the track.  The possible
control field values are defined in 14.2.10.1.

The track number field indicates the track number for which the data in
the TOC track descriptor is valid.  A track number of 0AAh indicates
that the track descriptor is for the start of the lead-out area.

The absolute CD-ROM address contains the address of the first block
with user information for that track number as read from the table of
contents.  An MSF bit of zero indicates that the absolute CD-ROM
address field contains a logical block address.  An MSF bit of one
indicates the absolute CD-ROM address field contains an MSF address
(see 14.1.5). 

   NOTE 186 The starting logical block address value recovered from the TOC
   has a tolerance of zero for data tracks and plus or minus 75 CD sectors
   for audio tracks.  This tolerance is multiplied by a factor dependent on
   the logical block length.

14.3 Parameters for CD-ROM devices


14.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic
parameters used with CD-ROM devices. 

The diagnostic page codes for CD-ROM devices are defined in table 262.

                      Table 262 - Diagnostic page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     00h     |  Supported diagnostic pages                      |  8.3.1.1   |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|  40h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+


14.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters
used with CD-ROM devices.

The log page codes for CD-ROM devices are defined in table 263.

                          Table 263 - Log page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |  8.3.2.1   |
|     03h     |  Error counter page (read) page                  |  8.3.2.2   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|     06h     |  Non-medium error page                           |  8.3.2.4   |
|     02h     |  Reserved                                        |            |
|  04h - 05h  |  Reserved                                        |            |
|  08h - 2Fh  |  Reserved                                        |            |
|     3Fh     |  Reserved                                        |            |
|     00h     |  Supported log pages                             |  8.3.2.5   |
|  30h - 3Eh  |  Vendor-specific pages                           |            |
+=============================================================================+


14.3.3 Mode parameters

This subclause defines the descriptors and pages for mode parameters
used with CD-ROM devices.

The mode parameter list, including the mode parameter header and mode
block descriptor are defined in 8.3.3.

The medium-type code field is contained in the mode parameter header
(see 8.3.3).  Table 264 defines the medium type values for CD-ROM
devices.


                     Table 264 - CD-ROM medium type codes
+=============-=========================================+
|     Code    |  Medium type description                |
|=============+=========================================|
|     00h     |  Default (only one type supported)      |
|     01h     |  120 mm CD-ROM data only                |
|     02h     |  120 mm CD-DA audio only                |
|     03h     |  120 mm CD-ROM data and audio combined  |
|     04h     |  Reserved                               |
|     05h     |  80 mm CD-ROM data only                 |
|     06h     |  80 mm CD-DA audio only                 |
|     07h     |  80 mm CD-ROM data and audio combined   |
|  08h - 7Fh  |  Reserved                               |
|  80h - FFh  |  Vendor-specific                        |
+=======================================================+


The device-specific parameter field is contained in the mode parameter
header (see 8.3.3).  Table 265 defines the device-specific parameter
field for CD-ROM devices.


                 Table 265 - CD-ROM device-specific parameter
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|=====+==========================+========+==========================+========|
|     |         Reserved         | DPOFUA |           Reserved       |  EBC   |
+=============================================================================+


When used with the MODE SELECT command, the DPOFUA bit is not used and
the field is reserved.

When used with the MODE SENSE command, a DPOFUA bit of one indicates
that the target supports the DPO and FUA bits (see 9.2.6).

The enable blank check (EBC) bit is reserved.

The density code field is contained in the mode parameter block
descriptor (see 8.3.3).  Table 266 defines the density code values for
CD-ROM devices.


                       Table 266 - CD-ROM density codes
+================-==================================================+
|    Code        |  Data types to be transferred                    |
|================+==================================================|
|     00h        |  Default density code                            |
|     01h        |  User data only                                  |
|                |    (2 048 bytes per physical sector)             |
|     02h        |  User data plus auxiliary data field             |
|                |    (2 336 bytes per sector)                      |
|     03h        |  4-byte tag field, user data plus auxiliary data |
|                |    (2 340 bytes per sector)                      |
|     04h        |  Audio information only                          |
|                |    (1/75th of a second per logical block)        |
|  05h - 7Fh     |  Reserved                                        |
|  80h - FFh     |  Vendor-specific                                 |
+===================================================================+


   NOTE 187 The number of bytes per sector specified by this parameter is
   used with the block length to map CD-ROM sectors to logical block
   addresses.

The mode page codes for CD-ROM devices are defined in table 267.

                         Table 267 - Mode page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     08h     |  Caching page                                    |   9.3.3.1  |
|     0Eh     |  CD-ROM audio control page                       |  14.3.3.1  |
|     0Dh     |  CD-ROM page                                     |  14.3.3.2  |
|     0Ah     |  Control mode page                               |   8.3.3.1  |
|     02h     |  Disconnect-reconnect page                       |   8.3.3.2  |
|     0Bh     |  Medium types supported page                     |   9.3.3.4  |
|     09h     |  Peripheral device page                          |   8.3.3.3  |
|     01h     |  Read error recovery page                        |  14.3.3.3  |
|  03h - 06h  |  Reserved                                        |            |
|     0Ch     |  Reserved                                        |            |
|  0Fh - 1Fh  |  Reserved                                        |            |
|     07h     |  Verify error recovery page                      |  14.3.3.4  |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+


14.3.3.1 CD-ROM audio control parameters

The CD-ROM audio control parameters page (see table 268) sets the
playback modes and output controls for subsequent PLAY AUDIO commands
and any current audio playback operation. 

               Table 268 - CD-ROM audio control parameters page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|            Page code (0Eh)                          |
|-----+-----------------------------------------------------------------------|
| 1   |                           Parameter length (0Eh)                      |
|-----+-----------------------------------------------------------------------|
| 2   |                  Reserved                  | Immed  |  SOTC  |Reserved|
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   | APRVal |         Reserved         |        Format of LBAs / Sec.      |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---          Logical blocks per second of audio playback            ---|
| 7   |                                                                  (LSB)|
|-----+-----------------------------------------------------------------------|
| 8   |              Reserved             |  Output port 0 channel selection  |
|-----+-----------------------------------------------------------------------|
| 9   |                           Output port 0 volume                        |
|-----+-----------------------------------------------------------------------|
| 10  |              Reserved             |  Output port 1 channel selection  |
|-----+-----------------------------------------------------------------------|
| 11  |                           Output port 1 volume                        |
|-----+-----------------------------------------------------------------------|
| 12  |              Reserved             |  Output port 2 channel selection  |
|-----+-----------------------------------------------------------------------|
| 13  |                           Output port 2 volume                        |
|-----+-----------------------------------------------------------------------|
| 14  |              Reserved             |  Output port 3 channel selection  |
|-----+-----------------------------------------------------------------------|
| 15  |                           Output port 3 volume                        |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

An immediate (Immed) bit of zero indicates the target shall not send
completion status until the audio playback operation is terminated.

An Immed bit of one indicates the target shall send completion status
as soon as the playback operation has been started.

   NOTE 188 It is recommended that a Logical Unit type RESERVE be issued
   prior to starting audio play operations with an Immed bit of one in any
   multiple initiator environment.

A stop on track crossing (SOTC) bit of zero indicates the target shall
terminate the audio playback operation when the transfer length is
satisfied.  Multiple tracks shall be played as necessary.  Periods of
time encoded as audio pause/silence at the beginning of tracks, (index
0) shall also be played. 

A stop on track crossing (SOTC) bit of one indicates the target shall
terminate the audio playback operation when the beginning of a
following track is encountered. 

The audio playback rate valid (APRVal) bit value of one indicates that
the format of logical blocks per second field and the logical blocks
per second of audio playback field are valid.

The format of logical blocks addresses per second field gives the
multiplier to be used with the logical blocks per second of audio
playback.  This is defined in table 269.

                       Table 269 - Multiplier for LBAs
+==============================-===================================+
|  Format of LBAs / Sec value  |  Multiplier for LBAs / Sec field  |
|------------------------------+-----------------------------------|
|                0h            |                1                  |
|              1h - 7h         |                Reserved           |
|                8h            |                1/256              |
|              9h - Fh         |                Reserved           |
+==================================================================+


   NOTE 189 This field is provided as a means to return fractional (i.e. non-
   integral) values in the logical block addresses per second of audio
   playback.  This shall occur when logical block sizes that are not even
   multiples or divisions of the physical block size are used.

The logical blocks per second of audio playback field gives the
relationship between time and the duration of play per logical block
address. The value in this field is to be multiplied by the value in
format of LBAs per second field. 

   NOTE 190 The logical blocks per second of audio playback field and its
   companion format of LBAs per second field may not be supported by most
   current CD-ROM devices as a modifiable mode select parameter.

The output port channel selection specifies the audio channels from the
disc to which this output port should be connected (see table 270). 
More than one output port may be connected to an audio channel.  More
than one audio channel may be connected to an output port. 

                  Table 270 - Output port channel selection
+==========-===============================================+
|   Code   |  Description                                  |
|==========+===============================================|
|   0000b  |  output port muted                            |
|   0001b  |  connect audio channel 0 to this output port  |
|   0010b  |  connect audio channel 1 to this output port  |
|   0100b  |  connect audio channel 2 to this output port  |
|   1000b  |  connect audio channel 3 to this output port  |
+==========================================================+


The channel volume control indicates the relative volume level for this 
audio output port. A value of zero indicates the output is muted, and a
value of FFh indicates maximum volume level.

   NOTE 191 If volume controls are implemented, the default volume level
   should be no more than 25 % of the maximum level as a personal safety
   consideration.

14.3.3.2 CD-ROM device parameters 

The CD-ROM parameters page (see table 271) specifies parameters that
affect all CD-ROM data types.

                      Table 271 - CD-ROM parameters page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (0Dh)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Parameter length (06h)                      |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |             Reserved              |     Inactivity timer multiplier   |
|-----+-----------------------------------------------------------------------|
| 4   |                                                                       |
|-----| - - -         Number of MSF - S units per MSF - M unit          - - - |
| 5   |                                                                       |
|-----+-----------------------------------------------------------------------|
| 6   |                                                                       |
|-----| - - -         Number of MSF - F units per MSF - S unit          - - - |
| 7   |                                                                       |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

The inactivity timer multiplier specifies the length of time that the
drive shall remain in the hold track state after completion of a seek
or read operation (see table 272).

   NOTE 192 Higher values in this parameter may have an adverse effect on the
   drive MTBF, in some implementations.

                Table 272 - Inactivity timer multiplier values
+==================-==================-===================-==================+
| Inactivity timer | Minimum time in  | Inactivity timer  | Minimum time in  |
|    multiplier    | hold track state |    multiplier     | hold track state |
|------------------+------------------+-------------------+------------------|
|       0h         | Vendor-specific  |       8h          |      16s         |
|       1h         | 125 ms           |       9h          |      32s         |
|       2h         | 250 ms           |       Ah          |      1 min       |
|       3h         | 500 ms           |       Bh          |      2 min       |
|       4h         |   1 s            |       Ch          |      4 min       |
|       5h         |   2 s            |       Dh          |      8 min       |
|       6h         |   4 s            |       Eh          |     16 min       |
|       7h         |   8 s            |       Fh          |     32 min       |
+=====================================-======================================+


The number of S units per M unit field gives the ratio of these MSF
address values. For media conforming to the CD-ROM and CD-DA standard,
this value is 60. 

The number of F units per S unit field gives the ratio of these MSF
address values. For media conforming to the CD-ROM and CD-DA standard,
this value is 75.

14.3.3.3 Read error recovery parameters 

The read error recovery parameters page (see table 273) specifies the
error recovery parameters the target shall use during any command that
performs a data read operation to the media (e.g. READ, READ TOC,
etc.). 

               Table 273 - Read error recovery parameters page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|                 Page code (01h)                     |
|-----+-----------------------------------------------------------------------|
| 1   |                       Parameter length (06h)                          |
|-----+-----------------------------------------------------------------------|
| 2   |                       Error recovery parameter                        |
|-----+-----------------------------------------------------------------------|
| 3   |                        Read retry count                               |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

The error recovery parameter bits are defined in 9.3.3.6. 

   NOTE 193 The implementation of error recovery procedures for CD-ROM
   devices is markedly different from those used for magnetic medium disk
   drives.  At least one level of error correction (i.e. CIRC) is required to
   transfer the data stream.  Therefore, the performance of the drive may
   differ substantially from what would be expected by sending the same error
   recovery parameters to a magnetic medium device.

The correlation of the error recovery parameter and the bit settings
defined for CD-ROM devices is given in table 274.  The interpretation
of these bit settings for CD-ROM devices is given in table 275. If the
error recovery parameter is set to any other value, the command shall
be terminated with CHECK CONDITION status.  The sense key shall be set
to ILLEGAL REQUEST and the additional sense code set to INVALID FIELD
IN PARAMETER LIST.

                   Table 274 - Error recovery bit settings
+===========-=================+
| Error     |   Bit settings  |
| recovery  |-----------------|
| parameter | 7 6 5 4 3 2 1 0 |
|===========+=================|
|    00h    | R R 0 0 R 0 0 0 |
|    01h    | R R 0 0 R 0 0 1 |
|    04h    | R R 0 0 R 1 0 0 |
|    05h    | R R 0 0 R 1 0 1 |
|    06h    | R R 0 0 R 1 1 0 |
|    07h    | R R 0 0 R 1 1 1 |
|    10h    | R R 0 1 R 0 0 0 |
|    11h    | R R 0 1 R 0 0 1 |
|    14h    | R R 0 1 R 1 0 0 |
|    15h    | R R 0 1 R 1 0 1 |
|    20h    | R R 1 0 R 0 0 0 |
|    21h    | R R 1 0 R 0 0 1 |
|    24h    | R R 1 0 R 1 0 0 |
|    25h    | R R 1 0 R 1 0 1 |
|    26h    | R R 1 0 R 1 1 0 |
|    27h    | R R 1 0 R 1 1 1 |
|    30h    | R R 1 1 R 0 0 0 |
|    31h    | R R 1 1 R 0 0 1 |
|    34h    | R R 1 1 R 1 0 0 |
|    35h    | R R 1 1 R 1 0 1 |
|-----------------------------|
|NOTE   Reserved bits shall   |
|       be set to zero.       |
+=============================+


                Table 275 - CD-ROM error recovery descriptions
+=============================================================================+
|Error recovery description                                                   |
|-----------------------------------------------------------------------------|
| 00h The maximum error recovery procedures available are used.  If an error  |
|     occurs which is uncorrectable with the error correction codes (ECC) on  |
|     the media, data transfer is terminated with CHECK CONDITION status. The |
|     block with the error is not transferred. The sense key is set to MEDIUM |
|     ERROR. The information bytes give the address of the block where the    |
|     unrecovered error was detected. Recovered errors are not reported.      |
|                                                                             |
| 01h Only retries of the read operation and CIRC are used (layered error     |
|     correction is not used). Only CIRC unrecovered data errors are reported.|
|     If an CIRC unrecovered data error occurs, data transfer is terminated   |
|     with CHECK CONDITION status.  The block with the error is not           |
|     transferred. The sense key is set to MEDIUM ERROR. The information bytes|
|     give the address of the block where the unrecovered error was detected. |
|     Recovered errors are not reported.                                      |
|                                                                             |
| 04h The maximum error recovery procedures available are used. Recovered data|
|     errors are reported.  If a recovered data error occurs, data transfer is|
|     not terminated.   However, when the data transfer has completed CHECK   |
|     CONDITION status is reported.  The sense key is set to RECOVERED ERROR. |
|     The information bytes give the address of the last block where a        |
|     recovered data error was detected.                                      |
|                                                                             |
|     If a data error occurs that is uncorrectable with the ECC information   |
|     available on the media, data transfer is terminated and CHECK CONDITION |
|     status is reported. The block with the error is not transferred. The    |
|     sense key is set to MEDIUM ERROR. The information bytes give the address|
|     of the block where the uncorrectable error was detected.                |
|                                                                             |
| 05h Only retries of the read operation and CIRC are used (layered error     |
|     correction is not used).  Recovered data errors are reported.  If a     |
|     recovered data error occurs, data transfer is not terminated.  However, |
|     when the data transfer has completed CHECK CONDITION status is reported.|
|     The sense key is set to RECOVERED ERROR. The information bytes give the |
|     address of the last block where a CIRC recovered data error was         |
|     detected.                                                               |
|                                                                             |
|     If an unrecovered data error occurs, data transfer is terminated and    |
|     CHECK CONDITION status is reported. The block with the error is not     |
|     transferred. The sense key is set to MEDIUM ERROR. The information bytes|
|     give the address of the block where the unrecovered error was detected. |
|                                                                             |
| 06h The maximum error recovery procedures are used. Recovered data errors   |
|     are reported.  If a recovered data error occurs data transfer is        |
|     terminated and CHECK CONDITION status is reported.  The block with the  |
|     recovered error is not transferred. The sense key is set to RECOVERED   |
|     ERROR.  The information bytes give the address of the block where the   |
|     recovered data error was detected.                                      |
|                                                                             |
|     If a data error occurs that is uncorrectable with the ECC information   |
|     on the medium, data transfer is terminated with CHECK CONDITION status. |
|     The block with the error is not transferred.  The sense key is set to   |
|     MEDIUM ERROR. The information bytes give the address of the block where |
|     the uncorrectable error was detected.                                   |
+=============================================================================+


Table 275  (continued)
+==============================================================================+
|Error recovery description                                                    |
|------------------------------------------------------------------------------|
| 07h Only retries of the read operation are used (layer error correction is   |
|     not used).  CIRC recovered data errors are reported.  If a CIRC          |
|     recovered data error occurs, data transfer is terminated with CHECK      |
|     CONDITION status.  The block with the recovered error is not             |
|     transferred.  The sense key is set to RECOVERED ERROR. The information   |
|     bytes give the address of the block where the recovered data error was   |
|     detected.                                                                |
|                                                                              |
|     If an CIRC unrecovered data error occurs, data transfer is terminated    |
|     with CHECK CONDITION status.  The block with the error is not            |
|     transferred.  The sense key is set to MEDIUM ERROR. The information      |
|     bytes give the address of the block where the unrecovered error was      |
|     detected.                                                                |
|                                                                              |
| 10h If data transfer can be maintained, the maximum error recovery           |
|     procedures available are used. (RC = 1.) If an error occurs which is     |
|     uncorrectable with the error correction codes (ECC) on the media, or is  |
|     uncorrectable in time to maintain data transfer, the data transfer is    |
|     not terminated.  However, when the data transfer has completed, CHECK    |
|     CONDITION status is reported.  The sense key is set to MEDIUM ERROR.     |
|     The information bytes give the address of the block where the first      |
|     unrecovered error was detected. Recovered errors are not reported.       |
|                                                                              |
| 11h If data transfer can be maintained, retries of the read operation and    |
|     CIRC are used (layered error correction is not used). (RC = 1.)  Only    |
|     CIRC unrecovered data errors are reported. If a CIRC unrecovered data    |
|     error occurs, data transfer is not terminated. However, when the data    |
|     transfer has completed, CHECK CONDITION status is reported.  The sense   |
|     key is set to MEDIUM ERROR. The information bytes give the address of    |
|     the block where the first unrecovered error was detected.  Recovered     |
|     errors are not reported.                                                 |
|                                                                              |
| 14h If data transfer can be maintained, the maximum error recovery           |
|     procedures available are used. (RC = 1.)  Recovered data errors are      |
|     reported.  If a recovered data error occurs, data transfer is not        |
|     terminated.   However, when the data transfer has completed, CHECK       |
|     CONDITION status is reported.  The sense key is set to RECOVERED ERROR.  |
|     The information bytes give the address of the block where a recovered    |
|     data error was detected.                                                 |
|                                                                              |
|     If an data error occurs that is uncorrectable with the ECC information   |
|     available on the media, or is uncorrectable in time to maintain data     |
|     transfer, the data transfer is not terminated.  However, when the data   |
|     transfer has completed CHECK CONDITION, status is reported. The sense key|
|     is set to MEDIUM ERROR. The information bytes give the address of the    |
|     block where the first uncorrectable error was detected.  Reporting       |
|     unrecovered errors takes precedence over reporting recovered errors.     |
+==============================================================================+



Table 275  (continued)
+=============================================================================+
|Error recovery description                                                   |
|-----------------------------------------------------------------------------|
| 15h If data transfer can be maintained, retries of the read operation and   |
|     CIRC are used (layered error correction is not used). (RC = 1.)         |
|     Recovered data errors are reported.  If a recovered data error occurs,  |
|     data transfer is not terminated.  However, when the data transfer has   |
|     completed CHECK CONDITION status is reported.  The sense key is set to  |
|     RECOVERED ERROR. The information bytes give the address of the block    |
|     where a CIRC recovered data error was detected.                         |
|                                                                             |
|     If an unrecovered data error occurs, data transfer is not terminated.   |
|     However, when the data transfer has completed CHECK CONDITION status is |
|     reported.  The sense key is set to MEDIUM ERROR. The information bytes  |
|     give the address of the block where the first unrecovered error was     |
|     detected.  Reporting unrecovered errors takes precedence over reporting |
|     recovered errors.                                                       |
|                                                                             |
| 20h The maximum error recovery procedures available are used.  If an error  |
|     occurs which is uncorrectable with the error correction codes (ECC) on  |
|     the media, data transfer is terminated with CHECK CONDITION status. The |
|     block with the error is transferred. The sense key is set to MEDIUM     |
|     ERROR. The information bytes give the address of the block where the    |
|     unrecovered error was detected. Recovered errors are not reported.      |
|                                                                             |
| 21h Only retries of the read operation and CIRC are used (layered error     |
|     correction is not used). Only CIRC unrecovered data errors are reported.|
|     If a CIRC unrecovered data error occurs data transfer is terminated     |
|     with CHECK CONDITION status. The block with the error is transferred.   |
|     The sense key is set to MEDIUM ERROR. The information bytes give the    |
|     address of the block where the unrecovered error was detected.          |
|     Recovered errors are not reported.                                      |
|                                                                             |
| 24h The maximum error recovery procedures available are used. Recovered data|
|     errors are reported.  If a recovered data error occurs data transfer is |
|     not terminated.   However, when the data transfer has completed, CHECK  |
|     CONDITION status is reported.  The sense key is set to RECOVERED ERROR. |
|     The information bytes give the address of the last block where a        |
|     recovered data error was detected.                                      |
|                                                                             |
|     If a data error occurs that is uncorrectable with the ECC information   |
|     available on the media data transfer is terminated and CHECK CONDITION  |
|     status is reported. The block with the error is transferred. The sense  |
|     key is set to MEDIUM ERROR. The information bytes give the address of   |
|     the block where the uncorrectable error was detected.                   |
+=============================================================================+



Table 275  (concluded)
+==============================================================================+
|Error recovery description                                                    |
|------------------------------------------------------------------------------|
| 25h Only retries of the read operation and CIRC are used (layered error      |
|     correction is not used).  Recovered data errors are reported.  If a      |
|     recovered data error occurs, data transfer is not terminated.  However,  |
|     when the data transfer has completed, CHECK CONDITION status is reported.|
|     The sense key is set to RECOVERED ERROR. The information bytes give the  |
|     address of the last block where an CIRC recovered data error was         |
|     detected.                                                                |
|                                                                              |
|     If an unrecovered data error occurs, data transfer is terminated and     |
|     CHECK CONDITION status is reported. The block with the error is          |
|     transferred.  The sense key is set to MEDIUM ERROR.  The information     |
|     bytes give the address of the block where the unrecovered error was      |
|     detected.                                                                |
|                                                                              |
| 26h The maximum error recovery procedures are used.  Recovered data errors   |
|     are reported.  If a recovered data error occurs, data transfer is        |
|     terminated and CHECK CONDITION status is reported.  The block with the   |
|     recovered error is transferred.  The sense key is set to RECOVERED       |
|     ERROR.  The information bytes give the address of the block where the    |
|     recovered data error was detected.                                       |
|                                                                              |
|     If a data error occurs that is uncorrectable with the ECC information    |
|     on the media, data transfer is terminated with CHECK CONDITION status.   |
|     The block with the error is transferred. The sense key is set to MEDIUM  |
|     ERROR. The information bytes give the address of the block where the     |
|     uncorrectable error was detected.                                        |
|                                                                              |
| 27h Only retries of the read operation are used (layer error correction is   |
|     not used).  CIRC recovered data errors are reported.  If a CIRC          |
|     recovered data error occurs, data transfer is terminated with CHECK      |
|     CONDITION status.  The block with the recovered error is transferred.    |
|     The sense key is set to RECOVERED ERROR. The information bytes give the  |
|     address of the block where the recovered data error was detected.        |
|                                                                              |
|     If a CIRC unrecovered data error occurs, data transfer is terminated     |
|     with CHECK CONDITION status. The block with the error is transferred.    |
|     The sense key is set to MEDIUM ERROR. The information bytes give the     |
|     address of the block where the unrecovered error was detected.           |
|                                                                              |
| 30h  Same as code 10H.                                                       |
|                                                                              |
| 31h  Same as code 11H.                                                       |
|                                                                              |
| 34h  Same as code 14H.                                                       |
|                                                                              |
| 35h  Same as code 15H.                                                       |
+==============================================================================+


The read retry count field specifies the number of times that the
controller shall attempt its read recovery algorithm.  

A CIRC recovered data error is defined as a block for which the CIRC
based error correction algorithm was unsuccessful for a read attempt,
but on a subsequent read operation no error was reported. The number of
subsequent read operations is limited to the read retry count. Layered
error correction was not used.
      
A CIRC unrecovered data error is defined as a block for which the CIRC
based error correction algorithm was unsuccessful on all read attempts
up to the read retry count. Layered error correction was not used. 

An L-EC recovered data error is defined as a block for which the CIRC
based error correction algorithm was unsuccessful, but the layered
error correction was able to correct the block within the read retry
count.

An L-EC uncorrectable data error is defined as a block which could not
be corrected by layered error correction within the read retry count.

14.3.3.4 Verify error recovery parameters

The verify error recovery parameters page (see table 276) specifies the
error recovery parameter the target shall use during verify operations.


              Table 276 - Verify error recovery parameters page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|                  Page code (07h)                    |
|-----+-----------------------------------------------------------------------|
| 1   |                      Parameter length (06h)                           |
|-----+-----------------------------------------------------------------------|
| 2   |                    Error recovery parameter                           |
|-----+-----------------------------------------------------------------------|
| 3   |                       Verify retry count                              |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

The error recovery parameters for verify operations are as defined by
the read error recovery parameters (see 14.3.3.3).


14.4 Definitions specific to CD-ROM devices

14.4.1 absolute F field:  The sub-division of the S Field part of the
absolute physical address from the beginning of the media.  One
physical sector.  Written on CD-ROM media in binary coded decimal
notation.  The value is from 00bcd to 74bcd. (See 14.4.12 and 14.4.18.) 


14.4.2 absolute M field:  The most significant part of the absolute
physical address from the beginning of the media. Written on CD-ROM
media in binary coded decimal notation.  The value is from 00bcd to
74bcd.  (See 14.4.18.)

14.4.3 absolute S field:  The intermediate significant part of the
absolute physical address from the beginning of the media.  Written on
CD-ROM media in binary coded decimal notation.  The value is from 00bcd
to 59bcd.  (See 14.4.18.)

14.4.4 bcd; binary coded decimal:  The number system used on the
physical CD-ROM and CD-DA media.  Numbers that use this notation have
the 'bcd' suffix attached. A byte has two four-bit values each of which
can have a value from 0 to 9.  The maximum value is 99bcd (99 decimal). 
Hence the maximum number of tracks is 99bcd.

       Example: 00 01 02 03 ... 08 09 10 11 ... 19 20 21 ... 98 99. 

14.4.5 block:  The term block refers to the data in one logical block -
the number of bytes defined by the logical block length in the mode
block descriptor.

14.4.6 blocks per sector:  The number of logical blocks read from each
CD-ROM physical sector. The value depends on the logical block Length
as defined in the mode block descriptor.  The value for blocks per
sector is:
                      1 if the logical block length is 2 048, 
                      2 if the logical block length is 1 024,
                      4 if the logical block length is 512, and
                      8 if the logical block length is 256 bytes.
       (Assuming a density code of 1 - 2 048 bytes of data per sector.)

14.4.7 CD-DA; compact disc - digital audio:  The standardized media for
recording digital audio information.  The 'Red Book' defines CD-DA
media.

14.4.8 CD-ROM; compact disc - read only memory:  A standardized medium
for recording digitized audio and digital data.   CD-ROM is used to
describe media with digital data rather than discs that encode audio
only.  The ISO/IEC 10149 standard defines CD-ROM media.

14.4.9 CD-ROM control field:  A four bit field in the Q sub-channel
data indicating the type of information encoded on the current track. 
Indicates audio versus data and the type of audio encoding, etc.  The
control field is also found in the table of contents entries.

14.4.10 CD-ROM data mode:  A byte in the header of CD-ROM data sectors. 
This indicates if data is present and if layered error correction
information is present.

14.4.11 CIRC; cross interleaved reed-solomon code:  The error detection
and correction technique used within small frames of audio or data. 
The CIRC bytes are present in all CD-ROM data modes.  The error
correction procedure which uses the CIRC bytes is referred to as the
CIRC based algorithm.  In most CD-ROM drives, this function is
implemented in hardware.  

14.4.12 frame:  A physical sector on CD-ROM media.  Also the F field
unit of a MSF CD-ROM address.  The term frame is also used in the CD-
ROM model to describe the amount of data received between
synchronization patterns. 98 of these frames make a sector.  This sort
of frame is referred to as 'small frames' where the meaning is not
clear from context.

14.4.13 hold track state:  When a CD-ROM device enters the hold track
state the optical pick-up is maintained at an approximately constant
position on the media.  This allows a paused operation to be resumed
without latency due to seeking.  Rotational latency may be incurred,
however.

14.4.14 index:  An index is a subdivision of a CD-ROM track.  A track
can have from 1 to 99 index numbers.  Index numbers within a track are
sequential starting with 1. 

14.4.15 lead-in area:  The area on a CD-ROM disc prior to track one. 
The main channel in the lead-in area contains audio or data null
information.  This area is coded as track zero but is not addressable
via the SCSI command set.  The Q sub-channel in this area is coded with
the table of contents information.

14.4.16 lead-out area:  The area on a CD-ROM disc beyond the last
information track.  The main channel in the lead-out area contains
audio or data null information.  This area is coded as track AAbcd but
is not addressable via the SCSI command set.  The READ CD-ROM CAPACITY
data is the first logical block address of this area minus one.

14.4.17 L-EC; layered error correction:  The error correction technique
used with CD-ROM data mode one sectors.  In such sectors, 276 bytes of
the auxiliary data field contain L-EC bytes.  The algorithm that uses
these bytes to perform error correction is often implemented in the
drive firmware. 

14.4.18 MSF address:  The physical address written on CD-ROM discs. 
Expressed as a sector count relative to either the beginning of the
medium (absolute) or to the beginning of the current track (relative).
As defined by the CD-DA and CD-ROM standards, each F field unit is one
physical sector; each S field unit is 75 F field units; each M field
unit is 60 S field units.  Valid contents of F fields are binary values
from 0 through 74.  Valid contents of S fields are binary values from 0
through 59.  Valid contents of M fields are binary values from 0
through 74. 

14.4.19 output port:  A means for connecting the audio signal being
played to equipment outside the CD-ROM device.

14.4.20 pause area:  A transition area at the beginning or end of an
audio track encoded with audio silence.  This transition area is
required where the audio track immediately precedes a data track.

14.4.21 post-gap area:  A transition area at the end of a data track
encoded with null information.  This transition area is required where
the data track immediately precedes an audio track.

14.4.22 pre-gap area:  A transition area at the beginning of a data
track encoded with null information.  This transition area is required
where the data track immediately follows an audio track.

14.4.23 relative F field:  The sub-division of the S field part of the
relative physical address from the beginning of the current track.  One
physical sector.  Written on CD-ROM medium in binary coded decimal
notation.  The value is from 00bcd to 74bcd.  (See 14.4.12 and
14.4.18.)  

14.4.24 relative M field:  The most significant part of the relative
physical address from the beginning of the current track.  Written on
CD-ROM media in binary coded decimal notation.  The value is from 00bcd
to 74bcd.  (See 14.4.18.)

14.4.25 relative S field:  The intermediate significant part of the
relative physical address from the beginning of the current track. 
Written on CD-ROM medium in binary coded decimal notation.  The value
is from 00bcd to 59bcd.  (See 14.4.18.)

14.4.26 sector:  Refers to the data contained during one frame time. 
(On CD-DA medium with two channels of audio this is 1/75th of a
second).  In the CD-ROM standard document the term block is used for
this unit.  There may be more than one logical block per sector. 
Similarly, a single logical block may map to multiple sectors.

14.4.27 sub-channel:  CD-ROM and CD-DA media have a main channel and a
sub-channel.  The sub-channel area has eight parts called P, Q, R, S,
T, U, V, and W.  The Q-sub-channel contains information useful to the
controller and drive, such as the control field and MSF addresses.  The
data rate of each sub-channel (P, Q, etc.) is 1/192nd of that of the
main channel.

14.4.28 TOC:  The table of contents has information on the type of disc
and the starting address of the tracks.  This information is encoded in
the Q sub-channel.  

14.4.29 track:  A sub-division of the CD-ROM media. A disc has from one
to ninety-nine tracks.  The data within a track is always of the same
type.  A track can be either CD-ROM or CD-Audio.  A disc can start at
any track number.

14.4.30 track relative logical address:  An offset from the beginning
of the recorded information on a track expressed in units of the
logical block length.  The value is used to address logical blocks
relative to the beginning of a track using the relative MSF address
encoded in the CD-ROM Q sub-channel.

14.4.31 transition area:  Sectors at the beginning or end of tracks
coded with null information.  Where required by the media standards,
these areas have minimum lengths of 1 s or 2 s.  The maximum lengths
are not specified.  Transition areas at the beginning of a track are
encoded with index zero.  Addresses within transition areas may not be
read.
15 Scanner devices


15.1 Model for scanner devices

Scanner devices generate a digital representation of two- or three-
dimensional objects (e.g. a page of text, a photograph, or a piece of
art). This is accomplished by sensing the amount of light reflected
from the object and generating the digital data.  The digital data can
then be sent across the SCSI bus to an initiator for further
processing.

There are two types of scanners in use; in one type, the operations and
functions of the scanner are fixed; in the other type, the operations
and functions are programmable and need to be set up prior to being
used for scanning objects.

The scanner device generates the data and transfers it in accordance
with the commands received from the initiator.  The contents of the
data is vendor-specific; therefore, the initiator and the scanner must
know how to use the contents of the data.

Scanners generate a digital image of an object in a two dimensional
plane.  The x-axis dimension is along the cross-scan direction that is
perpendicular to the direction in which a scan occurs.  The y-axis
dimension is along the scan direction, and is parallel to the direction
in which a scan occurs.  The coordinates are measured from the upper
left hand corner of the two dimensional plane.  The x-axis measurement
increases in a positive manner going from left to right.  The left side
of the two dimensional plane (i.e. where x equals zero) is called the
base element line.  The y-axis measurement increases in a positive
manner going from top to bottom.  The top side of the two dimensional
plane (i.e. where y equals zero) is called the base line.  The scanning
range encompasses the area in which the scanner can operate, from the
scan line and base line to the maximum x and y position.  These
conventions are adopted to aid in understanding the fields within the
command descriptor blocks and parameters used for scanner devices.  As
such this is a conceptual model and may not accurately reflect the
physical device.

The displacements used for positioning windows is independent of the
resolution with which a window is scanned.  The measurement of
displacements is controlled by the scan measurement mode parameters.

In the event of a scanner automatic creation of sub-windows within a
defined window (i.e. the auto bit in the DEFINE WINDOW parameters is
one), one of the following responses is appropriate:
   a)     the initiator may issue a GET WINDOW PARAMETERS command prior to
          any READ commands;
   b)     if the initiator issues a READ command before issuing a GET
          WINDOW PARAMETERS command, the target shall return CHECK
          CONDITION status.  The ILI and valid bits in the sense data shall
          be set to one.  The initiator should then issue a GET WINDOW
          PARAMETERS command.  This feature is useful when the scanner has
          the ability to distinguish between image and text data and to
          define windows accordingly.

It may occur that a scanner device temporarily does not have resources
available to manage a data transfer from the initiator or does not have
data available to transfer to the initiator.  One of the following
responses is appropriate in such a case: 
   a)     A CHECK CONDITION status is returned and the sense key is set to
          NOT READY with the appropriate additional sense code.  This
          response is applicable to a TEST UNIT READY command.
   b)     The target disconnects until the resource or data are available,
          and then reconnects to resume the operation.
   c)     A BUSY status is returned.

If the scanner device determines that an error or exception condition
has occurred while executing the SCSI command from the initiator, a
CHECK CONDITION status is returned.  A REQUEST SENSE command can then
be used to determine additional information regarding the error or
exception condition.


15.2 Commands for scanner devices

The commands for scanner devices shall be as shown in table 277.

                   Table 277 - Commands for scanner devices
+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| COMPARE                             |    39h     |   O  |   8.2.2    |
| COPY                                |    18h     |   O  |   8.2.3    |
| COPY AND VERIFY                     |    3Ah     |   O  |   8.2.4    |
| GET DATA BUFFER STATUS              |    34h     |   O  |  15.2.1    |
| GET WINDOW                          |    25h     |   O  |  15.2.2    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| MODE SELECT(6)                      |    15h     |   O  |   8.2.8    |
| MODE SELECT(10)                     |    55h     |   O  |   8.2.9    |
| MODE SENSE(6)                       |    1Ah     |   O  |   8.2.10   |
| MODE SENSE(10)                      |    5Ah     |   O  |   8.2.11   |
| OBJECT POSITION                     |    31h     |   O  |  15.2.3    |
| READ                                |    28h     |   M  |  15.2.4    |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| RELEASE UNIT                        |    17h     |   M  |  10.2.9    |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| RESERVE UNIT                        |    16h     |   M  |  10.2.10   |
| SCAN                                |    1Bh     |   O  |  15.2.5    |
| SET WINDOW                          |    24h     |   M  |  15.2.7    |
| SEND                                |    2Ah     |   O  |  15.2.6    |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
+======================================================================+


All other operation codes for scanner devices are  reserved for future
standardization.


15.2.1 GET DATA BUFFER STATUS command

The GET DATA BUFFER STATUS command (see table 278) provides a means for
the initiator to get information about the data buffer.  Information is
returned only for window identifiers for which a SCAN command has been
received (see 15.2.5).

                  Table 278 - GET DATA BUFFER STATUS command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (34h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |            Reserved               |  Wait  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Allocation length                        ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


A wait bit of zero indicates that the target shall respond immediately. 
A wait bit of one indicates that the target shall wait for image data
to be available before returning scan status data.  

The data buffer status data format is defined in table 279.

                    Table 279 - Data buffer status format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 1   |                           Data buffer status length                   |
|-----+---                                                                 ---|
| 2   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                           |  Block |
|=====+=======================================================================|
|     |                           Data buffer status descriptor(s)            |
|=====+=======================================================================|
| 0   |                           Window identifier                           |
|-----+-----------------------------------------------------------------------|
| 1   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Available data buffer                       |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 6   |                           Filled data buffer                          |
|-----+---                                                                 ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


The data buffer status length indicates the length, in bytes, of the
following scan status data that is available to be transferred during
the DATA IN phase. The data buffer status length does not include
itself.  The data buffer status data transferred to the initiator
includes zero or more data buffer status descriptors.  Each descriptor
returns information for the window specified by the window identifier.

The block bit specifies the buffering capabilities of the scanner.  A
block bit of one indicates that the data buffer is full and all image
data must be transferred to the initiator before the scan operation
resumes.  A block bit of zero indicates that the data buffer is not
full and scan operations can continue with the available data buffer
space.

The available data buffer field indicates, in bytes, the amount of
buffer available for transfers from the initiator.  This field is valid
only in scanners with the ability to accept data from an initiator for
processing.  

The filled data buffer field indicates the amount of image data in
bytes available for transfer to the initiator.

15.2.2 GET WINDOW command

The GET WINDOW command (see table 280) provides a means for the
initiator to get information about previously defined windows.

                        Table 280 - GET WINDOW command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (25h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |              Reserved             | Single |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Window identifier                           |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                           Transfer length                             |
|-----+---                                                                 ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


A single bit of one specifies that a single window descriptor shall be
returned for the specified window identifier.  A single bit of zero
specifies that window descriptors be returned for all window
identifiers that were defined by a SET WINDOWS command or by the
target, if the automatic bit was set to one. 

The GET WINDOW data shall consist of a header (see table 281) followed
by one or more window descriptors.  Each window descriptor specifies
the location, size, and scanning method used for a window.

                      Table 281 - Get window data header
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|-----+---                        Window data length                       ---|
| 1   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        Window descriptor length                 ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


The window data length specifies the length in bytes of the following
data that is available to be transferred.  The window data length does
not include itself.  If the allocation length is not sufficient to
return all the get window data, the window data length shall not be
adjusted to reflect the truncation data. 

The window descriptor length specifies the length in bytes of a single
window descriptor.  Each descriptor shall be of equal length.  The
first forty-eight bytes are defined in this International Standard and
the remaining bytes in each descriptor are vendor-specific.

The window descriptors are defined in table 282.

                     Table 282 - Window descriptor bytes
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Window identifier                           |
|-----+-----------------------------------------------------------------------|
| 1   |                           Reserved                           |  Auto  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        X-Axis resolution                        ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Y-Axis resolution                        ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|- - -+- - -                      X-Axis upper left                      - - -|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  | (MSB)                                                                 |
|- - -+- - -                      Y-Axis upper left                      - - -|
| 13  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 14  | (MSB)                                                                 |
|- - -+- - -                      Window width                           - - -|
| 17  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 18  | (MSB)                                                                 |
|- - -+- - -                      Window length                          - - -|
| 21  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 22  |                           Brightness                                  |
|-----+-----------------------------------------------------------------------|
| 23  |                           Threshold                                   |
|-----+-----------------------------------------------------------------------|
| 24  |                           Contrast                                    |
|-----+-----------------------------------------------------------------------|
| 25  |                           Image composition                           |
|-----+-----------------------------------------------------------------------|
| 26  |                           Bits per pixel                              |
|-----+-----------------------------------------------------------------------|
| 27  | (MSB)                                                                 |
|-----+---                        Halftone pattern                         ---|
| 28  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 29  |  RIF   |                  Reserved         |      Padding type        |
|-----+-----------------------------------------------------------------------|
| 30  | (MSB)                                                                 |
|-----+---                        Bit ordering                             ---|
| 31  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 32  |                           Compression type                            |
|-----+-----------------------------------------------------------------------|
| 33  |                           Compression argument                        |
|-----+-----------------------------------------------------------------------|
| 34  |                                                                       |
|- - -+---                        Reserved                                 ---|
| 39  |                                                                       |
|-----+-----------------------------------------------------------------------|
| 40  |                                                                       |
|- - -+---                        Vendor-specific parameter byte(s)        ---|
| n   |                                                                       |
+=============================================================================+


The window identifier specifies the window defined by the window
descriptor. A window is referenced by the window identifier during data
transfers and parameter updates.

When used with the SET WINDOW command, an automatic (auto) bit of one
indicates that the target is allowed to create sub-windows within the
window specified.  An auto bit of zero indicates that the target is not
allowed to create sub-windows.

When used with the GET WINDOW command, an auto bit of zero indicates
that the window was defined directly by the SET WINDOW command.  A
value of one indicates that the window was defined by the target.  This
is a sub-window within a window defined by a SET WINDOW command.

The window identifiers assigned by the target shall be unique and shall
not be currently in use.  The parameters for the sub-windows may be
retrieved using the GET WINDOW command.

The x-axis resolution field specifies the resolution in the scan line
direction.  The unit of measure is picture elements (pixels) per inch. 
A value of zero specifies the default resolution.  

The y-axis resolution field specifies the resolution in the base line
direction.  The unit of measure is scan lines per inch.  A value of
zero specifies the default resolution.  

The x-axis upper left field specifies the x-axis coordinate of the
upper left corner of the window.  This coordinate is measured from the
scan line using the target's current measurement unit divisor (see
15.3.3.1).

The y-axis upper left field specifies the y-axis coordinate of the
upper left corner of the window.  This coordinate is measured from the
base line using target's current measurement unit divisor (see
15.3.3.1).

The window width field specifies the width of window in the scan line
direction.  The window width is measured using the target's current
measurement unit divisor (see 15.3.3.1).

The window length field specifies the length of the window in the base
line direction.  The window length is measured using the target's
current measurement unit divisor (see 15.3.3.1).

The brightness field specifies the level of brightness used to scan the
object.  A value of zero specifies the default brightness or automatic
brightness control, if it is supported.  Any other value indicates a
relative brightness setting, with 255 being the highest setting, one
being the lowest setting, and 128 being the nominal setting.

The threshold field specifies the threshold at which scan data is
converted to binary data.  A value of zero specifies the default
threshold or automatic threshold control if it is supported.  Any other
value indicates relative threshold setting, with 255 being the highest
setting, one being the lowest setting, and 128 being the nominal
setting.

The contrast field specifies the level of contrast used to scan the
object.  A value of zero specifies the default contrast or automatic
contrast control, if it is supported.  Any other value indicates a
relative contrast setting, with 255 being the highest setting, one
being the lowest setting, and 128 being the nominal setting.

The halftone field specifies the level of halftone at which the scan
data is converted to binary data.  The values in this field are vendor-
specific.  The halftone field is used in conjunction with the image
composition field.

The image composition field specifies the type of scan operation
requested.  The image composition is defined as shown in table 283.

                     Table 283 - Image composition codes
+=============-==========================================+
|    Code     |  Description                             |
|-------------+------------------------------------------|
|     00h     |  Bi-level black & white                  |
|     01h     |  Dithered/halftone black & white         |
|     02h     |  Multi-level black & white (gray scale)  |
|     03h     |  Bi-level RGB colour                     |
|     04h     |  Dithered/halftone RGB colour            |
|     05h     |  Multi-level RGB colour                  |
|  06h - FFh  |  Reserved                                |
+========================================================+


The bits per pixel field specifies the number of bits used to represent
the intensity of a single colour.

A reverse image format (RIF) bit of zero indicates that white pixels
are indicated by zeros and black pixels are indicated by ones.  A RIF
bit of one indicates that white pixels are to be indicated by ones and
black pixels are to be indicated by zeros.  The RIF bit is applicable
only for images represented by one bit per pixel.  

The padding type field specifies how the target shall pad the image
data transmitted to the initiator if it is not an integral number of
bytes.  The padding type is defined in table 284.

                          Table 284 - Padding types
+=============-=================================+
|    Code     |  Description                    |
|-------------+---------------------------------|
|     00h     |  No padding                     |
|     01h     |  Pad with 0's to byte boundary  |
|     02h     |  Pad with 1's to byte boundary  |
|     03h     |  Truncate to byte boundary      |
|  04h - FFh  |  Reserved                       |
+===============================================+


The bit ordering field specifies the order in which data is transferred
to the host from the window.  The bit ordering specifies the direction
of pixels in a scan line, the direction of scan lines within a window
and the image data packing within a byte.  The values in this field are
vendor-specific.  

The compression type and compression argument fields specify the
compression technique to be applied to the image data (see table 285).

                 Table 285 - Compression types and arguments
+=============-===============================================-===============+
| Compression |  Description                                  |  Compression  |
|   code      |                                               |   argument    |
|-------------+-----------------------------------------------+---------------|
|     00h     |  No compression                               |   Reserved    |
|     01h     |  CCITT group III, 1 dimensional               |   Reserved    |
|     02h     |  CCITT group III, 2 dimensional               |   K factor    |
|     03h     |  CCITT group IV, 2 dimensional                |   Reserved    |
|  04h - 0Fh  |  Reserved                                     |   Reserved    |
|     10h     |  Optical character recognition (OCR)          |Vendor-specific|
|  11h - 7Fh  |  Reserved                                     |   Reserved    |
|  80h - FFh  |  Vendor-specific                              |Vendor-specific|
+=============================================================================+


15.2.3 OBJECT POSITION command

The OBJECT POSITION command (see table 286) provides positioning
functions.  Absolute as well as relative positioning is provided.   A
target shall return CHECK CONDITION status and set the sense key to
ILLEGAL REQUEST if a positioning function is requested that is not
supported.

                     Table 286 - OBJECT POSITION command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (31h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |    Reserved     |      Position function   |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Count                                       |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The position function field specifies the requested function (see table
287).

                        Table 287 - Position function
+=============-========================+
|  Position   |  Description           |
|  function   |                        |
|-------------+------------------------|
|    000b     |  Unload object         |
|    001b     |  Load object           |
|    010b     |  Absolute positioning  |
|    011b     |  Relative positioning  |
|    100b     |  Rotate object         |
|    101b     |  Reserved              |
|    110b     |  Reserved              |
|    111b     |  Reserved              |
+======================================+


   a)     Unload Object.  This position function specifies that the object
          shall be positioned for removal.  If upon receipt of this command
          there is no object loaded, the target shall return a GOOD status. 
          This condition shall not be considered as an error.  If the
          target is unable to unload the object (i.e. paper jam or mis-feed
          condition), the target shall return CHECK CONDITION status and
          set the sense key sense to MEDIUM ERROR.

   b)     Load object.  This position function specifies that the object is
          to be loaded and positioned to the base line.  If upon receipt of
          this command there is a object already loaded, the target shall
          returns GOOD status.  This condition shall not be considered as
          an error.  If an object is not loaded and the target is unable to
          load an object, the target shall return CHECK CONDITION status
          and set the EOM bit to one and the sense key to MEDIUM ERROR.

   c)     Absolute positioning.  This position function specifies that the
          object is to be positioned at a y-axis displacement from the base
          line.  The y-axis displacement is determined using the count
          field and the target's current measurement unit divisor (see
          15.3.3.1).  A count field of zero positions the object at the
          base line.  

       Any other value in the count field shall cause the target to
       position the object that number of units in the scan line
       direction.  If there is no object loaded or if the specified y-axis
       displacement is not achieved, the target shall return CHECK
       CONDITION status and set the EOM bit to one and the sense key to
       MEDIUM ERROR.

   d)     Relative positioning.  This position function specifies that the
          object is to be positioned at a y-axis displacement relative to
          the current position.  The y-axis displacement is determined
          using the count field and the target's current measurement unit
          divisor (see 15.3.3.1).  A count field of zero causes no change
          in position of the object.  

       A positive value in the count field shall cause the target to
       position the object that number of units in the scan line
       direction.  If the scan range is exceeded, the target shall return
       CHECK CONDITION status.  The EOM bit is set to one,  the ILI bit is
       set to one, and the sense key is set to MEDIUM ERROR.  The valid
       bit is set to one and the information bytes are set to the
       difference (residue) between the requested count and the actual
       number of units moved.  

       A negative value (e.g. twos complement notation) in the count field
       shall cause the target to position the object that number of units
       toward the base line.  If there is no object loaded or if the
       specified y-axis displacement is not achieved, the target shall
       return CHECK CONDITION status and set the EOM bit to one and the
       sense key to MEDIUM ERROR.  If the base line is encountered, the
       target shall position the object at the base line and return CHECK
       CONDITION status.  The ILI bit is set to one and the sense key is
       set to MEDIUM ERROR.  The valid bit is set to one and the
       information bytes are set to the difference (residue) between the
       requested count and the actual number of units moved.

   e)     Rotate object.  This position function specifies that the object
          is rotated in an anti-clockwise direction expressed in
          thousandths of a degree.  The count field specifies the number of
          units that the object is to be moved.

       The count field is used with the position function to specify the
       displacement of the object.

15.2.4 READ command

The READ command (see table 288) requests that the target transfer data
to the initiator.

                           Table 288 - READ command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (28h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |             Reserved                       |
|-----+-----------------------------------------------------------------------|
| 2   |                           Data type code                              |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Data type qualifier                      ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                           Transfer length                             |
|-----+---                                                                 ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The transfer data type distinguishes between the different types of
data that may be transferred between the initiator and the target.  The
types of transfers are specified in table 289.

                         Table 289 - Data type codes
+=============-===================+
|    Code     |  Description      |
|-------------+-------------------|
|     00h     |  Image            |
|     01h     |  Vendor-specific  |
|     02h     |  Halftone mask    |
|     03h     |  Gamma function   |
|  04h - 7Fh  |  Reserved         |
|  80h - FFh  |  Vendor-specific  |
+=================================+


The data type qualifier field provides a means to differentiate data
transfers of the same data type code.  The values used in this field
are vendor-specific. 

The transfer length specifies the number of blocks the target shall
transfer to the initiator during the DATA IN phase.  The block size is
the current block size in the mode parameters block descriptor (see
8.3.3).  A transfer length of zero is not considered an error and no
data shall be transferred.  

If the target transfers less than transfer length blocks, a CHECK
CONDITION status shall be returned.   The ILI bit is set to one, the
valid bit is set to one, and the information bytes are set to the
difference (residue) between the requested transfer length and the
actual number of blocks transferred. 

This command shall be terminated with a status of RESERVATION CONFLICT
if any reservation access conflict (see 10.2.10) exists, and no data
shall be transferred.

15.2.5 SCAN command

The SCAN command (see table 290) requests the target begin a scan
operation.

                           Table 290 - SCAN command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (1Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Transfer length                             |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The transfer length specifies the length in bytes of the window
identifier list that shall be sent during the DATA OUT phase.  A
transfer length of zero indicates that no data shall be transferred. 
This condition shall not be considered an error.

The window identifier list consists of zero or more window identifiers,
each of which specifies a window to be scanned. 


15.2.6 SEND command

The SEND command (see table 291) transfers data from the initiator to
the target.

                           Table 291 - SEND command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |             Reserved                       |
|-----+-----------------------------------------------------------------------|
| 2   |                           Data type code                              |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Data type qualifier                      ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                           Transfer length                             |
|-----+---                                                                 ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The data type code and data type qualifier are defined in the READ
command (see 15.2.4). 

The transfer length specifies the number of blocks the target shall
transfer from the initiator during the DATA OUT phase.  The block size
is the current block size in the mode parameters block descriptor (see
8.3.3).  A transfer length of zero is not considered an error and no
data shall be transferred.  

This command shall be terminated with a status of RESERVATION CONFLICT
if any reservation access conflict (see 10.2.10) exists, and no data
shall be transferred.

15.2.7 SET WINDOW command

The SET WINDOW command (see table 292) provides a means for the
initiator to specify one or more windows within the scanning range of
the device.

                        Table 292 - SET WINDOW command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (24H)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                           Transfer length                             |
|-----+---                                                                 ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The transfer length specifies the length, in bytes, of the data that
shall be sent during the DATA OUT phase.  A transfer length of zero
indicates that no window parameters data shall be transferred.  This
condition shall not be considered an error.

The window parameters data shall consist of a header followed by one or
more window descriptors.  Each window descriptor specifies the
location, size, and scanning method used for a window.  

The set window data header is defined in table 293.

                      Table 293 - Set window data header
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 1   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        Window descriptor length                 ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


The window descriptor length specifies the length, in bytes, of a
single window descriptor.  Each descriptor shall be of equal length. 
The first 48 bytes are defined in this International Standard and the
remaining bytes in each descriptor are vendor-specific.

See table 282 for the definition of a window descriptor.

15.3 Parameters for scanner devices


15.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic
parameters used with scanner devices. 

The diagnostic page codes for scanner devices are defined in table 294.

                      Table 294 - Diagnostic page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     00h     |  Supported diagnostic pages                      |  8.3.1.1   |
|  01h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+


15.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters
used with scanner devices. 

The log page codes for scanner devices are defined in table 295.

                          Table 295 - Log page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |  8.3.2.1   |
|     03h     |  Error counter page (read) page                  |  8.3.2.2   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|     06h     |  Non-medium error page                           |  8.3.2.4   |
|     00h     |  Supported log pages                             |  8.3.2.5   |
|  08h - 2Fh  |  Reserved                                        |            |
|     3Fh     |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific pages                           |            |
+=============================================================================+


15.3.3 Mode parameters

This subclause defines the descriptors and pages for mode parameters
used with scanner devices. 

The mode parameter list, including the mode parameter header and mode
block descriptor, is defined in 8.3.3.

The medium-type code field is contained in the mode parameter header
(see 8.3.3).  This field is reserved for scanners devices.

The device specific parameter field is contained in the mode parameter
header (see 8.3.3).  This field is reserved for scanner devices.

The density code field is contained in the mode parameter block
descriptor (see table 8.3.3).  This field is reserved for scanner
devices.

The mode page codes for scanner devices are defined in table 296.

                         Table 296 - Mode page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     0Ah     |  Control mode page                               |  8.3.3.1   |
|     02h     |  Disconnect-reconnect page                       |  8.3.3.2   |
|     03h     |  Measurement units page                          | 15.3.3.1   |
|     09h     |  Peripheral device page                          |  8.3.3.3   |
|     01h     |  Reserved                                        |            |
|  03h - 08h  |  Reserved                                        |            |
|  0Bh - 1Fh  |  Reserved                                        |            |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+


15.3.3.1 Measurement units page

The measurement units page (see table 297) specifies the units of
measurement used for calculating the displacement of window and for
positioning an object.

The measurement units are independent of the horizontal and vertical
scan resolutions.  

                      Table 297 - Measurement units page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (03h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Parameter length (06h)                      |
|-----+-----------------------------------------------------------------------|
| 2   |                           Basic measurement unit                      |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Measurement unit divisor                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved for the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

The basic measurement unit field is defined in table 298.  Targets
shall use inches as the default basic measurement unit.

                     Table 298 - Basic measurement units
+=============-===============+
|    Code     |  Description  |
|-------------+---------------|
|     00h     |  Inch         |
|     01h     |  Millimetre   |
|     02h     |  Point        |
|  03h - FFh  |  Reserved     |
+=============================+


The measurement unit divisor specifies the number of units needed to
equal one basic measurement unit.  Targets shall use 1 200 as the
default measurement unit divisor.  If a value of zero is specified the
target shall return CHECK CONDITION status and set the sense key to
ILLEGAL REQUEST.

   NOTE 194 A target that does not implement this page or only supports
   default values uses twelve hundredths (1/1200) of an inch as the unit of
   measure.

15.4 Definitions specific to scanner devices

15.4.1 base element line:  An x-axis displacement equal to zero.

15.4.2 base line:  An y-axis displacement equal to zero.

15.4.3 beginning-of-medium:  A x-axis and y-axis of zero displacement. 
Alternatively this is being positioned at the intersection of the base
and scan lines.

15.4.4 end-of-medium:  The maximum x-axis and y-axis displacement.

15.4.5 image:  The digital result of a scan.

15.4.6 object:  The original or item being scanned.

15.4.7 pixel:  Picture-element, which is the smallest photo sight in
the array.

15.4.8 platen:  The surface on which the target is positioned.

15.4.9 scan:  An operation that generates a digital image from the
reflected light of an object.

15.4.10 scan line:  A y-axis displacement from the base line.

15.4.11 scanning range:  The total area that a scanner can generate an
image from.  For two dimensional objects this may correspond to the
largest object that can be scanned.

15.4.12 window:   All or part of the scanning range of a scanner.  A
window defines the part of the object scanned.


  Optical memory devices


16.1 Model for optical memory devices

An optical memory device is a device that can potentially support a
variety of optical media, (e.g. read-only, write-once, erasable, or
reversible).  In several respects, an optical memory device is similar
to a direct-access device.  However, optical memory devices typically
offer features that are not available with other devices, including
very large capacity removable media. 

These devices often require the functions that are not found in direct-
access devices such as logical block update, pre-erasure before
writing, or scanning for blank medium and twelve-byte command
descriptor blocks.  
This standard has specific device types for write-once and CD-ROM
devices that also use optical media, but are not capable of supporting
several types of optical media.  A device that uses write-once media
can be an optical memory device.  Devices that use read-only media can
be optical memory devices; however, devices using CD-ROM media have
certain unique characteristics and should not be implemented as optical
memory devices.

A model of optical memory devices is complicated by the nature of one
of its potential advantages, that it can support media which has
different characteristics.  There are three types of optical media in
general use, read-only, write-once and reversible.  Read-only media are
typically used for publishing applications requiring dissemination of
large amounts of data, since the data can be replicated on a disk at
low cost.  Write-once media are used in applications that have large
backup or archiving requirements.  It is also used in applications that
need large amounts of on-line reference information.  Reversible media
is typically used in applications that need large amounts of temporary
storage (e.g. a graphics workstation), and can take advantage of
removable media.  In some applications, reversible media drives are
used in place of direct-access devices.

Reversible media usually need to be reversed (erased, blanked) before
new data can be written.  In such cases an erase operation is required
before data can be written.  Some optical memory devices perform this
erase operation implicit with each write operation that typically
impacts the data throughput. Some devices can perform the erase 
separately.  The ERASE command may be used to erase areas of the medium 
with a corresponding increase in data throughput on subsequent write
operations.  Products using optical media should not be implemented as
direct-access devices, due to the overhead penalty on performance from
the emulation and the lack of support in direct-access devices to take
advantage of the sophisticated features available with optical memory
devices.  

The type of medium supported by the device and the type of medium
currently loaded can be determined by examining the MODE SENSE data. 
One unique feature of optical memory devices is support of media with
mixed types (e.g. media with read-only and write-once areas).  The
INQUIRY command informs the initiator that the target is an optical
memory device; the initiator should then determine the medium type from
the MODE SENSE data.  The initiator needs to be cognizant of medium
type since the device's characteristics can change when the media are
changed.

Write-once media can have valid data written to a logical block once. 
This is an important feature where audit trails and permanent archives
are needed.  Many optical memory devices supporting write-once media
have the ability to update a logical block, preserving the previous
generation of data.  These devices usually provide a means to recover
the previous data through use of commands that allow read access to the
different generations of data that are stored at the same logical block
address.

An important requirement in dealing with optical media is determining
which logical blocks contain written data and which are blank.  A blank
logical block is one that is properly initialized so that data written
to it can be recovered.  The logical blocks usually have a flag
associated with each that indicates whether they have been written or
not. 

Many of the strategies used to manage write once and erasable media
depend on being able to determine the boundary between written and
blank areas of the medium.  The MEDIUM SCAN command is useful in
finding blank areas for subsequent write operations.

16.1.1 Defect management

Defect management can be performed on logical blocks by updating in a
manner similar to that used by direct-access devices with the REASSIGN
BLOCKS command.  The advantage of using the updating (which is not
supported by direct-access devices) is access to the previous data.

The update operation assigns an alternate physical block to the logical
block while simultaneously writing the data to the block.  commands are
provided to allow the recovery of previous generations of updated
blocks.

Defect management on optical-memory devices is usually vendor-specific. 
However there are standards for some types of optical-memory media that
specify defect management techniques.  These standards, where they
exist, may supersede the implementation requirements pertaining to
error and defect reporting in this International Standard.

16.1.2 Error reporting

If any of the following conditions occur during the execution of a
command the target shall return CHECK CONDITION status.  The
appropriate sense key and additional sense code should be set.  The
following list illustrates some error conditions and the applicable
sense keys.  The list does not provide an exhaustive enumeration of all
conditions that may cause the CHECK CONDITION status.

Condition                                                                                Sense Key
Invalid logical block address                                                                          ILLEGAL
                                                                                                       REQUEST

Unsupported option requested                                                                       ILLEGAL
                                                                                                   REQUEST

Target reset or medium change since last command from this initiator                                                       
   UNIT ATTENTION

Self diagnostic failed                                                                                 HARDWARE
                                                                                                       ERROR

Unrecovered read error                                                                             MEDIUM ERROR
                                                                                  HARDWARE ERROR

Recovered read error                                                                            RECOVERED ERROR

Overrun or other error that might be resolved by repeating the command                                                    
ABORTED command

Attempt to write on write protected medium                                                                   DATA
                                                                                                             PROTECT

Attempt to read a blank or previously unwritten block                                                               
BLANK CHECK

Attempt to write a previously written block and blank checking is
enabled          BLANK CHECK

Attempt to write on read-only medium                                                                      DATA
                                                                                                          PROTECT


In the case of an invalid logical block address, the sense data
information field shall be set to the logical block address of the
first invalid address.

In the case of an attempt to read a blank or previously unwritten
block, the sense data information field shall be set to the logical
block address of the first blank block encountered.  The data read up
to that block shall be transferred.

In the case of an attempt to write a previously written block when
blank checking is enabled, the sense information field shall be set to
the logical block address of the first non-blank block encountered.

16.2 Commands for optical memory devices

The commands for optical memory devices shall be as shown in table 299.

               Table 299 - Commands for optical memory devices
+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| COMPARE                             |    39h     |   O  |   8.2.2    |
| COPY                                |    18h     |   O  |   8.2.3    |
| COPY AND VERIFY                     |    3Ah     |   O  |   8.2.4    |
| ERASE(10)                           |    2Ch     |   O  |  16.2.1    |
| ERASE(12)                           |    ACh     |   O  |  16.2.2    |
| FORMAT UNIT                         |    04h     |   O  |   9.2.1    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOCK UNLOCK CACHE                   |    36h     |   O  |   9.2.2    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| MEDIUM SCAN                         |    38h     |   O  |  16.2.3    |
| MODE SELECT(6)                      |    15h     |   O  |   8.2.8    |
| MODE SELECT(10)                     |    55h     |   O  |   8.2.9    |
| MODE SENSE(6)                       |    1Ah     |   O  |   8.2.10   |
| MODE SENSE(10)                      |    5Ah     |   O  |   8.2.11   |
| PRE-FETCH                           |    34h     |   O  |   9.2.3    |
| PREVENT ALLOW MEDIUM REMOVAL        |    1Eh     |   O  |   9.2.4    |
| READ(6)                             |    08h     |   O  |   9.2.5    |
| READ(10)                            |    28h     |   M  |   9.2.6    |
| READ(12)                            |    A8h     |   O  |  16.2.4    |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| READ CAPACITY                       |    25h     |   M  |   9.2.7    |
| READ DEFECT DATA(10)                |    37h     |   O  |   9.2.8    |
| READ DEFECT DATA(12)                |    B7h     |   O  |  16.2.5    |
| READ GENERATION                     |    29h     |   O  |  16.2.6    |
| READ LONG                           |    3Eh     |   O  |   9.2.9    |
| READ UPDATED BLOCK                  |    2Dh     |   O  |  16.2.7    |
| REASSIGN BLOCKS                     |    07h     |   O  |   9.2.10   |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| RELEASE                             |    17h     |   M  |   9.2.11   |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| RESERVE                             |    16h     |   M  |   9.2.12   |
| REZERO UNIT                         |    01h     |   O  |   9.2.13   |
| SEARCH DATA EQUAL(10)               |    31h     |   O  |   9.2.14.1 |
| SEARCH DATA EQUAL(12)               |    B1h     |   O  |  16.2.8    |
| SEARCH DATA HIGH(10)                |    30h     |   O  |   9.2.14.2 |
| SEARCH DATA HIGH(12)                |    B0h     |   O  |  16.2.8    |
| SEARCH DATA LOW(12)                 |    B2h     |   O  |  16.2.8    |
| SEEK(6)                             |    0Bh     |   O  |   9.2.15   |
| SEEK(10)                            |    2Bh     |   O  |   9.2.15   |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| SET LIMITS(10)                      |    33h     |   O  |   9.2.16   |
| SET LIMITS(12)                      |    B3h     |   O  |  16.2.9    |
| START STOP UNIT                     |    1Bh     |   O  |   9.2.17   |
| SYNCHRONIZE CACHE                   |    35h     |   O  |   9.2.18   |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| UPDATE BLOCK                        |    3Dh     |   O  |  16.2.10   |
| VERIFY(10)                          |    2Fh     |   O  |  16.2.11   |
| VERIFY(12)                          |    AFh     |   O  |  16.2.12   |
| WRITE(6)                            |    0Ah     |   O  |   9.2.20   |
| WRITE(10)                           |    2Ah     |   M  |  16.2.13   |
| WRITE(12)                           |    AAh     |   O  |  16.2.14   |
| WRITE AND VERIFY(10)                |    2Eh     |   O  |  16.2.15   |
| WRITE AND VERIFY(12)                |    AEh     |   O  |  16.2.16   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
| WRITE LONG                          |    3Fh     |   O  |   9.2.23   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
+======================================================================+


The following codes are vendor-specific: 20h, 21h, 22h, 23h, and C0h
through FFh.  All remaining codes for optical memory devices are
reserved for future standardization.

16.2.1 ERASE(10) command

The ERASE(10) command (see table 300) requests that the target erase
the specified number of blocks starting at the specified logical block
address on the medium.  As used here, erased means either the medium
shall be erased, or a pattern shall be written on the medium that
appears to the target as no data present.  The blocks erased shall be
considered blank for purposes of blank checking (see 16.1).  The
previous data recorded on the medium, if any, shall not be recoverable.

                        Table 300 - ERASE(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Ch)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |     Reserved    |  ERA   |Reserved| RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                          ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The erase all (ERA) bit set to one indicates that all remaining blocks
on the medium shall be erased.  If the ERA bit is set to one and if the
number of blocks is not zero, the target shall return CHECK CONDITION,
and the sense key shall be set to ILLEGAL REQUEST, with an additional
sense code of INVALID FIELD IN CDB.

See 9.2.2 for a description of the RelAdr bit and logical block address
field.

The transfer length specifies the number of contiguous logical blocks
that shall be erased when the ERA bit is zero.  If the ERA bit is zero
a transfer length of zero indicates that no blocks shall be erased. 
This condition shall not be considered an error and no data shall be
erased.  Any other value indicates the number of logical blocks that
shall be erased. 

This command shall be terminated with a status of RESERVATION CONFLICT
if any reservation access conflict (see 9.2.12) exists and no data
shall be erased.

   NOTE 195 This command allows the user to separate the erase and write
   operations.  This may increase system performance in certain applications.

16.2.2 ERASE(12) command

The ERASE(12) command (see table 301) requests that the target erase
the specified number of blocks starting at the specified logical block
address on the medium.

                        Table 301 - ERASE(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (ACh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |     Reserved    |  ERA   |Reserved| RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Transfer length                          ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


See the ERASE(10) command (16.2.1) for a description of the fields in
this command.

16.2.3 MEDIUM SCAN command

The MEDIUM SCAN command (see table 302) requests that the target to
scan the medium for a contiguous set of written or blank logical
blocks.  

                       Table 302 - MEDIUM SCAN command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                            Operation code (38h)                       |
|-----+-----------------------------------------------------------------------|
| 1   |  Logical unit number     |   WBS  |   ASA  |   RSD  |   PRA  | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   |  (MSB)                                                                |
|-----+----                                                                ---|
| 3   |                                                                       |
|-----+----                      Logical block address                     ---|
| 4   |                                                                       |
|-----+----                                                                ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                            Reserved                                   |
|-----+-----------------------------------------------------------------------|
| 7   |                            Reserved                                   |
|-----+-----------------------------------------------------------------------|
| 8   |                            Parameter list length                      |
|-----+-----------------------------------------------------------------------|
| 9   |                            Control                                    |
+=============================================================================+


A written block search (WBS) bit of zero indicates that the scan is for
blank blocks.  A WBS bit of one indicates that the scan is for written
blocks.

An advanced scan algorithm (ASA) bit of zero indicates that the scan
area is scanned in sequential order (as selected by the RSD bit).  An
ASA bit of one indicates to the target that the written and blank areas
within the scan area form contiguous extents (as opposed to scattered
blocks).  This indication is advisory to the target.

   NOTE 196 The purpose of this bit is to allow the target to use a more
   advanced algorithm (such as a binary search) to locate the requested
   blocks.

A reverse scan direction (RSD) bit of zero indicates the scan shall
begin with the first logical block of the scan area. A RSD bit of one
indicates the scan shall begin with the last logical block of the scan
area.

A partial results acceptable (PRA) bit of zero indicates that the scan
shall not be considered satisfied until a contiguous set of blocks is
found within the scan area that is at least equal in size to the number
of blocks requested, and meets the other criteria specified in the
command descriptor block.  A PRA bit of one indicates that the scan may
be satisfied by a contiguous set of blocks within the scan area that is
less than the number of blocks requested, and meets the other criteria
specified in the command descriptor block.

See 9.2.2 for a description of the RelAdr bit and logical block address
field.

The parameter list length specifies the length in bytes of the
parameter list that shall be transferred during the DATA OUT phase.  A
parameter list length of zero indicates that the number of blocks
requested field has a value of one, and the number of blocks to scan
field has a value of zero.  This condition shall not be considered an
error.  The contents of the parameter list are specified in table 303.

                    Table 303 - MEDIUM SCAN parameter list
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 1   |                                                                       |
|-----+---                        Number of blocks requested               ---|
| 2   |                                                                       |
|-----+---                                                                 ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 5   |                                                                       |
|-----+---                        Number of blocks to scan                 ---|
| 6   |                                                                       |
|-----+---                                                                 ---|
| 7   |                                                                 (LSB) |
+=============================================================================+


A link bit of zero indicates a non-linked command; if the scan is
satisfied, the command shall be terminated with a CONDITION MET status. 
A REQUEST SENSE command can then be issued to determine the starting
logical block address of the area that meets the request.  If the scan
is not satisfied and no error occurs, the command shall be terminated
with GOOD status.

A link bit of one indicates that a command is linked to the MEDIUM SCAN
command; if the search is satisfied, CONDITION MET status is returned
and the next command is executed.  If the RelAdr bit in the next
command is one, the logical block address of the next command is used
as a displacement from the logical block address at which the search
was satisfied.    If a linked scan is not satisfied, the command is
terminated with a CHECK CONDITION status.  A REQUEST SENSE command may
then be issued.

A REQUEST SENSE command following a satisfied MEDIUM SCAN command
shall:
   a)     return a sense key of EQUAL if the scan was satisfied by a
          contiguous set of blocks equal in size to the number of blocks
          requested. If the PRA bis is one and the scan was satisfied by a
          contiguous set of blocks less than the number of blocks
          requested, then a sense key of NO SENSE shall be returned;
   b)     return the valid bit set to one;
   c)     return the logical block address of the first logical block of
          the contiguous set of blocks that satisfied the scan criteria in
          the information bytes;
   d)     return the number of contiguous logical blocks meeting the scan
          criteria in the command specific information bytes.

A REQUEST SENSE command following an unsatisfied MEDIUM SCAN command
shall:
   a)     return a sense key of NO SENSE if no errors occurred during the
          command execution;
   b)     return the valid bit set to zero.

The number of blocks requested field specifies the number of blocks
that meet the specified requirements.  The number of blocks requested
field, if set to zero, indicates that the scan shall not take place. 
This shall not be considered an error condition.

The number of blocks to scan field specifies the length in blocks of
the area to be scanned on the medium.  The number of blocks to scan
field, if set to zero, indicates that the scan shall continue for all
remaining blocks on the medium or until the scan is satisfied.  See
16.1.2 for a description of error reporting.

16.2.4 READ(12) command

The READ(12) command (see table 304) requests that the target transfer
data to the initiator from the medium.  See the READ(10) command
(9.2.6) for a complete description of the fields in this command.

                         Table 304 - READ(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (A8h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |   FUA  |     Reserved    | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Transfer length                          ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


16.2.5 READ DEFECT DATA(12) command

The READ DEFECT DATA(12) command (see table 305) requests that the
target transfer the medium defect data to the initiator. See the READ
DEFECT DATA(10) command (9.2.8) for a description of the fields in this
command.

                   Table 305 - READ DEFECT DATA(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (B7h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    | Plist  | GList  | Defect list format       |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Allocation length                        ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


The READ DEFECT DATA(12) list header (see table 306) contains an eight
byte header, followed by zero or more defect descriptors.

                 Table 306 - READ DEFECT DATA(12) list header
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 1   |          Reserved        | PList  | GList  | Defect list format       |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 5   |                                                                       |
|-----+---                        Defect list length                          |
| 6   |                                                                       |
|-----+---                                                                 ---|
| 7   |                                                                 (LSB) |
|=============================================================================|
|                              Defect descriptors                             |
|=====-=======================================================================|
| 0   |                                                                       |
|-----+---                                                                 ---|
| n   |                                                                       |
+=============================================================================+


See the description of the READ DEFECT DATA defect list (see 9.2.1.1)
for a description of the fields in this header.

16.2.6 READ GENERATION command

The READ GENERATION command (see table 307) requests that the target
transfer to the initiator the maximum generation address for the
logical block specified.

                     Table 307 - READ GENERATION command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (29h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |             Reserved              | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Allocation length                           |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


See 9.2.2 for a description of the RelAdr bit and logical block address
field.

The READ GENERATION data is defined in table 308.

                  Table 308 - Maximum generation data block
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|-----+---                       Maximum generation address                ---|
| 1   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 2   |                          Reserved                                     |
|-----+-----------------------------------------------------------------------|
| 3   |                          Reserved                                     |
+=============================================================================+


The maximum generation address field defines the maximum generation
address available for the logical block address specified.

16.2.7 READ UPDATED BLOCK(10) command

The READ UPDATED BLOCK(10) command (see table 309) requests that the
target transfer data to the initiator from the specified generation and
logical block.

                  Table 309 - READ UPDATED BLOCK(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Dh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |   FUA  |     Reserved    | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | Latest | (MSB)                                                        |
|-----+------------               Generation address                          |
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


See 9.2.6 for a description of the cache control bits (DPO and FUA). 
See 9.2.2 for a description of the RelAdr bit and logical block address
field.

One block of data is transferred during the DATA IN phase.

The latest bit determines the meaning of the generation address field. 
A latest bit of zero indicates that the generation address is specified
relative to the first generation of the block; generation address zero
specifies the first generation.  Increasing generation addresses
specify later generations.

A latest bit of one indicates that the generation address is specified
relative to the latest generation of the block; generation address zero
specifies the most recent generation.  Increasing generation addresses
specify earlier generations.

If the requested generation does not exist, the command shall be
terminated with CHECK CONDITION status.  The sense key shall be set to
BLANK CHECK, and the additional sense code shall be set to GENERATION
DOES NOT EXIST.

This command shall be terminated with a status of RESERVATION CONFLICT
if any reservation access conflict (see 9.2.12) exists and no data
shall be transferred.

16.2.8 SEARCH DATA(12) commands

The SEARCH DATA(12) commands (see table 310) search one or more logical
blocks for equality or inequality to a data pattern.  See the SEARCH
DATA(10) commands (9.2.14) for a description of the fields in this
command.

                     Table 310 - SEARCH DATA(12) commands
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (B0h, B1h, B2h)              |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    | Invert |    Reserved     | SpnDat | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Transfer length                          ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


16.2.9 SET LIMITS(12) command

The SET LIMITS(12) command (see table 311) defines the range within
which subsequent linked commands may operate.  See the SET LIMITS(10)
command (9.2.16) for a description of the fields in this command.

                      Table 311 - SET LIMITS(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (B3h)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |         Reserved         | RdInh  | WrInh  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Number of blocks                         ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+
   


16.2.10 UPDATE BLOCK command

The UPDATE BLOCK command (see table 312) requests that the target
logically replace data on the medium with the data sent during the DATA
OUT phase.

                       Table 312 - UPDATE BLOCK command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (3Dh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |            Reserved               | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


See 9.2.2 for a description of the RelAdr bit and logical block address
field.

One block of data is transferred during the DATA OUT phase. 

   NOTE 197 See the MODE Parameters (16.3) for a description of the behaviour
   of the UPDATE BLOCK command relative to the enable blank check (EBC) bit.

This standard does not define the result of a WRITE command issued to a
block previously updated by an UPDATE BLOCK command when blank checking
is disabled. 

   NOTE 198 It is recommended that the target inhibit this behaviour.

A logical block may be updated until the alternate block area is
exhausted.  The alternate blocks used for the update operation shall
not be reported in the READ CAPACITY data. If the alternate block area
is exhausted, the command shall be terminated with CHECK CONDITION and
the sense key shall be set to  MEDIUM ERROR, and the additional sense
code set to NO DEFECT SPARE LOCATION AVAILABLE.

If the report updated block read parameter specifies posting of
recovered errors for a read operation of a logical block that has had a
successful update operation performed, occurs the command shall
terminate with a CHECK CONDITION status.  The sense key shall be set to
RECOVERED ERROR and the additional sense code set to UPDATED BLOCK
READ.

16.2.11 VERIFY(10) command

The VERIFY command (see table 313) requests that the target verify the
data on the medium.

                          Table 313 - VERIFY command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Fh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |Reserved| BlkVfy | BytChk | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Verification length                         |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


If the MODE SELECT command is implemented, and the Verify Error
Recovery Parameters page is also implemented, then the current settings
in that page define the verification criteria. If the Verify Error
Recovery Parameters page is not implemented, then the verification
criteria is vendor unique.

A byte check (BytChk) bit of zero causes a medium verification to be
performed with no data comparison. A BytChk bit of one causes a byte-
by-byte compare of the data written on the medium and the data
transferred from the initiator.  The data shall be transferred as it
would be for a WRITE command.  If the compare is unsuccessful, for any
reason, the target shall return CHECK CONDITION status and the sense
key shall be set to MISCOMPARE.

A blank verify (BlkVfy) bit of one causes a verification that the
blocks are blank. 

If the BytChk is one when the BlkVfy bit is one, this shall be
considered an error. The target shall return CHECK CONDITION status and
the sense key shall be set to ILLEGAL REQUEST, and the additional sense
code set to INVALID FIELD IN CDB.

See 9.2.6 for a description of the cache control bits (DPO).  See 9.2.2
for a description of the RelAdr bit and logical block address field.

The verification length specifies the number of contiguous logical
blocks of data or blanks that shall be verified.  A verification length
of zero indicates that no logical blocks shall be verified.  This
condition shall not be considered as an error.  Any other value
indicates the number of logical blocks that shall be verified.

16.2.12 VERIFY(12) command

The VERIFY(12) command (see table 314) requests that the target verify
the data on the medium.  See the VERIFY(10) command (16.2.11) for a
description of the fields in this command.

                        Table 314 - VERIFY(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (AFh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |Reserved| BlkVfy | BytChk | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Verification length                      ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


16.2.13 WRITE(10) command

The WRITE(10) command (see table 315) requests that the target write
the data transferred from the initiator to the medium.

                        Table 315 - WRITE(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |   FUA  |   EBP  |Reserved| RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                             |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


An erase by-pass (EBP) bit of zero indicates that the device will
default to the normal write operation.  An EBP bit of one indicates
that the target is allowed to by-pass the erase operation prior to
writing the data. When accessing write-once media, the EBP bit shall be
considered reserved.

See 9.2.6 for a description of the cache control bits (DPO and FUA). 
See 9.2.2 for a description of the RelAdr bit and logical block address
field.

The transfer length specifies the number of contiguous logical blocks
of data that shall be transferred.  A transfer length of zero indicates
that no data shall be transferred.  This condition shall not be
considered an error and no data shall be written.  Any other value
indicates the number of logical blocks that shall be transferred.

This command shall be terminated with a status of RESERVATION CONFLICT
if any reservation access conflict (see 9.2.12) exists, and no data
shall be written.

16.2.14 WRITE(12) command

The WRITE(12) command (see table 316) requests that the target write
the data transferred from the initiator to the medium.  See the
WRITE(10) command (16.2.13) for a description of the fields in this
command.

                        Table 316 - WRITE(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (AAh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |   FUA  |   EBP  |Reserved| RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Transfer length                          ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


16.2.15 WRITE AND VERIFY(10) command

The WRITE AND VERIFY(10) command (see table 317) requests that the
target write the data transferred from the initiator to the medium and
then verify that the data is correctly written.

                   Table 317 - WRITE AND VERIFY(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Eh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |Reserved|   EBP  | BytChk | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                             |
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


If the MODE SELECT command is implemented, and the Verify Error
Recovery Parameters page is also implemented, then the current settings
in that page define the verification criteria. If the Verify Error
Recovery Parameters page is not implemented, then the verification
criteria is vendor unique.

A byte check (BytChk) bit of zero causes a medium verification to be
performed with no data comparison. A BytChk bit of one causes a byte-
by-byte compare of the data written on the medium and the data
transferred from the initiator.  The data shall be transferred as it
would be for a WRITE command.  If the compare is unsuccessful, for any
reason, the target shall return CHECK CONDITION status and the sense
key shall be set to MISCOMPARE.

An erase by-pass (EBP) bit of zero indicates that the device will
default to the normal write operation.  An EBP bit of one indicates
that the target is allowed to by-pass the erase operation prior to
writing the data.  When accessing write-once media, the EBP bit shall
be considered reserved.

See 9.2.6 for a description of the cache control bits (DPO).  See 9.2.2
for a description of the RelAdr bit and logical block address field.

The transfer length specifies the number of contiguous logical blocks
of data that shall be transferred.  A transfer length of zero indicates
that no logical blocks shall be transferred.  This condition shall not
be considered as an error and no data shall be written.  Any other
value indicates the number of logical blocks that shall be transferred.

16.2.16 WRITE AND VERIFY(12) command

The WRITE AND VERIFY(12) command (see table 318) requests that the
target write the data transferred from the initiator to the medium and
then verify that the data is correctly written.  See the WRITE AND
VERIFY(10) command (16.2.15) for a description of the bits in this
command.

                   Table 318 - WRITE AND VERIFY(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (AEh)                        |
|-----+-----------------------------------------------------------------------|
| 1   |   Logical unit number    |   DPO  |Reserved|   EBP  | BytChk | RelAdr |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                                                                       |
|-----+---                        Logical block address                    ---|
| 4   |                                                                       |
|-----+---                                                                 ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Transfer length                          ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


16.3 Parameters for optical memory devices


16.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic
parameters used with optical memory devices. 

The diagnostic page codes for optical memory devices are defined in
table 319.

                      Table 319 - Diagnostic page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     00h     |  List of supported parameters page               |  8.3.1.1   |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|     40h     |  Translate address page                          |  9.3.1     |
|  41h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+


16.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters
used with optical memory devices. 

The log page codes for optical memory devices are defined in table 320.

                          Table 320 - Log page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |  8.3.2.1   |
|     03h     |  Error counter page (read) page                  |  8.3.2.2   |
|     05h     |  Error counter page (verify) page                |  8.3.2.2   |
|     02h     |  Error counter page (write) page                 |  8.3.2.2   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|     00h     |  List of supported parameters page               |  8.3.2.5   |
|     06h     |  Non-media error page                            |  8.3.2.4   |
|     04h     |  Reserved                                        |            |
|  08h - 2Fh  |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific                                 |            |
|     3Fh     |  Reserved                                        |            |
+=============================================================================+


16.3.3 Mode parameters

This subclause defines the descriptors and pages for mode parameters
used with optical memory devices. 

The mode parameter list, including the mode parameter header and mode
block descriptor, are defined in 8.3.3.

The medium-type code field is contained in the mode parameter header
(see 8.3.3).  Table 321 defines the medium-type code values used for
optical memory devices.

                 Table 321 - Optical memory medium-type codes
+=============-===============================================================+
|    Code     |  Description                                                  |
|-------------+---------------------------------------------------------------|
|     00h     |  Default (only one medium type supported)                     |
|     01h     |  Optical read-only medium                                     |
|     02h     |  Optical write-once medium                                    |
|     03h     |  Optical reversible or erasable medium                        |
|     04h     |  Combination of read-only and write-once medium               |
|     05h     |  Combination of read-only and reversible or erasable medium   |
|     06h     |  Combination of write-once and reversible or erasable medium  |
|  07h - 7Fh  |  RESERVED                                                     |
|  80h - FFh  |  Vendor-specific                                              |
+=============================================================================+


The device specific parameter field is contained in the mode parameter
header (see 8.3.3).  Table 322 defines the device specific parameter
values used for optical memory devices.

             Table 322 - Optical memory device specific parameter
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|=====+========+=================+========+==========================+========|
|     |   WP   |    Reserved     | DPOFUA |           Reserved       |  EBC   |
+=============================================================================+


When used with the MODE SELECT command the WP bit is not defined.

When used with the MODE SENSE command, a write protected (WP) bit of
zero indicates that the medium is write enabled.  A WP bit of one
indicates that the medium is write protected.  For read-only media the
WP bit is reserved.

When used with the MODE SELECT command the DPOFUA bit is reserved.

When used with the MODE SENSE command, a DPOFUA bit of one indicates
that the target supports the DPO and FUA bits (see 9.2.6).

For the MODE SELECT command, an enable blank check (EBC) bit of zero
advises the target to disable the blank checking operation of the
medium during write operations or during an UPDATE BLOCK command.  An
EBC bit of one enables blank checking.  If a non-blank block is found
during a write operation, the command shall be terminated with a CHECK
CONDITION status and the sense key shall be set to BLANK CHECK.  If a
blank block is found during an UPDATE BLOCK command, the command shall
be terminated with a CHECK CONDITION status, and the sense key shall be
set to BLANK CHECK.  For read-only media, the EBC bit is reserved.

For the MODE SENSE command, an enable blank check (EBC) bit of zero
indicates that blank checking of the medium during write operations is
disabled.  An EBC bit of one indicates that blank checking during write
and update operations is enabled.  For read-only media, the EBC bit is
reserved.

The density code field is contained in the mode parameter block
descriptor (see 8.3.3).  Table 323 defines the density code values used
for optical memory devices.

                   Table 323 - Optical memory density codes
+========-======================================================================+
|Density |                      Optical media                                   |
| code   |                                                                      |
|--------+----------------------------------------------------------------------|
|  00h   |Default density (currently mounted density)                           |
|        |----------------------------------------------------------------------|
|        | Diameter | Type|  Sector   | Tracks | Sides | Servo| Reference |Notes|
|        | mm (in)  |     |   size    |        |       |      | standard  |     |
|        |----------+-----+-----------+--------+-------+------+-----------+-----|
|  01h   | 86 (3,5) | R/W | 512/1 024 | 12 500 |   1   |      |  660-D    | 1   |
|  02h   | 89 (3,5) | R/W | 512/1 024 | 12 500 |   2   |      |  581-D    | 1   |
|  03h   |130 (5,25)| R/W | 512/1 024 | 18 750 |   2   |  CS  |  607-I    | 1   |
|  04h   |130 (5,25)| W-O | 512/1 024 | 30 000 |   2   |  SS  |  655-D    | 1,2 |
|  05h   |130 (5,25)| W-O | 512/1 024 | 20 000 |   2   |  SS  |  659-D    | 1,3 |
|  06h   |130 (5,25)| W-O | 512/1 024 | 18 750 |   2   |  CS  |  457-D    | 1   |
|  07h   |200 (8,0) |     |           |        |       |      |  407-D    | 1,4 |
|  08h   |300 (12,0)|     |   1 024   |        |   2   |      |  408-D    | 1,4 |
|  09h   |356 (14,0)|     |   1 024   | 56 350 |   2   |      |  456-D    | 1   |
|        |          |     |           |        |       |      |           |     |
|-------------------------------------------------------------------------------|
| Codes 80h - FFh are vendor-specific, all other codes are reserved             |
|-------------------------------------------------------------------------------|
|Key:    Type    Description                 Servo  Description                 |
|        ----    -----------                 -----  ----------------            |
|        R/W     Erasable                     CS    Continuous servo            |
|        W-O     Write once                   SS    Sampled servo               |
|        R/O     Read only                                                      |
|-------------------------------------------------------------------------------|
| NOTES                                                                         |
|  1 The reference standard refers to an ANSI X3B11 project under               |
| development.  The project may have several documents describing different     |
| aspects of the media. Please contact the Secretariat for current information  |
| on status and availability.                                                   |
|  2 RZ modulation.                                                             |
|  3 4/15 modulation.                                                           |
|  4 This project is not presently active.                                      |
+===============================================================================+


The mode page codes for optical memory devices are shown in table 324.

                         Table 324 - Mode page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     08h     |  Caching page                                    |  9.3.3.1   |
|     0Ah     |  Control mode page                               |  8.5.3.1   |
|     02h     |  Disconnect-reconnect page                       |  8.3.3.2   |
|     0Bh     |  Medium types supported page                     |  9.3.3.4   |
|     06h     |  Optical memory page                             | 16.3.3.1   |
|     09h     |  Peripheral device page                          |  8.3.3.3   |
|     01h     |  Read-write error recovery page                  |  9.3.3.6   |
|     07h     |  Verify error recovery page                      |  9.3.3.8   |
|  03h - 05h  |  Reserved                                        |            |
|  0Ch - 1Fh  |  Reserved                                        |            |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+


16.3.3.1 Optical memory page

The optical memory page (see table 325) defines parameters for control
of optical memory devices.

                       Table 325 - Optical memory page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (06h)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Parameter length (02h)                      |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                           |  RUBR  |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile, vendor-specific location.

A report updated block read (RUBR) bit of zero indicates the target
shall not report an error when a command performs a successful read of
a block that has been updated.  A RUBR bit of one indicates the target
shall terminate a command that performs a read of a block that has been
updated with CHECK CONDITION status, the sense key set to RECOVERED
ERROR, the additional sense code set to UPDATED BLOCK READ, and the
data shall be transferred to the initiator.  The default state of the
RUBR bit for write-once devices (as reported in the INQUIRY command)
shall be one.

16.4 Definitions specific to write-once and optical memory
devices

16.4.1 blank:  The logical block contains no information detectable by
the target, or is written with a pattern that appears to the target as
no data present.  The logical block is considered ready for a write
operation.

16.4.2 generation:   Indicates a relative revision level of a logical
block that has been updated via the UPDATE BLOCK command.  A logical
block that has never been updated has only one generation associated
with it.

16.4.3 read-only medium:   This is medium that may not be written by
the initiator. The media contains data prepared in a manner not defined
by this International Standard.

16.4.4 update:   To write new data to a logical block without
destroying the previous data.  After a block has been updated, a normal
read returns the most recent generation of the data.  Earlier
generations are still available after the update.

16.4.5 write-once medium:   This is medium that may be written only
once by the initiator.  Logical blocks on write-once media that have
not been written are considered blank.  Logical blocks on write-once
media that have been written may not be written again.


17 Medium-changer devices


17.1 Medium-changer device model

Medium changer devices mechanize the movement of media to and from
primary devices (such as disk or tape drives) and other locations
within the range of the medium changer. The medium changer command set
is based on a physical model of this functionality.

This command set supports varied physical implementations of the medium
changer function. Most of these variations are hidden from the
initiator by the high level of function provided by the MOVE MEDIUM and
EXCHANGE MEDIUM commands and by the generalized nature of the element
addressing scheme. However, initiators may need to be aware of the
capabilities of the particular medium changer device. These
characteristics and capabilities are conveyed via MODE SENSE pages.

17.1.1 Medium-changer elements

The medium-changer command set uses as its address space the set of
physical locations and mechanisms within the scope of a medium changer
device. The term element is used throughout this clause to refer to one
member of the medium changer address space. Each element is a discrete
physical entity that may hold zero or one physical unit of media - one
disk cartridge, one spool of tape, etc. Element addresses do not extend
across multiple physical units of media. Likewise, element addresses
are independent of any logical partitioning that the primary device may
support within a physical unit of media.   

A medium changer is viewed as a set of addressable elements, each of
which may contain a unit of media or be used to move a unit of media. 
Each medium changer element has a unique 16 bit element address. Each
element is an instance of one of four classes or element types. 

   a)     MEDIUM TRANSPORT ELEMENT 
   b)     STORAGE ELEMENT 
   c)     IMPORT EXPORT ELEMENT 
   d)     DATA TRANSFER ELEMENT 

Units of media (cartridges, cassettes, caddies, etc.) are referred to
only indirectly by this device model.  Units of media can be moved to
or from any of the elements of the medium changer device.  The presence
of media at the various elements in a medium changer can be sensed.  In
order to ensure exclusive access to a unit of media, the element where
the unit of media is located (the element address) must be reserved. 

Elements of the medium transport, import export and (rarely) data
transport types may not provide independent storage for medium.  The
capabilities of a particular medium changer in this respect can be
sensed via the device capabilities page of the mode sense data. The
following hypothetical medium changer implementation illustrates one
case of an element not providing independent storage for medium. 
Consider a medium changer which has a carousel style storage for
medium. The import export function could be provided by a port which
allows operator access to one of the storage elements.  In such a
device, the MOVE ELEMENT command from storage element to import export
element would rotate the carousel to align the addressed storage
element to the import export position. In this case the import export
element does not provide independent storage but rather access to one
of the storage elements.

17.1.1.1 Medium transport elements

Medium transport elements address the functions of the medium changer
device that perform the movement of units of media. Where a medium
transport element can serve (even temporarily) as a storage location
for medium, the location of each unit of media must have a separate
element address.

In larger medium changer devices, the medium movement functions may be
performed by multiple independent robotics subsystems. Each of these
may have a number of medium transport element addresses. The element
addresses within each subsystem shall be contiguous. Any of the element
addresses within a subsystem may be used interchangeably in the medium
transport element address field of MOVE MEDIUM and EXCHANGE MEDIUM
commands. An initiator may determine the capabilities of the medium
movement facilities of a medium changer device via the transport
geometry MODE SENSE page, see 17.3.3.3.

Element address zero is reserved for use in the medium transport
element address field of MOVE MEDIUM and EXCHANGE MEDIUM commands to
direct the medium changer to use a default or medium changer selected
medium transport element.

In some implementations, medium transport elements may be source and/or
destination addresses in MOVE MEDIUM and EXCHANGE MEDIUM commands. 
They may or may not provide independent storage of a unit of media. 
See the device capabilities MODE SENSE page, see 17.3.3.

17.1.1.2 Storage elements

Storage elements are locations of units of media while not in some
other element type.  Medium in storage elements is available for access
by medium transport elements. 

Storage elements may be source and/or destination addresses in MOVE
MEDIUM and EXCHANGE MEDIUM commands.

17.1.1.3 Import export elements

Import export elements are locations of units of media which are being
inserted into or withdrawn from the medium changer device.  Medium in
these elements is accessible by both medium transport elements, by the
operator, or by another independent medium changer device.  

Import export elements may be source and/or destination addresses in
MOVE MEDIUM and EXCHANGE MEDIUM commands. They may or may not provide
independent storage of a unit of media, see the device capabilities
MODE SENSE page, see 17.3.3.

Particular import export elements may be capable of either import
actions, export actions, both or neither (if an element is not
present).

17.1.1.4 Data transfer element 

Data transfer elements are locations of the primary devices which are
capable of reading or writing the medium. Data transfer elements may
also be viewed as medium changer element addresses of units of media
loaded in or available for loading in or removal from primary devices
such as disk or tape drives. Note that the medium changer function
specified in this clause does not control the primary device. That is
the responsibility of the system.

Data transfer elements may be source and/or destination addresses in
MOVE MEDIUM and EXCHANGE MEDIUM commands. They may or may not provide
independent storage of a unit of media, see the device capabilities
MODE SENSE page, see 17.3.3.

17.1.2 SCSI addressing of medium changer devices

Medium changer devices respond to a SCSI ID / LUN address different
from those used by the data transfer element devices.  If the data
transfer elements served by the medium changer device are SCSI devices,
they may be addressed though the same SCSI ID as the changer device but
with a different logical unit number or through a different SCSI ID.
There is no requirement that communication with the data transfer
elements be done with the same SCSI bus as the medium changer device or
by an SCSI interface at all.  This command set does not support
addressing both the changer and the data transfer elements with the
same SCSI ID / LUN because the device at a particular SCSI ID / LUN
address must have a single peripheral device type. 

The READ ELEMENT STATUS response page for data transfer elements
provides the SCSI ID / LUN address of the primary devices serviced by a
medium changer device if known to the medium changer device. 

17.1.3 Data access operations using a medium changer device

The medium changer device moves units of media among the several
elements accessible to it.  It is able to report the full/empty status
of any of these elements.  Data transfer elements represent the
interface between the medium changer device and some primary device
such as a removable media optical disk drive or tape drive. 

In order to access data on a unit of media currently located in a
medium changer storage element, a system will have to issue commands to
both the medium changer device and to the primary device.  The commands
to the medium changer may include MOVE MEDIUM or EXCHANGE MEDIUM plus
READ ELEMENT STATUS commands.  The commands to the primary device may
include TEST UNIT READY, INQUIRY, START STOP and LOAD UNLOAD commands
in addition to READ and WRITE commands. 

17.1.4 Element status maintenance requirements

If the medium changer device chooses to implement the READ ELEMENT
STATUS command, the medium changer device must be capable of reporting
the various data (i.e. full, error, etc.) required by each page type.
The medium changer may maintain this information at all times or
regenerate it in response to the READ ELEMENT STATUS command. The
INITIALIZE ELEMENT STATUS command can be used to force regeneration of
this information. 

17.1.5 Volume tags

The read element status descriptor format for all element types
includes two sets of fields that contain volume tag information. These
optional fields are used to report media identification information
that the medium changer has acquired either by reading an external
label (e.g. bar code labels), by a SEND VOLUME TAG command or by other
means which may be vendor unique. The same volume tag information shall
be available to all initiators whether assigned by that initiator, by
some other initiator or by the media changer itself.

Volume tag information provides a means to confirm the identity of a
unit of media that resides in a medium changer element. This command
set does not define any direct addressing of units of media based on
these fields. However, commands are defined that provide translation
between volume tag information and the element address where that unit
of media currently resides.

The medium changer command set definition does not impose the
requirement that volume tag information be unique over the units of
media within the scope of the changer device. 

The following commands support the optional volume tag functionality:
   a)     SEND VOLUME TAG - either as a translation request or to associate
          a volume tag with the unit of media currently residing at an
          element address.
   b)     REQUEST VOLUME ELEMENT ADDRESS - return the element address
          currently associated with the volume tag information transferred
          with the last send volume tag command.
   c)     READ ELEMENT STATUS - optionally reports volume tag information
          for all element types.
   d)     MOVE MEDIUM and EXCHANGE MEDIUM commands - if volume tags are
          implemented, these commands must retain the association between
          volume tag information and units of media as they are moved from
          element to element.

17.1.5.1 Volume tag format 

Volume tag information consists of a volume identifier field of 32
bytes plus a volume sequence number field of 2 bytes. The volume
identifier shall consist of a left justified sequence of ASCII
characters. Unused positions shall be blank (20h) filled.  In order for
the SEND VOLUME TAG translate with template to work the characters '*'
and'?' (2Ah and 3Fh) must not appear in volume identification data and
there must be no blanks (20h) within the significant part of the volume
identifier. If volume tag information for a particular element is
undefined, the volume identifier field shall be zero.  

The volume sequence number is a 2 byte integer field. If the volume
sequence number is not used this field shall be zero.  The volume tag
contents are independent of the volume identification information
recorded on the media. 

   NOTE 199 For compatibility with the volume identifier defined by volume
   and file structure standards, it is recommended that the characters in the
   significant non-blank portion of the volume identifier field be restricted
   to the set: '0'..'9', 'A'..'Z', and '_' (30h .. 39h, 41h .. 5Ah, 5Fh).
   Specific systems may have differing requirements that may take precedence
   over this recommendation.

Table 326 defines the fields within the 36 byte primary and alternate
volume tag information fields found in READ ELEMENT STATUS descriptors
and in the data format for the SEND VOLUME TAG command.

                  Table 326 - Volume tag information format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                                                                       |
|- - -+---                   Volume identification field                   ---|
| 31  |                                                                       |
|-----+-----------------------------------------------------------------------|
| 32  |                                                                       |
|- - -+---                            Reserved                             ---|
| 33  |                                                                       |
|-----+-----------------------------------------------------------------------|
| 34  | (MSB)                                                                 |
|-----+---                     Volume sequence number                      ---|
| 35  |                                                                 (LSB) |
+=============================================================================+


17.1.5.2 Primary and alternate volume tag information

Element status descriptors as reported by the READ ELEMENT STATUS
command define a primary volume tag and an alternate volume tag.
Alternate volume tag information provides a means for a system to use
different volume identification information for each side of double
sided media. In such a system, the primary volume tag information
refers to the logical medium accessible via a MOVE MEDIUM command
without the invert bit set. The alternate volume tag information refers
to the other side of the media, i.e. the side that would be accessed
via a MOVE MEDIUM command with the invert bit set.


17.2 Commands for medium changer devices

The commands for medium changer devices shall be as shown in table 327.

               Table 327 - Commands for medium changer devices
+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| EXCHANGE MEDIUM                     |    A6h     |   O  |  17.2.1    |
| INITIALIZE ELEMENT STATUS           |    07h     |   O  |  17.2.2    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| MODE SELECT(6)                      |    15h     |   O  |   8.2.8    |
| MODE SELECT(10)                     |    55h     |   O  |   8.2.9    |
| MODE SENSE(6)                       |    1Ah     |   O  |   8.2.10   |
| MODE SENSE(10)                      |    5Ah     |   O  |   8.2.11   |
| MOVE MEDIUM                         |    A5h     |   M  |  17.2.3    |
| POSITION TO ELEMENT                 |    2Bh     |   O  |  17.2.4    |
| PREVENT ALLOW MEDIUM REMOVAL        |    1Eh     |   O  |   9.2.4    |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| READ ELEMENT STATUS                 |    B8h     |   O  |  17.2.5    |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| RELEASE                             |    17h     |   O  |  17.2.6    |
| REQUEST VOLUME ELEMENT ADDRESS      |    B5h     |   O  |  17.2.7    |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| RESERVE                             |    16h     |   O  |  17.2.8    |
| REZERO UNIT                         |    01h     |   O  |   9.2.13   |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| SEND VOLUME TAG                     |    B6h     |   O  |  17.2.9    |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
+======================================================================+


Operation codes 0Ch, and C0h through FFh are vendor-specific.  All
other operation codes are reserved.


17.2.1 EXCHANGE MEDIUM command

The EXCHANGE MEDIUM command (see table 328) provides a means to
exchange the medium in the source element, with the medium located at a
destination element. 

                     Table 328 - EXCHANGE MEDIUM command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (A6h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Transport element address                ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Source address                           ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        First destination address                ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|-----+---                        Second destination address               ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                  |  Inv2  |  Inv1  |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


   NOTE 200 Support of this command requires that the device have the
   capability of handling two units of media at the same time or that it
   emulate this capability. 

The medium in the source element is moved to the first destination
element and the medium that previously occupied the first destination
element is moved to the second destination element. The second
destination element may or may not be the same element as the source
element.  In the case of a simple exchange, the source element and the
second destination element are the same. 

If this command is received and the source element is empty or the
first destination element is empty, or the second destination element
(if different from the source element) is full, or the second
destination element (if the same as the source element) is empty, the
target shall return CHECK CONDITION status and set the sense key to
ILLEGAL REQUEST. 

The transport element address specifies the medium transport element
that is to be used in executing this command. The default transport
element address of zero may be used if this functionality is supported
by the medium changer device. If the transport element address
specified has not been assigned or has been assigned to an element
other than a medium transport element, the target shall return CHECK
CONDITION status and the set the sense key to ILLEGAL REQUEST. 

The source address, the first destination address, and the second
destination address may represent a storage element, an import export
element, a data transfer element, or a medium transport element.  If
the address specified has not been assigned to a specific element of
the medium changer, the target shall return CHECK CONDITION status and
set the sense key to ILLEGAL REQUEST. 

The device capabilities page (see 17.3.3.) provides a matrix which
defines the supported source element type and first destination element
type combinations for EXCHANGE MEDIUM commands when the source element
type is the same as second destination element type.

An Inv1 bit of one specifies that the medium shall be inverted prior to
depositing the medium into the first destination element. 

An Inv2 bit of one specifies that the medium shall be inverted prior to
depositing the medium into the second destination element. 

If the medium changer does not support medium rotation for handling
double sided media, the Inv1 and Inv2 bits should be set to zero. If
either of these bits is non-zero, a target which is not capable of
medium rotation shall return CHECK CONDITION status and set the sense
key to ILLEGAL REQUEST. 

17.2.2 INITIALIZE ELEMENT STATUS command

The INITIALIZE ELEMENT STATUS command (see table 329) will cause the
medium changer to check all elements for medium and any other status
relevant to that element. The intent of this command is to enable the
initiator to get a quick response from a following READ ELEMENT STATUS
command. It may be useful to issue this command after a power failure,
or if medium has been changed by an operator, or if configurations have
been changed.

                Table 329 - INITIALIZE ELEMENT STATUS command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (07h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                Reserved                    |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


17.2.3 MOVE MEDIUM command

The MOVE MEDIUM command (see table 330) requests that the target move a
unit of media from a source element to a destination element. 

                       Table 330 - MOVE MEDIUM command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (A5h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |             Reserved                       |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Transport element address                ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Source address                           ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        Destination address                      ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 9   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                           | Invert |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


The source address specifies the location that the medium is taken
from, and the destination address specifies the location that the
medium is moved to. 

If this command is received and the source element is empty or the
destination element (if different from the source element) is full, the
target shall return CHECK CONDITION status and set the sense key to
ILLEGAL REQUEST. 

The transport element address specifies the medium transport element
that is to be used in executing this command. The default medium
transport element address of zero may be used if this functionality is
supported by the medium changer device.  If the address specified has
not been assigned or has been assigned to an element other than a
medium transport element, the target shall return CHECK CONDITION
status and the set the sense key to ILLEGAL REQUEST. 

The source address and the destination address may represent a storage
element, an import export element, a data transfer element, or a medium
transport element. If the address specified has not been assigned to a
specific element of the medium changer, the target shall return CHECK
CONDITION status and set the sense key to ILLEGAL REQUEST. 

The device capabilities MODE SENSE page provides a matrix with the
supported source element or destination element combinations for the
MOVE MEDIUM command. See 17.3.3.

An invert bit of one specifies that the medium shall be inverted or
rotated prior to depositing the medium into the destination element. If
the medium changer does not support medium rotation for handling double
sided media, the invert bit should be set to zero.  If this bit is non-
zero, a target that is not capable of medium rotation shall return
CHECK CONDITION status and set the sense key to ILLEGAL REQUEST. 

17.2.4 POSITION TO ELEMENT command

The POSITION TO ELEMENT command (see table 331) will position the
transport element specified in front of the destination element
specified. 

                   Table 331 - POSITION TO ELEMENT command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Bh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                Reserved                    |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Transport element address                ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Destination element address              ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 8   |                           Reserved                           | Invert |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


   NOTE 201 In this context, in front of is defined to mean positioned so
   that no further motion of the medium transport element is necessary to
   execute an appropriate MOVE MEDIUM command between the two elements.

An invert bit value of one requests that the transport element be
inverted or rotated before positioning in front of the destination
element. A value of zero requests that the orientation be unchanged
before positioning in front of the destination element.

17.2.5 READ ELEMENT STATUS command

The READ ELEMENT STATUS command (see table 332) requests that the
target report the status of its internal elements to the initiator.

                   Table 332 - READ ELEMENT STATUS command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (B8h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | VolTag |        Element type code          |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Starting element address                 ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Number of elements                       ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 8   |                           Allocation length                           |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
|10   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
|11   |                           Control                                     |
+=============================================================================+


A volume tag (VolTag) bit of one indicates that the target shall report
volume tag information if this feature is supported. A value of zero
indicates that volume tag information shall not be reported. If the
volume tag feature is not supported this field shall be treated as
reserved.

The element type code field specifies the particular element type(s)
selected for reporting by this command.  A value of zero specifies that
status for all element types shall be reported.  The element type codes
are defined in table 333.

                        Table 333 - Element type code
     +=============-===================================================+
     |    Code     |  Description                                      |
     |-------------+---------------------------------------------------|
     |      0h     |  All element types reported, (valid in CDB only)  |
     |      1h     |  Medium transport element                         |
     |      2h     |  Storage element                                  |
     |      3h     |  Import export element                            |
     |      4h     |  Data transfer element                            |
     |   5h - Fh   |  Reserved                                         |
     +=================================================================+


The starting element address specifies the minimum element address to
report. Only elements with an element type code permitted by the
element type code specification, and an element address greater than or
equal to the starting element address shall be reported. Element
descriptor blocks are not generated for undefined element addresses.

The number of elements specifies the maximum number of element
descriptors to be created by the target for this command. The value
specified by this field is not the range of element addresses to be
considered for reporting but rather the number of defined elements to
report. If the allocation length is not sufficient to transfer all the
element descriptors, the target shall transfer all those descriptors
that can be completely transferred and this shall not be considered an
error.

17.2.5.1 Element status data 

The data returned by the READ ELEMENT STATUS command is defined in
table 334 and 17.2.5.3 through 17.2.5.6.  Element status data consists
of an eight-byte header, (see table 334) followed by one or more
element status pages.

                       Table 334 - Element status data
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   | (MSB)                                                                 |
|-----+---                  First element address reported                 ---|
| 1   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                    Number of elements available                 ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                              Reserved                                 |
|-----+-----------------------------------------------------------------------|
| 5   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 6   |                     Byte count of report available                    |
|-----+---                        (all pages, n - 7 )                      ---|
| 7   |                                                                 (LSB) |
|=====+=======================================================================|
| 8   |                                                                       |
|- - -+---                     Element status page(s)                      ---|
| n   |                                                                       |
+=============================================================================+


The first element address reported field indicates the element address
of the element with the smallest element address found to meet the CDB
request.

The number of elements available field indicates the number of elements
meeting the request in the command descriptor block.  The status for
these elements is returned if sufficient allocation length was
specified.

The byte count of report available field indicates the number of bytes
of element status page data available for all elements meeting the
request in the command descriptor block.  This value shall not be
adjusted to match the allocation length available. 

   NOTE 202 - The READ ELEMENT STATUS command can be issued with an
   allocation length of eight bytes in order to determine the allocation
   length required to transfer all the element status data specified by the
   command.

Figure 28 provides an illustration of the element status data
structure.
































          Figure 28 - Illustration of element status data structure


17.2.5.2 Element status page

The element status page is defined in table 335.  Each element status
page includes an eight-byte header followed by one or more element
descriptor blocks.  The header includes the element type code, the
length of each descriptor block and the number of bytes of element
descriptor information that follow the header for this element type. 

                       Table 335 - Element status page 
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Element type code                           |
|-----+-----------------------------------------------------------------------|
| 1   | PVolTag| AVolTag|                      Reserved                       |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                    Element descriptor length                    ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                              Reserved                                 |
|-----+-----------------------------------------------------------------------|
| 5   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 6   |                Byte count of descriptor data available                |
|-----+---                      (this page, n - 7)                         ---|
| 7   |                                                                 (LSB) |
|=====+=======================================================================|
| 8   |                                                                       |
|- - -+---                     Element descriptor(s)                       ---|
| n   |                                                                       |
+=============================================================================+


The element type code field indicates the element type reported by this
page.

A primary volume tag (PVolTag) bit of one indicates that the primary
volume tag information field is present in each of the following
element descriptor blocks. A value of zero indicates that these bytes
are omitted from the element descriptors that follow.

An alternate volume tag (AVolTag) bit of one indicates that the
alternate volume tag information field is present in each of the
following element descriptor blocks. A value of zero indicates that
these bytes are omitted from the element descriptors that follow.

The element descriptor length field indicates the number of bytes in
each element descriptor. 

The byte count of descriptor data available field indicates the number
of bytes of element descriptor data available for elements of this
element type meeting the request in the CDB. This value shall not be
adjusted to match the allocation length available.

Each element descriptor includes the element address and status flags;
it may also contain sense code information as well as other information
depending on the element type (see 17.2.5.3 through 17.2.5.6).

17.2.5.3 Medium transport element descriptor

Table 336 defines the medium transport element descriptor.

               Table 336 - Medium transport element descriptor
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
|  0   | (MSB)                                                                 |
|------+---                      Element address                            ---|
|  1   |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
|  2   |            Reserved                        | Except |Reserved|  Full  |
|------+-----------------------------------------------------------------------|
|  3   |                            Reserved                                   |
|------+-----------------------------------------------------------------------|
|  4   |                      Additional sense code                            |
|------+-----------------------------------------------------------------------|
|  5   |                  Additional sense code qualifier                      |
|------+-----------------------------------------------------------------------|
|  6   |                                                                       |
|- - --+---                         Reserved                                ---|
|  8   |                                                                       |
|------+-----------------------------------------------------------------------|
|  9   | SValid | Invert |                      Reserved                       |
|------+-----------------------------------------------------------------------|
| 10   | (MSB)                                                                 |
|------+---                Source storage element address                   ---|
| 11   |                                                                (LSB)  |
|------+-----------------------------------------------------------------------|
| 12   |                                                                       |
|- - --+---                Primary volume tag information                   ---|
| 47   |                   (Field omitted if PVolTag = 0)                      |
|------+-----------------------------------------------------------------------|
| 48   |                                                                       |
|- - --+---               Alternate volume tag information                  ---|
| 83   |                   (Field omitted if AVolTag = 0)                      |
|------+-----------------------------------------------------------------------|
| 84   |                                                                       |
|- - --+---                          Reserved                               ---|
| 87   |    (Field moved up if volume tag information field(s) are omitted.)   |
|------+-----------------------------------------------------------------------|
| 88   |                                                                       |
|- - --+---                        Vendor-specific                          ---|
| z-1  |    (Field moved up if volume tag information field(s) are omitted.)   |
+==============================================================================+


The element address field gives the address of the medium changer
element whose status is reported by this element descriptor block.

An exception (Except) bit of one indicates the element is in an
abnormal state.  An exception bit of zero indicates the element is in a
normal state.  If this bit is one, information on the abnormal state
may be available in the additional sense code and additional sense code
qualifier bytes.

A full bit value of one indicates that the element contains a unit of
media.  A value of zero indicates that the element does not contain a
unit of media.

The additional sense code field may provide specific information on an
abnormal element state.  The values in this field are as defined for
the additional sense code of the REQUEST SENSE data (see 8.2.14.3).

The additional sense code qualifier field may provide more detailed
information on an abnormal element state.  The values in this field are
as defined for the additional sense code qualifier of the REQUEST SENSE
data (see 8.2.14.4).

A source valid (SValid) bit value of one indicates that the source
storage element address field and the invert bit information are valid.
A value of zero indicates that the values in these fields are not
valid. 

An invert bit value of one indicates that the unit of media now in this
element was inverted by MOVE MEDIUM or EXCHANGE MEDIUM operations since
it was last in the source storage element.  A value of zero indicates
that no inversion occurred during the operation.

The source storage element address field provides the address of the
last storage element this unit of media was moved.  This field is valid
only if the SValid bit is one.

The primary and alternate volume tag information fields provide for
identifying the unit of media residing in this element (see 17.1.5.).
Either or both of these fields may be omitted for all the element
descriptor blocks that comprise an element status page as indicated by
the PVolTag and AVolTag bits in the element status page header.

17.2.5.4 Storage element descriptor

Table 337 defines the storage element descriptor.

                    Table 337 - Storage element descriptor
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
| Byte |        |        |        |        |        |        |        |        |
|======+=======================================================================|
|  0   | (MSB)                                                                 |
|------+---                      Element address                            ---|
|  1   |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
|  2   |            Reserved               | Access | Except |Reserved|  Full  |
|------+-----------------------------------------------------------------------|
|  3   |                            Reserved                                   |
|------+-----------------------------------------------------------------------|
|  4   |                       Additional sense code                           |
|------+-----------------------------------------------------------------------|
|  5   |                   Additional sense code qualifier                     |
|------+-----------------------------------------------------------------------|
|  6   |                                                                       |
|- - --+---                         Reserved                                ---|
|  8   |                                                                       |
|------+-----------------------------------------------------------------------|
|  9   | SValid | Invert |                      Reserved                       |
|------+-----------------------------------------------------------------------|
| 10   | (MSB)                                                                 |
|------+---                    Source element address                       ---|
| 11   |                                                                (LSB)  |
|------+-----------------------------------------------------------------------|
| 12   |                                                                       |
|- - --+---                 Primary volume tag information                  ---|
| 47   |                    (Field omitted if PVolTag = 0)                     |
|------+-----------------------------------------------------------------------|
| 48   |                                                                       |
|- - --+---                Alternate volume tag information                 ---|
| 83   |                    (Field omitted if PVolTag = 0)                     |
|------+-----------------------------------------------------------------------|
| 84   |                                                                       |
|- - --+---                         Reserved                                ---|
| 87   |    (Field moved up if volume tag information field(s) are omitted.)   |
|------+-----------------------------------------------------------------------|
| 88   |                                                                       |
|- - --+---                      Vendor unique                              ---|
| z-1  |    (Field moved up if volume tag information field(s) are omitted.)   |
+==============================================================================+


An access bit value of one indicates that access to the element by a
medium transport element is allowed.  An access bit of zero indicates
that access to the element by the medium transport element is denied.

The source storage element address field provides the address of the
last storage element this unit of media was moved from. This element
address value may or may not be the same as this element. This field is
valid only if the SValid bit is one.

For fields not defined in this subclause, see 17.2.5.3.

17.2.5.5 Import export element descriptor

Table 338 defines the import export element descriptor.

                 Table 338 - Import export element descriptor
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
|  0   | (MSB)                                                                 |
|------+---                        Element address                          ---|
|  1   |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
|  2   |     Reserved    | InEnab | ExEnab | Access | Except | ImpExp |  Full  |
|------+-----------------------------------------------------------------------|
|  3   |                             Reserved                                  |
|------+-----------------------------------------------------------------------|
|  4   |                        Additional sense code                          |
|------+-----------------------------------------------------------------------|
|  5   |                    Additional sense code qualifier                    |
|------+-----------------------------------------------------------------------|
|  6   |                                                                       |
|------+---                          Reserved                               ---|
|  8   |                                                                       |
|------+-----------------------------------------------------------------------|
|  9   | SValid | Invert |                      Reserved                       |
|------+-----------------------------------------------------------------------|
| 10   | (MSB)                                                                 |
|------+---                  Source storage element address                 ---|
| 11   |                                                                (LSB)  |
|------+-----------------------------------------------------------------------|
| 12   |                                                                       |
|- - --+---                  Primary volume tag information                 ---|
| 47   |                     (Field omitted if PVolTag = 0)                    |
|------+-----------------------------------------------------------------------|
| 48   |                                                                       |
|- - --+---                 Alternate volume tag information                ---|
| 83   |                     (Field omitted if PVolTag = 0)                    |
|------+-----------------------------------------------------------------------|
| 84   |                                                                       |
|- - --+---                          Reserved                               ---|
| 87   |    (Field moved up if volume tag information field(s) are omitted.)   |
|------+-----------------------------------------------------------------------|
| 88   |                                                                       |
|- - --+---                         Vendor unique                           ---|
| z-1  |    (Field moved up if volume tag information field(s) are omitted.)   |
+==============================================================================+


An import enable (InEnab) bit of one indicates that the import export
element supports movement of media into the scope of the medium changer
device.  An InEnab bit of zero indicates that this element does not
support import actions.

An export enable (ExEnab) bit of one indicates that the import export
element supports movement of media out of the scope of the medium
changer device. An ExEnab bit of zero indicates that this element does
not support export actions.

An access bit of one indicates that access to the import export element
by a medium transport element is allowed.  An access bit of zero
indicates access to the import export element by medium transport
elements is denied. 

   NOTE 203 An example of when access would be denied is when the operator
   has exclusive access to the import export element.

An import export (ImpExp) bit of one indicates the unit of media in the
import export element was placed there by an operator.  An ImpExp bit
of zero indicates the unit of media in the import export element was
placed there by the medium transport element.

For fields not defined in this clause, see 17.2.5.3.

17.2.5.6 Data transfer element descriptor

Table 339 defines the data transfer element descriptor.

                 Table 339 - Data transfer element descriptor
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
|  0   | (MSB)                                                                 |
|------+---                      Element address                            ---|
|  1   |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
|  2   |            Reserved               | Access | Except |Reserved|  Full  |
|------+-----------------------------------------------------------------------|
|  3   |                            Reserved                                   |
|------+-----------------------------------------------------------------------|
|  4   |                       Additional sense code                           |
|------+-----------------------------------------------------------------------|
|  5   |                   Additional sense code qualifier                     |
|------+-----------------------------------------------------------------------|
|  6   |Not bus|Reserved|ID valid|LU valid|Reserved|    Logical unit number    |
|------+-----------------------------------------------------------------------|
|  7   |                         SCSI bus address                              |
|------+-----------------------------------------------------------------------|
|  8   |                             Reserved                                  |
|------+-----------------------------------------------------------------------|
|  9   | SValid | Invert |                      Reserved                       |
|------+-----------------------------------------------------------------------|
| 10   | (MSB)                                                                 |
|------+---              Source storage element address                     ---|
| 11   |                                                                (LSB)  |
|------+-----------------------------------------------------------------------|
| 12   |                                                                       |
|- - --+---                 Primary volume tag information                  ---|
| 47   |                    (Field omitted if PVolTag = 0)                     |
|------+-----------------------------------------------------------------------|
| 48   |                                                                       |
|- - --+---                Alternate volume tag information                 ---|
| 83   |                    (Field omitted if PVolTag = 0)                     |
|------+-----------------------------------------------------------------------|
| 84   |                                                                       |
|- - --+---                         Reserved                                ---|
| 87   |    (Field moved up if volume tag information field(s) are omitted.)   |
|------+-----------------------------------------------------------------------|
| 88   |                                                                       |
|- - --+---                        Vendor unique                            ---|
| z-1  |    (Field moved up if volume tag information field(s) are omitted.)   |
+==============================================================================+


An access bit value of one indicates access to the data transfer
element by the medium transport element is allowed.  A value of zero
indicates access to the data transfer element by a medium transport
element is denied.

   NOTE 204 Access to the data transfer element by medium transport elements
   might be denied if a data transfer operation was under way. Note that a
   one value in this bit may not be sufficient to ensure a successful
   operation. This bit can only reflect the best information available to the
   medium changer device, which may not accurately reflect the state of the
   primary (data transfer) device.

A not this bus (not bus) bit value of one indicates that the SCSI bus
address and logical unit number values are not valid for the SCSI bus
used to select the medium changer device. A not bus bit value of zero
indicates that the SCSI address and logical unit values, if valid, are
on the same bus as the medium changer device.

An ID Valid bit value of one indicates that the SCSI bus address field
contains valid information. An LU Valid bit value of one indicates that
the logical unit number field contains valid information.

The SCSI bus address field, if valid, provides the SCSI address (binary
representation) of the primary device served by the medium changer at
this element address.

The logical unit number field, if valid, provides the logical unit
number within the SCSI bus device of the primary device served by the
medium changer at this element address.

For fields not defined in this clause, see 17.2.5.3.

17.2.6 REQUEST VOLUME ELEMENT ADDRESS command

The REQUEST VOLUME ELEMENT ADDRESS command (see table 340) is used to
transfer the results of a SEND VOLUME TAG command.  Multiple REQUEST
VOLUME ELEMENT ADDRESS commands may be used to recover the results of a
single SEND VOLUME TAG command with the translate option.

              Table 340 - REQUEST VOLUME ELEMENT ADDRESS command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (B5h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | VolTag |        Element type code          |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Element address                          ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Number of elements                       ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 8   |                           Allocation length                           |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
|10   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
|11   |                           Control                                     |
+=============================================================================+


For each SEND VOLUME TAG command, the target shall be able to report
multiple elements that match a volume tag template in element address
order.  Once information for a given element address has been reported,
only higher element addresses will be reported by subsequent REQUEST
VOLUME ELEMENT ADDRESS commands. 

   NOTE 205 In order to ensure the successful completion of a SEND VOLUME
   TAG, REQUEST VOLUME ELEMENT ADDRESS sequence in a multi-initiator
   environment, it may be necessary to reserve the medium changer device. To
   do this, issue a unit RESERVE command prior to the SEND VOLUME TAG command
   and delay issuing the RELEASE until after the last REQUEST VOLUME ELEMENT
   ADDRESS. 

A volume tag (VolTag) bit of one indicates that the target shall report
volume tag information. A value of zero indicates that volume tag
information shall not be reported. This is provided for compatibility
with the READ ELEMENT STATUS command.

The element type code field specifies the particular element type(s)
selected for reporting by this command.  A value of zero specifies that
status for all element types shall be reported. The codes for this
field are defined in 17.2.5.  This acts as a qualification of the
element(s) determined by SEND VOLUME TAG to match the template
specified. 

The element address field gives a medium changer element address whose
interpretation depends on the send action code received with the last
SEND VOLUME TAG command.  This code is echoed in the volume element
address return format transferred by this command.  When the last send
action code was a translate, (code values 0h .. 7h), the element
address field gives the minimum element address to be reported by this
command.  When the send action code is other than translate, (i.e.
assert, replace, and undefined, code values 8h .. Dh), the element
address field gives the particular element whose volume tag information
was modified.

The number of elements specifies the maximum number of elements and
volume tags to be reported by the target for this command. The value
specified by this field is not the range of element addresses to be
considered for reporting but rather the number of elements to report of
those that match the last send volume tag translate template. If the
allocation length is not sufficient to transfer all the element
descriptors, the target shall transfer all those descriptors that can
be completely transferred and this shall not be considered an error.

The data returned by this command consists of a header as defined by
table 341, plus one or more element type specific pages in the same
format as defined by the READ ELEMENT STATUS command.

               Table 341 - Volume element address header format
+======-========-========-========-========-========-========-========-========+
|   Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte  |        |        |        |        |        |        |        |        |
|======+=======================================================================|
| 0    | (MSB)                                                                 |
|------+---                  First element address reported                 ---|
| 1    |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
| 2    | (MSB)                                                                 |
|------+---                    Number of elements reported                  ---|
| 3    |                                                                 (LSB) |
|------+-----------------------------------------------------------------------|
| 4    |          Reserved        |              Send action code              |
|------+-----------------------------------------------------------------------|
| 5    | (MSB)                                                                 |
|------+---                                                                 ---|
| 6    |                     Byte count of report available                    |
|------+---                        (all pages, x - 7 )                      ---|
| 7    |                                                                 (LSB) |
|======+=======================================================================|
|8 to  |                                                                       |
|  - --+---                     Element status page(s)                      ---|
| x    |                                                                       |
+==============================================================================+


The send action code field gives the function performed by the last
SEND VOLUME TAG command as defined in 17.2.9. This command reports the
results of this send action code operation.

For fields not defined in this subclause, see 17.2.5.1.

17.2.7 RELEASE command

The RELEASE command (see table 342) is used to release previously
reserved units, or, if the element release option is implemented,
previously reserved elements within units.  It is not an error for an
initiator to attempt to release a reservation that is not currently
active.  In this case, the target shall return GOOD status without
altering any other reservation.

                         Table 342 - RELEASE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (17h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | 3rdPty | Third party device ID    | Element|
|-----+-----------------------------------------------------------------------|
| 2   |                           Reservation identification                  |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


17.2.7.1 Logical unit release

If the element bit is zero, this command shall cause the target to
terminate all non-third party unit and element reservations that are
active from the initiator to the specified logical unit.

17.2.7.2 Element release (optional)

If the element bit is one and the element release option is not
implemented, the RELEASE command shall be terminated with CHECK
CONDITION status and the sense key shall be set to ILLEGAL REQUEST. 
This option shall be implemented if the element reservation option (see
17.2.8.1) is implemented.

If the element bit is one and the element release option is
implemented, this command shall cause any reservation from the
requesting initiator with a matching reservation identification to be
terminated.  Other reservations from the requesting initiator shall
remain in effect.

17.2.7.3 Third party release 

The third-party release option of the RELEASE command allows an
initiator to release a unit or elements within a unit that were
previously reserved using third-party reservation (see 17.2.8.3). 
Third-party release shall be  implemented if third-party reserve is
implemented. 

If the third-party (3rdPty) bit is zero, the third-party release option
is not requested.  If the 3rdPty bit is one and the target implements
the third-party release option, the target shall release the specified
unit or elements, but only if the reservation was made using the third-
party reservation option by the initiator that is requesting the
release for the same SCSI device as specified in the third-party device
ID field.

If the 3rdPty bit is one and the target does not implement the third-
party release option, the target shall terminate the command with CHECK
CONDITION status and the sense key shall be set to ILLEGAL REQUEST.

17.2.8 RESERVE command

The RESERVE command (see table 343) is used to reserve units or, if the
element reservation option is implemented, elements within units for
the use of the initiator.  The third-party reservation allows units or
elements to be reserved for another specified SCSI device.  The RESERVE
and RELEASE commands provide the basic mechanism for contention
resolution in multiple-initiator systems.

                         Table 343 - RESERVE command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (16h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      | 3rdPty | Third party device ID    | Element|
|-----+-----------------------------------------------------------------------|
| 2   |                           Reservation identification                  |
|-----+-----------------------------------------------------------------------|
| 3   | (MSB)                                                                 |
|-----+---                        Element list length                      ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


17.2.8.1 Logical unit reservation

If the element bit is zero, this command shall request that the entire
unit be reserved for the exclusive use of the initiator until the
reservation is superseded by another valid RESERVE command from the
initiator that made the reservation or until released by a RELEASE
command from the same initiator that made the reservation, by a BUS
DEVICE RESET message from any initiator, by a hard RESET condition, or
by a power off/on cycle.  A unit reservation shall not be granted if
the unit or any element is reserved by another initiator.  It shall be
permissible for an initiator to reserve a unit that is currently
reserved by that initiator.  If the element bit is zero, the
reservation identification and the element list length shall be
ignored.

If the unit, or any element within the unit, is reserved for another
initiator, the target shall respond by returning RESERVATION CONFLICT
status.

If, after honouring the reservation, any other initiator attempts to
perform any command on the reserved unit other than an INQUIRY, REQUEST
SENSE, ALLOW MEDIUM REMOVAL, RESERVE, or a RELEASE command, the command
shall be rejected with RESERVATION CONFLICT status. 

17.2.8.2 Element reservation (optional)

The reservation identification provides a means for an initiator to
identify each element reservation.  This allows an initiator in a
multiple-tasking environment, to have multiple reservations
outstanding.  The reservation identification is used in the RELEASE
command to specify which reservation is to be released.  It is also
used in superseding RESERVE commands to specify which reservation is to
be superseded.

If the element reservation option is implemented, the element release
option (see 17.2.7.2) shall also be implemented.  These options permit
multiple elements within the unit to be reserved, each with a separate
reservation identification.

If the element bit is one, and the element reservation option is
implemented, the target shall process the reservation request as
follows:
   a)     The element list shall be checked for valid element addresses. 
          If any element address is invalid for this unit, the command
          shall be terminated with CHECK CONDITION status and the sense key
          shall be set to ILLEGAL REQUEST.  The element list shall be
          checked for invalid element overlaps with other element
          descriptors in the element list and if invalid overlaps are
          found, the command shall be terminated with CHECK CONDITION
          status and the sense key shall be set to ILLEGAL REQUEST.
   b)     If the requested reservation does not conflict with any active or
          previously requested reservation, the elements specified shall be
          reserved until superseded by another valid RESERVE command from
          the initiator that made the reservation, or until released by a
          RELEASE command from the same initiator, by a BUS DEVICE RESET
          message from any initiator, or by a hard RESET condition.  If
          either of the last two conditions occur, the next command from
          each initiator shall be terminated with CHECK CONDITION status
          and the sense key shall be set to UNIT ATTENTION.
   c)     If the reservation request conflicts with a reservation already
          active the target shall return RESERVATION CONFLICT status.

If the element bit is one, and the element reservation option is not
implemented, the RESERVE command shall be terminated with CHECK
CONDITION status.  The sense key shall be set to ILLEGAL REQUEST.

The size of the element list shall be defined by the element list
length parameter.  The element list shall consist of zero or more
descriptors as shown in table 344.  Each element list descriptor
defines a series of elements beginning at the specified element address
for the specified number of elements.  If the number of elements is
zero, the element list shall begin at the specified element address and
continue through the last element address on the unit.

             Table 344 - Data format of element list descriptors
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                                                                       |
|- - -+---                         Reserved                                ---|
| 1   |                                                                       |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Number of elements                       ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Element address                          ---|
| 5   |                                                                 (LSB) |
+=============================================================================+


If an initiator issues a command to an element that has been reserved
by a different initiator, the command shall not be performed and the
command shall be terminated with a RESERVATION CONFLICT status.  If a
reservation conflict precludes any part of the command, none of the
command shall be performed.  

17.2.8.3 Third party reservation

The third-party reservation option of the RESERVE command allows an
initiator to reserve a unit or elements within a unit for another SCSI
device.

If the third-party (3rdPty) bit is zero, the third-party reservation
option is not requested.  If the 3rdPty bit is one and the third-party
reservation option is implemented, the RESERVE command shall reserve
the specified unit or elements for the SCSI device specified in the
third-party device ID field.  The target shall preserve the reservation
until it is superseded by another valid RESERVE command from the
initiator that made the reservation or until it is released by the same
initiator, by a BUS DEVICE RESET message from any initiator, or a hard
RESET condition.  The target shall ignore any attempt to release the
reservation made by any other initiator.

If the 3rdPty bit is one and the third-party reservation option is not
implemented, the target shall reject the RESERVE command with CHECK
CONDITION status and the sense key shall be set to ILLEGAL REQUEST. 

17.2.8.4 Superseding reservations

An initiator that holds a current reservation may modify that
reservation by issuing another RESERVE command to the same unit and, if
the element bit is one, using the same reservation identification.  The
superseding RESERVE command shall release the previous reservation in
place when the new reservation request is granted.  The current
reservation shall not be modified if the new reservation request cannot
be granted.  If the superseding reservation cannot be granted because
of conflicts with a previous active reservation (other than the
reservation being superseded), the target shall return RESERVATION
CONFLICT status.

   NOTE 206 Superseding reservations are principally intended to allow the
   SCSI device ID to be changed on a reservation using the third-party
   reservation option.

17.2.9 SEND VOLUME TAG command

The SEND VOLUME TAG command (see table 345) transfers a volume tag
template to be searched for or new volume tag information for one or
more media changer elements. The function of the command is conveyed by
the send action code field. The REQUEST VOLUME ELEMENT ADDRESS command
is used to transfer the results of a translate search operation.

                     Table 345 - SEND VOLUME TAG command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (B6h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |Reserved|        Element type code          |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Element address                          ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 5   |          Reserved        |              Send action code              |
|-----+-----------------------------------------------------------------------|
| 6   |                                                                       |
|-----+---                        Reserved                                 ---|
| 7   |                                                                       |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|-----+---                     Parameter list length                       ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
|10   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
|11   |                           Control                                     |
+=============================================================================+


The element type code field specifies an element type specification as
defined in 17.2.5.  If the send action code indicates a translate
operation, this field indicates the element types to be searched. If
this is a zero, all element types are candidates for a translate
operation. If the send action code does not indicate a translate, this
field shall be treated as reserved.

The send action code field gives the function to be performed by this
command as listed in table 346. 

                   Table 346 - Send volume tag action codes
+=============-===============================================================+
|    Code     |  Description                                                  |
|-------------+---------------------------------------------------------------|
|      0h     |  Translate - search all defined volume tags                   |
|      1h     |  Translate - search only primary volume tags                  |
|      2h     |  Translate - search only alternate volume tags                |
|      3h     |  Reserved                                                     |
|      4h     |  Translate - search all defined tags - ignore sequence numbers|
|      5h     |  Translate - search primary tags - ignore sequence numbers    |
|      6h     |  Translate - search alternate tags - ignore sequence numbers  |
|      7h     |  Reserved                                                     |
|      8h     |  Assert - as the primary volume tag - if tag now undefined    |
|      9h     |  Assert - as the alternate volume tag - if tag now undefined  |
|      Ah     |  Replace - the primary volume tag - current tag ignored       |
|      Bh     |  Replace - the alternate volume tag - current tag ignored     |
|      Ch     |  Undefined - the primary volume tag - current tag ignored     |
|      Dh     |  Undefined - the alternate volume tag - current tag ignored   |
|   Eh - 1Bh  |  Reserved                                                     |
|  1Ch - 1Fh  |  Vendor-specific                                              |
+=============================================================================+


Translate operations request that the target search the volume tag
information available to it for elements whose volume tag information
matches the template given by the command parameters. The resulting
information is reported via the REQUEST VOLUME ELEMENT ADDRESS command.

Assert operations define volume tag information for a single element. A
CHECK CONDITION with ILLEGAL REQUEST is reported if the subject element
already has defined volume tag information; in this case, the original
volume tag information shall remain unaltered. 

Replace operations define volume tag information for a single element.
Any previously defined volume tag information is overwritten.

Undefined operations cause previously defined volume tag information
for the specified element to be cleared. It shall not be considered an
error to undefined volume tag information that was not previously
defined.

A medium changer device that implements volume tag information may
choose to not implement the facilities that modify the volume tag
information.  With such an implementation a request for the assert,
replace or undefined functions would cause the SEND VOLUME TAG command
to be terminated with CHECK CONDITION and a sense key of ILLEGAL
REQUEST.

The element address field gives a medium changer element address whose
interpretation depends on the send action code received with this
command. When the send action code is a translate, (code values
0h .. 7h), the element address field gives the starting element to be
examined for satisfaction of the search criteria. When the send action
code is other than translate, (i.e. assert, replace, and undefined,
code values 8h .. Dh), the element address field gives the particular
element whose volume tag information is to be modified.

The volume tag information used for translate, assert and replace
functions is defined in table 347.  No parameters are necessary for
undefined operations.

                Table 347 - Send volume tag parameters format
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                                                                       |
|- - -+---               Volume identification template field              ---|
| 31  |                                                                       |
|-----+-----------------------------------------------------------------------|
| 32  |                                                                       |
|-----+---                            Reserved                             ---|
| 33  |                                                                       |
|-----+-----------------------------------------------------------------------|
| 34  | (MSB)                                                                 |
|- - -+---                  Minimum volume sequence number                 ---|
| 35  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 36  |                                                                       |
|-----+---                            Reserved                             ---|
| 37  |                                                                       |
|-----+-----------------------------------------------------------------------|
| 38  | (MSB)                                                                 |
|- - -+---                  Maximum volume sequence number                 ---|
| 39  |                                                                 (LSB) |
+=============================================================================+


The volume identification template field specifies a search template
for translate functions and the exact value of the new volume
identification information for other SEND VOLUME TAG command functions.

As a search template, this field may contain the wildcard characters
'*' and '?' (2Ah and 3Fh). '*' will match any string of characters,
when it appears in a template the remainder of the template is not
used. '?' will match any single character. 

For a function other than translate, this field may not contain the '*'
or '?' wildcard characters. 

The minimum volume sequence number field specifies the new sequence
number for the assert and replace functions. For a translate, this
specifies the least value that will meet the search specification. 

The maximum volume sequence number field specifies the greatest value
that will meet the search specification. This field is ignored on
functions other than translate.

17.3 Parameters for medium changer devices


17.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic
parameters used with medium changer devices. 

The diagnostic page codes for medium changer devices are defined in
table 348. 

                      Table 348 - Diagnostic page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     00h     |  Supported diagnostic pages                      |  8.3.1.1   |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|  40h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+


17.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters
used with medium changer devices. 

The log page codes for medium changer devices are defined in table 349.

                          Table 349 - Log page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     00h     |  Supported log pages                             |  8.3.2.5   |
|     06h     |  Non-medium error page                           |  8.3.2.4   |
|     07h     |  Last n error events page                        |  8.3.2.3   |
|  01h - 05h  |  Reserved                                        |            |
|  08h - 2Fh  |  Reserved                                        |            |
|     3Fh     |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific pages                           |            |
+=============================================================================+


17.3.3 Mode parameters

This subclause defines the descriptors and pages for mode parameters
used with medium changer devices. 

The mode parameter list, including the mode parameter header and mode
block descriptor, are defined in 8.3.3.

The medium-type code field is contained in the mode parameter header
(see 8.3.3).  This field is reserved for medium changer devices.

The device specific parameter field is contained in the mode parameter
header (see 8.3.3).  This field is reserved for medium changer devices.

The density code field is contained in the mode parameter block
descriptor (see 8.3.3).  This field is reserved for medium changer
devices.

The mode page codes for medium changer devices are shown in table 350.

                         Table 350 - Mode page codes
+=============-==================================================-============+
|  Page code  |  Description                                     | Subclause  |
|-------------+--------------------------------------------------+------------|
|     1Fh     |  Device capabilities                             | 17.3.3.1   |
|     1Dh     |  Element address assignment                      | 17.3.3.2   |
|     1Eh     |  Transport geometry parameters                   | 17.3.3.3   |
|  01h - 1Ch  |  Reserved                                        |            |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+


17.3.3.1 Device capabilities page

The device capabilities page (see table 351) defines characteristics of
the element types on this medium changer implementation. This
information may be employed by the initiator to determine functions
permitted by the MOVE MEDIUM and EXCHANGE MEDIUM commands.

                     Table 351 - Device capabilities page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (1Fh)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                       Parameter length (12h)                          |
|-----+-----------------------------------------------------------------------|
| 2   |               Reserved            | StorDT | StorI/E| StorST | StorMT |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   |               Reserved            | MT->DT | MT->I/E| MT->ST | MT->MT |
|-----+-----------------------------------+--------+--------+--------+--------|
| 5   |               Reserved            | ST->DT | ST->I/E| ST->ST | ST->MT |
|-----+-----------------------------------+--------+--------+--------+--------|
| 6   |               Reserved            |I/E->DT |I/E->I/E|I/E->ST |I/E->MT |
|-----+-----------------------------------+--------+--------+--------+--------|
| 7   |               Reserved            | DT->DT | DT->I/E| DT->ST | DT->MT |
|-----+-----------------------------------------------------------------------|
| 8   |                                                                       |
|- - -+---                        Reserved                                 ---|
| 11  |                                                                       |
|-----+-----------------------------------------------------------------------|
| 12  |               Reserved            | MT<>DT | MT<>I/E| MT<>ST | MT<>MT |
|-----+-----------------------------------+--------+--------+--------+--------|
| 13  |               Reserved            | ST<>DT | ST<>I/E| ST<>ST | ST<>MT |
|-----+-----------------------------------+--------+--------+--------+--------|
| 14  |               Reserved            |I/E<>DT |I/E<>I/E|I/E<>ST |I/E<>MT |
|-----+-----------------------------------+--------+--------+--------+--------|
| 15  |               Reserved            | DT<>DT | DT<>I/E| DT<>ST | DT<>MT |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile, vendor-specific location.

In the field names on this page, the following element type
abbreviations are used:
    MT       a medium transport element,
    ST       a storage element,
    I/E             an import export element, and
    DT       a data transfer element.
In the descriptions, XX and YY are any of the element type
abbreviations. 

A StorXX bit value of one indicated that the defined elements of type
XX may provide independent storage for a unit of media. A value of zero
indicates that elements of type XX provide virtual sources or
destinations, that the location of the unit of media is provided by an
element of some other type. The value of StorST is one by the
definition of that type. See 17.1.1.

An XX->YY bit value of one indicates that the medium changer device
supports all MOVE MEDIUM commands where the source is element type XX,
the destination is element type YY and these element addresses are
otherwise valid. An XX->YY bit value of zero indicates that these MOVE
MEDIUM commands may or may not be valid depending on the particular
elements requested. Those which are not valid will be rejected with
ILLEGAL REQUEST.

An XX<>YY bit value of one indicates that the medium changer device
supports all EXCHANGE MEDIUM commands where the source is element type
XX, destination 1 is element type YY, destination 2 is the same type as
the source element type and these element addresses are otherwise
valid. An XX<>YY bit value of zero indicates that these EXCHANGE MEDIUM
commands may or may not be valid depending on the particular elements
requested. Those which are not valid will be rejected with ILLEGAL
REQUEST.

17.3.3.2 Element address assignment page

The element address assignment page (see table 352) is used to assign
addresses to the elements of the medium changer (MODE SELECT) and to
report those assignments (MODE SENSE). This page also defines the
number of each type of element present.

                 Table 352 - Element address assignment page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (1Dh)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Parameter length (12h)                      |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                        Medium transport element address         ---|
| 3   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Number of medium transport elements      ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                        First storage element address            ---|
| 7   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 8   | (MSB)                                                                 |
|-----+---                        Number of storage elements               ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  | (MSB)                                                                 |
|-----+---                        First import export element address      ---|
| 11  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 12  | (MSB)                                                                 |
|-----+---                        Number of import export elements         ---|
| 13  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 14  | (MSB)                                                                 |
|-----+---                        First data transfer element address      ---|
| 15  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 16  | (MSB)                                                                 |
|-----+---                        Number of data transfer elements         ---|
| 17  |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 18  |                                                                       |
|-----+---                        Reserved                                 ---|
| 19  |                                                                       |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

The first medium transport element address field identifies the first
medium transport element contained in the medium changer (other than
the default medium transport address of zero). The number of medium
transport elements field defines the total number of medium transport
elements contained in the medium changer. If the number of medium
transport elements field in a MODE SELECT command is greater than the
default value returned in the MODE SENSE parameter data, the target
shall return CHECK CONDITION status and set the sense key to ILLEGAL
REQUEST.

The first storage element address field identifies the first medium
storage element contained in the medium changer.  The number of storage
elements field defines the total number of medium storage elements
contained in the medium changer. If the number of medium storage
elements field in a MODE SELECT command is greater than the default
value returned in the MODE SENSE parameter data, the target shall
return CHECK CONDITION status and set the sense key to ILLEGAL REQUEST.

The first import export element address field identifies the first
medium portal that is accessible both by the medium transport devices
and also by an operator from outside the medium changer. The number of
import export elements field defines the total number of import export
elements contained in the medium changer and accessible to the medium
transport elements. If the number of import export elements field in a
MODE SELECT command is greater than the default value returned in the
MODE SENSE parameter data, the target shall return CHECK CONDITION
status and set the sense key to ILLEGAL REQUEST .

   NOTE 207 The number of import export elements may be zero.

The first data transfer element address field identifies the first data
transfer element contained in the medium changer.  The data transfer
elements may be either read/write or read-only devices.  The number of
data transfer field defines the total number of data transfer elements
contained within the medium changer and accessible to the medium
transport elements.  If the number of data transfer elements field in a
MODE SELECT command is greater than the default value returned in the
MODE SENSE parameter data, the target shall return CHECK CONDITION
status and set the sense key to ILLEGAL REQUEST .

Each element in the medium changer must have a unique address. If the
address ranges defined for any of the element types overlap, the target
shall return CHECK CONDITION status and set the sense key to ILLEGAL
REQUEST. 

17.3.3.3 Transport geometry parameters page

The transport geometry parameters page (see table 353) defines whether
each medium transport element is a member of a set of elements that
share a common robotics subsystem and whether the element is capable of
media rotation.  One transport geometry descriptor is transferred for
each medium transport element, beginning with the first medium
transport element. (Other than the default transport element address of
zero.) 

                Table 353 - Transport geometry parameters page
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+========+========+=====================================================|
| 0   |   PS   |Reserved|         Page code (1Eh)                             |
|-----+-----------------------------------------------------------------------|
| 1   |                           Parameter length                            |
|=====+=======================================================================|
|     |                        Transport geometry descriptor(s)               |
|=====+==============================================================-========|
| 0   |                           Reserved                           | Rotate |
|-----+-----------------------------------------------------------------------|
| 1   |                Member number in transport element set                 |
+=============================================================================+


The parameters savable (PS) bit is only used with the MODE SENSE
command.  This bit is reserved with the MODE SELECT command.  A PS bit
of one indicates that the target is capable of saving the page in a
non-volatile vendor-specific location.

The parameter length specifies the number of bytes of transport
geometry descriptors that follow.  The geometry of each medium
transport element is defined using a two-byte field as defined below.

A rotate bit of one indicates that the medium transport element
supports media rotation for handling double-sided media.  A rotate bit
of zero indicates that the medium transport element does not support
media rotation.

The member number in set indicates the position of this element in a
set of medium transport elements that share a common robotics
subsystem. The first element in a set has a member number of zero.

   NOTE 208 This page reports information about the way transport elements
   are physically clustered in a system. The model for this is a medium
   changer device with more than one independent robotics subsystem, where
   each of these supports multiple transport elements. The elements that are
   supported by a particular robotics subsystem form a set. This sort of
   information is helpful for optimization and error recovery in such a large
   system.  (Recall that in the model for this device type, see 17.1, the
   individual transport element is addressed not the robotics subsystem. An
   element is defined to be a place where a unit of media may be at any point
   in time.)

17.4 Definitions specific to medium changer devices

17.4.1 data transfer element:  A component of a medium changer used to
access the data stored on a unit of media. The address in medium
changer element space of a primary device. 

17.4.2 element:  An addressable physical component of a medium changer
device that can serve as the location of a unit of media.

17.4.3 import export element:  A location within a medium changer
device that can be accessed by both the medium transport elements and
by the operator.

17.4.4 medium transport element:  A component of a medium changer
device that is used to move units of media.  

17.4.5 media rotation:  The process of changing the orientation of a
unit of media. In particular this refers to inverting a two sided media
cartridge so that a data transport element that can access only side at
a time can access data on the other side.  

17.4.6 primary device:  A device for reading or writing data on medium. 
These devices would typically implement the direct access, sequential
access, optical memory device or CD-ROM command sets in this
International Standard.  Examples are magnetic disk drives, cartridge
tape drives, optical disk drives and CD-ROM drives.  Use in a medium
changer environment implies that the device supports removable media.  


17.4.7 storage element:  A component of a medium changer device used
for inactive storage of a unit of media.


18 Communications devices


18.1 Communications device model

A communications device provides a facility to send and receive
information over some medium (usually an electrical or fiber-optic
cable) using a defined protocol to one or more other systems that
support the same protocol.  The media and protocols are often specified
in national or international standards, although some are proprietary. 
Within this subclause, the protocol used on the external medium is
called the external protocol.

The SCSI communications device model assumes that information to
control the external protocol is embedded within the data transferred
by the SEND and GET MESSAGE commands.  The structure of the data
transferred by these commands is not defined by this International
Standard.  Vendor-unique MODE pages may be defined to provide
additional control over the external protocol.

The SCSI communications device is a target with the characteristics of
a network access device, typically attached to a local area network
(LAN), public telecommunications network, private telecommunications
network, or packet switching network, etc., with no theoretical limits. 
Such a communications device is often called a network node.  The
communications device transmits or receives packets of data as
requested by the initiator.  The contents and meaning of the data
packets is not defined by this standard.  The bytes in the data packets
may or may not contain addressing, path selection, or path control
information identifying separate data streams.  Additional information
may be provided by the stream selection identifier found in the ten and
twelve byte SEND MESSAGE and GET MESSAGE commands.

In the SCSI communications device, the target accepts and provides the
data packets transferred in accordance with commands received from the
initiator.  There is an assumption that the initiator and the
communications device know the rules by which information is exchanged
between them, how the information is to be interpreted by the
communications device, and when it is allowable to exchange the
information.  These rules are not specified by this International
Standard.

The initiator requests that the communications device accept a packet
of data by transmitting a SEND MESSAGE command.  The initiator requests
that the communications device return a packet of data by transmitting
a GET MESSAGE command.  The communications device also supports
commands related to configuration of the network access device and
network management of the particular environment.  MODE SENSE and MODE
SELECT are examples of these configuration commands.

If a communications device temporarily has no resource available to
handle a data packet from the initiator, or has no data packet to
provide to the initiator, or has no resources assigned to perform the
operation, the device may then choose one of the following responses: 
   a)     Terminate the command with CHECK CONDITION status.  The sense key
          shall be set to NOT READY and the appropriate additional sense
          code for the condition.
   b)     Disconnect until the necessary resource or data packet becomes
          available, and then reconnect to the initiator and resume the
          operation.
   c)     Terminate the command with BUSY status.

More than one logical unit  can be implemented by a communications
device.   Logical units can serve as multiple paths to a single network
access device, and/or each logical unit can serve as a discrete path to
different resources within the device.  A single logical unit may also
serve as a path to multiple resources if the communications device can
interpret information within the data packet and route the packet to
the appropriate resource.  If the logical unit addressed by the
initiator does not have an available resource or data packet associated
with it, the communications device may choose to treat the logical unit
as an invalid logical unit (see 7.5.3) or respond as described in the
previous paragraph.

If the communications device determines that an error or unusual
condition has occurred while performing an operation specified by the
contents of a data packet, the information describing the condition is
normally returned as a part of a data packet from another network
device.  If the communications device determines that an error or
unusual condition has occurred while either executing the SCSI command
from the initiator, or during a network medium access transaction, the
command is terminated with a CHECK CONDITION.  The failures are
identified through a REQUEST SENSE command.

The SCSI communications device is distinguished from an SCSI processor
device by the fact that the primary destination of the data packets
transferred to the communications device is not the target device
itself, but another network node.  A SCSI communications device passes
the data on to an ultimate destination outside the target through a
network.  In contrast, the SCSI processor device is itself the primary
destination of the data packets.  Devices requiring protocols and
command sets that are totally incompatible with the communications
device protocols should be examined carefully to be sure that the
incompatibilities are based on functional requirements.  

18.1.1 Implementation examples

Several examples of communications device implementations are provided
to clarify the range of utility of this device type.

18.1.1.1 Host-to-host communications 

In this example of host to host communications, only the SEND MESSAGE
command is used.

A communications device (comm A) is attached to a network (net A), and
another communications device (comm B) is attached to a network (net
B).  Comm A takes the initiator role and selects a communications
device (comm B), transmitting a packet to comm B using the SEND MESSAGE
command.  After transmitting the packet on the attached network medium
(net B), the action required by the SEND MESSAGE command, comm B
assumes the initiator mode and selects comm A as a communications
device, and uses a SEND MESSAGE command to transmit a packet on the
network (net A) attached to comm A.  

   Note 209 The SEND MESSAGE command is sufficient to perform complete
   transactions between communications devices if comm A and comm B act as
   initiators.  This provides the function of a network bridge or gateway for
   high bandwidth intercommunication among nearby host processors.

18.1.1.2 Host-to-device communications 

In this example of host to device communications, the SEND MESSAGE and
GET MESSAGE commands are used.

A host system, host A, takes the initiator role and selects a
communications device (comm A) attached to a network (net A),
transmitting a packet on network net A to some other network node(s)
using the SEND MESSAGE command to comm A.  Host A then assumes that a
result will be obtained by the other network node(s) consistent with
rules understood by all involved network devices.  Host A generates a
GET MESSAGE command to obtain packets from other network nodes.  If
there are no packets that need handling pending at comm A, comm A may
disconnect until a packet arrives.  Comm A can then complete the
transaction,  reconnect to host A and the requested data packet can be
returned to host A.  Note that Host A need not support target mode and
Comm A need not support initiator mode to successfully complete an
exchange between the two devices.  The host system (host A) can be
replaced by a communications device that is capable of acting as an
initiator.

18.1.1.3 Multiple role communications 

In this example of multiple role communications, the SEND MESSAGE and
GET MESSAGE commands are used.  The device acts as both a host and a
communications device, depending on its needs and the requests made in
the network.

A communications device (comm A) is attached to a network (net A), and
another communications device (comm B)  is attached to a network (net
B).  Comm A takes the initiator role and selects a communications
device (comm B).  Comm A transmits a packet for network net B using the
SEND MESSAGE command to comm B.  Comm A then requests data packets from
net B by issuing a GET MESSAGE command to the comm B device.  Following
these actions, comm B assumes the initiator role and transmits a packet
using the SEND MESSAGE command to comm A for transmission to network
node(s) located on net A.  Comm B then requests data packets from net A
by issuing a GET MESSAGE command to comm A.

18.2 Command descriptions for communications devices

The commands for communications devices shall be as shown in table 354.

               Table 354 - Commands for communications devices
+=====================================-============-======-============+
|  Command name                       | Operation  | Type |  Subclause |
|                                     |   code     |      |            |
|-------------------------------------+------------+------+------------|
| CHANGE DEFINITION                   |    40h     |   O  |   8.2.1    |
| GET MESSAGE(6)                      |    08h     |   O  |   8.2.17   |
| GET MESSAGE(10)                     |    28h     |   O  |  18.2.2    |
| GET MESSAGE(12)                     |    A8h     |   O  |  18.2.3    |
| INQUIRY                             |    12h     |   M  |   8.2.5    |
| LOG SELECT                          |    4Ch     |   O  |   8.2.6    |
| LOG SENSE                           |    4Dh     |   O  |   8.2.7    |
| MODE SELECT(6)                      |    15h     |   O  |   8.2.8    |
| MODE SELECT(10)                     |    55h     |   O  |   8.2.9    |
| MODE SENSE(6)                       |    1Ah     |   O  |   8.2.10   |
| MODE SENSE(10)                      |    5Ah     |   O  |   8.2.11   |
| READ BUFFER                         |    3Ch     |   O  |   8.2.12   |
| RECEIVE DIAGNOSTIC RESULTS          |    1Ch     |   O  |   8.2.13   |
| REQUEST SENSE                       |    03h     |   M  |   8.2.14   |
| SEND DIAGNOSTIC                     |    1Dh     |   M  |   8.2.15   |
| SEND MESSAGE(6)                     |    0Ah     |   M  |  18.2.4    |
| SEND MESSAGE(10)                    |    2Ah     |   O  |  18.2.5    |
| SEND MESSAGE(12)                    |    AAh     |   O  |  18.2.6    |
| TEST UNIT READY                     |    00h     |   M  |   8.2.16   |
| WRITE BUFFER                        |    3Bh     |   O  |   8.2.17   |
|----------------------------------------------------------------------|
|Key:  M = command implementation is mandatory.                        |
|      O = command implementation is optional.                         |
+======================================================================+


All other operation codes for communications devices are reserved for
future standardization.

18.2.1 GET MESSAGE(6) command

The GET MESSAGE(6) command (see table 355) transfers data from the
target to the initiator.

                      Table 355 - GET MESSAGE(6) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (08h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Allocation length                           |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


18.2.2 GET MESSAGE(10) command

The GET MESSAGE(10) command (see table 356) transfers data from the
target to the initiator.

                     Table 356 - GET MESSAGE(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (28h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Stream selection                         ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Allocation length                        ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The stream selection field specifies a further level of addressing for
the data, so that it can be accessed by the target from the appropriate
data stream.

18.2.3 GET MESSAGE(12) command

The GET MESSAGE(12) command (see table 357) transfers data from the
target to the initiator.

                     Table 357 - GET MESSAGE(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (A8h)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Stream selection                         ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Allocation length                        ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


The stream selection field specifies a further level of addressing for
the data, so that it can be accessed by the target from the appropriate
data stream.

18.2.4 SEND MESSAGE(6) command

The SEND MESSAGE(6) command (see table 358) transfers data from the
initiator to the target.

                     Table 358 - SEND MESSAGE(6) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (0Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 3   |                           Transfer length                             |
|-----+---                                                                 ---|
| 4   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 5   |                           Control                                     |
+=============================================================================+


The transfer length specifies the length in bytes of data that shall be
sent during the DATA OUT phase.  A transfer length of zero indicates
that no data shall be sent.  This condition shall not be considered an
error.

18.2.5 SEND MESSAGE(10) command

The SEND MESSAGE(10) command (see table 359) transfers data from the
initiator to the target.

                     Table 359 - SEND MESSAGE(10) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (2Ah)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Stream selection                         ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 7   | (MSB)                                                                 |
|-----+---                        Transfer length                          ---|
| 8   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 9   |                           Control                                     |
+=============================================================================+


The stream selection field specifies a further level of addressing for
the data, so that it can be directed by the target to the appropriate
data stream.

Please refer to the SEND MESSAGE(6) command for a description of the
fields in this command.

18.2.6 SEND MESSAGE(12) command

The SEND MESSAGE(12) command (see table 360) transfers data from the
initiator to the target.

                     Table 360 - SEND MESSAGE(12) command
+=====-========-========-========-========-========-========-========-========+
|  Bit|   7    |   6    |   5    |   4    |   3    |   2    |   1    |   0    |
|Byte |        |        |        |        |        |        |        |        |
|=====+=======================================================================|
| 0   |                           Operation code (AAh)                        |
|-----+-----------------------------------------------------------------------|
| 1   | Logical unit number      |                  Reserved                  |
|-----+-----------------------------------------------------------------------|
| 2   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 3   |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 4   | (MSB)                                                                 |
|-----+---                        Stream selection                         ---|
| 5   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 6   | (MSB)                                                                 |
|-----+---                                                                 ---|
| 7   |                                                                       |
|-----+---                        Transfer length                          ---|
| 8   |                                                                       |
|-----+---                                                                 ---|
| 9   |                                                                 (LSB) |
|-----+-----------------------------------------------------------------------|
| 10  |                           Reserved                                    |
|-----+-----------------------------------------------------------------------|
| 11  |                           Control                                     |
+=============================================================================+


The stream selection field specifies a further level of addressing for
the data, so that it can be directed by the target to the appropriate
data stream.

Please refer to the SEND MESSAGE(6) command for a description of the
fields in this command.

18.3 Parameters for communication devices

18.3.1 Diagnostic parameters

This subclause defines the descriptors and pages for diagnostic
parameters used with communication devices. 

The diagnostic page codes for communication devices are defined in
table 361.

                      Table 361 - Diagnostic page codes
+=============-==================================================-============+
|  Page Code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     00h     |  Supported log pages                             |   8.3.1.1  |
|  01h - 3Fh  |  Reserved (for all device type pages)            |            |
|  40h - 7Fh  |  Reserved                                        |            |
|  80h - FFh  |  Vendor-specific pages                           |            |
+=============================================================================+


18.3.2 Log parameters

This subclause defines the descriptors and pages for log parameters
used with communication devices. 

The log page codes for communication devices are defined in table 362.

                          Table 362 - Log page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     01h     |  Buffer over-run/under-run page                  |   8.3.2.1  |
|     02h     |  Error counter page (write) page                 |   8.3.2.2  |
|     03h     |  Error counter page (read) page                  |   8.3.2.2  |
|     04h     |  Error counter page (read reverse) page          |   8.3.2.2  |
|     05h     |  Error counter page (verify) page                |   8.3.2.2  |
|     07h     |  Last n error events page                        |   8.3.2.3  |
|     06h     |  Non-medium error page                           |   8.3.2.4  |
|     00h     |  Supported log pages                             |   8.3.2.5  |
|  08h - 2Fh  |  Reserved                                        |            |
|  30h - 3Eh  |  Vendor-specific pages                           |            |
|     3Fh     |  Reserved                                        |            |
+=============================================================================+


18.3.3 Mode parameters

This subclause defines the descriptors and pages for mode parameters
used with communication devices. 

The mode parameter list, including the mode parameter header and mode
block descriptor, are defined in 8.3.3.

The medium-type code field is contained in the mode parameter header
(see 8.3.3).  This field is reserved for communications devices.

The device specific parameter field is contained in the mode parameter
header (see 8.3.3).  This field is reserved for communications devices.

The density code field is contained in the mode parameter block
descriptor (see 8.3.3).  This field is reserved for communications
devices.

The mode page codes for communications devices are shown in table 363.

                         Table 363 - Mode page codes
+=============-==================================================-============+
|  Page code  |  Description                                     |  Subclause |
|-------------+--------------------------------------------------+------------|
|     0Ah     |  Control mode page                               |   8.3.3.1  |
|     02h     |  Disconnect-reconnect page                       |   8.3.3.2  |
|     09h     |  Peripheral device page                          |   8.3.3.3  |
|     01h     |  Reserved                                        |            |
|  03h - 08h  |  Reserved                                        |            |
|  0Bh - 1Fh  |  Reserved                                        |            |
|     00h     |  Vendor-specific (does not require page format)  |            |
|  20h - 3Eh  |  Vendor-specific (page format required)          |            |
|     3Fh     |  Return all pages                                |            |
|             |     (valid only for the MODE SENSE command)      |            |
+=============================================================================+


18.4 Definitions specific to communications devices

18.4.1 communications device:   An SCSI device whose principal function
is to communicate with one or more other systems, usually over
distances that exceed the maximum cable length defined for SCSI.

18.4.2 external medium:   The medium used by the communications device
to send or receive information to or from one or more communications
devices.  The other communications devices may or may not use an SCSI
interface.

18.4.3 external protocol:   The protocol(s) used by the communications
device to transfer information over the external medium.  The external
protocol(s) are not defined by this International Standard.




Annex A
(informative)

SCSI signal sequence example


This annex is included to provide an example of the signal sequencing
of an I/O process that includes most of the SCSI bus phases (see figure
29).  In this example, the target does not disconnect from the SCSI bus
prior to completing the I/O process.

   In a typical system, the computer's host adapter acts as the initiator and
   the peripheral device's controller acts as the target.  In general, this
   International Standard does not attempt to distinguish between a computer
   and its host adapter.  These functions may be separate or merged.  The
   term initiator encompasses both.  The term target refers to the controller
   portion of the peripheral device, which may be separate (bridge
   controller) from the peripheral device or merged with it (embedded
   controller).  The term SCSI device refers to a device that may be
   connected to the SCSI bus.  An SCSI device may act in the initiator role,
   the target role, or both roles.

The following notes apply to figure A.1.

DATA BUS NOTES
   1)     DB(7) is the most significant bit.
   2)     DB(7) is the highest priority arbitration bit.
   3)     DB(P) is the data parity bit (odd).  Parity is not valid during
          the ARBITRATION phase.

BUS PHASE NOTES
   1)        BUS FREE phase.  BUS FREE phase begins when the SEL and BSY
             signals are both continuously false for a bus settle delay.  It
             ends when the BSY signal becomes true.  (In the SCSI-1 single-
             initiator option, BUS FREE phase could also end when the SEL
             signal became true.)

   2)        ARBITRATION phase.  This phase is documented as mandatory in
             SCSI-2.  In SCSI-1, this phase was optional.

          At least one bus free delay after first detecting BUS FREE phase,
          but no more than a bus set delay after the bus was last free, the
          initiator asserts the BSY signal and its assigned SCSI device ID
          bit on the DATA BUS.  The initiator waits an arbitration delay,
          then examines the DATA BUS.  If a higher priority SCSI device ID
          bit is true, the initiator loses arbitration and may release the
          BSY signal and its SCSI ID bit.  Otherwise, the initiator wins
          arbitration and asserts the SEL signal.  All SCSI devices must
          release the BSY signal and their SCSI ID bit within a bus clear
          delay after the SEL signal becomes true (even if they have not
          yet examined the DATA BUS).  The winning SCSI device waits at
          least a bus clear delay plus a bus settle delay after asserting
          the SEL signal before changing any signals on the bus.

   3)        SELECTION phase.  The I/O signal is false during this phase to
             distinguish it from the RESELECTION phase.

             NON-ARBITRATING SYSTEMS (only permitted in SCSI-1):  In such
             systems, the initiator waits at least a bus clear delay after
             detecting BUS FREE phase, then it asserts the target's  SCSI ID
             bit and, optionally, the initiator's SCSI ID bit on the DATA
             BUS.  After at least two deskew delays, the initiator asserts
             the SEL signal.

             ARBITRATING SYSTEMS:  In such systems, the SCSI device that won
             arbitration has both the BSY and SEL signals asserted.  After
             at least a bus clear delay plus a bus settle delay, it places
             both the target's and the initiator's SCSI ID bits on the DATA
             BUS.  At least two deskew delays later, it releases the BSY
             signal.

             ALL SYSTEMS:  The target determines that it is selected when
             the SEL signal and its SCSI ID bit are true and the BSY and I/O
             signals are false for at least a bus settle delay.  The target
             then asserts the BSY signal within a selection abort time after
             it last determined that it was still being selected.  (The
             target is not required to respond to a selection within a
             selection abort time;  but it must ensure that it will not
             assert the BSY signal more than a selection abort time after
             the initiator aborts a selection attempt.)

          At least two deskew delays after the initiator detects the BSY
          signal is true, it releases the SEL signal.

   4)        MESSAGE OUT phase.  During this phase the initiator sends an
             IDENTIFY message to the target.  The target asserts the C/D and
             MSG signals and negates the I/O signal for the message
             transfer.  After detecting the assertion of the REQ signal, the
             initiator negates the ATN signal before asserting the ACK
             signal.  (Refer to the handshake procedure for the command
             phase.)

   5)        COMMAND phase.  The target asserts the C/D signal and negates
             the I/O and MSG signals for all of the bytes transferred during
             this phase.  The direction of transfer is from the initiator to
             the target.

          HANDSHAKE PROCEDURE:  The target asserts the REQ signal.  Upon
          detecting the REQ signal is true, the initiator drives the DATA
          BUS to the desired value, waits at least one deskew delay plus a
          cable skew delay and then asserts the ACK signal.  The initiator
          continues to drive the DATA BUS until the REQ signal is false.

          When the ACK signal is true at the target, the target reads the
          DATA BUS and then negates the REQ signal.

          When the REQ signal becomes false at the initiator, the initiator
          may change or release the DATA BUS and negate the ACK signal.

          The target may continue to request command bytes by asserting the
          REQ signal again.  The number of command bytes is determined by
          the group code (most significant 3 bits) that is contained in the
          first command byte.

   6)        DATA IN phase.  The target asserts the I/O signal and negates
             the C/D and MSG signal for all of the bytes transferred during
             this phase.  The direction of transfer is from the target to
             the initiator.

          HANDSHAKE PROCEDURE:  The target first drives the DATA BUS to
          their desired values, waits at least one deskew delay plus a
          cable skew delay, and then asserts the REQ signal.  The target
          continues to drive the DATA BUS until the ACK signal is true.

          When the REQ signal is true at the initiator, the initiator reads
          the DATA BUS and then asserts the ACK signal.

          When the ACK signal is true at the target, the target may change
          or release the DATA BUS and negate the REQ signal.

          When the REQ signal is false at the initiator, the initiator
          negates the ACK signal.  After the ACK signal is false, the
          target may continue the transfer by driving the DATA BUS and
          asserting the REQ signal as described above.

   7)        DATA OUT phase (not shown in the figure).  The target negates
             the C/D, I/O, and MSG signals for all of the bytes transferred
             during this phase.  The direction of transfer is from the
             initiator to the target.  (Refer to the handshake procedure for
             the command phase.)

   8)        STATUS phase.  The target asserts the C/D and I/O signals and
             negates the MSG signal for the byte transferred during this
             phase.  The direction of transfer is from the target to the
             initiator.  (Refer to the handshake procedure for the DATA IN
             phase.)

   9)        MESSAGE IN phase.  The target asserts the C/D, I/O, and MSG
             signals during the byte transferred during this phase. 
             Typically, a command COMPLETE message would be sent at this
             point.  The direction of transfer is from the target to the
             initiator.  (Refer to the handshake procedure for the DATA IN
             phase.)

   10)       BUS FREE phase.  The target returns to BUS FREE phase by
             releasing the BSY signal.  Both the target and the initiator
             release all bus signals within a bus clear delay after the BSY
             signal is continuously false for a bus settle delay.
















































                  Figure A.1 - SCSI signal sequence example



Annex B
(informative)

Fast SCSI skew time


This annex is included to explain the skew budget for the fast SCSI
option which is defined in Clause 4.

Synchronous transfer rates using a transfer period between 100 ns and
200 ns are known as the fast SCSI option.  Fast data transfer times
have been tested using the following skew budget (see table B.1) with
the differential alternative using transceivers with 25 m of 0,080 42
mm2 (28 AWG) twisted pair cable as specified in 5.2.3.  The
transceivers were subjected to a maximum temperature difference of 25
degrees C and a maximum of 200 mV of VCC difference.

                     Table B.1 - Fast SCSI jitter budget
+================-============================================-===============+
|       Parameter|                                            | Jitter budget |
|           label|           Description                      |    +/- ns     |
|----------------+--------------------------------------------+---------------|
|              a | clock offset                               |       5       |
|              b | transmitting logic skew                    |       3       |
|Transmitting  c | foil delay                                 |       1       |
|  Device      d | transmitter propogation delay skew         |       6       |
|              e | foil delay                                 |       1       |
|              f | drop cable propogation delay               |       1       |
|-- Connector  --|--------------------------------------------|---------------|
|              g | external cable - skew between pairs        |       5       |
|   Cable      h | distortion due to cable impedance          |       1       |
|              i | distortion due to intersymbol interferance |       2       |
|              j | bias distortion                            |       2       |
|-- Connector  --|--------------------------------------------|---------------|
|              k | drop cable propogation delay               |       1       |
|Receiving     l | foil delay                                 |       1       |
| Device       m | receiver propogation delay skew            |       9       |
|              n | foil delay                                 |       1       |
|              o | logic setup/hold                           |       5       |
|----------------+--------------------------------------------+---------------|
|                | total jitter budget                        |      44       |
+=============================================================================+

Mapping the above jitter or skew budget to the SCSI format in 5.7 and
5.8 is done in Table B.2.

                    Table B.2 - Mapping of jitter to SCSI
+=======================-=============-===============+
| SCSI timing parameter | Calculation | Value (ns)    |
|-----------------------+-------------+---------------|
| Fast cable skew delay |      g      |   5           |
| Fast deskew delay     |  SUM(h..n)  |  20 (note 1)  |
| Fast hold time        |      o      |  10 (note 1)  |
| Fast assertion period |   (note 2)  |  30           |
| Fast negation period  |   (note 2)  |  30           |
|-----------------------------------------------------|
| Notes                                               |
|  1) Value is rounded up from the jitter budget.     |
|  2) The fast assertion period and fast negation     |
|     period are derived from isolated pulse          |
|     mesurements and represent a minimum pulse width |
|     with a satisfactory margin.                     |
+=====================================================+


The maximum driver skew allowed was 6 ns (tPLH min. - tPHL max.) and the
maximum receiver skew tested was 9 ns (tPLH min. - tPHL max.).  Values
greater than these could be used if other numbers could be reduced --
the sum is what is important.

Fast data transfer timing parameters were not tested for the single-
ended transceiver option prior to publication of this International
Standard.



Annex C
(informative)

Other SCSI standardization activities


This annex provides information on other formal standardization
activities related to SCSI.

C.1 SCSI-3 standards projects

Accredited Standards Committee X3 has approved several SCSI-3 projects
to enhance and restructure the SCSI-2 standard as shown in figure C.1. 
These projects (except fibre channel) are assigned to the X3T9.2 Task
Group which developed this International Standard and the SCSI-1
standard.  Please contact the Chairman of X3T9.2 for further
information concerning these projects.

C.2 Digital data exchange for colour electronic prepress
systems

Accredited Standards Committee IT8 has developed several standards
pertaining to the exchange of digital data between colour electronic
prepress systems.  These devices are used for high quality color
printing.  At least one of the IT8 projects involves transferring such
data over SCSI.  Please contact the Secretariat of IT8 for further
information concerning their projects.

C.3 Fibre channel

Accredited Standards Committee X3 has approved a project to develop a
fibre optic channel physical layer for the Intelligent Peripheral
Interface (IPI), SCSI, and the High Performance Parallel Interface
(HIPPI).  This project is assigned to the X3T9.3 Task Group.  Please
contact the Chairman of X3T9.3 for further information concerning this
project.





















                   Figure C.1 - SCSI-3 standards structure




Annex D
(informative)

Numeric order codes


This annex contains SCSI-2 additional sense codes and operation codes
in numeric order as a reference.  In the event of a conflict with
between the codes in this annex and the body of this International
Standard, the codes in the body should be regarded as correct.

Table D.1 is a numerical order listing of the additional sense codes
and the additional sense code qualifiers.

                     Table D.1 - ASC and ASCQ assignments
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                                          |
|           .T - SEQUENTIAL ACCESS DEVICE                                     |
|           . L - PRINTER DEVICE                                              |
|           .  P - PROCESSOR DEVICE                                           |
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE                           |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
| ASC ASCQ  DTLPWRSOMC  DESCRIPTION                                           |
| --- ----              ----------------------------------------------------- |
|  00  00   DTLPWRSOMC  NO ADDITIONAL SENSE INFORMATION                       |
|  00  01    T          FILEMARK DETECTED                                     |
|  00  02    T    S     END-OF-PARTITION/MEDIUM DETECTED                      |
|  00  03    T          SETMARK DETECTED                                      |
|  00  04    T    S     BEGINNING-OF-PARTITION/MEDIUM DETECTED                |
|  00  05    T    S     END-OF-DATA DETECTED                                  |
|  00  06   DTLPWRSOMC  I/O PROCESS TERMINATED                                |
|  00  11   R           AUDIO PLAY OPERATION IN PROGRESS                      |
|  00  12   R           AUDIO PLAY OPERATION PAUSED                           |
|  00  13   R           AUDIO PLAY OPERATION SUCCESSFULLY COMPLETED           |
|  00  14   R           AUDIO PLAY OPERATION STOPPED DUE TO ERROR             |
|  00  15   R           NO CURRENT AUDIO STATUS TO RETURN                     |
|  01  00   DW  O       NO INDEX/SECTOR SIGNAL                                |
|  02  00   DWR OM      NO SEEK COMPLETE                                      |
|  03  00   DTL W SO    PERIPHERAL DEVICE WRITE FAULT                         |
|  03  01    T          NO WRITE CURRENT                                      |
|  03  02    T          EXCESSIVE WRITE ERRORS                                |
|  04  00   DTLPWRSOMC  LOGICAL UNIT NOT READY, CAUSE NOT REPORTABLE          |
|  04  01   DTLPWRSOMC  LOGICAL UNIT IS IN PROCESS OF BECOMING READY          |
|  04  02   DTLPWRSOMC  LOGICAL UNIT NOT READY, INITIALIZING command REQUIRED |
|  04  03   DTLPWRSOMC  LOGICAL UNIT NOT READY, MANUAL INTERVENTION REQUIRED  |
|  04  04   DTL    O    LOGICAL UNIT NOT READY, FORMAT IN PROGRESS            |
|  05  00   DTL WRSOMC  LOGICAL UNIT DOES NOT RESPOND TO SELECTION            |
|  06  00   DWR OM  NO  REFERENCE POSITION FOUND                              |
|  07  00   DTL WRSOM   MULTIPLE PERIPHERAL DEVICES SELECTED                  |
|  08  00   DTL WRSOMC  LOGICAL UNIT COMMUNICATION FAILURE                    |
|  08  01   DTL WRSOMC  LOGICAL UNIT COMMUNICATION TIME-OUT                   |
|  08  02   DTL WRSOMC  LOGICAL UNIT COMMUNICATION PARITY ERROR               |
|  09  00   DT  WR O    TRACK FOLLOWING ERROR                                 |
|  09  01       WR O    TRACKING SERVO FAILURE                                |
|  09  02       WR O    FOCUS SERVO FAILURE                                   |
|  09  03       WR O    SPINDLE SERVO FAILURE                                 |
+=============================================================================+


Table D.1  (continued)
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                                          |
|           .T - SEQUENTIAL ACCESS DEVICE                                     |
|           . L - PRINTER DEVICE                                              |
|           .  P - PROCESSOR DEVICE                                           |
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE                           |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
| ASC ASCQ  DTLPWRSOMC  DESCRIPTION                                           |
| --- ----              ----------------------------------------------------- |
|  0A  00   DTLPWRSOMC  ERROR LOG OVERFLOW                                    |
|  0B  00                                                                     |
|  0C  00    T     S    WRITE ERROR                                           |
|  0C  01   D   W  O    WRITE ERROR RECOVERED WITH AUTO REALLOCATION          |
|  0C  02   D   W  O    WRITE ERROR - AUTO REALLOCATION FAILED                |
|  0D  00                                                                     |
|  0E  00                                                                     |
|  0F  00                                                                     |
|  10  00   D   W  O    ID CRC OR ECC ERROR                                   |
|  11  00   DT  WRSO    UNRECOVERED READ ERROR                                |
|  11  01   DT  W SO    READ RETRIES EXHAUSTED                                |
|  11  02   DT  W SO    ERROR TOO LONG TO CORRECT                             |
|  11  03   DT  W SO    MULTIPLE READ ERRORS                                  |
|  11  04   D   W  O    UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED       |
|  11  05       WR O    L-EC UNCORRECTABLE ERROR                              |
|  11  06       WR O    CIRC UNRECOVERED ERROR                                |
|  11  07       W  O    DATA RESYNCHRONIZATION ERROR                          |
|  11  08    T          INCOMPLETE BLOCK READ                                 |
|  11  09    T          NO GAP FOUND                                          |
|  11  0A   DT     O    MISCORRECTED ERROR                                    |
|  11  0B   D   W  O    UNRECOVERED READ ERROR - RECOMMEND REASSIGNMENT       |
|  11  0C   D   W  O    UNRECOVERED READ ERROR - RECOMMEND REWRITE THE DATA   |
|  12  00   D   W  O    ADDRESS MARK NOT FOUND FOR ID FIELD                   |
|  13  00   D   W  O    ADDRESS MARK NOT FOUND FOR DATA FIELD                 |
|  14  00   DTL WRSO    RECORDED ENTITY NOT FOUND                             |
|  14  01   DT  WR O    RECORD NOT FOUND                                      |
|  14  02    T          FILEMARK OR SETMARK NOT FOUND                         |
|  14  03    T          END-OF-DATA NOT FOUND                                 |
|  14  04    T          BLOCK SEQUENCE ERROR                                  |
|  15  00   DTL WRSOM   RANDOM POSITIONING ERROR                              |
|  15  01   DTL WRSOM   MECHANICAL POSITIONING ERROR                          |
|  15  02   DT  WR O    POSITIONING ERROR DETECTED BY READ OF MEDIUM          |
|  16  00   DW     O    DATA SYNCHRONIZATION MARK ERROR                       |
|  17  00   DT  WRSO    RECOVERED DATA WITH NO ERROR CORRECTION APPLIED       |
|  17  01   DT  WRSO    RECOVERED DATA WITH RETRIES                           |
|  17  02   DT  WR O    RECOVERED DATA WITH POSITIVE HEAD OFFSET              |
|  17  03   DT  WR O    RECOVERED DATA WITH NEGATIVE HEAD OFFSET              |
|  17  04       WR O    RECOVERED DATA WITH RETRIES AND/OR CIRC APPLIED       |
|  17  05   D   WR O    RECOVERED DATA USING PREVIOUS SECTOR ID               |
|  17  06   D   W  O    RECOVERED DATA WITHOUT ECC - DATA AUTO-REALLOCATED    |
|  17  07   D   W  O    RECOVERED DATA WITHOUT ECC - RECOMMEND REASSIGNMENT   |
|  17  08   D   W  O    RECOVERED DATA WITHOUT ECC - RECOMMEND REWRITE        |
|  18  00   DT  WR O    RECOVERED DATA WITH ERROR CORRECTION APPLIED          |
|  18  01   D   WR O    RECOVERED DATA WITH ERROR CORRECTION & RETRIES APPLIED|
|  18  02   D   WR O    RECOVERED DATA - DATA AUTO-REALLOCATED                |
|  18  03        R      RECOVERED DATA WITH CIRC                              |
|  18  04        R      RECOVERED DATA WITH LEC                               |
|  18  05   D   WR O    RECOVERED DATA - RECOMMEND REASSIGNMENT               |
|  18  06   D   WR O    RECOVERED DATA - RECOMMEND REWRITE                    |
+=============================================================================+


Table D.1  (continued)
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                                          |
|           .T - SEQUENTIAL ACCESS DEVICE                                     |
|           . L - PRINTER DEVICE                                              |
|           .  P - PROCESSOR DEVICE                                           |
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE                           |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
| ASC ASCQ  DTLPWRSOMC  DESCRIPTION                                           |
| --- ----              ----------------------------------------------------- |
|  19  00   D      O    DEFECT LIST ERROR                                     |
|  19  01   D      O    DEFECT LIST NOT AVAILABLE                             |
|  19  02   D      O    DEFECT LIST ERROR IN PRIMARY LIST                     |
|  19  03   D      O    DEFECT LIST ERROR IN GROWN LIST                       |
|  1A  00   DTLPWRSOMC  PARAMETER LIST LENGTH ERROR                           |
|  1B  00   DTLPWRSOMC  SYNCHRONOUS DATA TRANSFER ERROR                       |
|  1C  00   D      O    DEFECT LIST NOT FOUND                                 |
|  1C  01   D      O    PRIMARY DEFECT LIST NOT FOUND                         |
|  1C  02   D      O    GROWN DEFECT LIST NOT FOUND                           |
|  1D  00   D   W  O    MISCOMPARE DURING VERIFY OPERATION                    |
|  1E  00   D   W  O    RECOVERED ID WITH ECC                                 |
|  1F  00                                                                     |
|  20  00   DTLPWRSOMC  INVALID command OPERATION CODE                        |
|  21  00   DT  WR OM   LOGICAL BLOCK ADDRESS OUT OF RANGE                    |
|  21  01           M   INVALID ELEMENT ADDRESS                               |
|  22  00   D           ILLEGAL FUNCTION (SHOULD USE 20 00, 24 00, OR 26 00)  |
|  23  00                                                                     |
|  24  00   DTLPWRSOMC  INVALID FIELD IN CDB                                  |
|  25  00   DTLPWRSOMC  LOGICAL UNIT NOT SUPPORTED                            |
|  26  00   DTLPWRSOMC  INVALID FIELD IN PARAMETER LIST                       |
|  26  01   DTLPWRSOMC  PARAMETER NOT SUPPORTED                               |
|  26  02   DTLPWRSOMC  PARAMETER VALUE INVALID                               |
|  26  03   DTLPWRSOMC  THRESHOLD PARAMETERS NOT SUPPORTED                    |
|  27  00   DT  W  O    WRITE PROTECTED                                       |
|  28  00   DTLPWRSOMC  NOT READY TO READY TRANSITION(MEDIUM MAY HAVE CHANGED)|
|  28  01           M   IMPORT OR EXPORT ELEMENT ACCESSED                     |
|  29  00   DTLPWRSOMC  POWER ON, RESET, OR BUS DEVICE RESET OCCURRED         |
|  2A  00   DTL WRSOMC  PARAMETERS CHANGED                                    |
|  2A  01   DTL WRSOMC  MODE PARAMETERS CHANGED                               |
|  2A  02   DTL WRSOMC  LOG PARAMETERS CHANGED                                |
|  2B  00   DTLPWRSO C  COPY CANNOT EXECUTE SINCE HOST CANNOT DISCONNECT      |
|  2C  00   DTLPWRSOMC  command SEQUENCE ERROR                                |
|  2C  01         S     TOO MANY WINDOWS SPECIFIED                            |
|  2C  02         S     INVALID COMBINATION OF WINDOWS SPECIFIED              |
|  2D  00    T          OVERWRITE ERROR ON UPDATE IN PLACE                    |
|  2E  00                                                                     |
|  2F  00   DTLPWRSOMC  commandS CLEARED BY ANOTHER INITIATOR                 |
|  30  00   DT  WR OM   INCOMPATIBLE MEDIUM INSTALLED                         |
|  30  01   DT  WR O    CANNOT READ MEDIUM - UNKNOWN FORMAT                   |
|  30  02   DT  WR O    CANNOT READ MEDIUM - INCOMPATIBLE FORMAT              |
|  30  03   DT          CLEANING CARTRIDGE INSTALLED                          |
|  31  00   DT  W  O    MEDIUM FORMAT CORRUPTED                               |
|  31  01   D L    O    FORMAT command FAILED                                 |
|  32  00   D   W  O    NO DEFECT SPARE LOCATION AVAILABLE                    |
|  32  01   D   W  O    DEFECT LIST UPDATE FAILURE                            |
|  33  00    T          TAPE LENGTH ERROR                                     |
|  34  00                                                                     |
|  35  00                                                                     |
|  36  00     L         RIBBON, INK, OR TONER FAILURE                         |
+=============================================================================+


Table D.1  (continued)
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                                          |
|           .T - SEQUENTIAL ACCESS DEVICE                                     |
|           . L - PRINTER DEVICE                                              |
|           .  P - PROCESSOR DEVICE                                           |
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE                           |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
| ASC ASCQ  DTLPWRSOMC  DESCRIPTION                                           |
| --- ----              ----------------------------------------------------- |
|  37  00   DTL WRSOMC  ROUNDED PARAMETER                                     |
|  38  00                                                                     |
|  39  00   DTL WRSOMC  SAVING PARAMETERS NOT SUPPORTED                       |
|  3A  00   DTL WRSOM   MEDIUM NOT PRESENT                                    |
|  3B  00    TL         SEQUENTIAL POSITIONING ERROR                          |
|  3B  01    T          TAPE POSITION ERROR AT BEGINNING-OF-MEDIUM            |
|  3B  02    T          TAPE POSITION ERROR AT END-OF-MEDIUM                  |
|  3B  03     L         TAPE OR ELECTRONIC VERTICAL FORMS UNIT NOT READY      |
|  3B  04     L         SLEW FAILURE                                          |
|  3B  05     L         PAPER JAM                                             |
|  3B  06     L         FAILED TO SENSE TOP-OF-FORM                           |
|  3B  07     L         FAILED TO SENSE BOTTOM-OF-FORM                        |
|  3B  08    T          REPOSITION ERROR                                      |
|  3B  09         S     READ PAST END OF MEDIUM                               |
|  3B  0A         S     READ PAST BEGINNING OF MEDIUM                         |
|  3B  0B         S     POSITION PAST END OF MEDIUM                           |
|  3B  0C         S     POSITION PAST BEGINNING OF MEDIUM                     |
|  3B  0D           M   MEDIUM DESTINATION ELEMENT FULL                       |
|  3B  0E           M   MEDIUM SOURCE ELEMENT EMPTY                           |
|  3C  00                                                                     |
|  3D  00   DTLPWRSOMC  INVALID BITS IN IDENTIFY MESSAGE                      |
|  3E  00   DTLPWRSOMC  LOGICAL UNIT HAS NOT SELF-CONFIGURED YET              |
|  3F  00   DTLPWRSOMC  TARGET OPERATING CONDITIONS HAVE CHANGED              |
|  3F  01   DTLPWRSOMC  MICROCODE HAS BEEN CHANGED                            |
|  3F  02   DTLPWRSOMC  CHANGED OPERATING DEFINITION                          |
|  3F  03   DTLPWRSOMC  INQUIRY DATA HAS CHANGED                              |
|  40  00   D           RAM FAILURE (SHOULD USE 40 NN)                        |
|  40  NN   DTLPWRSOMC  DIAGNOSTIC FAILURE ON COMPONENT NN (80H-FFH)          |
|  41  00   D           DATA PATH FAILURE (SHOULD USE 40 NN)                  |
|  42  00   D           POWER-ON OR SELF-TEST FAILURE (SHOULD USE 40 NN)      |
|  43  00   DTLPWRSOMC  MESSAGE ERROR                                         |
|  44  00   DTLPWRSOMC  INTERNAL TARGET FAILURE                               |
|  45  00   DTLPWRSOMC  SELECT OR RESELECT FAILURE                            |
|  46  00   DTLPWRSOMC  UNSUCCESSFUL SOFT RESET                               |
|  47  00   DTLPWRSOMC  SCSI PARITY ERROR                                     |
|  48  00   DTLPWRSOMC  INITIATOR DETECTED ERROR MESSAGE RECEIVED             |
|  49  00   DTLPWRSOMC  INVALID MESSAGE ERROR                                 |
|  4A  00   DTLPWRSOMC  command PHASE ERROR                                   |
|  4B  00   DTLPWRSOMC  DATA PHASE ERROR                                      |
|  4C  00   DTLPWRSOMC  LOGICAL UNIT FAILED SELF-CONFIGURATION                |
|  4D  00                                                                     |
|  4E  00   DTLPWRSOMC  OVERLAPPED COMMANDS ATTEMPTED                         |
|  4F  00                                                                     |
|  50  00    T          WRITE APPEND ERROR                                    |
|  50  01    T          WRITE APPEND POSITION ERROR                           |
|  50  02    T          POSITION ERROR RELATED TO TIMING                      |
|  51  00    T     O    ERASE FAILURE                                         |
|  52  00    T          CARTRIDGE FAULT                                       |
+=============================================================================+


Table D.1  (continued)
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                                          |
|           .T - SEQUENTIAL ACCESS DEVICE                                     |
|           . L - PRINTER DEVICE                                              |
|           .  P - PROCESSOR DEVICE                                           |
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE                           |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
| ASC ASCQ  DTLPWRSOMC  DESCRIPTION                                           |
| --- ----              ----------------------------------------------------- |
|  53  00   DTL WRSOM   MEDIA LOAD OR EJECT FAILED                            |
|  53  01    T          UNLOAD TAPE FAILURE                                   |
|  53  02   DT  WR OM   MEDIUM REMOVAL PREVENTED                              |
|  54  00      P        SCSI TO HOST SYSTEM INTERFACE FAILURE                 |
|  55  00      P        SYSTEM RESOURCE FAILURE                               |
|  56  00                                                                     |
|  57  00        R      UNABLE TO RECOVER TABLE-OF-CONTENTS                   |
|  58  00     O         GENERATION DOES NOT EXIST                             |
|  59  00     O         UPDATED BLOCK READ                                    |
|  5A  00   DTLPWRSOM   OPERATOR REQUEST OR STATE CHANGE INPUT (UNSPECIFIED)  |
|  5A  01   DT  WR OM   OPERATOR MEDIUM REMOVAL REQUEST                       |
|  5A  02   DT  W  O    OPERATOR SELECTED WRITE PROTECT                       |
|  5A  03   DT  W  O    OPERATOR SELECTED WRITE PERMIT                        |
|  5B  00   DTLPWRSOM   LOG EXCEPTION                                         |
|  5B  01   DTLPWRSOM   THRESHOLD CONDITION MET                               |
|  5B  02   DTLPWRSOM   LOG COUNTER AT MAXIMUM                                |
|  5B  03   DTLPWRSOM   LOG LIST CODES EXHAUSTED                              |
|  5C  00   D   O       RPL STATUS CHANGE                                     |
|  5C  01   D   O       SPINDLES SYNCHRONIZED                                 |
|  5C  02   D   O       SPINDLES NOT SYNCHRONIZED                             |
|  5D  00                                                                     |
|  5E  00                                                                     |
|  5F  00                                                                     |
|  60  00         S     LAMP FAILURE                                          |
|  61  00         S     VIDEO ACQUISITION ERROR                               |
|  61  01         S     UNABLE TO ACQUIRE VIDEO                               |
|  61  02         S     OUT OF FOCUS                                          |
|  62  00         S     SCAN HEAD POSITIONING ERROR                           |
|  63  00        R      END OF USER AREA ENCOUNTERED ON THIS TRACK            |
|  64  00        R      ILLEGAL MODE FOR THIS TRACK                           |
|  65  00                                                                     |
|  66  00                                                                     |
|  67  00                                                                     |
|  68  00                                                                     |
|  69  00                                                                     |
|  6A  00                                                                     |
|  6B  00                                                                     |
|  6C  00                                                                     |
|  6D  00                                                                     |
|  6E  00                                                                     |
|  6F  00                                                                     |
+=============================================================================+


Table D.1  (concluded)
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                                          |
|           .T - SEQUENTIAL ACCESS DEVICE                                     |
|           . L - PRINTER DEVICE                                              |
|           .  P - PROCESSOR DEVICE                                           |
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE                           |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
| ASC ASCQ  DTLPWRSOMC  DESCRIPTION                                           |
| --- ----              ----------------------------------------------------- |
|  70  00                                                                     |
|  71  00                                                                     |
|  72  00                                                                     |
|  73  00                                                                     |
|  74  00                                                                     |
|  75  00                                                                     |
|  76  00                                                                     |
|  77  00                                                                     |
|  78  00                                                                     |
|  79  00                                                                     |
|  7A  00                                                                     |
|  7B  00                                                                     |
|  7C  00                                                                     |
|  7D  00                                                                     |
|  7E  00                                                                     |
|  7F  00                                                                     |
|                                                                             |
|  80  xxh \                                                                  |
|   THROUGH >  Vendor-specific.                                               |
|  FF  xxh /                                                                  |
|                                                                             |
|  xxh 80 \                                                                   |
|  THROUGH >  Vendor-specific QUALIFICATION OF STANDARD ASC.                  |
|  xxh FF /                                                                   |
|               ALL CODES NOT SHOWN OR BLANK ARE RESERVED.                    |
+=============================================================================+



Table D.2 is a numerical order listing of the command operation codes.

                      Table D.2 - SCSI-2 Operation Codes
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                       Device column key  |
|           .T - SEQUENTIAL ACCESS DEVICE                  M = Mandatory      |
|           . L - PRINTER DEVICE                           O = Optional       |
|           .  P - PROCESSOR DEVICE                        V = Vendor-specific|
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE        R = Reserved       |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
|        OP DTLPWRSOMC Description                                            |
|----------+----------+-------------------------------------------------------|
|        00 MMMMMMMMMM TEST UNIT READY                                        |
|        01  M         REWIND                                                 |
|        01 O V OO OO  REZERO UNIT                                            |
|        02 VVVVVV  V                                                         |
|        03 MMMMMMMMMM REQUEST SENSE                                          |
|        04   O        FORMAT                                                 |
|        04 M      O   FORMAT UNIT                                            |
|        05 VMVVVV  V  READ BLOCK LIMITS                                      |
|        06 VVVVVV  V                                                         |
|        07         O  INITIALIZE ELEMENT STATUS                              |
|        07 OVV O  OV  REASSIGN BLOCKS                                        |
|        08          M GET MESSAGE(06)                                        |
|        08 OMV OO OV  READ(06)                                               |
|        08    O       RECEIVE                                                |
|        09 VVVVVV  V                                                         |
|        0A   M        PRINT                                                  |
|        0A          M SEND MESSAGE(06)                                       |
|        0A    M       SEND(06)                                               |
|        0A OM  O  OV  WRITE(06)                                              |
|        0B O   OO OV  SEEK(06)                                               |
|        0B   O        SLEW AND PRINT                                         |
|        0C VVVVVV  V                                                         |
|        0D VVVVVV  V                                                         |
|        0E VVVVVV  V                                                         |
|        0F VOVVVV  V  READ REVERSE                                           |
|        10   O O      SYNCHRONIZE BUFFER                                     |
|        10 VM VVV     WRITE FILEMARKS                                        |
|        11 VMVVVV     SPACE                                                  |
|        12 MMMMMMMMMM INQUIRY                                                |
|        13 VOVVVV     VERIFY(06)                                             |
|        14 VOOVVV     RECOVER BUFFERED DATA                                  |
|        15 OMO OOOOOO MODE SELECT(06)                                        |
|        16 M   MM MO  RESERVE                                                |
|        16  MM   M    RESERVE UNIT                                           |
|        17 M   MM MO  RELEASE                                                |
|        17  MM   M    RELEASE UNIT                                           |
|        18 OOOOOOOO   COPY                                                   |
|        19 VMVVVV     ERASE                                                  |
|        1A OMO OOOOOO MODE SENSE(06)                                         |
|        1B  O         LOAD UNLOAD                                            |
|        1B       O    SCAN                                                   |
|        1B   O        STOP PRINT                                             |
|        1B O   OO O   STOP START UNIT                                        |
+=============================================================================+


Table D.2 (continued)
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                       Device column key  |
|           .T - SEQUENTIAL ACCESS DEVICE                  M = Mandatory      |
|           . L - PRINTER DEVICE                           O = Optional       |
|           .  P - PROCESSOR DEVICE                        V = Vendor-specific|
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE        R = Reserved       |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
|        OP DTLPWRSOMC Description                                            |
|----------+----------+-------------------------------------------------------|
|        1C OOOOOOOOOO RECEIVE DIAGNOSTIC RESULTS                             |
|        1D MMMMMMMMMM SEND DIAGNOSTIC                                        |
|        1E OO  OO OO  PREVENT ALLOW MEDIUM REMOVAL                           |
|        1F                                                                   |
|        20 V   VV V                                                          |
|        21 V   VV V                                                          |
|        22 V   VV V                                                          |
|        23 V   VV V                                                          |
|        24 V   VVM    SET WINDOW                                             |
|        25       O    GET WINDOW                                             |
|        25 M   M  M   READ CAPACITY                                          |
|        25      M     READ CD-ROM CAPACITY                                   |
|        26 V   VV                                                            |
|        27 V   VV                                                            |
|        28          O GET MESSAGE(10)                                        |
|        28 M   MMMM   READ(10)                                               |
|        29 V   VV O   READ GENERATION                                        |
|        2A          O SEND MESSAGE(10)                                       |
|        2A       O    SEND(10)                                               |
|        2A O   M  M   WRITE(10)                                              |
|        2B  O         LOCATE                                                 |
|        2B         O  POSITION TO ELEMENT                                    |
|        2B O   OO O   SEEK(10)                                               |
|        2C V      O   ERASE(10)                                              |
|        2D V   O  O   READ UPDATED BLOCK                                     |
|        2E O   O  O   WRITE AND VERIFY(10)                                   |
|        2F O   OO O   VERIFY(10)                                             |
|        30 O   OO O   SEARCH DATA HIGH(10)                                   |
|        31       O    OBJECT POSITION                                        |
|        31 O   OO O   SEARCH DATA EQUAL(10)                                  |
|        32 O   OO O   SEARCH DATA LOW(10)                                    |
|        33 O   OO O   SET LIMITS(10)                                         |
|        34       O    GET DATA BUFFER STATUS                                 |
|        34 O   OO O   PRE-FETCH                                              |
|        34  O         READ POSITION                                          |
|        35 O   OO O   SYNCHRONIZE CACHE                                      |
|        36 O   OO O   LOCK UNLOCK CACHE                                      |
|        37 O      O   READ DEFECT DATA(10)                                   |
|        38     O  O   MEDIUM SCAN                                            |
|        39 OOOOOOOO   COMPARE                                                |
|        3A OOOOOOOO   COPY AND VERIFY                                        |
|        3B OOOOOOOOOO WRITE BUFFER                                           |
|        3C OOOOOOOOOO READ BUFFER                                            |
|        3D     O  O   UPDATE BLOCK                                           |
|        3E O   OO O   READ LONG                                              |
|        3F O   O  O   WRITE LONG                                             |
+=============================================================================+


Table D.2 (continued)
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                       Device column key  |
|           .T - SEQUENTIAL ACCESS DEVICE                  M = Mandatory      |
|           . L - PRINTER DEVICE                           O = Optional       |
|           .  P - PROCESSOR DEVICE                        V = Vendor-specific|
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE        R = Reserved       |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
|        OP DTLPWRSOMC Description                                            |
|----------+----------+-------------------------------------------------------|
|        40 OOOOOOOOOO CHANGE DEFINITION                                      |
|        41 O          WRITE SAME                                             |
|        42      O     READ SUB-CHANNEL                                       |
|        43      O     READ TOC                                               |
|        44      O     READ HEADER                                            |
|        45      O     PLAY AUDIO(10)                                         |
|        46                                                                   |
|        47      O     PLAY AUDIO MSF                                         |
|        48      O     PLAY AUDIO TRACK INDEX                                 |
|        49      O     PLAY TRACK RELATIVE(10)                                |
|        4A                                                                   |
|        4B      O     PAUSE RESUME                                           |
|        4C OOOOOOOOOO LOG SELECT                                             |
|        4D OOOOOOOOOO LOG SENSE                                              |
|        4E                                                                   |
|        4F                                                                   |
|        50                                                                   |
|        51                                                                   |
|        52                                                                   |
|        53                                                                   |
|        54                                                                   |
|        55 OOO OOOOOO MODE SELECT(10)                                        |
|        56                                                                   |
|        57                                                                   |
|        58                                                                   |
|        59                                                                   |
|        5A OOO OOOOOO MODE SENSE(10)                                         |
|        5B                                                                   |
|        5C                                                                   |
|        5D                                                                   |
|        5E                                                                   |
|        5F                                                                   |
+=============================================================================+


Table D.2 (concluded)
+=============================================================================+
|           D - DIRECT ACCESS DEVICE                       Device column key  |
|           .T - SEQUENTIAL ACCESS DEVICE                  M = Mandatory      |
|           . L - PRINTER DEVICE                           O = Optional       |
|           .  P - PROCESSOR DEVICE                        V = Vendor-specific|
|           .  .W - WRITE ONCE READ MULTIPLE DEVICE        R = Reserved       |
|           .  . R - READ ONLY (CD-ROM) DEVICE                                |
|           .  .  S - SCANNER DEVICE                                          |
|           .  .  .O - OPTICAL MEMORY DEVICE                                  |
|           .  .  . M - MEDIA CHANGER DEVICE                                  |
|           .  .  .  C - COMMUNICATION DEVICE                                 |
|           .  .  .  .                                                        |
|        OP DTLPWRSOMC Description                                            |
|----------+----------+-------------------------------------------------------|
|        A0                                                                   |
|        A1                                                                   |
|        A2                                                                   |
|        A3                                                                   |
|        A4                                                                   |
|        A5         M  MOVE MEDIUM                                            |
|        A5      O     PLAY AUDIO(12)                                         |
|        A6         O  EXCHANGE MEDIUM                                        |
|        A7                                                                   |
|        A8          O GET MESSAGE(12)                                        |
|        A8     OO O   READ(12)                                               |
|        A9      O     PLAY TRACK RELATIVE(12)                                |
|        AA          O SEND MESSAGE(12)                                       |
|        AA     O  O   WRITE(12)                                              |
|        AB                                                                   |
|        AC        O   ERASE(12)                                              |
|        AD                                                                   |
|        AE     O  O   WRITE AND VERIFY(12)                                   |
|        AF     OO O   VERIFY(12)                                             |
|        B0     OO O   SEARCH DATA HIGH(12)                                   |
|        B1     OO O   SEARCH DATA EQUAL(12)                                  |
|        B2     OO O   SEARCH DATA LOW(12)                                    |
|        B3     OO O   SET LIMITS(12)                                         |
|        B4                                                                   |
|        B5                                                                   |
|        B5         O  REQUEST VOLUME ELEMENT ADDRESS                         |
|        B6                                                                   |
|        B6         O  SEND VOLUME TAG                                        |
|        B7        O   READ DEFECT DATA(12)                                   |
|        B8                                                                   |
|        B8         O  READ ELEMENT STATUS                                    |
|        B9                                                                   |
|        BA                                                                   |
|        BB                                                                   |
|        BC                                                                   |
|        BD                                                                   |
|        BE                                                                   |
|        BF                                                                   |
+=============================================================================+


                                                                        
                               

Annex E
(informative)

Vendor identification


This annex contains the list of SCSI-2 vendor identifications (see
table E.1) as of the date of this document.  The purpose of this list
is to help avoid redundant usage of vendor identifications.  Task Group
X3T9.2 of Accredited Standards Committee X3 maintains an informal list
of vendor identifications currently in use.  Please contact the
chairman of X3T9.2 prior to using a new vendor identification to avoid
conflicts.

                    Table E.1 - Vendor identification list
+==========-=====================================================================+
|     ID   |                          Organization                               |
|----------+---------------------------------------------------------------------|
| 3M       |  3M Company                                                         |
| ACL      |  Automated Cartridge Librarys, Inc.                                 |
| ADAPTEC  |  Adaptec                                                            |
| ADSI     |  Adaptive Data Systems, Inc. (a Western Digital subsidiary)         |
| AMCODYNE |  Amcodyne                                                           |
| ANAMATIC |  Anamartic Limited (England)                                        |
| ANCOT    |  ANCOT Corp.                                                        |
| ANRITSU  |  Anritsu Corporation                                                |
| APPLE    |  Apple Computer, Inc.                                               |
| ARCHIVE  |  Archive                                                            |
| ASACA    |  ASACA Corporation                                                  |
| ASPEN    |  Aspen Peripherals                                                  |
| AST      |  AST Research                                                       |
| ASTK     |  Alcatel STK A/S                                                    |
| AT&T     |  AT&T                                                               |
| ATARI    |  Atari Corporation                                                  |
| ATTO     |  ATTO Technology Inc.                                               |
| ATX      |  Alphatronix                                                        |
| AVR      |  Advanced Vision Research                                           |
| BALLARD  |  Ballard Synergy Corp.                                              |
| BERGSWD  |  Berg Software Design                                               |
| BEZIER   |  Bezier Systems, Inc.                                               |
| BULL     |  Bull Peripherals Corp.                                             |
| CalComp  |  CalComp, A Lockheed Company                                        |
| CALIPER  |  Caliper (California Peripheral Corp.)                              |
| CAST     |  Advanced Storage Tech                                              |
| CDC      |  Control Data or MPI                                                |
| CDP      |  Columbia Data Products                                             |
| CHEROKEE |  Cherokee Data Systems                                              |
| CHINON   |  Chinon                                                             |
| CIE&YED  |  YE Data, C.Itoh Electric Corp.                                     |
| CIPHER   |  Cipher Data Products                                               |
+================================================================================+


Table E.1 - (continued)
+==========-=====================================================================+
|   ID     |                          Organization                               |
|----------+---------------------------------------------------------------------|
| Ciprico  |  Ciprico, Inc.                                                      |
| CMD      |  CMD Technology                                                     |
| CNGR SFW |  Congruent Software, Inc.                                           |
| COGITO   |  Cogito                                                             |
| COMPORT  |  Comport Corp.                                                      |
| COMPSIG  |  Computer Signal Corporation                                        |
| CONNER   |  Conner Peripherals                                                 |
| CPU TECH |  CPU Technology, Inc                                                |
| CREO     |  CREO Products Inc.                                                 |
| CROSFLD  |  Crosfield Electronics                                              |
| CSM, INC |  Computer SM, Inc.                                                  |
| CYGNET   |  Cygnet Systems, Inc.                                               |
| DATABOOK |  Databook, Inc.                                                     |
| DATACOPY |  Datacopy Corp.                                                     |
| DATAPT   |  Datapoint Corp.                                                    |
| DEC      |  Digital Equipment                                                  |
| DELPHI   |  Delphi Data Div. of Sparks Industries, Inc.                        |
| DENON    |  Denon/Nippon Columbia                                              |
| DEST     |  DEST Corp.                                                         |
| DGC      |  Data General Corp.                                                 |
| DIGIDATA |  Digi-Data Corporation                                              |
| DILOG    |  Distributed Logic Corp.                                            |
| DISC     |  Document Imaging Systems Corp.                                     |
| DPT      |  Distributed Processing Technology                                  |
| DSM      |  Deterner Steuerungs- und Maschinenbau GmbH & Co.                   |
| DTC QUME |  Data Technology Qume                                               |
| DXIMAGIN |  DX Imaging                                                         |
| EMULEX   |  Emulex                                                             |
| EPSON    |  Epson                                                              |
| EXABYTE  |  Exabyte Corp.                                                      |
| FILENET  |  FileNet Corp.                                                      |
| FUJI     |  Fuji Electric Co., Ltd. (Japan)                                    |
| FUJITSU  |  Fujitsu                                                            |
| FUTURED  |  Future Domain Corp.                                                |
| Gen_Dyn  |  General Dynamics                                                   |
| GIGATAPE |  GIGATAPE GmbH                                                      |
| GIGATRND |  GigaTrend Incorporated                                             |
| Goidelic |  Goidelic Precision, Inc.                                           |
| GOULD    |  Gould                                                              |
| HITACHI  |  Hitachi America Ltd or Nissei Sangyo America Ltd                   |
| HONEYWEL |  Honeywell Inc.                                                     |
| HP       |  Hewlett Packard                                                    |
| IBM      |  International Business Machines                                    |
| ICL      |  ICL                                                                |
| IDE      |  International Data Engineering, Inc.                               |
| IGR      |  Intergraph Corp.                                                   |
| IMPLTD   |  Integrated Micro Products Ltd.                                     |
| IMPRIMIS |  Imprimis Technology Inc.                                           |
| INSITE   |  Insite Peripherals                                                 |
| IOC      |  I/O Concepts, Inc.                                                 |
| IOMEGA   |  Iomega                                                             |
+================================================================================+



Table E.1 - (continued)
+==========-=====================================================================+
|   ID     |                          Organization                               |
|----------+---------------------------------------------------------------------|
| ISi      |  Information Storage inc.                                           |
| ITC      |  International Tapetronics Corporation                              |
| JVC      |  JVC Information Products Co.                                       |
| KENNEDY  |  Kennedy Company                                                    |
| KODAK    |  Eastman Kodak                                                      |
| KONAN    |  Konan                                                              |
| KONICA   |  Konica Japan                                                       |
| LAPINE   |  Lapine Technology                                                  |
| LASERDRV |  LaserDrive Limited                                                 |
| LASERGR  |  Lasergraphics, Inc.                                                |
| LMS      |  Laser Magnetic Storage International Company                       |
| MATSHITA |  Matsushita                                                         |
| MAXTOR   |  Maxtor Corp.                                                       |
| MaxOptix |  Maxoptix Corp.                                                     |
| MDI      |  Micro Design International, Inc.                                   |
| MELA     |  Mitsubishi Electronics America                                     |
| MELCO    |  Mitsubishi Electric (Japan)                                        |
| MEMREL   |  Memrel Corporation                                                 |
| MEMTECH  |  MemTech Technology                                                 |
| MICROBTX |  Microbotics Inc.                                                   |
| MICROP   |  Micropolis                                                         |
| MICROTEK |  Microtek Storage Corp                                              |
| MINSCRIB |  Miniscribe                                                         |
| MITSUMI  |  MITSUMI Electric Co., Ltd.                                         |
| MOTOROLA |  Motorola                                                           |
| MST      |  Morning Star Technologies, Inc.                                    |
| NAI      |  North Atlantic Industries                                          |
| NatInst  |  National Instruments                                               |
| NatSemi  |  National Semiconductor Corp.                                       |
| NCL      |  NCL America                                                        |
| NCR      |  NCR Corporation                                                    |
| NEC      |  NEC                                                                |
| NISCA    |  NISCA Inc.                                                         |
| NKK      |  NKK Corp.                                                          |
| NT       |  Northern Telecom                                                   |
| OCE      |  Oce Graphics                                                       |
| OMI      |  Optical Media International                                        |
| OMNIS    |  OMNIS Company (FRANCE)                                             |
| OPTIMEM  |  Cipher/Optimem                                                     |
| OPTOTECH |  Optotech                                                           |
| ORCA     |  Orca Technology                                                    |
| OSI      |  Optical Storage International                                      |
| OTL      |  OTL Engineering                                                    |
| PASCOsci |  Pasco Scientific                                                   |
| PERTEC   |  Pertec Peripherals Corporation                                     |
| PFTI     |  Performance Technology Inc.                                        |
| PIONEER  |  Pioneer Electronic Corp.                                           |
| PRAIRIE  |  PrairieTek                                                         |
| PRESOFT  |  PreSoft Architects                                                 |
| PRESTON  |  Preston Scientific                                                 |
| PRIAM    |  Priam                                                              |
| PRIMAGFX |  Primagraphics Ltd                                                  |
+================================================================================+


Table E.1 - (concluded)
+==========-=====================================================================+
|   ID     |                          Organization                               |
|----------+---------------------------------------------------------------------|
| PTI      |  Peripheral Technology Inc.                                         |
| QUALSTAR |  Qualstar                                                           |
| QUANTEL  |  Quantel Ltd.                                                       |
| QUANTUM  |  Quantum Corp.                                                      |
| R-BYTE   |  R-Byte Inc.                                                        |
| RACALREC |  Racal Recorders                                                    |
| RADSTONE |  Radstone Technology                                                |
| RGI      |  Raster Graphics, Inc.                                              |
| RICOH    |  Ricoh                                                              |
| RODIME   |  Rodime                                                             |
| RTI      |  Reference Technology                                               |
| SANKYO   |  Sankyo Seiki                                                       |
| SANYO    |  SANYO Electric Co., Ltd.                                           |
| SCREEN   |  Dainippon Screen Mfg. Co., Ltd.                                    |
| SEAGATE  |  Seagate                                                            |
| SEQUOIA  |  Sequoia Advanced Technologies, Inc.                                |
| Shinko   |  Shinko Electric Co., Ltd.                                          |
| SIEMENS  |  Siemens                                                            |
| SII      |  Seiko Instruments Inc.                                             |
| SMS      |  Scientific Micro Systems/OMTI                                      |
| SNYSIDE  |  Sunnyside Computing Inc.                                           |
| SONIC    |  Sonic Solutions                                                    |
| SONY     |  Sony Corporation Japan                                             |
| SPECTRA  |  Spectra Logic, a Division of Western Automation Labs, Inc.         |
| SPERRY   |  Sperry (now Unisys Corp.)                                          |
| STK      |  Storage Technology Corporation                                     |
| SUMITOMO |  Sumitomo Electric Industries, Ltd.                                 |
| SUN      |  Sun Microsystems, Inc.                                             |
| SyQuest  |  SyQuest Technology, Inc.                                           |
| SYSGEN   |  Sysgen                                                             |
| T-MITTON |  Transmitton England                                                |
| TALARIS  |  Talaris Systems, Inc.                                              |
| TALLGRAS |  Tallgrass Technologies                                             |
| TANDBERG |  Tandberg Data A/S                                                  |
| TANDON   |  Tandon                                                             |
| TEAC     |  TEAC Japan                                                         |
| TECOLOTE |  Techolote Designs                                                  |
| TEGRA    |  Tegra Varityper                                                    |
| Tek      |  Tektronix                                                          |
| TI-DSG   |  Texas Instruments                                                  |
| TOSHIBA  |  Toshiba Japan                                                      |
| ULTRA    |  UltraStor Corporation                                              |
| UNISYS   |  Unisys                                                             |
| USDC     |  US Design Corp.                                                    |
| VERBATIM |  Verbatim Corporation                                               |
| VRC      |  Vermont Research Corp.                                             |
| WangDAT  |  WangDAT                                                            |
| WANGTEK  |  Wangtek                                                            |
| WDIGTL   |  Western Digital                                                    |
| WEARNES  |  Wearnes Technology Corporation                                     |
| XEBEC    |  Xebec Corporation                                                  |
+================================================================================+





Index

3rdPty bit. . . . . . . . . . . . . . . . . . . . . 188, 191, 253, 254, 398-401
ABORT . . . . 3, 36, 38, 41, 43, 44, 49, 52, 55-59, 64, 76, 79, 80, 82, 85, 422
ABORT TAG . . . . . . . . . . . . . . . . 3, 41, 52, 55, 56, 58, 64, 76, 79, 85
absolute CD-ROM address field . . . . . . . . . . . . . . . . . . . . .319, 324
access bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394-396
active format field . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
active I/O process. . . . . . . . . . . . . . . . . . . . . . . . . . 3, 51, 54
active notch field. . . . . . . . . . . . . . . . . . . . . . . . 210, 218, 221
active partition field. . . . . . . . . . . . . . . . . . . . . . . . .266, 267
actual retry count field. . . . . . . . . . . . . . . . . . . . . . . . . . 126
additional length field . . . . . . . . . . . . . . . . . . . . . . . . . . 107
additional partitions defined field . . . . . . . . . . . . . . . . . . . . 269
additional sense code field . . . . . . . . . . . . . . . . . . . 123, 124, 392
additional sense code qualifier . . . . . . . . . . . . .123, 124, 302, 392-395
ADDRESS MARK NOT FOUND FOR DATA FIELD . . . . . . . . . . . . . . . . .130, 430
ADDRESS MARK NOT FOUND FOR ID FIELD . . . . . . . . . . . . . . . . . .130, 430
address to translate field. . . . . . . . . . . . . . . . . . . . . . . 206-208
ADR field . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302, 318, 324
advanced scan algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . 362
AEN . . . . . . . . . . . . . . .xxv, 5, 81-83, 89, 95, 126, 127, 150, 151, 290
AENC bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82, 107
AFC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282, 283
Allocation Length . . 67, 72, 73, 75, 95, 104, 107, 111, 112, 115, 117-119, 121,
                      122, 124, 155-159, 183, 185, 289, 314, 316, 323, 341, 343, 
                      364, 366, 388, 389, 391, 396, 397, 414, 415
allocation length field . . . . . . . . . . . . . . . . . . . . . . . . 75, 111
alternate sector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
alternate sectors per zone field. . . . . . . . . . . . . . . . . . . . . . 218
alternate track . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
alternate tracks per logical unit field . . . . . . . . . . . . . . . . . . 218
alternate tracks per zone . . . . . . . . . . . . . . . . . . . . . . . 216-218
alternate volume tag. . . . . . . . . . . . . . . . . . . . . 382, 391-395, 402
alternate volume tag information field. . . . . . . . . . . . . . . . . . . 391
ALTSEC bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
ALTTRK bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
ANSI-approved version field . . . . . . . . . . . . . . . . . . . . . . . . 106
APRVal. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .327, 328
Arbitration Delay . . . . . . . . . . . . . . . . . . . . .3, xxxi, 36, 42, 421
ARBITRATION Phase . . . . . . . . . . . . . .33, 34, 36, 37, 41-43, 59, 86, 421
ARRE bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
ASA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
ASC . . . . . . . . . . . . . . 1, xxii, xxvii, 106, 124, 130-133, 135, 429-434
ASCII forms control . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
ASCII Implemented Operating Definition Page . . . . . . . . . . . . . . . . 155
ASCII information field . . . . . . . . . . . . . . . . . . . . . . . . . . 156
ASCII operating definition description data field . . . . . . . . . . . . . 155
ASCQ. . . . . . . . . . . . . . . . . . xxii, xxvii, 124, 130-133, 135, 429-434
Assertion Period. . . . . . . . . . . . . . . . . . . . . . 36, 38, 45, 46, 425
asynchronous event notification . . xxxi, 5, 27, 56, 61, 81-83, 107, 126, 145, 
                                    149, 151, 238, 241, 290
attention condition . . . . . . . . 33, 48-51, 56, 59, 63, 79, 81, 82, 85, 88, 
                                    89, 94, 95, 104, 110, 112, 128, 138, 142, 
                                    148, 150, 151, 188, 230, 253, 264
AUDIO PLAY OPERATION IN PROGRESS. . . . . . . . . . . . . . . . . 130, 318, 429
AUDIO PLAY OPERATION PAUSED . . . . . . . . . . . . . . . . . . . 130, 318, 429
AUDIO PLAY OPERATION STOPPED DUE TO ERROR . . . . . . . . . . . . 130, 318, 429
AUDIO PLAY OPERATION SUCCESSFULLY COMPLETED . . . . . . . . . . . 130, 318, 429
audio playback rate valid . . . . . . . . . . . . . . . . . . . . . . . . . 328
audio status field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
auto bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .339, 345
autofd. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280, 282
automatic line feed . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
automatic read reallocation . . . . . . . . . . . . . . . . . . . . . . . . 223
automatic velocity control. . . . . . . . . . . . . . . . . . . . . . . . . 267
automatic write reallocation. . . . . . . . . . . . . . . . . . . . . . . . 222
available data buffer field . . . . . . . . . . . . . . . . . . . . . . . . 342
AVC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266, 267
AVolTag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391-393
AWG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 9, 425
AWRE bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203, 223, 231
basic measurement unit field. . . . . . . . . . . . . . . . . . . . . . . . 354
baud rate field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
beginning of partition. . . . . . . . . . . . . . . . . . . . . . . . . . . 250
BEGINNING-OF-PARTITION/MEDIUM DETECTED. . . . . . . . . . . . . . . . .130, 429
BIS . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249, 266, 267, 363
bit ordering field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
bit pointer field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
bit pointer valid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
bits per character field. . . . . . . . . . . . . . . . . . . . . . . . . . 286
bits per pixel field. . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
BLANK CHECK . . . . .102, 129, 247, 257, 294, 304, 307, 326, 358, 367, 370, 376
blank verify. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .299, 370
BlkVfy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299, 370, 371
block address type. . . . . . . . . . . . . . . . . . . . . . . . . . .245, 249
block descriptor. .  xxii, 113, 115, 116, 124, 146-148, 161, 208, 209, 246, 
                     259, 263, 264, 279, 280, 298, 325, 326, 337, 349, 351, 
                     353, 375, 376, 404, 418
block descriptor length . . . . . . . . . . . . . . . . . . . . . . . . . . 147
block device logical block address field. . . . . . . . . . . . . . . . . . .99
block device number of blocks field . . . . . . . . . . . . . . . . . . . . .99
block identifiers supported . . . . . . . . . . . . . . . . . . . . . . . . 267
block length field. . . . . . . . . . . . . . . . . . . . . .101, 124, 148, 246
block length in bytes . . . . . . . . . . . . . . . . . . . .182, 183, 246, 259
block position unknown. . . . . . . . . . . . . . . . . . . . . . . . . . . 250
BLOCK SEQUENCE ERROR. . . . . . . . . . . . . . . . . . . . . . . . . .130, 430
BOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236-240, 249, 250
BPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .249, 250
BPV bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
brightness field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
BT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .245, 249
buffer capacity field . . . . . . . . . . . . . . . . . . . . . . 119, 120, 137
buffer empty ratio field. . . . . . . . . . . . . . . . . . . . . . . . . . 152
buffer full ratio field . . . . . . . . . . . . . . . . . . . . . . . . . . 152
buffer ID field . . . . . . . . . . . . . . . . . . . . . . . . . . . .119, 137
buffer offset field . . . . . . . . . . . . . . . . . . . . . . . . . .119, 120
Buffer Over-Run/Under-Run Page. . . 143, 208, 262, 279, 291, 325, 352, 375, 418
buffered mode field . . . . . . . . . . . . . . . . . . . . . . . 259, 263, 280
Bus Clear Delay . . . . . . . . . . . . . . . . . . . . 36, 41-43, 51, 421, 423
BUS DEVICE RESET. . . . . . .3, 41, 49, 50, 55, 57-59, 65, 67-69, 76, 79, 82, 
                             83, 85, 88, 112, 116, 132, 179, 189-191, 254, 
                             399-401, 431
Bus Free Delay. . . . . . . . . . . . . . . . . . . . . . . . . 36, 37, 42, 421
BUS FREE Phase. . 3, 4, 36, 37, 41-44, 49-52, 57-60, 64, 66, 68, 69, 77, 84, 
                  86, 421, 423
Bus Set Delay . . . . . . . . . . . . . . . . . . . . . . . . . 36, 37, 42, 421
Bus Settle Delay. . . . . . . . . . . . . . . . . . .36, 37, 41-44, 49, 421-423
BUSY status . . . . . . . . . . . . . . . . . . . . . 82-85, 127, 287, 339, 411
BytChk bit. . . . . . . . . . . . . . . . . . . . . . . 103, 200, 203, 370, 374
byte check. . . . . . . . . . . . . . . . . . . . . . . 103, 200, 203, 370, 374
byte count of descriptor data available field . . . . . . . . . . . . . . . 391
byte count of report available field. . . . . . . . . . . . . . . . . . . . 389
byte transfer length field. . . . . . . . . . . . . . . . . . . . . . .185, 204
C/D bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Cable Skew Delay. . . . . . . . . . . . . . . . . . . . 36-38, 45, 46, 422, 425
Caching Page  . . . . . . . . . . . . . . . . . . . . . . . . . . 210, 327, 377
CAF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266, 267
CANNOT READ MEDIUM - INCOMPATIBLE FORMAT. . . . . . . . . . . . . . . .130, 431
CANNOT READ MEDIUM - UNKNOWN FORMAT . . . . . . . . . . . . . . . . . .130, 431
CAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
CARTRIDGE FAULT . . . . . . . . . . . . . . . . . . . . . . . . . . . .130, 432
cat bit . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxi, 96, 99, 102
catenate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .99
cause field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxii, 144
CD-ROM Audio Control Page . . . . . . . . . . . . . . . . . . . . . . . . . 327
CD-ROM devices. xxx, 124, 297, 299, 304, 305, 313, 325, 326, 328, 330, 336, 357
CD-ROM Page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 327
change active format. . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
change active partition . . . . . . . . . . . . . . . . . . . . . . . . . . 266
CHANGE DEFINITION command . . . . . . . . . . . . xxi, 79, 93-95, 104, 156, 164
change partition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
CHANGED OPERATING DEFINITION. . . . . . . . . . . . . . . . . . . .79, 130, 432
channel bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .277, 283
channel volume control. . . . . . . . . . . . . . . . . . . . . . . . . . . 329
CHECK CONDITION status. . . . . 3, 47, 49, 52, 60, 71, 75, 80-82, 88, 92, 95,
                                98, 99, 101, 102, 104, 108-113, 115-117, 119, 
                                122, 125-127, 134, 135, 137, 139, 140, 142, 
                                143, 145, 149, 153, 162, 166, 169, 170, 
                                172-174, 176, 182-185, 187, 188, 190, 191, 
                                193, 194, 197, 199, 200, 203-206, 218, 223-226,
                                228, 230, 233, 240, 243-247, 251-253, 255-262, 
                                267, 271, 276-278, 287, 293, 302-304, 306, 307, 
                                309, 310, 312, 323, 331-335, 339, 347-349, 354, 
                                358, 363, 367, 370, 371, 374, 376, 378, 384, 
                                385, 386, 398-401, 407, 408, 411
CIRC UNRECOVERED ERROR. . . . . . . . . . . . . . . . . . . . . . . . .130, 430
CLEANING CARTRIDGE INSTALLED. . . . . . . . . . . . . . . . . . . . . .130, 431
CLEAR QUEUE . . . . . . . . . . . . . . . . . 3, 41, 55, 56, 58, 59, 76, 79, 85
clear to send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
CmpLst bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . 170, 171, 173
code field. . . xxii, xxiv, 73, 97, 104, 112, 116, 121, 123-125, 139-141, 143, 
                144, 148, 149, 156, 158, 208, 209, 256, 263, 264, 279, 280, 
                298, 325, 326, 353, 375, 376, 388, 391, 392, 397, 398, 401, 
                402, 404, 418
command code. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .73, 74
COMMAND COMPLETE. . . . . . .3, 41, 52, 55, 59, 62, 75, 77, 78, 83, 86, 94, 423
command data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125, 317
command descriptor block. . . xxi, 3, 50, 54, 67, 72-77, 80, 86, 99-102, 107, 
                              118, 122, 124, 125, 128, 137, 140, 141, 146-148, 
                              156-158, 173, 178, 182, 188, 195, 198, 199, 219, 
                              243-245, 255, 258, 261, 272, 313, 362, 389
COMMAND Phase . . . . . . . 41, 48, 50, 61, 75, 77, 83, 127, 130, 422, 423, 432
COMMAND PHASE ERROR . . . . . . . . . . . . . . . . . . . . . . . . . .130, 432
command queue . . . . . . . . . . . . . . . . . . . . . 3, 4, 64, 67, 77, 83-86
COMMAND SEQUENCE ERROR. . . . . . . . . . . . . . . . . . . . . . . . .130, 431
COMMAND TERMINATED status . . . . . . . . . . 61, 67, 76, 82, 83, 122, 126, 128
command-specific information field. . . . . . . . . . . . . . 98, 124, 187, 194
COMMANDS CLEARED BY ANOTHER INITIATOR . . . . . . . . . . 59, 85, 130, 150, 431
communications devices. . . . . . .2, xxvii, xxix, xxx, xxxi, 411-413, 418, 419
COMPARE command . . . . . . . . . . . . . . . . . . . . . . . . . . xxi, 95, 97
complete list . . . . . . . . . . . . . . . . . . . . . . . . . . . . .171, 184
CONDITION MET status. . . . . . . . . . . . . . . . . . . 75, 77, 178, 193, 363
connect time limit field. . . . . . . . . . . . . . . . . . . . . . . . .3, 153
connection. . . . . 3, 4, 6, 9, 27, 36, 41, 57-60, 63, 64, 79, 80, 85, 153, 297
contingent allegiance . .xxxi, 3, 58, 59, 61, 62, 64, 67, 76, 77, 79-85, 88, 
                         92, 95, 122, 149-151, 238
contrast field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
control . . . . . .xxi, xxii, xxiv, xxv, xxxii, 3, 6, 33, 37, 42, 44, 45, 67, 
                   72, 73, 75, 77, 81, 84-86, 93, 95, 96, 103, 104, 109-112, 
                   114, 115, 117, 118, 121, 122, 134-136, 138, 141-143, 145,
                   149, 153, 162-164, 169, 170, 173, 177-183, 185-187, 189, 
                   192, 193, 196-205, 210, 213, 223, 230, 243-246, 248, 249, 
                   251-256, 258, 259, 261, 265, 267, 273, 275-278, 280, 281, 
                   282, 283, 287-290, 292, 293, 300-302, 306-314, 316-318, 320, 
                   321, 323, 324, 327, 329, 337, 338, 341, 343, 345, 347, 
                   349-351, 353, 360-362, 364-374, 377, 378, 380, 384-388, 
                   396, 398, 399, 401, 411, 414-417, 419, 439
Control Field . . . . . . . . . . . . xxi, 75, 109-111, 115, 302, 324, 337, 338
Control Mode Page . . . xxii, 67, 81, 84, 85, 142, 143, 145, 149, 210, 265, 
                        280, 327, 353, 377, 419
COPY ABORTED. . . . . . . . . . . . . . . . . . . . . . . . . .98, 99, 101, 129
COPY AND VERIFY command . . . . . . . . . . . . . . . . xxi, 103, 123, 124, 231
COPY CANNOT EXECUTE SINCE HOST CANNOT DISCONNECT. . . . . . . . . . . .130, 431
COPY command. . . . . . . xxi, xxxii, 5, 27, 95-99, 102-104, 188, 191, 254, 287
COPY function code field. . . . . . . . . . . . . . . . . . . . . . . . . . .97
CORRCT bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
correct . . . . . . . 4, 43, 78, 83, 86, 125, 128, 130, 167, 244, 335, 429, 430
count basis field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
count field . . . . . . . . . . . . . 102, 126, 224-228, 231, 256-258, 335, 348
CP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
CTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .285, 286
current I/O process . . . . . . . . . . . . . . . 3, 41, 58, 59, 65, 67, 77, 84
current operating definition field. . . . . . . . . . . . . . . . . . . . . 157
cylinder skew factor field. . . . . . . . . . . . . . . . . . . . . . . . . 218
data buffer recovery. . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
data buffer status descriptor . . . . . . . . . . . . . . . . . . . . . . . 341
data bytes per physical sector field. . . . . . . . . . . . . . . . . . . . 218
data bytes per sector field . . . . . . . . . . . . . . . . . . . . . . . . 214
data defect list. . . . . . . . . . . . . . . . . . . . . .xxiii, 170, 184, 365
DATA IN Phase . . .48, 61, 75, 77, 118, 119, 182, 277, 292, 313, 324, 342, 349, 
                   367, 422, 423
DATA OUT Phase. . .48, 72, 74, 81, 96, 109, 110, 113, 125, 137, 170-172, 
                   275-277, 290, 292, 350, 351, 362, 369, 416, 423
DATA PATH FAILURE (SHOULD USE 40 NN). . . . . . . . . . . . . . . . . .130, 432
DATA PHASE ERROR. . . . . . . . . . . . . . . . . . . . . . . . . . . .130, 432
DATA PROTECT. . . . . . . . . . . . . . . . . 128, 166, 191, 197, 240, 294, 358
Data Release Delay. . . . . . . . . . . . . . . . . . . . . . . . . .36, 37, 49
DATA SYNCHRONIZATION MARK ERROR . . . . . . . . . . . . . . . . . . . .130, 430
data transfer disconnect control. . . . . . . . . . . . . . . . . . . xxii, 153
data transfer element . . . xxvii, 379-381, 384, 386, 388, 395, 396, 405, 406, 
                            408, 410
data type qualifier field . . . . . . . . . . . . . . . . . . . . . . . . . 349
DBD bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
DBR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266, 267
DC bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .100, 101
DCR bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224, 271
DCRT bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
default operating definition field. . . . . . . . . . . . . . . . . . . . . 157
defect descriptor . . . . . . . . . . . . . . . . xxii, xxiii, 170-175, 184-187
DEFECT LIST ERROR . . . . . . . . . . . . . . . . . . . . . . . . 130, 173, 431
DEFECT LIST ERROR IN GROWN LIST . . . . . . . . . . . . . . . . . . . .130, 431
DEFECT LIST ERROR IN PRIMARY LIST . . . . . . . . . . . . . . . . . . .130, 431
defect list format field. . . . . . . . . . . . . . . . . . . . . . . .172, 184
defect list length field. . . . . . . . . . . . . . . . . . . . . 173, 184, 187
DEFECT LIST NOT AVAILABLE . . . . . . . . . . . . . . . . . . . . . . .130, 431
DEFECT LIST NOT FOUND . . . . . . . . . . . . . . . 130-132, 173, 183, 184, 431
DEFECT LIST UPDATE FAILURE. . . . . . . . . . . . . . . . . . . . . . .130, 431
defect logical block address. . . . . . . . . . . . . . . . . . . . . .186, 187
definition parameter field. . . . . . . . . . . . . . . . . . . . . xxi, 93, 94
demand read retention priority field. . . . . . . . . . . . . . . . . . . . 211
Deskew Delay. . . . . . . . . . . . . . . . . .36, 37, 39, 45, 46, 49, 422, 425
destination count . . . . . . . . . . . . . . . . . . . . . . . . . . .100, 101
destination logical block address field . . . . . . . . . . . . . . . . . . 100
device off-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
device-specific parameter . . . . . . . xxiv, xxv, 146, 147, 263, 272, 279, 326
DevOfl bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
DIAGNOSTIC FAILURE ON COMPONENT NN (80H-FFH). . . . . . . . . . . . . .130, 432
Diagnostic Parameters . 7, 74, 134, 138, 139, 206, 262, 279, 291, 325, 352, 
                        375, 404, 418
direct-access devices . xxii, xxx, xxxi, 6, 97, 124, 144, 148, 161-163, 165, 
                        168, 206, 208-210, 220, 229, 232, 233, 297, 357, 358
disable block descriptors . . . . . . . . . . . . . . . . . . . . . . . . . 115
disable certification . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
disable correction. . . . . . . . . . . . . . . . . . . . . . . . . . .224, 271
disable page out. . . . . . . . . . . . . . . . . . . . . . . . . . . .163, 181
disable pre-fetch transfer length field . . . . . . . . . . . . . . . . . . 212
disable primary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
disable queuing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
disable save. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
disable saving parameters . . . . . . . . . . . . . . . . . . . . . . . . . 173
disable transfer on error . . . . . . . . . . . . . . . . . . . . . . .223, 271
disable update. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
DISCONNECT. . . . . .3, xxii, 3, 5, 37, 41, 47, 49, 50, 52, 55, 57, 59, 60, 
                     62, 76-79, 84, 86, 122, 126, 130, 149, 152, 153, 210, 
                     265, 280, 287, 288, 327, 353, 377, 411, 412, 419, 421, 431
disconnect time limit field . . . . . . . . . . . . . . . . . . . . . . .3, 153
Disconnect-Reconnect Page . .3, xxii, 60, 149, 152, 210, 265, 280, 327, 353, 
                             377, 419
Disconnection Delay . . . . . . . . . . . . . . . . . . . . . . . . .36, 37, 59
displacement field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
download microcode. . . . . . . . . . . . . . . . . . . . . . . . . . .137, 138
DPO bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .163, 181
DPOFUA bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . 209, 326, 376
DPRY bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
DQue bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85, 150
drive step pulse width field. . . . . . . . . . . . . . . . . . . . . . . . 214
drive step rate field . . . . . . . . . . . . . . . . . . . . . . . 3, 214, 230
DS bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109, 111, 141
DSP bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
dt. . . . . . . . . . . . . . . . . . . . . . . . . .130-133, 405, 429-431, 433
DTE bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .224, 271
DU bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141, 142
EAENP bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
EBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326, 370, 376
EBP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372-374
EECA bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
EEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .266, 268
EER bit . . . . . . . . . . . . . . . . . . . . . . . . . . .223, 224, 232, 271
electronic vertical forms unit. . . . . . . . . . . . . . . .133, 282, 283, 432
Element Address Assignment Page . . . . . . . . . . . . . . . . . . .xxvii, 406
element address field . . . . . . . . . . . . .380, 392-394, 397, 402, 407, 408
element bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398-401
element descriptor length field . . . . . . . . . . . . . . . . . . . . . . 391
element descriptors . . . . . . . . . . . . . . . . . . 388, 389, 391, 397, 400
element status. . . . . .xxvi, xxvii, 381-383, 385, 388-391, 393, 397, 435, 438
element type code field . . . . . . . . . . . . . . . . . . .388, 391, 397, 401
enable blank check. . . . . . . . . . . . . . . . . . . . . . . . 326, 370, 376
enable early recovery . . . . . . . . . . . . . . . . . . . . . . . . .223, 271
enable EOD generation . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
enable extended contingent allegiance . . . . . . . . . . . . . . . . . . . 151
enable threshold comparison . . . . . . . . . . . . . . . . . . . . . . . . 141
enable vital product data . . . . . . . . . . . . . . . . . . . . . . . . . 104
end of partition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
END OF USER AREA ENCOUNTERED ON THIS TRACK. . . . . . . . . .130, 304, 307, 433
END-OF-DATA DETECTED. . . . . . . . . . . . . . . . . . . . . . . . . .130, 429
END-OF-DATA NOT FOUND . . . . . . . . . . . . . . . . . . . . . . . . .130, 430
end-of-medium . . . . . . 123, 133, 233, 234, 236, 239, 244, 272, 278, 355, 432
END-OF-PARTITION/MEDIUM DETECTED. . . . . . . . . . . . . . . . . . . .130, 429
end-of-tape . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
ending boundary field . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
ending F field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
ending index field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
ending M field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
ending S field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
ending track field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
EOD defined field . . . . . . . . . . . . . . . . . . . . . . . . . . .268, 272
EOM bit . . . . . . . . . . . . . . . . . . . 123, 247, 257, 258, 267, 347, 348
EOP . . . . . . . . . . . . . . . . . . . . . . . .236, 237, 239, 240, 249, 250
EOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .244, 272
EQUAL . . 38, 45, 47, 57, 66, 68, 78, 113, 129, 142, 147, 168, 174, 175, 182,
          184, 187, 193, 195, 212, 214, 221, 228, 230, 248, 250, 295, 301, 
          304, 305, 307, 309-311, 313, 344, 352, 354, 355, 359, 362, 363, 
          388, 436, 438
ERA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .360, 361
erase all . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
erase by-pass . . . . . . . . . . . . . . . . . . . . . . . . . . . . .372, 374
ERASE command . . . . . . . . . . . . . . . . . . . . . . . xxiv, 238, 243, 357
ERASE FAILURE . . . . . . . . . . . . . . . . . . . . . . . . . . . . .130, 432
ERASE(10) command . . . . . . . . . . . . . . . . . . . . . . . .xxvi, 360, 361
ERASE(12) command . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi, 361
error AEN permission. . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Error Counter Pages . . . . . . . . . . . . . . . . . . . . . . . . . xxii, 144
ERROR LOG OVERFLOW. . . . . . . . . . . . . . . . . . . . . . . . . . .130, 430
ERROR TOO LONG TO CORRECT . . . . . . . . . . . . . . . . . . . . . . .130, 430
ETC bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141, 142
EVFU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282, 283
EVFU format start character field . . . . . . . . . . . . . . . . . . . . . 283
EVFU format stop character field. . . . . . . . . . . . . . . . . . . . . . 283
EVPD bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .104, 108
except. . . . . . . . . 28, 36, 41, 48, 50, 51, 59, 64, 76, 78, 80, 84, 95, 
                        103, 110, 112, 116, 122, 124, 134, 138, 141, 142, 150,
                        154, 169, 170, 171, 251, 252, 300, 302, 303, 324, 
                        392-395, 427
EXCESSIVE WRITE ERRORS. . . . . . . . . . . . . . . . . . . . . . . . .130, 429
EXCHANGE MEDIUM command . . . . . . . . . . . . . . . . . . . . . . . xxvi, 384
exclusive access. . . . . . . . . . . . . . . . . . . . . . .190, 191, 379, 395
ExEnab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
export enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
extended contingent allegiance. . .xxxi, 3, 58, 59, 61, 62, 64, 79, 81, 83-85, 
                                   95, 149-151, 238
extent. . . . . . . . . . . . . . . . . .xxiii, 77, 162, 164, 165, 169, 187-192
extent bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188-190
extent list length field. . . . . . . . . . . . . . . . . . . . . . . . . . 190
FAILED TO SENSE BOTTOM-OF-FORM. . . . . . . . . . . . . . . . . . . . .130, 432
FAILED TO SENSE TOP-OF-FORM . . . . . . . . . . . . . . . . . . . . . .130, 432
Fast Assertion Period . . . . . . . . . . . . . . . . . . . . . . . 36, 38, 425
Fast Cable Skew Delay . . . . . . . . . . . . . . . . . . . . . . . 36, 38, 425
Fast Deskew Delay . . . . . . . . . . . . . . . . . . . . . . . . . 36, 39, 425
Fast Hold Time. . . . . . . . . . . . . . . . . . . . . . . . . . . 36, 39, 425
Fast Negation Period. . . . . . . . . . . . . . . . . . . . . . . . 36, 39, 425
Fast Synchronous Transfer Option. . . . . . . . . . . . . . . . . . . . . . .38
FDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
field pointer field . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
filemark. . . . .123, 128, 130, 237, 240, 247, 251, 252, 256-258, 272, 429, 430
filemark bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .123, 257
FILEMARK DETECTED . . . . . . . . . . . . . . . . . . . . . . . . . . .130, 429
FILEMARK OR SETMARK NOT FOUND . . . . . . . . . . . . . . . . . . . . .130, 430
filled data buffer field. . . . . . . . . . . . . . . . . . . . . . . . . . 342
first block location field. . . . . . . . . . . . . . . . . . . . . . . . . 250
first data transfer element address field . . . . . . . . . . . . . . . . . 408
first element address reported field. . . . . . . . . . . . . . . . . . . . 389
first import export element address field . . . . . . . . . . . . . . . . . 408
first record offset field . . . . . . . . . . . . . . . . . . . . . . . . . 194
first storage element address field . . . . . . . . . . . . . . . . . . . . 407
fixed bit . . . . . . . . . . . . . . .124, 240, 241, 246-248, 251-253, 258-260
fixed data partitions . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
flag bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62, 75, 301
Flexible Disk Page. . . . . . . . . . . . . . . . . . . . . .3, xxiii, 210, 213
FmtData bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171-173
FOCUS SERVO FAILURE . . . . . . . . . . . . . . . . . . . . . . . . . .130, 429
font identification field . . . . . . . . . . . . . . . . . . . . . . . . . 282
forced unit access. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
form slew options field . . . . . . . . . . . . . . . . . . . . . . . . . . 284
FORMAT command. . . . . . . . . . . . . . . . . . . . .xxiv, 130, 275, 283, 431
FORMAT COMMAND FAILED . . . . . . . . . . . . . . . . . . . . . . . . .130, 431
format data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .169, 170
Format Device Page. . . . . . . . . . . . . . . . . . . . .xxiii, 165, 210, 216
format of logical blocks addresses per second field . . . . . . . . . . . . 328
format options valid. . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
format type field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
FORMAT UNIT command . . .xxii, 116, 126, 162, 165, 169-173, 183, 184, 186, 191, 
                         206, 217-219, 293
FOV bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
FUA bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
full bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392
gap size field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
generation address field. . . . . . . . . . . . . . . . . . . . . . . .366, 367
GENERATION DOES NOT EXIST . . . . . . . . . . . . . . . . . . . . 130, 367, 433
GET DATA BUFFER STATUS command. . . . . . . . . . . . . . . . . . . . xxvi, 341
GET MESSAGE(10) command . . . . . . . . . . . . . . . . . . . . . . .xxvii, 414
GET MESSAGE(12) command . . . . . . . . . . . . . . . . . . . . . . .xxvii, 415
GET WINDOW command. . . . . . . . . . . . . . . . . . . . . . . .xxvi, 343, 345
Glist bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183, 184
GOOD status . . 77, 82, 86, 89, 92, 116, 122, 126, 127, 134, 135, 165, 178, 
                181, 187, 193, 211, 238, 253, 259, 263, 278, 280, 347, 363, 398
group code. . . . . . . . . . . . . . . . . . . . . . . . . . .73, 74, 265, 422
grown defect list . . . . . . . . . . . . . . 131, 170, 173, 183, 184, 186, 431
GROWN DEFECT LIST NOT FOUND . . . . . . . . . . . . . . . . . . . . . .131, 431
hard sector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218, 219
HARDWARE ERROR. . . . . . . . .125, 128, 134, 166, 187, 230, 240, 294, 304, 358
head load delay field . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
HEAD OF QUEUE TAG . . . . . . . . . . . . . . . . . xxi, 55, 63, 64, 77, 85, 87
head settle delay field . . . . . . . . . . . . . . . . . . . . . . . . . . 214
head unload delay . . . . . . . . . . . . . . . . . . . . . . . . . . .213, 215
Hold Time . . . . . . . . . . . . . . . . . . . . . . . . . .36-39, 46, 51, 425
host adapter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3, 5, 421
HSEC bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
i/e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
I/O process . . . .3-5, 41, 42, 47, 51, 52, 54, 55, 58-61, 63-65, 67, 75, 
                   77-82, 84-87, 107, 122, 126, 127, 131, 150, 151, 230, 421, 
                   429
I/O PROCESS TERMINATED. . . . . . . . . . . . . . . . . . . . . . .67, 131, 429
I_T . . . . 4, 57, 58, 60, 61, 63, 64, 74, 77-79, 81-84, 86, 112, 122, 150, 253
I_T_L . . . . . . . . 4, 57, 58, 60, 61, 63, 64, 74, 77-79, 81-84, 86, 112, 253
I_T_L_Q . . . . . . . . . . . . . . . . . . . . . 4, 58, 61, 63, 64, 79, 84, 86
I_T_R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4, 57, 60
I_T_x . . . . . . . . . . . . . . . . . . . . . . . .4, 58, 64, 82-84, 122, 150
I_T_x_y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
ID CRC OR ECC ERROR . . . . . . . . . . . . . . . . . . . . . . . . . .131, 430
ID Valid bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
IDENTIFY. . . 2, xxi, 4, 6, 50, 51, 55-58, 60, 61, 64, 74, 77-79, 83, 84, 86, 
              91, 95, 103, 105, 127, 128, 131, 161, 167, 173, 189, 270, 399, 
              422, 432
IDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
IGNORE WIDE RESIDUE . . . . . . . . . . . . . . . . . . . . . . . . xxi, 55, 61
ILI bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .348, 349
ILLEGAL FUNCTION (SHOULD USE 20 00, 24 00, OR 26 00). . . . . . . . . .131, 431
ILLEGAL MODE FOR THIS TRACK . . . . . . . . . . . . . . . . .131, 304, 307, 433
ILLEGAL REQUEST . . .60, 71, 75, 80, 99, 101, 102, 104, 108-113, 115, 116, 119, 
                     125, 128, 135, 137, 139, 140, 142, 143, 149, 153, 166, 
                     170, 172, 176, 182, 185, 188, 190, 191, 194, 199,
                     204-206, 227, 228, 240, 244, 246, 256, 258, 277, 283, 
                     284, 294, 303, 304, 307, 309-311, 323, 331, 347, 354, 
                     358, 360, 371, 384-386, 398-402, 406-408
image composition field . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Immed bit . . . . . . 126, 173, 178, 198, 199, 243-245, 255, 258, 259, 261, 328
immediate . . . . . 81, 126, 173, 178, 198, 199, 238, 243-245, 255, 258, 261, 
                    302, 306, 328
ImpExp. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .394, 395
Implemented Operating Definition Page . . . . . . . . . . . .xxii, 94, 155, 156
import enable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
import export . . .xxvii, 379, 380, 384, 386, 388, 394, 395, 405, 406, 408, 410
import export element . xxvii, 379, 384, 386, 388, 394, 395, 405, 406, 408, 410
IMPORT OR EXPORT ELEMENT ACCESSED . . . . . . . . . . . . . . . . . . .131, 431
inactivity timer multiplier . . . . . . . . . . . . . . . . . . . . . .xxv, 329
INCOMPATIBLE MEDIUM INSTALLED . . . . . . . . . . . . . . . . . . . . .131, 431
INCOMPLETE BLOCK READ . . . . . . . . . . . . . . . . . . . . . . . . .131, 430
incorrect length indicator. . . . . . . . . . . . . . . . . . . . . . .123, 246
InEnab. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
information field . . 67, 98, 102, 123, 124, 128, 156, 166, 185, 187, 194, 
                     204, 225-228, 241, 243, 246, 247, 251-253, 256, 257, 259, 
                     260, 261, 262, 294, 304, 358, 359, 391-395
Information Page. . . . . . . . . . . . . . . . . . . . . . xxii, 125, 155, 156
initial connection. . . . . . . . . . . . . . . . . . . . .3, 4, 60, 63, 79, 85
initialization pattern. . . . . . . . . . . . . . . . xxiii, 170, 173, 175, 176
initialization pattern descriptor . . . . . . . . . . . . .xxiii, 170, 173, 175
initialization pattern length field . . . . . . . . . . . . . . . . . . . . 176
INITIALIZE ELEMENT STATUS command . . . . . . . . . . . . . . . .xxvi, 381, 385
INITIATE RECOVERY . . . . . . . . . . . . . . . . 3, 55, 56, 61, 62, 64, 83, 95
INITIATOR DETECTED ERROR. . . . . . . . . . . . . . . . . .47, 55, 62, 131, 432
INITIATOR DETECTED ERROR MESSAGE RECEIVED . . . . . . . . . . . . . . .131, 432
initiator-defined partitions. . . . . . . . . . . . . . . . . . . . . . . . 269
INQUIRY command . . . .xxi, 65, 79-82, 88, 91, 92, 94, 95, 104, 108, 154, 156, 
                       158, 169, 219, 357, 378
INQUIRY DATA HAS CHANGED. . . . . . . . . . . . . . . . . . . . . . . .131, 432
interleave field. . . . . . . . . . . . . . . . . . . . . . . . . . . .172, 218
INTERMEDIATE status . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
INTERMEDIATE-CONDITION MET status . . . . . . . . . . . . . . .75, 77, 178, 193
INTERNAL TARGET FAILURE . . . . . . . . . . . . . . . . . . . . . . . .131, 432
Inv1 bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
Inv2 bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
INVALID BITS IN IDENTIFY MESSAGE. . . . . . . . . . . . . . . . . .60, 131, 432
INVALID COMBINATION OF WINDOWS SPECIFIED. . . . . . . . . . . . . . . .131, 431
INVALID COMMAND OPERATION CODE. . . . . . . . . . . . . . . . . . . . .131, 431
INVALID ELEMENT ADDRESS . . . . . . . . . . . . . . . . . . . . . . . .131, 431
INVALID FIELD IN CDB. . . .104, 108-113, 115, 116, 131, 135, 137, 185, 199, 
                           204, 246, 323, 360, 371, 431
INVALID FIELD IN PARAMETER LIST . . .99, 101, 110, 111, 113, 131, 139, 140, 
                                     142, 143, 149, 170, 172, 176, 206, 227, 
                                     331, 431
INVALID MESSAGE ERROR . . . . . . . . . . . . . . . . . . . . . . . . .131, 432
invert. . . . . . . . . . . . . . . . . . 193, 195, 368, 382, 386, 387, 392-395
Invert bit. . . . . . . . . . . . . . . . . . . . .193, 195, 382, 386, 387, 393
IP bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
IP modifier field . . . . . . . . . . . . . . . . . . . . . . . . . . .175, 176
L-EC UNCORRECTABLE ERROR. . . . . . . . . . . . . . . . . . . . . . . .131, 430
LAMP FAILURE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131, 433
landing zone cylinder field . . . . . . . . . . . . . . . . . . . . . . . . 230
last block location field . . . . . . . . . . . . . . . . . . . . . . . . . 250
Last n Error Events Page. 143, 145, 208, 262, 279, 291, 325, 353, 375, 404, 418
latest bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367
line slew options field . . . . . . . . . . . . . . . . . . . . . . . . . . 283
link bit. . . . . . . . . . . . . . . . . . . . . . . . .75, 178, 193, 203, 363
LINKED COMMAND COMPLETE . . . . . . . . . . . . . . . . . . . . .55, 62, 75, 78
LINKED COMMAND COMPLETE (WITH FLAG) . . . . . . . . . . . . . . .55, 62, 75, 78
list parameter. . . . . . . . . . . . . . . . . . . . . . . . . . . . .142, 145
load bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4, 244
load eject. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
LOAD UNLOAD command . . . . . . . . . . . . . . . . . . . . . . .xxiv, 244, 272
LOCATE command. . . . . . . . . . . . . . . . . . . . . . . xxiv, 239, 245, 250
lock. . . . . . . . . . . . .xxiii, 163, 164, 168, 177, 294, 300, 305, 359, 436
lock bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
LOCK UNLOCK CACHE command . . . . . . . . . . . . . . . . . . . . . .xxiii, 177
LoEj bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
LOG COUNTER AT MAXIMUM. . . . . . . . . . . . . . . . . . . . . . 131, 142, 433
LOG EXCEPTION . . . . . . . . . . . . . . . . . . . . . . . . . . 131, 150, 433
LOG LIST CODES EXHAUSTED. . . . . . . . . . . . . . . . . . .131, 142, 145, 433
Log Parameters. . . .7, 74, 109-112, 131, 135, 140, 141, 144, 208, 262, 279, 
                     291, 325, 352, 375, 404, 418, 431
LOG PARAMETERS CHANGED. . . . . . . . . . . . . . . . . . . . . . 110, 131, 431
LOG SELECT command. . . . . . . . . . . . . . .xxi, 109-111, 140, 141, 143, 146
LOG SENSE command . . . . . . . . . . . . . . . . . xxi, 109, 111, 140-142, 145
logical block . . 4, 7, 50, 72-74, 78, 86, 99, 100, 123, 124, 131, 148, 
                  161-163, 165-167, 169, 174, 176-178, 180-187, 190, 191, 193, 
                  194, 196, 197, 199-208, 212, 218, 221, 222, 225-228, 231, 
                  237-240, 245, 247, 249, 250, 252, 293, 294, 297, 299, 300, 
                  303, 304, 307, 308, 311-315, 319, 324, 326, 328, 337, 338, 
                  357-364, 366-374, 378, 431
Logical Block Address . . . 7, 72-74, 99, 100, 124, 131, 161, 162, 166, 
                            176-178, 180-187, 190, 191, 193, 194, 196, 197, 
                            199-207, 221, 222, 225, 226, 227, 240, 245, 249, 
                            293, 294, 299, 300, 303, 304, 307, 308, 311-315,
                            319, 324, 328, 337, 357-364, 366, 367, 368-374, 431
LOGICAL BLOCK ADDRESS OUT OF RANGE. . . . . . . . . . . . . . . . . . .131, 431
logical block data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
logical blocks per second of audio playback field . . . . . . . . . . . . . 328
logical or physical notch . . . . . . . . . . . . . . . . . . . . . . . . . 221
logical record length field . . . . . . . . . . . . . . . . . . . . . . . . 194
logical unit. . .xxxi, 4-6, 51, 57-60, 64, 72-74, 77, 79, 80, 82-84, 86, 88, 
                 89, 91-96, 98-101, 103-107, 109-112, 114, 115, 117, 118, 121, 
                 122, 127, 128, 131, 134-136, 143, 146, 148, 154, 155, 158, 
                 159, 164, 169, 177-183, 185-193, 196-205, 210, 216, 217-222, 
                 230, 243-256, 258-262, 267-270, 273, 275-278, 287, 289, 290,
                 306-314, 316, 323, 328, 341, 343, 347, 349-351, 360-362, 364, 
                 366-374, 381, 384-388, 395, 396, 398, 399, 401, 411, 414-417, 
                 429, 431, 432
LOGICAL UNIT COMMUNICATION FAILURE. . . . . . . . . . . . . . . . . . .131, 429
LOGICAL UNIT COMMUNICATION PARITY ERROR . . . . . . . . . . . . . . . .131, 429
LOGICAL UNIT COMMUNICATION TIME-OUT . . . . . . . . . . . . . . . . . .131, 429
LOGICAL UNIT DOES NOT RESPOND TO SELECTION. . . . . . . . . . . . . . .131, 429
LOGICAL UNIT FAILED SELF-CONFIGURATION. . . . . . . . . . . . . . . . .131, 432
LOGICAL UNIT HAS NOT SELF-CONFIGURED YET. . . . . . . . . . . . . . . .131, 432
LOGICAL UNIT IS IN PROCESS OF BECOMING READY. . . . . . . . . . . . . .131, 429
LOGICAL UNIT NOT READY, CAUSE NOT REPORTABLE. . . . . . . . . . . . . .131, 429
LOGICAL UNIT NOT READY, FORMAT IN PROGRESS. . . . . . . . . . . . . . .131, 429
LOGICAL UNIT NOT READY, INITIALIZING COMMAND REQUIRED . . . . . . . . .131, 429
LOGICAL UNIT NOT READY, MANUAL INTERVENTION REQUIRED. . . . . . . . . .131, 429
LOGICAL UNIT NOT SUPPORTED. . . . . . . . . . . . . . . . . . 80, 131, 135, 431
Logical Unit Number . . 4, 5, 57, 60, 72-74, 91, 93, 95, 96, 103, 104, 109, 
                        111, 112, 114, 115, 117, 118, 121, 122, 134-136, 169, 
                        177-183, 185-187, 189, 192, 193, 196-205, 243-246, 248,
                        249, 251-256, 258, 259, 261, 273, 275-278, 289, 290, 
                        306, 307-314, 316, 323, 341, 343, 347, 349-351, 
                        360-362, 364, 366-374, 381, 384-388, 395, 396, 398, 
                        399, 401, 414, 415-417
long bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
LP bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .141, 142
LPN bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .221, 222
LU Valid bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
mandatory . . . . . . . .xxxi, 4, 6, 56, 57, 63, 71, 74, 92, 123, 124, 134, 
                         168, 169, 172, 188, 189, 191, 192, 237, 242, 256, 274, 
                         289, 295, 305, 340, 359, 383, 413, 421, 435-438
maximum additional partitions field . . . . . . . . . . . . . . . . . . . . 269
maximum burst size field. . . . . . . . . . . . . . . . . . . . . . . . . . 153
maximum generation address field. . . . . . . . . . . . . . . . . . . . . . 366
maximum line length field . . . . . . . . . . . . . . . . . . . . . . . . . 283
maximum number of notches field . . . . . . . . . . . . . . . . . . . . . . 221
maximum pre-fetch ceiling field . . . . . . . . . . . . . . . . . . . . . . 212
maximum pre-fetch field . . . . . . . . . . . . . . . . . . . . . . . . . . 212
maximum volume sequence number. . . . . . . . . . . . . . . . . . . . . . . 403
MCVal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317, 319, 321
Measurement Units Page. . . . . . . . . . . . . . . . . . . . . . . . xxvi, 353
MECHANICAL POSITIONING ERROR. . . . . . . . . . . . . . . . . . . . . .131, 430
MEDIA LOAD OR EJECT FAILED. . . . . . . . . . . . . . . . . . . . . . .131, 433
MEDIUM DESTINATION ELEMENT FULL . . . . . . . . . . . . . . . . . . . .131, 432
MEDIUM ERROR. . . . .xxii, 125, 128, 143, 145, 166, 173, 183, 187, 208, 238, 
                     240, 247, 257, 258, 260, 279, 291, 294, 304, 325, 331-335, 
                     347, 348, 353, 358, 370, 404, 418
MEDIUM FORMAT CORRUPTED . . . . . . . . . . . . . . . . . . . . . . . .131, 431
medium format recognition field . . . . . . . . . . . . . . . . . . . . . . 270
MEDIUM NOT PRESENT. . . . . . . . . . . . . . . . . . . . . . . . 131, 135, 432
Medium Partition Page . . . . . . . . . . . . . . . . . . . xxiv, 266, 269, 270
MEDIUM REMOVAL PREVENTED. . . . . . . . . . . . . . . . . . . . . 131, 179, 433
medium rotation rate field. . . . . . . . . . . . . . . . . . . . . . . . . 216
MEDIUM SCAN command . . . . . . . . . . . . . . . . . .xxvi, 293, 358, 362, 363
MEDIUM SOURCE ELEMENT EMPTY . . . . . . . . . . . . . . . . . . . . . .131, 432
medium transport element. .xxvii, 379, 380, 384, 386-388, 392, 394-396, 
                           405-407, 409, 410
medium transport element address field. . . . . . . . . . . . . . . . .380, 407
medium type . . . . . . . . . .xxv, 146, 147, 167, 209, 219, 220, 325, 357, 375
medium types supported. . . . . . . . . . . . . . . . xxiii, 210, 219, 327, 377
Medium Types Supported Page . . . . . . . . . . . . . xxiii, 210, 219, 327, 377
medium-changer devices. . . . . . . . . . . . . . . . . . . . . . . . . . . 379
MESSAGE ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . .49, 131, 432
MESSAGE IN Phase. . . . . . . . . . .48, 50, 52, 59-62, 64, 66, 69, 77, 78, 423
MESSAGE OUT Phase 43, 44, 48-50, 52, 55, 60, 62-64, 66, 68, 69, 77, 79, 86, 422
MESSAGE PARITY ERROR. . . . . . . . . . . . . . . . . . . . .50, 55, 62, 66, 68
MESSAGE REJECT. . . . . . . . . . . . . . . .55, 59, 60, 62, 63, 65-69, 85, 151
MF bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .211, 212
MICROCODE HAS BEEN CHANGED. . . . . . . . . . . . . . . . . . 88, 131, 138, 432
minimum pre-fetch field . . . . . . . . . . . . . . . . . . . . . . . . . . 212
minimum volume sequence number. . . . . . . . . . . . . . . . . . . . . . . 403
MISCOMPARE. . . . . . . . . . . 95, 104, 129, 131, 200, 203, 259, 370, 374, 431
MISCOMPARE DURING VERIFY OPERATION. . . . . . . . . . . . . . . . . . .131, 431
MISCORRECTED ERROR. . . . . . . . . . . . . . . . . . . . . . . . . . .131, 430
MO bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
mode field. . . . . . . . . . xxi, xxii, 118, 137, 259, 263, 280, 283, 301, 315
mode parameter header . . . . xxii, 113, 115, 116, 146, 147, 208, 209, 259-261, 
                              263, 272, 279, 325, 326, 353, 375, 376, 404, 418
Mode Parameters . . . . . . . .7, 74, 88, 112, 113, 115-117, 127, 131, 146-149, 
                               162, 188, 191, 208, 210, 231, 246, 253-255, 263, 
                               279, 303, 307, 308, 309-312, 325, 339, 349, 351, 
                               353, 370, 375, 404, 418, 431
MODE PARAMETERS CHANGED . . . . . . . . . . . . . . . . . . . . . 112, 131, 431
MODE SELECT(10) command . . . . . . . . . . . . . . . . . . . . . xxi, 114, 117
MODE SENSE(10) command. . . . . . . . . . . . . . . . . . . .xxi, 114, 115, 117
MODIFY DATA POINTER . . . . . . . . . . . . . . . . . . . . . . xxi, 55, 57, 63
motor off delay field . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
motor on. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213-215
motor on delay field. . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
MOVE MEDIUM command . . . . . . . . . . . . . . . . . . . . xxvi, 382, 386, 387
MSF . . . . . . . . . xxv, 297-300, 302, 303, 305, 307, 309, 311, 313-316, 319, 
                      323, 324, 329, 330, 337, 338, 437
mt. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
MULTIPLE PERIPHERAL DEVICES SELECTED. . . . . . . . . . . . . . . . . .131, 429
MULTIPLE READ ERRORS. . . . . . . . . . . . . . . . . . . . . . . . . .131, 430
multiplication factor . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
ND bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218, 221
Negation Period . . . . . . . . . . . . . . . . . . . . 36, 37, 39, 45, 46, 425
nexus . . . . .3, 4, 41, 50, 57, 58, 60, 61, 63-65, 74, 77-79, 81-84, 86, 112, 
               122, 151, 253
NO ADDITIONAL SENSE INFORMATION . . . . . . . . . . . . 122, 124, 131, 135, 429
NO CURRENT AUDIO STATUS TO RETURN . . . . . . . . . . . . . . . . 131, 318, 429
NO DEFECT SPARE LOCATION AVAILABLE. . . . . . . . . . . . . .131, 187, 370, 431
NO GAP FOUND. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131, 430
NO INDEX/SECTOR SIGNAL. . . . . . . . . . . . . . . . . . . . . . . . .131, 429
NO OPERATION. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .55, 63
NO SEEK COMPLETE. . . . . . . . . . . . . . . . . . . . . . . . . . . .132, 429
NO SENSE. . . . 67, 80, 122, 128, 135, 183, 193, 194, 247, 251-253, 256, 257, 
                259, 261, 276, 302, 363
NO WRITE CURRENT. . . . . . . . . . . . . . . . . . . . . . . . . . . .132, 429
Non-Medium Error Page . . . . . . . 143, 145, 208, 279, 291, 325, 353, 404, 418
Not Bus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .395, 396
NOT READY . . . . 80, 116, 117, 126, 128, 131-133, 135, 136, 162, 169, 233, 
                  244, 264, 287, 302, 307, 309, 310, 312, 339, 411, 429, 431, 
                  432
NOT READY TO READY TRANSITION(MEDIUM MAY HAVE CHANGED). . . . . . . . . . . 431
not this bus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396
Notch and Partition Page. . . . . . . . . . . . . . . . . . . . . . . .210, 220
notched drive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
number of blocks field. . . . . . . . . . . . . 98-101, 148, 177, 197, 199, 205
number of blocks in buffer field. . . . . . . . . . . . . . . . . . . . . . 251
number of blocks requested field. . . . . . . . . . . . . . . . . . . .362, 363
number of blocks to scan field. . . . . . . . . . . . . . . . . . . . .362, 363
number of bytes in buffer field . . . . . . . . . . . . . . . . . . . . . . 251
number of cylinders field . . . . . . . . . . . . . . . . . . . . 214, 229, 230
number of data transfer elements field. . . . . . . . . . . . . . . . . . . 408
number of elements available field. . . . . . . . . . . . . . . . . . . . . 389
number of F units per S unit field. . . . . . . . . . . . . . . . . . . . . 330
number of heads field . . . . . . . . . . . . . . . . . . . . . . . . .214, 229
number of import export elements field. . . . . . . . . . . . . . . . . . . 408
number of medium transport elements field . . . . . . . . . . . . . . . . . 407
number of records field . . . . . . . . . . . . . . . . . . . . . . . . . . 194
number of S units per M unit field. . . . . . . . . . . . . . . . . . . . . 330
number of storage elements field. . . . . . . . . . . . . . . . . . . . . . 407
OBJECT POSITION command . . . . . . . . . . . . . . . . . . . . . . . xxvi, 347
offset boundary field . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Operation Code. . . . .xxi, 71-74, 93, 95, 96, 103, 104, 109, 111, 112, 114, 
                       115, 117, 118, 121, 122, 131, 134-136, 169, 177-183, 
                       185, 186, 187, 189, 192, 193, 195-205, 243-246, 248, 
                       249, 251-255, 258, 259, 261, 275-278, 289, 290, 
                       306-314, 316, 323, 341, 343, 347, 349-351, 360-362, 
                       364, 366-374, 384-388, 396, 398, 399, 401, 414-417, 
                       431
OPERATOR MEDIUM REMOVAL REQUEST . . . . . . . . . . . . . . . . . . . .132, 433
OPERATOR REQUEST OR STATE CHANGE INPUT (UNSPECIFIED). . . . . . . . . .132, 433
OPERATOR SELECTED WRITE PERMIT. . . . . . . . . . . . . . . . . . . . .132, 433
OPERATOR SELECTED WRITE PROTECT . . . . . . . . . . . . . . . . . . . .132, 433
optical memory devices. . . . .xxvi, xxx, 124, 293, 296, 357, 359, 360, 375-378
Optical Memory Page . . . . . . . . . . . . . . . . . . . . . . .xxvi, 377, 378
ORDERED QUEUE TAG . . . . . . . . . . . . . . . . . . . .55, 63, 64, 77, 84, 85
OUT OF FOCUS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132, 433
output port channel selection . . . . . . . . . . . . . . . . . . . . .xxv, 328
OVERLAPPED COMMANDS ATTEMPTED . . . . . . . . . . . . . . . . . . .80, 132, 432
OVERWRITE ERROR ON UPDATE IN PLACE. . . . . . . . . . . . . . . . . . .132, 431
pacing protocol field . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
pad bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96, 99, 102
padding type field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
page code field . . . . . . . . . . . . .112, 116, 121, 139, 140, 149, 156, 158
page control. . . . . . . . . . . . . . . . . . . . . . . . . xxi, 109-111, 115
page format . .xxii, 112, 115, 121, 134, 138-140, 144, 148, 149, 210, 266, 280, 
               327, 353, 377, 405, 419
page length field . . . . . . . . . . . . . . .139, 140, 146, 149, 155-159, 207
pages notched field . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
paper instruction parity check. . . . . . . . . . . . . . . . . . . . . . . 281
PAPER JAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132, 347, 432
Parallel Printer Interface Page . . . . . . . . . . . . . . . . . . . . . . 280
parameter code field. . . . . . . . . . . . . . . . . . . . xxii, 141, 143, 144
parameter code reset. . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
parameter data length field . . . . . . . . . . . . . . . . . . . . . . . . .94
Parameter List Length . . . 67, 72-74, 95, 96, 99-101, 103, 109, 110, 112-114, 
                            132, 134-138, 362, 401, 431
PARAMETER LIST LENGTH ERROR . . . . . . . . . . . . . . . . . . . 113, 132, 431
parameter list length field . . . . . . . . . . . . . . .96, 110, 113, 135, 137
PARAMETER NOT SUPPORTED . . . . . . . . . . . . . . . . . . . . . . . .132, 431
parameter pointer control . . . . . . . . . . . . . . . . . . . . . . . . . 111
parameter rounding. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .80
parameter value field . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
PARAMETER VALUE INVALID . . . . . . . . . . . . . . . . . . . . . . . .132, 431
PARAMETERS CHANGED. . . . . . . . . . . . . . . . . . . 110, 112, 131, 132, 431
parameters savable. . . 149, 210, 214, 217, 220-222, 229, 231, 281, 282, 285, 
                        328-330, 336, 354, 378, 405, 407, 409
parity select field . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
parity selection field. . . . . . . . . . . . . . . . . . . . . . . . . . . 286
partial medium indicator. . . . . . . . . . . . . . . . . . . . . . . .182, 313
partial results acceptable. . . . . . . . . . . . . . . . . . . . . . . . . 362
partition field . . . . . . . . . . . . . . . . . . . . . . . . . 245, 266, 267
partition size descriptor . . . . . . . . . . . . . . . . . . . . . . .269, 270
partition size field. . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
partition size unit of measure. . . . . . . . . . . . . . . . . . . . . . . 269
pattern field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
pattern length field. . . . . . . . . . . . . . . . . . . . . . . . . .176, 195
pattern type field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
PAUSE RESUME command. . . . . . . . . . . . . . . . . . . . . . . . . .xxv, 306
PCR bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
PER bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223, 271
Peripheral Device Page. . . . xxii, 149, 154, 210, 266, 280, 327, 353, 377, 419
peripheral device type field. . . . . . . . . . . . . . . . . . . . . . 155-159
PERIPHERAL DEVICE WRITE FAULT . . . . . . . . . . . . . . . . . . . . .132, 429
peripheral qualifier field. . . . . . . . . . . . . . . . . . . . . . . 155-159
PF bit. . . . . . . . . . . . . . . . . . . . . . . . . . . .112, 134, 135, 138
physical block data . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
pin 1 field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
pin 34 field. . . . . . . . . . . . . . . . . . . . . . . . . . xxiii, 215, 216
pin 4 field . . . . . . . . . . . . . . . . . . . . . . . . . . . . .xxiii, 215
PIPC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280, 281
PLAY AUDIO MSF command. . . . . . . . . . . . . . . . . . . . . . . . .xxv, 309
PLAY AUDIO TRACK INDEX command. . . . . . . . . . . . . . . . . . . . .xxv, 310
PLAY AUDIO(10) command. . . . . . . . . . . . . . . . . . . . . . xxv, 307, 308
PLAY AUDIO(12) command. . . . . . . . . . . . . . . . . . . . . . . . .xxv, 308
Plist bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .183, 184
PMI bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162, 182, 313
POSITION ERROR RELATED TO TIMING. . . . . . . . . . . . . . . . . . . .132, 432
position function field . . . . . . . . . . . . . . . . . . . . . . . . . . 347
POSITION PAST BEGINNING OF MEDIUM . . . . . . . . . . . . . . . . . . .132, 432
POSITION PAST END OF MEDIUM . . . . . . . . . . . . . . . . . . . . . .132, 432
POSITION TO ELEMENT command . . . . . . . . . . . . . . . . . . . . .xxvii, 387
POSITIONING ERROR DETECTED BY READ OF MEDIUM. . . . . . . . . . . . . .132, 430
post error. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223, 271
POWER ON, RESET, OR BUS DEVICE RESET OCCURRED . . . . . . . . . . . . .132, 431
POWER-ON OR SELF-TEST FAILURE (SHOULD USE 40 NN). . . . . . . . . . . .132, 432
Power-On to Selection Time. . . . . . . . . . . . . . . . . . . . . .36, 37, 50
PPC bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
PRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .362, 363
PRE-FETCH command . . . . . . . . . . . . . . . . . . . . . . . . . .xxiii, 178
prevent . . . . xxiii, 27, 51, 65, 108, 161, 163-165, 168, 179, 189, 241, 254, 
                268, 295, 305, 359, 383, 436
PREVENT ALLOW MEDIUM REMOVAL command. . . . . . . . . . . . . . xxiii, 161, 179
prevent bit . . . . . . . . . . . . . . . . . . . . . . . . .164, 179, 189, 254
primary defect list . . . . . . . . . . . . . . . .132, 169, 173, 183, 184, 431
PRIMARY DEFECT LIST NOT FOUND . . . . . . . . . . . . . . . . . . . . .132, 431
primary volume tag. . . . . . . . . . . . . . . . . . . . . . 382, 391-395, 402
primary volume tag information field. . . . . . . . . . . . . . . . . . . . 391
PRINT command . . . . . . . . . . . . . . . . . . . . . xxiv, 276-278, 283, 284
printer devices . . . . . . . xxiv, xxx, 123, 124, 273, 274, 277, 279, 280, 285
Printer Options Page. . . . . . . . . . . . . . . . . . . . .277, 278, 280, 282
priority field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97, 211
product identification field. . . . . . . . . . . . . . . . . . . . . . . . 108
product serial number field . . . . . . . . . . . . . . . . . . . . . . . . 159
progress indication field . . . . . . . . . . . . . . . . . . . . . . . . . 126
PS bit. . . . . 113, 115, 149, 173, 210, 214, 217, 220-222, 229, 231, 281, 282, 
                285, 328-330, 336, 354, 378, 405, 407, 409
PSUM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .269, 270
PVolTag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391-395
QErr bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
queue algorithm modifier field. . . . . . . . . . . . . . . . . . . . . . . 150
queue error management. . . . . . . . . . . . . . . . . . . . . . . . . 85, 150
QUEUE FULL status . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83-85
queue tag . . . . . . . xxi, 4, 51, 55, 57, 60, 61, 63, 64, 77, 83-87, 150, 151
queued I/O process. . . . . . . . . . . . . . . . . . . . . . . . 4, 58, 85, 86
RAENP bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
RAM FAILURE (SHOULD USE 40 NN). . . . . . . . . . . . . . . . . . . . .132, 432
RANDOM POSITIONING ERROR. . . . . . . . . . . . . . . . . . . . . . . .132, 430
RAREA bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
RBO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252, 266, 267
RC bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
RCD bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
READ BLOCK LIMITS command . . . . . . . . . . . . . . . . . xxiv, 246, 248, 259
READ BUFFER command . . . . . . . . . . . . . . . . . . xxi, 118, 119, 136, 137
read cache disable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
READ CAPACITY command . . . . . . . . . . . . . . . . xxiii, 161, 182, 184, 313
READ CD-ROM CAPACITY command. . . . . . . . . . . . . . . . .xxv, 299, 300, 313
read continuous . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
READ DEFECT DATA(10) command. . . . . . . . . . . . . . . . . . . . . . . . 364
READ DEFECT DATA(12) command. . . . . . . . . . . . . . . . . . . . . xxvi, 364
READ ELEMENT STATUS command . . . . . . . . xxvii, 381, 382, 385, 388, 389, 397
read exclusive. . . . . . . . . . . . . . . . . . . . . . . . . . . . .190, 191
READ GENERATION command . . . . . . . . . . . . . . . . . . . . . . . xxvi, 366
READ HEADER command . . . . . . . . . . . . . . . . . . . . . . . . . .xxv, 314
read inhibit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
READ LONG command . . . . . . . . . . . . . . . . . . . . . . . xxiii, 185, 204
READ PAST BEGINNING OF MEDIUM . . . . . . . . . . . . . . . . . . . . .132, 432
READ PAST END OF MEDIUM . . . . . . . . . . . . . . . . . . . . . . . .132, 432
READ POSITION command . . . . . . . . . . . . . . . . . . . . . .xxiv, 239, 249
READ RETRIES EXHAUSTED. . . . . . . . . . . . . . . . . . . . . . . . .132, 430
READ REVERSE command. . . . . . . . . . . . . . . . . . . . . . . . . xxiv, 251
read shared . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .190, 191
READ SUB-CHANNEL command. . . . . . . . . . . . . . . . . . . . . xxv, 300, 316
READ TOC command. . . . . . . . . . . . . . . . . . . . . . . . . xxv, 298, 323
READ(10) command. . . . . . . . . . . . . . . . . . . xxiii, 180, 181, 202, 364
READ(12) command. . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi, 364
Read-Write Error Recovery Page. . . xxiii, xxiv, 203, 210, 222, 231, 240, 266, 
                                    270, 377
ready AEN permission. . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
REASSIGN BLOCKS command . . . . . . . .xxiii, 162, 165, 170, 186, 187, 223, 358
RECEIVE command . . . . . . . . . . . . . . . . . . . . . . . xxv, 287-289, 292
RECEIVE DIAGNOSTIC RESULTS command. xxii, 92, 121, 134, 135, 138, 139, 206, 207
reconnect . . . . 3, xxii, 4, 43, 59-62, 64, 79, 82, 84, 144, 149, 152, 210, 
                  265, 280, 287, 327, 353, 377, 411, 412, 419
RECORD NOT FOUND. . . . . . . . . . . . . . . . . . . . . . . . . . . .132, 430
RECORDED ENTITY NOT FOUND . . . . . . . . . . . . . . . . . . . . . . .132, 430
recover buffer order. . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
RECOVER BUFFERED DATA command . . . . . . . . . . xxiv, 240, 252, 267, 276, 278
RECOVERED DATA - DATA AUTO-REALLOCATED. . . . . . . . . . . . . . . . .132, 430
RECOVERED DATA - RECOMMEND REASSIGNMENT . . . . . . . . . . . . . . . .132, 430
RECOVERED DATA - RECOMMEND REWRITE. . . . . . . . . . . . . . . . . . .132, 430
RECOVERED DATA USING PREVIOUS SECTOR ID . . . . . . . . . . . . . . . .132, 430
RECOVERED DATA WITH CIRC. . . . . . . . . . . . . . . . . . . . . . . .132, 430
RECOVERED DATA WITH ERROR CORRECTION & RETRIES APPLIED. . . . . . . . .132, 430
RECOVERED DATA WITH ERROR CORRECTION APPLIED. . . . . . . . . . . . . .132, 430
RECOVERED DATA WITH L-EC. . . . . . . . . . . . . . . . . . . . . . . . . . 132
RECOVERED DATA WITH NEGATIVE HEAD OFFSET. . . . . . . . . . . . . . . .132, 430
RECOVERED DATA WITH NO ERROR CORRECTION APPLIED . . . . . . . . . . . .132, 430
RECOVERED DATA WITH POSITIVE HEAD OFFSET. . . . . . . . . . . . . . . .132, 430
RECOVERED DATA WITH RETRIES . . . . . . . . . . . . . . . . . . . . . .132, 430
RECOVERED DATA WITH RETRIES AND/OR CIRC APPLIED . . . . . . . . . . . .132, 430
RECOVERED DATA WITHOUT ECC - DATA AUTO-REALLOCATED. . . . . . . . . . .132, 430
RECOVERED DATA WITHOUT ECC - RECOMMEND REASSIGNMENT . . . . . . . . . .132, 430
RECOVERED DATA WITHOUT ECC - RECOMMEND REWRITE. . . . . . . . . . . . .132, 430
RECOVERED ERROR . . . . . 80, 122, 125, 128, 142, 145, 166, 173, 184, 224-227, 
                          230, 240, 247, 251, 259, 261, 294, 304, 331-335, 
                          358, 370, 378
RECOVERED ID WITH ECC . . . . . . . . . . . . . . . . . . . . . . . . .132, 431
REFERENCE POSITION FOUND. . . . . . . . . . . . . . . . . . . . . . . .131, 429
RelAdr bit. . . . . . . . 107, 177, 178, 181, 182, 185, 193, 199, 200, 202-205, 
                          360, 362, 363, 366, 367, 369, 371, 372, 374
RELEASE command . . . . . . . . . . . . . . . . .xxiii, xxvii, 187-190, 398-400
RELEASE RECOVERY. . . . . . . . . . . . . . . . . . . . . . . 3, 41, 55, 64, 83
RELEASE UNIT command. . . . . . . . . . . . . . . . . . . . . . .xxiv, 253, 254
removable . . . . . . . 81, 88, 92, 106, 128, 161, 162, 167, 219, 357, 381, 410
report early-warning. . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
report log exception condition. . . . . . . . . . . . . . . . . . . . . . . 150
report setmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267
report updated block read . . . . . . . . . . . . . . . . . . . . . . .370, 378
REPOSITION ERROR. . . . . . . . . . . . . . . . . . . . . . . . . . . .132, 432
REQUEST SENSE command . .xxii, 41, 67, 80, 82, 88, 92, 95, 122, 123, 127, 156, 
                         169, 193, 194, 287, 302, 339, 363, 412
request to send . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
REQUEST VOLUME ELEMENT ADDRESS command. . . . . . . . . . .xxvii, 396, 401, 402
RESELECTION Phase . . . . . . . . . . . . 4, 34, 38, 41-44, 50, 57, 61, 86, 421
RESERVATION CONFLICT status . . . . . . . .164, 169, 189-192, 254, 255, 399-401
reservation identification field. . . . . . . . . . . . . . . . . . . . . . 189
reservation type field. . . . . . . . . . . . . . . . . . . . . . . . . . . 190
RESERVE command . . . . xxiii, xxvii, 112, 165, 188-192, 254, 255, 397, 399-401
RESERVE UNIT command. . . . . . . . . . . . . . . . . . . . . . . xxiv, 253-255
reserved area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
reset condition . . . .3, 33, 38, 41, 47, 49-52, 59, 65, 67-69, 76, 79, 80, 82, 
                       83, 88, 95, 108, 112, 116, 117, 179, 189-191, 254, 264, 
                       399, 400, 401
Reset Hold Time . . . . . . . . . . . . . . . . . . . . . . . . . . .36, 38, 51
Reset to Selection Time . . . . . . . . . . . . . . . . . . . . . . .36, 38, 51
RESTORE POINTERS. . . . . . . . . . . . . . . . . . .54, 55, 57, 60, 62, 65, 78
resume bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
retain bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
reverse scan direction. . . . . . . . . . . . . . . . . . . . . . . . . . . 362
REW . . . . . . . . . . . . . . . . . . . . . . 247, 257-259, 261, 266-268, 272
REWIND command. . . . . . . . . . . . . . . . . . . . . . . .xxiv, 81, 236, 255
REZERO UNIT command . . . . . . . . . . . . . . . . . . . . . . xxiii, 165, 192
RIBBON, INK, OR TONER FAILURE . . . . . . . . . . . . . . . . . . . . .132, 431
RIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .344, 346
Rigid Disk Drive Geometry Page. . . . . . . . . . . . . . . . . . . . xxiv, 229
RLEC bit. . . . . . . . . . . . . . . . . . . . . . . . . . .142, 143, 145, 150
RMB bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
rotate bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409
ROUNDED PARAMETER . . . . . . . . . . . . . . . . . . . . . . . . .81, 132, 432
RPL . . . . . . . . . . . . . . . . . . . . . . . . . . . . .132, 229, 230, 433
RPL STATUS CHANGE . . . . . . . . . . . . . . . . . . . . . . . . 132, 230, 433
RSD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
RSmk. . . . . . . . . . . . . . . . . . . 102, 123, 247, 252, 256-258, 266, 267
RTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .285, 286
RUBR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
save bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .93
SAVE DATA POINTER . . . . . . . . . . . . . . . . . . . .52, 54, 55, 59, 65, 78
save implemented. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
save parameters . . . . . . . . . . . . . . . . . . . . . . . . . 109, 111, 219
SavImp bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
SAVING PARAMETERS NOT SUPPORTED . . . . . . . . . . . . . . . . . 116, 132, 432
SCAN command. . . . . . . . . . . . . . . . .xxvi, 293, 341, 350, 358, 362, 363
SCAN HEAD POSITIONING ERROR . . . . . . . . . . . . . . . . . . . . . .132, 433
scanner devices . . . . . . . . . . . . . . .xxvi, xxx, 339, 340, 352, 353, 355
SCSI ID . . . . . . . . . . . . . . . .5, 31, 34, 37, 42, 43, 82, 381, 421, 422
SCSI PARITY ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . .132, 432
SCSI Pointers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .54
SCSI TO HOST SYSTEM INTERFACE FAILURE . . . . . . . . . . . . . . . . .132, 433
SCSI-2. . . . 2, xxvii, xxx, xxxi, 1, 5, 6, 9, 33, 43, 74, 79, 84, 91, 94, 95, 
              149, 187, 189, 421, 427, 429, 435, 439
SCTE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .282, 283
SDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
search argument descriptor. . . . . . . . . . . . . . . . . . . . . . .194, 195
search argument length field. . . . . . . . . . . . . . . . . . . . . . . . 194
sectors per track field . . . . . . . . . . . . . . . . . . . . . . . .214, 218
SEEK(10) command. . . . . . . . . . . . . . . . . . . . . . . . . . .xxiii, 196
segment descriptor. . . . . . . . . . . . . . . . . . . . xxi, 96-102, 123, 124
segment number field. . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
select data compression algorithm field . . . . . . . . . . . . . . . . . . 268
select data partitions. . . . . . . . . . . . . . . . . . . . . . . . . . . 269
SELECT OR RESELECT FAILURE. . . . . . . . . . . . . . . . . . . . . . .132, 432
Selection Abort Time. . . . . . . . . . . . . . . . . . . . 36, 38, 43, 44, 422
SELECTION Phase . . . . . . . . . . . . . 3, 34, 41-43, 50, 57, 60, 77, 86, 421
Selection Time-out Delay. . . . . . . . . . . . . . . . . . . . .36, 38, 43, 44
self test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92, 128
send action code field. . . . . . . . . . . . . . . . . . . . . . 398, 401, 402
SEND DIAGNOSTIC command . . . . . . . . . xxii, 92, 121, 134, 138, 139, 206-208
SEND MESSAGE(10) command. . . . . . . . . . . . . . . . . . . . . . .xxvii, 416
SEND MESSAGE(12) command. . . . . . . . . . . . . . . . . . . . . . .xxvii, 417
SEND VOLUME TAG command . . . . . . . . . . . xxvii, 381, 382, 396-398, 401-403
sense key field . . . . . . . . . . . . . . . . . . . . . . . . . . . .124, 125
sense-key specific field. . . . . . . . . . . . . . . . . . . . . . . .125, 126
sense-key specific valid. . . . . . . . . . . . . . . . . . . . . . . . . . 125
SEQUENTIAL POSITIONING ERROR. . . . . . . . . . . . . . . . . . . . . .133, 432
sequential-access devices . . .xxiv, xxx, 80, 97, 101, 102, 123, 124, 148, 233, 
                               239, 241, 242, 262, 263, 265
Serial Printer Interface Page . . . . . . . . . . . . . . . . . . . . .280, 285
SET LIMITS(10) command. . . . . . . . . . . . . . . . . . . . . . . . . . . 368
SET LIMITS(12) command. . . . . . . . . . . . . . . . . . . . . . . . xxvi, 368
SET WINDOW command. . . . . . . . . . . . . . . . . . . . . . . .xxvi, 345, 351
SETMARK DETECTED. . . . . . . . . . . . . . . . . .133, 247, 252, 256, 257, 429
SEW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 259, 261, 266-268
SftRe bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51, 108
SILI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246, 251, 252
SIMPLE QUEUE TAG. . . . . . . . . . . . . . . . .55, 61, 63, 64, 77, 84-86, 150
single bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42, 343
SKSV bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .125, 126
SLEW AND PRINT command. . . . . . . . . . . . . . . . . xxiv, 276-278, 283, 284
SLEW FAILURE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133, 432
slew mode field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283
slew value field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 277
SOCF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266-268
soft sector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .218, 219
SOTC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307-312, 327, 328
source block length field . . . . . . . . . . . . . . . . . . . . . . . . . 101
source logical block address field. . . . . . . . . . . . . . . . . . . . . 100
source storage element address field. . . . . . . . . . . . . . . . . .393, 394
source valid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393
SP bit. . . . . . . . . . . . . . . . . . . . . . . . . 109, 111, 113, 116, 141
SPACE command . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv, 256
spanned data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
speed field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv, 263
SPINDLE SERVO FAILURE . . . . . . . . . . . . . . . . . . . . . . . . .133, 429
SPINDLES NOT SYNCHRONIZED . . . . . . . . . . . . . . . . . . . . . . .133, 433
SPINDLES SYNCHRONIZED . . . . . . . . . . . . . . . . . . . . . . . . .133, 433
SpnDat bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
SSEC bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
SSN bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
st. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
start . . . . . xxiii, 3, 54, 81, 108, 135, 161, 162, 164, 167, 168, 193, 195, 
                198, 214, 215, 282, 283, 295, 305-307, 310, 311, 324, 338, 359,
                381, 435
start bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
start sector number . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
starting boundary field . . . . . . . . . . . . . . . . . . . . . . . . . . 221
starting F field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
starting index field. . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
starting M field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
starting S field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
starting track field. . . . . . . . . . . . . . . . . . . . . . . 310, 311, 323
status. . . . . .3, xxi, xxv, xxvi, xxvii, xxx, 3, 5, 31, 33, 34, 37, 38, 41, 
                 44, 45, 47-52, 54, 58-62, 65, 67, 71, 75-77, 80-89, 92, 95, 
                 98, 99, 101, 102, 104, 108-113, 115-117, 119, 122, 125-128,
                 131, 132, 134, 135, 137, 139, 140, 142, 143, 145, 149, 153, 
                 162, 164-166, 169, 170, 172-174, 176, 178, 181-185, 187-194, 
                 197-200, 203-206, 209, 211, 214, 218, 219, 223-228, 230, 233, 
                 238, 240, 243-247, 251-263, 267, 271, 276-278, 280, 283, 284,
                 287, 292, 293, 302-304, 306, 307, 309, 310, 312, 317, 318, 
                 320, 321, 323, 328, 331-335, 339-342, 347-349, 351, 354, 358, 
                 360, 363, 367, 370-372, 374, 376-378, 381-386, 388-393, 
                 397-401, 407, 408, 411, 423, 429, 433, 435, 436, 438
STATUS Phase. . . . . . . . . . . . . . . . . . . . . . 41, 48, 50, 76, 77, 423
step count truncate enable. . . . . . . . . . . . . . . . . . . . . . . . . 283
step pulse per cylinder . . . . . . . . . . . . . . . . . . . . . . . . . . 215
stop bit length field . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
stop format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
stop on consecutive filemarks . . . . . . . . . . . . . . . . . . . . . . . 267
stop on track crossing. . . . . . . . . . . . . . . . . . . . . . 310, 311, 328
STOP PRINT command. . . . . . . . . . . . . . . . . . . . . . . . . . xxiv, 278
storage element . . . . . xxvii, 379, 381, 384, 386, 388, 392-395, 405-407, 410
STPF bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
stream selection field. . . . . . . . . . . . . . . . . . . . . . . . . 414-417
sub Q bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .316, 317
sub-channel data format field . . . . . . . . . . . . . . . .316, 317, 321, 322
sub-channel data header . . . . . . . . . . . . . . . . . . . . . 317, 320, 321
sub-channel data length field . . . . . . . . . . . . . . . . . . . . . . . 317
SubQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
supplied format field . . . . . . . . . . . . . . . . . . . . . . . . .206, 207
Supported Diagnostic Pages. . . . . . . xxii, 139, 206, 262, 279, 325, 352, 404
Supported Log Pages . . .xxii, 143, 145, 146, 208, 262, 279, 325, 353, 404, 418
supported page list field . . . . . . . . . . . . . . . . . . . . 140, 146, 158
Supported Vital Product Data Pages. . . . . . . . . . . . . . . .xxii, 155, 158
suppress incorrect length indicator . . . . . . . . . . . . . . . . . . . . 246
SURF bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
surface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .219, 355
SValid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392-395
SYNCHRONIZE BUFFER command. . . . . . . . . . . . . . . . . . . .xxiv, 278, 284
SYNCHRONIZE CACHE command . . . . . . . . . . . . . . . . .xxiii, 165, 198, 199
SYNCHRONOUS DATA TRANSFER ERROR . . . . . . . . . . . . . . . . . . . .133, 431
SYNCHRONOUS DATA TRANSFER REQUEST . . . . . . . . . . . . . xxi, 55, 57, 65, 82
SYSTEM RESOURCE FAILURE . . . . . . . . . . . . . . . . . . . . . . . .133, 433
TAPE LENGTH ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . .133, 431
TAPE OR ELECTRONIC VERTICAL FORMS UNIT NOT READY. . . . . . . . . . . .133, 432
TAPE POSITION ERROR AT BEGINNING-OF-MEDIUM. . . . . . . . . . . . . . .133, 432
TAPE POSITION ERROR AT END-OF-MEDIUM. . . . . . . . . . . . . . . . . .133, 432
target certification list . . . . . . . . . . . . . . . . . . . . . . . . . 170
TARGET OPERATING CONDITIONS HAVE CHANGED. . . . . . . . . . . . . . . .133, 432
target routine. . . . . . . . . . . . . . .4, 5, 57-60, 63, 80, 82, 84, 91, 290
target save disable . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
TB bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .223, 271
TCVal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317, 319, 322
TERMINATE I/O PROCESS . . . . . . . . . . . . . . . . . . . 55, 67, 77, 79, 107
TEST UNIT READY command . . . . . . . . . . . .xxii, 82, 92, 135, 161, 287, 339
third party . . . . . . . . . . . . . .96, 112, 187, 189, 191, 253-255, 398-400
third party reservation . . . . . . . . . . . . . . . . . . .112, 191, 254, 400
THRESHOLD CONDITION MET . . . . . . . . . . . . . . . . . . . . . 133, 142, 433
threshold field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
threshold met criteria. . . . . . . . . . . . . . . . . . . . . . . . xxii, 142
THRESHOLD PARAMETERS NOT SUPPORTED. . . . . . . . . . . . . . . . . . .133, 431
TOO MANY WINDOWS SPECIFIED. . . . . . . . . . . . . . . . . . . . . . .133, 431
track code valid. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
TRACK FOLLOWING ERROR . . . . . . . . . . . . . . . . . . . . . . . . .133, 429
track number field. . . . . . . . . . . . . . . . . . . . . . . . . . .317, 324
track relative CD-ROM address field . . . . . . . . . . . . . . . . . . . . 319
track skew factor field . . . . . . . . . . . . . . . . . . . . . . . . . . 218
TRACKING SERVO FAILURE. . . . . . . . . . . . . . . . . . . . . . . . .133, 429
tracks per zone field . . . . . . . . . . . . . . . . . . . . . . . . .217, 218
transfer block. . . . . . . . . . . . . . . . . . . . . . . . . . .223-227, 271
Transfer Length . . 54, 67, 72-74, 137, 148, 178, 180-182, 185, 200-204, 210, 
                    212, 241, 246, 247, 251-253, 259-262, 272, 275-277, 283, 
                    290, 303, 307, 308, 311, 312, 328, 343, 349-351, 360, 361, 
                    364, 368, 372-374, 416, 417
Transfer Period . . . . . . . . . . . . . . . . . . .36, 38, 45-47, 65, 66, 425
Translate Address Page - RECEIVE DIAGNOSTIC . . . . . . . . . . xxiii, 206, 207
Translate Address Page - SEND DIAGNOSTIC. . . . . . . . . . . . . . .xxiii, 206
translate format field. . . . . . . . . . . . . . . . . . . . . . . . .206, 208
translated address field. . . . . . . . . . . . . . . . . . . . . . . . . . 208
transport element address field . . . . . . . . . . . . . . . . . . . .380, 407
transport geometry descriptor . . . . . . . . . . . . . . . . . . . . . . . 409
true ready. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .214, 215
TSD bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .109, 141
UAAENP bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
UNABLE TO ACQUIRE VIDEO . . . . . . . . . . . . . . . . . . . . . . . .133, 433
UNABLE TO RECOVER TABLE-OF-CONTENTS . . . . . . . . . . . . . . . . . .133, 433
unexpected disconnect . . . . . . . . . .3, 5, 47, 49, 50, 57, 60, 76, 122, 126
unexpected reselection. . . . . . . . . . . . . . . . . . . . . . . . . . . .82
UNIT ATTENTION. . . . . . 51, 59, 79, 81, 82, 85, 88, 89, 94, 95, 104, 110, 
                          112, 128, 138, 142, 148, 150, 151, 166, 188, 190, 
                          230, 240, 253, 264, 294, 304, 358, 400
unit attention AEN permission . . . . . . . . . . . . . . . . . . . . . . . 151
unit off-line . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Unit Serial Number Page . . . . . . . . . . . . . . . . . . . . .xxii, 155, 159
UnitOfl bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
UNLOAD TAPE FAILURE . . . . . . . . . . . . . . . . . . . . . . . . . .133, 433
UNRECOVERED READ ERROR. . . . . . . . . . 133, 166, 239-241, 294, 304, 358, 430
UNRECOVERED READ ERROR - AUTO REALLOCATE FAILED . . . . . . . . . . . .133, 430
UNRECOVERED READ ERROR - RECOMMEND REASSIGNMENT . . . . . . . . . . . .133, 430
UNRECOVERED READ ERROR - RECOMMEND REWRITE THE DATA . . . . . . . . . .133, 430
UNSUCCESSFUL SOFT RESET . . . . . . . . . . . . . . . . . . . . . . . .133, 432
UPDATE BLOCK command. . . . . . . . . . . . . . . . . .xxvi, 369, 370, 376, 378
UPDATED BLOCK READ. . . . . . . . . . . . . . . . . . . . . .133, 370, 378, 433
VCBP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280, 281
VCBS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280, 281
vendor identification field . . . . . . . . . . . . . . . . . . . . . . . . 108
verification length field . . . . . . . . . . . . . . . . . . . . . . . . . 200
verify correction span field. . . . . . . . . . . . . . . . . . . . . . . . 231
Verify Error Recovery Page. . . . . . . . . . . . xxiv, 203, 210, 231, 327, 377
verify recovery time limit field. . . . . . . . . . . . . . . . . . . . . . 231
verify retry count field. . . . . . . . . . . . . . . . . . . . . .224-226, 231
VERIFY(10) command. . . . . . . . . . . . . . . . . . .xxvi, 370, 371, 373, 374
VERIFY(12) command. . . . . . . . . . . . . . . . . . . . . . . .xxvi, 371, 374
vertical forms unit . . . . . . . . . . . . . . . . . . . . . 133, 281-283, 432
VES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .280, 281
VFU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxiv, 281
VFU control bit polarity. . . . . . . . . . . . . . . . . . . . . . . . . . 281
VFU control bit select. . . . . . . . . . . . . . . . . . . . . . . . . . . 281
VFU extended skip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
VIDEO ACQUISITION ERROR . . . . . . . . . . . . . . . . . . . . . . . .133, 433
Vital Product Data Parameters . . . . . . . . . . . . . . . . . . . . . .7, 154
VolTag. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 388, 396, 397
volume identification field . . . . . . . . . . . . . . . . . . . . . . . . 382
volume identification template field. . . . . . . . . . . . . . . . . . . . 403
VOLUME OVERFLOW . . . . . . . . . . . . . . . . . . . . .129, 240, 259-262, 267
volume sequence number field. . . . . . . . . . . . . . . . . . . . . .382, 403
volume tag. . . . . . . . . . .xxvi, xxvii, 381-383, 388, 391-398, 401-403, 438
wait bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
WBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
WCE bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
WIDE DATA TRANSFER REQUEST. . . . . . . . . . . . . . . . . .46, 55, 57, 67, 68
window length field . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
window width field. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 345
WP bit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209, 263, 376
WRITE AND VERIFY(10) command. . . . . . . . . . . . . . . . . . .xxvi, 373, 374
WRITE AND VERIFY(12) command. . . . . . . . . . . . . . . . . . . . . xxvi, 374
WRITE APPEND ERROR. . . . . . . . . . . . . . . . . . . . . . . . . . .133, 432
WRITE APPEND POSITION ERROR . . . . . . . . . . . . . . . . . . . . . .133, 432
WRITE BUFFER command. . . . . . . . . . . . . . . . . .xxii, 118, 119, 136, 138
write cache enable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
WRITE ERROR . . xxiii, xxiv, 124, 133, 203, 210, 222, 231, 238, 240, 241, 266, 
                270, 271, 377, 430
WRITE ERROR - AUTO REALLOCATION FAILED. . . . . . . . . . . . . . . . .133, 430
WRITE ERROR RECOVERED WITH AUTO REALLOCATION. . . . . . . . . . . . . .133, 430
write exclusive . . . . . . . . . . . . . . . . . . . . . . . . . . . .190, 191
WRITE FILEMARKS command . . . . . . . . xxiv, 238, 244, 255, 259, 261, 262, 268
write inhibit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
WRITE LONG command. . . . . . . . . . . . . . . . . . . . . . . . . .xxiii, 204
write precompensation field . . . . . . . . . . . . . . . . . . . 214, 215, 230
write protect . . . . . . . . . . . . . . . . . . . . . .81, 132, 209, 263, 433
WRITE PROTECTED . . . . . . . .133, 166, 209, 233, 240, 263, 294, 358, 376, 431
write retention priority field. . . . . . . . . . . . . . . . . . . . . . . 211
WRITE SAME command. . . . . . . . . . . . . . . . . . . . . . . . . .xxiii, 205
write setmark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
WRITE(10) command . . . . . . . . . . . . . . . .xxiii, xxvi, 201-203, 372, 373
WRITE(12) command . . . . . . . . . . . . . . . . . . . . . . . . . . xxvi, 373
written block search. . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
WSmk. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
X-axis resolution field . . . . . . . . . . . . . . . . . . . . . . . . . . 345
X-axis upper left field . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Y-axis resolution field . . . . . . . . . . . . . . . . . . . . . . . . . . 345
Y-axis upper left field . . . . . . . . . . . . . . . . . . . . . . . . . . 345


