I was looking at equates in the assembler, and noticed that for symbols defined before use end up with swapped bytes.
Example:
inc @equ
addr equ >1234
inc @equ
Ends up being assembled to:
inc @>3412
inc @>1234
Since the equate value is not known at the time the first reference is encountered, an internal fixup record is created for later evaluation. Unfortunately, md_apply_fix() used the wrong endianness when resolving these internal fixups. This was most likely an oversight when adapting code written for other targets to the TMS9900.
I also ran across do_org, which can assign a current address to assembled code. This allows skipping over memory in the code section. This is tempting to use for AORG, but I don't think that will work by itself. I need to think about this some more.
I've also added a new constant type to allow SBO, SBZ and TB to work properly.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment