summaryrefslogtreecommitdiff
path: root/nandgame/assembler/assembler_main.py
diff options
context:
space:
mode:
authoruvok2026-01-15 16:34:26 +0100
committeruvok2026-01-15 16:34:26 +0100
commit86277605087e8527b1f28831e39f64d9d55af485 (patch)
treed253dc911bd9edd77b036278475d2938769cd1be /nandgame/assembler/assembler_main.py
parent844dc43709d5411ebd4c786f83e42e1e7bb61f76 (diff)
Fix name of assembler. usage
Diffstat (limited to 'nandgame/assembler/assembler_main.py')
-rw-r--r--nandgame/assembler/assembler_main.py25
1 files changed, 25 insertions, 0 deletions
diff --git a/nandgame/assembler/assembler_main.py b/nandgame/assembler/assembler_main.py
new file mode 100644
index 0000000..881b8fe
--- /dev/null
+++ b/nandgame/assembler/assembler_main.py
@@ -0,0 +1,25 @@
+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 parse_file # pyright: ignore[reportImplicitRelativeImport]
+from py_nand_ass import assembler as ass # pyright: ignore[reportImplicitRelativeImport]
+
+if __name__ == "__main__":
+ result = parse_file(sys.argv[1])
+ 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)
+