|
|
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);
1.1.1.2 ! root 21: ~SubRAMBaseDevice() override;
1.1 root 22:
23: void ResetHard(bool poweron) override;
24:
1.1.1.2 ! root 25: busdata Read8(uint32 addr) override;
! 26: busdata Read16(uint32 addr) override;
! 27: busdata Read32(uint32 addr) override;
! 28: busdata Write8(uint32 addr, uint32 data) override;
! 29: busdata Write16(uint32 addr, uint32 data) override;
! 30: busdata Write32(uint32 addr, uint32 data) override;
! 31: busdata Peek8(uint32 addr) override;
! 32: bool Poke8(uint32 addr, uint32 data) override;
1.1 root 33:
34: private:
35: // アドレスデコーダ
1.1.1.2 ! root 36: uint32 Decoder(uint32 addr) const;
1.1 root 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.