diff options
author | Bryan Bishop <kanzure@gmail.com> | 2012-05-04 16:49:16 -0500 |
---|---|---|
committer | Bryan Bishop <kanzure@gmail.com> | 2012-05-04 16:49:16 -0500 |
commit | cb0bcb77b93eebd16be8ee188e1bfb3a6a8ac80b (patch) | |
tree | 31d1a3acd4123c047f42344eee546ceba851dd3a /extras/crystal.py | |
parent | e867ed7469451912306f09786d79da021624ec5c (diff) |
improve MainText.to_asm output
Diffstat (limited to 'extras/crystal.py')
-rw-r--r-- | extras/crystal.py | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/extras/crystal.py b/extras/crystal.py index d33f89cc4..6e6f30531 100644 --- a/extras/crystal.py +++ b/extras/crystal.py @@ -1835,9 +1835,28 @@ class MainText(TextCommand): # whether or not to print "db " next new_line = False + # whether or not there was a ", " last.. + # this is useful outside of quotes + was_comma = False + for byte in self.bytes: - if byte in [0x4f, 0x51, 0x55]: pass - elif byte in [0x50, ]: pass + # $4f, $51 and $55 can end a line + if byte in [0x4f, 0x51, 0x55]: + assert not new_line, "can't have $4f, $51, $55 as the first character on a newline" + + if in_quotes: + output += "\", $%.2x\n" % (byte) + in_quotes = False + new_line = True + elif not in_quotes: + if not was_comma: + output += ", " + output += "$%.2x\n" % (byte) + was_comma = True + new_line = True + elif byte == 0x50: + assert not new_line, "can't have $50 or '@' as the first character on a newline" + pass # TODO |