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

Reply via email to