--- nono/vm/nereid.h 2026/04/29 17:05:21 1.1 +++ nono/vm/nereid.h 2026/04/29 17:05:33 1.1.1.4 @@ -11,7 +11,6 @@ #pragma once #include "device.h" -#include "monitor.h" #include class BankRAMDevice; @@ -29,15 +28,16 @@ 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); @@ -47,7 +47,7 @@ class NereidDevice : public IODevice 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; }