Hi BDD, thanks for explaining your rationale!
I was just observing, not judging. I know that software is developed with specific intentions in mind and when I come with some different ideas, it sometimes clashes...
My goals is to basically have one copy of the assembler in RAM, and be able to run it - in parallel - multiple times. For this, I cannot use absolute addressing for any runtime variables. using direct page - esp. when it doesn't clobber the "real" zero page - is a nice approach for that. Also, as I finally decided to run in mapped memory, I am not really hindered by program size.
Btw, the assembler still fully runs in native mode. It's only when doing I/O that it jumps back to emulation mode for the actual I/O routines.
But let me say only this: my opinion on the 65816 addressing modes with direct page hasn't improved. While being able to redirect direct page "elsewhere" is a valuable feature, mixing up the addressing modes when direct page is not at zero makes it very cumbersome and error prone.
re: assembling with wide arguments. Understood. As I allow to edit the disassembly inline, I will probably add the "!" to the printout so when just pressing enter on the disassembled line, it should produce the very same assembly.
Also, as I just noticed,
does not produce a 16 bit addressing mode but gives an error. That would probably be a valuable addition, esp. when "$12" and "$0012" may be completely different physical addresses due to one being subject to direct page pointer and the other not.
Having said all that, thanks for the great piece of software! After all, a working 65816 monitor with assembler and disassembler in almost just 4k is a cool thing, and code is readable and well structured, so it is easy to patch it around for my purposes!
André