The second project was a hardware implementation of a 32bit ARM CPU running linux on an Atmel 128p. This would fit even in a small microcontroller like the 328p or 32u4. The PDP-11 has 8 16bit registers, a few service registers and 32 16 bit mmu registers 2 to hold mappings. Ignoring main memory, you need only simulate the small number of registers defined by the architecture. The first was the winner of last years IOCCC, a 4k Intel 8086 simulator 1 which showed me that the core of a CPU simulator could be small.
#PDP 11 70 JAVASCRIPT EMULATOR CODE#
This port is going well and provided the base for porting the code to C++ for this project.Īround the same time I ran across several other projects which convinced me to try an Atmel port. I’ve written previously about the suitability of Go for writing emulators and so I thought it would be a fun project to port Julius’ work to Go. Julius’ simulator used this property and callbacks on timers to simulate components like the disk and console operating asynchronously. All the the major system components work asynchronously, co-ordinating access via the shared UNIBUS backplane. The PDP-11 architecture is very interesting. Late last year I ran across the link again in my Pocket backlog and spent a little time poking around the code that powered the simulator. I thought that this was one of the most amazing thing I had ever seen. In April of 2011 Julius Schmidt wrote a PDP-11 emulator that ran in a browser. The avr11, an atmega2560 clone with a custom SPI 256kb memory.