Daniel Balsom's GlyphBlaster Delivers Smooth Full-Screen Streaming Video — on an IBM PC

What started as a relatively jokey experiment may evolve into an OS-independent screen-reader to open up vintage computing's accessibility.

ghalfacree
42 minutes ago HW101 / Retro Tech

Daniel Balsom, vintage computing enthusiast and creator of the MartyPC IBM Personal Computer emulator, has created a device capable of injecting full-framerate video into the output of a Color Graphics Adapter (CGA) — delivering not only Bad Apple on an IBM PC, but a cat that can chase your cursor around the screen: the GlyphBlaster.

"There's a certain genre of retro-hardware hack that everyone recognizes is technically cheating, but has a certain audaciousness to it that merits respect regardless. I hope that this one falls into that category," Balsom writes of the project. "I recently used a One ROM to replace the font ROM on my CGA card, and subsequently I was able to replace IBM's classic 8×8 font with a custom one. The programmability of the One ROM intrigued me - especially its plugin system. My idea, in short, [was] to use the font ROM readout as a 1bpp, pixel-addressable framebuffer."

Smooth full-screen video on your IBM PC? It's more likely than you'd think, if you've got a GlyphBlaster. (📹: Daniel Balsom)

The One ROM project turns a Raspberry Pi RP2350 — the same microcontroller as powers the Raspberry Pi Pico 2 development board — into a universal read-only memory (ROM) emulator compatible with everything from eight-bit systems like the Commodore 64 and BBC Micro to the IBM PC family. When installed on a Raspberry Pi Pico 2, it also offers the potential for wireless connectivity.

It's this connectivity which sits at the heart of the GlyphBlaster project. Rather than simply use it to load new ROMs or switch between them, Balsom has turned it into a way to inject video — 912×262, including the parts that don't display on-screen — streamed over Wi-Fi. The result, after a prototype proved the concept via static images: smooth video at up to 60 frames per second, admittedly in black and white, being output via an IBM PC's CGA card.

Balsom has designed PCBs that play host to a Raspberry Pi Pico 2 board, but has not yet decided whether it will be launched as a commercial product. (📷: Daniel Balsom)

At 912×262×1bpp [Bit Per Pixel], each frame of uncompressed video is about 30kB," Balsom notes of the bandwidth required for streaming. "At Bad Apple's 25fps, this is 5.97Mbps, which is not an insignificant amount of data to send to a microcontroller. So I implemented a very simple RLE [Run-Length Encoding] scheme, which yielded an average 75% compression rate on our 10-scanline packets." Said compression system has now been extended with a content-aware version, delivering even higher compression ratios.

A "mid-air ROM socket" bodge, since optimized out in favor of ROM emulation adding a one-frame delay, delivered passthrough to the original font ROM, meaning that it becomes possible to display both the injected video and the CGA's original output — and even to interact. An initial proof-of-concept showed the possibility, displaying graphics with a transparent layer overlaid on the CGA's text-mode output. Mixed-mode screensavers, including a homage to the Commodore Amiga's famous bounce-ball, followed, then interaction: an animated cat, extracted from the Synapse Software game Alley Cat, which chases the user's cursor around the screen.

Passthrough or emulation to the original font ROM delivers mixed-mode interactive graphics, an impossibility for an unexpanded CGA card. (📹: Daniel Balsom)

"There are some intriguing possibilities besides being a novelty toy for your retro computer," Balsom notes. "If we tie in the address lines to the [Raspberry Pi] Pico, the Pico can read the contents of the text-mode screen [which] could make it a very useful, driver and OS [Operating System] independent screen-reading device. What started out as something I intended to be a weekend-long hack has turned into something that may actually have some value as a general Pico-powered add-on. I doubt it will become as essential as say, the PicoGUS, but we'll just have to see where it goes."

More information is available on Balsom's blog; "I've designed what is surely to be the first of several revisions of the GlyphBlaster's production PCB," he says, "although I don't know if I have any plans to sell this as a commercial product."

ghalfacree

Freelance journalist, technical author, hacker, tinkerer, erstwhile sysadmin. For hire: freelance@halfacree.co.uk.

Latest Articles