📄 fat.lis
字号:
0394 F91F adc R31,R25
0396 4082 std z+0,R4
0398 L37:
0398 .dbline 97
0398 C701 movw R24,R14
039A 0196 adiw R24,1
039C 7C01 movw R14,R24
039E L39:
039E .dbline 97
039E ; for (j=0;j<6;j++) File.Name[LongFilePtr++] = Entry.Win.Part2[j];
039E C701 movw R24,R14
03A0 8630 cpi R24,6
03A2 E0E0 ldi R30,0
03A4 9E07 cpc R25,R30
03A6 10F3 brlo L36
03A8 .dbline 98
03A8 EE24 clr R14
03AA FF24 clr R15
03AC 19C0 xjmp L44
03AE L41:
03AE .dbline 98
03AE 1501 movw R2,R10
03B0 C101 movw R24,R2
03B2 0196 adiw R24,1
03B4 5C01 movw R10,R24
03B6 02E0 ldi R16,2
03B8 10E0 ldi R17,0
03BA 9701 movw R18,R14
03BC 0E940000 xcall empy16s
03C0 F801 movw R30,R16
03C2 CE01 movw R24,R28
03C4 8496 adiw R24,36
03C6 E80F add R30,R24
03C8 F91F adc R31,R25
03CA 4080 ldd R4,z+0
03CC 5180 ldd R5,z+1
03CE 80E0 ldi R24,<_File
03D0 90E0 ldi R25,>_File
03D2 F101 movw R30,R2
03D4 E80F add R30,R24
03D6 F91F adc R31,R25
03D8 4082 std z+0,R4
03DA L42:
03DA .dbline 98
03DA C701 movw R24,R14
03DC 0196 adiw R24,1
03DE 7C01 movw R14,R24
03E0 L44:
03E0 .dbline 98
03E0 ; for (j=0;j<2;j++) File.Name[LongFilePtr++] = Entry.Win.Part3[j];
03E0 C701 movw R24,R14
03E2 8230 cpi R24,2
03E4 E0E0 ldi R30,0
03E6 9E07 cpc R25,R30
03E8 10F3 brlo L41
03EA .dbline 99
03EA ; if (Entry.Win.Cnt & 0x40) File.Name[LongFilePtr++] = 0x00;
03EA 2884 ldd R2,y+8
03EC 26FE sbrs R2,6
03EE DBC0 rjmp L29
03F0 .dbline 99
03F0 1501 movw R2,R10
03F2 C101 movw R24,R2
03F4 0196 adiw R24,1
03F6 5C01 movw R10,R24
03F8 80E0 ldi R24,<_File
03FA 90E0 ldi R25,>_File
03FC F101 movw R30,R2
03FE E80F add R30,R24
0400 F91F adc R31,R25
0402 2224 clr R2
0404 2082 std z+0,R2
0406 .dbline 100
0406 ; }
0406 CFC0 xjmp L29
0408 L28:
0408 .dbline 102
0408 ; else
0408 ; {
0408 .dbline 103
0408 ; if ((Entry.Dir.Name[0] != SLOT_DELETED) && ((Entry.Dir.Attributes & 0x0e) == 0x00))
0408 8885 ldd R24,y+8
040A 853E cpi R24,229
040C 09F4 brne X2
040E C9C0 xjmp L48
0410 X2:
0410 8B89 ldd R24,y+19
0412 8E70 andi R24,14
0414 09F0 breq X3
0416 C5C0 xjmp L48
0418 X3:
0418 .dbline 104
0418 ; {
0418 .dbline 105
0418 ; if (LongFileName == FALSE)
0418 CC20 tst R12
041A E1F4 brne L51
041C DD20 tst R13
041E D1F4 brne L51
0420 X0:
0420 .dbline 106
0420 ; {
0420 .dbline 107
0420 EE24 clr R14
0422 FF24 clr R15
0424 0FC0 xjmp L56
0426 L53:
0426 .dbline 107
0426 CE01 movw R24,R28
0428 0896 adiw R24,8
042A F701 movw R30,R14
042C E80F add R30,R24
042E F91F adc R31,R25
0430 2080 ldd R2,z+0
0432 80E0 ldi R24,<_File
0434 90E0 ldi R25,>_File
0436 F701 movw R30,R14
0438 E80F add R30,R24
043A F91F adc R31,R25
043C 2082 std z+0,R2
043E L54:
043E .dbline 107
043E C701 movw R24,R14
0440 0196 adiw R24,1
0442 7C01 movw R14,R24
0444 L56:
0444 .dbline 107
0444 ; for (j=0;j<8;j++) File.Name[j] = Entry.Dir.Name[j];
0444 C701 movw R24,R14
0446 8830 cpi R24,8
0448 E0E0 ldi R30,0
044A 9E07 cpc R25,R30
044C 60F3 brlo L53
044E .dbline 108
044E ; File.Name[8] = 0x00;
044E 2224 clr R2
0450 20920C00 sts _File+8,R2
0454 .dbline 109
0454 ; }
0454 L51:
0454 .dbline 110
0454 ; File.FirstClust = Entry.Dir.FirstClustHi;
0454 2C8C ldd R2,y+28
0456 3D8C ldd R3,y+29
0458 4424 clr R4
045A 5524 clr R5
045C 30920901 sts _File+260+1,R3
0460 20920801 sts _File+260,R2
0464 50920B01 sts _File+260+2+1,R5
0468 40920A01 sts _File+260+2,R4
046C .dbline 111
046C ; File.FirstClust = (File.FirstClust << 16) + Entry.Dir.FirstClustLo;
046C 2AA0 ldd R2,y+34
046E 3BA0 ldd R3,y+35
0470 4424 clr R4
0472 5524 clr R5
0474 80900A01 lds R8,_File+260+2
0478 90900B01 lds R9,_File+260+2+1
047C 60900801 lds R6,_File+260
0480 70900901 lds R7,_File+260+1
0484 4301 movw R8,R6
0486 6624 clr R6
0488 7724 clr R7
048A 620C add R6,R2
048C 731C adc R7,R3
048E 841C adc R8,R4
0490 951C adc R9,R5
0492 70920901 sts _File+260+1,R7
0496 60920801 sts _File+260,R6
049A 90920B01 sts _File+260+2+1,R9
049E 80920A01 sts _File+260+2,R8
04A2 .dbline 112
04A2 ; File.FileSize = Entry.Dir.FileSize;
04A2 FE01 movw R30,R28
04A4 24A0 ldd R2,z+36
04A6 35A0 ldd R3,z+37
04A8 46A0 ldd R4,z+38
04AA 57A0 ldd R5,z+39
04AC 30920D01 sts _File+264+1,R3
04B0 20920C01 sts _File+264,R2
04B4 50920F01 sts _File+264+2+1,R5
04B8 40920E01 sts _File+264+2,R4
04BC .dbline 113
04BC ; File.Attr = Entry.Dir.Attributes;
04BC 2B88 ldd R2,y+19
04BE 20920701 sts _File+259,R2
04C2 .dbline 114
04C2 ; if ((File.FirstClust == 0) &&
04C2 40E0 ldi R20,0
04C4 50E0 ldi R21,0
04C6 60E0 ldi R22,0
04C8 70E0 ldi R23,0
04CA 6416 cp R6,R20
04CC 7506 cpc R7,R21
04CE 8606 cpc R8,R22
04D0 9706 cpc R9,R23
04D2 79F4 brne L67
04D4 822D mov R24,R2
04D6 8031 cpi R24,16
04D8 61F4 brne L67
04DA .dbline 115
04DA ; (File.Attr == ATTR_DIRECTORY)) File.FirstClust = 2; // Don't know why?
04DA 42E0 ldi R20,2
04DC 50E0 ldi R21,0
04DE 60E0 ldi R22,0
04E0 70E0 ldi R23,0
04E2 50930901 sts _File+260+1,R21
04E6 40930801 sts _File+260,R20
04EA 70930B01 sts _File+260+2+1,R23
04EE 60930A01 sts _File+260+2,R22
04F2 L67:
04F2 .dbline 116
04F2 ; LongFileName = FALSE;
04F2 CC24 clr R12
04F4 DD24 clr R13
04F6 .dbline 118
04F6 ;
04F6 ; if ((File.FirstClust == 0) && (File.Attr == ATTR_NORMAL)) return Files;
04F6 40E0 ldi R20,0
04F8 50E0 ldi R21,0
04FA 60E0 ldi R22,0
04FC 70E0 ldi R23,0
04FE 40900A01 lds R4,_File+260+2
0502 50900B01 lds R5,_File+260+2+1
0506 20900801 lds R2,_File+260
050A 30900901 lds R3,_File+260+1
050E 2416 cp R2,R20
0510 3506 cpc R3,R21
0512 4606 cpc R4,R22
0514 5706 cpc R5,R23
0516 39F4 brne L72
0518 20900701 lds R2,_File+259
051C 2220 tst R2
051E 19F4 brne L72
0520 .dbline 118
0520 0FA9 ldd R16,y+55
0522 18AD ldd R17,y+56
0524 8BC0 xjmp L14
0526 L72:
0526 .dbline 119
0526 ; if ((Files >= From) && (Files < (From + Qte)) && (Display == TRUE)) DisplayFiles(&LinePtr);
0526 0FA8 ldd R0,y+55
0528 18AC ldd R1,y+56
052A FE01 movw R30,R28
052C E95B subi R30,185 ; addi 71
052E FF4F sbci R31,255
0530 0081 ldd R16,z+0
0532 1181 ldd R17,z+1
0534 0016 cp R0,R16
0536 1106 cpc R1,R17
0538 D0F0 brlo L76
053A 1801 movw R2,R16
053C FE01 movw R30,R28
053E E75B subi R30,183 ; addi 73
0540 FF4F sbci R31,255
0542 0080 ldd R0,z+0
0544 1180 ldd R1,z+1
0546 200C add R2,R0
0548 311C adc R3,R1
054A 0FA8 ldd R0,y+55
054C 18AC ldd R1,y+56
054E 0214 cp R0,R2
0550 1304 cpc R1,R3
0552 68F4 brsh L76
0554 FE01 movw R30,R28
0556 E55B subi R30,181 ; addi 75
0558 FF4F sbci R31,255
055A 8081 ldd R24,z+0
055C 9181 ldd R25,z+1
055E 8130 cpi R24,1
0560 E0E0 ldi R30,0
0562 9E07 cpc R25,R30
0564 21F4 brne L76
0566 .dbline 119
0566 8E01 movw R16,R28
0568 045D subi R16,212 ; offset = 44
056A 1F4F sbci R17,255
056C 6CD0 xcall _DisplayFiles
056E L76:
056E .dbline 120
056E ; if (Files == (From + Qte - 1)) return Files;
056E FE01 movw R30,R28
0570 E95B subi R30,185 ; addi 71
0572 FF4F sbci R31,255
0574 8081 ldd R24,z+0
0576 9181 ldd R25,z+1
0578 FE01 movw R30,R28
057A E75B subi R30,183 ; addi 73
057C FF4F sbci R31,255
057E 0080 ldd R0,z+0
0580 1180 ldd R1,z+1
0582 800D add R24,R0
0584 911D adc R25,R1
0586 0197 sbiw R24,1
0588 0FA8 ldd R0,y+55
058A 18AC ldd R1,y+56
058C 0816 cp R0,R24
058E 1906 cpc R1,R25
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -