📄 tpbulk.lst
字号:
22 =2 #define SPC_CMD_REQUESTSENSE 0x03
23 =2 #define SPC_CMD_RESERVE6 0x16
24 =2 #define SPC_CMD_TESTUNITREADY 0x00
25 =2 #define SPC_CMD_WRITEBUFFER 0x3B
26 =2 #define SPC_CMD_READLONG 0x23
27 =2
28 =2
29 =2 /*
30 =2 // ATAPI Command Descriptor Block - 13 Bytes
31 =2 */
32 =2
33 =2 typedef struct _READ_10 {
34 =2 UINT8 OperationCode;
35 =2 UINT8 Reserved1;
36 =2 UINT8 LBA_3;
37 =2 UINT8 LBA_2;
38 =2 UINT8 LBA_1;
39 =2 UINT8 LBA_0;
40 =2 UINT8 Reserved2;
41 =2 UINT8 XferLen_1;
42 =2 UINT8 XferLen_0;
43 =2 UINT8 Reserved3[3];
44 =2 } READ_10, *pREAD_10;
45 =2
46 =2 typedef struct _WRITE_10 {
47 =2 UINT8 OperationCode;
48 =2 UINT8 Reserved1;
49 =2 UINT8 LBA_3;
50 =2 UINT8 LBA_2;
51 =2 UINT8 LBA_1;
52 =2 UINT8 LBA_0;
53 =2 UINT8 Reserved2;
C51 COMPILER V8.02 TPBULK 09/19/2006 15:01:23 PAGE 11
54 =2 UINT8 XferLen_1;
55 =2 UINT8 XferLen_0;
56 =2 UINT8 Reserved3[3];
57 =2 } WRITE_10, *pWRITE_10;
58 =2
59 =2 typedef struct _MODE_SENSE_10 {
60 =2 UINT8 OperationCode;
61 =2 UINT8 Reserved1;
62 =2 UINT8 PageCode : 6;
63 =2 UINT8 Pc : 2;
64 =2 UINT8 Reserved2[4];
65 =2 UINT8 ParameterListLengthMsb;
66 =2 UINT8 ParameterListLengthLsb;
67 =2 UINT8 Reserved3[3];
68 =2 } MODE_SENSE_10, *pMODE_SENSE_10;
69 =2
70 =2 typedef struct _MODE_SELECT_10 {
71 =2 UINT8 OperationCode;
72 =2 UINT8 Reserved1 : 4;
73 =2 UINT8 PFBit : 1;
74 =2 UINT8 Reserved2 : 3;
75 =2 UINT8 Reserved3[5];
76 =2 UINT8 ParameterListLengthMsb;
77 =2 UINT8 ParameterListLengthLsb;
78 =2 UINT8 Reserved4[3];
79 =2 } MODE_SELECT_10, *pMODE_SELECT_10;
80 =2 /*
81 =2 ////////////////////////////////////////////////////////////////////////////////////
82 =2 // Command Descriptor Block - max = 16 Bytes
83 =2 // _RBC : Reduced Block Command
84 =2 // _SPC : SPC-2 SCSI primary Command - 2
85 =2 ////////////////////////////////////////////////////////////////////////////////////
86 =2 */
87 =2
88 =2 /*
89 =2 // Generic
90 =2 */
91 =2 typedef struct _GENERIC_CDB {
92 =2 UINT8 OperationCode;
93 =2 UINT8 Reserved[15];
94 =2 } GENERIC_CDB,*pGENERIC_CDB;
95 =2
96 =2 typedef struct _GENERIC_RBC {
97 =2 UINT8 OperationCode;
98 =2 UINT8 Reserved[8];
99 =2 UINT8 Control;
100 =2 } GENERIC_RBC,*pGENERIC_RBC;
101 =2
102 =2 /*
103 =2 // format unit
104 =2 */
105 =2 typedef struct _FORMAT_RBC {
106 =2 UINT8 OperationCode; // 04H
107 =2 UINT8 VendorSpecific;
108 =2 UINT8 Increment : 1;
109 =2 UINT8 PercentorTime : 1;
110 =2 UINT8 Progress : 1;
111 =2 UINT8 Immediate : 1;
112 =2 UINT8 VendorSpecific1 : 4;
113 =2 UINT8 Reserved2[2];
114 =2 UINT8 Control;
115 =2 } FORMAT_RBC, *pFORMAT_RBC;
C51 COMPILER V8.02 TPBULK 09/19/2006 15:01:23 PAGE 12
116 =2
117 =2
118 =2 /*
119 =2 // Read Command
120 =2 */
121 =2 typedef struct _READ_RBC {
122 =2 UINT8 OperationCode; // 10H
123 =2 UINT8 VendorSpecific;
124 =2 union{
125 =2 struct
126 =2 {
127 =2 UINT8 LBA_3;
128 =2 UINT8 LBA_2;
129 =2 UINT8 LBA_1;
130 =2 UINT8 LBA_0;
131 =2 } LBA_W8 ;
132 =2
133 =2 UINT32 LBA_W32;
134 =2 }LBA;
135 =2 UINT8 Reserved;
136 =2 //UINT8 XferLength_1;
137 =2 //UINT8 XferLength_0;
138 =2 UINT16 XferLength;
139 =2 UINT8 Control;
140 =2 //UINT8 Reserved1[3];
141 =2 } READ_RBC, *pREAD_RBC;
142 =2
143 =2
144 =2 /*
145 =2 // Read Capacity Data - returned in Big Endian format
146 =2 */
147 =2 typedef struct _READ_CAPACITY_DATA {
148 =2
149 =2 UINT8 LBA_3;
150 =2 UINT8 LBA_2;
151 =2 UINT8 LBA_1;
152 =2 UINT8 LBA_0;
153 =2
154 =2 UINT8 BlockLen_3;
155 =2 UINT8 BlockLen_2;
156 =2 UINT8 BlockLen_1;
157 =2 UINT8 BlockLen_0;
158 =2 } READ_CAPACITY_DATA, *pREAD_CAPACITY_DATA;
159 =2 //////////////////////////////////////////////////
160 =2 typedef struct _READ_LONG_CMD{
161 =2 UINT8 OperationCode;
162 =2 UINT8 LogicalUnitNum :3;
163 =2 UINT8 RES_1 :5;
164 =2 UINT8 RES_2;
165 =2 UINT8 RES_3;
166 =2 UINT8 RES_4;
167 =2 UINT8 RES_5;
168 =2 UINT8 RES_6;
169 =2 UINT16 AllocationLen;
170 =2 UINT8 RES_7;
171 =2 UINT8 RES_8;
172 =2 UINT8 RES_9;
173 =2 }READ_LONG_CMD, *pREAD_LONG_CMD;
174 =2
175 =2 typedef struct _READ_LONG {
176 =2
177 =2 UINT8 RES_1;
C51 COMPILER V8.02 TPBULK 09/19/2006 15:01:23 PAGE 13
178 =2 UINT8 RES_2;
179 =2 UINT8 RES_3;
180 =2 UINT8 CAP_LIST_LEN;
181 =2
182 =2 UINT8 LBA_3;
183 =2 UINT8 LBA_2;
184 =2 UINT8 LBA_1;
185 =2 UINT8 LBA_0;
186 =2
187 =2 UINT8 Descripter;
188 =2 UINT8 BlockLen_2;
189 =2 UINT8 BlockLen_1;
190 =2 UINT8 BlockLen_0;
191 =2 } READ_LONG, *pREAD_LONG;
192 =2 /*
193 =2 // Read Capacity command
194 =2 */
195 =2 typedef struct _READ_CAPACITY_RBC {
196 =2 UINT8 OperationCode; /* 10H */
197 =2 union {
198 =2 FLEXI_INT32 l0[2];
199 =2 UINT32 l[2];
200 =2 READ_CAPACITY_DATA CapData; /* Reserved area, here is used as temp*/
201 =2 } tmpVar;
202 =2
203 =2 UINT8 Control;
204 =2 } READ_CAPACITY_RBC, *pREAD_CAPACITY_RBC;
205 =2
206 =2 typedef struct _READ_CAPACITY_RSP {
207 =2 UINT32 LastLBA;
208 =2 UINT32 BlockSize;
209 =2
210 =2 } READ_CAPACITY_RSP, *pREAD_CAPACITY_RSP;
211 =2 /*
212 =2 // START_STOP_UNIT
213 =2 */
214 =2 typedef struct _START_STOP_RBC {
215 =2 UINT8 OperationCode; /*1BH*/
216 =2 UINT8 Immediate: 1;
217 =2 UINT8 Reserved1 : 7;
218 =2 UINT8 Reserved2[2];
219 =2 union _START_STOP_FLAGS
220 =2 {
221 =2 struct
222 =2 {
223 =2 UINT8 Start : 1;
224 =2 UINT8 LoadEject : 1;
225 =2 UINT8 Reserved3 : 2;
226 =2 UINT8 PowerConditions: 4;
227 =2 } bits0;
228 =2
229 =2 struct
230 =2 {
231 =2 UINT8 MediumState : 2;
232 =2 UINT8 Reserved3 : 2;
233 =2 UINT8 PowerConditions: 4;
234 =2 } bits1;
235 =2 } Flags;
236 =2 UINT8 Control;
237 =2 } START_STOP_RBC, *pSTART_STOP_RBC;
238 =2
239 =2 /*
C51 COMPILER V8.02 TPBULK 09/19/2006 15:01:23 PAGE 14
240 =2 // Synchronize Cache
241 =2 */
242 =2
243 =2 typedef struct _SYNCHRONIZE_CACHE_RBC {
244 =2
245 =2 UINT8 OperationCode; // 0x35
246 =2 UINT8 Reserved[8];
247 =2 UINT8 Control;
248 =2
249 =2 } SYNCHRONIZE_CACHE_RBC, *pSYNCHRONIZE_CACHE_RBC;
250 =2
251 =2 /*
252 =2 // Write Command
253 =2 */
254 =2 typedef struct _WRITE_RBC {
255 =2 UINT8 OperationCode; // 2AH
256 =2 //UINT8 Reserved0 : 3;
257 =2 //UINT8 FUA : 1;
258 =2 //UINT8 Reserved1 : 4;
259 =2 UINT8 VendorSpecific;
260 =2 union{
261 =2 struct
262 =2 {
263 =2 UINT8 LBA_3;
264 =2 UINT8 LBA_2;
265 =2 UINT8 LBA_1;
266 =2 UINT8 LBA_0;
267 =2 } LBA_W8 ;
268 =2
269 =2 UINT32 LBA_W32;
270 =2 } LBA;
271 =2 UINT8 Reserved2;
272 =2 UINT16 XferLength;
273 =2 UINT8 Control;
274 =2 } WRITE_RBC, *pWRITE_RBC;
275 =2
276 =2 /*
277 =2 // VERIFY Command
278 =2 */
279 =2 typedef struct _VERIFY_RBC {
280 =2 UINT8 OperationCode; // 2FH
281 =2 UINT8 Reserved0;
282 =2 UINT8 LBA_3; // Big Endian
283 =2 UINT8 LBA_2;
284 =2 UINT8 LBA_1;
285 =2 UINT8 LBA_0;
286 =2 UINT8 Reserved1;
287 =2 UINT8 VerifyLength_1; // Big Endian
288 =2 UINT8 VerifyLength_0;
289 =2 UINT8 Control;
290 =2 } VERIFY_RBC, *pVERIFY_RBC;
291 =2
292 =2
293 =2 /*
294 =2 //***********************************************************************************
295 =2 // SPC-2 of SCSI-3 commands
296 =2 //***********************************************************************************
297 =2 */
298 =2
299 =2 /*
300 =2 // INQUIRY Command
301 =2 */
C51 COMPILER V8.02 TPBULK 09/19/2006 15:01:23 PAGE 15
302 =2 typedef struct _INQUIRY_SPC {
303 =2 UINT8 OperationCode; // 12H
304 =2 UINT8 EnableVPD:1 ;
305 =2 UINT8 CmdSupportData:1 ;
306 =2 UINT8 Reserved0:6 ;
307 =2 UINT8 PageCode;
308 =2 UINT8 Reserved1;
309 =2 UINT8 AllocationLen;
310 =2 UINT8 Control;
311 =2 } INQUIRY_SPC, *pINQUIRY_SPC;
312 =2
313 =2 /*
314 =2 typedef struct _STD_INQUIRYDATA {
315 =2 UINT8 DeviceType : 5;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -