--- nono/vm/fuserom.h 2026/04/29 17:04:32 1.1 +++ nono/vm/fuserom.h 2026/04/29 17:06:00 1.1.1.10 @@ -1,21 +1,45 @@ // // nono -// Copyright (C) 2020 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt +// + +// +// FuseROM // #pragma once -#include "romimg.h" +#include "device.h" +#include -class FuseROMDevice : public ROMDevice +class FuseROMDevice : public IODevice { - typedef ROMDevice inherited; + using inherited = IODevice; + + // この ROM が保持できるデータ量 (バイト数換算) + static const uint32 SRCBYTES = 128; public: FuseROMDevice(); - virtual ~FuseROMDevice(); + ~FuseROMDevice() override; - bool Init(); + bool Init() override; + + protected: + // BusIO インタフェース + static const uint32 NPORT = SRCBYTES * 2; // XXX 未調査 + busdata ReadPort(uint32 offset); + busdata WritePort(uint32 offset, uint32 data); + busdata PeekPort(uint32 offset); + bool PokePort(uint32 offset, uint32 data); private: - uint8 src[1024]; + uint8 GetByte(uint32 offset) const; + + // バイトデータで保持しておく + std::array src {}; }; + +inline FuseROMDevice *GetFuseROMDevice() { + return Object::GetObject(OBJ_FUSEROM); +}