Big Mess o’ Wires


A home-built CPU, and other messy electronics adventures

BMOW 1

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

52 Comments so far

  1. kurt January 16th, 2008 8:43 pm

    you might be nuts. but in a good way.

  2. Gregg C Levine January 16th, 2008 9:52 pm

    Hello!
    Wow!
    Back during the days of the Apple and the R6502, I, myself happened to be a very good programmer. In both BASIC and assembler. So much so that I would be able to diagnose a problem for someone else from just by viewing a sick machine’s responses.

    What you are doing is just the bee’s knees. And that
    is good.

  3. Allen Bruce July 2nd, 2008 4:06 pm

    Hi Steve

    Love your system. Well done!

    I noted your remark about the system being stand alone by using the keyboard and lcd display. Thought you might be interested in a cheap display that I am using for my Z80 CP/M system. http://www.allen.caldersmithguitars.com/all-50.jpg

    The display has no backlight. I bought some from:
    http://www.allelectronics.com/make-a-store/item/LCD-101/256-X-128-LCD-PANEL/-/1.html

    The display can hang straight off the address/data busses and isn’t too hard to drive.

  4. Steve July 4th, 2008 8:49 am

    Allen: Looks quite impressive! Do you have any more details about your system on the web, beyond that photo?

  5. ragnar February 28th, 2009 3:44 am

    Impressive work!

    I wonder what tune you are playing in the demo-video and if there is a mp3 available?

  6. Steve February 28th, 2009 2:19 pm

    The song in the AY-3-8913 demo video is called Agent X II, by “The *genious* Tim Follin”. It’s a Spectrum ZX tune that I downloaded as part of a collection from http://bulba.untergrund.net/music_e.htm . No MP3 version, sorry.

  7. Mykel March 1st, 2009 8:58 am

    http://taro.lool.net/Game_Music/idx_c64.html has a collection of C64 midis including Agent X II. Since the link above was down when I checked.

    Also, AMAZING!!!

  8. ragnar March 7th, 2009 12:17 pm

    Thanks Steve, it was the “VTX, YM, etc” archive v1.2 on the site you linked (just remove the accidental “.” at the end of the URLs htm) and converted it to WAV with Audio Overload.

  9. Steve March 7th, 2009 4:40 pm

    Fixed the Agent X II link, thanks.

  10. ynki1001 March 12th, 2009 7:11 pm

    WOW!!!
    Just looking at it brings tears to my eyes.
    You’ve completed one of my life long goals, I just hope I’ll be able to do something like that before I die…
    You’ve got all my respect, and am Now an Internet Hero.

  11. tallwookie March 17th, 2009 4:56 am

    OMFG! truely a labor of love.

    /kneel, /worship

  12. […] (this is the part were more than half of you think I’m crazy, nerdy, or both) In a nutshell, it’s a home made CPU. Personally I think it’s fricking awesome. […]

  13. Kw0mE April 5th, 2009 12:12 am

    When the nuke war starts and i wanna play chess i hope your in my bunker!

  14. Jai April 5th, 2009 11:30 pm

    Amazing stuff. How much time you spend on it?

  15. Steve April 6th, 2009 6:10 am

    It’s been on and off since November 2007; some weeks I’m really busy and some weeks I don’t touch the computer at all. On average I’d guess I spend about 10 hours a week on it, which is a few weeknights and a Saturday afternoon.

  16. Andrew May 27th, 2009 4:57 am

    I’d never gasped out loud until I saw that.

    Very impressive…

  17. Olaf May 27th, 2009 10:40 pm

    Amazing! Congratulations. I bow down. I loved the 6502 for the same reason you did.

  18. […] Project Page // Share this: […]

  19. Enrique May 28th, 2009 5:04 am

    neat work, congrats!!

  20. pepe May 28th, 2009 6:49 am

    Incredible. This proves that computers arent magic mystery boxes and humans still know how they work :)

    Amazing stuff. Well done. Someone submit this to slashdot.

  21. Mikuro May 28th, 2009 8:10 am

    This is great stuff, also makes you wonder just how impossibly complex modern computers are…

    could you post more/larger photo’s of it please? especially of the above image “gallery10.jpg”, that would make a nice wallpaper :D

  22. Rbrooks May 28th, 2009 11:36 am

    Very nicely done. I’m an old school 6502 poker as well.

  23. Hubris May 28th, 2009 12:52 pm

    I love you.

  24. MNye May 28th, 2009 1:07 pm

    Very impressive! I admire your dedication and originality.

  25. i. reilly May 28th, 2009 3:44 pm

    thx for the ‘cant-believe-what-i-see-situation’

    :)

    inspiring work!

    i.r.

  26. links for 2009-05-28 « Mandarine May 28th, 2009 8:17 pm

    […] Big Mess o’ Wires » BMOW 1 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. (tags: diy hardware electronics) […]

  27. envious May 30th, 2009 4:54 am

    dude, this happens to be my -ultimate- goal with computer science. You are seriously right up there with a figurative god.

  28. typo May 30th, 2009 9:56 am

    Could you estimate how many transistors you used to compare em with intel cpu’s millions and billions?

    Well done anyway!

  29. El gran lío de cables a 2MHz May 30th, 2009 1:58 pm

    […] mis felicitaciones por gran trabajo, pueden encontrar mas informacion sobre como esta creado en su pagina web. .gallery { margin: auto; } .gallery-item { float: left; margin-top: 10px; text-align: center; […]

  30. andres otondo May 31st, 2009 10:08 am

    great job!, impressive!

  31. Pacific Tides » Handmade CPUs May 31st, 2009 1:34 pm

    […] has been going around the blogosphere for a few days now, but I just have to say - the Big Mess o’Wires is one of the coolest hardware projects I’ve seen in a long […]

  32. […] Big Mess o’ Wires - the home-made computer Wanna build your own computer (in you garage)? Maybe you can learn something from this guy: www.stevechamberlin.com. He made an amazing work with his BMOW 1 (Big Mess o’ Wires). […]

  33. […] P.S. Подробности можно почитать здесь и здесь. […]

  34. Thomas Dowad June 4th, 2009 3:45 pm

    Steve…

    Cool! Nice work. I wanted to design a CPU, having worked in circuit design with MSI logic & PALs back in the ’80’s. Do I presume correctly that 3-state data allows for multiplexing (selection of registers)?

  35. Steve June 4th, 2009 4:06 pm

    Yes about the tri-state logic. When one register’s output is disabled, it goes into a high-impedance state, allowing something else to drive the bus without creating contention.

  36. Vimlesh June 10th, 2009 12:48 am

    I am amazed.. Awesome work indeed. How to learn microelectronics and implementing logic on circuits?

  37. Kabelsalat at PLANET BLOG June 10th, 2009 9:15 am

    […] und jeder Menge Logikschaltkreisen sich seine eigene CPU mit Rechner dran zu basteln. Quelle stevechamberlin.com Erinnert mich irgendwie an meine Anfänge mit Rechnern - der Z1013 war auch nur eine separate […]

  38. […] simplement par défi, voire par curiosité, il a décidé de pondre son propre microprocesseur, le BMOW, soit le Big Mess O’ Wires. Je suis stupéfait d’apprendre cette nouvelle, […]

  39. Computer selbstgebaut « Impressionen June 22nd, 2009 1:34 pm

    […] Dieser Computer ist handgefertigt. Er besteht nur aus simplen Logic Chips und Kabeln. Passend ist der Name desselben: Big Mess of Wires (BMOW). […]

  40. BigDumbDinosaur July 2nd, 2009 8:47 pm

    No wonder there’s a copper shortage! Amazing — that it actually works!

  41. Henry July 9th, 2009 9:49 pm

    hi man,this is awesome…digital logic makes cpu…so cool!

  42. Barney July 11th, 2009 7:24 pm

    WoahAaa! dude u r awesome.

    One question, how did u manage to minimize the electrical interference with so many wires running side by side?

  43. Suixin Zhao July 12th, 2009 4:00 am

    Hi Steve!
    I love your system! It’s very cool, come on!

  44. Steve July 12th, 2009 8:27 pm

    Regarding the electrical interference with many wires: it is a problem, but not a fatal one. I tried to avoid running many wires parallel to each other, preferring to run them at an angle, to minimize the crosstalk. The system speed is also pretty slow (2 MHz), which means transient noise has more time to settle out before the next clock edge. The CPU still does crash occasionally, though, which I’m guessing it a noise problem.

  45. olefowdie July 15th, 2009 7:28 am

    I would love to build a “Big Mess O’ Wires” would you consider making a guide book to building one?

  46. […] CPU是沙子做的,经过艰难的提纯到单晶硅锭,然后再Balabala… …到一块CPU的诞生,绝对是一件高科技的事情,印象里这事没个上亿美元的投入断然是做不得的(参考咱们龙芯的投入)。我曾问过INTEL关于这方面的事,但是人家严肃的告诉我:“这是国家机密,再问拘捕你”,吓。危急时刻,美国加州S哥(Steve Chamberlin)挺身而出,他无论在什么地方,都像漆黑中的萤火虫一样,那样的鲜明,那样的出众。S哥耗时18个月,硬是用钳子和榔头土法炼钢般造出了一坨8位的CPU:BMOW(Big Mess of Wires),共耗资3000多美元,使用了1253条电线,同时放开了所有跟此项目相关的设计,配套操作系统及理念。 […]

  47. solardavegreen July 31st, 2009 9:47 pm

    So, does this mean you could hand 1250 or so people each a length of wire with bare ends, and with a handful of chips and a football field this could be built on a Human scale? I sense a Guiness event forming…

  48. Rohit de Sa August 29th, 2009 12:33 am

    You’re crazy, in a very smart sort of way :-D. Wow! Good job :-)

  49. […] http://www.stevechamberlin.com/cpu/bmow1/ a few seconds ago from xmpp in context […]

  50. NrDesign November 9th, 2009 7:03 pm

    *JAWDROP*

    The name “Big Mess Of Wires” absolutely fits; I’m stunned by just looking at it! Keep up the work at your future projects! :)

    NrDesign

  51. CPU hecha en casa... November 30th, 2009 10:02 am

    […] CPU hecha en casa… www.stevechamberlin.com/cpu/bmow1/  por moan el 18:01 UTC […]

  52. Desktop Friday: BMOW « The Electronic Replicant December 11th, 2009 10:37 pm

    […] Big Mess of Wires, or BMOW is a home brewed CPU built by Steve Chamberlin from dozens of discrete logic chips, all […]

Leave a reply. Comments may take a few minutes to appear.


Homebuilt CPUs WebRing

JavaScript by Qirien Dhaela

Join the ring?

David Brooks, designer of the Simplex-III homebrew computer, has founded the Homebuilt CPUs Web Ring. To join, drop Dave a line, mentioning your page's URL. It will then be added to the list. You'll need to copy this code fragment into your page.