|
|
1.1 ! root 1: // ! 2: // nono ! 3: // Copyright (C) 2022 nono project ! 4: // Licensed under nono-license.txt ! 5: // ! 6: ! 7: // ! 8: // NEWS の I/O 空間担当 ! 9: // ! 10: ! 11: #pragma once ! 12: ! 13: #include "device.h" ! 14: #include <array> ! 15: ! 16: class NewsIODevice : public IOContainerDevice ! 17: { ! 18: using inherited = IOContainerDevice; ! 19: public: ! 20: NewsIODevice(); ! 21: ~NewsIODevice() 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: protected: ! 34: IODevice *GetDevice(uint32 addr) const override; ! 35: ! 36: private: ! 37: inline IODevice *SearchDevice(uint32 addr) const; ! 38: ! 39: std::unique_ptr<IODevice> pKBC {}; ! 40: std::unique_ptr<IODevice> pLance {}; ! 41: std::unique_ptr<IODevice> pNopIO {}; ! 42: std::unique_ptr<IODevice> pRTC {}; ! 43: std::unique_ptr<IODevice> pSCC {}; ! 44: std::unique_ptr<IODevice> pSubRAM {}; ! 45: ! 46: // デバイステーブル ! 47: std::array<IODevice *, 64> table {}; ! 48: }; ! 49: ! 50: static inline NewsIODevice *GetNewsIODevice() { ! 51: return Object::GetObject<NewsIODevice>(OBJ_NEWSIO); ! 52: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.