--- nono/vm/newsio.h 2026/04/29 17:05:17 1.1.1.1 +++ nono/vm/newsio.h 2026/04/29 17:05:25 1.1.1.2 @@ -11,40 +11,50 @@ #pragma once #include "device.h" +#include "monitor.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 Read8(uint32 addr) override; + busdata Read16(uint32 addr) override; + busdata Read32(uint32 addr) override; + busdata Write8(uint32 addr, uint32 data) override; + busdata Write16(uint32 addr, uint32 data) override; + busdata Write32(uint32 addr, uint32 data) override; + busdata Peek8(uint32 addr) override; + bool Poke8(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 { this }; + + // 裏バッファ + TextScreen src_screen {}; }; static inline NewsIODevice *GetNewsIODevice() {