📄 fat32.lst
字号:
50 =2 UINT8 LBA_2;
51 =2 UINT8 LBA_1;
52 =2 UINT8 LBA_0;
53 =2 UINT8 Reserved2;
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;
C51 COMPILER V8.02 FAT32 09/19/2006 15:01:23 PAGE 11
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;
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;
C51 COMPILER V8.02 FAT32 09/19/2006 15:01:23 PAGE 12
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;
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;
C51 COMPILER V8.02 FAT32 09/19/2006 15:01:23 PAGE 13
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 /*
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;
C51 COMPILER V8.02 FAT32 09/19/2006 15:01:23 PAGE 14
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 */
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;
316 =2 UINT8 Reserved0 : 3;
317 =2
318 =2 UINT8 Reserved1 : 7;
319 =2 UINT8 RemovableMedia : 1;
320 =2
321 =2 UINT8 Reserved2;
322 =2
323 =2 UINT8 Reserved3 : 5;
324 =2 UINT8 NormACA : 1;
325 =2 UINT8 Obsolete0 : 1;
C51 COMPILER V8.02 FAT32 09/19/2006 15:01:23 PAGE 15
326 =2 UINT8 AERC : 1;
327 =2
328 =2 UINT8 Reserved4[3];
329 =2
330 =2 UINT8 SoftReset : 1;
331 =2 UINT8 CommandQueue : 1;
332 =2 UINT8 Reserved5 : 1;
333 =2 UINT8 LinkedCommands : 1;
334 =2 UINT8 Synchronous : 1;
335 =2 UINT8 Wide16Bit : 1;
336 =2 UINT8 Wide32Bit : 1;
337 =2 UINT8 RelativeAddressing : 1;
338 =2
339 =2 UINT8 VendorId[8];
340 =2
341 =2 UINT8 ProductId[16];
342 =2
343 =2 UINT8 ProductRevisionLevel[4];
344 =2
345 =2 // Above is 36 bytes
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -