Big Mess o’ Wires


An 8-bit home-built CPU

About BMOW

Back in early 1980’s, I lived and breathed the world of the Apple II, Atari 800, Commodore 64, and their brethren. I could PEEK and POKE those machines like nobody’s business, and I spent countless hours writing programs, playing games, or just fiddling around. In contrast to today’s PCs, the computers of that era were inviting to tinkerers, with a comparatively simple hardware design and a BASIC prompt at boot-up.

As a computer engineering major in college, I learned the details of digital logic design. I even built a rudimentary computer on a prototyping kit built into a suitcase: MIT’s infamous “Nerd Kit”. But at the end of the semester, it was all torn down, I went on to a career in software, and that was that.

More recently, I learned of various projects to build simple computers similar to those 80’s machines, constructed entirely of discrete logic chips like counters, adders, flip-flops, and NOR gates. No Pentiums or PowerPCs here– these people built their own CPUs from the ground up, along with the memory subsystem, I/O, and everything else the computer required. I had stumbled onto the world of the homebrew CPU. To create such a computer required a detailed microarchitectural design, custom instruction set design, custom software tools like assemblers and compilers, and of course a custom circuit board or three populated with lots of fat DIP chips and a big mess o’ wires. Projects like the Magic-1, D16/M, and Mark 1 FORTH Computer showed me the way.

I decided to build a homebrew CPU computer of my own. My 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.

Current Status

Big Mess o’ Wires is a work in progress. Initial design began in November 2007 with a high-level sketch of the CPU internal design. A Verilog hardware simulation proved the design details. Construction began in earnest the following February, using a large wire-wrap board to interconnect the 50 or so chips needed. In April, a half-finished BMOW booted up for the first time, computing fibonacci(12) = 144 using a simple ROM-based program. As of July 2008, hardware construction is about 80% complete, BMOW can run complex programs written in assembly or compiled from C, rudimentary multi-tasking is working, and most of the original goals have been realized. The focus is now on the stretch goals of video/sound support.

Specs

  • Current clock speed is 2MHz. It should be able to go to about 3MHz ultimately.
  • 512 KBytes of RAM, 16 KBytes of ROM.
  • Power draw is 8 Watts, implying 1.6A at 5V.
  • Keyboard input is a standard PC keyboard with PS/2 connector.
  • Output display is a 20×4 character text LCD. (VGA video output is work in progress)
  • There are presently 704 connecting wires, so 1408 individual wire wraps.

Please send me your thoughts and questions about BMOW!

The BMOW hardware as of April 2008:

4 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?

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.