I am doing this thread in case someone Googles the above problem, where I have found workarounds.
Back in October 1994, we had our first 486 PC, with a Trident 9000i, and a 14” colour monitor that has all analogue control knobs (I am sure some of you will remember them). In October 1997, the monitor failed, so we replaced it with a LG StudioWorks 44i that has partly digital controls with analogue contrast and brightness knobs.
When we first booted, we found out that DOS was in black and white! (Windows was still in colour.)
What was happening was that on the VGA port, the “new” monitor used DDC for “detailed” monitor ID, rather than simple open and closed pins for colour, mono, etc. The DDC signals can fool the Trident card, intermittently causing the card to boot up in either colour or mono. You can recognise this when the TRIDENT sign on message during POST is either colour or mono.
We went through the Trident TVGAUTIL utilities and found the SMONITOR.EXE utility. When you run SMONITOR C, this reconfigures the current boot session so that DOS is in colour again. Likewise, SMONITOR M is for mono. We therefore added SMONITOR C to AUTOEXEC.BAT.
The limitation of the SMONITOR utility is that some games and apps still thinks that the monitor is still mono when in fact everything is back to colour. I remember FastTracker II warning that it requires a colour monitor and thinks you are still using mono, PC Check being in grayscale because it thinks that you have a mono monitor, etc.
In the more recent years when I revisited vintage computing, with much more technical knowledge, I built a replica of our first 486 PC. My Trident 8900D is still sometimes fooled by modern colour monitors, thinking that they are mono.
One of the other solutions, provided that the VGA cable is detachable, is to use a VGA cable that has does not have the monitor ID / DCC pins connected. However, I have not tested this extensively.
Another solution would be to configure and install the TVGACRTC driver, where you can control the TVGA card and monitor parameters, such as the size, position, refresh rate, colour and mono monitor, etc. Games and apps then also correctly identify the type of monitor. However, this is installing a device driver in DOS via CONFIG.SYS.
Now that I have some assembly programming experience, the SMONITOR utility only updates the grayscale summing bit in the BIOS data area, bit 7 at 0040:0089h, but not the type of monitor connected. I tried changing many commonly documented monitor type bits, such as 0040:0087h, but these had no effect.
After doing lots of debugging and seeing what bytes have changed in the BIOS data area, which turned out to be 0040:008Ah too, I wrote my own utilities, where you can “properly” change the monitor type in the current boot session. This will not only cause DOS to be in colour again, games and apps will also correctly detect the colour monitor. Furthermore, it keeps whatever text is already on the screen, so if you have a Logitech mouse driver message that is in grayscale, it would turn into colour, then everything will be as though the monitor is colour in the first place.
Unfortunately, I did not document my source code when I wrote it in 2019, but in general, it updates the BIOS data area to colour or mono, and calls a number of INT 10 functions to switch video modes whilst keeping the text. These scripts are written for the DOS debug utility, and may work with other cards too.
COLOR.COM
A
MOV DX,40
PUSH DS
MOV DS,DX
MOV AX,WORD PTR [89]
AND AX,F9F9
OR AX,0200
MOV WORD PTR [89],AX
POP DS
MOV AH,03
INT 10
MOV AX,0083
INT 10
MOV AH,02
INT 10
MOV AX,4C00
INT 21
R CX
25
N COLOR.COM
W
G
Q
MONO.COM
A
MOV DX,40
PUSH DS
MOV DS,DX
MOV AX,WORD PTR [89]
AND AX,F9F9
OR AX,0406
MOV WORD PTR [89],AX
POP DS
MOV AH,03
INT 10
MOV AX,0087
INT 10
MOV AH,02
INT 10
MOV AX,4C00
INT 21
R CX
25
N MONO.COM
W
G
Q
I also attach the utilities, compiled with source in a .zip file.
Hope that this helps.
View attachment ColorMono.zip
Back in October 1994, we had our first 486 PC, with a Trident 9000i, and a 14” colour monitor that has all analogue control knobs (I am sure some of you will remember them). In October 1997, the monitor failed, so we replaced it with a LG StudioWorks 44i that has partly digital controls with analogue contrast and brightness knobs.
When we first booted, we found out that DOS was in black and white! (Windows was still in colour.)
What was happening was that on the VGA port, the “new” monitor used DDC for “detailed” monitor ID, rather than simple open and closed pins for colour, mono, etc. The DDC signals can fool the Trident card, intermittently causing the card to boot up in either colour or mono. You can recognise this when the TRIDENT sign on message during POST is either colour or mono.
We went through the Trident TVGAUTIL utilities and found the SMONITOR.EXE utility. When you run SMONITOR C, this reconfigures the current boot session so that DOS is in colour again. Likewise, SMONITOR M is for mono. We therefore added SMONITOR C to AUTOEXEC.BAT.
The limitation of the SMONITOR utility is that some games and apps still thinks that the monitor is still mono when in fact everything is back to colour. I remember FastTracker II warning that it requires a colour monitor and thinks you are still using mono, PC Check being in grayscale because it thinks that you have a mono monitor, etc.
In the more recent years when I revisited vintage computing, with much more technical knowledge, I built a replica of our first 486 PC. My Trident 8900D is still sometimes fooled by modern colour monitors, thinking that they are mono.
One of the other solutions, provided that the VGA cable is detachable, is to use a VGA cable that has does not have the monitor ID / DCC pins connected. However, I have not tested this extensively.
Another solution would be to configure and install the TVGACRTC driver, where you can control the TVGA card and monitor parameters, such as the size, position, refresh rate, colour and mono monitor, etc. Games and apps then also correctly identify the type of monitor. However, this is installing a device driver in DOS via CONFIG.SYS.
Now that I have some assembly programming experience, the SMONITOR utility only updates the grayscale summing bit in the BIOS data area, bit 7 at 0040:0089h, but not the type of monitor connected. I tried changing many commonly documented monitor type bits, such as 0040:0087h, but these had no effect.
After doing lots of debugging and seeing what bytes have changed in the BIOS data area, which turned out to be 0040:008Ah too, I wrote my own utilities, where you can “properly” change the monitor type in the current boot session. This will not only cause DOS to be in colour again, games and apps will also correctly detect the colour monitor. Furthermore, it keeps whatever text is already on the screen, so if you have a Logitech mouse driver message that is in grayscale, it would turn into colour, then everything will be as though the monitor is colour in the first place.
Unfortunately, I did not document my source code when I wrote it in 2019, but in general, it updates the BIOS data area to colour or mono, and calls a number of INT 10 functions to switch video modes whilst keeping the text. These scripts are written for the DOS debug utility, and may work with other cards too.
COLOR.COM
A
MOV DX,40
PUSH DS
MOV DS,DX
MOV AX,WORD PTR [89]
AND AX,F9F9
OR AX,0200
MOV WORD PTR [89],AX
POP DS
MOV AH,03
INT 10
MOV AX,0083
INT 10
MOV AH,02
INT 10
MOV AX,4C00
INT 21
R CX
25
N COLOR.COM
W
G
Q
MONO.COM
A
MOV DX,40
PUSH DS
MOV DS,DX
MOV AX,WORD PTR [89]
AND AX,F9F9
OR AX,0406
MOV WORD PTR [89],AX
POP DS
MOV AH,03
INT 10
MOV AX,0087
INT 10
MOV AH,02
INT 10
MOV AX,4C00
INT 21
R CX
25
N MONO.COM
W
G
Q
I also attach the utilities, compiled with source in a .zip file.
Hope that this helps.
View attachment ColorMono.zip