--- nono/vm/crtc.h 2026/04/29 17:05:14 1.1.1.8 +++ nono/vm/crtc.h 2026/04/29 17:05:24 1.1.1.10 @@ -10,9 +10,14 @@ #pragma once +#include "device.h" #include "event.h" #include "monitor.h" +class MFPDevice; +class Renderer; +class TVRAMDevice; + struct CRTC { // 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 @@ -128,18 +133,20 @@ class CRTCDevice : public IODevice using inherited = IODevice; public: CRTCDevice(); - virtual ~CRTCDevice() override; + ~CRTCDevice() override; + bool Init() override; void ResetHard(bool poweron) override; - protected: - // BusIO インタフェース - static const uint NPORT = 0x800; - uint64 Read(uint32 offset); - uint64 Write(uint32 offset, uint32 data); - uint64 Peek(uint32 offset); + busdata Read8(uint32 offset) override; + busdata Read16(uint32 offset) override; + busdata Write8(uint32 offset, uint32 data) override; + busdata Write16(uint32 offset, uint32 data) override; + busdata Peek8(uint32 offset) override; private: + // ワード読み出し + busdata Peek16(uint32 addr) const; // レジスタへの書き込み void SetReg(uint32 offset, uint32 data); // 動作ポートへの書き込み @@ -161,11 +168,13 @@ class CRTCDevice : public IODevice // ラスターコピー指示 bool raster_copy {}; + MFPDevice *mfp {}; + Renderer *renderer {}; + TVRAMDevice *tvram {}; + Event hsync_event { this }; Event vdisp_event { this }; Event raster_event { this }; Monitor monitor { this }; }; - -extern CRTCDevice *gCRTC;