• Published on | Mar 04, 2014 | by Chris Osborn

CGA/RGBI to analog for the Commodore 128

This is part 1 in a series. Check out Part 2: Using KiCAD and Part 3: Milling the PCB.

When I got my Commodore 128 I was expecting I would just connect the RGBI TTL output to the GBS-8200 knockoff that I have been using with the BBC Micro’s RGB TTL output. Of course the moment I went to do that I realized that I had an extra pin for Intensity with no place to connect it.

I found several circuits online that were supposed to convert the 4 bit TTL output to an analog RGB signal and tried a couple. One was called the “pull both” and was garbage, it just washed out all the colors. There were also several circuits which simply used resistors to combine the RGB signals with the Intensity signal and drop the voltage down to analog levels.

These worked pretty well, but didn’t properly convert the dark yellow color to brown like CGA monitors do. A little more searching and I found another circuit that adds in a 74138 to create the brown fix. I modified the simple resistor circuit I had been using and added a 74138, and it works great.

Another issue with the CGA/RGBI signal is that it outputs separate horizontal and vertical sync. I hooked them up to the VGA converter but it didn’t work. I found out that the GBS-8200 and knockoffs only work with composite sync on signals that are below VGA frequencies. Mixing the horizontal and vertical signals with a capacitor doesn’t work. Instead I was able to XOR the two signals together with a 7486 which made the VGA converter happy.

Since I expect I’m going to be moving the CGA to analog adapter around a lot, it really needs to be made more permanent. I could probably use another protoboard, but I would really like to mount some nice DE9 and DA15 connectors to it, and the pins on those don’t fit the .1” (2.54mm) pin spacing that protoboards use. The only solution is to make my own PCB from scratch. Seems like a good project to finally learn how to mill a PCB on my CNC!

Continue to part 2

Join The Discussion