• Please review our updated Terms and Rules here

Is there a way to have more than 2 colors in 640x200 mode on enhanced CGA adapters?

freakedenough

Experienced Member
Joined
Jul 30, 2016
Messages
94
Location
Vienna, AT
There are numerous computers like the Olivetti M24(SP)/AT&T PC 6300 and Compaq Portable III/386 which support a 640x400 mode with 2 colors (1bit) due to their enhanced CGA graphics cards having 32kb of memory.

I wonder if there is a way to also display 640x200 with 4 colors (2bits) instead of only the standard CGA 2 color (1bit) mode, as this would require 31.25kb of memory, which still fits into their 32kb.

Tandy and PCjr were able to according to http://www.pixelatedarcade.com/tech_attributes/overview/tandy-pcjr-graphics.

Now I wonder if this mode can also be accessed on my M24SP and P386.
 
The software would habe to program the crt controller chip directly. Or presumably a driver could be written. That sort of thing is setup by the firmware when the computer is initially powered up. A suite of video modes is created and is accessible by bios function calls, in assembler utilizing the int 10 instruction sequence. But it could be done in uber pure assembly language presumably.
 
I think the first "enhanced" CGA that did 320x200 @ 16 colors and 640x200 @ 4 colors was Plantronics Colorplus in 1982. Some later cards supported compatibility. ATI Small Wonder and Paradise EGA PEGA-1A. I have a manual for ATI Small Wonder and it has programming information for those modes.

Here someone has good information on Colorplus: https://www.seasip.info/VintagePC/plantronics.html
 
I wonder if there is a way to also display 640x200 with 4 colors (2bits) instead of only the standard CGA 2 color (1bit) mode, as this would require 31.25kb of memory, which still fits into their 32kb.

The memory is less than half the story. It really comes down to whether the M24's display circuitry can latch two bits into 4 colors while in a high-res mode. Since 640x200 is the same interlaced/banked memory structure as all CGA modes, that's another factor. Since the hardware doesn't resemble Tandy/PCjr, there is no software currently written that would be able to use such a mode anyway.

The answer lies in the technical specs of the system. You can research this by checking ftp://ftp.oldskool.org/pub/drivers/...livetti_M21_M24_Theory_of_Operation_Nov84.pdf starting on page 5-6, although pages 5-26/27 are targeted for this. A quick look shows that all 640- modes go through a different counter than the 320- modes, so I'm fairly sure this isn't possible.

Mode select register 2 bit 2 is for "alternate character set" -- that's news to me, I didn't think M24 supported two character sets! It requires an 8K character ROM instead of a 4K ROM installed on the display card, so it might be a custom hardware modification. If all M24s had an 8k rom with a second character set, I would think the customer diagnostics would have shown it in the display tests.
 
Looking at the manual for the machine has me wondering if it *might* be possible to convince it to do a 320x400x4 mode (not that such a thing would be immensely useful), but unless I'm missing something (a huge possibility) it reads to me like the way the pixel generation circuitry is set up the switch that puts you into the 400 line mode also locks it into black and white.

It makes intuitive sense that a 640x200x4 mode isn't possible with the hardware if you think about it this way: so far as I can tell the M24 monitor doesn't multisync, IE, it says on page 5-14 that when it's running in a 200 line mode it actually outputs each line twice. (IE, it double-scans.) That means that although both 640x200x4 and 640x400x2 would require 32k of RAM the four color mode would need twice the memory fill rate. The card might be physically capable of it because technically the 80 column text mode also needs twice the memory bandwidth as monochrome 80 column graphics (because each 8 pixel cell needs both a character and an attribute to be fetched), but if they didn't build a pixel output chain that can run "double-pumped" like that in the graphics mode then it's not happening.
 
I look at these kinds of challenges another way: If there is no audience, it's not worth my time. For example, making a demo that can show 1024 colors on stock CGA hardware that hundreds (if not thousands) of people can enjoy is worth the effort. A 640x200x4 mode that roughly 18 people in the world can enjoy is not, especially when there's no application for it.

The M24's strengths are 640x400 and 320x200 with two video pages. The 640x400 mode has the most useful characteristics, so if I were to put any effort towards supporting anything, it would be for that mode. Windows, Geoworks, Fractint, Lotus 123, Microsoft Word, Turbo Pascal, and PC Paintbrush (and other drawing programs) already support 640x400... but I can't think of anything that utilizes 320x200x4 with 2 video pages. Supporting the latter would mean finding a game that is already close to high performance but is held back by copying system RAM to video RAM, and trying to patch it so that it renders directly to the offscreen VRAM page and then toggles pages. There aren't many games that are very high performance that would see a real benefit from that; I can only think of a handful which would show noticeable speedup if patched in this way (Vaxine, Out Run, maybe Jet come to mind).

I would spend the time writing a Microsoft Flight Simulator 3.0 or 4.0 graphics driver to support 640x400 if I could find the tech info (on writing an MS4 graphics driver) on how to do that. I think that would be worthwhile for the sharper instrument panel, and show off one of the advantages the M24 was built for.
 
Back
Top