mirror of
https://github.com/robmcmullen/asmgen.git
synced 2024-12-26 23:29:17 +00:00
Add Merlin assembler support.
This commit is contained in:
parent
64b183ea33
commit
90da8693a5
27
asmgen.py
27
asmgen.py
@ -58,6 +58,7 @@ def slugify(s):
|
|||||||
class AssemblerSyntax(object):
|
class AssemblerSyntax(object):
|
||||||
extension = "s"
|
extension = "s"
|
||||||
comment_char = ";"
|
comment_char = ";"
|
||||||
|
comma_string = ", "
|
||||||
use_16_bit = False
|
use_16_bit = False
|
||||||
|
|
||||||
def asm(self, text):
|
def asm(self, text):
|
||||||
@ -120,6 +121,24 @@ class CSource(AssemblerSyntax):
|
|||||||
def label(self, text):
|
def label(self, text):
|
||||||
return f"{text} = "
|
return f"{text} = "
|
||||||
|
|
||||||
|
class Merlin(AssemblerSyntax):
|
||||||
|
extension = "S"
|
||||||
|
comma_string = ","
|
||||||
|
|
||||||
|
def byte(self, text):
|
||||||
|
return self.asm("db %s" % text)
|
||||||
|
|
||||||
|
def word(self, text):
|
||||||
|
return self.asm("dw %s" % text)
|
||||||
|
|
||||||
|
def address(self, text):
|
||||||
|
return self.asm("da %s" % text)
|
||||||
|
|
||||||
|
def origin(self, text):
|
||||||
|
return self.asm("org %s" % text)
|
||||||
|
|
||||||
|
def include(self, text):
|
||||||
|
return self.asm("PUT %s" % text)
|
||||||
|
|
||||||
class Listing(object):
|
class Listing(object):
|
||||||
def __init__(self, assembler, slug="asmgen-driver"):
|
def __init__(self, assembler, slug="asmgen-driver"):
|
||||||
@ -187,7 +206,7 @@ class Listing(object):
|
|||||||
|
|
||||||
def flush_stash(self):
|
def flush_stash(self):
|
||||||
if self.current is not None and len(self.stash_list) > 0:
|
if self.current is not None and len(self.stash_list) > 0:
|
||||||
self.lines.append(self.current(", ".join(self.stash_list)))
|
self.lines.append(self.current(self.assembler.comma_string.join(self.stash_list)))
|
||||||
self.current = None
|
self.current = None
|
||||||
self.stash_list = []
|
self.stash_list = []
|
||||||
self.desired_count = 1
|
self.desired_count = 1
|
||||||
@ -1535,7 +1554,7 @@ if __name__ == "__main__":
|
|||||||
parser.add_argument("-x", "--xdraw", action="store_true", default=False, help="use XOR for sprite drawing")
|
parser.add_argument("-x", "--xdraw", action="store_true", default=False, help="use XOR for sprite drawing")
|
||||||
parser.add_argument("-m", "--mask", action="store_true", default=False, help="use mask for sprite drawing")
|
parser.add_argument("-m", "--mask", action="store_true", default=False, help="use mask for sprite drawing")
|
||||||
parser.add_argument("-b", "--backing-store", action="store_true", default=False, help="add code to store background")
|
parser.add_argument("-b", "--backing-store", action="store_true", default=False, help="add code to store background")
|
||||||
parser.add_argument("-a", "--assembler", default="cc65", choices=["cc65","mac65", "c"], help="Assembler syntax (default: %(default)s)")
|
parser.add_argument("-a", "--assembler", default="cc65", choices=["cc65","mac65", "merlin", "c",], help="Assembler syntax (default: %(default)s)")
|
||||||
parser.add_argument("-p", "--processor", default="any", choices=["any","6502", "65C02"], help="Processor type (default: %(default)s)")
|
parser.add_argument("-p", "--processor", default="any", choices=["any","6502", "65C02"], help="Processor type (default: %(default)s)")
|
||||||
parser.add_argument("-s", "--screen", default="hgrcolor", choices=["hgrcolor","hgrbw"], help="Screen format (default: %(default)s)")
|
parser.add_argument("-s", "--screen", default="hgrcolor", choices=["hgrcolor","hgrbw"], help="Screen format (default: %(default)s)")
|
||||||
parser.add_argument("-i", "--image", default="line", choices=["line", "color","bw"], help="Screen format used for full page image conversion (default: %(default)s)")
|
parser.add_argument("-i", "--image", default="line", choices=["line", "color","bw"], help="Screen format used for full page image conversion (default: %(default)s)")
|
||||||
@ -1560,6 +1579,10 @@ if __name__ == "__main__":
|
|||||||
assembler = CC65()
|
assembler = CC65()
|
||||||
elif options.assembler.lower() == "mac65":
|
elif options.assembler.lower() == "mac65":
|
||||||
assembler = Mac65()
|
assembler = Mac65()
|
||||||
|
elif options.assembler.lower() == "merlin":
|
||||||
|
assembler = Merlin()
|
||||||
|
if options.processor.lower() == "any":
|
||||||
|
options.processor = "6502" # no processor conditional support.
|
||||||
elif options.assembler.lower() == "c":
|
elif options.assembler.lower() == "c":
|
||||||
assembler = CSource()
|
assembler = CSource()
|
||||||
else:
|
else:
|
||||||
|
Loading…
Reference in New Issue
Block a user