24th Anniversary Macintosh

This is a Macintosh 512k which I
upgraded to run OS X by replacing the innards with a modern Mac Mini and
various supporting components, including a grayscale CRT monitor, an LS-120
floppy disk drive, and a microcontroller-based USB device that
interfaces the Mini to the original keyboard and mouse. Why?
Mainly because I wanted to experiment with creating a custom
USB device. Also I guess I wanted to waste hundreds of dollars and countless hours building a
semi-useless computer with a 9 inch black and white screen and no arrow keys.

Note that this project involves dangerous high voltage electronics.
If you decide to take apart your computer or monitor, and you touch the wrong
thing at the wrong time, you could be killed. This can happen even after
you've disconnected the power, as the CRT and capacitors on the circuit board
may hold a
significant charge for hours or even days after being unplugged. So don't mess around
with this stuff unless you know what you're doing.

The exterior of the case is essentially unchanged by the modification.
The keyboard and mouse are 100% original, inside and out. The keyboard,
mouse, and floppy drive all work, as do the front brightness control knob and
the rear power switch. The connectors on the rear have retained their original
appearance, although some have had their function changed. The mouse port is still a
mouse port. The floppy port is present but nonfunctional. The printer
port is used for Ethernet, via a small dongle that has a DB-9 connector on
one end and a RJ45 jack on the other. The modem port is used for USB and
FireWire, via two cables I made with a DB-9 connector on one end
and a USB or FireWire connector on the other. The audio port can be used
for either audio-in or audio-out.

The most interesting part of the project for me was the circuit
that allows the old original keyboard and mouse to be used with the Mini. It is
based on an Atmel AT90USB162 microcontroller, which is basically a
standard AVR µC with a special coprocessor dedicated to USB
signaling. It comes with a C library that makes it relatively easy to
create USB devices like HID keyboards and mice, speakers, storage
devices, etc. My device advertises itself as a generic HID
keyboard/mouse combo, and the Mini recognizes it as such, with no special
drivers or configuration necessary.
The code for interfacing with the keyboard and mouse is based on a discussion
of the original hardware and protocols in the
Macintosh Family Hardware Reference,
an out of print technical manual for the early Macs. The mouse is a
simple 2-axis optical quadrature encoder. The keyboard uses a custom 2-wire
bidirectional serial interface.
Here is the sourcecode for the AVR. My code is covered
by a BSD license. Atmel has its own license on the library, which can be
downloaded
here.
I etched the board at home using the
Staples photo paper + laser printer + clothes iron + ferric chloride technique,
which works amazingly well.

Here is a (boring) video showing startup, floppy use, firewire hard drive use,
and playing a random video on youtube.

If you're into this kind of thing and you live in the New York City area,
check out NYC Resistor, our local
maker/hacker club.

Update: A number of blogs and forums have linked here. Thanks for all the (mostly) positive comments!
Here are the backlinks in case you want to
see what others are saying, and/or you want to post your own comment or question for
others to see: