|
|
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.