⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 msdos.h

📁 一个完整的GUI界面OS,单盘启动 实现了多线程、FAT32文件读写
💻 H
字号:
#ifndef MSDOS_H#define MSDOS_H#include "CTYPE.h"#define FAT12_MAX    4078 // 12 位 FAT的最大串号 #define FREE_FAT12   0x0#define FAT12_MAGIC	 4085#define FAT16_MAGIC	 (( unsigned ) 65526l )#define FAT32_MAGIC	 268435455l#define BAD_FAT12    0xff7#define BAD_FAT16    0xfff7#define BAD_FAT32    0xffffff7#define EOF_FAT12    0xff8		// standard EOF #define EOF_FAT16    0xfff8#define EOF_FAT32    0xffffff8#define FILE_NOT_FOUND  0xffffffff#define FAT12_ROOT	 1#define FAT12   0x12
#define FAT16   0x0e
#define FAT32   0x0b
#define EXT2    0x83
#define UJFS    0x82#define PACKED __attribute__((packed))typedef struct{	signed char	jmp_boot[3];	// Boot strap short or near jump 	signed char	oem[8];	      // Name - can be used to special casepartition manager volumes 	u8_t	sector_size[2];	    // bytes per logical sector 	u8_t	cluster_size;	      // sectors/cluster 	u16_t	reserved;	          // reserved sectors 	u8_t	fats;		            // number of FATs 	u8_t	dir_entries[2];	    // root directory entries 	u8_t	sectors[2];	        // number of sectors 	u8_t	media_descriptor;		// media code (unused) 	u16_t	fat16_length;	      // sectors/FAT 	u16_t	sec_per_track;	    // sectors per track 	u16_t	heads;		          // number of heads 	u32_t	hidden;		          // hidden sectors (unused) 	u32_t	total_sectors;	    // number of sectors (if sectors == 0) 	// The following fields are only used by FAT32 	u32_t	fat32_length;	      // sectors/FAT 	u16_t	flags;		          // bit 8: fat mirroring, low 4: active fat 	u8_t	version[2];	        // major, minor filesystem version 	u32_t	fat32_root_cluster;	// first cluster in root directory 	u16_t	info_sector;	      // filesystem info sector 	u16_t	backup_boot;	      // backup boot sector 	u16_t	unused[6];	        // Unused }MSDOS_SUPER;typedef struct{	 u16_t flag;	 u16_t sector_size;	 u8_t  cluster_size;	 u32_t blk_size;	 u32_t fat_size;	 u16_t dir_entries;	 u16_t fat_entries;	 u32_t fat_base;	 u32_t fat_root;	 u32_t fs_base;	 u32_t blk_base ;  //////数据区开始	 MSDOS_SUPER dos_sp;}MSDOS_INFO;typedef struct {  unsigned sec:5;  unsigned min:6;  unsigned hour:5;}__attribute__((packed)) DOS_TIME;typedef struct  {  unsigned day_of_month:5;  unsigned month:4;  unsigned year:7; /* since 1980 */}__attribute__((packed)) DOS_DATE;typedef struct{	u8_t file_name[8];	u8_t ext_name[3];	// name and extension 	u8_t attribute;		// attribute bits 	u8_t    lcase;		// Case for base and extension 	u8_t	  ctime_ms;	// Creation time, milliseconds 	u16_t	  ctime;		// Creation time 	u16_t	  cdate;		// Creation date 	u16_t	  adate;		// Last access date 	u16_t   first_high;	// High 16 bits of cluster in FAT32 	DOS_TIME	time;	DOS_DATE date;	u16_t first_cluster;// first cluster 	u32_t	file_size;		// file size (in bytes) }__attribute__((packed)) MSDOS_DIR;typedef struct __fat{	unsigned fat_item:12;}PACKED FAT12_TAG;//typedef unsigned short FAT12_TAG;#define MSDOS_READONLY      1                  // 只读#define MSDOS_HIDDEN  2                        // 隐藏文件 #define MSDOS_SYS_FILE     4                   // 系统文件 #define MSDOS_VOLUME  8                        // 卷标 #define MSDOS_FLOD     16                      // 目录 #define MSDOS_ARCH    32                       // 存档文件 #define MSDOS_ISVOLUME(attribute)		(((attribute) &0x20) && ((attribute) & 0x08))#define MSDOS_ISDIR(attribute)		  (((attribute) &0x10) && !((attribute) & 0x08))#define MSDOS_ISREG(attribute)		  (!((attribute) & 0x08) && !((attribute) &0x10))void  Fat12_Init(void);//unsigned long Fat12_LoadFile(char* filename,void **ptr);//void  Fat12_LoadProgram(char* filename,void* buf);FILE* Fat12_OpenFile(char* filename);int Fat12_Read(FILE*fp, void *buff, unsigned long __sb);int Fat32_Init(void);int Fat32_Read(FILE*fp, void*buff, int __sb);FILE* Fat32_OpenFile(char* filename);void Fat32_PrintRootDir(void);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -