In the 1970’s and 80’s, I worked as what was then called a systems programmer with PDP-11 systems. The training institute had a PDP-11/40 running Unix V6, an internship site had a PDP-11/45, aslo with Unix installed and the university hospital where I came to work had a dual 11/03 system, later upgraded to a dual PDP-11/23, a dual PDP-11/70 and a PDP-11/55. With these systems, I gained an understanding of computer architecture and learned programming in C and assembler. I appreciated the orthogonal instruction set and the elegant architecture. I installed Unix on one of the hospital’s PDP-11/70’s, configured and customised it, demonstrating the capabilities of Unix to the staff. Over the years, my work shifted from systems programming to IT consulting, but those early years working with the PDP-11 provided a solid foundation for my IT knowledge and I kept good memories of that time.
One day I discovered the PDP-11 simulator from simh and decided to repeat the installation of Unix V6 on an 11/70, this time on a simulated PDP-11. It was and is fascinating to be able to execute what required then cabinets full of electronics now with your own PC. With simh however I missed the feeling of really being at the controls of the system. simh is a wonderful simulator but does not, for example, offer the possibility of running the original boot ROMs, does not provide the original console and simulates just what is needed to execute the original PDP-11 code. As simh is open-source, I was e.g able to add the original PDP-11 boot code to it, but in the process discovered that my wishes for a simulator did not match the goals of simh. Moreover, you feel having your own PDP-11 and control its console, with an adequate architecture and written in a modern programming language, I had to write my own simulator.
At that time, I discovered LSI-11, a simulator limited in functionality, and written in C, but in an object-oriented style and based on a domain-driven architecture. I decided to take that project as the basis for my own simulator so that I could get a flying start. I rewrote the C code to C++, gradually replaced it with my own code and extended it with other devices, CPU’s, memory management unit and a GUI until I had lifelike simulators for the PDP-11/03, 11/23(+) and the 11/24. With that, I achieved a first goal and gradually reached a point where I could share my work with the world. A next step will therefore have to be to make my simulator accessible to others as well so that the goal – everyone having their own PDP-11 🙂 – can be realised.