📄 scsi.lst
字号:
C51 COMPILER V7.50 SCSI 12/29/2005 19:53:02 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE SCSI
OBJECT MODULE PLACED IN SCSI.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil\C51\BIN\C51.EXE SCSI.C BROWSE DEBUG OBJECTEXTEND
line level source
1 #include "reg52.h"
2 #include "d12config.h"
3 #include "D12CI.h"
4 #include "Chap_9.h"
5 #include "SCSI.h"
6 #include "NFLASH.h"
7
8
9 INT8U BULKLength;
10 unsigned char BulkPhase = 0;
11 unsigned char BulkStausPhase;
12 unsigned int dCBWDaTrLen;
13 unsigned int WritePageBuffLen = 0;
14 unsigned char idata setcsw[13];
15 //unsigned char CommandPhase = 1
16 //unsigned char xdata WritePageBuff[512];
17
18 /***********************************************************
19 SCSI命令回复代码
20 ***********************************************************/
21 code INT8U SCSI_INQUIRY[36]=
22 {
23 0x00,
24 0x80,
25 0x00,
26 0x01,
27
28 0x1f,
29
30 0x00, //reserved
31 0x00, //reserved
32 0x00, //reserved
33
34 0x20,
35 0x20, // // 10
36 0x20, //
37 0x20, //
38 0x20,
39 0x20, //
40 0x20, //
41 0x20, //
42
43 0x51, //Q
44 0x75, //u
45 0x62, //b
46 0x65, //e
47 0x6C, //l
48 0x65, //e
49 0x79, //3//
50 0x20, //
51 0x41,//
52 0x56, //
53 0x52, //
54 0x20, //
55 0x44,
C51 COMPILER V7.50 SCSI 12/29/2005 19:53:02 PAGE 2
56 0x49, //30
57 0x53, //
58 0x4b, //
59
60 0x31, //ascII "1"
61 0x2e, // "."
62 0x30, // "0"
63 0x30 // "0" //version : 1.00
64 };//
65
66 code INT8U SCSIDATA_ReadFormatCapacities[12]=
67 {
68 0x00,//reserved
69 0x00,//reserved
70 0x00,//reserved
71
72 0x08,//Capacity List Length
73
74 0x00, //number of block MSB
75 0x00, //number of block |
76 0xff, //number of block |
77 0xff, //number of block LSB // 256MBYTE
78
79 0x03, //no cartridge in drive
80
81 0x00, // length of block// 10
82 0x02, //
83 0x00//
84 };
85
86 code INT8U SCSIDATA_ReadCapacity[8]=
87 {
88 0x00, //last logic block address MSB
89 0x00, //last logic block address |
90 0xf9, //last logic block address |
91 0xff,//last logic block address LSB
92
93 0x00, //length of block MSB
94 0x00, //length of block |
95 0x02, //length of block |
96 0x00//length of block LSB
97 };
98
99 code INT8U SCSIDATA_RequestSense[18]=
100 {
101 0x70,
102
103 0x00,
104 0x05,
105
106 0x00,
107 0x00,
108 0x00,
109 0x00,
110
111 0x0a,
112
113 0x00,
114 0x00,
115 0x00,
116 0x00,
117
C51 COMPILER V7.50 SCSI 12/29/2005 19:53:02 PAGE 3
118 0x20,
119 0x00,
120
121 0x00,
122 0x00,
123 0x00,
124 0x00
125 };
126
127 unsigned char code SCSIDATA_Sense[48]=
128 {
129 0x03,
130 0x00,
131 0x00,
132 0x00,
133 /*
134 0x00,
135 0x00,
136 0x00,
137 0x00,
138 0x00,
139 0x00,
140 0x02,
141 0x00,
142 */
143 0x01,
144 0x0a,
145 0x00,
146 0x10,
147 0x00,
148 0x00,
149 0x00,
150 0x00,
151 0x02,
152 0x00,
153 0x00,
154 0x00, //page 1
155 0x05,//page 2
156 0x1e,
157 0x0f,
158 0xa0,
159 0x04,
160 0x10,
161 0x02,
162 0x00,
163 0x00,
164 0xfa,
165 0x00,
166 0x00,
167 0x00,
168 0x00,
169 0x00,
170 0x00,
171 0x00,
172 0x00,
173 0x00,
174 0x00,
175 0x00,
176 0x00,
177 0x00,
178 0x00,
179 0x00,
C51 COMPILER V7.50 SCSI 12/29/2005 19:53:02 PAGE 4
180 0x00,
181 0x00,
182 0x00,
183 0x00,
184 0x00,
185 0x00,
186 0x00
187 };
188
189
190 /************************************************************
191 ** 函数名称: BULK_submit()
192 ** 功能描述: BULK端点传输提交
193 ** 输 入: 无
194 ** 输 出: 无
195
196 **修改人:胡琦宗
197 **修改日期:2005.11.22
198 **修改说明:创建
199 ************************************************************/
200
201 void BULK_submit(unsigned char len)
202 {
203 1 INT8U i;
204 1 if (64 > len)
205 1 i = len;
206 1 else i = 64;
207 1 D12_WriteEndpoint(5, i,ControlData.pData);
208 1 ControlData.pData += i;
209 1 BULKLength -= i;
210 1 }
211
212 /************************************************************
213 **函数功能:处理PC发送的批量传输包
214 **函数输入参数及说明:接收数据长度
215
216 **函数返回值:无
217 **在本函数以外定义的变量:
218 **调用的函数说明:无
219
220 **修改人:胡琦宗
221 **修改日期:2005.11.22
222 **修改说明:创建
223 *************************************************************/
224
225 void Bulk_Out_Packet()
226 {
227 1
228 1 if (BulkPhase == CommandPhase)
229 1 {
230 2 Usb_BoCommand();
231 2 }
232 1 else if (BulkPhase == OutDataPhase)
233 1 {
234 2 Usb_BoBulkInData();
235 2 }
236 1
237 1 }
238
239
240
241 /************************************************************
C51 COMPILER V7.50 SCSI 12/29/2005 19:53:02 PAGE 5
242 **函数功能:SCSI命令处理
243 **函数输入参数及说明:无
244
245
246 **函数返回值:无
247 **在本函数以外定义的变量:
248 **调用的函数说明:无
249
250 **修改人:胡琦宗
251 **修改日期:2005.11.22
252 **修改说明:创建
253 *************************************************************/
254
255 void Usb_BoCommand(void){
256 1 dCBWDaTrLen = (ControlData.pData[8]<<8 + ControlData.pData[9]);
257 1
258 1 switch (ControlData.dataBuffer[15])
259 1 {
260 2 case 0x00:
261 2 SCSICMD_TestUnitReady();
262 2 BulkStausPhase = InCSWPhase;
263 2 break;
264 2 case 0x03:
265 2 SCSICMD_RequestSense();
266 2 BulkStausPhase=InCSWPhase;
267 2 break;
268 2 case 0x12:
269 2
270 2 SCSICMD_Inquiry();
271 2 BulkStausPhase = InCSWPhase;
272 2 break;
273 2 case 0x1a:
274 2 SCSICMD_ModeSense06();
275 2 BulkStausPhase=InCSWPhase;
276 2 break;
277 2 case 0x1e:
278 2 SCSICMD_PreventAllowMediumRemoval();
279 2 BulkStausPhase=InCSWPhase;
280 2 break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -