--- nono/vm/bitmap.h 2026/04/29 17:04:31 1.1.1.2 +++ nono/vm/bitmap.h 2026/04/29 17:04:52 1.1.1.7 @@ -1,17 +1,18 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once -#include #include "device.h" +#include class BitmapDevice : public IODevice { - typedef IODevice inherited; + using inherited = IODevice; static const uint32 plane0base = 0xb10c0000; static const uint32 plane7end = 0xb12c0000; @@ -19,18 +20,20 @@ class BitmapDevice static const uint32 fcset7end = 0xb1500000; public: BitmapDevice(); - virtual ~BitmapDevice(); + virtual ~BitmapDevice() override; - virtual void ResetHard(); - - virtual uint64 Read8(uint32 addr); - virtual uint64 Read16(uint32 addr); - virtual uint64 Read32(uint32 addr); - virtual uint64 Write8(uint32 addr, uint32 data); - virtual uint64 Write16(uint32 addr, uint32 data); - virtual uint64 Write32(uint32 addr, uint32 data); - virtual uint64 Peek8(uint32 addr); - virtual bool MonitorUpdate(); + bool Init() override; + bool PowerOn() override; + void ResetHard() override; + + uint64 Read8(uint32 addr) override; + uint64 Read16(uint32 addr) override; + uint64 Read32(uint32 addr) override; + uint64 Write8(uint32 addr, uint32 data) override; + uint64 Write16(uint32 addr, uint32 data) override; + uint64 Write32(uint32 addr, uint32 data) override; + uint64 Peek8(uint32 addr) override; + void MonitorUpdate(TextScreen&) override; // プレーン数を取得 int GetPlaneCount() const { return nplane; } @@ -69,14 +72,14 @@ class BitmapDevice static const int MAX_PLANES = 8; // プレーン数 (設定による) - int nplane = 0; + int nplane {}; // RFCNT // b31..b24 b23..b16 b15..b10 b09..b00 // 無効 水平カウンタ 無効 ラスタカウンタ - uint32 rfcnt = 0; - int hscroll = 0; - int vscroll = 0; + uint32 rfcnt {}; + int hscroll {}; + int vscroll {}; // プレーンセレクタ // b31...b4 b3 b2 b1 b0 @@ -84,7 +87,7 @@ class BitmapDevice // | | +----- プレーン1 // | +-------- プレーン2 // +----------- プレーン3 - uint32 bmsel = 0; + uint32 bmsel {}; // ビットマッププレーン。 // ロングワードでホストバイトオーダー。 @@ -102,13 +105,12 @@ class BitmapDevice uint32 mask[MAX_PLANES] {}; // エミュレータによるコンソール出力 - TextScreen *textscr; - std::unique_ptr prev; - int screen_w; // 桁数 - int screen_h; // 行数 - int origin_x; // 原点 X [dot] - int origin_y; // 原点 Y [dot] - + TextScreen *textscr {}; + std::vector prev {}; + int screen_w {}; // 桁数 + int screen_h {}; // 行数 + int origin_x {}; // 原点 X [dot] + int origin_y {}; // 原点 Y [dot] }; extern std::unique_ptr gBitmap;