What sent me down this path was when I was looking for an historically significantly computer to build. I found John Plutorak's implementation of the AGC Block I computer. This was what I was looking for. I decided to push the boundary by focusing on the Block II version as that is the version that landed men on the moon. John built a hardware based simulator, but he wrote it in C and I much prefer Java.
I built a simulator that runs Block II code and provides a nice GUI interface to execute the simulation. The input files consist of the following S-Record files; the CPM files, the machine code file and a sub-sequence file.
Here is a screen capture of the simulator GUI. Notice that there are sections that simulates the DSKY, namely the Keyboard, Indicators and Display. The Control section is used to control the simulator. The help menu has an explanation of how to control the simulation. You can step through individual instructions, through each sub-sequence or even step through the timing pulses. After I got a few instructions working I realized I needed to set a breakpoint and let the simulator free run to that point. You can also break on a specific interrupt or counter increment. There are Sim States that give you insight into the state of the running simulation. The remainder of the sections are the actual registers and key memory locations within the computer. As instructions are executed you can see how each register is affected. This screen is going to translate into a whole lot of LEDs.
As before, all the source code and files required are out on my GitHub site.