It has most of the functionality I wanted when I started. You can see the disassembler at work here (disassembling a chunk of the Tape I/O routine).
Like the assembler, it is primitive but works.
I still have plenty of space left in the ROM (620 bytes), so I think I will have some 16 bit routines in the ROM to do multiply and divide definitely, add, subtract maybe and so on, which will come in useful for any HLL I write (or indeed anything else).
This will probably be a FORTH sort of thing where it takes values off the stack and processes them.
Then after that, maybe a boot up message and sound f/x – this isn’t really much use but does have the advantage that if I need that space, for bugs for example, I can take it out again, or truncate it.
I have been surprised by the relative efficiency of the code ; I wasn’t even sure I’d get the assembler into the 2k of Monitor space I have.
It’s partly learning the style of coding for these processors.
Competition of the Day
In the 7 lines of code shown there is a significant (read I’ve done something really dumb) bug which will stop the tape system (but nothing else) from working.
What is it ?