#ifndef _FAT12_H_
#define _FAT12_H_

#include "math.h"
#include "type.h"

typedef struct
{
	WORD	BytesPerSector;
	BYTE	SectorsPerCluster;
	WORD	ReservedSectors;
	BYTE	NumberOfFATs;
	WORD	RootEntries;
	WORD	TotalSectors;
	BYTE	Media;
	WORD	SectorsPerFAT;
	WORD	SectorsPerTrack;
	WORD	HeadsPerCylinder;
	DWORD	HiddenSectors;
	DWORD	TotalSectorsBig; 
} BPB_FAT12;

typedef struct
{
	BYTE	Jmp[3];
	BYTE	OemName[8];
	BPB_FAT12 Fat12;
	BYTE	DriveNumber;
	BYTE	Unused;
	BYTE	ExtBootSignature;
	DWORD	SerialNumber;
	BYTE	VolumeLabel[11];
	BYTE	FileSystem[8];
	BYTE	BootCode[450];
}BS_FAT12;

typedef struct
{
	BYTE	Name[8];
	BYTE	Ext[3];
	BYTE	Attrib;
	BYTE	Res;
	BYTE	Ms10;
	WORD	CreationTime;
	WORD	CreationDate;
	WORD	AccessDate;
	WORD	ClusterHigh;
	WORD	UpdateTime;
	WORD	UpdateDate;
	WORD	ClusterLow;
	DWORD	Size;
} FAT_ENTRY;

extern int find_entry(char *c);
extern BYTE read_sector_chs(BYTE cylinder,BYTE head,BYTE sector,char far* buffer);
extern BYTE read_sector(WORD lba,char far* buffer);
extern WORD get_next_sector(WORD sector);
extern int load_12();
extern BYTE move_block(BYTE off,WORD size);

#endif