summaryrefslogtreecommitdiff
path: root/nandgame/assembler/disas.cpp
diff options
context:
space:
mode:
authoruvok2026-01-09 16:27:09 +0100
committeruvok2026-01-09 16:27:09 +0100
commitcdb2a203f3fe71636e42f357e5e073ef4b2306c8 (patch)
tree0d18b04b9b4bc0a4e442a0d1d0f3a304d37d583d /nandgame/assembler/disas.cpp
parentb65ed96c66b9ad2243bda0367274b42b963e9321 (diff)
bit 14 unset (w/ 15 set) = illegal ins
Diffstat (limited to 'nandgame/assembler/disas.cpp')
-rw-r--r--nandgame/assembler/disas.cpp4
1 files changed, 4 insertions, 0 deletions
diff --git a/nandgame/assembler/disas.cpp b/nandgame/assembler/disas.cpp
index 8f6ff3b..ac7ca0c 100644
--- a/nandgame/assembler/disas.cpp
+++ b/nandgame/assembler/disas.cpp
@@ -171,6 +171,10 @@ static Decoded fixup_ins(uint16_t ins) {
}
std::string print_decoded(uint16_t ins, bool simplify) {
+ // illegal instruction
+ if ((ins & 0xC000) == 0x8000)
+ return "halt";
+
Decoded d = simplify ? fixup_ins(ins) : decode_instruction(ins);
std::string jumpdest_str = d.jumpdest.empty() ? "" : "." + d.jumpdest;