--- nono/vm/nereid.h 2026/04/29 17:05:21 1.1 +++ nono/vm/nereid.h 2026/04/29 17:06:01 1.1.1.5 @@ -11,7 +11,6 @@ #pragma once #include "device.h" -#include "monitor.h" #include class BankRAMDevice; @@ -29,25 +28,26 @@ class NereidDevice : public IODevice bool Create() override; - uint64 Read8(uint32 addr) override; - uint64 Read16(uint32 addr) override; - uint64 Write8(uint32 addr, uint32 data) override; - uint64 Write16(uint32 addr, uint32 data) override; - uint64 Peek8(uint32 addr) override; + busdata Read(busaddr addr) override; + busdata Write(busaddr addr, uint32 data) override; + busdata Peek1(uint32 addr) override; // Nereid が1枚でもささっていれば true。 bool IsInstalled() const; + // Board デバイス取得。 + NereidBoardDevice *GetBoard(int id) const { return boards[id].get(); } + private: inline uint32 Decoder(uint32 addr) const; - DECLARE_MONITOR_CALLBACK(MonitorUpdate); + DECLARE_MONITOR_SCREEN(MonitorScreen); // ボードの有無と配置場所 (有りなら $3 か $b、無しなら -1) std::array loc {}; std::array, 2> boards {}; - Monitor monitor { this }; + Monitor *monitor {}; }; // Nereid ボード1枚分 @@ -56,16 +56,14 @@ class NereidBoardDevice : public IODevic using inherited = IODevice; public: - NereidBoardDevice(int n_); + explicit NereidBoardDevice(int n_); ~NereidBoardDevice() override; bool Create() override; - uint64 Read8(uint32 addr) override; - uint64 Read16(uint32 addr) override; - uint64 Write8(uint32 addr, uint32 data) override; - uint64 Write16(uint32 addr, uint32 data) override; - uint64 Peek8(uint32 addr) override; + busdata Read(busaddr addr) override; + busdata Write(busaddr addr, uint32 data) override; + busdata Peek1(uint32 addr) override; // ネットワークが有効なら true を返す bool IsNetEnable() const { return (bool)net; } @@ -93,6 +91,6 @@ class NereidBoardDevice : public IODevic std::unique_ptr net /*{}*/; }; -static inline NereidDevice *GetNereidDevice() { +inline NereidDevice *GetNereidDevice() { return Object::GetObject(OBJ_NEREID); }