|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: //
8: // X68030 のメイン空間 ($000000-$FFFFFF) 担当
9: //
10:
11: #pragma once
12:
13: #include "device.h"
14: #include <array>
15:
16: class X68kIODevice : public IOContainerDevice
17: {
18: using inherited = IOContainerDevice;
19: public:
20: X68kIODevice();
21: virtual ~X68kIODevice() override;
22:
23: bool Init() override;
24:
25: uint64 Read8(uint32 addr) override;
26: uint64 Read16(uint32 addr) override;
27: uint64 Read32(uint32 addr) override;
28: uint64 Write8(uint32 addr, uint32 data) override;
29: uint64 Write16(uint32 addr, uint32 data) override;
30: uint64 Write32(uint32 addr, uint32 data) override;
31: uint64 Peek8(uint32 addr) override;
32:
33: // ブートページを切り替える。
34: void SwitchBootPage(bool isrom);
35:
36: protected:
37: IODevice *GetDevice(uint32 addr) const override;
38:
39: private:
40: IODevice *SearchDevice(uint32 addr) const;
41:
42: void AddDevice(IODevice *dev, uint devaddr, uint devlen);
43:
44: std::unique_ptr<IODevice> pADPCM {};
45: std::unique_ptr<IODevice> pAreaSet {};
46: std::unique_ptr<IODevice> pCGROM {};
47: std::unique_ptr<IODevice> pCRTC {};
48: std::unique_ptr<IODevice> pDMAC {};
49: std::unique_ptr<IODevice> pFDC {};
50: std::unique_ptr<IODevice> pGVRAM {};
51: std::unique_ptr<IODevice> pPEDEC {};
52: std::unique_ptr<IODevice> pIPLROM1 {};
53: std::unique_ptr<IODevice> pIPLROM2 {};
54: std::unique_ptr<IODevice> pMFP {};
55: std::unique_ptr<IODevice> pOPM {};
56: std::unique_ptr<IODevice> pPlaneVRAM {};
57: std::unique_ptr<IODevice> pPluto {};
58: std::unique_ptr<IODevice> pPPI {};
59: std::unique_ptr<IODevice> pPrinter {};
60: std::unique_ptr<IODevice> pRTC {};
61: std::unique_ptr<IODevice> pSCC {};
62: std::unique_ptr<IODevice> pSRAM {};
63: std::unique_ptr<IODevice> pSPC {};
64: std::unique_ptr<IODevice> pSprite {};
65: std::unique_ptr<IODevice> pSysport {};
66: std::unique_ptr<IODevice> pVideoCtlr {};
67:
68: std::array<IODevice*, 2048> table {};
69: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.