aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Input/in_cdda/windac/SCSIDEFS.H
blob: 5012429f115e69214d45dc7fbfd15bf4dacb42ff (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
//**********************************************************************
//
// Name: 				SCSIDEFS.H
//
// Description:				SCSI definitions ('C' Language)
//
//**********************************************************************
//**********************************************************************
//					%%% TARGET STATUS VALUES %%%
//**********************************************************************
#define STATUS_GOOD		0x00		// Status Good
#define STATUS_CHKCOND	0x02		// Check Condition
#define STATUS_CONDMET	0x04		// Condition Met
#define STATUS_BUSY		0x08		// Busy
#define STATUS_INTERM		0x10		// Intermediate
#define STATUS_INTCDMET	0x14		// Intermediate-condition met
#define STATUS_RESCONF		0x18		// Reservation conflict
#define STATUS_COMTERM	0x22		// Command Terminated
#define STATUS_QFULL		0x28		// Queue full
//**********************************************************************
//				%%% SCSI MISCELLANEOUS EQUATES %%%
//**********************************************************************
#define MAXLUN			7		// Maximum Logical Unit Id
#define MAXTARG			7		// Maximum Target Id
#define MAX_SCSI_LUNS		64		// Maximum Number of SCSI LUNs
#define MAX_NUM_HA		8		// Maximum Number of SCSI HA's
///\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
//
//					%%% SCSI COMMAND OPCODES %%%
//
///\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
//**********************************************************************
//				%%% Commands for all Device Types %%%
//**********************************************************************
#define SCSI_CHANGE_DEF	0x40		// Change Definition (Optional)
#define SCSI_COMPARE		0x39		// Compare (O)
#define SCSI_COPY			0x18		// Copy (O)
#define SCSI_COP_VERIFY		0x3A		// Copy and Verify (O)
#define SCSI_INQUIRY		0x12		// Inquiry (MANDATORY)
#define SCSI_LOG_SELECT	0x4C		// Log Select (O)
#define SCSI_LOG_SENSE		0x4D		// Log Sense (O)
#define SCSI_MODE_SEL6		0x15	// Mode Select 6-byte (Device Specific)
#define SCSI_MODE_SEL10	0x55	// Mode Select 10-byte (Device Specific)
#define SCSI_MODE_SEN6		0x1A	// Mode Sense 6-byte (Device Specific)
#define SCSI_MODE_SEN10	0x5A	// Mode Sense 10-byte (Device Specific)
#define SCSI_READ_BUFF		0x3C	// Read Buffer (O)
#define SCSI_REQ_SENSE		0x03		// Request Sense (MANDATORY)
#define SCSI_SEND_DIAG		0x1D		// Send Diagnostic (O)
#define SCSI_RCV_DIAG		0x1C		// Receive Diagnostic Results (O)
#define SCSI_TST_U_RDY		0x00		// Test Unit Ready (MANDATORY)
#define SCSI_WRITE_BUFF		0x3B		// Write Buffer (O)
//**********************************************************************
//			 %%% Commands Unique to Direct Access Devices %%%
//**********************************************************************
#define SCSI_FORMAT		0x04		// Format Unit (MANDATORY)
#define SCSI_LCK_UN_CAC	0x36		// Lock Unlock Cache (O)
#define SCSI_PREFETCH		0x34		// Prefetch (O)
#define SCSI_MED_REMOVL	0x1E	// Prevent/Allow medium Removal (O)
#define SCSI_READ6		0x08		// Read 6-byte (MANDATORY)
#define SCSI_READ10		0x28		// Read 10-byte (MANDATORY)
#define SCSI_RD_CAPAC		0x25		// Read Capacity (MANDATORY)
#define SCSI_RD_DEFECT		0x37		// Read Defect Data (O)
#define SCSI_READ_LONG		0x3E		// Read Long (O)
#define SCSI_REASS_BLK		0x07		// Reassign Blocks (O)
#define SCSI_RELEASE		0x17		// Release Unit (MANDATORY)
#define SCSI_RESERVE		0x16		// Reserve Unit (MANDATORY)
#define SCSI_REZERO		0x01		// Rezero Unit (O)
#define SCSI_SRCH_DAT_E	0x31		// Search Data Equal (O)
#define SCSI_SRCH_DAT_H	0x30		// Search Data High (O)
#define SCSI_SRCH_DAT_L	0x32		// Search Data Low (O)
#define SCSI_SEEK6			0x0B		// Seek 6-Byte (O)
#define SCSI_SEEK10		0x2B		// Seek 10-Byte (O)
#define SCSI_SET_LIMIT		0x33		// Set Limits (O)
#define SCSI_START_STP		0x1B		// Start/Stop Unit (O)
#define SCSI_SYNC_CACHE	0x35		// Synchronize Cache (O)
#define SCSI_VERIFY		0x2F		// Verify (O)
#define SCSI_WRITE6		0x0A		// Write 6-Byte (MANDATORY)
#define SCSI_WRITE10		0x2A		// Write 10-Byte (MANDATORY)
#define SCSI_WRT_VERIFY	0x2E		// Write and Verify (O)
#define SCSI_WRITE_LONG	0x3F		// Write Long (O)
#define SCSI_WRITE_SAME	0x41		// Write Same (O)
//**********************************************************************
//		%%% Commands Unique to Sequential Access Devices %%%
//**********************************************************************
#define SCSI_ERASE			0x19		// Erase (MANDATORY)
#define SCSI_LOAD_UN		0x1B		// Load/Unload (O)
#define SCSI_LOCATE		0x2B		// Locate (O)
#define SCSI_RD_BLK_LIM		0x05	// Read Block Limits (MANDATORY)
#define SCSI_READ_POS		0x34		// Read Position (O)
#define SCSI_READ_REV		0x0F		// Read Reverse (O)
#define SCSI_REC_BF_DAT		0x14		// Recover Buffer Data (O)
#define SCSI_REWIND		0x01		// Rewind (MANDATORY)
#define SCSI_SPACE			0x11		// Space (MANDATORY)
#define SCSI_VERIFY_T		0x13		// Verify (Tape) (O)
#define SCSI_WRT_FILE		0x10		// Write Filemarks (MANDATORY)
#define SCSI_PARTITION		0x0D		// DAT/QFA Partition Select
#define SCSI_READWRITE		0x06		// Set Read/Write Parameters
//**********************************************************************
//			%%% Commands Unique to Printer Devices %%%
//**********************************************************************
#define SCSI_PRINT		0x0A		// Print (MANDATORY)
#define SCSI_SLEW_PNT	0x0B		// Slew and Print (O)
#define SCSI_STOP_PNT	0x1B		// Stop Print (O)
#define SCSI_SYNC_BUFF	0x10		// Synchronize Buffer (O)
//**********************************************************************
//			%%% Commands Unique to Processor Devices %%%
//**********************************************************************
#define SCSI_RECEIVE	0x08		// Receive (O)
#define SCSI_SEND		0x0A		// Send (O)
//**********************************************************************
//			%%% Commands Unique to Write-Once Devices %%%
//**********************************************************************
#define SCSI_MEDIUM_SCN	0x38		// Medium Scan (O)
#define SCSI_SRCHDATE10	0x31		// Search Data Equal 10-Byte (O)
#define SCSI_SRCHDATE12	0xB1		// Search Data Equal 12-Byte (O)
#define SCSI_SRCHDATH10	0x30		// Search Data High 10-Byte (O)
#define SCSI_SRCHDATH12	0xB0		// Search Data High 12-Byte (O)
#define SCSI_SRCHDATL10	0x32		// Search Data Low 10-Byte (O)
#define SCSI_SRCHDATL12	0xB2		// Search Data Low 12-Byte (O)
#define SCSI_SET_LIM_10		0x33		// Set Limits 10-Byte (O)
#define SCSI_SET_LIM_12		0xB3		// Set Limits 10-Byte (O)
#define SCSI_VERIFY10		0x2F		// Verify 10-Byte (O)
#define SCSI_VERIFY12		0xAF		// Verify 12-Byte (O)
#define SCSI_WRITE12		0xAA		// Write 12-Byte (O)
#define SCSI_WRT_VER10		0x2E		// Write and Verify 10-Byte (O)
#define SCSI_WRT_VER12		0xAE		// Write and Verify 12-Byte (O)
//**********************************************************************
//				%%% Commands Unique to CD-ROM Devices %%%
//**********************************************************************
#define SCSI_PLAYAUD_10	0x45		// Play Audio 10-Byte (O)
#define SCSI_PLAYAUD_12	0xA5		// Play Audio 12-Byte 12-Byte (O)
#define SCSI_PLAYAUDMSF	0x47		// Play Audio MSF (O)
#define SCSI_PLAYA_TKIN		0x48		// Play Audio Track/Index (O)
#define SCSI_PLYTKREL10		0x49		// Play Track Relative 10-Byte (O)
#define SCSI_PLYTKREL12		0xA9		// Play Track Relative 12-Byte (O)
#define SCSI_READCDCAP	0x25	// Read CD-ROM Capacity (MANDATORY)
#define SCSI_READHEADER	0x44		// Read Header (O)
#define SCSI_SUBCHANNEL	0x42		// Read Subchannel (O)
#define SCSI_READ_TOC		0x43		// Read TOC (O)
//**********************************************************************
//				%%% Commands Unique to Scanner Devices %%%
//**********************************************************************
#define SCSI_GETDBSTAT		0x34		// Get Data Buffer Status (O)
#define SCSI_GETWINDOW	0x25		// Get Window (O)
#define SCSI_OBJECTPOS		0x31		// Object Position (O)
#define SCSI_SCAN			0x1B		// Scan (O)
#define SCSI_SETWINDOW		0x24		// Set Window (MANDATORY)
//**********************************************************************
//			%%% Commands Unique to Optical Memory Devices %%%
//**********************************************************************
#define SCSI_UpdateBlk		0x3D		// Update Block (O)
//**********************************************************************
//			%%% Commands Unique to Medium Changer Devices %%%
//**********************************************************************
#define SCSI_EXCHMEDIUM	0xA6		// Exchange Medium (O)
#define SCSI_INITELSTAT		0x07		// Initialize Element Status (O)
#define SCSI_POSTOELEM		0x2B		// Position to Element (O)
#define SCSI_REQ_VE_ADD	0xB5	// Request Volume Element Address (O)
#define SCSI_SENDVOLTAG	0xB6		// Send Volume Tag (O)
//**********************************************************************
//			 %%% Commands Unique to Communication Devices %%%
//**********************************************************************
#define SCSI_GET_MSG_6		0x08	// Get Message 6-Byte (MANDATORY)
#define SCSI_GET_MSG_10		0x28		// Get Message 10-Byte (O)
#define SCSI_GET_MSG_12		0xA8		// Get Message 12-Byte (O)
#define SCSI_SND_MSG_6		0x0A	// Send Message 6-Byte (MANDATORY)
#define SCSI_SND_MSG_10		0x2A		// Send Message 10-Byte (O)
#define SCSI_SND_MSG_12		0xAA		// Send Message 12-Byte (O)
///\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
//
//				 %%% END OF SCSI COMMAND OPCODES %%%
//
///\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/
//**********************************************************************
//				%%% Request Sense Data Format %%%
//**********************************************************************
typedef struct {
	BYTE		ErrorCode;			// Error Code (70H or 71H)
	BYTE		SegmentNum;		// Number of current segment descriptor
	BYTE		SenseKey;			// Sense Key(See bit definitions too)
	BYTE		InfoByte0;				// Information MSB
	BYTE		InfoByte1;				// Information MID
	BYTE		InfoByte2;				// Information MID
	BYTE		InfoByte3;				// Information LSB
	BYTE		AddSenLen;				// Additional Sense Length
	BYTE		ComSpecInf0;		// Command Specific Information MSB
	BYTE		ComSpecInf1;		// Command Specific Information MID
	BYTE		ComSpecInf2;		// Command Specific Information MID
	BYTE		ComSpecInf3;		// Command Specific Information LSB
	BYTE		AddSenseCode;		// Additional Sense Code
	BYTE		AddSenQual;			// Additional Sense Code Qualifier
//	BYTE		FieldRepUCode;		// Field Replaceable Unit Code
//	BYTE		SenKeySpec15;		// Sense Key Specific 15th byte
//	BYTE		SenKeySpec16;		// Sense Key Specific 16th byte
//	BYTE		SenKeySpec17;		// Sense Key Specific 17th byte
//	BYTE		AddSenseBytes;		// Additional Sense Bytes
} SENSE_DATA_FMT;
//**********************************************************************
//				%%% REQUEST SENSE ERROR CODE %%%
//**********************************************************************
#define SERROR_CURRENT			0x70		// Current Errors
#define SERROR_DEFERED			0x71		// Deferred Errors
//**********************************************************************
//				%%% REQUEST SENSE BIT DEFINITIONS %%%
//**********************************************************************
#define SENSE_VALID			0x80		// Byte 0 Bit 7
#define SENSE_FILEMRK			0x80		// Byte 2 Bit 7
#define SENSE_EOM				0x40		// Byte 2 Bit 6
#define SENSE_ILI				0x20		// Byte 2 Bit 5
//**********************************************************************
//			%%% REQUEST SENSE SENSE KEY DEFINITIONS %%%
//**********************************************************************
#define KEY_NOSENSE		0x00		// No Sense
#define KEY_RECERROR		0x01			// Recovered Error
#define KEY_NOTREADY		0x02			// Not Ready
#define KEY_MEDIUMERR		0x03			// Medium Error
#define KEY_HARDERROR		0x04			// Hardware Error
#define KEY_ILLGLREQ		0x05			// Illegal Request
#define KEY_UNITATT		0x06			// Unit Attention
#define KEY_DATAPROT		0x07			// Data Protect
#define KEY_BLANKCHK		0x08			// Blank Check
#define KEY_VENDSPEC		0x09			// Vendor Specific
#define KEY_COPYABORT		0x0A			// Copy Abort
#define KEY_ABORT		0x0B			// Abort
#define KEY_EQUAL		0x0C			// Equal (Search)
#define KEY_VOLOVRFLW		0x0D			// Volume Overflow
#define KEY_MISCOMP		0x0E			// Miscompare (Search)
#define KEY_RESERVED		0x0F			// Reserved
//**********************************************************************
//			%%% PERIPHERAL DEVICE TYPE DEFINITIONS %%%
//**********************************************************************
#define DTYPE_DASD		0x00			// Disk Device
#define DTYPE_SEQD		0x01			// Tape Device
#define DTYPE_PRNT		0x02			// Printer
#define DTYPE_PROC		0x03			// Processor
#define DTYPE_WORM		0x04			// Write-once read-multiple
#define DTYPE_CROM		0x05			// CD-ROM device
#define DTYPE_SCAN		0x06			// Scanner device
#define DTYPE_OPTI		0x07			// Optical memory device
#define DTYPE_JUKE		0x08			// Medium Changer device
#define DTYPE_COMM		0x09			// Communications device
#define DTYPE_RESL		0x0A			// Reserved (low)
#define DTYPE_RESH		0x1E			// Reserved (high)
#define DTYPE_UNKNOWN	0x1F			// Unknown or no device type
//**********************************************************************
//			%%% ANSI APPROVED VERSION DEFINITIONS %%%
//**********************************************************************
#define ANSI_MAYBE	0x0	// Device may or may not be ANSI approved stand
#define ANSI_SCSI1		0x1	// Device complies to ANSI X3.131-1986 (SCSI-1)
#define ANSI_SCSI2		0x2		// Device complies to SCSI-2
#define ANSI_RESLO	0x3		// Reserved (low)
#define ANSI_RESHI		0x7		// Reserved (high)