--- nono/vm/rom.h 2026/04/29 17:04:28 1.1.1.1 +++ nono/vm/rom.h 2026/04/29 17:04:36 1.1.1.2 @@ -1,27 +1,29 @@ // // nono -// Copyright (C) 2018 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // #pragma once #include "device.h" +#include "mappedfile.h" class ROMDevice : public IODevice { - typedef IODevice inherited; + using inherited = IODevice; public: ROMDevice(); - virtual ~ROMDevice(); + ~ROMDevice() override; - 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); + 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; protected: bool LoadROM(const char *name, int size); @@ -29,16 +31,13 @@ class ROMDevice // アドレスマスク uint32 mask = 0; - // オープンしているファイルのパスとディスクリプタ - std::string filename; - int fd = 0; - - // mmap される領域とサイズ - uint8 *file = NULL; - size_t filesize = 0; + // オープンしているファイル + std::string filename {}; + MappedFile file {}; // メモリ領域をさすポインタ。 - // 通常は ROM イメージファイルを読み込むだけなので mem = file となる。 + // 通常は ROM イメージファイルを読み込むだけなので + // mem = file.GetPtr() となる。 // ROM イメージを自分で用意したい場合はこれを適当なところにむけてどうぞ。 uint8 *mem = NULL; };