summaryrefslogtreecommitdiff
path: root/isa/decode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'isa/decode.cpp')
-rw-r--r--isa/decode.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/isa/decode.cpp b/isa/decode.cpp
index 061fe5c..f0cdca8 100644
--- a/isa/decode.cpp
+++ b/isa/decode.cpp
@@ -92,7 +92,7 @@ instruction_context decode(std::uint_fast32_t flags, unsigned int pc, unsigned i
92 inst.next_pc = (pc & ~07777) | ((pc + 1) & 07777); 92 inst.next_pc = (pc & ~07777) | ((pc + 1) & 07777);
93 93
94 if (interrupt) { 94 if (interrupt) {
95 bits = 04000; 95 inst.bits = bits = 04000;
96 assert(df == 0); 96 assert(df == 0);
97 assert(ifb == 0); 97 assert(ifb == 0);
98 inst.next_pc = pc; 98 inst.next_pc = pc;
@@ -146,7 +146,7 @@ instruction_context decode(std::uint_fast32_t flags, unsigned int pc, unsigned i
146 case 4: // JMS jump subroutine 146 case 4: // JMS jump subroutine
147 inst.need_exec_store = true; 147 inst.need_exec_store = true;
148 inst.possibly_redirects = true; 148 inst.possibly_redirects = true;
149 inst.df = "JMS %a"; 149 inst.df = interrupt ? "<interrupt> JMS %a" : "JMS %a";
150 inst.ef = [ifb](auto &ctx) { 150 inst.ef = [ifb](auto &ctx) {
151 ctx.data = ctx.next_pc; 151 ctx.data = ctx.next_pc;
152 ctx.next_pc = (ifb << 12) | ((ctx.final_address.value() + 1) & 07777); 152 ctx.next_pc = (ifb << 12) | ((ctx.final_address.value() + 1) & 07777);