📄 fat32mountvolumeid.lst
字号:
221 =2 extern DWORD FAT32DiskFreeSize(void);
222 =2 extern BYTE FAT32FindDIREntry(CHAR *DirName);
223 =2 extern void FAT32ReadCluster(DWORD *Cluster);
224 =2 extern BYTE FAT32ChangeDirectory(CHAR *DirName);
225 =2 extern BYTE FAT32ListDirectory(void);
226 =2 extern DWORD FAT32NextCluster(DWORD CurrentCluster);
227 =2 extern BYTE FAT32OpenFile(CHAR *filename);
228 =2 extern void FAT32CloseFile(BYTE fp);
229 =2 extern WORD FAT32ReadFile(BYTE fp);
11 =1
12 =1
3 #endif
4
5 BYTE FAT32MountVolumeID(BYTE Partition);
6
7 BYTE FAT32MountVolumeID(BYTE Partition)
8 {
9 1 register BYTE i;
10 1
11 1 #ifdef DEBUG
printf("Mount FAT32 volume ID...%bd\n",Partition);
#endif
14 1
15 1 if (Partition>=HDD.TotalPartitions) return(FAT32_ERR_PARTITION_NOT_FOUND); //没找到指定扇区
16 1
17 1 IDEReadSector(sDPT[Partition].LBABegin); //读FAT32 VolumeID扇区
18 1 //检查VolumeID扇区标记
19 1 if (DiskBuffer[510] != 0x55||DiskBuffer[511] != 0xaa)
C51 COMPILER V6.23a FAT32MOUNTVOLUMEID 12/24/2004 00:11:02 PAGE 11
20 1 return(FAT32_ERR_MBR_FLAG); //不正常的引导扇区标志
21 1
22 1 //检查分区类型
23 1 HDD.CurrentPartition = Partition; //当前分区号
24 1 // HDD.BytesPerSec = BOOTSEC->BPB_BytesPerSec; //每扇区字节数
25 1 FAT32.SecPerClus = BOOTSEC->BPB_SecPerClus; //每簇扇区数
26 1 FAT32.RsvdSecCnt = MEMSwap16(BOOTSEC->BPB_RsvdSecCnt); //保留扇区数
27 1 FAT32.NumFATs = BOOTSEC->BPB_NumFATs; //FAT表个数
28 1 FAT32.FATSz = MEMSwap32(BOOTSEC->FAT.F32.BPB_FATSz32); //FAT表达小(扇区)
29 1 FAT32.RootClus = MEMSwap32(BOOTSEC->FAT.F32.BPB_RootClus); //根目录簇号
30 1 FAT32.CurrentDirectory = FAT32.RootClus; //当前目录入口(簇号)
31 1 FAT32.FATSec = sDPT[HDD.CurrentPartition].LBABegin + FAT32.RsvdSecCnt; //FAT表开始的扇区号
32 1 FAT32.ClusSec = sDPT[HDD.CurrentPartition].LBABegin + FAT32.RsvdSecCnt + (FAT32.NumFATs * FAT32.FATSz);
-//簇开始的扇区
33 1 FAT32.FSISec = MEMSwap16(BOOTSEC->FAT.F32.BPB_FSInfo) + sDPT[Partition].LBABegin; //FAT32扩展信息扇区号
34 1
35 1 //加载第一个FAT表
36 1 IDEReadSector(FAT32.FATSec);
37 1 for(i=0;i<128;i++)
38 1 FAT.FAT[i]=((DWORD *)&DiskBuffer)[i];
39 1 FAT.Sector=0;
40 1 return(0);
41 1 }
C51 COMPILER V6.23a FAT32MOUNTVOLUMEID 12/24/2004 00:11:02 PAGE 12
ASSEMBLY LISTING OF GENERATED OBJECT CODE
; FUNCTION _FAT32MountVolumeID (BEGIN)
; SOURCE LINE # 7
0000 900000 R MOV DPTR,#Partition
0003 EF MOV A,R7
0004 F0 MOVX @DPTR,A
; SOURCE LINE # 8
; SOURCE LINE # 15
0005 900000 E MOV DPTR,#HDD
0008 E0 MOVX A,@DPTR
0009 FE MOV R6,A
000A EF MOV A,R7
000B C3 CLR C
000C 9E SUBB A,R6
000D 4003 JC ?C0001
000F 7F02 MOV R7,#02H
0011 22 RET
0012 ?C0001:
; SOURCE LINE # 17
0012 900000 R MOV DPTR,#Partition
0015 E0 MOVX A,@DPTR
0016 75F009 MOV B,#09H
0019 A4 MUL AB
001A 2400 E ADD A,#LOW sDPT+01H
001C F582 MOV DPL,A
001E E4 CLR A
001F 3400 E ADDC A,#HIGH sDPT+01H
0021 F583 MOV DPH,A
0023 E0 MOVX A,@DPTR
0024 FC MOV R4,A
0025 A3 INC DPTR
0026 E0 MOVX A,@DPTR
0027 FD MOV R5,A
0028 A3 INC DPTR
0029 E0 MOVX A,@DPTR
002A FE MOV R6,A
002B A3 INC DPTR
002C E0 MOVX A,@DPTR
002D FF MOV R7,A
002E 900000 E MOV DPTR,#IDE+02H
0031 120000 E LCALL ?C?LSTXDATA
0034 120000 E LCALL _IDEReadSector
; SOURCE LINE # 19
0037 900000 E MOV DPTR,#DiskBuffer+01FEH
003A E0 MOVX A,@DPTR
003B B45506 CJNE A,#055H,?C0004
003E A3 INC DPTR
003F E0 MOVX A,@DPTR
0040 64AA XRL A,#0AAH
0042 6003 JZ ?C0003
0044 ?C0004:
; SOURCE LINE # 20
0044 7F01 MOV R7,#01H
0046 22 RET
0047 ?C0003:
; SOURCE LINE # 23
0047 900000 R MOV DPTR,#Partition
004A E0 MOVX A,@DPTR
004B 900000 E MOV DPTR,#HDD+01H
004E F0 MOVX @DPTR,A
C51 COMPILER V6.23a FAT32MOUNTVOLUMEID 12/24/2004 00:11:02 PAGE 13
; SOURCE LINE # 25
004F 900000 E MOV DPTR,#BOOTSEC
0052 E0 MOVX A,@DPTR
0053 FB MOV R3,A
0054 A3 INC DPTR
0055 E0 MOVX A,@DPTR
0056 FA MOV R2,A
0057 A3 INC DPTR
0058 E0 MOVX A,@DPTR
0059 F9 MOV R1,A
005A 90000D MOV DPTR,#0DH
005D 120000 E LCALL ?C?CLDOPTR
0060 900000 E MOV DPTR,#FAT32+05H
0063 F0 MOVX @DPTR,A
; SOURCE LINE # 26
0064 90000E MOV DPTR,#0EH
0067 120000 E LCALL ?C?ILDOPTR
006A FF MOV R7,A
006B AEF0 MOV R6,B
006D 120000 E LCALL _MEMSwap16
0070 900000 E MOV DPTR,#FAT32+06H
0073 EE MOV A,R6
0074 F0 MOVX @DPTR,A
0075 A3 INC DPTR
0076 EF MOV A,R7
0077 F0 MOVX @DPTR,A
; SOURCE LINE # 27
0078 900000 E MOV DPTR,#BOOTSEC
007B E0 MOVX A,@DPTR
007C FB MOV R3,A
007D A3 INC DPTR
007E E0 MOVX A,@DPTR
007F FA MOV R2,A
0080 A3 INC DPTR
0081 E0 MOVX A,@DPTR
0082 F9 MOV R1,A
0083 900010 MOV DPTR,#010H
0086 120000 E LCALL ?C?CLDOPTR
0089 900000 E MOV DPTR,#FAT32+08H
008C F0 MOVX @DPTR,A
; SOURCE LINE # 28
008D 900024 MOV DPTR,#024H
0090 120000 E LCALL ?C?LLDOPTR
0093 120000 E LCALL _MEMSwap32
0096 900000 E MOV DPTR,#FAT32+011H
0099 120000 E LCALL ?C?LSTXDATA
; SOURCE LINE # 29
009C 900000 E MOV DPTR,#BOOTSEC
009F E0 MOVX A,@DPTR
00A0 FB MOV R3,A
00A1 A3 INC DPTR
00A2 E0 MOVX A,@DPTR
00A3 FA MOV R2,A
00A4 A3 INC DPTR
00A5 E0 MOVX A,@DPTR
00A6 F9 MOV R1,A
00A7 90002C MOV DPTR,#02CH
00AA 120000 E LCALL ?C?LLDOPTR
00AD 120000 E LCALL _MEMSwap32
00B0 900000 E MOV DPTR,#FAT32+09H
00B3 120000 E LCALL ?C?LSTXDATA
; SOURCE LINE # 30
C51 COMPILER V6.23a FAT32MOUNTVOLUMEID 12/24/2004 00:11:02 PAGE 14
00B6 900000 E MOV DPTR,#FAT32+09H
00B9 E0 MOVX A,@DPTR
00BA FC MOV R4,A
00BB A3 INC DPTR
00BC E0 MOVX A,@DPTR
00BD FD MOV R5,A
00BE A3 INC DPTR
00BF E0 MOVX A,@DPTR
00C0 FE MOV R6,A
00C1 A3 INC DPTR
00C2 E0 MOVX A,@DPTR
00C3 FF MOV R7,A
00C4 900000 E MOV DPTR,#FAT32+01H
00C7 120000 E LCALL ?C?LSTXDATA
; SOURCE LINE # 31
00CA 900000 E MOV DPTR,#FAT32+06H
00CD E0 MOVX A,@DPTR
00CE FE MOV R6,A
00CF A3 INC DPTR
00D0 E0 MOVX A,@DPTR
00D1 FF MOV R7,A
00D2 E4 CLR A
00D3 FC MOV R4,A
00D4 FD MOV R5,A
00D5 900000 E MOV DPTR,#HDD+01H
00D8 E0 MOVX A,@DPTR
00D9 75F009 MOV B,#09H
00DC A4 MUL AB
00DD 2400 E ADD A,#LOW sDPT+01H
00DF F582 MOV DPL,A
00E1 E4 CLR A
00E2 3400 E ADDC A,#HIGH sDPT+01H
00E4 F583 MOV DPH,A
00E6 E0 MOVX A,@DPTR
00E7 F8 MOV R0,A
00E8 A3 INC DPTR
00E9 E0 MOVX A,@DPTR
00EA F9 MOV R1,A
00EB A3 INC DPTR
00EC E0 MOVX A,@DPTR
00ED FA MOV R2,A
00EE A3 INC DPTR
00EF E0 MOVX A,@DPTR
00F0 2F ADD A,R7
00F1 FF MOV R7,A
00F2 EA MOV A,R2
00F3 3E ADDC A,R6
00F4 FE MOV R6,A
00F5 ED MOV A,R5
00F6 39 ADDC A,R1
00F7 FD MOV R5,A
00F8 EC MOV A,R4
00F9 38 ADDC A,R0
00FA FC MOV R4,A
00FB 900000 E MOV DPTR,#FAT32+015H
00FE 120000 E LCALL ?C?LSTXDATA
; SOURCE LINE # 32
0101 900000 E MOV DPTR,#FAT32+08H
0104 E0 MOVX A,@DPTR
0105 FF MOV R7,A
0106 E4 CLR A
0107 FC MOV R4,A
C51 COMPILER V6.23a FAT32MOUNTVOLUMEID 12/24/2004 00:11:02 PAGE 15
0108 FD MOV R5,A
0109 FE MOV R6,A
010A 900000 E MOV DPTR,#FAT32+011H
010D E0 MOVX A,@DPTR
010E F8 MOV R0,A
010F A3 INC DPTR
0110 E0 MOVX A,@DPTR
0111 F9 MOV R1,A
0112 A3 INC DPTR
0113 E0 MOVX A,@DPTR
0114 FA MOV R2,A
0115 A3 INC DPTR
0116 E0 MOVX A,@DPTR
0117 FB MOV R3,A
0118 120000 E LCALL ?C?LMUL
011B C004 PUSH AR4
011D C005 PUSH AR5
011F C006 PUSH AR6
0121 AB07 MOV R3,AR7
0123 900000 E MOV DPTR,#FAT32+06H
0126 E0 MOVX A,@DPTR
0127 FE MOV R6,A
0128 A3 INC DPTR
0129 E0 MOVX A,@DPTR
012A FF MOV R7,A
012B E4 CLR A
012C FC MOV R4,A
012D FD MOV R5,A
012E 900000 E MOV DPTR,#HDD+01H
0131 E0 MOVX A,@DPTR
0132 75F009 MOV B,#09H
0135 A4 MUL AB
0136 2400 E ADD A,#LOW sDPT+01H
0138 F582 MOV DPL,A
013A E4 CLR A
013B 3400 E ADDC A,#HIGH sDPT+01H
013D F583 MOV DPH,A
013F E0 MOVX A,@DPTR
0140 F8 MOV R0,A
0141 A3 INC DPTR
0142 E0 MOVX A,@DPTR
0143 F9 MOV R1,A
0144 A3 INC DPTR
0145 E0 MOVX A,@DPTR
0146 FA MOV R2,A
0147 A3 INC DPTR
0148 E0 MOVX A,@DPTR
0149 2F ADD A,R7
014A FF MOV R7,A
014B EA MOV A,R2
014C 3E ADDC A,R6
014D FE MOV R6,A
014E ED MOV A,R5
014F 39 ADDC A,R1
0150 FD MOV R5,A
0151 EC MOV A,R4
0152 38 ADDC A,R0
0153 FC MOV R4,A
0154 D002 POP AR2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -