Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add color scheme for EGA (the "16 color ANSI" palette) #16754

Closed
nahkampf opened this issue Feb 23, 2024 · 7 comments · Fixed by #16953
Closed

Add color scheme for EGA (the "16 color ANSI" palette) #16754

nahkampf opened this issue Feb 23, 2024 · 7 comments · Fixed by #16953
Labels
Area-Settings Issues related to settings and customizability, for console or terminal Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. Needs-Tag-Fix Doesn't match tag requirements Product-Terminal The new Windows Terminal.
Milestone

Comments

@nahkampf
Copy link

Description of the new feature/enhancement

The 16 color standard EGA palette used on PCs back in the day was a very defining look (and still in use today for the correct look of DOS CLI/TUI programs and ANSI art etc), and I think it should definitely be a default colorscheme that comes with Windows Terminal.

Proposed technical implementation details (optional)

Add a default color scheme (call it "EGA" or "ANSI" or "MS-DOS" or whatever):

{
    "background": "#000000",
    "black": "#000000",
    "blue": "#0000AA",
    "brightBlack": "#555555",
    "brightBlue": "#5555FF",
    "brightCyan": "#55FFFF",
    "brightGreen": "#55FF55",
    "brightPurple": "#FF55FF",
    "brightRed": "#FF5555",
    "brightWhite": "#FFFFFF",
    "brightYellow": "#FFFF55",
    "cursorColor": "#00AA00",
    "cyan": "#00AAAA",
    "foreground": "#AAAAAA",
    "green": "#00AA00",
    "name": "16 Color ANSI",
    "purple": "#AA00AA",
    "red": "#AA0000",
    "selectionBackground": "#FFFFFF",
    "white": "#AAAAAA",
    "yellow": "#AA5500"
}
@nahkampf nahkampf added the Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. label Feb 23, 2024
@microsoft-github-policy-service microsoft-github-policy-service bot added Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting Needs-Tag-Fix Doesn't match tag requirements labels Feb 23, 2024
@zadjii-msft
Copy link
Member

Vintage left, 16 Color ANSI right.

image

If anything, this falls under the same category as #6176 - blocked till #12800 lands

@carlos-zamora carlos-zamora added Area-Settings Issues related to settings and customizability, for console or terminal Product-Terminal The new Windows Terminal. and removed Needs-Triage It's a new issue that the core contributor team needs to triage at the next triage meeting Needs-Tag-Fix Doesn't match tag requirements labels Mar 6, 2024
@carlos-zamora carlos-zamora added this to the Backlog milestone Mar 6, 2024
@carlos-zamora

This comment was marked as off-topic.

@PhMajerus
Copy link

@zadjii-msft Note the dark yellow / brown colors.
You actually need both, because the original CGA adapter used a 4-bit digital (TTL) RGBI interface to the monitor.
IBM 5153 and other high-end monitors would handle dark yellow with a special circuit to reduce its green component and turn the nasty yellow into the pleasing brown.
Most old-style ANSI-art expect the brown, but the Windows console probably needed to be compatible with 16-colors graphics mode and use the dark yellow instead, so both variants have decades of real-world use.

@zadjii-msft
Copy link
Member

@PhMajerus would you have a specific proposal for different names for these schemes?

I think this page: https://int10h.org/blog/2022/06/ibm-5153-color-true-cga-palette/ is talking about the same effect you're describing. Based on the yellows, I'm thinking:

  • #AA5500 is "CGA"
  • #C47E00 is "IBM 5153"

@PhMajerus
Copy link

@zadjii-msft
I believe EGA and VGA used the brown instead of olive (dirty yellow) in their default palette to be CGA-compatible. Since those connect with analog connectors and did the color adjustment in the card itself, I consider that 16-colors palette to be the official one.
Remember CGA is originally an IBM product, designed for the 5153 monitor, only 3rd party cheaper monitors didn't change olive to brown, so I usually call the brown variant "CGA".
The olive variant only exists because of RGBI monitors that used the 4 digital lines of their connection literally without the brown trick, so I usually call that variant "RGBI".
Finally, Windows 3.x and 9x that had 16 colors mode, as well as the default palette for the console until recently used very saturated RGBI, so I usually differentiate that as "Windows legacy 16-colors".

image

@PhMajerus
Copy link

PhMajerus commented Mar 27, 2024

Oh, and here are the RGB values for each:

CGA

image

RGBI

image

Windows 16-colors

image

Note however that back in the pre-LCD days, we had a contrast dial on the monitor, so many people would set their monitor to have less contrast to make them easier on the eyes for hours of work.
It could be nice to add a contrast slider below the color scheme in profiles' appearance, to allow a similar experience without having to create several contrast variations of the same color scheme.

@PhMajerus
Copy link

PhMajerus commented Mar 27, 2024

The article you linked to is very interesting as well, and to me means using the "IBM 5153" name should be reserved for a the revised CGA palette that emulates IBM monitors specific circuitry. So your naming seems right to me.

I believe most ANSI-art will expect CGA to be the canonical CGA-compatible palette found in VGA, merely because real CGA was only used since 1981, and consumers got VGA starting in 1987, and used it with MS-DOS until Windows 95 took over and made everyone use conhost with the Windows legacy 16-colors. Windows 3.x 386-enhanced supported running DOS in a window as well, but most users would have experienced it in full-screen text mode until Windows 95.

github-merge-queue bot pushed a commit that referenced this issue Mar 28, 2024
As discussed in #6176 and #16754. 

The "CGA" and "IBM 5153" names I'm told are the right ones to use:
#16754 (comment)

Closes #6176 
Closes #16754
@microsoft-github-policy-service microsoft-github-policy-service bot added the Needs-Tag-Fix Doesn't match tag requirements label Mar 28, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-Settings Issues related to settings and customizability, for console or terminal Issue-Feature Complex enough to require an in depth planning process and actual budgeted, scheduled work. Needs-Tag-Fix Doesn't match tag requirements Product-Terminal The new Windows Terminal.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants