From 1561eff8780dc15dc5ea46d7225cc49a46f709ca Mon Sep 17 00:00:00 2001 From: uvok Date: Wed, 14 Jan 2026 20:44:16 +0100 Subject: Restructure asembler as package --- nandgame/assembler/assembler_main .py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 nandgame/assembler/assembler_main .py (limited to 'nandgame/assembler/assembler_main .py') diff --git a/nandgame/assembler/assembler_main .py b/nandgame/assembler/assembler_main .py new file mode 100644 index 0000000..f77d07a --- /dev/null +++ b/nandgame/assembler/assembler_main .py @@ -0,0 +1,28 @@ +import sys + +#pywrong: THIS IS A FUCKING EXECUTABLE! LEAVE ME THE FUCK ALONE. +from py_nand_ass import parser_types as pt # pyright: ignore[reportImplicitRelativeImport] +from py_nand_ass.parser import parser # pyright: ignore[reportImplicitRelativeImport] +from py_nand_ass import assembler as ass # pyright: ignore[reportImplicitRelativeImport] + +with open(sys.argv[1], "rb") as infile: + data = infile.read() + data2 = data.decode("ascii") + result: list[pt.AsmLine] + result = parser.parse(data2, tracking=True) + errors = ass.check_instructions(result) + errors = list(errors) + + if errors: + for e in errors: + print(f"ERROR: On line {e.lineno}: {e.opcode} : {e.error_message}") + sys.exit(1) + + print("Instruction checks passed") + p = ass.assemble(result) + if len(sys.argv) >= 3: + dest = sys.argv[2] + else: + dest = sys.argv[1] + ".bin" + p.write_to_file(dest) + -- cgit v1.2.3