📄 ide_drv.lst
字号:
218 3 Usb_write_byte(hdd_read_byte());
219 3 Usb_write_byte(hdd_read_byte());
220 3 Usb_write_byte(hdd_read_byte());
221 3 Usb_write_byte(hdd_read_byte());
222 3 Usb_write_byte(hdd_read_byte());
223 3 Usb_write_byte(hdd_read_byte());
224 3 Usb_write_byte(hdd_read_byte());
225 3 Usb_write_byte(hdd_read_byte());
226 3 Usb_write_byte(hdd_read_byte());
227 3 Usb_write_byte(hdd_read_byte());
228 3 Usb_write_byte(hdd_read_byte());
229 3 Usb_write_byte(hdd_read_byte());
230 3 Usb_write_byte(hdd_read_byte());
231 3 Usb_write_byte(hdd_read_byte());
232 3 Usb_write_byte(hdd_read_byte());
233 3 Usb_write_byte(hdd_read_byte());
234 3
235 3 Usb_set_TXRDY();
236 3 Usb_select_ep(EP_IN);
237 3 while (!Usb_tx_complete());
238 3 Usb_clear_TXCMPL();
239 3 }
240 2 hdd_read_close();
C51 COMPILER V7.50 IDE_DRV 02/16/2009 09:59:52 PAGE 5
241 2
242 2 return OK;
243 2 }
244 1 return KO;
245 1 }
246
247 /////////////////////////////////////////////////////////////////////
248 bit hdd_write_open(Uint32 hdd_sector)
249 {
250 1 INT8U head,cylinderh,cylinderl,sector;
251 1
252 1 u32MediaSector = hdd_sector;
253 1
254 1 head = ((Byte*)&u32MediaSector)[0];
255 1 cylinderh = ((Byte*)&u32MediaSector)[1];
256 1 cylinderl = ((Byte*)&u32MediaSector)[2];
257 1 sector = ((Byte*)&u32MediaSector)[3];
258 1
259 1 do{ACC = FILE7;} while(BSY);
260 1
261 1 FILE6 = (0xe0 | (head & 0x0f));
262 1 FILE5 = cylinderh; //high 2-bit cylinder
263 1 FILE4 = cylinderl; //low 8-bit cylinder
264 1 FILE3 = sector; //start sector
265 1 FILE2 = 1; //sector counter
266 1
267 1 WriteCommand(0x30);
268 1
269 1 do{ACC = FILE7;} while(BSY |! DRQ); //wait for noBUSY and data request
270 1
271 1 ACC = FILE7;
272 1 if (ERR)
273 1 return KO;
274 1
275 1 u16MediaBytePointer = 0;
276 1 return OK;
277 1 }
278
279
280 /////////////////////////////////////////////////////////////////////
281 bit hdd_write_byte(Byte hdd_data)
282 {
283 1 gl_media_buffer[u16MediaBytePointer ++] = hdd_data;
284 1 return OK;
285 1 }
286
287 /////////////////////////////////////////////////////////////////////
288 bit hdd_write_close(void)
289 {
290 1 INT16U i;
291 1
292 1 for(i=0; i<512;)
293 1 {
294 2 DAT16H = gl_media_buffer[i + 1];
295 2 FILE0 = gl_media_buffer[i];
296 2 i += 2;
297 2 DAT16H = gl_media_buffer[i + 1];
298 2 FILE0 = gl_media_buffer[i];
299 2 i += 2;
300 2 DAT16H = gl_media_buffer[i + 1];
301 2 FILE0 = gl_media_buffer[i];
302 2 i += 2;
C51 COMPILER V7.50 IDE_DRV 02/16/2009 09:59:52 PAGE 6
303 2 DAT16H = gl_media_buffer[i + 1];
304 2 FILE0 = gl_media_buffer[i];
305 2 i += 2;
306 2 DAT16H = gl_media_buffer[i + 1];
307 2 FILE0 = gl_media_buffer[i];
308 2 i += 2;
309 2 DAT16H = gl_media_buffer[i + 1];
310 2 FILE0 = gl_media_buffer[i];
311 2 i += 2;
312 2 DAT16H = gl_media_buffer[i + 1];
313 2 FILE0 = gl_media_buffer[i];
314 2 i += 2;
315 2 DAT16H = gl_media_buffer[i + 1];
316 2 FILE0 = gl_media_buffer[i];
317 2 i += 2;
318 2 }
319 1
320 1 do{ACC = FILE7;} while(BSY);
321 1 return OK;
322 1 }
323
324
325
326 /////////////////////////////////////////////////////////////////////
327 bit hdd_write_one_sector(Uint32 hdd_sector)
328 {
329 1 INT8U j;
330 1
331 1 Usb_select_ep(EP_OUT);
332 1
333 1 for (j=0; j<8; j++)
334 1 {
335 2 while(!Usb_rx_complete()); /* wait end of reception */
336 2
337 2 hdd_write_byte(Usb_read_byte());
338 2 hdd_write_byte(Usb_read_byte());
339 2 hdd_write_byte(Usb_read_byte());
340 2 hdd_write_byte(Usb_read_byte());
341 2 hdd_write_byte(Usb_read_byte());
342 2 hdd_write_byte(Usb_read_byte());
343 2 hdd_write_byte(Usb_read_byte());
344 2 hdd_write_byte(Usb_read_byte());
345 2 hdd_write_byte(Usb_read_byte());
346 2 hdd_write_byte(Usb_read_byte());
347 2 hdd_write_byte(Usb_read_byte());
348 2 hdd_write_byte(Usb_read_byte());
349 2 hdd_write_byte(Usb_read_byte());
350 2 hdd_write_byte(Usb_read_byte());
351 2 hdd_write_byte(Usb_read_byte());
352 2 hdd_write_byte(Usb_read_byte());
353 2 hdd_write_byte(Usb_read_byte());
354 2 hdd_write_byte(Usb_read_byte());
355 2 hdd_write_byte(Usb_read_byte());
356 2 hdd_write_byte(Usb_read_byte());
357 2 hdd_write_byte(Usb_read_byte());
358 2 hdd_write_byte(Usb_read_byte());
359 2 hdd_write_byte(Usb_read_byte());
360 2 hdd_write_byte(Usb_read_byte());
361 2 hdd_write_byte(Usb_read_byte());
362 2 hdd_write_byte(Usb_read_byte());
363 2 hdd_write_byte(Usb_read_byte());
364 2 hdd_write_byte(Usb_read_byte());
C51 COMPILER V7.50 IDE_DRV 02/16/2009 09:59:52 PAGE 7
365 2 hdd_write_byte(Usb_read_byte());
366 2 hdd_write_byte(Usb_read_byte());
367 2 hdd_write_byte(Usb_read_byte());
368 2 hdd_write_byte(Usb_read_byte());
369 2 hdd_write_byte(Usb_read_byte());
370 2 hdd_write_byte(Usb_read_byte());
371 2 hdd_write_byte(Usb_read_byte());
372 2 hdd_write_byte(Usb_read_byte());
373 2 hdd_write_byte(Usb_read_byte());
374 2 hdd_write_byte(Usb_read_byte());
375 2 hdd_write_byte(Usb_read_byte());
376 2 hdd_write_byte(Usb_read_byte());
377 2 hdd_write_byte(Usb_read_byte());
378 2 hdd_write_byte(Usb_read_byte());
379 2 hdd_write_byte(Usb_read_byte());
380 2 hdd_write_byte(Usb_read_byte());
381 2 hdd_write_byte(Usb_read_byte());
382 2 hdd_write_byte(Usb_read_byte());
383 2 hdd_write_byte(Usb_read_byte());
384 2 hdd_write_byte(Usb_read_byte());
385 2 hdd_write_byte(Usb_read_byte());
386 2 hdd_write_byte(Usb_read_byte());
387 2 hdd_write_byte(Usb_read_byte());
388 2 hdd_write_byte(Usb_read_byte());
389 2 hdd_write_byte(Usb_read_byte());
390 2 hdd_write_byte(Usb_read_byte());
391 2 hdd_write_byte(Usb_read_byte());
392 2 hdd_write_byte(Usb_read_byte());
393 2 hdd_write_byte(Usb_read_byte());
394 2 hdd_write_byte(Usb_read_byte());
395 2 hdd_write_byte(Usb_read_byte());
396 2 hdd_write_byte(Usb_read_byte());
397 2 hdd_write_byte(Usb_read_byte());
398 2 hdd_write_byte(Usb_read_byte());
399 2 hdd_write_byte(Usb_read_byte());
400 2 hdd_write_byte(Usb_read_byte());
401 2
402 2 Usb_clear_RXOUT_PP();
403 2 }
404 1
405 1 hdd_write_open(hdd_sector);
406 1 hdd_write_close();
407 1 return OK;
408 1 }
409
410
411 /////////////////////////////////////////////////////////////////////////////////
412 Uint32 hdd_read_long_big_endian()
413 {
414 1 Uint32 cluster;
415 1
416 1 ((Byte*)&cluster)[3] = hdd_read_byte();
417 1 ((Byte*)&cluster)[2] = hdd_read_byte();
418 1 ((Byte*)&cluster)[1] = hdd_read_byte();
419 1 ((Byte*)&cluster)[0] = hdd_read_byte();
420 1
421 1 return cluster;
422 1 }
423
424
425
426
C51 COMPILER V7.50 IDE_DRV 02/16/2009 09:59:52 PAGE 8
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1710 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- 9
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -