Feb 022014

Firefox on a Mac SEMac SE video driver

It is a truth, universally acknowledged, that an engineer in possession of an antique computer must be in want of hacking it. Last year I reverse engineered the Easter Egg photographs from a Mac SE that I found on the side of the road and that machine has been sitting idle since then, so I took inspiration from NYCR founder Dave Clausen’s six year old 24th anniversary Mac project and turned my old SE into a “30th anniversary Macintosh” with a new ARM motherboard running Linux. Unlike Dave, I was able to interface with the original 9″ CRT thanks to the programmable hardware in the Beaglebone Black.

Mac SE video pulses
The CRT was still in good shape and the m68k motherboard would startup (although we have no media or OS for it) so it was fairly easy to reverse engineer the pinout and waveforms for the combination power-supply and video connector. The all-in-one Macs shared a common power-supply for the monitor, analog board, motherboard and drives, so the same cable carries video, hsync, vsync, +5, -5, +12 and -12 Volts.

Mac SE video driver
With these timing measurements I was able to write a software video card that runs inside the BeagleBone Black’s PRU to display a user-space framebuffer, and then used Xvfb to render X11 into a shared memory buffer that could be exported to the PRU’s memory. Working with a bare CRT like this can be scary — the monitor is not even remotely multisync and vsync a few percent off from its desired 60.1 Hz refresh rate generates very bad buzzing sounds.

You can enjoy the dithered 1-bit cat videos above and relive the era with monochrome visuals for xeyes and other classic applications. If you want to build your own and see the specifics of the design, there are more details on my website, trmm.net/Mac-SE_video.

Mac SE with a BeagleBone Black motherboard
UPDATE 2014-02-09: Original ADB Keyboard and mouse support is now working. adb2usb source code for a Teensy 2.0.