From: Hermès Bélusca-Maïto Date: Fri, 17 Oct 2014 22:27:34 +0000 (+0000) Subject: [NTVDM]: simplify code and add a reference link concerning the CrtColorPaletteMask... X-Git-Tag: backups/tcpip_revolution@71025~440 X-Git-Url: https://git.reactos.org/?p=reactos.git;a=commitdiff_plain;h=fd8e3415c85f46ed105d0059fcdf23e072c83f0e;hp=60d3d2c399b7b4637d92afea70bf856f5e5f2f6a [NTVDM]: simplify code and add a reference link concerning the CrtColorPaletteMask mask. svn path=/trunk/; revision=64794 --- diff --git a/reactos/subsystems/ntvdm/bios/vidbios.c b/reactos/subsystems/ntvdm/bios/vidbios.c index 2ef6aa2b7f0..3948121b74c 100644 --- a/reactos/subsystems/ntvdm/bios/vidbios.c +++ b/reactos/subsystems/ntvdm/bios/vidbios.c @@ -2652,9 +2652,9 @@ VOID WINAPI VidBiosVideoService(LPWORD Stack) { #ifdef DOSBOX BYTE Index = getBL(); - BYTE CrtColorPaletteMask = Bda->CrtColorPaletteMask; - CrtColorPaletteMask = (CrtColorPaletteMask & 0xE0) | (Index & 0x1F); - Bda->CrtColorPaletteMask = CrtColorPaletteMask; + + /* See: http://www.bioscentral.com/misc/bda.htm */ + Bda->CrtColorPaletteMask = (Bda->CrtColorPaletteMask & 0xE0) | (Index & 0x1F); Index = ((Index << 1) & 0x10) | (Index & 0x7); @@ -2666,7 +2666,7 @@ VOID WINAPI VidBiosVideoService(LPWORD Stack) VgaSetSinglePaletteRegister(0x00, Index); - Index = (CrtColorPaletteMask & 0x10) | 0x02 | ((CrtColorPaletteMask & 0x20) >> 5); + Index = (Bda->CrtColorPaletteMask & 0x10) | 0x02 | ((Bda->CrtColorPaletteMask & 0x20) >> 5); VgaSetSinglePaletteRegister(0x01, Index); Index += 2; @@ -2687,14 +2687,15 @@ VOID WINAPI VidBiosVideoService(LPWORD Stack) case 0x01: /* Set Palette */ { BYTE Index = getBL(); - BYTE CrtColorPaletteMask = Bda->CrtColorPaletteMask; - CrtColorPaletteMask = (CrtColorPaletteMask & 0xDF) | ((Index & 1) ? 0x20 : 0x0); - Bda->CrtColorPaletteMask = CrtColorPaletteMask; + + /* See: http://www.bioscentral.com/misc/bda.htm */ + /* Reset bit 5: foreground colors index (0: green/red/yellow; 1: cyan/magenta/white) */ + Bda->CrtColorPaletteMask = (Bda->CrtColorPaletteMask & 0xDF) | ((Index & 1) ? 0x20 : 0x00); /* Don't set any extra colors when in text mode */ if (Bda->VideoMode <= 3) break; - Index = (CrtColorPaletteMask & 0x10) | 0x02 | Index; + Index = (Bda->CrtColorPaletteMask & 0x10) | 0x02 | Index; VgaSetSinglePaletteRegister(0x01, Index); Index += 2;