Author: aandrejevic Date: Wed May 14 20:56:21 2014 New Revision: 63302
URL: http://svn.reactos.org/svn/reactos?rev=63302&view=rev Log: [NTVDM] Don't calculate NextElement twice. Properly initialize the keyboard buffer head and tail.
Modified: trunk/reactos/subsystems/ntvdm/bios/bios32/kbdbios32.c
Modified: trunk/reactos/subsystems/ntvdm/bios/bios32/kbdbios32.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/ntvdm/bios/bios3... ============================================================================== --- trunk/reactos/subsystems/ntvdm/bios/bios32/kbdbios32.c [iso-8859-1] (original) +++ trunk/reactos/subsystems/ntvdm/bios/bios32/kbdbios32.c [iso-8859-1] Wed May 14 20:56:21 2014 @@ -39,14 +39,7 @@
/* Put the value in the queue */ *((LPWORD)((ULONG_PTR)Bda + Bda->KeybdBufferTail)) = Data; - Bda->KeybdBufferTail += sizeof(WORD); - - /* Check if we are at, or have passed, the end of the buffer */ - if (Bda->KeybdBufferTail >= Bda->KeybdBufferEnd) - { - /* Return it to the beginning */ - Bda->KeybdBufferTail = Bda->KeybdBufferStart; - } + Bda->KeybdBufferTail = NextElement;
/* Return success */ return TRUE; @@ -271,7 +264,7 @@ /* Initialize the BDA */ Bda->KeybdBufferStart = FIELD_OFFSET(BIOS_DATA_AREA, KeybdBuffer); Bda->KeybdBufferEnd = Bda->KeybdBufferStart + BIOS_KBD_BUFFER_SIZE * sizeof(WORD); - Bda->KeybdBufferHead = Bda->KeybdBufferTail = 0; + Bda->KeybdBufferHead = Bda->KeybdBufferTail = Bda->KeybdBufferStart;
// FIXME: Fill the keyboard buffer with invalid values, for diagnostic purposes... RtlFillMemory(((LPVOID)((ULONG_PTR)Bda + Bda->KeybdBufferStart)), BIOS_KBD_BUFFER_SIZE * sizeof(WORD), 'A');