[NTVDM]
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Thu, 13 Aug 2015 16:51:40 +0000 (16:51 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Thu, 13 Aug 2015 16:51:40 +0000 (16:51 +0000)
- Improve PS/2 keyboard initialization in BIOS POST.
- Forgot two "breaks;" in error code paths.

svn path=/trunk/; revision=68707

reactos/subsystems/mvdm/ntvdm/bios/bios32/bios32.c
reactos/subsystems/mvdm/ntvdm/bios/bios32/moubios32.c

index 19b6210..611e5c8 100644 (file)
@@ -779,11 +779,13 @@ static VOID BiosHwSetup(VOID)
     /* Initialize PS/2 keyboard port */
     // Enable the port
     IOWriteB(PS2_CONTROL_PORT, 0xAE);
-    IOWriteB(PS2_CONTROL_PORT, 0x60);
     // Port interrupts and clock enabled,
     // enable keyboard scancode translation.
     // POST passed, force keyboard unlocking.
-    IOWriteB(PS2_DATA_PORT   , 0x4D);
+    IOWriteB(PS2_CONTROL_PORT, 0x60);
+    IOWriteB(PS2_DATA_PORT   , 0x6D);
+    // Enable data reporting
+    IOWriteB(PS2_DATA_PORT   , 0xF4);
 
     EnableHwIRQ(0, BiosTimerIrq);
 }
index 7d1a07c..8aff4f1 100644 (file)
@@ -223,7 +223,7 @@ VOID BiosMousePs2Interface(LPWORD Stack)
 
             SendMouseCommand(0xFF);
             Answer = ReadMouseData();
-            /* A "Resend" (0xFE) signal is sent if no mouse is attached */
+            /* A "Resend" signal (0xFE) is sent if no mouse is attached */
             if (Answer == 0xFE)
             {
                 /* Resend */
@@ -376,6 +376,7 @@ VOID BiosMousePs2Interface(LPWORD Stack)
                         /* Failure */
                         setAH(0x03);
                         Stack[STACK_FLAGS] |= EMULATOR_FLAG_CF;
+                        break;
                     }
 
                     setBL(ReadMouseData()); // Status
@@ -399,6 +400,7 @@ VOID BiosMousePs2Interface(LPWORD Stack)
                         /* Failure */
                         setAH(0x03);
                         Stack[STACK_FLAGS] |= EMULATOR_FLAG_CF;
+                        break;
                     }
 
                     /* Success */
@@ -490,7 +492,7 @@ VOID MouseBios32Post(VOID)
     /* Detect mouse presence by attempting a reset */
     SendMouseCommand(0xFF);
     Answer = ReadMouseData();
-    /* If no mouse attached, it will return RESEND (0xFE) */
+    /* A "Resend" signal (0xFE) is sent if no mouse is attached */
     if (Answer == 0xFE)
     {
         DPRINT1("No mouse present!\n");