📄 fat.c
字号:
#include "datatype.h"
#include "D12Config.h"
#include "BulkOnly.h"
U8 mbr[]={
0x33,0xc0,0x8e,0xc0,0x8e,0xd8,0x8e,0xd0,0xbc,0x00,0x7c,0xfc,0x8b,0xf4,0xbf,0x00,//00000000
0x06,0xb9,0x00,0x01,0xf2,0xa5,0xea,0x44,0x06,0x00,0x00,0x8b,0xd5,0x58,0xb4,0x10,//00000010
0xf6,0xe4,0x05,0xae,0x04,0x8b,0xf0,0x8a,0x74,0x01,0x8b,0x4c,0x02,0xbb,0x00,0x7c,//00000020
0xe8,0x01,0x02,0xcd,0x13,0x72,0x16,0x81,0xbf,0xfe,0x01,0x55,0xaa,0x75,0x0e,0xea,//00000030
0x00,0x7c,0x00,0x00,0x80,0xfa,0x81,0x74,0x02,0xb2,0x80,0x8b,0xea,0xbf,0xbe,0x07,//00000040
0xb9,0x04,0x00,0x32,0xf6,0x8a,0x45,0x04,0x3c,0x00,0x74,0x0b,0x3c,0x05,0x74,0x07,//00000050
0x80,0x3d,0x80,0x74,0x19,0xfe,0xc6,0x83,0xc7,0x10,0xe2,0xe9,0x0a,0xf6,0x74,0x06,//00000060
0xbe,0x9c,0x06,0xeb,0x04,0x90,0xbe,0xb4,0x06,0xe8,0x0e,0x00,0xeb,0xfe,0x8a,0xc6,//00000070
0x04,0x31,0x50,0xbe,0x99,0x06,0xbb,0x1b,0x06,0x53,0xfc,0xac,0x50,0x24,0x7f,0xb4,//00000080
0x0e,0xcd,0x10,0x58,0xa8,0x80,0x74,0xf2,0xc3,0x0d,0x0a,0xa0,0x0d,0x0a,0x4e,0x6f,//00000090
0x20,0x61,0x63,0x74,0x69,0x76,0x65,0x20,0x70,0x61,0x72,0x74,0x69,0x74,0x69,0x6f,//000000a0
0x6e,0x2e,0x2e,0xae,0x0d,0x0a,0x50,0x61,0x72,0x74,0x69,0x74,0x69,0x6f,0x6e,0x20,//000000b0
0x6e,0x6f,0x74,0x20,0x66,0x6f,0x75,0x6e,0x64,0x2e,0x2e,0xae,0x00,0x00,0x00,0x00,//000000c0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//000000d0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//000000e0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//000000f0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//00000100
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//00000110
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//00000120
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//00000130
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//00000140
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//00000150
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//00000160
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//00000170
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//00000180
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//00000190
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//000001a0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,//000001b0
0x01,0x00,0x06,0x01,0x21,0x60,0x01,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,//000001c0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//000001d0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//000001e0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55,0xaa//000001f0
};
/*
U8 dbr[]={ //unuse
0xeb,0x3c,0x90,0x4d,0x53,0x44,0x4f,0x53, 0x35,0x2e,0x30,0x00,0x02,0x01,0x01,0x00,//00004000
0x02,0x00,0x02,0x00,0x18,0xf8,0x18,0x00, 0x3f,0x00,0xff,0x00,0x20,0x00,0x00,0x00,//00004010
0x00,0x00,0x00,0x00,0x00,0x00,0x29,0xb5, 0x8e,0x8f,0x64,0x4e,0x4f,0x20,0x4e,0x41,//00004020
0x4d,0x45,0x20,0x20,0x20,0x20,0x46,0x41, 0x54,0x31,0x36,0x20,0x20,0x20,0x33,0xc9,//00004030
0x8e,0xd1,0xbc,0xf0,0x7b,0x8e,0xd9,0xb8, 0x00,0x20,0x8e,0xc0,0xfc,0xbd,0x00,0x7c,//00004040
0x38,0x4e,0x24,0x7d,0x24,0x8b,0xc1,0x99, 0xe8,0x3c,0x01,0x72,0x1c,0x83,0xeb,0x3a,//00004050
0x66,0xa1,0x1c,0x7c,0x26,0x66,0x3b,0x07, 0x26,0x8a,0x57,0xfc,0x75,0x06,0x80,0xca,//00004060
0x02,0x88,0x56,0x02,0x80,0xc3,0x10,0x73, 0xeb,0x33,0xc9,0x8a,0x46,0x10,0x98,0xf7,//00004070
0x66,0x16,0x03,0x46,0x1c,0x13,0x56,0x1e, 0x03,0x46,0x0e,0x13,0xd1,0x8b,0x76,0x11,//00004080
0x60,0x89,0x46,0xfc,0x89,0x56,0xfe,0xb8, 0x20,0x00,0xf7,0xe6,0x8b,0x5e,0x0b,0x03,//00004090
0xc3,0x48,0xf7,0xf3,0x01,0x46,0xfc,0x11, 0x4e,0xfe,0x61,0xbf,0x00,0x00,0xe8,0xe6,//000040a0
0x00,0x72,0x39,0x26,0x38,0x2d,0x74,0x17, 0x60,0xb1,0x0b,0xbe,0xa1,0x7d,0xf3,0xa6,//000040b0
0x61,0x74,0x32,0x4e,0x74,0x09,0x83,0xc7, 0x20,0x3b,0xfb,0x72,0xe6,0xeb,0xdc,0xa0,//000040c0
0xfb,0x7d,0xb4,0x7d,0x8b,0xf0,0xac,0x98, 0x40,0x74,0x0c,0x48,0x74,0x13,0xb4,0x0e,//000040d0
0xbb,0x07,0x00,0xcd,0x10,0xeb,0xef,0xa0, 0xfd,0x7d,0xeb,0xe6,0xa0,0xfc,0x7d,0xeb,//000040e0
0xe1,0xcd,0x16,0xcd,0x19,0x26,0x8b,0x55, 0x1a,0x52,0xb0,0x01,0xbb,0x00,0x00,0xe8,//000040f0
0x3b,0x00,0x72,0xe8,0x5b,0x8a,0x56,0x24, 0xbe,0x0b,0x7c,0x8b,0xfc,0xc7,0x46,0xf0,//00004100
0x3d,0x7d,0xc7,0x46,0xf4,0x29,0x7d,0x8c, 0xd9,0x89,0x4e,0xf2,0x89,0x4e,0xf6,0xc6,//00004110
0x06,0x96,0x7d,0xcb,0xea,0x03,0x00,0x00, 0x20,0x0f,0xb6,0xc8,0x66,0x8b,0x46,0xf8,//00004120
0x66,0x03,0x46,0x1c,0x66,0x8b,0xd0,0x66, 0xc1,0xea,0x10,0xeb,0x5e,0x0f,0xb6,0xc8,//00004130
0x4a,0x4a,0x8a,0x46,0x0d,0x32,0xe4,0xf7, 0xe2,0x03,0x46,0xfc,0x13,0x56,0xfe,0xeb,//00004140
0x4a,0x52,0x50,0x06,0x53,0x6a,0x01,0x6a, 0x10,0x91,0x8b,0x46,0x18,0x96,0x92,0x33,//00004150
0xd2,0xf7,0xf6,0x91,0xf7,0xf6,0x42,0x87, 0xca,0xf7,0x76,0x1a,0x8a,0xf2,0x8a,0xe8,//00004160
0xc0,0xcc,0x02,0x0a,0xcc,0xb8,0x01,0x02, 0x80,0x7e,0x02,0x0e,0x75,0x04,0xb4,0x42,//00004170
0x8b,0xf4,0x8a,0x56,0x24,0xcd,0x13,0x61, 0x61,0x72,0x0b,0x40,0x75,0x01,0x42,0x03,//00004180
0x5e,0x0b,0x49,0x75,0x06,0xf8,0xc3,0x41, 0xbb,0x00,0x00,0x60,0x66,0x6a,0x00,0xeb,//00004190
0xb0,0x4e,0x54,0x4c,0x44,0x52,0x20,0x20, 0x20,0x20,0x20,0x20,0x0d,0x0a,0x4e,0x54,//000041a0
0x4c,0x44,0x52,0x20,0x69,0x73,0x20,0x6d, 0x69,0x73,0x73,0x69,0x6e,0x67,0xff,0x0d,//000041b0
0x0a,0x44,0x69,0x73,0x6b,0x20,0x65,0x72, 0x72,0x6f,0x72,0xff,0x0d,0x0a,0x50,0x72,//000041c0
0x65,0x73,0x73,0x20,0x61,0x6e,0x79,0x20, 0x6b,0x65,0x79,0x20,0x74,0x6f,0x20,0x72,//000041d0
0x65,0x73,0x74,0x61,0x72,0x74,0x0d,0x0a, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//000041e0
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0xac,0xbf,0xcc,0x55,0xaa //000041f0
};
*/
/*F**************************************************************************
* NAME: fat_format
PURPOSE:
* Create single FAT16 partition and format the selected memory
*/
void fat_format ()
{
U8 *gl_buffer;
U16 j, k;
U32 i;
//-- MAIN BOOT RECORD --
gl_buffer = LBA;
i=0;
for(j=0;j<512;j++)
gl_buffer[i++]=mbr[j];
/*
gl_buffer[i++]=0x80; //分区表项1
gl_buffer[i++]=0x01;
gl_buffer[i++]=0x01;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x06; //bigFAT16
gl_buffer[i++]=0x3F;
gl_buffer[i++]=0x20;
gl_buffer[i++]=0x3F;
gl_buffer[i++]=0x01; //首扇区的相对扇区号
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0xFF; //Total Pages
gl_buffer[i++]=0x0F;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
for(j=0;j<48;j++) //其他3分区无
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x55;
gl_buffer[i++]=0xAA;
*/
// -- Reserved Region --
gl_buffer[i++]=0xEB; // BS_jmpBoo
gl_buffer[i++]=0x03;
gl_buffer[i++]=0x90;
/*
for(j=0;j<8;j++)
gl_buffer[i++]=0x31+j;
*/
gl_buffer[i++]='M'; //BS_OEMName
gl_buffer[i++]='S';
gl_buffer[i++]='D';
gl_buffer[i++]='O';
gl_buffer[i++]='S';
gl_buffer[i++]='5';
gl_buffer[i++]='.';
gl_buffer[i++]='0';
gl_buffer[i++]=0x00; //BPB_BytesPerSec
gl_buffer[i++]=0x02;
gl_buffer[i++]=0x01; //BPB_SecPerClus
gl_buffer[i++]=0x01; //BPS_RsvdSecCn
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x02; //BPB_NumFATs
gl_buffer[i++]=0x00; //BPB_RootEntCnt 0x03B0:944
gl_buffer[i++]=0x02;
gl_buffer[i++]=0x00; //BPB_TotSec16
gl_buffer[i++]=0x10;
gl_buffer[i++]=0xF8; //BPB_Media
gl_buffer[i++]=0x0C; //BPB_FATSz16
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x01; //BPB_SecPerTrk
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x01; //BPB_NumHeads
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x01; //BPB_HiddSec
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00; //BPB_TotSec32
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00; //BS_DrvNum
gl_buffer[i++]=0x00; //BS_Reserved1
gl_buffer[i++]=0x29; //BS_BootSig
gl_buffer[i++]=0x57; //BS_VolID
gl_buffer[i++]=0x57;
gl_buffer[i++]=0x57;
gl_buffer[i++]=0x57;
gl_buffer[i++]='G'; //BS_VolLab
gl_buffer[i++]='X';
gl_buffer[i++]='Q';
gl_buffer[i++]=' ';
gl_buffer[i++]=' ';
gl_buffer[i++]=' ';
gl_buffer[i++]=' ';
gl_buffer[i++]=' ';
gl_buffer[i++]=' ';
gl_buffer[i++]=' ';
gl_buffer[i++]=' ';
gl_buffer[i++]='F'; //BS_FileSysType
gl_buffer[i++]='A';
gl_buffer[i++]='T';
gl_buffer[i++]='1';
gl_buffer[i++]='6';
gl_buffer[i++]=' ';
gl_buffer[i++]=' ';
gl_buffer[i++]=' ';
for(j=62;j<510;j++)
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x55;
gl_buffer[i++]=0xAA;
//------------------
// -- FATS --
// -- FAT 1 --
gl_buffer[i++]=0xF8; // reserved clusters 0 & 1
gl_buffer[i++]=0xFF;
gl_buffer[i++]=0xFF;
gl_buffer[i++]=0x00;
// free clusters in first FAT sector
for (j = (512 - 4) / 2; j != 0; j--)
{
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
}
// free clusters in other FAT sectors
for (j = 11*512 / 4; j != 0; j--)
{
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
}
// -- FAT 2 --
gl_buffer[i++]=0xF8; // reserved clusters 0 & 1
gl_buffer[i++]=0xFF;
gl_buffer[i++]=0xFF;
gl_buffer[i++]=0x00;
// free clusters in first FAT sector
for (j = (512 - 4) / 2; j != 0; j--)
{
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
}
// free clusters in other FAT sectors
for (j = 11*512 / 4; j != 0; j--)
{
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
}
// -- ROOT DIRECTORY ENTRIES --
gl_buffer[i++]='G'; //filename
gl_buffer[i++]='X';
gl_buffer[i++]='Q';
gl_buffer[i++]='-';
gl_buffer[i++]='W';
gl_buffer[i++]='U';
gl_buffer[i++]='Q';
gl_buffer[i++]='I';
gl_buffer[i++]=0x20;
gl_buffer[i++]=0x20;
gl_buffer[i++]=0x20;
gl_buffer[i++]=0x08; //attribute
gl_buffer[i++]=0x00; //reserved
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0xA4; //last refresh time
gl_buffer[i++]=0x51;
gl_buffer[i++]=0x53; //last refresh data
gl_buffer[i++]=0x33;
gl_buffer[i++]=0x00; //start cluster
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00; //file length
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
gl_buffer[i++]=0x00;
for (j = 511 ; j != 0 ; j--)
{
for (k = 32; k != 0; k--)
{
gl_buffer[i++]=0x00;
//gl_buffer[i++]=0x00;
//gl_buffer[i++]=0x00;
//gl_buffer[i++]=0x00;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -