* Add proper timers according to spec mentioned in _Understanding the Apple IIe_
* This will allow us to refactor/eliminate all the hackish joystick adjustment routines
This is part 1 of 2
* Proper emulator timing is critical for emulating the Apple2 speaker with a
square wave on a modern soundcard. The AppleWin sources provided
reference, inspiration, and source for both timing and speaker emulation
code.
* cpu.S, cpu.h, timing.c : OK so I flip-flopped quite a bit here on how best
to do proper emulator timing, but the previous spinloop implementation was
not one of my more enlightened decisions :P ... cpu/power consumption
nightmare ...
* ds-shim.h, win-shim.h -- Shims for Windows-isms and DirectSound-isms. I
assume these will eventually be refactored away...
* soundcore.[hc], speaker.[hc] -- Directly ported from a recent version of
AppleWin. Everything I've added should be braced with #ifdef APPLE2IX.
* soundcore-alsa.[hc] -- An ALSA backend using mmap'ed soundcard access.
WARN: this is still a WIP and untested. Instead of nanosleep() the cpu thread
now uses an adaptive spinloop. This better emulates the actual apple //e speed
in preparation to do near-realtime audio. The drawback is that the cpu thread
is pegged at 100% usage.