Close

Revision 1 Board

A project log for VGA to DE-15 Macintosh CRT

An adapter to convert VGA (which uses separate horizontal and vertical sync) to Composite sync for use with a Macintosh monitor with a DE-15

nathan-kiesmanNathan Kiesman 04/28/2020 at 20:450 Comments

This project started where most bad things start - the MIT flea market. Someone was selling an Apple branded CRT and I naively thought that it would work with my Apple IIGS since it had the same connector. However, since this is a fixed frequency frequency monitor, it only works at certain refresh rates output by Macintoshes, not Apple IIs. However, a CRT is a CRT, and I like the looks of this one, so I set about repurposing it.

All analog video has some kind of synchronization signal which tells the electron beam (which sweeps top left to bottom right in lines) when to return to the left side of the screen to start a new line, and when to return to the top of the screen for a new frame. These are called vertical and horizontal sync. VGA uses separate lines for horizontal and vertical sync, whereas this and many other monitors before VGA, used one signal for both syncs, which is called composite sync. HDRetrovision has great info on csync available here, however this monitor is not interlaced, which makes it much easier, since double-pulses aren't necessary.

Most of the schematic is taken from ePanorama's VGA to RGBS converter. The RC circuits on the H and V lines are super clever way of making it compatible with both active-high and active-low signals. If the sync signal is active high, the capacitor is charged, one side of the XOR is always 1, and the gate acts as an inverter. If it's active low, the cap doesn't change, and the gate passes the signal without inverting it. Once the signals have been regulated, they get XORed together, meaning they're combined except when VSYNC is high, HSYNC is inverted, so the monitor can maintain horizontal sync. Then the signal is inverted to be active low again. I wasn't sure if the monitor used TTL or 1 volt sync, so I added a jumper to bypass the level shifting portion, but turns out that also inverts the signal, which is why pin 13 is different on the TTL and shifted versions.

Jumping right to getting a board made probably wasn't the best decision, but I had a copy of EAGLE and a mission, and one payment to OSHPark later, I had my boards in hand. They were assembled, an old Pentium 4 Dell Dimension with native VGA output had AntiX installed, and I got soldering. I got no output to the monitor, so I started probing the output with a scope and comparing it to my Apple IIGS, which doesn't output the right signal timings, but is close. Turns out the part for the output connector in EAGLE numbers pins left to right, and the apple documentation numbers them right to left 🤦♂️. After some creative soldering, and dremeling of bad traces, I got an out of sync picture on the monitor!

Before monitors were able to identify themselves, X11 used "modelines" to define display outputs. These are lists of numbers that define the exact timings of each part of the signal. However, most calculators for these assume you have a multisync monitor, and try to optimize the output, instead of directly calculating it. Finally, I found LRMC, which is designed for exactly this task, and which worked first time!

While fixing the pinout for the output, I discovered that I had made another error, and didn't connect one of the RC circuits to the sync signal. This caused the signal to be inverted, but since I had left out another inversion, the two mistakes cancelled out, and it worked! That was about two hours of troubleshooting😅

Discussions