Some Pleasing Experiments In 8-Bit Video Cards

These days, supply chain factors and high demand have made it incredibly difficult to lay one’s hands on a GPU. However, if you’re into older computers, you might find it hard to source old-school video cards too. Fear not, for [Dave’s Dev Lab] has been cooking up some experiments with a goal of eventually producing a new 8-bit ISA video card from scratch.

The long term goal is to recreate the original design of early IBM hardware, namely, the MDA and CGA video cards of decades past. The experiments center around the venerable Motorola 6845 which was widely used in computers in the 1980s. However, [Dave] intends to make them suitable for outputting to modern screens using typical VGA and DVI outputs, as well as those expected by modern TFT LCDs.

Thus far, [Dave] has achieved successful VGA output in a 40×35 text mode. With an 8×16 font, and the display running at 640×480 resolution at 60 Hz, everything hums along nicely. Similar experiments with a modern 480×272 LCD display have also worked well.

There’s a long way to go before [Dave’s] hardware is playing Commander Keen, but it’s great to see such effort being put into the platform. It could yet serve as a great upgrade for those wishing to use their vintage IBM metal without having to source a tired old CGA monitor.

We’ve seen similar work before too, with the Graphics Gremlin from [Tube Time] achieving a similar task. If you’ve been brewing up your own ISA hardware at home, do drop us a line.

13 thoughts on “Some Pleasing Experiments In 8-Bit Video Cards

  1. “… vintage IBM metal without having to source a tired old CGA monitor”

    Almost all modern TV sets can display CGA, since it’s timing is very close to NTSC. You just need RGB or YUV inputs and some simple analog circuitry.

    1. Nop… CGA is really not easy to convert to standard analog RGB.

      1) horizontal and vertical synchronization are separated, and lot a TV doesn’t like HV synchronization at 15kHz… so you need to convert it to composite synchronization.

      2) it’s RGBI signal, the Intensity signal change the color intensity from 2/3 to full scale for the main color component and from 0 to 1/3 for the secondary component. (Dark cyan is (r,g,b) = (0%, 66%, 66%), Ligth cyan is (r,g,b) = (33%, 100%, 100%))
      This is not that easy to do correctly. You can achieve something readable, but with color will be way off.

      3) The worst one: the yellow is not manage the same way. The dark one should be (r,g,b) = (66%, 66%, 0%), but it’s (66%, 33%, 0%) to give a brown color.

      1. Third-party CGA monitors didn’t implement the “brown” exception. That’s an IBM thing.

        Other than that brown, you’re just describing a 2-bit DAC. I is the lsbit, shared among all three channels. RGB is the msbit. It’s really not a challenge to generate something that’s the correct 0.7Vpp range.

        Converting separate H/V to a “proper” composite sync is a bit more of a challenge, it’s true. Personal experience has found that just averaging the two signals together often works anyway.

  2. ” I was able to get solid 40×35 text output from my 8-bit video board! I’m using a 8×16 font with the resolution of 640×480@60Hz and driving it with a pixel clock of 12.5875MHz, which is within the range of the clock speeds supported for the MC6845″

    The display might be in 640×480@60Hz mode, but the video card is only capable of 320 pixels per line at that clock rate – hence only 40 (8 pixel wide) characters per row instead of 80.

    Also 480/16 = 30 character rows, not 35. I assume the character are in fact only 8×8 in ROM and each pixel is 2 lines high.

    1. that was a typo on my part… i had been experimenting with a 8×13 font. 40×30 is the correct character resolution. you are also correct in that the horizontal pixels are driven twice so the effective horizontal resolution is 320. the character font i am using in rom is actually a 8×16 font. the vertical resolution is not halved like the horizontal, therefore i need a font with twice the size to make the font proportional.

  3. How about fixing one of the worst “features” of CGA? That would be the way IBM limited its 4 color 320×200 modes to three palletes with black background and three fixed colors (in high or low intensity) rather than allowing free selection of any 4 colors, in low or high intensity. Fix Mode 4 and Mode 5 to allow any combination of 4 colors.

    CGA games could have been soooo much better with that limitation eliminated. Most just defaulted to the cyan, magenta, white, black Mode 4. A few used the green, red, yellow, black Mode 4. A small number used the Mode 5 cyan, red, white, black. A few games used two or all three of those, for different parts of the game. IIRC the old Ghostbusters game used both Mode 4 palletes. (It looked so much better in EGA.) One of the Leisure Suit Larry games used Mode 5.

  4. Nice! Any chance on getting one w/ Tandy modes? I have an old Tandy 1000 that someone upgraded to VGA. That’s nice and all but it would be great to get it back to something more authentic.

Leave a Reply to That guyCancel reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.