;****************************************************************************** ; ; SCSIDEFS.INC - prepared by Alvise Valsecchi - oct 18, 2000 ; ; This file is derived directly from SCSIdefs.h supplied with Adaptec's ASPISDK, ; and has been adapted to be included into win32asm programs. ; ; Freeware to be used with hutch's MASM32. ; ;*****************************************************************************/ ;*************************************************************************** ; TARGET STATUS VALUES ;*************************************************************************** STATUS_GOOD EQU 00H ;Status Good STATUS_CHKCOND EQU 02H ;Check Condition STATUS_CONDMET EQU 04H ;Condition Met STATUS_BUSY EQU 08H ;Busy STATUS_INTERM EQU 10H ;Intermediate STATUS_INTCDMET EQU 14H ;Intermediate-condition met STATUS_RESCONF EQU 18H ;Reservation conflict STATUS_COMTERM EQU 22H ;Command Terminated STATUS_QFULL EQU 28H ;Queue full ;*************************************************************************** ; SCSI MISCELLANEOUS EQUATES ;*************************************************************************** MAXLUN EQU 7 ;Maximum Logical Unit Id MAXTARG EQU 7 ;Maximum Target Id MAX_SCSI_LUNS EQU 64 ;Maximum Number of SCSI LUNs MAX_NUM_HA EQU 8 ;Maximum Number of SCSI HA's ;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ ; ; SCSI COMMAND OPCODES ; ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ ;*************************************************************************** ; Commands for all Device Types ;*************************************************************************** SCSI_CHANGE_DEF EQU 40H ;Change Definition (Optional) SCSI_COMPARE EQU 39H ;Compare (optional) SCSI_COPY EQU 18H ;Copy (optional) SCSI_COP_VERIFY EQU 3AH ;Copy and Verify (optional) SCSI_INQUIRY EQU 12H ;Inquiry (MANDATORY) SCSI_LOG_SELECT EQU 4CH ;Log Select (optional) SCSI_LOG_SENSE EQU 4DH ;Log Sense (optional) SCSI_MODE_SEL6 EQU 15H ;Mode Select 6-byte (Device Specific) SCSI_MODE_SEL10 EQU 55H ;Mode Select 10-byte (Device Specific) SCSI_MODE_SEN6 EQU 1AH ;Mode Sense 6-byte (Device Specific) SCSI_MODE_SEN10 EQU 5AH ;Mode Sense 10-byte (Device Specific) SCSI_READ_BUFF EQU 3CH ;Read Buffer (optional) SCSI_REQ_SENSE EQU 03H ;Request Sense (MANDATORY) SCSI_SEND_DIAG EQU 1DH ;Send Diagnostic (optional) SCSI_TST_U_RDY EQU 00H ;Test Unit Ready (MANDATORY) SCSI_WRITE_BUFF EQU 3BH ;Write Buffer (optional) ;*************************************************************************** ; Commands Unique to Direct Access Devices ;*************************************************************************** SCSI_COMPARE EQU 39H ;Compare (optional) SCSI_FORMAT EQU 04H ;Format Unit (MANDATORY) SCSI_LCK_UN_CAC EQU 36H ;Lock Unlock Cache (optional) SCSI_PREFETCH EQU 34H ;Prefetch (optional) SCSI_MED_REMOVL EQU 1EH ;Prevent/Allow medium Removal (optional) SCSI_READ6 EQU 08H ;Read 6-byte (MANDATORY) SCSI_READ10 EQU 28H ;Read 10-byte (MANDATORY) SCSI_RD_CAPAC EQU 25H ;Read Capacity (MANDATORY) SCSI_RD_DEFECT EQU 37H ;Read Defect Data (optional) SCSI_READ_LONG EQU 3EH ;Read Long (optional) SCSI_REASS_BLK EQU 07H ;Reassign Blocks (optional) SCSI_RCV_DIAG EQU 1CH ;Receive Diagnostic Results (optional) SCSI_RELEASE EQU 17H ;Release Unit (MANDATORY) SCSI_REZERO EQU 01H ;Rezero Unit (optional) SCSI_SRCH_DAT_E EQU 31H ;Search Data Equal (optional) SCSI_SRCH_DAT_H EQU 30H ;Search Data High (optional) SCSI_SRCH_DAT_L EQU 32H ;Search Data Low (optional) SCSI_SEEK6 EQU 0BH ;Seek 6-Byte (optional) SCSI_SEEK10 EQU 2BH ;Seek 10-Byte (optional) SCSI_SEND_DIAG EQU 1DH ;Send Diagnostics (MANDATORY) SCSI_SET_LIMIT EQU 33H ;Set Limits (optional) SCSI_START_STP EQU 1BH ;Start/Stop Unit (optional) SCSI_SYNC_CACHE EQU 35H ;Synchronize Cache (optional) SCSI_VERIFY EQU 2FH ;Verify (optional) SCSI_WRITE6 EQU 0AH ;Write 6-Byte (MANDATORY) SCSI_WRITE10 EQU 2AH ;Write 10-Byte (MANDATORY) SCSI_WRT_VERIFY EQU 2EH ;Write and Verify (optional) SCSI_WRITE_LONG EQU 3FH ;Write Long (optional) SCSI_WRITE_SAME EQU 41H ;Write Same (optional) ;*************************************************************************** ; Commands Unique to Sequential Access Devices ;*************************************************************************** SCSI_ERASE EQU 19H ;Erase (MANDATORY) SCSI_LOAD_UN EQU 1BH ;Load/Unload (optional) SCSI_LOCATE EQU 2BH ;Locate (optional) SCSI_RD_BLK_LIM EQU 05H ;Read Block Limits (MANDATORY) SCSI_READ_POS EQU 34H ;Read Position (optional) SCSI_READ_REV EQU 0FH ;Read Reverse (optional) SCSI_REC_BF_DAT EQU 14H ;Recover Buffer Data (optional) SCSI_RESERVE EQU 16H ;Reserve Unit (MANDATORY) SCSI_REWIND EQU 01H ;Rewind (MANDATORY) SCSI_SPACE EQU 11H ;Space (MANDATORY) SCSI_VERIFY_T EQU 13H ;Verify (Tape) (optional) SCSI_WRT_FILE EQU 10H ;Write Filemarks (MANDATORY) ;*************************************************************************** ; Commands Unique to Printer Devices ;*************************************************************************** SCSI_PRINT EQU 0AH ;Print (MANDATORY) SCSI_SLEW_PNT EQU 0BH ;Slew and Print (optional) SCSI_STOP_PNT EQU 1BH ;Stop Print (optional) SCSI_SYNC_BUFF EQU 10H ;Synchronize Buffer (optional) ;*************************************************************************** ; Commands Unique to Processor Devices ;*************************************************************************** SCSI_RECEIVE EQU 08H ;Receive (optional) SCSI_SEND EQU 0AH ;Send (optional) ;*************************************************************************** ; Commands Unique to Write-Once Devices ;*************************************************************************** SCSI_MEDIUM_SCN EQU 38H ;Medium Scan (optional) SCSI_SRCHDATE10 EQU 31H ;Search Data Equal 10-Byte (optional) SCSI_SRCHDATE12 EQU B1H ;Search Data Equal 12-Byte (optional) SCSI_SRCHDATH10 EQU 30H ;Search Data High 10-Byte (optional) SCSI_SRCHDATH12 EQU B0H ;Search Data High 12-Byte (optional) SCSI_SRCHDATL10 EQU 32H ;Search Data Low 10-Byte (optional) SCSI_SRCHDATL12 EQU B2H ;Search Data Low 12-Byte (optional) SCSI_SET_LIM_10 EQU 33H ;Set Limits 10-Byte (optional) SCSI_SET_LIM_12 EQU B3H ;Set Limits 10-Byte (optional) SCSI_VERIFY10 EQU 2FH ;Verify 10-Byte (optional) SCSI_VERIFY12 EQU AFH ;Verify 12-Byte (optional) SCSI_WRITE12 EQU AAH ;Write 12-Byte (optional) SCSI_WRT_VER10 EQU 2EH ;Write and Verify 10-Byte (optional) SCSI_WRT_VER12 EQU AEH ;Write and Verify 12-Byte (optional) ;*************************************************************************** ; Commands Unique to CD-ROM Devices ;*************************************************************************** SCSI_PLAYAUD_10 EQU 45H ;Play Audio 10-Byte (optional) SCSI_PLAYAUD_12 EQU A5H ;Play Audio 12-Byte 12-Byte (optional) SCSI_PLAYAUDMSF EQU 47H ;Play Audio MSF (optional) SCSI_PLAYA_TKIN EQU 48H ;Play Audio Track/Index (optional) SCSI_PLYTKREL10 EQU 49H ;Play Track Relative 10-Byte (optional) SCSI_PLYTKREL12 EQU A9H ;Play Track Relative 12-Byte (optional) SCSI_READCDCAP EQU 25H ;Read CD-ROM Capacity (MANDATORY) SCSI_READHEADER EQU 44H ;Read Header (optional) SCSI_SUBCHANNEL EQU 42H ;Read Subchannel (optional) SCSI_READ_TOC EQU 43H ;Read TOC (optional) ;*************************************************************************** ; Commands Unique to Scanner Devices ;*************************************************************************** SCSI_GETDBSTAT EQU 34H ;Get Data Buffer Status (optional) SCSI_GETWINDOW EQU 25H ;Get Window (optional) SCSI_OBJECTPOS EQU 31H ;Object Postion (optional) SCSI_SCAN EQU 1BH ;Scan (optional) SCSI_SETWINDOW EQU 24H ;Set Window (MANDATORY) ;*************************************************************************** ; Commands Unique to Optical Memory Devices ;*************************************************************************** SCSI_UpdateBlk EQU 3DH ;Update Block (optional) ;*************************************************************************** ; Commands Unique to Medium Changer Devices ;*************************************************************************** SCSI_EXCHMEDIUM EQU A6H ;Exchange Medium (optional) SCSI_INITELSTAT EQU 07H ;Initialize Element Status (optional) SCSI_POSTOELEM EQU 2BH ;Position to Element (optional) SCSI_REQ_VE_ADD EQU B5H ;Request Volume Element Address (optional) SCSI_SENDVOLTAG EQU B6H ;Send Volume Tag (optional) ;*************************************************************************** ; Commands Unique to Communication Devices ;*************************************************************************** SCSI_GET_MSG_6 EQU 08H ;Get Message 6-Byte (MANDATORY) SCSI_GET_MSG_10 EQU 28H ;Get Message 10-Byte (optional) SCSI_GET_MSG_12 EQU A8H ;Get Message 12-Byte (optional) SCSI_SND_MSG_6 EQU 0AH ;Send Message 6-Byte (MANDATORY) SCSI_SND_MSG_10 EQU 2AH ;Send Message 10-Byte (optional) SCSI_SND_MSG_12 EQU AAH ;Send Message 12-Byte (optional) ;\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ ; ; END OF SCSI COMMAND OPCODES ; ;/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/ ;*************************************************************************** ; Request Sense Data Format ;*************************************************************************** SENSE_DATA_FMT STRUC ErrorCode DB ? ;Error Code (70H or 71H) SegmentNum DB ? ;Number of current segment descriptor SenseKey DB ? ;Sense Key(See bit definitions too) InfoByte0 DB ? ;Information MSB InfoByte1 DB ? ;Information MID InfoByte2 DB ? ;Information MID InfoByte3 DB ? ;Information LSB AddSenLen DB ? ;Additional Sense Length ComSpecInf0 DB ? ;Command Specific Information MSB ComSpecInf1 DB ? ;Command Specific Information MID ComSpecInf2 DB ? ;Command Specific Information MID ComSpecInf3 DB ? ;Command Specific Information LSB AddSenseCode DB ? ;Additional Sense Code AddSenQual DB ? ;Additional Sense Code Qualifier FieldRepUCode DB ? ;Field Replaceable Unit Code SenKeySpec15 DB ? ;Sense Key Specific 15th byte SenKeySpec16 DB ? ;Sense Key Specific 16th byte SenKeySpec17 DB ? ;Sense Key Specific 17th byte AddSenseBytes DB ? ;Additional Sense Bytes SENSE_DATA_FMT ENDS ;*************************************************************************** ; REQUEST SENSE ERROR CODE ;*************************************************************************** SERROR_CURRENT EQU 70H ;Current Errors SERROR_DEFERED EQU 71H ;Deferred Errors ;*************************************************************************** ; REQUEST SENSE BIT DEFINITIONS ;*************************************************************************** SENSE_VALID EQU 80H ;Byte 0 Bit 7 SENSE_FILEMRK EQU 80H ;Byte 2 Bit 7 SENSE_EOM EQU 40H ;Byte 2 Bit 6 SENSE_ILI EQU 20H ;Byte 2 Bit 5 ;*************************************************************************** ; REQUEST SENSE SENSE KEY DEFINITIONS ;*************************************************************************** KEY_NOSENSE EQU 00H ;No Sense KEY_RECERROR EQU 01H ;Recovered Error KEY_NOTREADY EQU 02H ;Not Ready KEY_MEDIUMERR EQU 03H ;Medium Error KEY_HARDERROR EQU 04H ;Hardware Error KEY_ILLGLREQ EQU 05H ;Illegal Request KEY_UNITATT EQU 06H ;Unit Attention KEY_DATAPROT EQU 07H ;Data Protect KEY_BLANKCHK EQU 08H ;Blank Check KEY_VENDSPEC EQU 09H ;Vendor Specific KEY_COPYABORT EQU 0AH ;Copy Abort KEY_EQUAL EQU 0CH ;Equal (Search) KEY_VOLOVRFLW EQU 0DH ;Volume Overflow KEY_MISCOMP EQU 0EH ;Miscompare (Search) KEY_RESERVED EQU 0FH ;Reserved ;*************************************************************************** ; PERIPHERAL DEVICE TYPE DEFINITIONS ;*************************************************************************** DTYPE_DASD EQU 00H ;Disk Device DTYPE_SEQD EQU 01H ;Tape Device DTYPE_PRNT EQU 02H ;Printer DTYPE_PROC EQU 03H ;Processor DTYPE_WORM EQU 04H ;Write-once read-multiple DTYPE_CROM EQU 05H ;CD-ROM device DTYPE_CDROM EQU 05H ;CD-ROM device DTYPE_SCAN EQU 06H ;Scanner device DTYPE_OPTI EQU 07H ;Optical memory device DTYPE_JUKE EQU 08H ;Medium Changer device DTYPE_COMM EQU 09H ;Communications device DTYPE_RESL EQU 0AH ;Reserved (low) DTYPE_RESH EQU 1EH ;Reserved (high) DTYPE_UNKNOWN EQU 1FH ;Unknown or no device type ;*************************************************************************** ; ANSI APPROVED VERSION DEFINITIONS ;*************************************************************************** ANSI_MAYBE EQU 0H ;Device may or may not be ANSI approved stand ANSI_SCSI1 EQU 1H ;Device complies to ANSI X3.131-1986 (SCSI-1) ANSI_SCSI2 EQU 2H ;Device complies to SCSI-2 ANSI_RESLO EQU 3H ;Reserved (low) ANSI_RESHI EQU 7H ;Reserved (high)