Since the last update I've added a few more things:
The original EDSAC had a warning bell that would ring when the machine processed a stop instruction in order to get the operators attention. I had already simulated this in my version with a speaker, but what I'd overlooked until last week was that the original also had a speaker tied to the sign bit of the accumulator. The idea was that the operator would be able to tell whether a program was working correctly from the sound produced. A continuous tone or repeating pattern of noise might indicate that the program is stuck in a infinite loop for example. I've now added this to my version and I might do a video at some point to demonstrate what it sounds like,
I've added the facility to operate the simulator over USB serial. Using "screen" under Linux (though other terminal programs should work), I can connect to the simulator and issue text commands. The output is something like this:
> RESET RESET EDSAC IN YOUR POCKET BY DAVID BOUCHER SELECTED TAPE IS HELLO ---------------------------------------- > RUN RUN HELLO EDSAC +++DING!+++ >
I can also use this to load programs over the serial connection with the "E_UPLOAD" command. After entering the command, I paste the source "tape" into the terminal and press escape to finish. This is what the source for the program above looks like:
T64K GK O13@ O14@ O15@ O16@ O17@ O18@ O19@ O20@ O21@ O22@ O23@ O24@ ZF *F HF EF LF LF OF !F EF DF SF AF CF EZPF
I won't go into detail about the program above, but the first part is a series of "O" instructions which read data from a specified memory location and print it. The second half is the data to print. In the middle you can see the "Z" instruction which means "stop and ring the bell".
At the moment, programs loaded over serial are only stored in RAM, so the next step is to add a command to save them to the Teensy's EEPROM. Also, when I was at TNMOC the other week, I had the idea of reprinting the case in grey to match the metal frames of the EDSAC rebuilld, so that's also on my TODO list.