|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2020 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: // ! 8: // LUNA* の RAM のうち 16MB に満たないメモリブロックを担当する人 ! 9: // ! 10: ! 11: #pragma once ! 12: ! 13: #include "device.h" ! 14: ! 15: class MainRAMDevice; ! 16: ! 17: class PartialRAMDevice : public IOContainerDevice ! 18: { ! 19: using inherited = IOContainerDevice; ! 20: public: ! 21: PartialRAMDevice(); ! 22: virtual ~PartialRAMDevice() override; ! 23: ! 24: bool Init() override; ! 25: ! 26: uint64 Read8(uint32 addr) override; ! 27: uint64 Read16(uint32 addr) override; ! 28: uint64 Read32(uint32 addr) override; ! 29: uint64 Write8(uint32 addr, uint32 data) override; ! 30: uint64 Write16(uint32 addr, uint32 data) override; ! 31: uint64 Write32(uint32 addr, uint32 data) override; ! 32: uint64 Peek8(uint32 addr) override; ! 33: ! 34: protected: ! 35: IODevice *GetDevice(uint32 addr) const override; ! 36: ! 37: private: ! 38: inline IODevice *SearchDevice(uint32 addr) const; ! 39: ! 40: uint32 ram_size {}; ! 41: ! 42: MainRAMDevice *ramdev {}; ! 43: IODevice *nopdev {}; ! 44: }; ! 45: ! 46: static inline PartialRAMDevice *GetPartialRAMDevice() { ! 47: return Object::GetObject<PartialRAMDevice>(OBJ_PARTIAL_RAM); ! 48: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.