// CBKMSTD10_EXT32.h: interface for the CBKMSTD10_EXT32 class.
//

#pragma once

#include "BKMSTD10.h"

class CBKMSTD10_EXT32 : public CBKMSTD10
{
		DECLARE_DYNAMIC(CBKMSTD10_EXT32)
		struct CustomData_t
		{
			int             nPage;   // номер подключенной страницы в окно
		};

	protected:
		CustomData_t        m_sCustom;
		void                SetMemoryPage(const int nPage);

		// Initialize memory
		virtual void        MemoryManager() override; // подключаем нужный нам банк Доп Озу в 5й банк озу

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

		virtual BK_DEV_MPI  GetBoardModel() const override
		{
			return BK_DEV_MPI::MSTD10_EXT32;
		}

		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        RestoreCustomData(DWORD id, CMSFManager *pMsf) override;
};

/*
    Надстройка над блоком МСТД
    при записи числа в любое место в страницу 4 -
    число интерпретируется как номер банка памяти.
    банк памяти мапится в дырку по адресам 140000-160000

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

проще делать ремап 6го банка в соответствующий банк доп озу, а 6й банк считать пустым
*/

