To-do list (Tom)
================

This is a (non-exhaustive) list of stuff that I personally would like to get done:

(14/8/2014) Having moved all non-system headers out of stdafx.h, it looks like
  many headers are included just to call Init() or Reset() methods for Apple II sub-systems.
Cut down on the headers by:
- Using the Visitor pattern (for all Apple II sub-systems)?
- Or just a vector which contains all sub-system Reset() methods?

. Consolidate the Spkr_SubmitWaveBuffer() & Spkr_SubmitWaveBuffer_FullSpeed() funcs.
This will make the code cleaner & simpler.

. Software mix Speaker & Mockingboard waves before submitting to sound-buffer.
This will:
a) fix the problem with speaker sound be rough when MB is active.
b) probably fix the problem with other processes having problems playing sound at the
same time as AppleWin. (Although I've not experienced this)
c) hopefully simplify things :)

. Run emulation (or message-pump?) in a seperate thread.
So that the sound is continuous when dragging the window or starting other applications, etc.

. Add proper Votrax support (using PinMAME samples & code).

. Fix SSI263 so that phonemes are overlapped (like Votrax).

. Save-state supporting Phasor, harddisk & Ramworks III

. Support for switching display modes mid-frame
To support Bob Bishop's intros, tight-loop page-flipping, etc

---

Plans for (1st pass) cleaning up are:
. Ditch the x86 code to access the PC speaker + ditch PC speaker support
. [DONE] The arrays ioread[] & iowrite[] in Memory.cpp should be switched from units of 1 byte to 16 bytes.
  This will yield 256 entries spanning [$C000…$CFFF] – currently it’s only [$C000…$C0FF]. This will mean that:
	a) cards with I/O mapped above $C0FF (eg Mockingboard, Mouse?) don’t have to be kludged as in the READ/WRITE macros in CPU.cpp
	b) $CFFF (ROMs out) can be emulated
. Talking of CPU.cpp & those macros: I’d prefer to replace them with inline funcs. Maintenance of these
  macros is a bitch & they can’t be single-stepped. Inline funs should yield the same code (in release build)
  as the macros.

