summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/h8/h8make.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/h8/h8make.py')
-rw-r--r--src/devices/cpu/h8/h8make.py58
1 files changed, 35 insertions, 23 deletions
diff --git a/src/devices/cpu/h8/h8make.py b/src/devices/cpu/h8/h8make.py
index e5aee1dbb96..99883e92c2a 100644
--- a/src/devices/cpu/h8/h8make.py
+++ b/src/devices/cpu/h8/h8make.py
@@ -5,7 +5,7 @@ from __future__ import print_function
USAGE = """
Usage:
-%s h8.lst <type> h8.inc (type = o/h/s20/s26)
+%s h8.lst <mode> <type> h8.inc (mode = s/d, type = o/h/s20/s26)
"""
import sys
@@ -21,14 +21,23 @@ def name_to_type(name):
sys.stderr.write("Unknown chip type name %s\n" % name)
sys.exit(1)
-def type_to_device(dtype):
- if dtype == 0:
- return "h8_device"
- if dtype == 1:
- return "h8h_device"
- if dtype == 2:
- return "h8s2000_device"
- return "h8s2600_device"
+def type_to_device(dtype, mode):
+ if mode == 's':
+ if dtype == 0:
+ return "h8_device"
+ if dtype == 1:
+ return "h8h_device"
+ if dtype == 2:
+ return "h8s2000_device"
+ return "h8s2600_device"
+ else:
+ if dtype == 0:
+ return "h8_disassembler"
+ if dtype == 1:
+ return "h8h_disassembler"
+ if dtype == 2:
+ return "h8s2000_disassembler"
+ return "h8s2600_disassembler"
def hexsplit(str):
res = []
@@ -182,9 +191,9 @@ class Opcode:
size = len(self.val) + 2*self.skip + 2*self.extra_words
if self.name == "jsr" or self.name == "bsr":
- flags = "%d | DASMFLAG_STEP_OVER" % size
+ flags = "%d | STEP_OVER" % size
elif self.name == "rts" or self.name == "rte":
- flags = "%d | DASMFLAG_STEP_OUT" % size
+ flags = "%d | STEP_OUT" % size
else:
flags = "%d" % size
@@ -445,28 +454,31 @@ class OpcodeList:
print("}", file=f)
def main(argv):
- if len(argv) != 4:
+ if len(argv) != 5:
print(USAGE % argv[0])
return 1
- dtype = name_to_type(argv[2])
- dname = type_to_device(dtype)
+ mode = argv[2]
+ dtype = name_to_type(argv[3])
+ dname = type_to_device(dtype, mode)
opcodes = OpcodeList(argv[1], dtype)
try:
- f = open(argv[3], "w")
+ f = open(argv[4], "w")
except Exception:
err = sys.exc_info()[1]
- sys.stderr.write("cannot write file %s [%s]\n" % (argv[3], err))
+ sys.stderr.write("cannot write file %s [%s]\n" % (argv[4], err))
sys.exit(1)
- opcodes.build_dispatch()
- opcodes.save_dasm(f, dname)
- opcodes.save_opcodes(f, dname)
- if dtype == 0:
- opcodes.save_dispatch(f, dname)
- opcodes.save_exec(f, dname, dtype, "full")
- opcodes.save_exec(f, dname, dtype, "partial")
+ if mode == 's':
+ opcodes.build_dispatch()
+ opcodes.save_opcodes(f, dname)
+ if dtype == 0:
+ opcodes.save_dispatch(f, dname)
+ opcodes.save_exec(f, dname, dtype, "full")
+ opcodes.save_exec(f, dname, dtype, "partial")
+ else:
+ opcodes.save_dasm(f, dname)
f.close()
# ======================================================================