📄 fatdisksize.lst
字号:
43 =2 #endif
44 =2
45 =2 #endif
8 =1 #include "..\Inc\COMMON.h"
1 =2 /********************************************************/
2 =2 /* */
3 =2 /* 库 名 称:通 用 函 数 库 */
4 =2
5 =2 /* 功 能 描 述:通用函数库。 */
6 =2
7 =2 /********************************************************/
8 =2
9 =2 //设备类型
10 =2 #define MEDIA_TYPE_HDD 0x01 //硬盘
11 =2 #define MEDIA_TYPE_CDROM 0x02 //光驱
12 =2 #define MEDIA_TYPE_FLASH 0x03 //FLASH
13 =2
14 =2 #ifndef _COMMON_DEFINE
15 =2 #define _COMMON_DEFINE
16 =2
17 =2 #endif
18 =2
19 =2 extern void COMMVersion(void);
20 =2 extern WORD MEMSwap16(WORD value);
21 =2 extern DWORD MEMSwap32(DWORD value);
22 =2 extern void Uni2GB(char *s,CHAR len);
C51 COMPILER V6.23a FATDISKSIZE 12/24/2004 00:11:39 PAGE 5
23 =2 extern void WORD2CHAR(WORD in,CHAR *out,BYTE l);
24 =2 extern void BYTE2CHAR(BYTE in,CHAR *out,BYTE l);
25 =2
9 =1 #include "..\Inc\IDEIO.h"
1 =2 /********************************************************/
2 =2 /* */
3 =2 /* 库 名 称:IDE基本I/O函数库 */
4 =2 /* 功 能 描 述:提供IDE接口设备基本读写、控制等功能。 */
5 =2 /* */
6 =2 /********************************************************/
7 =2
8 =2 #ifndef _TYPE_DEFINE
=2 #define _TYPE_DEFINE
=2 typedef bit BOOL;
=2 typedef unsigned char BYTE;
=2 typedef unsigned char CHAR;
=2 typedef unsigned int WORD;
=2 typedef unsigned long DWORD;
=2 #endif
16 =2
17 =2 #ifndef _IDEIO_DEFINE
18 =2 #define _IDEIO_DEFINE
19 =2
20 =2 //IDE设备基地址
21 =2 #define IDE_ADDR_BASE 0x8000
22 =2
23 =2 //IDE设备寄存器组地址偏移量
24 =2 #define IDE_ADDR_CTRL 0x1000
25 =2 #define IDE_ADDR_CMD 0x0000
26 =2
27 =2 //IDE设备寄存器偏移量
28 =2 #define IDE_IO_DA0 0x01
29 =2 #define IDE_IO_DA1 0x02
30 =2 #define IDE_IO_DA2 0x04
31 =2
32 =2 //IDE设备控制I/O线
33 =2 #define IDE_IO_RESET P5_0
34 =2
35 =2 //IDE设备数据端口
36 =2 #define IDE_PORT_DATLSB ACC
37 =2 #define IDE_PORT_DATMSB DAT16H
38 =2
39 =2 //IDE 函数返回值
40 =2 #define IDE_SUCCESSFUL 0x00
41 =2 #define IDE_ERROR_RESET 0x01
42 =2 #define IDE_ERROR_DIAGNOSTIC 0x01
43 =2 #define IDE_ERROR_BSY 0x10
44 =2 #define IDE_ERROR_DRQ 0x11
45 =2 #define IDE_ERROR_DRDY 0x12
46 =2 #define IDE_ERROR_NODATA 0x13
47 =2
48 =2 //电源管理
49 =2 #define IDE_POWER_SLEEP 0x00
50 =2 #define IDE_POWER_IDLE 0x01
51 =2 #define IDE_POWER_STANDBY 0x02
52 =2
53 =2 //设备编号
54 =2 #define IDE_DEVICE0 0
55 =2 #define IDE_DEVICE1 1
56 =2
57 =2 #define IDE_RESET_HARDWARE 0
58 =2 #define IDE_RESET_SOFTWARE 1
C51 COMPILER V6.23a FATDISKSIZE 12/24/2004 00:11:39 PAGE 6
59 =2
60 =2 #define IDE_DEVICE_MASTER 0x00
61 =2 #define IDE_DEVICE_SLAVE 0x10
62 =2
63 =2 //设备类型
64 =2 #define DRIVER_TYPE_HDD 0x01 //硬盘
65 =2 #define DRIVER_TYPE_CDROM 0x02 //光驱
66 =2 #define DRIVER_TYPE_FLASH 0x03 //FLASH
67 =2
68 =2 //IDE扇区读写
69 =2 #define IDEReadSector(X) IDE.CurrentSector=X; _IDEReadSector()
70 =2 #define IDEWriteSector(X) IDE.CurrentSector=X; _IDEWriteSector()
71 =2
72 =2 //IDE接口参数表
73 =2 struct IDEStr
74 =2 {
75 =2 BYTE TotalDevices; //驱动器数量
76 =2 BYTE CurrentDevice; //当前驱动器
77 =2 DWORD CurrentSector; //当前扇区号
78 =2 WORD BytesPerSec; //每扇区字节数
79 =2 };
80 =2
81 =2 //IDE设备参数表
82 =2 struct IDEDeviceStr
83 =2 {
84 =2 BYTE DriverType; //驱动器类型
85 =2 DWORD TotalSectors; //总扇区数
86 =2 };
87 =2
88 =2 //硬盘参数表
89 =2 struct HDDStr //硬盘介质参数表
90 =2 {
91 =2 BYTE TotalPartitions; //分区数
92 =2 BYTE CurrentPartition; //当前分区
93 =2 };
94 =2 #ifndef _LIBRARY_DEFINE
=2 xdata BYTE DiskBuffer[512];
=2
=2 xdata struct IDEStr IDE;
=2 xdata struct IDEDeviceStr IDEDevice[2];
=2 xdata struct HDDStr HDD;
=2 #endif
101 =2 #endif
102 =2
103 =2 //磁盘缓冲区
104 =2 extern xdata BYTE DiskBuffer[512];
105 =2
106 =2 extern xdata struct IDEStr IDE;
107 =2 extern xdata struct IDEDeviceStr IDEDevice[2];
108 =2 extern xdata struct HDDStr HDD;
109 =2
110 =2 extern void IDEInit(void);
111 =2 extern BYTE IDEIdentifiedDevice(BYTE DeviceNum);
112 =2 extern void IDESetCurrentDevice(BYTE DeviceNum);
113 =2 extern BYTE IDEReset(BYTE bRestMode);
114 =2 extern BOOL IDEStatus(BYTE flag,BYTE wait,BYTE logic,WORD timeout);
115 =2 extern void IDEPowerManagement(BYTE cmd);
116 =2 extern BYTE _IDEReadSector(); //读一个扇区
117 =2 extern BYTE _IDEWriteSector(); //写一个扇区
10 =1 #include "FAT.h"
1 =2 /********************************************************/
2 =2 /* */
C51 COMPILER V6.23a FATDISKSIZE 12/24/2004 00:11:39 PAGE 7
3 =2 /* 库 名 称:FAT文件系统函数库 */
4 =2
5 =2 /* 功 能 描 述:提供对FAT文件系统按文件名存取 */
6 =2 /* */
7 =2 /* */
8 =2 /********************************************************/
9 =2
10 =2 #ifndef _TYPE_DEFINE
=2 #define _TYPE_DEFINE
=2 typedef bit BOOL;
=2 typedef unsigned char BYTE;
=2 typedef unsigned char CHAR;
=2 typedef unsigned int WORD;
=2 typedef unsigned long DWORD;
=2 #endif
18 =2
19 =2 #ifndef _FAT_DEFINE
20 =2 #define _FAT_DEFINE
21 =2
22 =2 #define FAT_MAX_FCB 2
23 =2
24 =2 //文件属性
25 =2 #define FAT_ATTR_READ_ONLY 0x01 //文件属性:只读
26 =2 #define FAT_ATTR_HIDDEN 0x02 //文件属性:隐含
27 =2 #define FAT_ATTR_SYSTEM 0x04 //文件属性:系统
28 =2 #define FAT_ATTR_VOLUME_ID 0x08 //文件属性:卷ID
29 =2 #define FAT_ATTR_DIRECTORY 0x10 //文件属性:目录
30 =2 #define FAT_ATTR_ARCHIVE 0x20 //文件属性:归档
31 =2 #define FAT_ATTR_LONG_NAME FAT_ATTR_READ_ONLY+FAT_ATTR_HIDDEN+FAT_ATTR_SYSTEM+FAT_ATTR_VOLUME_ID //文件
-属性:长文件名
32 =2 #define FAT_ATTR_LONG_NAME_MASK FAT_ATTR_READ_ONLY+FAT_ATTR_HIDDEN+FAT_ATTR_SYSTEM+FAT_ATTR_VOLUME_ID+FA
-T_ATTR_DIRECTORY+FAT_ATTR_ARCHIVE //文件属性:长文件名
33 =2 #define FAT_LAST_LONG_ENTRY 0x40 //长文件名入口标记
34 =2
35 =2 #define FAT_ERR_MBR_FLAG 0x01 //MBR扇区标志错误 FATMountPartition
36 =2 #define FAT_ERR_PARTITION_NOT_FOUND 0x02 //指定分区没找到 FATMountVolumeID
37 =2 #define FAT_ERR_FILE_OPEN_ERROR FAT_MAX_FCB //文件打开错误
38 =2 #define FAT_ERR_DIR_NOT_FOUND 0x01 //指定的目录入口没有找到F FATChangeDirectory
39 =2 #define FAT_ERR_NOT_DIR 0x02 //不是一个目录入口 FATChangeDirectory
40 =2
41 =2 #define FAT_SEEK_BEGIN 0x01
42 =2 #define FAT_SEEK_CURRENT 0x02
43 =2 #define FAT_SEEK_END 0x03
44 =2
45 =2 #define FAT_TYPE_FAT12 0x01
46 =2 #define FAT_TYPE_FAT16 0x02
47 =2 #define FAT_TYPE_FAT32 0x03
48 =2
49 =2 #define FAT_CLUSTER_END32 0xffffffff //簇链终点
50 =2 #define FAT_CLUSTER_END16 0xffff //簇链终点
51 =2 #define FAT_CLUSTER_END12 0xfff //簇链终点
52 =2 #define FAT_CLUSTER_RESERVED32 0xfffffff6 //保留簇
53 =2 #define FAT_CLUSTER_RESERVED16 0xfff6 //保留簇
54 =2 #define FAT_CLUSTER_RESERVED12 0xff6 //保留簇
55 =2 #define FAT_CLUSTER_BAD32 0xfffffff7 //坏簇
56 =2 #define FAT_CLUSTER_BAD16 0xfff7 //坏簇
57 =2 #define FAT_CLUSTER_BAD12 0xff7 //坏簇
58 =2
59 =2 #define FAT_MASK_FAT32 0x0fffffff
60 =2 #define FAT_MASK_FAT16 0x0000ffff
61 =2 #define FAT_MASK_FAT12 0x00000fff
62 =2
C51 COMPILER V6.23a FATDISKSIZE 12/24/2004 00:11:39 PAGE 8
63 =2 #define FAT_MAX_PARTITIONS 0x10
64 =2 //#define IO_ERROR 0x00 //遇到io错误
65 =2 //#define NO_IO_ERROR 0x01 //没有遇到io错误
66 =2
67 =2 //计算指定簇的开始扇区号
68 =2 #define ClusterToSector(X) FAT.ClusSec + (X - 2) * FAT.SecPerClus
69 =2
70 =2 struct StorageMediaStr
71 =2 {
72 =2 WORD BytesPerSec; //每扇区字节数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -