Paul Krizak's Wire Wrap Odyssey Is a Real Labor of Love for the Vintage Microcomputer Era
10 years in the making, this hand-wire-wrapped 74-series discrete logic microcomputer is truly impressive.
Maker Paul Krizak has built a homebrew microcomputer from, mostly, 7400-series discrete logic chips — connected together using wire wrap and years in the making, hence its name: the Wire Wrap Odyssey.
"As part of my computer science curriculum at Texas A&M University from 2000-2005, I took a computer architecture course where I learned how computers work at the fundamental level," Krizak explains of the project's origins. "Something about this course during my studies stuck with me, as I started to better understand how the early microcomputers such as the Apple 1 and Apple II, Commodore 64, TRS-80, and even early x86 systems like the [IBM] PC-XT with Intel's 8088 and 80286, were designed."
"So in 2010," Krizak continues, "I began working on my own homebuilt computer. The Wire Wrap Odyssey is the result. Over a decade in the making (but realistically starting in earnest in 2019 after finally settling on wire wrap as the best way to construct the system), the Wire Wrap Odyssey has been a long LONG journey of dead ends, failed designs, questionable implementations, and tricky troubleshooting."
The Wire Wrap Odyssey itself is a microcomputer built around a homebrew eight-bit microcoded processor with a 16-bit address bus. Unlike even the computers Krizak name-drops as inspiration, like the Commodore 64, there are no chips built with very-large scale integration (VLSI) approaches: almost every active component in the system is a simple 7400-series logic chip.
"Nearly everything is built around simple logic components such as 74x377 D flip flops, 74x245 bus transceivers, multiplexers, selectors, and a generous pile of simple logic gates," Krizak explains. "The Odyssey computer is built entirely on Augat wire wrap prototyping boards. It solves the durability/reliability problem while retaining the density of a PCB or perfboard construction. And multiple nets are easy to attach to a single wire wrap pin without disturbing existing wiring. It's even relatively easy to make repairs — often it's just a matter of cutting out the offending wire (leaving the dead wraps on either end) and wrapping a new wire to fix it."
Wire wrap, once a common sight in point-to-point electronics and modernized post-World War II by Bell Labs for use in the telephone network, is exactly what it sounds like: rather than soldering components to a PCB or flying leads to components, wires are physically wrapped around connection posts — using a purpose-built wire-wrap gun if you're in a hurry, but done nearly as neatly using little more than a lightly-modified hollowed-out ballpoint pen.
As well as custom-designed CPU, the Wire Wrap Odyssey includes a real-time clock, 1MB of extended RAM, an ATA port for storage, a PS/2 keyboard connector, and a video card. "The video card design is heavily influenced by Ben Eater's VGA project," Krizak explains. "Like Ben Eater's project, the video card implements timing signals for a 640×480 pixel display at 60Hz refresh rate. However, unlike Ben Eater's project, I opted to use the full speed 25.175MHz pixel clock, rather than Ben Eater's 10MHz pixel clock. The use of a full speed pixel clock meant I could utilize all of the pixels in the display."
For software, Krizak developed an assembler, reconfigurable should the hardware change, and an operating system library capable of displaying text, drawing color graphics, interacting with the keyboard and serial input, and handling a cursor — the driving force behind the operating system itself, OdysseyOS. "Getting to this point took a surprising amount of code," Krizak admits.
"I have an even deeper respect for the '70s and '80s hackers that managed to cram all of this functionality (and more!) into just a few KB of ROM and RAM back in the day. As it stands, my 'improvisational' and 'just in time' approach to building all this stuff has made for some pretty inefficient code, and at the moment the BIOS functions and shell consume nearly 12KiB of ROM. Since the entire ROM is only 16KiB, I expect that I'll have to go back and do some refactoring pretty soon."
The system is detailed on Krizak's dedicated website, while the source code has been published to GitHub under an unspecified license. Additional documentation, written during development by hand on thinly-sliced dead tree, is also accessible on the site.