--- nono/vm/mk48t02.h 2026/04/29 17:05:11 1.1.1.12 +++ nono/vm/mk48t02.h 2026/04/29 17:05:29 1.1.1.15 @@ -10,10 +10,9 @@ #pragma once -#include "device.h" +#include "rtc.h" #include "mappedfile.h" #include "monitor.h" -#include "rtc.h" // MK48T02 の時計部分のレジスタと内部状態 struct MK48T02Clock @@ -117,7 +116,7 @@ class MK48T02Device : public RTCDevice using inherited = RTCDevice; public: MK48T02Device(); - virtual ~MK48T02Device() override; + ~MK48T02Device() override; bool Init() override; @@ -130,12 +129,6 @@ class MK48T02Device : public RTCDevice // 全域をゼロクリアする (内蔵 ROM からのアクセス用) void ClearAll(); - // BusIO インタフェース - // (内蔵 ROM からのアクセス用に特別に public にしてある) - uint64 Read(uint32 offset); - uint64 Write(uint32 offset, uint32 data); - uint64 Peek(uint32 offset); - // 内蔵カウンタへのアクセス。 // ラッチカウンタではないことに注意。 uint GetSec() const override; // 秒(0-59) @@ -147,9 +140,14 @@ class MK48T02Device : public RTCDevice uint GetYear() const override; // 年(西暦) uint GetLeap() const override; // うるう年カウンタ(0..3) - protected: // BusIO インタフェース + // (内蔵 ROM からのアクセス用に特別に public にしてある) + busdata ReadPort(uint32 offset); + busdata WritePort(uint32 offset, uint32 data); + busdata PeekPort(uint32 offset); + protected: static const uint32 NPORT = 2048; + bool PokePort(uint32 offset, uint32 data); // 仮想RTCからのクロック void Tick1Hz() override; @@ -199,3 +197,7 @@ class MK48T02Device : public RTCDevice Monitor monitor { this }; }; + +static inline MK48T02Device *GetMK48T02Device() { + return Object::GetObject(OBJ_RTC); +}