Currently only supports one Mockingboard in slot 4, but it should be
fairly trivial to add another in slot 5. Tested with Ultima 3, 4 & 5,
and Mockingboard disk #1. Also, added some fixes to correct the timing
of the 6502 and sound; I believe I have a good understanding of it now,
even though there's still work to do to keep the main CPU thread from
starving the audio thread (which still happens, but less often now).
Having taken a good look at "Understanding the Apple IIe", I've fixed
the timing of one frame now that I know how much time it's supposed to
take. Also added the ability to recurse into subdirectories of the disks
directory, and the ability to page through the disk list when there are
more than three columns of disks. Another thing I did not know about was
Double LoRes, that has been added as well; also, did not know that the
video bus appeared at memory mapped locations that weren't attached to
anything. This quirk is now properly emulated.
There was one bug that went undetected in the v65C02 core (in STX ZP,Y)
and another in the 80STORE handling (80STORE doesn't affect reading).
Also added a pause mode (bound to the Pause key), for those times when
you need to walk away from the emulation for a bit.
This involved fixing V65C02 (by subtracting out cycle overruns) and fixing
the main thread callback wait loop. As someone once said, "Threading is
hard." :-P
Before it was doing some complex timestamp thing, now it simple runs the
CPU for ~21 cycles and then stuff the sample into the sound buffer.
Sound still lags behind by several frames though, just like with the
previous sound setup. Still not sure why. :-/