BMOW title
Floppy Emu banner

Archive for April, 2009

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!

Read 1 comment and join the conversation 

Board Layout

While updating the BMOW documentation, I came across this diagram of the main system board layout that might be interesting to share. It shows every part on the board, and howthey’re all grouped into the subsystems that form the computer. Related parts are adjacent most of the time, but I did make some blunders.

Compare the diagram with the photo, and click either one to see a higher-resolution version. They match exactly, except for RAM1 (lower-right of the diagram), which I never got around to placing on the main board.

The core systems which form BMOW’s custom CPU are in the center of the board, shown in light blue, pink, orange, and purple. The rest of the systems are arrayed around the outside.

  • Control (light blue): Here’s where the control signals are generated to enable and coordinate everything else. It includes the three microcode ROMs, opcode register, instruction phase counter, and related demultiplexers.
  • ALU (pink): The mathematical and logical functions are all performed here. It’s a bit of glue circuitry along with a pair of 74LS181s.
  • Address Registers (purple): The program counter, stack pointer, and scratch address register are all 24 bits wide.
  • Data Registers (orange): There are three user-visible 8-bit registers named A, X, and Y. A fourth register named T is used internally by the microcode.
  • System Clock (light green): An 8MHz oscillator is used along with some flip-flops to generate two 2MHz clocks, one 90 degrees out of phase with the other. The power-on reset circuit is also part of this subsystem.
  • Memory (gray): The system has 512K ROM, 512K RAM, and the address decoder. I originally planned for two RAM chips and a total of 1MB of RAM, but later decided that was overkill.
  • Devices (dark olive): External hardware is mapped into the CPU’s address space. There’s a real time clock, and interfaces for USB, the keyboard, and the LCD front panel.
  • Discrete (dark blue): I lumped together all the miscellaneous resistors and capacitors that were needed into a single component carrier.
  • Video (tan): Four GALs serve as row and column counters to generate sequential video memory addresses during the display of each video frame. There’s 32K of VRAM, and a separate 2K character generator ROM. A palette chip pulled from an ancient video card translates VRAM values for each pixel into analog R, G, and B voltages for the monitor. There’s also some demultiplexing circuitry to let the VRAM address bus be driven by the row/column counters or by the CPU address bus. The video system has its own clock, which runs at 25.175MHz.
  • Audio (red): Some support chips and an AY-3-8913 programmable sound generator create three voices of modified square wave goodness. The three analog voltages for the voices are generated on-board, but the stereo mixing and amplification are done on a small daughter board.
Read 1 comment and join the conversation 

Date and Time

I’ve written one more program for BMOW: a utility to set the date and time. OK, I admit it’s not very exciting, but it is mighty useful when a buggy program overwrites the memory-mapped real-time clock registers for the fifth time. It also shows the time incrementing as you sit idle at the setting screen, demonstrating that the machine hasn’t crashed.

This will become part of the standard suite of ROM-based demo programs for BMOW. Speaking of which, I’ve put together the final menu of programs for the demo ROM (all of which have been discussed here before), and it totals 403923 bytes. That’s a bit of a problem, since I only have a bit less than 131072 bytes (128K) available.

I’m planning to compress the programs using a 6502-based LZW decompression routine. Compressed, the demo programs require only 124371 bytes, which should leave just enough space for the decompression routine, and a few last-minute odds and ends. I still need to work out the details of the decompressor, but I hope to have that wrapped up later this week.

Once that’s done, I still need to do one last pass through the BMOW schematics and documentation. Much of what’s posted online is out of date, and even what I’ve got here on my PC doesn’t reflect the true state of the hardware in some cases. I need to document it all before I forget everything, and post the updated docs back here for the curious. With that, I’ll be ready to call BMOW done. Maybe I’ll try to arrange a demo party for anyone in the San Francisco area who’s interested.

Lots of ideas have been swirling in my head for my Next Big Project, and I think it’s going to be pretty cool, but I’m forcing myself to hold off on it until BMOW is completed. I only have enough time and energy for one crazy electronics project at a time. BMOW’s almost at the finish line, though, and I’ll definitely be writing more about NBP here soon.

Read 6 comments and join the conversation 

« Newer Posts