BMOW Project Summary
Crazy day today! Maker Faire setup begins tomorrow, and BMOW is featured on wired.com, and is the #1 Top in All Topics story on Digg! Oh man, this poor server is getting hammered.
Many people have asked for high-res photos. See this entry from February, and click any of the thumbnails to get the high-res versions of wire-wrapping craziness.
For people interested in viewing or buying the “Making of BMOW” photo book, you can order it from Shutterfly here.
Here’s a summary of the project, for everyone following the link from the article.
Big Mess o’ Wires 1 is an original CPU design. It does not use any commercial CPU, but instead has a custom CPU constructed from dozens of simple logic chips. Around this foundation is built a full computer with support for a keyboard, sound, video, and external peripherals.
My original goals were:
- Build the CPU from scratch, primarily using basic 7400-series logic. No 6502, Z-80, etc.
- Keep the hardware complexity to a minimum. I’m not an electrical engineer.
- Be capable of running “real” programs, not a 4-bit CPU or toy machine.
- Provide a way to interface with a PC.
- Be fast enough to run interesting programs interactively.
Stretch goals:
- Boot into a simple integer BASIC program, capable of interactively editing and running its own programs.
- Support multiple programs executing simultaneously, via a pre-emptive multitasking OS.
- Provide keyboard input, VGA video and sound output.
Initial design began in November 2007 with a high-level sketch of the CPU internal design. A simplified Verilog hardware simulation proved the key design details. Construction began in earnest in February 2008, using a large wire-wrap board to interconnect the 50 or so chips needed. In April, a half-finished BMOW 1 booted up for the first time, computing fibonacci(12) = 144 using a simple ROM-based program. One by one the original system goals and stretch goals were met, including VGA video, three voice audio, BASIC, and a bootloader for communication with an attached PC. BMOW 1 eventually gained the ability to run complex programs written in assembly or compiled from C. The main construction phase ended in February 2009, with the completion of a customized case to house everything. As of March 2009, Big Mess o’ Wires 1 is fully functional, but will probably never be “finished”.
Architecture
BMOW 1 borrows liberally from other homebrew designs, as well as the MAYBE design presented in the book Computation Structures by Stephen Ward and Robert Halstead. Data busses are 8 bits wide, and the address bus is 24 bits. Four 8-bit registers are used for general data, and three 24-bit registers store the program counter, stack pointer, and a scratch/working address pointer. Registers and the arithmetic and logic unit are interconnected by one data bus, while RAM, ROM, and memory-mapped hardware devices use a second data bus. The ALU also has dedicated left and right data input busses.
Machine language instructions are implemented as a series of micro-instructions, stored in three parallel ROMs to create a 24-bit microcode word. One micro-instruction is executed each clock cycle, and the micro-instruction bits are used directly as enable and select inputs to control all the chips in the machine. Up to 16 micro-instructions may be needed to implement a single machine language instruction.

Note: Some additional devices are not shown here, including the VGA display circuitry and real-time clock.
24-bit addresses allow for up to 16MB of memory, but only a little more than 1MB of combined RAM and ROM is installed. The most-significant byte of the address is called the bank byte, and is normally invisible to programs. The standard instruction set presents a 16-bit interface to programs, with most instructions implicitly referencing the current bank. Cross-bank references are possible, but awkward (think x86 segment registers).
A 512K ROM contains a bootloader/menu program. A USB-to-TTL interface based on an FTDI chip provides an easy way to move data to and from a connected PC. A standard PC keyboard with PS/2 connector is used for keyboard input, and a 24×2 character text LCD serves as a debug output display. Custom video circuitry drives a standard VGA monitor, with a maximum resolution of 512 x 480. A three-voice programmable sound generator provides music and sounds.
BMOW 1 is built on an Augat wire-wrap board pre-populated with thousands of wire-wrap pins. The chips are pushed into the board without soldering, and can be easily removed, similar to a prototyping breadboard. Unlike a breadboard, the pins are individually connected on the underside of the board according to the needs of the circuit design. A wire-wrap tool is used to wrap stripped wire ends tightly around each pin. Wires can be removed fairly easily in case of a mistake. BMOW 1 contains about 2500 such wire wraps.
Specs
- Current clock speed is 2MHz. It could theoretically go to about 3MHz (untested).
- 512 KBytes of RAM, 512 KBytes of ROM.
- Power draw is 10 Watts, 2.0A at 5V.
- VGA video output is 512×480 with two colors, or 128×240 with 256 colors.
- Audio and music is provided by a three-voice programmable sound generator.
- Keyboard input is a standard PC keyboard with PS/2 connector.
- Debug display is a 24×2 character text LCD.
- There are roughly 1250 wires connecting the components, so 2500 individual hand-turned wire wraps.
Please send me your thoughts and questions!

BMOW 1 Photo Gallery





111 Comments so far
-
Mainboards: Historie und Entwicklung - Die Hardware-Community für PC-Spieler - PC GAMES HARDWARE EXTREME - July 3rd, 2009 2:10 am
[…] auch mal ohne große Kupfermonströsitäten ging. Bei den Bildern fällt mir grad noch das hier ein: Big Mess o’ Wires BMOW Project Summary __________________ Desktop: Athlon64x2 5600+ | Gigabyte GA-M57SLI-S4 | 4GB Corsair DDR2 800 | […]
-
«Big Mess of Wires»: χειροποίητος επεξεργαστής! | Search Top Greek Blog - July 5th, 2009 6:02 am
[…] το χόμπι του είναι τα ηλεκτρονικά και οι κατασκευές, έφτιαξε εξ αρχής έναν επεξεργαστή, χρησιμοποιώντας καλώδια (!) […]
-
R. - July 10th, 2009 10:28 am
Oh my god!!! This is breathtaking!!!
Don’t build some crazy machine and take over human beings, ok?
p.s.: Looks like you got some international attention already. Prepare to be overwhelmed by tourist groups from all over the world! -
Justin - July 26th, 2009 10:45 pm
太牛了!无法想象怎样用这么多线把元器件连接起来的。
你已经不是人了,是神! -
Рубен Павленко - August 20th, 2009 9:54 am
Спасибочки за возможность оставлять комментарии на Вашей странице!
-
Ентусиаст си сглоби компютър от нулата « futuretechnologiesDAKO90 - August 29th, 2009 3:57 am
[…] В общи линии, Стив е използвал около 1250 проводника и 2500 контакта. Подробности за неговия проект можете да видите на този адрес. […]
-
haccababababa - November 26th, 2009 2:39 am
wow you even have anti aliasing circuits for video output? I mean .. How many flops does this thrash does? Can you tell me?
-
отдых в египте,отдых в египте с детьми - July 1st, 2010 2:51 pm
-
刀客 - August 4th, 2010 9:55 pm
非常厉害,这么多线,我肯定会弄错几百根的
-
ztutz - March 16th, 2011 10:24 am
and the waka to the beat
es kann nur einen geben auf der großen weiten welt — kds one leipzig
im bozz
-
Tinycontrols - August 4th, 2011 10:16 am
and it works 🙂 Amazing is all I can say …
Leave a reply. For customer support issues, please use the Customer Support link instead of writing comments.

