Brainstorm time:
Set an interrupt to the user port 6526 that would latch a new output value every VDC scanline. Or character row. Whatever.
Now take the Intensity line of the CGA output and used it to toggle the 8-bit value from the user port into a set of 8 resistors. You'd need a small circuit board for the TTL chip and resistors.
Every time the I bit is =0, you'd get the normal low-intensity color from the RGB mix. But when I=1, you'd get an intensity value from 0-255.
That's 8 colors x 256 = 2048 different colors. The 8 'low' colors would be common to each scanline, but the intensity could be any single value from the 256 intensity values for each scanline.
That's still only 16 colors at a time, but a palette for 2k colors for the screen.
Of course, the colors you end up with would be limited by your initial palette of 8, but...
You could ALSO do this with the R, G, and B values!
What you'd have would no longer be displayable on a CGA monitor. I'm not sure what kind of monitor you would need - VGA?
Fun idea, huh? Now I need you wizards to tell me why this won't work. :)
Sounds like too much work; there was an article in an old Run magazine or something that told how to add more colors using a software method. Not sure where you would find it now, though, but it is possible.
The big thing, I think, is that the timing on RGBI monitors is different from VGA, as well as the color signals. That's why you need a full-blown converter to hook them up to VGA monitors instead of just a simple color converter deal.
Yes, I think it would work, but you might as well go all the way. Feed the 4 signals (RGBI) directly into a BT481 RAMDAC (you would be using only 4 of the 8 input bits). Hook the RAMDAC up to the user port, or map it directly into the address space. You access the RAMDAC like regular ram to set the pallette colours. This will give you 16 colours from a palette of 16 million. If you want to expand to 256 colours you could feed the unused 4 input bits with a latch that is set on your interrupt on each scanline (or whatever ;-) ).
Steve