--- nono/vm/romimg_x68k.h 2026/04/29 17:04:32 1.1.1.1 +++ nono/vm/romimg_x68k.h 2026/04/29 17:06:00 1.1.1.12 @@ -1,41 +1,77 @@ // // nono -// Copyright (C) 2019 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt +// + +// +// X680x0 の各種 ROM // #pragma once -#include "romimg.h" +#include "rom.h" + +class IPLROM1Device; -class IPLROM1Device - : public ROMDevice +class IPLROM0Device : public IODevice { - typedef ROMDevice inherited; + using inherited = IODevice; + public: + IPLROM0Device(); + ~IPLROM0Device() override; + + bool Init() override; + void ResetHard(bool poweron) override; + + busdata Read(busaddr addr) override; + busdata Peek1(uint32 addr) override; + + private: + uint32 ReadDecoder(uint32 addr); + + IPLROM1Device *iplrom1 {}; +}; + +class IPLROM1Device : public ROMDevice +{ + using inherited = ROMDevice; public: IPLROM1Device(); - virtual ~IPLROM1Device(); + ~IPLROM1Device() override; - virtual bool Init(); + bool Init() override; }; -class IPLROM2Device - : public ROMDevice +class IPLROM2Device : public ROMDevice { - typedef ROMDevice inherited; + using inherited = ROMDevice; public: IPLROM2Device(); - virtual ~IPLROM2Device(); + ~IPLROM2Device() override; - virtual bool Init(); + bool Init() override; }; -class CGROMDevice - : public ROMDevice +class CGROMDevice : public ROMDevice { - typedef ROMDevice inherited; + using inherited = ROMDevice; public: CGROMDevice(); - virtual ~CGROMDevice(); + ~CGROMDevice() override; - virtual bool Init(); + bool Init() override; }; + +inline CGROMDevice *GetCGROMDevice() { + return Object::GetObject(OBJ_CGROM); +} +inline IPLROM0Device *GetIPLROM0Device() { + return Object::GetObject(OBJ_IPLROM_BOOT); +} +inline IPLROM1Device *GetIPLROM1Device() { + return Object::GetObject(OBJ_IPLROM1); +} +inline ROMDevice *GetIPLROM2Device() { + return Object::GetObject(OBJ_IPLROM2); +}