Well, a native C compiler is doable if you are willing to spend hours waiting for a small program to compile (using a lot of disk swapping).
Assembler, that's easier.
Technically, what you would really want to do, is to have a assembler/disassembler that fits entirely in a 16k ROM module, and then have some way to switch between the "assembler ROM" and the normal ROM, effectively as some kind of cartridge system (like the Action Replay thingies they have on the Commodore 64).
The reason you don't really want to have that loaded from disk, is that when you assemble, you need to have in memory at the same time: the program to assemble (the one you are editing), the assembler software itself, the intermediate data, and the final executable, so every small amount of memory you can save can help building bigger programs.
You can of course have everything stored on disk, but then you are going to spend more time doing I/O than actually compiling the program
Now, if your target system is Cumulus, it's probably possible to do something smart, because after all the "microdisc rom" and the "overlay signal" is entirely handled by the Cumulus board, and you can change that by changing the firmware implementation.
Another advantage of the ROM based system, is that you can have a "post mortem boot rom" feature, that allows you to visualize/disassemble the content of the memory when your program crash and you had to reboot: No clearing of the memory, and an optimized debugger that does not overwrite anything in your program's memory.
Hope this makes sense
