Author: aandrejevic
Date: Thu Aug 25 03:01:18 2016
New Revision: 72451

URL: http://svn.reactos.org/svn/reactos?rev=72451&view=rev
Log:
[NTVDM:BIOS]
Implement VBE function AH = 0x05, "CPU Video Memory Control".


Modified:
    trunk/reactos/subsystems/mvdm/ntvdm/bios/bios32/vbe.c

Modified: trunk/reactos/subsystems/mvdm/ntvdm/bios/bios32/vbe.c
URL: 
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/mvdm/ntvdm/bios/bios32/vbe.c?rev=72451&r1=72450&r2=72451&view=diff
==============================================================================
--- trunk/reactos/subsystems/mvdm/ntvdm/bios/bios32/vbe.c       [iso-8859-1] 
(original)
+++ trunk/reactos/subsystems/mvdm/ntvdm/bios/bios32/vbe.c       [iso-8859-1] 
Thu Aug 25 03:01:18 2016
@@ -525,6 +525,53 @@
             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());


Reply via email to