diff --git a/reactos/drivers/video/miniport/vbe/vbemp.c b/reactos/drivers/video/miniport/vbe/vbemp.c index c16897b77d3..62c101e527a 100644 --- a/reactos/drivers/video/miniport/vbe/vbemp.c +++ b/reactos/drivers/video/miniport/vbe/vbemp.c @@ -523,7 +523,56 @@ VBEResetHw( ULONG Columns, ULONG Rows) { - return VBEResetDevice(DeviceExtension, NULL); + INT10_BIOS_ARGUMENTS BiosRegisters; + PVBE_DEVICE_EXTENSION VBEDeviceExtension = + (PVBE_DEVICE_EXTENSION)DeviceExtension; + + if (!VBEResetDevice(DeviceExtension, NULL)) + return FALSE; + + /* Change number of columns/rows */ + VideoPortZeroMemory(&BiosRegisters, sizeof(BiosRegisters)); + + if (Columns == 80 && Rows == 25) + { + /* Default text size, don't change anything. */ + return TRUE; + } + else if (Columns == 80 && Rows == 28) + { + /* Use 9x14 font (80x28) */ + BiosRegisters.Eax = 0x1111; + } + else if (Columns == 80 && Rows == 43) + { + /* Use 8x8 font in 350 scans mode (80x43) */ + BiosRegisters.Eax = 0x1201; + BiosRegisters.Ebx = 0x30; + VBEDeviceExtension->Int10Interface.Int10CallBios( + VBEDeviceExtension->Int10Interface.Context, + &BiosRegisters); + + BiosRegisters.Eax = 0x3; + BiosRegisters.Ebx = 0; + VBEDeviceExtension->Int10Interface.Int10CallBios( + VBEDeviceExtension->Int10Interface.Context, + &BiosRegisters); + + BiosRegisters.Eax = 0x1112; + } + else if (Columns == 80 && Rows == 50) + { + /* Use 8x8 font (80x50) */ + BiosRegisters.Eax = 0x1112; + } + else + return FALSE; + + VBEDeviceExtension->Int10Interface.Int10CallBios( + VBEDeviceExtension->Int10Interface.Context, + &BiosRegisters); + + return TRUE; } /*