--- nono/vm/crtc.h 2026/04/29 17:04:28 1.1 +++ nono/vm/crtc.h 2026/04/29 17:04:50 1.1.1.5 @@ -1,6 +1,7 @@ // // nono -// Copyright (C) 2017 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once @@ -38,32 +39,35 @@ struct CRTC static const uint32 R22 = 0x16; // $E8002C static const uint32 R23 = 0x17; // $E8002E static const uint32 REG_END = 0x18; - static const uint32 REG_OP = 0x240; // $E80480 + static const uint32 REG_OP = 0x240; // $E80480 }; class CRTCDevice : public IODevice { - typedef IODevice inherited; + using inherited = IODevice; public: CRTCDevice(); - virtual ~CRTCDevice(); + virtual ~CRTCDevice() override; - virtual void ResetHard(); + void ResetHard() override; - virtual uint64 Read8(uint32 addr); - virtual uint64 Read16(uint32 addr); - virtual uint64 Write8(uint32 addr, uint32 data); - virtual uint64 Write16(uint32 addr, uint32 data); - virtual uint64 Peek8(uint32 addr); + protected: + // BusIO インタフェース + static const uint NPORT = 0x800; + uint64 Read(uint32 offset); + uint64 Write(uint32 offset, uint32 data); + uint64 Peek(uint32 offset); private: - void WriteReg(uint32 offset, uint32 data); + void SetReg(uint32 offset, uint32 data); // 垂直表示期間イベント - void VDispCallback(int arg); + void VDispCallback(Event& ev); struct CRTC crtc {}; Event vdisp_event {}; }; + +extern std::unique_ptr gCRTC;