Front-Panel Booting an ATmega88 Microcontroller
Your computer contains both hardware and software. Even if you buy a PC motherboard separately, there's software (called BIOS) in one of the chips, otherwise nothing would happen when you turn on the power. That chip was programmed in a factory by a computer-controlled system, and that computer-controlled system also came with software, perhaps in a boot ROM. That boot ROM was again programmed by a computer, or manufactured from a blueprint that was generated on a computer.
But if you keep tracing this lineage backwards in time, you eventually reach a point of deus-ex-machina: A bootstrap routine that was programmed by hand, by a human being, most likely on the front panel of a minicomputer.
I wanted to experience that process first hand. There are minicomputer emulators, of course, but they cannot serve this particular purpose: With an emulator you're not bringing software to hardware, you're bringing software to some other software that's already up and running.
Besides, I wanted to do this on a computer that meant something to me personally, a computer from my own lifetime. So I was delighted to realise that the good old ATmega88 just happens to have a front-panel-compatible programming interface!
Presentation video
This video starts with a brief tour of minicomputers and front panels in general, and goes on to explain how I constructed my own front panel for the ATmega88. It culminates with me using it to enter a small program to blink some LEDs: Computer hardware, delivered without software, and brought to life for the first time by hand.
I collected photographs and music from a number of sources, most notably Wikimedia Commons. You can read the full credits here.
The historical narrative is simplified for brevity. For a more thorough account, I can highly recommend the Wikipedia article on Booting.
Schematics and gotchas
... continue reading