summaryrefslogtreecommitdiff
path: root/nandgame/assembler/disas_main.py
diff options
context:
space:
mode:
authoruvok2026-01-15 16:34:53 +0100
committeruvok2026-01-15 16:35:00 +0100
commite23699bad1fd35ff37bc51802490f41a45c25782 (patch)
tree3a319474b8e9b0baf0f41c57712599c6c7da5503 /nandgame/assembler/disas_main.py
parent86277605087e8527b1f28831e39f64d9d55af485 (diff)
Fix issues, linting, use argparse, with other py exes
Diffstat (limited to 'nandgame/assembler/disas_main.py')
-rw-r--r--nandgame/assembler/disas_main.py26
1 files changed, 18 insertions, 8 deletions
diff --git a/nandgame/assembler/disas_main.py b/nandgame/assembler/disas_main.py
index 05ce466..d9d314f 100644
--- a/nandgame/assembler/disas_main.py
+++ b/nandgame/assembler/disas_main.py
@@ -1,24 +1,34 @@
+import argparse
import sys
import py_nand_ass.disas as dass # pyright: ignore[reportImplicitRelativeImport]
def main():
- if len(sys.argv) != 2:
- print(f"Usage: {sys.argv[0]} [filename]")
- sys.exit(1)
-
- filename = sys.argv[1]
+ arg_parser = argparse.ArgumentParser(
+ prog="disas_main.py", description="Nandgame disassembler"
+ )
+
+ g = arg_parser.add_mutually_exclusive_group()
+ g.add_argument("--le", action="store_true")
+ g.add_argument("--be", action="store_true")
+ arg_parser.add_argument("filename")
+ args = arg_parser.parse_args()
+ endianness = "little"
+ if args.be:
+ endianness = "big"
+
+ filename = args.filename
try:
with open(filename, "rb") as f:
while True:
insb = f.read(2)
if not insb:
break
- ins = int.from_bytes(insb, byteorder=ENDIANNESS)
- if ENDIANNESS in ["big", "be"]:
+ ins = int.from_bytes(insb, byteorder=endianness)
+ if endianness in ["big", "be"]:
raw_ins = f"{insb[0]:02x} {insb[1]:02x}"
- elif ENDIANNESS in ["little", "le"]:
+ elif endianness in ["little", "le"]:
raw_ins = f"{insb[1]:02x} {insb[0]:02x}"
else:
raw_ins = f"?? ??"