|
|
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:
1.1.1.2 ! root 17: class PartialRAMDevice : public IODevice
1.1 root 18: {
1.1.1.2 ! root 19: using inherited = IODevice;
1.1 root 20: public:
21: PartialRAMDevice();
1.1.1.2 ! root 22: ~PartialRAMDevice() override;
1.1 root 23:
24: bool Init() override;
25:
1.1.1.2 ! root 26: busdata Read8(uint32 addr) override;
! 27: busdata Read16(uint32 addr) override;
! 28: busdata Read32(uint32 addr) override;
! 29: busdata Write8(uint32 addr, uint32 data) override;
! 30: busdata Write16(uint32 addr, uint32 data) override;
! 31: busdata Write32(uint32 addr, uint32 data) override;
! 32: busdata Peek8(uint32 addr) override;
! 33: bool Poke8(uint32 addr, uint32 data) override;
1.1 root 34:
35: private:
36: inline IODevice *SearchDevice(uint32 addr) const;
37:
38: uint32 ram_size {};
39:
40: MainRAMDevice *ramdev {};
41: IODevice *nopdev {};
42: };
43:
44: static inline PartialRAMDevice *GetPartialRAMDevice() {
45: return Object::GetObject<PartialRAMDevice>(OBJ_PARTIAL_RAM);
46: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.