MemEmul

Generic memory emulator. All specific model memory emulators derive from this
class. This provides the basic common functions.

MMIO_Dev

MemEmul contains a list of MMIO_Devs which appear at pages 0xfc, 0xfd, 0xfe
in the MemEmul map. Each MMIO_Dev provides the functions of that device.
MemEmul contains functions to add or remove such a device. A specific
instance of an MMIO_Dev also speicifies its memory location.


Class graph
===========

| = descendance/inheritance
~ = used by
= = multiple inheritance
_Cls_ = base (abstract) class
Model<Cls> = model-specific implementation of class
(~) = possible usage depending on model
#Cls# = class that uses SDL


		#ModelEmul#
      ~~~~~~~~~~~ ~
_CPUEmul_	  ~
|		  ~
|		  ~
CPU6502Emul	  ~
~		  ~
~_MemEmul_~~~~~~~~~
 | ~
 | ~~~~~~~~~~~~~_MMIO_Dev_	_DiscEmul_	DriveControl
 |		| | | | |	   |		 ~
 |		| | | | |	   |		 ~
 |		| | | | SASI	   |		 ~
 ModelMemEmul**	| | | =		   |		 ~
 (~)		| | | WD1770=------+-/~~~~~~~~~~~~
 (~)		| | |		   |
 (~)		| | =		   |
 (~)		| | FDC8271=-------|
 (~)		| |
 (~)		| VIA6522-------------\
 (~)		|   |		      |
 CMOSEmul	|   | ~~ ModelEmul*   |
  etc.		|  ModelSysVIA 	   ModelUserVIA
		|   ~~ #SoundEmul#  ~~ JoyEmul ~~ PrinterEmul ~~ UserPortEmul
		|			    |				|
 /--------------+---------------------\	    |				|
     |          |       	|	  MouseJoyEmul~~~		|
     |          |		|		etc.	~	   AMXMouseEmul
  CRTC6845   VideoULA	     ADLC6854			~	      etc.
     ~~~~~~~~~~~		~~ _EconetEmul_		~		~
     #DisplayEmul#		  |	     |		~~~~~~~~~~~~~~~~~
     				  |	     |				~
			EconetEmul_Real	  EconetEmul_Fake	#MouseClass#

* ModelSysVia uses ModelEmul for Keyboard if keyboard is implemented on the
  system VIA
** otherwise ModelMem uses ModelEmul for Keyboard
