TCMD output invisible on Win10

May 20, 2008
9,274
62
Syracuse, NY, USA
For Tabs\Colors, I have all "Default. But output in TCMD is invisible (as if BLA on BLA). If I detach the console, the output is there (but in BRI WHI on BLA, not the usual and default WHI on BLA).

There is apparently a bug in Windows build 18298 wherein if you visit the console's properties and press OK (having done nothing) the app in the console will change from WHI on BLA to BLA on BLA and the corresponding HKCU\Console\...\ScreenColors will change from 0x7 to 0x0. I don't know if that's at play here; as I said the detached console has visible output (and I figure TCMD can scrape the console buffer even if the output is invisible).
 
May 20, 2008
9,274
62
Syracuse, NY, USA
TCMD uses the attribute in the console buffer to determine the screen colors.

But if you're using the Win 10 ANSI, all bets are off. I have seen black on black issues with ANSI in the last couple of Win 10 preview builds when ANSI is enabled.
I don't get it. Consoles are OK. TCMD can get and display the prompt and the command line. And apparently, the output is in the console screen buffer and visible (at least in the detached console) ... but TCMD can't get it! I'm not saying TCMD's at fault ... I just don't get it!
 
May 20, 2008
9,274
62
Syracuse, NY, USA
I'm getting more lost here! Does TCMD use ReadConsoleOutput()?

Once something makes it into the console screen buffer, ANSI (whoever's) has done its job and is out of the picture ... right?

While TCMD wasn't showing output I used an old plugin (which uses ReadConsoleOutput()) to get a snapshot of the (hidden) console, attributes and all. When I looked at the snapshot file with a hex editor, I could see that the attributes were correct. The output that TCMD wasn't showing all had attributes 0x07, WHI ON BLA. How can TCMD could fail to show it correctly?
 
May 20, 2008
9,274
62
Syracuse, NY, USA
Here's another look at it ... what I see in TCMD.
1545008041684.png
and what's in the screen buffer, including my bri gre on bla (0A) prompt, bri yel on bla (0E) command line, and the expected whi on bla (07) output.
1545008341684.png

Funny thing ... I can do this (same thing?) and see the output in TCMD
1545009100220.png
and the screen buffer looks the same!
1545009152192.png
 
May 20, 2008
9,274
62
Syracuse, NY, USA
I cannot reproduce this (and apparently nobody else is seeing it).
Well do you have any ideas? My consoles are OK. The text is there but TCMD is rendering it black on black. My default console colors are 0x00000007 (whi on bla). All TCCs use the defaults. TCMD is set to default foreground and background. The attribute words in the console screen buffer are correct.

1546664811340.png
 
May 20, 2008
9,274
62
Syracuse, NY, USA
It happens in TCC with or without TCMD's OPTION ANSI box checked. It happens in CMD when that box is checked. When that box is not set and CMD is started in a new tab it starts bad and then gets better.
1546707766117.png

It doesn't happen with no INI file but then TCC has no ANSI
1546708174036.png

I have these for TCC.
1546708585754.png
 

rconn

Administrator
Staff member
May 14, 2008
10,975
97
It happens in TCC with or without TCMD's OPTION ANSI box checked. It happens in CMD when that box is checked. When that box is not set and CMD is started in a new tab it starts bad and then gets better.
The ANSI option in TCMD does not do anything in the latest Windows 10 builds. ANSI in TCC (both TCMD tab windows and stand-alone console windows) is controlled solely by the ANSI option in TCC.
 
May 20, 2008
9,274
62
Syracuse, NY, USA
I guess it's not too different. With TCMD's ANSI unchecked, CMD started via Tab\Run ... after the bad prompt and foo echoed, I recalled the command (a no-show) and executed it again (also a no-show).

1546721944512.png

When that option is checked, CMD first prompt looks better but the no-show problem is there right from the get-go. Below, I typed "echo foo" and executed it; neither command nor output showed.

1546722283463.png
 

rconn

Administrator
Staff member
May 14, 2008
10,975
97
This is definitely a Windows 10 ANSI feature / bug, not TCMD. It only happens if you specify an ^e[0m (which you are doing at the end of your PROMPT). In that case, the Win 10 ANSI will write 0's to the console attribute memory. (Verified with ReadConsoleOutputAttributes.)

If you replace the ^e[0m with a sequence like ^e[37;40m, you'll see your text.

You'll have to ask Microsoft as to whether this comprises a feature.
 
May 20, 2008
9,274
62
Syracuse, NY, USA
This is definitely a Windows 10 ANSI feature / bug, not TCMD. It only happens if you specify an ^e[0m (which you are doing at the end of your PROMPT). In that case, the Win 10 ANSI will write 0's to the console attribute memory. (Verified with ReadConsoleOutputAttributes.)

If you replace the ^e[0m with a sequence like ^e[37;40m, you'll see your text.

You'll have to ask Microsoft as to whether this comprises a feature.
Yup, you're right. I now have output in TCMD. Hmmm! The ^e[0m works OK in consoles. IMHO it's the most fundamental of the "m" sequences. If that's a feature, I'd like to know how to capitalize on it.
 
May 20, 2008
9,274
62
Syracuse, NY, USA
If you replace the ^e[0m with a sequence like ^e[37;40m, you'll see your text.
I should have noticed this earlier. That works, but it fails to turn off the BRIGHT attribute in the console. If I use ^e[37;40;0m I'm back to the invisible text problem in TCMD.