diff options
| author | uvok | 2026-01-09 16:27:09 +0100 |
|---|---|---|
| committer | uvok | 2026-01-09 16:27:09 +0100 |
| commit | cdb2a203f3fe71636e42f357e5e073ef4b2306c8 (patch) | |
| tree | 0d18b04b9b4bc0a4e442a0d1d0f3a304d37d583d | |
| parent | b65ed96c66b9ad2243bda0367274b42b963e9321 (diff) | |
bit 14 unset (w/ 15 set) = illegal ins
| -rw-r--r-- | nandgame/assembler/disas.cpp | 4 | ||||
| -rwxr-xr-x | nandgame/assembler/disas.py | 4 |
2 files changed, 8 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; diff --git a/nandgame/assembler/disas.py b/nandgame/assembler/disas.py index 56b44c4..5d8ccf5 100755 --- a/nandgame/assembler/disas.py +++ b/nandgame/assembler/disas.py @@ -183,6 +183,10 @@ def fixup_ins(ins: int) -> list[str]: def print_decoded(ins: int, simplify: bool) -> str: + # illegal instruction + if ins & 0xC000 == 0x8000: + return "halt" + if simplify: (mnemonic, dest, op1, op2, jumpdest) = fixup_ins(ins) else: |
