The idea behind an emulator is to simulate the operation of an processor to test programs before the actual program is written and run on hardware.
The emulator was written as an Java application to allow graphical output of the processor and memory states rather than using the command-line interface for displaying the information.
See Flash animation of Emulator in action. (Opens new window)
Created using Wink.
The emulator consists of three classes: EmuGUI
,
Processor
and Memory
.
Processor
class
The Processor
class, as the name suggests, is the class
which simulates the processor. It is an static class with a list of
constants for the instructions to make the programming from the other
classes easier to accomplish.
All the processor logic is within the Processor
class.
Also the flags and registers such as carry flag and the accumilator
resides in the class.
Although the class contains all the logic needed to execute instructions
held in memory, the Processor
class does have a method
which runs code persistently, rather, only a method which executes one
instruction at a time. The "running" of the processor must
be implemented by the user, which in this emulator is the
EmuGUI
class.
Memory
class
The Memory
class contains an array of short
to simulate the code ROM, static RAM, and I/O ports. Along with the
array, the class contains a method to initialize the contents of the
memory (basically zero out the whole array) and two methods to dump
the contents of the memory.
EmuGUI
class
The graphical interface for the emulator is implemented in the
EmuGUI
class using plain-old AWT. The EmuGUI
class is also responsible for the
On a Windows XP PC with an Athlon 64 3700+ using Java SE 5 environment, the emulator runs at around 30 million instructions per second without any of the state updates displayed on the graphical interface.