Hello. I already tried googling this for a pretty long time, but everyone and their mom only love to prefer talking about the original CGA systems instead, or modern clones I guess. Perhaps it's Google itself, since its got a tendency to ignore my keywords however it pleases lately.
Anyways, how CGA works on modern systems? Info seems sparse, I don't develop an OS nor know that much about PC's internals, whether it be internal registers, its address map(s) or however it deals with memory remapping, but I'm curious.
I know the approaches from the time: Through BIOS, through registers, and both.
Is VGA really a CGA superset, meaning it's still mostly hardware based? Or, do (compatible) UEFI/CSM systems happen to apply an emulation layer, effectively converting graphics on the fly for a more modern VGA display mode? I'd understand if that only worked for the BIOS approach, but according to the CGA compatibility tester, at least some registers appear to be implemented in this system!, if not all but those related to display timings. This is why I wonder whether it's hardware based or not, because I found conflicting info (unless it is actually possible to emulate the registers from software through memory remapping; I don't know the capabilities).
In fact, I noticed some games had a tendency to display with wrong colors + odd bugs on only some other computers; does that mean these only support the BIOS approach and ignore registers?
How CGA works on *MODERN* systems?
-
- Member
- Posts: 5721
- Joined: Mon Mar 25, 2013 7:01 pm
Re: How CGA works on *MODERN* systems?
Aside from legacy-free PCs, most PCs made in the past 35 years or so will support VGA. VGA is not CGA, but in many cases it's close enough.
VGA registers are not compatible with CGA. The registers responsible for display timing are similar (IBM probably reused that part of the CGA design for EGA and VGA), but software that expects register-level compatibility usually won't work with VGA.
VGA BIOS functions are compatible with CGA. Software that uses the BIOS expecting CGA will work with VGA.
The VGA memory map is compatible with CGA. Software that directly accesses the display memory expecting CGA will work with VGA, as long as the current video mode is one that mimics CGA.
Some SVGA hardware (closer to 35 years ago than today) offered register-level CGA compatibility. Some implementations were entirely in hardware, while others used NMI and special software to translate CGA register writes into VGA register writes.
CGA is old enough that you're better off using DOSBox or MAME or PCem or something like that. It'll be more convenient, and it's your only option on a legacy-free PC anyway. Plus, they can emulate a composite display, and many CGA games had graphics designed specifically for composite displays.
VGA registers are not compatible with CGA. The registers responsible for display timing are similar (IBM probably reused that part of the CGA design for EGA and VGA), but software that expects register-level compatibility usually won't work with VGA.
VGA BIOS functions are compatible with CGA. Software that uses the BIOS expecting CGA will work with VGA.
The VGA memory map is compatible with CGA. Software that directly accesses the display memory expecting CGA will work with VGA, as long as the current video mode is one that mimics CGA.
Some SVGA hardware (closer to 35 years ago than today) offered register-level CGA compatibility. Some implementations were entirely in hardware, while others used NMI and special software to translate CGA register writes into VGA register writes.
CGA is old enough that you're better off using DOSBox or MAME or PCem or something like that. It'll be more convenient, and it's your only option on a legacy-free PC anyway. Plus, they can emulate a composite display, and many CGA games had graphics designed specifically for composite displays.