Do you like my hacking? If so, please consider leaving something in the
Fediverse (Mastodon etc): @Sprite_tm@social. spritesmods.com
2020 has been a weird year, for everyone around the world. In my specific case, that meant being away from my home in Shanghai, as we were in Europe at the time Covid hit and China did not make it easy to return until somewhere towards the end of the year.
Not having access to my lab and only having limited access to electronics equipment pretty much puts a damper on what I could build, although building things was not entirely impossible. After that project was finished, I fell into a project vacuum again: all I had on me were a bunch of ESP32 development kits and a desire to create something.
So I thought: why not create another emulator thing? I have enough experience with that, so it shouldn't be too hard, and once I have my lab back, I can perhaps convert it into another miniature working computer model, similar to what I did with my diminuitive Macintosh Plus. But what computer to pick this time? Well, I've always been interested in a PDP11. Even if I never had one of those before (or even worked on them), they have been at the forefront of computer technology: the ISA influenced a fair few architectures that came after them, and a fair bit of the software we still use nowadays has its root in ideas that were first implemented on the PDP11.
In case you don't know what a PDP11 is: It is a line of minicomputers made by Digital Equipment Corperation, also known as Dec or simply Digital, starting in the 1970's. The PDP line of computers started out as DECs way of squirreling into the computer market in the '60s. While computers were already around, they mostly were big mainframes from the likes of IBM, meant for super-important tasks like payroll, bookkeeping and other beancounter-y tasks in a business. As they were generally really expensive to run, there wasn't any place for them in more R&D-like settings. DEC saw an opportunity to gain a market share there using relatively low-cost machines, but the things they would sell should not be called a 'computer' as that would immediately conjure images of the expensive and inaccessible mainframes. As such, DEC invented the name 'Programmable Data Processor', or PDP.
The PDP family was pretty long-lived and had some interesting family members with lots of ISA's: from the original 18-bit PDP1 to the 12-bit PDP5 and the 36-bit PDP10. Of these ISAs, the PDP11 one was one of the most succesful ones. An 16-bit ISA, with an orthogonal register-based instruction set, the PDP11 line spanned many machines, from the first PDP11/20 made in the '70s to the PDP11/94 which came out in the '90s. Also, when you look at functionality, there were many use cases: PDP11s could run DOS-like real-time operating systems like RT-11, or multitasking OSses like Unix. They could be used as single-user machines, multi-user servers, and embedded machines controlling mechanics and providing user interfaces for it. The PDP11 architecture even made it into the arcades: a single-chip PDP11 variant called the T11 controlled Atari arcade games like Paperboy.
The thing that attracted me to the PDP11 is that the PDP line in general always has been a family of 'hackers machines'. Its members were cheap enough to allow people to do fun stuff on, and for instance the first computer game, SpaceWar!, was written on a PDP1. It wouldn't be the last game written on a PDP machine, though: apart from the aforementioned arcade games, all the way in Russia on a cloned PDP11, Russian software engineer Alexey Pajitnov wrote a certain title called 'Tetris', which later was spread all over the world.
Nowadays, through the miracle of emulation, we can still enjoy the historical PDP11 software. The go-to PDP11 emulator is SIMH, which seems to run on most POSIX'y OSses. The ESP32, with ESP-IDF, has fairly decent POSIX compatibility, so why not give porting the emulator over a try?
You can read more about the process of building the emulator and its case on the following pages. Impatient and want to see the result? There's a video on the last page.
1 Next »