|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2020 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: // LUNA88K のシステムコントローラのような何か
8:
9: #pragma once
10:
11: #include "device.h"
12:
13: class SysCtlrDevice
14: : public IODevice
15: {
16: using inherited = IODevice;
17: public:
18: SysCtlrDevice();
19: ~SysCtlrDevice() override;
20:
1.1.1.2 ! root 21: void MonitorUpdate(TextScreen&) override;
1.1 root 22:
23: uint64 Read32(uint32 addr) override;
24: uint64 Write32(uint32 addr, uint32 data) override;
25: uint64 Peek8(uint32 addr) override;
26:
27: uint8 GetIntMask(int id) const { return intmask[id]; }
28: void TellIntLevel(int id, int level) { intlevel[id] |= level; }
29: private:
30: uint8 intmask[4] {};
31: // 発生した割り込みのレベルビットマップ
32: uint8 intlevel[4] {};
33: };
34:
35: extern std::unique_ptr<SysCtlrDevice> gSysCtlr;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.