aboutsummaryrefslogtreecommitdiffstats
path: root/atk16_asm/asm_ops.py
diff options
context:
space:
mode:
Diffstat (limited to 'atk16_asm/asm_ops.py')
-rw-r--r--atk16_asm/asm_ops.py4
1 files changed, 4 insertions, 0 deletions
diff --git a/atk16_asm/asm_ops.py b/atk16_asm/asm_ops.py
index a7ef88f..3198d4c 100644
--- a/atk16_asm/asm_ops.py
+++ b/atk16_asm/asm_ops.py
@@ -126,6 +126,10 @@ def make_jpi(meta: Meta, symbols: Symbols, imm: int | str) -> int:
"""JPI 0110 XXXI IIII IIII"""
imm_e = eval_expr(symbols, str(imm), bits=9)
imm_e = imm_e - meta.address - 1
+
+ if imm_e < -(2 ** 8) or imm_e >= 2 ** 8:
+ raise Exception(f"jpi imm value is not representable in 9 bits: {imm_e}")
+
imm_e = imm_e & (0b111111111)
word = (0b0110 << 12) + \
imm_e