qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug 1895363] [NEW] borland IDEs double up cursor key presses (need timi


From: Michael Slade
Subject: [Bug 1895363] [NEW] borland IDEs double up cursor key presses (need timing on PS2 port input)
Date: Sat, 12 Sep 2020 01:43:10 -0000

Public bug reported:

Most DOS-era IDEs from Borland (I have tried Borland C++ 2.0, Borland
C++ 3.1 and Turbo Pascal 7.1) exhibit strange responses to the keyboard.
Cursor keys are registered twice, so each press of a cursor key causes
the cursor to move twice. Also the other keys occasionally are missed or
duplicated.

>From an internet search, the problem appears to be this.  These programs
read the PS2 input register multiple times per incoming byte, on the
assumption that the byte will remain there for at least a few hundred
microseconds, before the next byte (if any) appears there.  qemu treats
a read of the register by the guest as an acknowledgement of the
incoming byte and puts the next byte into the register immediately, thus
breaking the programs that expect each successive byte to stay in place
for a while.

The obvious solution is to use a timer to advance through the queued
bytes.

** Affects: qemu
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of qemu-
devel-ml, which is subscribed to QEMU.
https://bugs.launchpad.net/bugs/1895363

Title:
  borland IDEs double up cursor key presses (need timing on PS2 port
  input)

Status in QEMU:
  New

Bug description:
  Most DOS-era IDEs from Borland (I have tried Borland C++ 2.0, Borland
  C++ 3.1 and Turbo Pascal 7.1) exhibit strange responses to the
  keyboard.  Cursor keys are registered twice, so each press of a cursor
  key causes the cursor to move twice. Also the other keys occasionally
  are missed or duplicated.

  From an internet search, the problem appears to be this.  These
  programs read the PS2 input register multiple times per incoming byte,
  on the assumption that the byte will remain there for at least a few
  hundred microseconds, before the next byte (if any) appears there.
  qemu treats a read of the register by the guest as an acknowledgement
  of the incoming byte and puts the next byte into the register
  immediately, thus breaking the programs that expect each successive
  byte to stay in place for a while.

  The obvious solution is to use a timer to advance through the queued
  bytes.

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/1895363/+subscriptions



reply via email to

[Prev in Thread] Current Thread [Next in Thread]