[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems
From: |
malc |
Subject: |
Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems |
Date: |
Tue, 25 Aug 2009 18:50:12 +0400 (MSD) |
On Mon, 24 Aug 2009, Stefan Ring wrote:
> On Mon, Aug 24, 2009 at 5:34 PM, malc<address@hidden> wrote:
> > On Mon, 24 Aug 2009, Stefan Ring wrote:
> >
> >> > There's other DOS application that exhibits erroneous keyboard
> >> > beahviour and i was curious whether your hack "fixes" it too (alas
> >> > it doesn't) - Command and Conquer, the demo can be found at:
> >> >
> >> > http://www.dosgamesarchive.com/download/command-and-conquer/
> >> >
> >> > Keyboard is dysfunctional in both the setup and the game. What i'm
> >> > wondering now if this is a indeed pckbd or BIOS problem, but Bochs
> >> > where the former can be verified refuses to work on my machines,
> >> > perhaps someone could give it a try and report here?
> >>
> >> I just tried to run C&C on QEMU, VirtualBox and Bochs. Unfortunately,
> >> the game itself crashed immediately during startup, but the setup
> >> program worked. It also accepts keyboard input for specifying sound
> >> hardware parameters. The results:
> >
> > I'm confused. Should the above be interpreted as: keyboard works in
> > setup under Bochs, or?
>
> No. I just meant that there is a way to test keyboard input in the
> setup program because it would accept keyboard input if it worked. It
> does not work in any of the three.
Red herring, but good enough excuse to brush up my long forgotten re-ing
skils, C&C's code does this:
cseg01:0003550B mov bl, 60h
cseg01:0003550D mov bh, 6
cseg01:0003550F mov eax, 200h
cseg01:00035514
cseg01:00035514 loc_35514: ; CODE XREF:
sub_35410+115j
cseg01:00035514 int 31h ; DPMI Services
ax=func xxxxh
cseg01:00035514 ; GET REAL MODE
INTERRUPT VECTOR
cseg01:00035514 ; BL = interrupt number
cseg01:00035514 ; Return: CF clear,
CX:DX = segment:offset of real mode interrupt handler
cseg01:00035516 jb loc_356DC
cseg01:0003551C or cx, dx
cseg01:0003551F jz short loc_3552C
cseg01:00035521 inc bl
cseg01:00035523 dec bh
cseg01:00035525 jnz short loc_35514
cseg01:00035527 jmp loc_356DC
Basically iterating over interrupts 0x60..0x66 looking for an empty
slot if none was found it basically skips the whole installation of
keyboard handling routine and hence keyboard doesn't work.
Connecting gdbstub and doing "set *(long*)384 = 0" inside gdb prior
to running C&C's setup, made keyboard "functional".
So BIOS and some interesting expectations of C&C are to blame here
not pckbd.c.
--
mailto:address@hidden
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, (continued)
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, malc, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, Stefan Ring, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, malc, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, Jamie Lokier, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, Stefan Ring, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, Stefan Ring, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, Stefan Ring, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, malc, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, Stefan Ring, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, malc, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems,
malc <=
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, Stefan Ring, 2009/08/24
- Re: [Qemu-devel] [PATCH 0 of 1] Fix for DOS keyboard problems, Stefan Ring, 2009/08/24