Switching Things Up
Linus Åkesson built a retro-style front panel computer using an ATmega88 to experience what it was like to program early digital machines.
Graphical user interfaces, keyboards, touchscreens, and command-line interfaces are all really, really good things. They make it easy and intuitive to interact with the otherwise incredibly complex computers we have on our desks and in our pockets. Perhaps AI browsers will give us an even more intuitive way to work with these machines in the near future. But things weren’t always so easy. If you go back to the earliest days of digital computing, you’ll find big panels of switches, buttons, and blinking lights.
Although no one really wants to directly enter processor opcodes in binary by physically flipping mechanical switches anymore, there is something appealing about it all. Having something that you can really get your hands on, and blinkenlights galore, connect us with the machines in a way that today’s monitors cannot. Hardware hacker Linus Åkesson felt the draw of these old computers with glorious front panels lately, so he set aside his many music-related projects (see here, here, and here) for a while to build a simple machine with a front panel and a modern twist.
Åkesson built the computer around an ATmega88 microcontroller, because it happens to have an electrical interface that allows programmers to stop the processor, then inspect and modify memory. And that happens to be exactly what the front panels of yesteryear were designed to do.
That’s not all that’s needed to interface mechanical switches and buttons with a microcontroller, however. You also have to consider the programming interface. Most options available today would choke on the signal bounce that inevitably happens when any mechanical switch or button is toggled. But the ATmega88 has a parallel programming interface that operates using a latching mechanism, eliminating this problem. It also has multiple signal lines, with each reserved for a specific purpose, which makes it easier to wire up the front panel circuit.
The panel is made from a wooden frame, with a piece of printed paper laid over the front to label each input and output. A piece of acrylic keeps everything protected during use. The rear side of the computer is open to allow for easy access to the components.
The interface has a button that halts the processor and puts it into programming mode. From there, a dial is used to enter processor opcodes, addresses, or data. Switches specify the binary representation of whatever is currently being entered. Load and deposit buttons retrieve data from, or store data to, memory, and an execute button runs the entered instructions. A set of four LEDs are used to display outputs.
After coding up a short program in machine language, Åkesson showed how a binary counter could be incremented, and how the result could be shown on the LED display. After watching him walk through the tedious and error-prone programming process, you will be happy that computers do not work that way today. But at the same time, you will most likely also very badly want a little front panel computer of your own. Between the freely-available schematics and the video, that shouldn’t be too hard to make happen. Time for some blinkenlights!