summaryrefslogtreecommitdiff
path: root/io
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--io/model.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/io/model.cpp b/io/model.cpp
index fb9f62b..79bc511 100644
--- a/io/model.cpp
+++ b/io/model.cpp
@@ -33,16 +33,16 @@ bool iomodel::interact(std::array<std::uint_fast32_t, NUM_CTLREGS> &ctlregs) {
33 if (interrupt) 33 if (interrupt)
34 ctlregs[FLAGS] |= FLAG_INT_REQUEST; 34 ctlregs[FLAGS] |= FLAG_INT_REQUEST;
35 else 35 else
36 ctlregs[FLAGS] &= !FLAG_INT_REQUEST; 36 ctlregs[FLAGS] &= ~FLAG_INT_REQUEST;
37 interrupt = interrupt && (ctlregs[FLAGS] & FLAG_INT_ENABLE); 37 interrupt = interrupt && (ctlregs[FLAGS] & FLAG_INT_ENABLE);
38 38
39 if (ctlregs[FLAGS] & FLAG_INT_ENABLE_DELAY)
40 ctlregs[FLAGS] |= FLAG_INT_ENABLE;
41
39 if (interrupt) { 42 if (interrupt) {
40 ctlregs[FLAGS_SAVED] = ctlregs[FLAGS]; 43 ctlregs[FLAGS_SAVED] = ctlregs[FLAGS];
41 ctlregs[FLAGS] = 0; 44 ctlregs[FLAGS] = 0;
42 ctlregs[HALTED] = 0; 45 ctlregs[HALTED] = 0;
43 } else {
44 if (ctlregs[FLAGS] & FLAG_INT_ENABLE_DELAY)
45 ctlregs[FLAGS] |= FLAG_INT_ENABLE;
46 } 46 }
47 47
48 return interrupt; 48 return interrupt;