|
|
1.1 root 1: //
2: // nono
3: // Copyright (C) 2021 nono project
4: // Licensed under nono-license.txt
5: //
6:
7: //
8: // ABORT/INTERRUPT スイッチによる NMI 機構デバイス
9: //
10:
11: #pragma once
12:
13: #include "device.h"
14: #include "message.h"
15:
1.1.1.2 root 16: class InterruptDevice;
17:
1.1 root 18: class NMIDevice : public Device
19: {
20: using inherited = Device;
21: public:
22: NMIDevice();
23: ~NMIDevice() override;
24:
25: bool Init() override;
26:
27: // NMI ボタンを押す
28: void PressNMI();
29:
30: // NMI 信号線をアサートする
31: void AssertNMI();
32:
33: // NMI 信号線をネゲートする
34: void NegateNMI();
35:
36: private:
1.1.1.3 root 37: void AssertMessage(MessageID, uint32);
1.1.1.4 root 38: void NegateCallback(Event *);
1.1 root 39:
1.1.1.2 root 40: InterruptDevice *interrupt {};
41:
1.1.1.4 root 42: Event *event {};
1.1 root 43: };
44:
1.1.1.5 ! root 45: inline NMIDevice *GetNMIDevice() {
1.1.1.2 root 46: return Object::GetObject<NMIDevice>(OBJ_NMI);
47: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.