I was looking at equates in the assembler, and noticed that for symbols defined before use end up with swapped bytes.
addr equ >1234
Ends up being assembled to:
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.