Five monitors on a Commodore 128 [video]

Hacker News Top Tools

Summary

A retrocomputing experiment driving five independent monitors from a Commodore 128 by splitting RGBI signals with a custom circuit board, along with similar tests on IBM CGA/EGA systems.

No content available
Original Article
View Cached Full Text

Cached at: 06/23/26, 04:46 PM

TL;DR: A player used the RGBI signal and VIC-II output of a Commodore 128, along with a custom split circuit board, to drive five monitors each displaying independent images, and also attempted a similar application with an EGA graphics card. ## Introduction: Independent Images on Five Monitors Today we’re showcasing a special experiment: a completely unmodified Commodore 128, connected only to an SD-to-IEC floppy drive, video output, 80-column output, and power, simultaneously driving five monitors. More importantly, these five monitors can display completely different images—from static slides to scrolling animated text—all controlled independently by this original C128. ## How It Works: Decomposing the RGBI Signal The standard RGBI output includes red, green, blue signal lines and one intensity bit (I). Through resistor combinations, different gray levels can be formed, and then mixed with the sync signal to create NTSC composite video. But this only drives one monitor. My idea was to connect each signal line to its own monitor, sharing the same sync signal. My friend Joe Burks designed and built this small circuit board for this purpose: it connects to the RGBI video signal and outputs four independent composite signals, each corresponding to one color bit. When representing the C128’s 16 colors in binary, each bit represents a signal line, so the four bits drive four monitors, and the last (fifth) monitor is driven by the standard VIC-II video output. This achieves a total of five independent monitors. ## Demo Content: Static and Dynamic Images I wrote a small slideshow and drawing program. All drawings were hand-drawn by me—quality is average but functionality is verified. Then I wrote another program that scrolls text information over a high-resolution graphics display, while updating all five monitors simultaneously. If you observe the raw RGBI output on an emulator or color monitor, you’d see a “combined” color image. My program allows switching the fifth monitor to any image for editing; otherwise, editing the other four monitors in the emulator would be very difficult. ## Startup Modes and Color Traps When booting in 40-column display mode, the fifth monitor shows normally while the other four are black. In 80-column mode, three monitors show an image but the fourth is black. The reason was unexpected: I always thought the C128 startup text was white, but it’s actually light cyan, which doesn't use the red signal at all (corresponding to that monitor). After changing the text to red, that monitor immediately displayed text. ## Limitations of the Commodore 128 A key limitation is the inability to control the color of each individual pixel on the screen—you can only manipulate color cells (80×25). While you can display at the pixel level (like the scroll bar at the bottom), all pixels have the same color (white) and appear on all four RGBI monitors. To precisely control whether to use RGB or I output for each pixel, you must rely on color cells, with a resolution of 80×25. The fifth monitor must use four block characters combined to emulate the 80-column block characters on the other four screens. #### Attempting to Enhance the VDC By modifying VDC registers, it’s theoretically possible to reduce text character height, even down to a single pixel. I set the height to 4 pixels, doubling the resolution. It worked perfectly in the emulator, but the image was severely distorted on real hardware. Investigation suggests early versions of the C128’s VDC chip have a defect, while newer chips in later models like the 128DCR might be fine. The DCR model has more video RAM and theoretically can create 160×200 resolution modes with arbitrary color per pixel, but I no longer have that model. ## Extending to IBM CGA/EGA This setup could theoretically also work with an IBM CGA. CGA in text mode can only output 16 colors, with similar results. But EGA graphics are more interesting. While 350-line mode isn’t feasible (NTSC monitors can’t sync), 320×200 or 640×200 modes are possible. I’m particularly interested in 640×200 mode. ### Running EGA on a 386 I borrowed a 386 from my friend Oliver, equipped with a Trident EGA graphics card. After setting the DIP switches on the card correctly, I booted and saw different parts of the BIOS screen appearing on different monitors based on color—for instance, the white boot text is actually light gray, so the monitor corresponding to the intensity bit was initially black. After entering CMOS to enable the hard drive, I ran a slideshow where each monitor displayed an independent 640×200 two-color image. Due to the blurriness of the TV, dithering patterns almost looked like grayscale. ### Image Creation Workflow Take Tony Stark’s photo as an example: first adjust to 4:3 aspect ratio (836×628), then scale to 640×200 (looks distorted in drawing software but correct on the target system). Make a copy and convert to two colors (black/white) using weighted and unweighted methods, pick the better result. Before previewing, double the vertical size to restore proportions, then increase color depth and add slight blur to simulate the TV effect. ## Combining Multiple Images and Issues Encountered Four independent black-and-white images need to be combined into one 16-color image. PaintShop Pro can save as raw data (8 bits per pixel, 0 or 1). I wrote a Python script to combine each byte from the four files bitwise into one byte (each bit corresponds to one image), outputting a combined raw image. Open it in PaintShop Pro (specify dimensions manually), load a special palette (keep indexes unchanged), then reduce to 16 colors, resulting in a 16-color file containing four separate images. ### Drivers and Software Bugs - Among the borrowed EGA cards, one was defective. Most cards, when configured for CGA monitor mode, couldn’t enter high-color EGA modes (though this limitation seems unreasonable), and only the Trident card worked correctly. - I used C-Show (Compushow) to view images. It accurately selects video modes, but had a bug: the two shades of gray (light and dark) in the image couldn’t be separated correctly—one appeared as white. After hours of debugging, I confirmed it was a C-Show issue. - Switching to Deluxe Paint Gallery fixed the gray separation, and I finally succeeded in demonstrating on real hardware. ## Monitor Calibration and Challenges I originally wanted all five monitors to be identical. I already had three Samsung TVs, bought a fourth on eBay, and Adrian Black sent a fifth from Portland. One had a broken speaker but was unused. I adjusted the deflection yoke (image tilt) and flyback transformer (brightness consistency). I spent a lot of time in the service menu matching colors; eventually four were close, but one always looked bluish on camera no matter how I adjusted it. To the naked eye it matched the others, leading me to suspect that CRT’s spectral output (especially in UV or IR ranges) differs from the others, but this is unverified. ## Future Ideas This experiment could take the concept to the next level, but due to hardware and time constraints, the video didn’t fully explore it. I may try other systems or higher resolution modes in the future. Source: [Five monitors on a Commodore 128 [video]](https://www.youtube.com/watch?v=ul5hC3PY1Yg)

Similar Articles

C64 Demo Effects Explained: Rodents In The Attic

Lobsters Hottest

A technical breakdown of a Commodore 64 demo that places colorful sprites in the border area using border-opening tricks, the VIC chip ghost byte glitch, and precise raster-time coding.

Monitors for Work

Hacker News Top

A blog post discussing corporate monitor standards, portable monitors as cheap supplements, and the productivity benefits of larger or additional displays.

Two computers, one monitor, zero fiddling (2025)

Hacker News Top

A guide detailing how to use a monitor with built-in KVM functionality and DDC commands (via m1ddc on macOS) to switch between a Mac laptop and Linux desktop with a single keyboard, mouse, and monitor, eliminating the need for manual cable swapping.