#pragma once
#include "FDDStd326.h"

class CFDDStd326Mem : public CFDDStd326
{
		DECLARE_DYNAMIC(CFDDStd326Mem)

	protected:
		virtual void        MemoryManager() override;

	public:
		CFDDStd326Mem() = default;

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

		virtual BK_DEV_MPI GetBoardModel() const override
		{
			return BK_DEV_MPI::STD_MEM;
		}
		virtual std::wstring  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        GetByteIndirect(const uint16_t addr, uint8_t *pValue) override;
		virtual bool        GetWordIndirect(const uint16_t addr, uint16_t *pValue) override;
		virtual bool        CheckReadWord(const uint16_t addr) override;
		virtual bool        CheckWriteWord(const uint16_t addr) override;

};

constexpr auto KNGMD_RAM1_BNK = 5;
constexpr auto KNGMD_RAM2_BNK = 6;


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

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