mirror of
https://github.com/reactos/reactos.git
synced 2025-08-06 14:23:18 +00:00
[NTVDM]
Implement INT 10h, AH=0Bh function 01 (Set Palette) (for CGA modes), and half-plement INT 10h, AH=0Bh function 00 (Set Background/border color), adapted from DosBox. The code needs a bit of cleaning. Needed for a certain Pacman game :) CORE-8436 #resolve #comment Fixed ;) svn path=/trunk/; revision=64235
This commit is contained in:
parent
a57c34c75c
commit
8b5bf28313
1 changed files with 161 additions and 32 deletions
|
@ -264,7 +264,7 @@ static PVGA_REGISTERS VideoModes[BIOS_MAX_VIDEO_MODE + 1] =
|
||||||
&VideoMode_80x25_text, /* Mode 02h */ // 16 color (mono)
|
&VideoMode_80x25_text, /* Mode 02h */ // 16 color (mono)
|
||||||
&VideoMode_80x25_text, /* Mode 03h */ // 16 color
|
&VideoMode_80x25_text, /* Mode 03h */ // 16 color
|
||||||
&VideoMode_320x200_4color, /* Mode 04h */ // CGA 4 color
|
&VideoMode_320x200_4color, /* Mode 04h */ // CGA 4 color
|
||||||
&VideoMode_320x200_4color, /* Mode 05h */ // CGA same (m)
|
&VideoMode_320x200_4color, /* Mode 05h */ // CGA same (m) (uses 3rd CGA palette)
|
||||||
&VideoMode_640x200_2color, /* Mode 06h */ // CGA 640*200 2 color
|
&VideoMode_640x200_2color, /* Mode 06h */ // CGA 640*200 2 color
|
||||||
NULL, /* Mode 07h */ // MDA monochrome text 80*25
|
NULL, /* Mode 07h */ // MDA monochrome text 80*25
|
||||||
NULL, /* Mode 08h */ // PCjr
|
NULL, /* Mode 08h */ // PCjr
|
||||||
|
@ -369,6 +369,8 @@ static CONST COLORREF mtext_s3_palette[64] =
|
||||||
RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xFF, 0xFF)
|
RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xFF, 0xFF), RGB(0xFF, 0xFF, 0xFF)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
|
||||||
// Unused at the moment
|
// Unused at the moment
|
||||||
static CONST COLORREF CgaPalette[16] =
|
static CONST COLORREF CgaPalette[16] =
|
||||||
{
|
{
|
||||||
|
@ -378,28 +380,69 @@ static CONST COLORREF CgaPalette[16] =
|
||||||
RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF)
|
RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF)
|
||||||
};
|
};
|
||||||
|
|
||||||
// Unused at the moment
|
/* CGA palette 1 */
|
||||||
|
static CONST BYTE CgaPalette1[] =
|
||||||
|
{
|
||||||
|
0x00, /* 0 - Black */
|
||||||
|
0x03, /* 1 - Cyan */
|
||||||
|
0x05, /* 2- Magenta */
|
||||||
|
0x07, /* 3 - White */
|
||||||
|
}
|
||||||
|
|
||||||
|
/* CGA palette 1 bright */
|
||||||
|
static CONST BYTE CgaPalette1i[] =
|
||||||
|
{
|
||||||
|
0x00, /* 0 - Black */
|
||||||
|
0x13, /* 1 - Light cyan */
|
||||||
|
0x15, /* 2 - Light magenta */
|
||||||
|
0x17, /* 3 - Bright White */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* CGA palette 2 */
|
||||||
|
static CONST BYTE CgaPalette2[] =
|
||||||
|
{
|
||||||
|
0x00, /* 0 - Black */
|
||||||
|
0x02, /* 1 - Green */
|
||||||
|
0x04, /* 2 - Red */
|
||||||
|
0x06, /* 3 - Brown */
|
||||||
|
};
|
||||||
|
|
||||||
|
/* CGA palette 2 bright */
|
||||||
|
static CONST BYTE CgaPalette2i[] =
|
||||||
|
{
|
||||||
|
0x00, /* 0 - Black */
|
||||||
|
0x12, /* 1 - Light green */
|
||||||
|
0x14, /* 2 - Light red */
|
||||||
|
0x16, /* 3 - Yellow */
|
||||||
|
};
|
||||||
|
|
||||||
|
// Unused at the moment; same palette as EgaPalette__16Colors
|
||||||
static CONST COLORREF CgaPalette2[VGA_MAX_COLORS / 4] =
|
static CONST COLORREF CgaPalette2[VGA_MAX_COLORS / 4] =
|
||||||
{
|
{
|
||||||
RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA),
|
RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA),
|
||||||
RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA),
|
RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA),
|
||||||
RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA),
|
RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA),
|
||||||
RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA),
|
RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA),
|
||||||
|
|
||||||
RGB(0x55, 0x55, 0x55), RGB(0x55, 0x55, 0xFF), RGB(0x55, 0xFF, 0x55), RGB(0x55, 0xFF, 0xFF),
|
RGB(0x55, 0x55, 0x55), RGB(0x55, 0x55, 0xFF), RGB(0x55, 0xFF, 0x55), RGB(0x55, 0xFF, 0xFF),
|
||||||
RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF),
|
RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF),
|
||||||
RGB(0x55, 0x55, 0x55), RGB(0x55, 0x55, 0xFF), RGB(0x55, 0xFF, 0x55), RGB(0x55, 0xFF, 0xFF),
|
RGB(0x55, 0x55, 0x55), RGB(0x55, 0x55, 0xFF), RGB(0x55, 0xFF, 0x55), RGB(0x55, 0xFF, 0xFF),
|
||||||
RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF),
|
RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF),
|
||||||
|
|
||||||
RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA),
|
RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA),
|
||||||
RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA),
|
RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA),
|
||||||
RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA),
|
RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA),
|
||||||
RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA),
|
RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA),
|
||||||
|
|
||||||
RGB(0x55, 0x55, 0x55), RGB(0x55, 0x55, 0xFF), RGB(0x55, 0xFF, 0x55), RGB(0x55, 0xFF, 0xFF),
|
RGB(0x55, 0x55, 0x55), RGB(0x55, 0x55, 0xFF), RGB(0x55, 0xFF, 0x55), RGB(0x55, 0xFF, 0xFF),
|
||||||
RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF),
|
RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF),
|
||||||
RGB(0x55, 0x55, 0x55), RGB(0x55, 0x55, 0xFF), RGB(0x55, 0xFF, 0x55), RGB(0x55, 0xFF, 0xFF),
|
RGB(0x55, 0x55, 0x55), RGB(0x55, 0x55, 0xFF), RGB(0x55, 0xFF, 0x55), RGB(0x55, 0xFF, 0xFF),
|
||||||
RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF)
|
RGB(0xFF, 0x55, 0x55), RGB(0xFF, 0x55, 0xFF), RGB(0xFF, 0xFF, 0x55), RGB(0xFF, 0xFF, 0xFF)
|
||||||
};
|
};
|
||||||
|
|
||||||
static CONST COLORREF EgaPalette___16ColorFixed_DOSBox[VGA_MAX_COLORS / 4] =
|
#endif
|
||||||
|
|
||||||
|
static CONST COLORREF EgaPalette__16Colors[VGA_MAX_COLORS / 4] =
|
||||||
{
|
{
|
||||||
RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA),
|
RGB(0x00, 0x00, 0x00), RGB(0x00, 0x00, 0xAA), RGB(0x00, 0xAA, 0x00), RGB(0x00, 0xAA, 0xAA),
|
||||||
RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA),
|
RGB(0xAA, 0x00, 0x00), RGB(0xAA, 0x00, 0xAA), RGB(0xAA, 0x55, 0x00), RGB(0xAA, 0xAA, 0xAA),
|
||||||
|
@ -740,6 +783,16 @@ Done:
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static __inline VOID VgaSetSinglePaletteRegister(BYTE Index, BYTE Value)
|
||||||
|
{
|
||||||
|
/* Write the index */
|
||||||
|
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
||||||
|
IOWriteB(VGA_AC_INDEX, Index);
|
||||||
|
|
||||||
|
/* Write the data */
|
||||||
|
IOWriteB(VGA_AC_WRITE, Value);
|
||||||
|
}
|
||||||
|
|
||||||
static BOOLEAN VgaSetRegisters(PVGA_REGISTERS Registers)
|
static BOOLEAN VgaSetRegisters(PVGA_REGISTERS Registers)
|
||||||
{
|
{
|
||||||
INT i;
|
INT i;
|
||||||
|
@ -803,9 +856,7 @@ static BOOLEAN VgaSetRegisters(PVGA_REGISTERS Registers)
|
||||||
// DbgPrint("\n");
|
// DbgPrint("\n");
|
||||||
for (i = 0; i < VGA_AC_MAX_REG; i++)
|
for (i = 0; i < VGA_AC_MAX_REG; i++)
|
||||||
{
|
{
|
||||||
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
VgaSetSinglePaletteRegister(i, Registers->Attribute[i]);
|
||||||
IOWriteB(VGA_AC_INDEX, i);
|
|
||||||
IOWriteB(VGA_AC_WRITE, Registers->Attribute[i]);
|
|
||||||
// DbgPrint("Registers->Attribute[%d] = %d\n", i, Registers->Attribute[i]);
|
// DbgPrint("Registers->Attribute[%d] = %d\n", i, Registers->Attribute[i]);
|
||||||
}
|
}
|
||||||
// DbgPrint("\n");
|
// DbgPrint("\n");
|
||||||
|
@ -864,17 +915,28 @@ static VOID VgaChangePalette(BYTE ModeNumber)
|
||||||
Palette = VgaPalette;
|
Palette = VgaPalette;
|
||||||
Size = sizeof(VgaPalette)/sizeof(VgaPalette[0]);
|
Size = sizeof(VgaPalette)/sizeof(VgaPalette[0]);
|
||||||
}
|
}
|
||||||
else if (ModeNumber == 0x10)
|
else if (ModeNumber == 0x10) // || (ModeNumber == 0x0D) || (ModeNumber == 0x0E)
|
||||||
{
|
{
|
||||||
/* EGA HiRes mode */
|
/* EGA HiRes mode */
|
||||||
Palette = EgaPalette__HiRes;
|
Palette = EgaPalette__HiRes;
|
||||||
Size = sizeof(EgaPalette__HiRes)/sizeof(EgaPalette__HiRes[0]);
|
Size = sizeof(EgaPalette__HiRes)/sizeof(EgaPalette__HiRes[0]);
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
|
else if ((ModeNumber == 0x04) || (ModeNumber == 0x05))
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* CGA modes; this palette contains both normal and
|
||||||
|
* bright versions of CGA palettes 0 and 1
|
||||||
|
*/
|
||||||
|
Palette = CgaPalette2;
|
||||||
|
Size = sizeof(CgaPalette2)/sizeof(CgaPalette2[0]);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
else // if ((ModeNumber == 0x0D) || (ModeNumber == 0x0E))
|
else // if ((ModeNumber == 0x0D) || (ModeNumber == 0x0E))
|
||||||
{
|
{
|
||||||
/* EGA modes */
|
/* EGA modes */
|
||||||
Palette = EgaPalette___16ColorFixed_DOSBox;
|
Palette = EgaPalette__16Colors;
|
||||||
Size = sizeof(EgaPalette___16ColorFixed_DOSBox)/sizeof(EgaPalette___16ColorFixed_DOSBox[0]);
|
Size = sizeof(EgaPalette__16Colors)/sizeof(EgaPalette__16Colors[0]);
|
||||||
}
|
}
|
||||||
|
|
||||||
VgaSetPalette(Palette, Size);
|
VgaSetPalette(Palette, Size);
|
||||||
|
@ -1271,6 +1333,87 @@ VOID WINAPI VidBiosVideoService(LPWORD Stack)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Set Video Colors */
|
||||||
|
case 0x0B:
|
||||||
|
{
|
||||||
|
if (Bda->VideoMode < 4 || Bda->VideoMode > 6)
|
||||||
|
{
|
||||||
|
DPRINT1("BIOS Function INT 10h, AH = 0Bh, BH = 0x%02X is unsupported for non-CGA modes\n",
|
||||||
|
getAH(), getBH());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch (getBH())
|
||||||
|
{
|
||||||
|
case 0x00: /* Set Background/Border Color */
|
||||||
|
{
|
||||||
|
#ifdef DOSBOX
|
||||||
|
BYTE Index = getBL();
|
||||||
|
BYTE CrtColorPaletteMask = Bda->CrtColorPaletteMask;
|
||||||
|
CrtColorPaletteMask = (CrtColorPaletteMask & 0xE0) | (Index & 0x1F);
|
||||||
|
Bda->CrtColorPaletteMask = CrtColorPaletteMask;
|
||||||
|
|
||||||
|
Index = ((Index << 1) & 0x10) | (Index & 0x7);
|
||||||
|
|
||||||
|
/* Always set the overscan color */
|
||||||
|
VgaSetSinglePaletteRegister(VGA_AC_OVERSCAN_REG, Index);
|
||||||
|
|
||||||
|
/* Don't set any extra colors when in text mode */
|
||||||
|
if (Bda->VideoMode <= 3) break;
|
||||||
|
|
||||||
|
VgaSetSinglePaletteRegister(0x00, Index);
|
||||||
|
|
||||||
|
Index = (CrtColorPaletteMask & 0x10) | 0x02 | ((CrtColorPaletteMask & 0x20) >> 5);
|
||||||
|
|
||||||
|
VgaSetSinglePaletteRegister(0x01, Index);
|
||||||
|
Index += 2;
|
||||||
|
VgaSetSinglePaletteRegister(0x02, Index);
|
||||||
|
Index += 2;
|
||||||
|
VgaSetSinglePaletteRegister(0x03, Index);
|
||||||
|
#else
|
||||||
|
/* Background/Border Color is modifiable via the first index */
|
||||||
|
VgaSetSinglePaletteRegister(0x00, getBL());
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Enable screen and disable palette access */
|
||||||
|
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
||||||
|
IOWriteB(VGA_AC_INDEX, 0x20);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case 0x01: /* Set Palette */
|
||||||
|
{
|
||||||
|
BYTE Index = getBL();
|
||||||
|
BYTE CrtColorPaletteMask = Bda->CrtColorPaletteMask;
|
||||||
|
CrtColorPaletteMask = (CrtColorPaletteMask & 0xDF) | ((Index & 1) ? 0x20 : 0x0);
|
||||||
|
Bda->CrtColorPaletteMask = CrtColorPaletteMask;
|
||||||
|
|
||||||
|
/* Don't set any extra colors when in text mode */
|
||||||
|
if (Bda->VideoMode <= 3) break;
|
||||||
|
|
||||||
|
Index = (CrtColorPaletteMask & 0x10) | 0x02 | Index;
|
||||||
|
|
||||||
|
VgaSetSinglePaletteRegister(0x01, Index);
|
||||||
|
Index += 2;
|
||||||
|
VgaSetSinglePaletteRegister(0x02, Index);
|
||||||
|
Index += 2;
|
||||||
|
VgaSetSinglePaletteRegister(0x03, Index);
|
||||||
|
|
||||||
|
/* Enable screen and disable palette access */
|
||||||
|
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
||||||
|
IOWriteB(VGA_AC_INDEX, 0x20);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
DPRINT1("BIOS Function INT 10h, AH = 0Bh, BH = 0x%02X NOT IMPLEMENTED\n",
|
||||||
|
getAH(), getBH());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* Teletype Output */
|
/* Teletype Output */
|
||||||
case 0x0E:
|
case 0x0E:
|
||||||
{
|
{
|
||||||
|
@ -1294,12 +1437,7 @@ VOID WINAPI VidBiosVideoService(LPWORD Stack)
|
||||||
/* Set Single Palette Register */
|
/* Set Single Palette Register */
|
||||||
case 0x00:
|
case 0x00:
|
||||||
{
|
{
|
||||||
/* Write the index */
|
VgaSetSinglePaletteRegister(getBL(), getBH());
|
||||||
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
|
||||||
IOWriteB(VGA_AC_INDEX, getBL());
|
|
||||||
|
|
||||||
/* Write the data */
|
|
||||||
IOWriteB(VGA_AC_WRITE, getBH());
|
|
||||||
|
|
||||||
/* Enable screen and disable palette access */
|
/* Enable screen and disable palette access */
|
||||||
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
||||||
|
@ -1310,12 +1448,7 @@ VOID WINAPI VidBiosVideoService(LPWORD Stack)
|
||||||
/* Set Overscan Color */
|
/* Set Overscan Color */
|
||||||
case 0x01:
|
case 0x01:
|
||||||
{
|
{
|
||||||
/* Write the index */
|
VgaSetSinglePaletteRegister(VGA_AC_OVERSCAN_REG, getBH());
|
||||||
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
|
||||||
IOWriteB(VGA_AC_INDEX, VGA_AC_OVERSCAN_REG);
|
|
||||||
|
|
||||||
/* Write the data */
|
|
||||||
IOWriteB(VGA_AC_WRITE, getBH());
|
|
||||||
|
|
||||||
/* Enable screen and disable palette access */
|
/* Enable screen and disable palette access */
|
||||||
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
||||||
|
@ -1332,15 +1465,11 @@ VOID WINAPI VidBiosVideoService(LPWORD Stack)
|
||||||
/* Set the palette registers */
|
/* Set the palette registers */
|
||||||
for (i = 0; i <= VGA_AC_PAL_F_REG; i++)
|
for (i = 0; i <= VGA_AC_PAL_F_REG; i++)
|
||||||
{
|
{
|
||||||
/* Write the index */
|
VgaSetSinglePaletteRegister(i, Buffer[i]);
|
||||||
IOReadB(VGA_INSTAT1_READ); // Put the AC register into index state
|
|
||||||
IOWriteB(VGA_AC_INDEX, i);
|
|
||||||
|
|
||||||
/* Write the data */
|
|
||||||
IOWriteB(VGA_AC_WRITE, Buffer[i]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set the overscan register */
|
/* Set the overscan register */
|
||||||
|
// VgaSetSinglePaletteRegister(VGA_AC_OVERSCAN_REG, Buffer[VGA_AC_PAL_F_REG + 1]);
|
||||||
IOWriteB(VGA_AC_INDEX, VGA_AC_OVERSCAN_REG);
|
IOWriteB(VGA_AC_INDEX, VGA_AC_OVERSCAN_REG);
|
||||||
IOWriteB(VGA_AC_WRITE, Buffer[VGA_AC_PAL_F_REG + 1]);
|
IOWriteB(VGA_AC_WRITE, Buffer[VGA_AC_PAL_F_REG + 1]);
|
||||||
|
|
||||||
|
@ -1526,8 +1655,8 @@ VOID WINAPI VidBiosVideoService(LPWORD Stack)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
DPRINT1("BIOS Function INT 10h, AH = 0x%02X NOT IMPLEMENTED\n",
|
DPRINT1("BIOS Function INT 10h, AH = 0x%02X, AL = 0x%02X, BH = 0x%02X NOT IMPLEMENTED\n",
|
||||||
getAH());
|
getAH(), getAL(), getBH());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue