#pragma once
#include "BKDImage.h"
#pragma pack(push)
#pragma pack(1)
struct MikrodosFileRecord
{
	BYTE dir_dir;   /*статус записи: бит 7 - бэд блок, остальные значения - неизвестно */
	BYTE dir_num;   /*статус записи: значения неизвестны */
	BYTE name[14];  //имя файла, если начинается с 0177 - каталог. и значит это не микродос
	WORD start_blok;//начальный блок
	WORD len_blk;   //длина в блоках, если len_blk == 0 то это тоже с большой долей вероятности каталог
	WORD address;   //стартовый адрес
	WORD length;    //длина, или остаток длины от длины в блоках, если размер файла > 64кб
	MikrodosFileRecord()
	{
		memset(this, 0, sizeof(MikrodosFileRecord));
	}
	MikrodosFileRecord &operator = (const MikrodosFileRecord &src)
	{
		memcpy(this, &src, sizeof(MikrodosFileRecord));
		return *this;
	}
	MikrodosFileRecord &operator = (const MikrodosFileRecord *src)
	{
		memcpy(this, src, sizeof(MikrodosFileRecord));
		return *this;
	}
};
#pragma pack(pop)

class CBKDMikrodos :
	public CBKDImage
{
		BOOL m_bHasDirs;    //флаг, что в образе найдены каталоги.
	public:
		CBKDMikrodos(const PARSE_RESULT &image);
		virtual ~CBKDMikrodos(void);

		virtual BOOL ReadCatalog();
};

#define FMT_MIKRODOS_CAT_RECORD_NUMBER 030
#define FMT_MIKRODOS_DISK_SIZE 0466
#define FMT_MIKRODOS_CAT_BEGIN 0500
/*
Поскольку формат микродос остаётся тайной-тайн, будем делать так.
первые 2 байта dir_dir и dir_num будем просто игнорировать, кроме бита 7 первого байта.
каталогов нет. в ячейке 030 - общее кол-во записей.
*/
