|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: //
8: // メインバス (X68030)
9: //
10:
11: #pragma once
12:
13: #include "mainbus.h"
14:
15: class BankRAMDevice;
16: class ExtRAMDevice;
17: class X68kIODevice;
18:
19: class X68kMainbus final : public MainbusDevice
20: {
21: using inherited = MainbusDevice;
22: public:
23: X68kMainbus();
24: ~X68kMainbus() override;
25:
26: bool Init() override;
27: bool InitMainbus() override;
28: void ResetByMPU() override;
29: void ResetHard(bool poweron) override;
30:
1.1.1.2 ! root 31: busdata Read(busaddr addr) override;
! 32: busdata Write(busaddr addr, uint32 data) override;
! 33: busdata Peek1(uint32 addr) override;
! 34: bool Poke1(uint32 addr, uint32 data) override;
1.1 root 35:
36: private:
37: DECLARE_MONITOR_CALLBACK(MonitorUpdate);
38: DECLARE_MONITOR_CALLBACK(MonitorUpdateAccStat);
39:
40: inline bool IsIntio(uint32) const;
41:
42: // ブートページを切り替える。
43: void SwitchBootPage(bool isrom) override;
44:
45: std::unique_ptr<ExtRAMDevice> pExtRAM /*{}*/;
46: std::unique_ptr<X68kIODevice> pX68kIO /*{}*/;
47: // どこに置く?
48: std::unique_ptr<IODevice> pInterrupt {};
49:
50: std::array<bool, 256> is_intio {};
51:
52: Monitor monitor { this };
53:
54: std::array<BankRAMDevice*, 2> bankram /*{}*/;
55: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.