I'd like to share my implementation of a second 6502 processor on a daughterboard for my main project, initialized through dual ported RAM and controlled through memory-mapped RESET, RDY, and NMI.
My own intended purpose for this system is to serve as a sound generator performing direct digital synthesis, which is why it isn't set up for sending interrupts back to the host system.
Partially I chose to use dual-ported RAM over the inverted clock approach because I'm familiar with its usage in my earlier designs, but it's also convenient to be able to run the smaller and simpler system on a faster clock.
The address space is just the dual-port SRAM and the DAC. A programmable counter simultaneously triggers the IRQ handler to compute each audio sample and transfers the previous sample from the buffer latch to the actual DAC.
The host system controls the IRQ rate with 7 bits of an octal latch, while the eighth bit controls the RDY pin.
Setting up and controlling an audio program is relatively straightforward. The coprocessor is halted by setting the RDY bit low. Then the program is copied from ROM into shared RAM, reset is triggered, and the RDY bit is set high.
The IRQ counter also handles holding RST low for enough cycles by triggering a D flip flop. So far it seems that having IRQ go low at the same time as RES going high isn't causing any problems. (Admittedly I hadn't thought about it until writing this description!)
Development workflow is also not very complicated. Audio programs are written in a separate ASM file and .incbin'ed into the main program since they use different address spaces. Zopfli does a pretty good job at compressing the coprocessor binary, to be loaded with zlib6502.
This design could be pretty easily adapted to other kinds of fire-and-forget output interfaces, or with the addition of an IRQ line going back the other way could be used for parallel computation.
It also is quite stable at 14MHz due to its simplicity. I'd designed the host system to run at 3.5MHz because I'm quite lazy, but it seems the timing on this subsystem was a freebie.
I took a video to demo the soundcard with a little tune:
https://youtu.be/O8-H_9GJDMcThe audio program here mimic the capabilities of my old discrete logic soundcard, which I replaced because a critical component was discontinued.
Song is "Bad Apple" which, along with an accompanying animation, is popularly used for demos on low-spec/retro systems. I haven't included the animation yet, but that's the motivation for the 2MB cartridge design I made a thread about earlier this week.