Big Mess o’ Wires


A home-built CPU, and other messy electronics adventures

Archive for the 'BMOW 1' Category

Goodbye BMOW, and a Contest

It’s a bittersweet day today. After 18 months of development, occupying the top of my desk and the majority of my spare time, BMOW 1 has been officially retired to the closet. I packed up the case, packed up the power supply, keyboard, cables, EPROM programmer, and everything else. At least it had a good send-off party at the Maker Faire. Now I can actually see the surface of my desk for the first time since 2007, and I’m ready to turn my full attention to my next project.


To mark the occasion, I’m running a small contest, with ten fabulous BMOW stickers as the prize. If you’ve followed my progress for a while, then you know that the “C” key doesn’t work in BMOW BASIC, due to a bug related to control-C handling that I never bothered to fix. The contest is simple: write a BMOW BASIC program that prints the letter C to the screen, without typing “C” as part of the program. This isn’t as easy as it might seem, since many of the relevant BASIC keywords also have the letter C in their name.The first person to reply with a working solution, as judged by me, will receive the stickers by mail, and the honorary title of “BMOW Guru”. It’s not quite like being knighted, but it’s close.

Some hints:

  • BMOW BASIC is a straight port of Microsoft BASIC, but does not include any machine specific commands for file I/O, graphics, etc. Do a Google search to learn more about MS BASIC keywords.
  • The video memory is not mapped anywhere into the BASIC address space, so you can’t just POKE a byte into screen memory.
  • Try this Javascript Applesoft BASIC interpreter, which is also a Microsoft BASIC variant. But remember, BMOW BASIC isn’t 100% identical to Applesoft. Try the BMOW simulator on the Downloads page if you’re unsure.
16 comments

Aftermath

Photo by Joe Pankow Oh ye gods! Crazy, nutty, insane. The past few days have been among the strangest of my life. I think I’ve had my 15 minutes of fame and then some. First there was the article about BMOW 1 on Wired.com, then the story got picked up by CNet, Digg, Slashdot, Engadget, Gizmodo, Reddit, and many others, all over the web. My inbox overflowed with people asking about the project. Then came the Maker Faire, where a few thousand people came through the BMOW booth over a two-day period. People were amazingly enthusiastic, and quite a few people told me they came to the Maker Faire specifically to see BMOW! In the Wired article about “What to do at the Maker Faire“, BMOW was even the featured attraction for the entire event. In the end, it won an editor’s choice award for the show, and I talked myself hoarse.

While I appreciate all the attention this project has suddenly received, I have to admit I feel like a fraud. For one thing, Bill Buzbee’s fabulous Magic-1 homebrew computer was also at the Maker Faire, and it’s twice as cool as BMOW, but didn’t get nearly the press coverage. I also think that most of the people talking about BMOW thought it was something it’s not. A lot of people seemed to have the idea that I’d built a CPU entirely out of wires, as if wires themselves could perform computations. Or they thought I’d built some kind of giant machine the size of a refrigerator. When they saw a rather ordinary-looking 12 x 8 inch board at the show, they looked disappointed. Many people also seemed to have the idea that I’d built a CPU out of thousands of individual transistors. Nope. BMOW is made from sixty-five chips including 7400-series parts, 22v10 PALs, ROMs, SRAM, a video DAC, and an AY audio chip.

It was an incredible time at the Maker Faire. Setup began on Friday, so I was able to get in before the show opened to the public, and chat with some of the other Makers before the crowds arrived. The show is sprawling, massive: two giant expo halls, plus all the grounds between and around them, and half of an enormous parking lot. It was really too much to experience in a single day.

One downside of being a Maker presenting BMOW is that I didn’t get much chance to visit the other exhibits. Fortunately, I did have a chance to talk with a few amazingly brilliant people. I spoke to Jeri Ellsworth, creator of the C-One reconfigurable retro-computer (who was demoing DIY transistors), Limor “Lady Ada” Fried, inventor of all manner of Arduino and other electronic projects, and evilmadscientist.com’s Windell Oskay, who was demonstrating the Candy Fab 6000 sugar-based 3D printer. There were also many other amazing and creative people I spoke to, not all of whose names I caught, but it was great to get wrapped up in an aura of geeky achievements with them all.

Thanks to everyone who came by the BMOW booth at the Faire, and to my friends Kevin and Eric for helping out as BMOW crew members for the weekend. The booth was packed almost non-stop from open to close, both days. If I’d had the foresight to make extras, I could have sold a ton of books and T-shirts, and lots of people asked about them. Some people even asked about buying kits. I can only assume they had a spare year with no particular plans, and were looking to fill it. A few people came by the booth and gave me free stuff! A guy from Parallax gave me a Propeller development board. I’ll definitely have to play around with that.


A few questions about BMOW came up again and again:

  • “What’s the operating system?” When I answered “there isn’t one”, this seemed to blow people’s minds. How could you have a computer without an OS? For BMOW the hardware is so simple, the programs themselves essentially *are* the OS.
  • “What compiler did you use to write programs?” Some people seemed genuinely astounded that it’s possible for a human to write programs in assembly language. Whether they’re too young to remember when that was the norm, or have just spent too much time coding in Python or something, I don’t know. Yes, it’s all BMOW assembly language, which is mostly identical to 6502 assembly. I tinkered with retargeting a C compiler for BMOW, but never went very far with it.
  • “Where are the wires?” Ah yeah. I supposed it’s false advertising to have a project called “Big Mess o’ Wires”, and not have a giant hairball of wiring hanging out somewhere. There wires are all hidden on the underside of the system board. Sorry.

In the end, BMOW won a Maker Faire Editor’s Choice award. In fact, it won one twice. I’m not really sure what happened there, but when the second editor came by with Lady Ada to give me the award, and heard that someone else had already given me one, he seemed pretty ticked. I’m guessing maybe different editors were supposed to give awards in different categories, and two different editors claimed BMOW in their category. Regardless, I’m thrilled and excited to be recognized by Make.

To the guy I talked with who’s got some unused wire-wrap boards, please send me an email, and I promise to give them a good home. To the guy who turned out to live down the street from me in Belmont, email me, and maybe we can hook-up for some neighborhood nerd projects. For anyone else who emailed me already, if I didn’t reply, try me again.

Last but not least, I’m taking orders for SWAG. If you’d like a few BMOW stickers, send me a SASE or $0.50 by PayPal, and I’ll get you some. I’ll also be placing another order for BMOW T-shirts in a week, on June 7. If you’re in the USA, send me $28 by PayPal before the 7th, along with your shirt size, and you’ll get a shirt in a couple of weeks. If you’re outside the USA, email me to ask about shipping costs. Sorry, but 5-color silkscreened T-shirts for small run orders aren’t cheap. I’m not making any profit off these.

Whew! It’s been an amazing couple of days, but I’ve had enough. Time to go crack open a beer.

Meeting Bill Buzbee, creator of the Magic-1:

A day at the Maker Faire:

9 comments

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

107 comments

Faire Preparations

Four more days until the Maker Faire, and preparations have reached a fever pitch. I was interviewed by a Wired reporter on Friday, and a photographer is coming tomorrow to get pictures of me in my “workshop”, which should be good for a laugh. It’s all for an article that will appear on wired.com Wednesday or Thursday.

Friday is setup day, and I’ve arranged to take the day off from work. It’s not that I really need much setup, but I want to be there while everyone else is setting up, and scope out the exhibits. There are also a couple of Maker-to-Maker events on Friday before the faire opens to the public Saturday morning, including a Maker dinner on Friday night that I’m pretty excited about.

Big Mess o’ Wires will be in the main Expo Hall, booth 296. It’s on the other side of the floor from the Sparkfun booth, in a cluster of about a dozen other small booths. It looks like a pretty good location, near one of the doors so it’ll get some traffic, and not next to the bathroom or behind the stage or someplace similarly odd, so I’m optimistic. I’ve also recruited a couple of friends to be the BMOW crew for the weekend, so there will be someone on hand if I need to leave the booth for a while, or to help handle the teeming crowds that will no doubt be packing the BMOW booth. *cough*

Meanwhile, preparations on the home front are nearly complete. BMOW is fitted with its new transparent laser-etched cover, and tested with its demo attract loop. I’ve got photos, stickers, T-shirts, a “making of” book, and a technical manual with all the schematics and other documentation. I’ve even got a dummy wire-wrap board for people to check out, or try their hand at doing some wraps themselves.

I’ve created a BMOW Powerpoint presentation to answer the questions of “what is this, and why should I care”, which will be looping continuously on another computer in the booth. I welcome feedback on anything that has too much or too little detail, or other general suggestions for improvements.

I hope to meet some of you in person this weekend at the faire!

Edit:  The WIRED article about BMOW is up. Thanks Priya!

No comments

BMOW Shirts

BMOW shirts arrived today. Not a giveaway– just enough for family and crew at the Maker Faire.

3 comments

More Swag

I’ve been going a little overboard with all the BMOW stuff for the Maker Faire. I’ve spent about $300 on assorted stuff, which is a little crazy considering that this isn’t a profit-making enterprise, and there’s really no good reason to have stickers and posters and books and things, but I can’t stop myself. Help, I think I have a problem!

I used Shutterfly to print four large photos of the wiring side of the BMOW main board, which I’ll have around the booth at the Maker Faire. While I was browsing the the Shutterfly site, I also noticed a special they were running: a twenty page 8 x 11 inch hardcover photo book for $23. I couldn’t resist, so I spent a few hours designing a “Making of BMOW” book for people to browse at the booth. It’s a condensed version of the past year and a half of this blog. The book arrived yesterday, and it’s awesome! The front cover has a hole cut in it, framing the photo on the title page, which is a nice touch.

Here are a couple of sample pages from inside the book. It all looks really professional.

I should have stopped there, but I didn’t. Another idea I’ve been mulling for a while is creating a clear cover for the BMOW case. I’m a little worried it might get damaged or spilled upon if I leave the case cover off during the Maker Faire, but with the existing cover in place, it becomes just a boring beige box. I wasn’t really sure how to go about making a custom clear cover though, and never took the idea any further.

Last week it occured to me that a custom clear cover doesn’t really need to be a complete replacement for the metal cover, with full sides, back, guide rails, and so forth. All I really need is a 2D cover that can be mounted to the system board using standoffs, and will protect the board from most hazards from above. That would still leave some small gaps at the sides and edges, but they’d be small enough to not be worrisome. So I took some measurements, spent an hour designing a cover using Corel Draw, and mailed the file off to Pololu, a company that does custom laser cutting of various materials.

The cover arrived yesterday, and it’s pretty much the coolest thing ever. It’s 1/8″ clear acrylic, with laser cut mounting holes, and a grille for the speaker. The BMOW logo is also etched into the cover, using the laser at a low-power setting so it didn’t burn all the way through.

I’m just blown away that I can spend an hour in a vector drawing program, send the file off into the ether, and three days later get an exact physical part on my doorstep for $29. I’ll definitely be looking for more excuses to custom fabricate parts in the future.

I haven’t yet confirmed that the cover fits, since I need to get the correct size standoffs first. It looks perfect to an eyeball test, though. My vector layout file was based on hand-measurements made with a ruler, so it’s entirely possible that the mounting hole positions are slightly off. I made the hole diameters bigger than needed to allow for some error, and if worse comes to worse, I’ll try drilling out the holes to correct any major mismeasurements.

8 comments

Swag

The BMOW stickers arrived today, and they came out perfectly! Mmm, one thousand delicious 3×3 squares of BMOW goodness for the Maker Faire.

I only wish I’d made them larger. 3×3 doesn’t feel as big as I’d imagined it would. Still, they’ll make a great give-away for the Faire.

Totally unrelated to BMOW, but the mailman also brought me my new Vibram Five Fingers running shoes today:

9 comments

BMOW Road Trip

I took the BMOW 1 hardware on the road this week. A few of the people I work with have been polite enough to feign interest in the project, and I’d repeatedly promised to bring it to work for a demo when it was ready. On Monday I lugged the whole setup to the office, and left it there for two days, showing it off to whomever came by and asked about it. I wish I’d taken some photos. It turned out to be a great dry run of what I’m likely to encounter at the Maker Faire next month, and I learned some helpful things about the demo and myself in the process.

  1. From an audience of very technical people, it basically broke into two groups. Most asked one or two general questions, and left in less than a minute. A few stayed for 15 minutes or more. Some of this was detailed BMOW questions, and some was stories of their own about hardware “back in the good old days”.
  2. I had trouble summarizing what the project was in a couple of sentences, and really need to work on this. Many people didn’t seem to grasp what it meant to build a custom CPU, although they got the general idea.
  3. I found that I actually got bored of talking about the machine after the fifth or sixth repeat of the same little talk. That doesn’t bode well for the 18 hours of the Maker Faire. It actually surprised me– I thought I’d never get tired of talking about my projects.
  4. Everyone wanted to see the wiry mess, which is unsurprising given the project’s name. Sadly, all the wires are hidden on the underside of the board when it’s mounted in its case. For the Maker Faire, I’ll definitely have plenty of photos on hand of the wiring side, and a sample wire-wrap board. I wish I could think of a safe and easy way to let people see the wire side of the BMOW main board when it’s on display.
  5. Quite a few people said they’d expected it to be bigger. I’m not sure how to respond to that.
  6. I may need to add some more built-in demos. There are 12, but they basically break down to listen to some music, look at a picture, play chess, or run BASIC. Nobody got further in BASIC than: 10 PRINT “HELLO”, 20 GOTO 10.
  7. Stability was pretty good. Over two days, constantly running in a demo loop, it only crashed a couple of times. There were a few very bizarre bugs that disappeared after a reset, though, like the “C” key stopping working.
  8. A few people joked about “accidentally” spilling coffee onto the board. With a few thousand people at the Maker Faire, somebody probably will spill something on it. I’m still unsure what the best way of protecting it is. I’ll probably need some kind of transparent protective cover.

In another month, I’ll go through the same drill again at the Faire, but with better props and a much larger audience.

8 comments

Done?

I think it’s done. This evening I went to work a bit more on BMOW, and realized… there’s nothing left to do. The last little bit was finished this weekend, and involved creating a self-running demo loop of all the BMOW programs in ROM. Now it still boots to the same power-up screen as before, but after 30 seconds of idle time, it’ll start looping through a sequence of 10 different audio, video, and interactive demos. It can be interrupted at any time, and if somebody starts playing with the interactive demos (Microchess and BASIC), it will let them play as long as they wish, continuing the demo loop after another suitable idle period.

The only other bit of work I can conceive of is constructing a clear replacement cover for the BMOW case. The current case is solid steel and hides everything away inside, so a clear cover would be a nice way of showing things off while still keeping them protected. I looked a bit into some online custom plastics manufacturing options at Big Blue Saw and Polou, but they’re both limited to 2D parts. A custom replacement cover would need a top, sides, back, and guide rails on the inside, and I’m not too excited about trying to glue or screw together a 3D part from a bunch of 2D parts. Unless I come up with some great brain wave that can simplify it, I’ll probably skip this idea, and just leave the cover open when I want to show the machine off.

The timing of the Maker Faire is a lucky coincidence, giving me an excuse to polish things up nicely and have a little celebration before going on to a new project. I’ve spent more time in the past week planning for my Faire exhibit than on BMOW itself. Originally I’d planned to have some business cards printed up that summarize what the project is about, but then I asked myself why I’d want boring business cards when I could have stickers! I think I have an irrational fondness for stickers. I designed a custom 3×3 inch BMOW sticker and ordered 1000 of them from UPrinting. Take a peek at the sticker proof to see the design. Come to the Maker Faire and I’ll give you one!

I’ve still got a few more projects left to prepare for the Faire, like T-shirts, a Powerpoint presentation, notebooks of schematics and construction photos, and general booth equipment (lights, cloths, cords, monitors, wire wrap samples, and other sundries). That should keep me busy for a while.

I also updated all my online documentation recently, including quite a bit of new content, and put it all on a new Downloads page. It includes all the schematics, software, wire lists, Verilog models, PC tools, and anything else I could think of.

As one door closes, another opens, and I’ve begun thinking harder about my next project. One practical question I’m unsure how to answer is where I should write about it. I’ve really enjoyed logging my progress with BMOW here, and the great comments and dicussions it’s led to with like-minded people all over the world. I definitely want to keep that going for my next project, but is this the right place to do it? Right there at the top of the page it says “Big Mess o’ Wires”. Do I start a new site? Do I keep adding to this site, even though newer entries will be unrelated to BMOW? If so, how will future visitors understand what’s going on, or realize that there even was a machine that came before the new one?

My current thinking is to redefine “Big Mess o’ Wires” as referring generically to any electronics project of mine, since they’re all big messes of wires in one way or another. Then retroactively rename BMOW to BMOW I or BMOW Classic or something stupid, and turn this site into more of a catalog of various projects, including BMOW I. It’s also probably about time to get a real URL for this thing, instead of hanging off my content-free personal web site. Sadly, www.bmow.com is already taken (curse you, Broward Meals on Wheels!). Other options like www.bigmessowires.com seem a little verbose, and I know from my site statistics that most visitors incorrectly insert the “f” in “of” when doing a search. Maybe a .net, .org, or .info domain? Or maybe it’s fine just the way it is.

3 comments

Maker Faire

ZOMG!!! I’m exhibiting at the Maker Faire! It’s billed as “the world’s largest DIY festival”, and is happening in the San Francisco Bay Area May 30-31. If you’re anywhere remotely nearby, make a trip to come see BMOW and the other exhibits! I attended last year’s faire, and the caliber of the exhibits was excellent. Everything was fascinating and amazing, so I’m not sure BMOW will measure up to the rest. But they accepted my application, so now they’re stuck with me. Heehee!

Thanks to Bill Buzbee for pointing me to the late-entry application. (Bill and the Magic-1 will be there this year too.) The application process was surprisingly simple: just a few words about myself, my project, and some links to photos, videos, and this site. I just got a response back today, letting me know I’d been accepted. I’m wondering about the brevity of the application: I’m not sure how they really know that the projects will be any good, or of any interest to the public. Yet while some of last year’s exhibits were better than others, I didn’t see anything that struck me as boring or lame.

I’m thrilled and excited, but I’m also pretty nervous. Besides furnishing a table, chairs, and a power outlet, the faire doesn’t provide me with any other support. I’m not sure what I’ll need to make an interesting booth, but I don’t think simply having BMOW there on a table will be enough. For one thing, if you have no idea what you’re looking at, it just looks like a bunch of crap in an X-terminal case that someone drilled a hole in.

Here’s what I’m thinking:

  1. A big BMOW sign or banner. Maybe scrounge up an old dot-matrix printer and make a BMOW banner with Print Shop. Or a piece of posterboard, with a pseudo-dot-matrix BMOW logo constructed from colored squares cut from construction paper.
  2. A second PC with a looping powerpoint presentation, outlining the highlights of the project, with photos of the wire wrapping.
  3. A third PC for demonstrating the simulator, microcode compiler, and other custom tools, and for downloading data to BMOW via USB.
  4. Printouts of the schematics and all the other technical documents in a big binder, for the truly curious.
  5. A continuously-running, interruptable demo loop for BMOW.
  6. A clear plastic or glass cover for the hardware, to protect my year and a half’s work from overly-curious finger poking.
  7. Maybe print up some info/business cards with the logo, summary, this site’s address, my name, and so forth. A number of exhibitors did that least year, and I thought it was a nice touch.

San Mateo fairgrounds, here I come!

1 comment

Next Page »