--- nono/vm/dmac.h 2026/04/29 17:04:32 1.1.1.2 +++ nono/vm/dmac.h 2026/04/29 17:04:35 1.1.1.3 @@ -1,6 +1,7 @@ // // nono -// Copyright (C) 2017 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once @@ -169,19 +170,15 @@ struct DMAC class DMACDevice : public IODevice { - typedef IODevice inherited; + using inherited = IODevice; static const int baseaddr = 0xe84000; public: DMACDevice(); - virtual ~DMACDevice(); + ~DMACDevice() override; - virtual uint64 Read8(uint32 addr); - virtual uint64 Write8(uint32 addr, uint32 data); - virtual uint64 Peek8(uint32 addr); - - virtual bool MonitorUpdate(); + bool MonitorUpdate() override; // 転送 void AbortTransfer(DMAC::Channel *chan); @@ -189,6 +186,13 @@ class DMACDevice int64 TransferM8toD8(DMAC::Channel *chan); int64 TransferD8toM8(DMAC::Channel *chan); + protected: + // BusIO インタフェース + static const uint NPORT = 256; + uint64 Read(uint32 addr); + uint64 Write(uint32 addr, uint32 data); + uint64 Peek(uint32 addr); + private: void MonitorReg4(int x, int y, uint32 reg, const char * const *names);