|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: //
8: // メインバス (LUNA)
9: //
10:
11: #pragma once
12:
13: #include "mainbus.h"
14:
15: class LunaMainbus : public Mainbus24Device
16: {
17: using inherited = Mainbus24Device;
18: public:
19: LunaMainbus();
20: ~LunaMainbus() override;
21:
22: bool InitMainbus() override;
23:
24: protected:
25: // ブートページを切り替える。
26: void SwitchBootPage(bool isrom) override;
27:
28: // デバイスマップから devtable を作成
29: void MakeDevtable(const uint8 *maptable);
30:
31: // ブートページ切り替え用 (unique_ptr ではない)
32: IODevice *ram0 {};
33:
34: std::unique_ptr<IODevice> pBusErr {};
35: std::unique_ptr<IODevice> pBT45x {};
36: std::unique_ptr<IODevice> pCRTC2 {};
37: std::unique_ptr<IODevice> pEthernet {};
38: std::unique_ptr<IODevice> pInterrupt {};
39: std::unique_ptr<IODevice> pMainRAM {};
40: std::unique_ptr<IODevice> pNopIO {};
41: std::unique_ptr<IODevice> pPartialRAM {};
42: std::unique_ptr<IODevice> pPlaneVRAM {};
43: std::unique_ptr<IODevice> pPROM {};
44: std::unique_ptr<IODevice> pPROM0 {};
45: std::unique_ptr<IODevice> pPIO0 {};
46: std::unique_ptr<IODevice> pPIO1 {};
47: std::unique_ptr<IODevice> pRTC {};
48: std::unique_ptr<IODevice> pSIO {};
49: std::unique_ptr<IODevice> pSPC {};
50: std::unique_ptr<IODevice> pSubRAM {};
51: std::unique_ptr<IODevice> pSysClk {};
52: std::unique_ptr<IODevice> pTAS {};
53: std::unique_ptr<IODevice> pXPbus {};
54: };
55:
56: class Luna1Mainbus final : public LunaMainbus
57: {
58: using inherited = LunaMainbus;
59: public:
60: Luna1Mainbus();
61: ~Luna1Mainbus() override;
62:
1.1.1.2 ! root 63: bool Create() override;
! 64:
1.1 root 65: private:
66: static const uint8 maptable[256];
67: };
68:
69: class Luna88kMainbus final : public LunaMainbus
70: {
71: using inherited = LunaMainbus;
72: public:
73: Luna88kMainbus();
74: ~Luna88kMainbus() override;
75:
1.1.1.2 ! root 76: bool Create() override;
! 77:
1.1 root 78: private:
79: std::unique_ptr<IODevice> pCMMU {};
80: std::unique_ptr<IODevice> pFuseROM {};
81:
82: static const uint8 maptable[256];
83: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.