Thanks for this work.
Thought:
Is there any chance this work could be merged with asm6f, given that at least part of your work was based on asm6f? Having several forks of a popular common-use assembler (we now have: asm6, asm6f, and asm6n -- and maybe more) becomes very annoying very quickly for folks. Collaboration is the key to getting said things implemented universally and benefits everyone. Edit: it seems
the asm6f maintainer asked this exact question which may have prompted this thread here.
Feedback:
1. None of these changes are documented in the readme, or an additional readme, in the zip file. This is not good. Assemblers need reliable/proper documentation, with short/simple examples if possible.
2. Does the
BIN/INCBIN modification you did not break backwards-compatibility with the existing syntax? I'm staring at the original asm6 documentation and comparing it to what you said. Documentation reference:
Code: Select all
INCBIN foo.bin, $200, $2000 ;read $2000 bytes, starting from $200
HEX 456789ABCDEF ;equivalent to DB $45,$67,$89,$AB,$CD,$EF
3. I question the use of
? for this purpose. Historically, many assemblers have used the
! operator to force absolute addressing. Not to sound rude, but I'm pretty sure I've talked about this before in other threads. Was question-mark chosen due to concerns over what the parser would do, or what?
4. I do not understand the purpose of the
RAM,ENDRAM, WRAM,ENDWRAM, SRAM,ENDSRAM directives. Please explain/demonstrate.
5. I question the use of
\ as the way to retrieve the current bank per the new
BANK directive. This absolutely will cause confusion given that the parser itself already uses
\ for escaping. Quoting the documentation, under "Numbers and expressions":
The characters (' " \) within quotes must be preceded by a backslash (\).
6. What does the
PRINT directive do? Is it simply a
printf() / classic echo? If so, does it emit to stdout or stderr (yes I can go look at the C code, but I haven't).
Thanks.