aboutsummaryrefslogtreecommitdiffstats
path: root/atk16_asm/asm_pass4.py
diff options
context:
space:
mode:
authorJan Tuomi <jans.tuomi@gmail.com>2024-02-25 00:06:13 +0200
committerJan Tuomi <jans.tuomi@gmail.com>2024-02-25 00:17:07 +0200
commite63c309f3517ef64b2f5fe190864bd2b85b84c79 (patch)
tree9119a0a64f4661e21d683bde34fde06a98d65d68 /atk16_asm/asm_pass4.py
parent6dd1e346d330e662e42dd8bc75d17317223908fd (diff)
Add debug symbols, improve debugger, fix bugs
Diffstat (limited to 'atk16_asm/asm_pass4.py')
-rw-r--r--atk16_asm/asm_pass4.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/atk16_asm/asm_pass4.py b/atk16_asm/asm_pass4.py
index 7365416..52aaf68 100644
--- a/atk16_asm/asm_pass4.py
+++ b/atk16_asm/asm_pass4.py
@@ -17,6 +17,8 @@ class Result4:
lines: list[Result4Line]
operations: OpExpansionDict
symbols: dict[str, int]
+ dbg_label_table: DbgLabelTable
+ dbg_source_table: DbgSourceTable
def pass_4(result3: Result3) -> Result4:
result_lines: list[Result4Line] = []
@@ -32,7 +34,10 @@ def pass_4(result3: Result3) -> Result4:
if keyword in operations:
fn = operations[keyword]
- word = fn(meta, result3.symbols, *args)
+ try:
+ word = fn(meta, result3.symbols, *args)
+ except Exception as e:
+ raise Exception(f"Invalid assembly at {line.src_file}:{line.line_num + 1}\n\n{line.parts}\n\n{e}") from e
result_lines.append(Result4Line(
line_num=line.line_num,
src_file=line.src_file,
@@ -58,4 +63,6 @@ def pass_4(result3: Result3) -> Result4:
operations=result3.operations,
symbols=result3.symbols,
lines=result_lines,
+ dbg_label_table=result3.dbg_label_table,
+ dbg_source_table=result3.dbg_source_table,
)