Since there are some old DOS games that I want to play (namely Ultima Underworld I and II) I have set up an MS-DOS VM under Xen (unfortunately Xen doesn't support / accept virtual floppy drives so I had to work around that using QEMU for the installation). Now, booting into MS-DOS under Xen turned up the next problem: After completing the boot-up sequence the keyboard is dead.
Double-checking with QEMU, however, had the keyboard work normally so it had to be something related to the keyboard that wouldn't interface well with Xen, especially since I was able to choose options from a boot menu created in CONFIG.SYS as there isn't anything specific to the keyboard loaded at that moment. Checking the entire configuration quickly found out KEYB.COM as the culprit. Since I'm using a German keyboard I need to remap the keys accordingly, and whenever I leave it out under Xen, the keyboard works normally. As soon as I run said program (even manually), things instantaneously go haywire.
The DOS VM is configured for 32-bit mode with a total of 64 MByte of memory available (the relevant entry from the XML config file is this: <type arch='i686' machine='xenfv'>hvm</type>
) so virtual86 mode is available. I have also explicitly set the keyboard to be an emulated PS/2 keyboard so this shouldn't normally be an issue.
The VM is also configured to have both ACPI and APIC enabled, however, disabling any of the two options doesn't solve the problem.
In case it is of relevance for the issue at hand, the thing that nonetheless struck me is that executing EMM386.EXE displays the following:
WARNING: Option ROM or RAM detected in page frame.
The page frame is located at its default segment address of D800h (something that it doesn't complain about, either, when run under QEMU). However, shifting it around still won't make the warning go away.
Any ideas on how to solve or work around the keyboard problem? I'm currently drawing nothing but blanks, and searching the 'Net hasn't turned up anything useful so far.