Design Thoughts

Accuracy over Performance

Accuracy is always preferred over performance.  There are two reasons for this: first, the emulation library is partially intended as a source of technical information for emulation authors.  Developers wishing to increase performance can always port individual components to C or other lower-level (unmanaged) languages.  Second, the efficiency of the .NET runtime and the overall horsepower of computer systems are increasing on a yearly basis.

Refactoring is Encouraged

The framework may be modified extensively in order to accommodate all expected types of hardware.  The object model may change drastically from version to version.  You should not use the framework for production software unless you are willing to handle a bit of anarchy.  Remember, once version 1.0 is released, many elements of the framework will be locked in stone for a long time.

Unit Testing Required

Unit testing is required for all code.  At a minimum:

These are only the minimum requirements.  Authors are also encouraged to create unit tests for small snippets of machine code.  The machine code should be taken from an external source (such as a textbook) that documents the expected results of the code.