--- nono/vm/newsio.h 2026/04/29 17:05:17 1.1 +++ nono/vm/newsio.h 2026/04/29 17:05:33 1.1.1.4 @@ -11,40 +11,46 @@ #pragma once #include "device.h" +#include "textscreen.h" #include -class NewsIODevice : public IOContainerDevice +class NewsCtlrDevice; + +class NewsIODevice : public IODevice { - using inherited = IOContainerDevice; + using inherited = IODevice; public: NewsIODevice(); ~NewsIODevice() override; bool Init() override; - uint64 Read8(uint32 addr) override; - uint64 Read16(uint32 addr) override; - uint64 Read32(uint32 addr) override; - uint64 Write8(uint32 addr, uint32 data) override; - uint64 Write16(uint32 addr, uint32 data) override; - uint64 Write32(uint32 addr, uint32 data) override; - uint64 Peek8(uint32 addr) override; - - protected: - IODevice *GetDevice(uint32 addr) const override; + busdata Read(busaddr addr) override; + busdata Write(busaddr addr, uint32 data) override; + busdata Peek1(uint32 addr) override; + bool Poke1(uint32 addr, uint32 data) override; private: inline IODevice *SearchDevice(uint32 addr) const; + void InitMonitor(); + DECLARE_MONITOR_CALLBACK(MonitorUpdate); + std::unique_ptr pKBC {}; std::unique_ptr pLance {}; - std::unique_ptr pNopIO {}; std::unique_ptr pRTC {}; std::unique_ptr pSCC {}; std::unique_ptr pSubRAM {}; // デバイステーブル std::array table {}; + + NewsCtlrDevice *newsctlr {}; + + Monitor *monitor {}; + + // 裏バッファ + TextScreen src_screen {}; }; static inline NewsIODevice *GetNewsIODevice() {