Culture / Technology

Developer Ports Slack to a 1982-era Commodore 64

3 Dec 2016 9:17am, by

Slacking with a Commodore 64

Software engineer Jeff Harris liked Slack, calling it “simple and easier to deal with than emails.” But unfortunately, Slack just didn’t have a client for the Commodore 64. Possibly because the Commodore 64 was released in 1982, and only had 64KB of RAM.

But some people just can’t resist a challenge…

Last Sunday Harris wrote a blog post about his epic side project to make Slack’s “Team communication for the 21st century” more backward compatible with 1985.

“Old technology was reincarnated this year,” joked The Verge — one of several sites that ended up marveling at this work. Jeff’s project also attracted some attention from Gizmodo, which wrote that Harris just might be the only Slack user connecting from a Commodore 64, and suggested “Next time…make an Amiga version!”

And over in the U.K., even The Register ran a sardonically approving article about it, writing that developer Harris “has no explanation for why he thinks the world needs a Slack client for the Commodore 64 but built one anyway.” But there’s no arguing with his results. “Once everything’s running and plugged in — hey, presto! — grandad’s on Slack…”

So how’d he do it? There weren’t even any USB ports on the Commodore 64, although it did have an extension port — quaintly described as the “user port” which was originally designed for modems and printers. With an adapter, it can still connect to an RS-232 serial cable, and Harris ended up using “an artisanal, locally sourced, homemade cable with the UserPort connector on one end, and a USB TTL-RS-232 converter on the other.”

This enabled a handshake across generations, allowing him to connect his 1982 Commodore 64 to a modern-day Raspberry Pi. According to his web page, “The fastest I have been able to run this reliably is a solid 1200 baud/150 bytes per second.”

But he still had to write a chat client — so Harris coded one up in assembly language. Using the Commodore 64’s operating system, Harris’s home-grown program grabs data from the serial port and writes it our to the screen. And of course, it also writes data back to that serial port.

But that was just the beginning. On the Raspberry Pi, there was another home-grown app — written in Node.js using — to connect everything to the rest of the world. Using the Node.js package serialport, it collected data from the Commodore 64 using a USB-serial converter and then passed everything along to Slack’s messaging API. (And all the responses from Slack are converted into nothing but C64-compatible characters, to eliminate what one site described as “any PETSCII weirdness here” — PETSCII being the original character set used by Commodores, based on the 1963 version of ASCII.

He’s using a Commodore 64x — technically a modern-day replica of the classic ’80s computer — but judging from a video of his work, Jeff’s monitor appears to be a classic Vivitron 17 from Gateway 2000. It shows his homebrewed software in action, giving Slack a delightfully retro interface. Using the arrow keys, Harris scrolled through a list of channel names, each one highlighted in its turn, delivering into this ancient operating system real-time messaging from the 21st century.

Harris joked that he was motivated by that positive developer philosophy that “a pull request is better than a complaint.”

 Commodor 64x and Slack

In his video, he describes it as a “really fun project”

And at the bottom of his page, he’s even shared a link to his Github repository. “Want to do this yourself? Of course, you do. Why else are you still reading?” he wrote.

He includes a disclaimer that he’s not affiliated with Slack, adding “I’m not sure if they would be happy or horrified to see this creation.”

Although the project seems to be generating some good will, judging by a comment left on Hackaday. “I’ve never heard of Slack before and I doubt I will ever be using it. But seeing it work on the C64 makes me feel good.”


A digest of the week’s most important stories & analyses.

View / Add Comments