Hi, Same behavior with latest version of seabios from git https://github.com/coreboot/seabios master branch. Thanks for the reply.
Stéphane -----Message d'origine----- De : Keith Hui <buu...@gmail.com> Envoyé : mercredi 6 janvier 2021 22:51 À : LE LIEGARD, Stephane <stephane.le-lieg...@capgemini.com> Cc : seabios@seabios.org Objet : Re: [SeaBIOS] CDOS 386 keyboard handling Hi Stephane, Greetings. First, try again using the newest code - preferably the latest in git, at least 1.14. Keith On Wed, 6 Jan 2021 at 11:50, LE LIEGARD, Stephane <stephane.le-lieg...@capgemini.com> wrote: > > Hello, > > Host : centos 7 > Guest : Concurrent DOS 386 v3.00 (problem also happen on DOS 3.0) > > QEMU : v5.1.0 > Virtualbox : v6.1.14 > > Seabios : seabios-rel-1.13.0 > > I first started to run some tests to debug the alt-gr behavior, and I ended > up noticing something strange. > This issue is the same as this one: > https://bugs.launchpad.net/qemu/+bug/1574246 > > So I have an old computer with CDOS installed directly on it (i486-DX2 > processeur), and I have to virtualize it with QEMU. Lets call this computer > “antique”. > > > > When I run the command ‘n’ in cdos, I select French and I install AZERTY 102 > keys 8 bit keyboard. > Then when i press alt-gr + 3, on antique and vbox it display ‘#’, but on QEMU > ,it doesn’t, it print the gibberish ^@ sequence. > So VBox handle keyboard input properly, but not qemu. > > I investigated to see if the problem was how QEMU interpret the alt-gr, and I > thought it was, because the flags set in registers AH and AL when I press > alt-gr are the same as when I press Alt (AH=0x2, AL=0x8) according to this > site: > > http://helppc.netcore2k.net/table/bda : AH – 40:18 AL – 40:17 > > So I launched qemu and vbox in debug mode, with gdb for qemu and the included > debbuger for vbox. By breaking on 0xF000:0xFFF0 and inspecting the IVT, I > could see that CDOS replaces the IRQ handler because the address stored at > 0x24 (irq 9) change after I resume execution, and when I inspect the machine > code at 0xAF:0x618 (address of the IRQ 9 stored in 0x24 after cdos has > started), it’s the same on qemu and vbox. > > > > The behavior and scancodes received are the same on QEMU and VBox in the CDOS > irq 1 handler. I break on the respective BIOS irq 1 handler, called from the > CDOS irq 1 handler, and at this point the byte read on 0x60 differs. Exemple > for alt-gr, so 0xE038: > > … > %000000000000113f e4 60 in AL, 060h // CDOS read > 0xE0 from port 0x60 > … > CDOS call bios handler > … > %00000000000fe987 e4 60 in AL, 060h // VBOX bios > read 0xE0, QEMU bios read 0x38 > … > > > > I didn’t see any command from CDOS irq 1 handler that would tell the PS2 > controller to refeed the last byte read on the port 0x60, and all the BIOS > does before the read is to deactivate the keyboard by writing 0xAD to port > 0x64, so I think the issue could be from how the ps2 controller is emulated > on QEMU. Somehow, VBOX knows that it has to keep the value in it’s output > buffer after the first read, or maybe some kind of timer, idk. > > > > I join to this mail the asm of the CDOS irq 1 handler that I extracted from > the debugger. > If someone could help me to create a fix, even not official, that we could > use on our project. > > > Thanks a lot. > > This message contains information that may be privileged or confidential and > is the property of the Capgemini Group. It is intended only for the person to > whom it is addressed. If you are not the intended recipient, you are not > authorized to read, print, retain, copy, disseminate, distribute, or use this > message or any part thereof. If you receive this message in error, please > notify the sender immediately and delete all copies of this message. > _______________________________________________ > SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an > email to seabios-le...@seabios.org _______________________________________________ SeaBIOS mailing list -- seabios@seabios.org To unsubscribe send an email to seabios-le...@seabios.org