After considering the posts here and the results of my own research, I have come up with a possible route to take:-
- Install ACK and experiment with it for a while
- Add a couple of new Z80 computers
- Add the Dragon 32 as a 6809 computer
- Add a structured version of BASIC to the existing languages
- Add a DSL to the existing languages
- Add a standalone VM for a Z80 computer to the back end
- Compare that VM against compiled programs for that platform
- Add new VMs if there is an advantage to doing so
The first two steps need to be done in that order, but I can probably take a “suck it and see” approach to the rest.
The main reasons I decided to use ACK is that it already does a lot of what I want, and it’s a tried and tested toolchain with an existing (simple) BASIC front end.
It is also already used by programs such as CROSS-LIB, so any additions to ACK could benefit those too.
David Given (the maintainer of ACK) is currently working on a ZX Spectrum compiler configuration, so that should be a good reference.
He also implemented most of a code generator and interpreter for a p-code system a while back, so that might also help if he can find the code again.
Can anyone see any obvious flaws in my outline or suggest any additions to it?