Unit SCSI
From Ultibo.org
Return to Unit Reference
Description
The SCSI interface unit is device non specific in that it implements only the SCSI protocol.
Actual command transfer is performed by a device specific driver that implements the exact semantics of the device. eg USB Mass Storage devices use the SCSI protocol, the SCSI interface implements the protocol behaviour but the actual command transfer is handled by the USB storage driver.
Constants
SCSI specific constants
SCSI_*
SCSI_NAME_PREFIX = 'SCSI';
|
Name prefix for SCSI Devices |
SCSI_HOST_PREFIX = 'SCSIHost';
|
Name prefix for Host Devices |
SCSI device type constants
SCSI_TYPE_*
SCSI_TYPE_NONE = 0;
|
|
SCSI_TYPE_HDD = 1;
|
SCSI device state constants
SCSI_STATE_*
SCSI_STATE_EJECTED = 0;
|
|
SCSI_STATE_INSERTED = 1;
|
SCSI device flag constants
SCSI_FLAG_*
SCSI_FLAG_NONE = $00000000;
|
SCSI protocol message constants
SCSI_MESSAGE_*
SCSI_MESSAGE_COMPLETE = $00;
|
|
SCSI_MESSAGE_EXTENDED = $01;
|
|
SCSI_MESSAGE_SAVE_DP = $02;
|
|
SCSI_MESSAGE_RESTORE_DP = $03;
|
|
SCSI_MESSAGE_DISCONNECT = $04;
|
|
SCSI_MESSAGE_ID_ERROR = $05;
|
|
SCSI_MESSAGE_ABORT = $06;
|
|
SCSI_MESSAGE_REJECT = $07;
|
|
SCSI_MESSAGE_NOOP = $08;
|
|
SCSI_MESSAGE_PARITY = $09;
|
|
SCSI_MESSAGE_LCOMPLETE = $0a;
|
|
SCSI_MESSAGE_FCOMPLETE = $0b;
|
|
SCSI_MESSAGE_RESET = $0c;
|
|
SCSI_MESSAGE_ABORT_TAG = $0d;
|
|
SCSI_MESSAGE_CLEAR_QUEUE = $0e;
|
|
SCSI_MESSAGE_INIT_REC = $0f;
|
|
SCSI_MESSAGE_REL_REC = $10;
|
|
SCSI_MESSAGE_TERMINATE = $11;
|
|
SCSI_MESSAGE_SIMPLE_TAG = $20;
|
|
SCSI_MESSAGE_HEAD_TAG = $21;
|
|
SCSI_MESSAGE_ORDERED_TAG = $22;
|
|
SCSI_MESSAGE_IGN_RESIDUE = $23;
|
|
SCSI_MESSAGE_IDENTIFY = $80;
|
|
SCSI_MESSAGE_X_MODIFY_DP = $00;
|
|
SCSI_MESSAGE_X_SYNC_REQ = $01;
|
|
SCSI_MESSAGE_X_WIDE_REQ = $03;
|
|
SCSI_MESSAGE_X_PPR_REQ = $04;
|
SCSI protocol status constants
SCSI_STATUS_*
SCSI_STATUS_GOOD = $00;
|
|
SCSI_STATUS_CHECK_COND = $02;
|
|
SCSI_STATUS_COND_MET = $04;
|
|
SCSI_STATUS_BUSY = $08;
|
|
SCSI_STATUS_INT = $10;
|
|
SCSI_STATUS_INT_COND_MET = $14;
|
|
SCSI_STATUS_CONFLICT = $18;
|
|
SCSI_STATUS_TERMINATED = $20;
|
|
SCSI_STATUS_QUEUE_FULL = $28;
|
|
SCSI_STATUS_ILLEGAL = $ff;
|
|
SCSI_STATUS_SENSE = $80;
|
SCSI protocol sense key constants
SCSI_SENSE_*
SCSI_SENSE_NO_SENSE = $00;
|
|
SCSI_SENSE_RECOVERED_ERROR = $01;
|
|
SCSI_SENSE_NOT_READY = $02;
|
|
SCSI_SENSE_MEDIUM_ERROR = $03;
|
|
SCSI_SENSE_HARDWARE_ERROR = $04;
|
|
SCSI_SENSE_ILLEGAL_REQUEST = $05;
|
|
SCSI_SENSE_UNIT_ATTENTION = $06;
|
|
SCSI_SENSE_DATA_PROTECT = $07;
|
|
SCSI_SENSE_BLANK_CHECK = $08;
|
|
SCSI_SENSE_VENDOR_SPECIFIC = $09;
|
|
SCSI_SENSE_COPY_ABORTED = $0A;
|
|
SCSI_SENSE_ABORTED_COMMAND = $0B;
|
|
SCSI_SENSE_VOLUME_OVERFLOW = $0D;
|
|
SCSI_SENSE_MISCOMPARE = $0E;
|
SCSI protocol additional sense code constants
SCSI_ASC_*
SCSI_ASC_NO_SENSE = $00;
|
NO SENSE |
SCSI_ASC_RECOVERED_RETRIES = $17;
|
RECOVERED DATA WITH RETRIES |
SCSI_ASC_RECOVERED_ECC = $18;
|
RECOVERED DATA WITH ECC |
SCSI_ASC_NOT_READY_LUN = $04;
|
LOGICAL UNIT NOT READY |
SCSI_ASC_NOT_READY_NO_REF_POS = $06;
|
NO REFERENCE POSITION FOUND |
SCSI_ASC_NOT_READY_LUN_COMM = $08;
|
LOGICAL UNIT COMMUNICATION |
SCSI_ASC_NOT_READY_MEDIUM_NOT_PRESENT = $3A;
|
MEDIUM NOT PRESENT |
SCSI protocol additional sense code qualifier constants
SCSI_ASCQ_*
SCSI_ASCQ_NO_SENSE = $00;
|
NO SENSE |
SCSI_ASCQ_RECOVERED_RETRIES = $01;
|
RECOVERED DATA WITH RETRIES |
SCSI_ASCQ_RECOVERED_ECC = $00;
|
RECOVERED DATA WITH ECC |
SCSI_ASCQ_NOT_READY_LUN_BECOME_READY = $01;
|
LOGICAL DRIVE NOT READY - BECOMING READY |
SCSI_ASCQ_NOT_READY_LUN_INIT_REQUIRED = $02;
|
LOGICAL DRIVE NOT READY - INITIALIZATION REQUIRED |
SCSI_ASCQ_NOT_READY_LUN_FORMAT_PROGRESS = $04;
|
LOGICAL UNIT NOT READY - FORMAT IN PROGRESS |
SCSI_ASCQ_NOT_READY_LUN_DEVICE_BUSY = $FF;
|
LOGICAL DRIVE NOT READY - DEVICE IS BUSY |
SCSI_ASCQ_NOT_READY_LUN_COMM_FAILURE = $00;
|
LOGICAL UNIT COMMUNICATION FAILURE |
SCSI_ASCQ_NOT_READY_LUN_COMM_TIMEOUT = $01;
|
LOGICAL UNIT COMMUNICATION TIME-OUT |
SCSI_ASCQ_NOT_READY_LUN_COMM_OVERRUN = $80;
|
LOGICAL UNIT COMMUNICATION OVERRUN |
SCSI protocol command constants
SCSI_COMMAND_*
SCSI_COMMAND_CHANGE_DEF = $40;
|
Change Definition (Optional) |
SCSI_COMMAND_COMPARE = $39;
|
Compare (Optional) |
SCSI_COMMAND_COPY = $18;
|
Copy (Optional) |
SCSI_COMMAND_COP_VERIFY = $3A;
|
Copy and Verify (Optional) |
SCSI_COMMAND_INQUIRY = $12;
|
Inquiry (MANDATORY) |
SCSI_COMMAND_LOG_SELECT = $4C;
|
Log Select (Optional) |
SCSI_COMMAND_LOG_SENSE = $4D;
|
Log Sense (Optional) |
SCSI_COMMAND_MODE_SEL6 = $15;
|
Mode Select 6-byte (Device Specific) |
SCSI_COMMAND_MODE_SEL10 = $55;
|
Mode Select 10-byte (Device Specific) |
SCSI_COMMAND_MODE_SEN6 = $1A;
|
Mode Sense 6-byte (Device Specific) |
SCSI_COMMAND_MODE_SEN10 = $5A;
|
Mode Sense 10-byte (Device Specific) |
SCSI_COMMAND_READ_BUFF = $3C;
|
Read Buffer (Optional) |
SCSI_COMMAND_REQ_SENSE = $03;
|
Request Sense (MANDATORY) |
SCSI_COMMAND_SEND_DIAG = $1D;
|
Send Diagnostic (Optional) |
SCSI_COMMAND_TST_U_RDY = $00;
|
Test Unit Ready (MANDATORY) |
SCSI_COMMAND_WRITE_BUFF = $3B;
|
Write Buffer (Optional) |
Commands Unique to Direct Access Devices | |
SCSI_COMMAND_COMPARE = $39;
|
Compare (Optional) |
SCSI_COMMAND_FORMAT = $04;
|
Format Unit (MANDATORY) |
SCSI_COMMAND_LCK_UN_CAC = $36;
|
Lock Unlock Cache (Optional) |
SCSI_COMMAND_PREFETCH = $34;
|
Prefetch (Optional) |
SCSI_COMMAND_MED_REMOVL = $1E;
|
Prevent/Allow medium Removal (Optional) |
SCSI_COMMAND_READ6 = $08;
|
Read 6-byte (MANDATORY) |
SCSI_COMMAND_READ10 = $28;
|
Read 10-byte (MANDATORY) |
SCSI_COMMAND_READ12 = $A8;
|
Read 12-byte (Optional) |
SCSI_COMMAND_READ16 = $88;
|
Read 16-byte (Optional) |
SCSI_COMMAND_RD_CAPAC = $25;
|
Read Capacity (MANDATORY) |
SCSI_COMMAND_RD_CAPAC10 = SCSI_COMMAND_RD_CAPAC;
|
Read Capacity (10) |
SCSI_COMMAND_RD_DEFECT = $37;
|
Read Defect Data (Optional) |
SCSI_COMMAND_READ_LONG = $3E;
|
Read Long (Optional) |
SCSI_COMMAND_REASS_BLK = $07;
|
Reassign Blocks (Optional) |
SCSI_COMMAND_RCV_DIAG = $1C;
|
Receive Diagnostic Results (Optional) |
SCSI_COMMAND_RELEASE = $17;
|
Release Unit (MANDATORY) |
SCSI_COMMAND_REZERO = $01;
|
Rezero Unit (Optional) |
SCSI_COMMAND_SRCH_DAT_E = $31;
|
Search Data Equal (Optional) |
SCSI_COMMAND_SRCH_DAT_H = $30;
|
Search Data High (Optional) |
SCSI_COMMAND_SRCH_DAT_L = $32;
|
Search Data Low (Optional) |
SCSI_COMMAND_SEEK6 = $0B;
|
Seek 6-Byte (Optional) |
SCSI_COMMAND_SEEK10 = $2B;
|
Seek 10-Byte (Optional) |
SCSI_COMMAND_SEND_DIAG = $1D;
|
Send Diagnostics (MANDATORY) |
SCSI_COMMAND_SET_LIMIT = $33;
|
Set Limits (Optional) |
SCSI_COMMAND_START_STP = $1B;
|
Start/Stop Unit (Optional) |
SCSI_COMMAND_SYNC_CACHE = $35;
|
Synchronize Cache (Optional) |
SCSI_COMMAND_VERIFY = $2F;
|
Verify (Optional) |
SCSI_COMMAND_WRITE6 = $0A;
|
Write 6-Byte (MANDATORY) |
SCSI_COMMAND_WRITE10 = $2A;
|
Write 10-Byte (MANDATORY) |
SCSI_COMMAND_WRITE12 = $AA;
|
Write 12-Byte (Optional) |
SCSI_COMMAND_WRITE16 = $8A;
|
Write 16-Byte (Optional) |
SCSI_COMMAND_WRT_VERIFY = $2E;
|
Write and Verify (Optional) |
SCSI_COMMAND_WRITE_LONG = $3F;
|
Write Long (Optional) |
SCSI_COMMAND_WRITE_SAME = $41;
|
Write Same (Optional) |
SCSI_COMMAND_RD_FMT_CAP = $23;
|
Read Format Capacities |
SCSI_COMMAND_SVC_ACT_IN = $9E;
|
Service Action In |
SCSI command data constants
SCSI_COMMAND_MAX_*
SCSI_COMMAND_MAX_SIZE = 16;
|
SCSI service action constants
SCSI_SAI_*
SCSI_SAI_READ_CAPACITY_16 = $10;
|
Read Capacity (16) |
SCSI_SAI_GET_LBA_STATUS = $12;
|
Get LBA Status |
SCSI inquiry data constants
SCSI_INQUIRY_*
SCSI_INQUIRY_STANDARD = $00;
|
SCSI standard inquiry data constants
SCSI_STANDARD_INQUIRY_*
SCSI_STANDARD_INQUIRY_SIZE = 36;
|
SCSI inquiry peripheral device type constants
SCSI_DEVICE_TYPE_*
SCSI_DEVICE_TYPE_DISK = $00;
|
SBC-3 - Direct access block device (e.g., magnetic disk) |
SCSI_DEVICE_TYPE_TAPE = $01;
|
SSC-3 - Sequential-access device (e.g., magnetic tape) |
SCSI_DEVICE_TYPE_PRINTER = $02;
|
SSC - Printer device |
SCSI_DEVICE_TYPE_PROCESSOR = $03;
|
SPC-2 - Processor device |
SCSI_DEVICE_TYPE_WRITE_ONCE = $04;
|
SBC - Write-once device (e.g., some optical disks) |
SCSI_DEVICE_TYPE_CD_DVD = $05;
|
MMC-5 - CD/DVD device |
SCSI_DEVICE_TYPE_SCANNER = $06;
|
Scanner device (obsolete) |
SCSI_DEVICE_TYPE_OPTICAL = $07;
|
SBC - Optical memory device (e.g., some optical disks) |
SCSI_DEVICE_TYPE_CHANGER = $08;
|
SMC-3 - Medium changer device (e.g., jukeboxes) |
SCSI_DEVICE_TYPE_COMMS = $09;
|
Communications device (obsolete) |
SCSI_DEVICE_TYPE_ARRAY = $0C;
|
SCC-2 - Storage array controller device (e.g., RAID) |
SCSI_DEVICE_TYPE_ENCLOSURE = $0D;
|
SES - Enclosure services device |
SCSI_DEVICE_TYPE_RBC = $0E;
|
RBC - Simplified direct-access device (e.g., magnetic disk) |
SCSI_DEVICE_TYPE_CARD = $0F;
|
OCRW - Optical card reader/writer device |
SCSI_DEVICE_TYPE_BRIDGE = $10;
|
BCC - Bridge Controller Commands |
SCSI_DEVICE_TYPE_OBJECT = $11;
|
OSD - Object-based Storage Device |
SCSI_DEVICE_TYPE_AUTOMATION = $12;
|
ADC-2 - Automation/Drive Interface |
SCSI_DEVICE_TYPE_WELL_KNOWN = $1E;
|
Well known logical unit |
SCSI_DEVICE_TYPE_UNKNOWN = $1F;
|
Unknown or no device type |
SCSI inquiry removable media bit constants
SCSI_REMOVABLE_MEDIA_*
SCSI_REMOVABLE_MEDIA_BIT = $80;
|
SCSI request sense data constants
SCSI_REQUEST_SENSE_*
SCSI_REQUEST_SENSE_SIZE = 18;
|
SCSI read capacity data constants
SCSI_READ_CAPACITY_*
SCSI_READ_CAPACITY_SIZE = 8;
|
|
SCSI_READ_CAPACITY_16_SIZE = 32;
|
SCSI read 10 data constants
SCSI_READ_10_*
SCSI_READ_10_MAX_BLOCKS = $FFFF;
|
SCSI write 10 data constants
SCSI_WRITE_10_*
SCSI_WRITE_10_MAX_BLOCKS = $FFFF;
|
SCSI logging constants
SCSI_LOG_*
SCSI_LOG_LEVEL_DEBUG = LOG_LEVEL_DEBUG;
|
SCSI debugging messages |
SCSI_LOG_LEVEL_INFO = LOG_LEVEL_INFO;
|
SCSI informational messages, such as a device being attached or detached |
SCSI_LOG_LEVEL_ERROR = LOG_LEVEL_ERROR;
|
SCSI error messages |
SCSI_LOG_LEVEL_NONE = LOG_LEVEL_NONE;
|
No SCSI messages |
Type definitions
To be documented
Public variables
To be documented
Function declarations
Initialization functions
procedure SCSIInit;
Description: To be documented
Note | None documented |
---|
Return to Unit Reference