WIP: mockingboard support for the Apple II plus on MiST FPGA

After the Saturn RAM expansion I’ve looked around for an easy follow up project which I could do in my little spare time. The mockingboard looked like an reasonable addition since the used components where already available as hdl sources (beside the speech chip). I found several schematics for the board which differed slightly. I’ve started with the mockingboard clone by Bill Garber:

schematic

I was and I’m still a little puzzled which clocks I have to use to drive the VIA and the PSG. The different schematics are also using different clocks so I chose the ones from the following document:
Mockingboard-v1a-Docs.pdf.
Another source of inspiration was the schematics from the Carte Blanche project 37:
http://www.applelogic.org/CarteBlancheIIProj6.html

Pretty quick I heard the sound effects of the mockingboard system disc (mockingboard1.dsk, youtube). Unfortunately only effects could be heard. It was quiet when it should play the music or the effect when the text scrolls up.
After some fiddling with the clocks and connecting the IRQ line to the processor the Apple resets to the monitor prompt when the text should scroll up. I spend many hours on debugging with different clocks but I didn’t find the cause. Later on I noticed that it always happens when the VIA dropped the IRQ line. Afterwards it was never raised again.
As usual Signaltap was quite a help. The Apple manual (Understanding the Apple II) stated that the reset vector for the IRQ routine is at $FFFE and $FFFF. For my rom it shows $FF59 and looking around I found that it means it jumps right away to the monitoring prompt, *gotcha*.
But what does it mean? I found a quite useful discussion about here: mockingboards. It looks like that on Apple II without the autostart rom the IRQ reset vector should be at $FA86 and on Apple II+ at $FA40. $FF59 is the jump address for RESET on an Apple II. So there’s something wrong with my rom. I’ve changed the IRQ routine to $FA40 ($FFFE=40, $FFFF=FA) and voila it worked and music was played.
It’s still a little wonky and need more debugging (skyfox crashes, no sound on GI Joe) but this could also be some bad disk images.

If someone wants to play with the sources then have a look here:
https://github.com/wsoltys/mist-cores/tree/mockingboard/apple2fpga

Leave a Reply

Your email address will not be published. Required fields are marked *