mirror of
https://github.com/reactos/reactos.git
synced 2024-08-05 19:11:16 +00:00
[NTVDM:BIOS]
Implement VBE function AH = 0x05, "CPU Video Memory Control". svn path=/trunk/; revision=72451
This commit is contained in:
parent
e145ed06c6
commit
e7339745af
|
@ -525,6 +525,53 @@ VOID WINAPI VbeService(LPWORD Stack)
|
|||
break;
|
||||
}
|
||||
|
||||
/* CPU Video Memory Control */
|
||||
case 0x05:
|
||||
{
|
||||
BYTE Window = getBL();
|
||||
BYTE OldGcIndex = IOReadB(VGA_GC_INDEX);
|
||||
|
||||
switch (getBH())
|
||||
{
|
||||
/* Select Memory Window */
|
||||
case 0:
|
||||
{
|
||||
setAL(0x4F);
|
||||
|
||||
if (getDH() != 0)
|
||||
{
|
||||
/* Offset too high */
|
||||
setAH(1);
|
||||
break;
|
||||
}
|
||||
|
||||
IOWriteB(VGA_GC_INDEX, (Window == 0) ? SVGA_GC_OFFSET_0_REG : SVGA_GC_OFFSET_1_REG);
|
||||
IOWriteB(VGA_GC_DATA, getDL());
|
||||
|
||||
setAH(0);
|
||||
break;
|
||||
}
|
||||
|
||||
/* Return Memory Window */
|
||||
case 1:
|
||||
{
|
||||
IOWriteB(VGA_GC_INDEX, (Window == 0) ? SVGA_GC_OFFSET_0_REG : SVGA_GC_OFFSET_1_REG);
|
||||
setDX(IOReadB(VGA_GC_DATA));
|
||||
|
||||
setAX(0x004F);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
DPRINT("VESA INT 0x10, AH = 0x05, Unknown subfunction: %02X", getBH());
|
||||
}
|
||||
}
|
||||
|
||||
IOWriteB(VGA_GC_INDEX, OldGcIndex);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
DPRINT1("VESA BIOS Extensions function %02Xh NOT IMPLEMENTED!\n", getAL());
|
||||
|
|
Loading…
Reference in a new issue