📄 filesys.h
字号:
#ifndef FILESYS_H#define FILESYS_H#define DEVNAME "/dev/fd0H1440"#define DIR_ENTRY_SIZE 32#define SECTOR_SIZE 512#define FAT_ONE_OFFSET 0x200#define FAT_TWO_OFFSET 0x1400#define ROOTDIR_OFFSET 0x2600#define DATA_OFFSET 0x4200/* mask for the entry attribute */#define ATTR_READONLY 0x01#define ATTR_HIDDEN 0x02#define ATTR_SYSTEM 0x04#define ATTR_VLABEL 0x08#define ATTR_SUBDIR 0x10#define ATTR_ARCHIVE 0x20/* mask for time 5:6:5*/#define MASK_HOUR 0xf800#define MASK_MIN 0x07e0#define MASK_SEC 0x001f/* mask for date 7:4:5*/#define MASK_YEAR 0xfe00#define MASK_MONTH 0x01e0#define MASK_DAY 0x001fstruct BootDescriptor_t { unsigned char Oem_name[9]; /* 0x03 - 0x0a */ int BytesPerSector; /* 0x0b - 0x0c */ int SectorsPerCluster; /* 0x0d */ int ReservedSectors; /* 0x0e - 0x0f */ int FATs; /* 0x10 */ int RootDirEntries; /* 0x11 - 0x12 */ int LogicSectors; /* 0x13 - 0x14 */ int MediaType; /* 0x15 */ int SectorsPerFAT; /* 0x16 - 0x17 */ int SectorsPerTrack; /* 0x18 - 0x19 */ int Heads; /* 0x1a - 0x1b */ int HiddenSectors; /* 0x1c - 0x1d */};struct Entry { unsigned char short_name[12]; /* Bytes 0 - 10, 11 Bytes name */ unsigned char long_name[27]; /* not used 26 Bytes name */ unsigned short hour,min,sec; /* Bytes 22 - 23 */ unsigned short year,month,day; /* Bytes 24 - 25 */ unsigned short FirstCluster; /* Bytes 26 - 27 */ unsigned int size; /* Bytes 28 - 31 */ /* attribute Bytes 11 * 7 6 5 4 3 2 1 0 * N N A D V S H R N: not used */ unsigned char readonly:1; /* R */ unsigned char hidden:1; /* H */ unsigned char system:1; /* S */ unsigned char vlabel:1; /* V */ unsigned char subdir:1; /* D */ unsigned char archive:1; /* A */};int fd_load();int fd_ls();int fd_cd(char *dir);int fd_rm(char *file_name);void findDate(unsigned short *year, unsigned short *month, unsigned short *day, unsigned char info[2]);void findTime(unsigned short *hour, unsigned short *min, unsigned short *sec, unsigned char info[2]);int ReadFat();int WriteFat();void ScanBootSector();void ScanRootEntry();int ScanEntry(char *entryname,struct Entry *pentry,int mode);int GetEntry(struct Entry *entry);void FileNameFormat(unsigned char *name);unsigned short GetFatCluster(unsigned short prev);void ClearFatCluster(unsigned short cluster);#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -