📄 fat16.lst
字号:
435 413C 26E9 addwf fsr0l,f,c
436 413E 50E2 movf fsr1h,w,c
437 4140 22EA addwfc fsr0h,f,c
438 4142 CFEE F000 movff postinc0,btemp
439 4146 CFED F001 movff postdec0,btemp+1
440 414A C000 F041 movff btemp,_BPB_RsvdSecCnt
441 414E C001 F042 movff btemp+1,_BPB_RsvdSecCnt+1
442 ;fat16.c: 86: BPB_NumFATs = BPB->BPB_NumFATs;
443 4152 EE00 F010 lfsr 0,16
444 4156 50E1 movf fsr1l,w,c
445 4158 26E9 addwf fsr0l,f,c
446 415A 50E2 movf fsr1h,w,c
447 415C 22EA addwfc fsr0h,f,c
448 415E CFEF F1B0 movff indf0,_BPB_NumFATs
449 ;fat16.c: 87: BPB_RootEntCnt = BPB->BPB_RootEntC
+ nt;
450 4162 EE00 F011 lfsr 0,17
451 4166 50E1 movf fsr1l,w,c
452 4168 26E9 addwf fsr0l,f,c
453 416A 50E2 movf fsr1h,w,c
454 416C 22EA addwfc fsr0h,f,c
455 416E CFEE F000 movff postinc0,btemp
456 4172 CFED F001 movff postdec0,btemp+1
457 4176 C000 F03F movff btemp,_BPB_RootEntCnt
458 417A C001 F040 movff btemp+1,_BPB_RootEntCnt+1
459 ;fat16.c: 88: BPB_TotSec16 = BPB->BPB_TotSec16;
460 417E EE00 F013 lfsr 0,19
461 4182 50E1 movf fsr1l,w,c
462 4184 26E9 addwf fsr0l,f,c
463 4186 50E2 movf fsr1h,w,c
464 4188 22EA addwfc fsr0h,f,c
465 418A CFEE F000 movff postinc0,btemp
466 418E CFED F001 movff postdec0,btemp+1
467 4192 C000 F043 movff btemp,_BPB_TotSec16
468 4196 C001 F044 movff btemp+1,_BPB_TotSec16+1
469 ;fat16.c: 89: BPB_FATSz16 = BPB->BPB_FATSz16;
470 419A EE00 F016 lfsr 0,22
471 419E 50E1 movf fsr1l,w,c
472 41A0 26E9 addwf fsr0l,f,c
473 41A2 50E2 movf fsr1h,w,c
474 41A4 22EA addwfc fsr0h,f,c
475 41A6 CFEE F000 movff postinc0,btemp
476 41AA CFED F001 movff postdec0,btemp+1
477 41AE C000 F03D movff btemp,_BPB_FATSz16
478 41B2 C001 F03E movff btemp+1,_BPB_FATSz16+1
479 ;fat16.c: 90: BPB_HiddSec = BPB->BPB_HiddSec;
480 41B6 EE00 F01C lfsr 0,28
481 41BA 50E1 movf fsr1l,w,c
482 41BC 26E9 addwf fsr0l,f,c
483 41BE 50E2 movf fsr1h,w,c
484 41C0 22EA addwfc fsr0h,f,c
485 41C2 CFEE F045 movff postinc0,_BPB_HiddSec
486 41C6 CFEE F046 movff postinc0,_BPB_HiddSec+1
487 41CA CFEE F047 movff postinc0,_BPB_HiddSec+2
488 41CE CFED F048 movff postdec0,_BPB_HiddSec+3
489 41D2 52ED movf postdec0,f,c
490 41D4 52ED movf postdec0,f,c
491 ;fat16.c: 92: }
492 41D6 0012 return
493 41D8 FFFF dw 65535
494 41DA D784 goto f4552
495 ;fat16.c: 96: uint32 DirStartSec(void)
496 ;fat16.c: 98: {
497 41DC _DirStartSec:
498 41DC FFFF dw 65535
499 41DE f4582:
500 0000
501 ;fat16.c: 99: return BPB_RsvdSecCnt + ((uint32)B
+ PB_NumFATs) * ((uint32)BPB_FATSz16);
502 41DE C03D F000 movff _BPB_FATSz16,btemp
503 41E2 C03E F001 movff _BPB_FATSz16+1,btemp+1
504 41E6 5000 movf btemp,w
505 41E8 6E04 movwf btemp+4
506 41EA 5001 movf btemp+1,w
507 41EC 6E05 movwf btemp+5
508 41EE 6A06 clrf btemp+6
509 41F0 6A07 clrf btemp+7
510 41F2 C1B0 F000 movff _BPB_NumFATs,btemp
511 41F6 6A01 clrf btemp+1
512 41F8 6A02 clrf btemp+2
513 41FA 6A03 clrf btemp+3
514 41FC ECB1 F01D call llmul
515 4200 C000 F0F3 movff btemp,?a_DirStartSec
516 4204 C001 F0F4 movff btemp+1,?a_DirStartSec+1
517 4208 C002 F0F5 movff btemp+2,?a_DirStartSec+2
518 420C C003 F0F6 movff btemp+3,?a_DirStartSec+3
519 4210 C041 F000 movff _BPB_RsvdSecCnt,btemp
520 4214 C042 F001 movff _BPB_RsvdSecCnt+1,btemp+1
521 4218 6A02 clrf btemp+2
522 421A 6A03 clrf btemp+3
523 421C 0100 movlb __Lparam shr (0+8)
524 421E 51F3 movf ?a_DirStartSec^(__Lparam& (0+65280)),w
525 4220 2600 addwf btemp,f
526 4222 51F4 movf (?a_DirStartSec+1)^(__Lparam& (0+65280)),w
527 4224 2201 addwfc btemp+1,f
528 4226 51F5 movf (?a_DirStartSec+2)^(__Lparam& (0+65280)),w
529 4228 2202 addwfc btemp+2,f
530 422A 51F6 movf (?a_DirStartSec+3)^(__Lparam& (0+65280)),w
531 422C 2203 addwfc btemp+3,f
532 ;fat16.c: 100: }
533 422E 0012 return
534 4230 FFFF dw 65535
535 4232 D7D5 goto f4582
536 ;fat16.c: 104: uint32 DataStartSec(void)
537 ;fat16.c: 106: {
538 4234 _DataStartSec:
539 4234 FFFF dw 65535
540 4236 f4592:
541 0000
542 ;fat16.c: 107: return (uint32)(DirStartSec() + (
+ (uint32)BPB_RootEntCnt) * 32 / BPB_BytesPerSec);
543 4236 0E05 movlw 5
544 4238 C03F F000 movff _BPB_RootEntCnt,btemp
545 423C C040 F001 movff _BPB_RootEntCnt+1,btemp+1
546 4240 6A02 clrf btemp+2
547 4242 6A03 clrf btemp+3
548 4244 ECE1 F002 call llsll
549 4248 C03B FFF6 movff _BPB_BytesPerSec,tblptrl
550 424C C03C FFF7 movff _BPB_BytesPerSec+1,tblptrh
551 4250 50F6 movf tblptrl,w,c
552 4252 6E04 movwf btemp+4
553 4254 50F7 movf tblptrh,w,c
554 4256 6E05 movwf btemp+5
555 4258 6A06 clrf btemp+6
556 425A 6A07 clrf btemp+7
557 425C EC53 F01D call lldiv
558 4260 C000 F0DE movff btemp,?a_DataStartSec
559 4264 C001 F0DF movff btemp+1,?a_DataStartSec+1
560 4268 C002 F0E0 movff btemp+2,?a_DataStartSec+2
561 426C C003 F0E1 movff btemp+3,?a_DataStartSec+3
562 4270 DFB5 call _DirStartSec ;wreg free
563 4272 0100 movlb __Lparam shr (0+8)
564 4274 51DE movf ?a_DataStartSec^(__Lparam& (0+65280)),w
565 4276 2600 addwf btemp,f
566 4278 51DF movf (?a_DataStartSec+1)^(__Lparam& (0+65280)),
+ w
567 427A 2201 addwfc btemp+1,f
568 427C 51E0 movf (?a_DataStartSec+2)^(__Lparam& (0+65280)),
+ w
569 427E 2202 addwfc btemp+2,f
570 4280 51E1 movf (?a_DataStartSec+3)^(__Lparam& (0+65280)),
+ w
571 4282 2203 addwfc btemp+3,f
572 ;fat16.c: 108: }
573 4284 0012 return
574 4286 FFFF dw 65535
575 4288 D7D6 goto f4592
576 ;fat16.c: 112: uint16 GetDirSecCount(void)
577 ;fat16.c: 114: {
578 428A _GetDirSecCount:
579 428A FFFF dw 65535
580 428C f4602:
581 0000
582 ;fat16.c: 115: return BPB_RootEntCnt * 32 / 512;
583 428C C03F F000 movff _BPB_RootEntCnt,btemp
584 4290 C040 F001 movff _BPB_RootEntCnt+1,btemp+1
585 4294 0E05 movlw 5
586 4296 u55:
587 4296 90D8 bcf status,0,c
588 4298 3600 rlcf btemp,f
589 429A 3601 rlcf btemp+1,f
590 429C 2EE8 decfsz wreg,f,c
591 429E D7FB goto u55
592 42A0 0E09 movlw 9
593 42A2 6E02 movwf btemp+2
594 42A4 u65:
595 42A4 90D8 bcf status,0,c
596 42A6 3201 rrcf btemp+1,f
597 42A8 3200 rrcf btemp,f
598 42AA 2E02 decfsz btemp+2,f
599 42AC D7FB goto u65
600 ;fat16.c: 116: }
601 42AE 0012 return
602 42B0 FFFF dw 65535
603 42B2 D7EC goto f4602
604 42B4 00D8 dw ?_ClusConvLBA
605 42B6 _ClusConvLBA:
606 42B6 FFFF dw 65535
607 42B8 f4612:
608 0000
609 ;fat16.c: 123: return DataStartSec() + ((uint32)
+ BPB_SecPerClus )* (ClusID - 2);
610 42B8 0100 movlb __Lparam shr (0+8)
611 42BA 0EFE movlw 254
612 42BC 25D8 addwf ?_ClusConvLBA^(__Lparam& (0+65280)),w
613 42BE 6E04 movwf btemp+4
614 42C0 0EFF movlw 255
615 42C2 21D9 addwfc (?_ClusConvLBA+1)^(__Lparam& (0+65280)),
+ w
616 42C4 6E05 movwf btemp+5
617 42C6 6A06 clrf btemp+6
618 42C8 6A07 clrf btemp+7
619 42CA C1B1 F000 movff _BPB_SecPerClus,btemp
620 42CE 6A01 clrf btemp+1
621 42D0 6A02 clrf btemp+2
622 42D2 6A03 clrf btemp+3
623 42D4 ECB1 F01D call llmul
624 42D8 C000 F0DA movff btemp,?a_ClusConvLBA
625 42DC C001 F0DB movff btemp+1,?a_ClusConvLBA+1
626 42E0 C002 F0DC movff btemp+2,?a_ClusConvLBA+2
627 42E4 C003 F0DD movff btemp+3,?a_ClusConvLBA+3
628 42E8 DFA5 call _DataStartSec ;wreg free
629 42EA 0100 movlb __Lparam shr (0+8)
630 42EC 51DA movf ?a_ClusConvLBA^(__Lparam& (0+65280)),w
631 42EE 2600 addwf btemp,f
632 42F0 51DB movf (?a_ClusConvLBA+1)^(__Lparam& (0+65280)),w
633 42F2 2201 addwfc btemp+1,f
634 42F4 51DC movf (?a_ClusConvLBA+2)^(__Lparam& (0+65280)),w
635 42F6 2202 addwfc btemp+2,f
636 42F8 51DD movf (?a_ClusConvLBA+3)^(__Lparam& (0+65280)),w
637 42FA 2203 addwfc btemp+3,f
638 ;fat16.c: 124: }
639 42FC 0012 return
640 42FE FFFF dw 65535
641 4300 D7DB goto f4612
642 4302 00E9 dw ?_ReadFAT
643 4304 _ReadFAT:
644 4304 FFFF dw 65535
645 4306 f4622:
646 0000
647 ;fat16.c: 131: uint16 *RAM = (uint16*)buffer;
648 4306 0100 movlb __Lparam shr (0+8)
649 4308 0EAD movlw low _buffer
650 430A 6FEB movwf ?a_ReadFAT^(__Lparam& (0+65280))
651 430C 0E03 movlw high _buffer
652 430E 6FEC movwf (?a_ReadFAT+1)^(__Lparam& (0+65280))
653 ;fat16.c: 133: sl811_read_sector(BPB_RsvdSecCnt
+ + Index / 256, buffer);
654 4310 C041 F000 movff _BPB_RsvdSecCnt,btemp
655 4314 C042 F001 movff _BPB_RsvdSecCnt+1,btemp+1
656 4318 51EA movf (?_ReadFAT+1)^(__Lparam& (0+65280)),w
657 431A 2400 addwf btemp,w
658 431C 6FF3 movwf ?_sl811_read_sector^(__Lparam& (0+65280))
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -