#pragma once
#include "FDDStd326.h"

class CFDDStd326Mem : public CFDDStd326
{
		DECLARE_DYNAMIC(CFDDStd326Mem)

	protected:
		virtual void        MemoryManager() override;

	public:
		CFDDStd326Mem();
		virtual ~CFDDStd326Mem() override;
		virtual bool        InitialSetDevice() override;

		virtual BK_DEV_MPI GetBoardModel() const override
		{
			return BK_DEV_MPI::STD_MEM;
		}
		virtual CString  GetBoardName() const override
		{
			return _T("КНГМД 11+ОЗУ");
		}

		// Methods for Set/Get byte/word
		virtual bool        GetByteT(const uint16_t addr, uint8_t *pValue, int &nTC) override;
		virtual bool        GetWordT(const uint16_t addr, uint16_t *pValue, int &nTC) override;
		virtual bool        SetByteT(const uint16_t addr, uint8_t value, int &nTC) override;
		virtual bool        SetWordT(const uint16_t addr, uint16_t value, int &nTC) override;
		virtual bool        GetByteTInternal(const uint16_t addr, uint8_t *pValue, int &nTC) override;
		virtual bool        GetWordTInternal(const uint16_t addr, uint16_t *pValue, int &nTC) override;

};

constexpr auto KNGMD_RAM1_BNK = 1;
constexpr auto KNGMD_RAM2_BNK = 2;


/*
Блок КНГМД ре 326 с доп. ОЗУ для БК10
Организация массива памяти

32кб:
000000--банк 0 ---страница 4 --- не используется
020000--банк 1 ---страница 5---- ОЗУ
040000--банк 2 ---страница 6 --- ОЗУ
060000--банк 3 ---страница 7---- DISK_326.rom
*/
