I've just updated xas99.py on GitHub. Embarrassingly, there aren't really any brand new features, but most work was done to consolidate two diverged branches of xas99 on two different machines.
Anyway, I already mentioned # for cross-bank access. The # goes after the label in the different bank, so you'd write
B @FARAWAY#(R1) B @NOTHERE# + OFFSET
Yes, I could think of worse address expressions and I'm not sure # will work in those cases. But I had no time for "relocatable" all over again.
Second, instead of AORG >6000, 1, write
AORG >6000 BANK 1
for a shared code segment. In the old notation, which still works, you'd have to keep up with addresses if you wanted to change to a bank after a shared segment.
Third, the -t option now has an argument which consist of a, b or c to generate "DATA" expressions for assembly, BASIC, or C, and 2 or 4 for BYTE or DATA, resp.
$ xas99.py -t a4 someprg.a99 -> DATA >1234, >5678, >ABCD, >1234 DATA >4567 $ xas99.py -t c2 someprg.99 -> 0x12, 0x34, 0x56, 0x78, 0xab, 0xcd, 0x12, 0x34, ...
I use this for example to include my SDD99 assembly DSR into the C kernel. But I'm sure there are already tons of tools to do this.
Fourth, I reverted a new parser I had built that would not be so strict about whitespace. The downside was that it couldn't assemble old-style files with "flying comments" any more. A few months back it still seemed like a good idea, but now I thought it's a solution to a problem no one really has.
EDIT: Oops, I forgot Five, xas99 will now check if B statements could be replaced by a JMP, and will issue a warning if so.
I think I will spend more time on xdt99, in fact, I already have some improvements for xda99 and xdg99, and a large todo list.
Edited by ralphb, Thu Mar 7, 2019 12:47 PM.