- Restoring of character size in VBEResetHw. Patch by Herv� Poussineau.
authorFilip Navara <filip.navara@gmail.com>
Tue, 31 Aug 2004 18:28:50 +0000 (18:28 +0000)
committerFilip Navara <filip.navara@gmail.com>
Tue, 31 Aug 2004 18:28:50 +0000 (18:28 +0000)
svn path=/trunk/; revision=10754

reactos/drivers/video/miniport/vbe/vbemp.c

index c16897b..62c101e 100644 (file)
@@ -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;
 }
 
 /*