|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2020 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: // ! 8: // サブメモリ ! 9: // ! 10: ! 11: #pragma once ! 12: ! 13: #include "device.h" ! 14: ! 15: // サブメモリ (基本クラス) ! 16: class SubRAMBaseDevice : public IODevice ! 17: { ! 18: using inherited = IODevice; ! 19: public: ! 20: SubRAMBaseDevice(int objid_, uint ramsize_kb); ! 21: virtual ~SubRAMBaseDevice() override; ! 22: ! 23: void ResetHard(bool poweron) override; ! 24: ! 25: uint64 Read8(uint32 addr) override; ! 26: uint64 Read16(uint32 addr) override; ! 27: uint64 Read32(uint32 addr) override; ! 28: uint64 Write8(uint32 addr, uint32 data) override; ! 29: uint64 Write16(uint32 addr, uint32 data) override; ! 30: uint64 Write32(uint32 addr, uint32 data) override; ! 31: uint64 Peek8(uint32 addr) override; ! 32: uint64 Poke8(uint32 addr, uint32 data) override; ! 33: ! 34: private: ! 35: // アドレスデコーダ ! 36: uint64 Decoder(uint32 addr) const; ! 37: ! 38: std::unique_ptr<uint8[]> ram {}; ! 39: uint ramsize {}; ! 40: }; ! 41: ! 42: // サブメモリ (XP/Lance との共有 RAM) ! 43: class SubRAMDevice : public SubRAMBaseDevice ! 44: { ! 45: using inherited = SubRAMBaseDevice; ! 46: public: ! 47: SubRAMDevice(int ramsize_kb); ! 48: ~SubRAMDevice() override; ! 49: ! 50: void ResetHard(bool poweron) override; ! 51: }; ! 52: ! 53: // サブメモリ2 (XP の非共有部) ! 54: class SubRAM2Device : public SubRAMBaseDevice ! 55: { ! 56: using inherited = SubRAMBaseDevice; ! 57: public: ! 58: SubRAM2Device(int ramsize_kb); ! 59: ~SubRAM2Device() override; ! 60: }; ! 61: ! 62: static inline SubRAMDevice *GetSubRAMDevice() { ! 63: return Object::GetObject<SubRAMDevice>(OBJ_SUBRAM); ! 64: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.