Snaaaaaake!


A few years ago I got a bunch of compact macs, mostly Plus' and 512ke's. When I got them, the plan was to distribute them to the community to people who wanted them. But first, I wanted to do something with them that actually benefitted from having lots of them. Initially I wrote a tool to broadcast input events (mouse movement, button, and keyboard) to all of them over localtalk. That was ok, but the same thing multiplied N times wasn't too interesting.

A friend suggested using them in a giant multiheaded game of Snake. It took a couple years, but here it is.

This is an SE/30 in an SE case, controlling via localtalk phonenet to 8 Mac Plus' and one 512ke. There's more 512ke's sitting around, but I'm short of DE9 phonenet dongles, so this is what we get.

Update: After adding mice and a growing tail, I couldn't bring myself to tear down the wall o' macs. So, it sat there and I thought about what it should do while I wasn't playing snake on it. So, I ended up modifying the Snake code on the macs to display 2 strings embedded in received appletalk ddp packets. Then a command line tool for posixy systems (with libpcap) to specify the strings and send the packets. This is the result:

Update 11/24/2014: Added more machines!

Most of the added machines are 512ke's. Unfortunately, I didn't have many DE9 phonenet adapters, but plenty of minidin8 phonenet ones. So I ended up getting some minidin8 female sockets and male DB9 connectors, and making some DE9 to minidin8 cables in order to get the 512ke's on the localtalk network.

Management:
Another problem was managing these machines. I could no longer reach to the back of the machines to plug in a mouse, and cabling was messy enough with just power and phonenet and adapter cables back there. To solve the management problem, I wrote an INIT that did 2 things. First, it allowed using the keyboard to move the mouse and press the mouse button. Since the keyboard port is on the front, it's much easier to move between machines. And if you have a spare cable, or a broken cable, breaking off the retention jack lets you quickly move a keyboard between machines. The second thing the INIT did, is listen on a DDP socket, and allow performing mouse movements, button clicks, and keyboard events over the network. Then a linux/osx command line tool that blats out the tool's arguments in a DDP packet. This way, the machines can be controlled from a shell script on a modern machine.

Power:
I was asked how much power this wall consumes, so I plugged the powerstrips controlling these things into a kill-a-watt. In the 5x3 configuration it consumes about 487W idle, and about 535W if all machines are accessing their floppy drives simultaneously.

Code:

All the mac archives come with both source and binaries supporting up to 21 machines.
snake.cpt.hqx The Snake game
walldisplay.cpt.hqx The 2 line display porgram
walldisplay.cpt.hqx The INIT for managing the machines
ddp.c Readme The linux/osx command line tool

Updated November 24 2014