// BKMSTD11.h: interface for the CBKMSTD11 class.
//

#pragma once

#include "BKMPIDevice.h"

constexpr auto BRD_11_TESTS_BNK = 7;
constexpr auto MSTD11RomListSize = 1;

class CBKMSTD11 : public CBKMPIDevice
{
	protected:
		// Инициализация памяти
		virtual void        MemoryManager() override;
		virtual bool        OnInitDevice() override;

	public:
		CBKMSTD11();
		virtual ~CBKMSTD11() override;
		virtual BK_DEV_MPI  GetBoardModel() override;
		virtual bool        InitDevice(uint16_t addrStart) override;

		// Методы Set/Get byte/word - выход: false - надо делать throw
		virtual bool        GetByteT(register const uint16_t addr, register uint8_t *pValue, int &nTC) override;
		virtual bool        GetWordT(register const uint16_t addr, register uint16_t *pValue, int &nTC) override;

		// Методы для загрузки и сохранения состояния эмулятора
		virtual bool        RestoreMemory(DWORD id, CMSFManager *pMsf) override;
		virtual bool        RestoreMemoryMap(DWORD id, CMSFManager *pMsf) override;
};

/*
Блок МСТД
Организация массива памяти (делается один массив в 64Кб чтобы не делать лишних действий)
А из них используется только последняя страница

32кб: пусто
000000--банк 0 ---страница 0 --- не используется
020000--банк 1 ---страница 1 --- не используется
040000--банк 2 ---страница 2 --- не используется
060000--банк 3 ---страница 3 --- не используется
32кб: ПЗУ
100000--банк 4 ---страница 4 --- не используется
120000--банк 5 ---страница 5---- не используется
140000--банк 6 ---страница 6 --- не используется
160000--банк 7 ---страница 7---- тесты мстд bk11_203_mstd.rom
*/
