From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MdNOU-0006bQ-H1 for qemu-devel@nongnu.org; Tue, 18 Aug 2009 08:02:26 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MdNOQ-0006aH-Sx for qemu-devel@nongnu.org; Tue, 18 Aug 2009 08:02:26 -0400 Received: from [199.232.76.173] (port=37852 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MdNOQ-0006a9-OK for qemu-devel@nongnu.org; Tue, 18 Aug 2009 08:02:22 -0400 Received: from mx20.gnu.org ([199.232.41.8]:51159) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1MdNOQ-0002G1-4P for qemu-devel@nongnu.org; Tue, 18 Aug 2009 08:02:22 -0400 Received: from mail-ew0-f223.google.com ([209.85.219.223]) by mx20.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MdNOO-0004xT-ME for qemu-devel@nongnu.org; Tue, 18 Aug 2009 08:02:20 -0400 Received: by ewy23 with SMTP id 23so3727022ewy.8 for ; Tue, 18 Aug 2009 05:02:18 -0700 (PDT) MIME-Version: 1.0 Date: Tue, 18 Aug 2009 14:02:18 +0200 Message-ID: <53e878390908180502n36f1bb97kb8868a647d514d08@mail.gmail.com> From: Stefan Ring Content-Type: multipart/mixed; boundary=001485f0406041b55a0471694a5d Subject: [Qemu-devel] [PATCH] Fix for DOS keyboard problems List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org --001485f0406041b55a0471694a5d Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Scratching an itch for myself, I have created a patch that allows me to use Turbo Pascal and other Turbo Vision-based programs from DOS. I post it here in the hope that someone take a good look, and maybe, there's even a chance of this going into mainline. I verified that it doesn't break keyboard or mouse functionality in Win 3.11, Win 2000 and Linux X11 (from systemrescuecd 1.1.4) as well as some DOS games. Couldn't get win98 to run, unfortunately, so no testing there. However, there is always the chance that it might break some random obscure stuff, and clearly I cannot test everything. The patch basically exploits the fact that the BIOS IRQ 1 handler always does - - in this order. We just remember the last value read from port 60h outside this disable/enable block and play it back inside. The keyboard is still very unreliable when a keyboard driver is loaded inside DOS (I assume that the keyboard driver completely disables the BIOS handler). This behavior is also present without my patch, and I personally don't care about it, so this should not be an obstacle. I also didn't know what to do about kbd_save and kbd_load just because I didn't dig into them to find out what they are used for. The new member should probably be serialized there. My ultimate hope would be to get this into VirtualBox (see ticket #58 [1]). It should be easy enough to adapt the patch to VirtualBox; I will try to do that within the next few days. [1] http://www.virtualbox.org/ticket/58 --001485f0406041b55a0471694a5d Content-Type: application/octet-stream; name=qemu-patch Content-Disposition: attachment; filename=qemu-patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fyikr1lw0 LS0tIHFlbXUtMC4xMC41Lm9yaWcvaHcvcGNrYmQuYwkyMDA5LTA1LTIwIDIyOjQ2OjU5LjAwMDAw MDAwMCArMDIwMAorKysgcWVtdS0wLjEwLjUvaHcvcGNrYmQuYwkyMDA5LTA4LTE4IDExOjI2OjU5 Ljg5NjE5NTYyMCArMDIwMApAQCAtMTIwLDYgKzEyMCw3IEBACiAgICAgdWludDhfdCBtb2RlOwog ICAgIC8qIEJpdG1hc2sgb2YgZGV2aWNlcyB3aXRoIGRhdGEgYXZhaWxhYmxlLiAgKi8KICAgICB1 aW50OF90IHBlbmRpbmc7CisgICAgdWludDMyX3QgaGVsZF9rYmRfdmFsOwogICAgIHZvaWQgKmti ZDsKICAgICB2b2lkICptb3VzZTsKIApAQCAtMTYxLDkgKzE2MiwxMCBAQAogewogICAgIEtCRFN0 YXRlICpzID0gKEtCRFN0YXRlICopb3BhcXVlOwogCi0gICAgaWYgKGxldmVsKQorICAgIGlmIChs ZXZlbCkgewogICAgICAgICBzLT5wZW5kaW5nIHw9IEtCRF9QRU5ESU5HX0tCRDsKLSAgICBlbHNl CisgICAgICAgIHMtPmhlbGRfa2JkX3ZhbCA9ICh1aW50MzJfdCkgLTE7CisgICAgfSBlbHNlCiAg ICAgICAgIHMtPnBlbmRpbmcgJj0gfktCRF9QRU5ESU5HX0tCRDsKICAgICBrYmRfdXBkYXRlX2ly cShzKTsKIH0KQEAgLTIzOCw2ICsyNDAsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIEtC RF9DQ01EX0tCRF9FTkFCTEU6CiAgICAgICAgIHMtPm1vZGUgJj0gfktCRF9NT0RFX0RJU0FCTEVf S0JEOworICAgICAgICBzLT5oZWxkX2tiZF92YWwgPSAodWludDMyX3QpIC0xOwogICAgICAgICBr YmRfdXBkYXRlX2lycShzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBLQkRfQ0NNRF9SRUFE X0lOUE9SVDoKQEAgLTI4Myw4ICsyODYsMTUgQEAKIAogICAgIGlmIChzLT5wZW5kaW5nID09IEtC RF9QRU5ESU5HX0FVWCkKICAgICAgICAgdmFsID0gcHMyX3JlYWRfZGF0YShzLT5tb3VzZSk7Ci0g ICAgZWxzZQotICAgICAgICB2YWwgPSBwczJfcmVhZF9kYXRhKHMtPmtiZCk7CisgICAgZWxzZSB7 CisgICAgICAgIGlmIChzLT5tb2RlICYgS0JEX01PREVfRElTQUJMRV9LQkQgJiYgcy0+aGVsZF9r YmRfdmFsICE9ICh1aW50MzJfdCkgLTEpCisgICAgICAgICAgICB2YWwgPSBzLT5oZWxkX2tiZF92 YWw7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFsID0gcHMyX3JlYWRfZGF0YShzLT5r YmQpOworICAgICAgICAgICAgaWYgKCEocy0+bW9kZSAmIEtCRF9NT0RFX0RJU0FCTEVfS0JEKSkK KyAgICAgICAgICAgICAgICBzLT5oZWxkX2tiZF92YWwgPSB2YWw7CisgICAgICAgIH0KKyAgICB9 CiAKICNpZiBkZWZpbmVkKERFQlVHX0tCRCkKICAgICBwcmludGYoImtiZDogcmVhZCBkYXRhPTB4 JTAyeFxuIiwgdmFsKTsKQEAgLTMzOSw2ICszNDksNyBAQAogCiAgICAgcy0+bW9kZSA9IEtCRF9N T0RFX0tCRF9JTlQgfCBLQkRfTU9ERV9NT1VTRV9JTlQ7CiAgICAgcy0+c3RhdHVzID0gS0JEX1NU QVRfQ01EIHwgS0JEX1NUQVRfVU5MT0NLRUQ7CisgICAgcy0+aGVsZF9rYmRfdmFsID0gKHVpbnQz Ml90KSAtMTsKIH0KIAogc3RhdGljIHZvaWQga2JkX3NhdmUoUUVNVUZpbGUqIGYsIHZvaWQqIG9w YXF1ZSkK --001485f0406041b55a0471694a5d--