Replicas of historic computers — kits you build yourself.
The PDP-11 is the most influential computer architecture ever designed. Its instruction set shaped the 68000, x86, and ARM. Unix was born and grew up on it. C was designed for it. The filesystem hierarchy, the syscall interface, the shell — all of it was worked out on a 16-bit machine with 16KB of RAM and a 5 MHz clock.
The PiDP-11 is a faithful replica of the PDP-11/70, built around a Raspberry Pi running simh. It boots seven Unix versions from disk images: V1, V4, V5, V6, V7, 2.11BSD, and Ultrix. The front panel — 64 LEDs, 30 toggle switches — shows real bus activity as the emulated CPU runs.
This page is a technical walkthrough of each version. What you'd see, what you'd type, what's different from the one before it.
Before Unix there was Multics — an MIT/Bell Labs/GE project to build a utility computing system. Bell Labs pulled out in 1969. Ken Thompson, one of the researchers, had gotten used to interactive computing and didn't want to go back to batch processing.
He had written a game called Space Travel for the GE 635 — each play cost $75 in billable CPU time. He found an abandoned PDP-7 in a lab and rewrote the game for it. Then he started writing an operating system, because getting binaries onto the PDP-7 via paper tape was too tedious. Over a month — his wife had taken the kids to California — Thompson built a kernel, file system, editor, and assembler. It fit in 4K 18-bit words.
The name "Unix" was a pun on Multics, suggested by Brian Kernighan.
By 1970, Bell Labs' Patent Department needed a word processor and funded a PDP-11/20. Thompson and Ritchie ported Unix to it, added roff and an editor. $3,000 bought the Patent Department a text-processing system — and bought the world Unix.
Also worth knowing: before C there was B, a language Thompson adapted from BCPL. Angelo Papenhoff has reconstructed the B compiler at squoze.net.
V1 boots to a # prompt — the Thompson shell. No pipes, no scripts, no variables. Filesystem uses 6+2 filenames. The kernel is about 1,000 lines of PDP-11 assembly.
What you'd see: ls shows just filenames. ed is the editor — type 1,$p to print the buffer, s/old/new/ to substitute. roff formats documents.
What to try: Write a PDP-11 assembly hello world:
.globl start
start:
mov $1, r0 / sys_write
mov $msg, r1 / buffer
mov $len, r2 / length
sys 0
mov $1, r0 / sys_exit
sys 0
msg:
len = . - msg
Assemble with as hello.s, run a.out. The binary executes directly on the CPU — no runtime, no interpreter.
#)
Editor: ed
V4 is the first Unix not written in assembly. In 1973, Ritchie and Thompson rewrote the kernel in C. The conventional wisdom said an OS needed assembly for performance. They proved otherwise.
The kernel became a compiled program. It could theoretically be ported to another machine — just recompile the C source. This was the year Thompson and Ritchie presented Unix at SOSP, triggering a flood of tape requests.
What to try: cat the source of cat — about 20 lines of C. The entire OS source tree fits in a directory you can navigate in one session.
Note: V4's source tree is less structured than V6's. The restored manual at squoze.net is the best guide. Only one V4 tape survives — sent by Thompson to the University of Utah in 1974. Your PiDP-11 runs a reconstruction.
V5 introduced pipes. Doug McIlroy proposed the concept; Ken Thompson implemented it in one night.
$ ls /bin | wc -l
54
$ who | grep dmr
dmr tty1 Jun 1 14:23
Each | creates a pair of processes connected by a kernel buffer. No temp files, no special IPC. This single mechanism turned Unix from an operating system into a composition language — programs became filters that could be combined arbitrarily.
What to try: Write a simple filter and pipeline it:
#include <stdio.h>
main() {
char buf[256];
while (scanf("%s", buf) == 1)
if (strlen(buf) > 5) puts(buf);
}
cat file | ./longwords | sort | uniq — a command that didn't exist before, built from small pieces.
The V5 kernel was 26KB — the smallest recorded. Despite that, it supported multi-user timesharing, a hierarchical filesystem, device files, and now pipes.
The legendary comment appears in /usr/sys/ken/slp.c, next to the swtch() process scheduler:
"You are not expected to understand this"
V6 was the first Unix that spread beyond Bell Labs. AT&T licensed it to commercial customers for $20,000. John Lions wrote his Commentary on UNIX 6th Edition, which couldn't be published due to licensing and was instead photocopied and smuggled — teaching a generation of hackers how kernels actually work.
V6 is where Unix diverged: BSD started here (Bill Joy's 1BSD was built from V6 source), along with PWB/UNIX and IS/1 (the first commercial Unix).
What to try: Boot V6. Login as root (no password). Read /usr/sys/ken/main.c — the 50 lines that start the kernel. Trace a read() syscall from library through trap handler to filesystem driver. No abstraction layers, no device tree — you can follow the entire path.
Compare across versions: ls -l on V6 shows permissions, owners, sizes. ls on V1 shows just filenames. File metadata was introduced between V1 and V6.
V7 is the ancestor of every modern Unix-derived system. The Bourne shell ($), awk, make, tar, sed, lint, find, grep with regex, crypt, uucp — all shipped with V7 and are still in use today.
What to try:
$ awk '{sum+=$1} END {print sum/NR}' numbers.dat
42.7
A two-line Makefile:
hello: hello.c
cc -o hello hello.c
Then tar cvf backup.tar /usr. All of these work identically on a modern system. V7 had about 50 system calls (Linux has 380+).
Note on C: V7 shipped the Portable C Compiler (pcc). Expect K&R-style declarations, not ANSI prototypes.
sh — Bourne shell
awk
make
tar
sed
lint
diff
find
grep
crypt
uucp
Ritchie C compiler
V8 through V10 existed but were only distributed within Bell Labs. V7 is the last widely-released Research Unix.
While AT&T's Unix evolved into System III and System V, Berkeley's CSRG continued developing BSD. 2.11BSD is the final release for the PDP-11, maintained by volunteers (most prominently Steven Schultz) well into the 2010s.
What's added since V7:
vi
C shell (csh)
NFS, sendmail, named
FTP, telnet, ping
Large disk support (1.5GB)
Web server
What to try: Boot 2.11BSD, configure networking (ifconfig — same syntax as today), and ping obsolescence.dev from 1975 hardware.
Ultrix started as V7M ("V7 Modified") by DEC's Unix Engineering Group, then merged 4.2BSD networking to become Ultrix-32 for VAX and Ultrix-11 for PDP-11. It was DEC's answer to customers who wanted Unix instead of VMS — a BSD core with System V IPC, DECnet, and LAT protocol.
What to try: Boot Ultrix-11. Type uname -a and see "ULTRIX." Compare the error messages and device handling to V7 — DEC had paying customers to support.
Ultrix was discontinued after DEC's acquisition by Compaq in 1998.
The remarkable thing about going through these seven versions is how much stays the same. The filesystem hierarchy, the pipe operator, ls, cat, cc — the interface of 1979 is still recognizable in 2026. V7's tools are your daily tools.
What changed is scale. V1's kernel was 1,000 lines of assembly. 2.11BSD's kernel is 40,000 lines of C. V1 had no networking, no pipes, no C compiler, no multi-user. 2.11BSD serves web pages, runs TCP/IP, and talks to a global network that didn't exist when the PDP-11 was designed. The concepts endured; the implementation grew.
Up through V7, these are all Research Unix — the direct work of Thompson, Ritchie, and Bell Labs. After V7, the lineage splits into BSD (open, community-maintained) and System V (commercial, corporate). 2.11BSD is the last breath of the PDP-11 Unix tradition. Ultrix shows what happens when a hardware company treats Unix as a secondary offering.
They all run on the same machine. A PiDP-11 boots any of them from the same front panel.