--- nono/vm/xiospace.h 2026/04/29 17:04:42 1.1.1.4 +++ nono/vm/xiospace.h 2026/04/29 17:05:10 1.1.1.9 @@ -4,18 +4,21 @@ // Licensed under nono-license.txt // +// +// X68030 のメイン空間 ($000000-$FFFFFF) 担当 +// + #pragma once #include "device.h" #include -class XIOSpaceDevice - : public IODevice +class XIOSpaceDevice : public IODevice { using inherited = IODevice; public: XIOSpaceDevice(); - ~XIOSpaceDevice() override; + virtual ~XIOSpaceDevice() override; bool Init() override; @@ -27,6 +30,9 @@ class XIOSpaceDevice uint64 Write32(uint32 addr, uint32 data) override; uint64 Peek8(uint32 addr) override; + // ブートページを切り替える。 + void SwitchBootPage(bool isrom); + private: // アドレス addr に対応する IODevice* を返す。 // addr は 24bit マスクされていること。 @@ -39,5 +45,30 @@ class XIOSpaceDevice void AddDevice(IODevice *dev); + std::unique_ptr pAreaSet {}; + std::unique_ptr pCGROM {}; + std::unique_ptr pCRTC {}; + std::unique_ptr pDMAC {}; + std::unique_ptr pFDC {}; + std::unique_ptr pGVRAM {}; + std::unique_ptr pPEDEC {}; + std::unique_ptr pIPLROM1 {}; + std::unique_ptr pIPLROM2 {}; + std::unique_ptr pMFP {}; + std::unique_ptr pPlaneVRAM {}; + std::unique_ptr pPluto {}; + std::unique_ptr pPPI {}; + std::unique_ptr pPrinter {}; + std::unique_ptr pRTC {}; + std::unique_ptr pSCC {}; + std::unique_ptr pSRAM {}; + std::unique_ptr pSPC {}; + std::unique_ptr pSprite {}; + std::unique_ptr pSysport {}; + std::unique_ptr pVideoCtlr {}; + std::unique_ptr pOPM {}; + std::array table {}; }; + +extern XIOSpaceDevice *gXIOSpace;