Thank you for replying to the issues I encountered. I will go back and try the option to get a simple binary file. Nice to know that the author is contactable.
There's also an e-mail address as the bug tracker needs registration. Prompt answers are not guaranteed, needs a bit of a luck sometimes.
TBH I was very impressed with the documentation. In fact it was so detailed I wasn't sure if there was a switch to solve my binary dump issue or if I had simply not looked in the right place in the documentation

.
I've grouped the output format switches close so if something is not there it needs to be done by manually or with external tools. For example more complex header files for emulator cartridges or disk images. But most of the simple formats are covered now.
There's still room to improve on the documentation, after the last release there was a request to improve the repetitions section with more examples, and rightly so.
Nevertheless there were several cases where a string was mixed with a byte or list of byte on a single line. I think when I have used ".db" in the past (I forget the processor - 8088?). it was possibly to mix text and bytes together using the '.db' directive, useful when CR and LF needed to terminate a string.
The .text directive existed in the native assembler it was originally modelled of, so it was there from the beginning. For a while .text and .byte were even working the same. Later it was split so .byte can be used make sure every item is a single byte, as that's more useful than an alias of .text which does strings.
While .text is for strings it still accepts small integers of 0-255 specifically for numeric control character use like CR/LF.
I rarely interrupt a string to insert control characters/sequences any more. Since it's possible to use custom encodings it's easy to define escape sequences which emit them when used in strings.
e.g.
Code: Select all
.byte 6,12,15,"ACORN ATOM",10,10,13
lda #$82
.byte "NAME"
nop
I believe that the string print is terminated by a negative byte (not just a zero value), which saves a few bytes throughout the OS code. In some places the following instruction is a nop since the next instruction has a positive opcode.
What a dirty trick

They could have just put the sign bit high on the last character, like it's done on MS BASIC keywords. Sure the sign needs to be removed and the loop is slightly different but removing the extra NOPs might make it still worth.
That's so common that there's a directive to set the high bit at the last byte:
Code: Select all
.shift 13, 10, "abc" ; last byte is "c" + $80
This also comes from the native assembler and named so because capital letters had the high bit set.