aboutsummaryrefslogtreecommitdiffstats
path: root/atk16_asm/asm_eval.py
diff options
context:
space:
mode:
authorJan Tuomi <jan@jantuomi.fi>2024-05-16 18:59:53 +0300
committerJan Tuomi <jan@jantuomi.fi>2024-05-16 18:59:53 +0300
commit9a3e2a3d05fc0b6bd0a847e29da0a87934f5a743 (patch)
tree9b8cd310e4b5fe79d3eacfdb284992ae0023bf7e /atk16_asm/asm_eval.py
parent1045229da08fc1c8168b5ae58d54a1566eefaaac (diff)
Fix another jump issue in assembler, improve monitor
Diffstat (limited to 'atk16_asm/asm_eval.py')
-rw-r--r--atk16_asm/asm_eval.py13
1 files changed, 6 insertions, 7 deletions
diff --git a/atk16_asm/asm_eval.py b/atk16_asm/asm_eval.py
index 09c3a75..f9a4e3d 100644
--- a/atk16_asm/asm_eval.py
+++ b/atk16_asm/asm_eval.py
@@ -27,10 +27,6 @@ constants: dict[str, str] = {
Symbols = dict[str, int]
-def check_size(bits: int, val: int) -> None:
- if val >= 2 ** bits:
- raise Exception(f"Value does not fit in {bits} bits: 0x{val:>04x}")
-
def eval_symbol(symbols: Symbols, c: str) -> str:
if c in symbols:
return str(symbols[c])
@@ -42,6 +38,9 @@ def eval_symbol(symbols: Symbols, c: str) -> str:
def eval_expr(symbols: Symbols, expr: str, bits: int = 16) -> int:
expr = eval_symbol(symbols, expr)
- ret = eval(expr, symbols.copy()) # eval as Python expr
- check_size(bits, ret)
- return ret
+ val = eval(expr, symbols.copy()) # eval as Python expr
+
+ if val >= 2 ** bits:
+ raise Exception(f"When evaluating expression \"{expr}\":\nValue does not fit in {bits} bits: 0x{val:>04x}")
+
+ return val