qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] Absolute Mouse in VNC and debug ports patch
@ 2010-04-02 14:19 Gerhard Wiesinger
  2010-04-03 15:26 ` Paul Brook
  0 siblings, 1 reply; 4+ messages in thread
From: Gerhard Wiesinger @ 2010-04-02 14:19 UTC (permalink / raw)
  To: qemu-devel

[-- Attachment #1: Type: TEXT/PLAIN, Size: 2900 bytes --]

Hello,

This is my first contribution to QEMU: I've written a virtual piece of hardware 
(e.g. ports) that the mouse pointer can be used as an absolute pointing device 
even with non USB devices, e.g. with DOS and doesn't need any high memory usage 
USB driver. This is necessary for e.g. VNC remote access, this was my primary 
motivation.

To use it you need a mouse driver (e.g. cutemouse, 
http://cutemouse.sourceforge.net/) and an QEMU mouse TSR.
Further the mouse TSR emulates also a HP-HIL 45911 tablet digitizer. This 
device has been chosen because an Interrupt interface exists at INT 6Fh and 
therefore it is relativly easy to emulate (all other devices I've evaluated use 
the serial port and are therefore much more complex to emulate) and I think it 
was also common at DOS times. Original hardware can be found at:
http://www.hpl.hp.com/personal/Tom_Malzbender/papers/tablet_highres.pdf
http://oopweb.com/Assembly/Documents/InterList/Volume/INTERRUP.Q

Defined INT 6Fh functions:
1.) ah=08h, bp=2Ah (driver ID), V_SINPUT
http://www.ctyme.com/intr/rb-7715.htm
2.) ah=06h, bp=2Ah (driver ID), V_SINPUT
http://www.ctyme.com/intr/rb-7709.htm
3.) ah=02h, al=04h, bp=BAh (driver ID), C_LTABLET
http://www.ctyme.com/intr/rb-7646.htm
4.) ah=06h, bp=BAh (driver ID), C_LTABLET
http://www.ctyme.com/intr/rb-7707.htm

TSR and qemu patch can be found at, attached too:
http://www.wiesinger.com/opensource/qemu/qemu-0.12.3-absolutemouse-V6.patch
http://www.wiesinger.com/opensource/qemu/qemumous.com

Usage:
1.) Apply patch to QEMU 0.12.3
2.) Load cutemouse 1.91alpha
3.) Load qemumous.com
4.) Enjoy it :-)

ASM source code of the TSR will be released too in few days, needs some 
cleanup/review.

Further I've written a simple logging debug ports functionality to debug the 
driver. It enables also simple "delta" debugging, where only state changes are 
logged. Example can be seen in the QEMUMOUS.ASM source code (will be released 
in few days).

Added switches:
-absolute-mouse Proprietary pointer device that uses absolute coordinates (like a touchscreen)
                 with VNC for e.g. DOS. This means qemu is able to report the mouse position
                 without having to grab the mouse. Needs a DOS TSR to emulate the mouse.
                 DOS TSR also emulates a HP-HIL 45911 Tablet using INT 6Fh.
                 Also overrides the PS/2 mouse emulation when activated.
-debugports     Enables debug ports which can be used by drivers or DOS TSR programs.
                 Look at the code of the absolute-mouse DOS TSR for examples.

Status is: mouse event queing implemented, tested and works for me.
Open issues: TSR might be a full mouse driver (e.g. integrate in cutemouse) 
instead of patching just few INT33h functions.

Any feedback is welcome. Maybe after review you can integrate the patch in the 
GIT repository.

Thanx.

Ciao,
Gerhard

--
http://www.wiesinger.com/

[-- Attachment #2: Type: APPLICATION/ZIP, Size: 5592 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] Absolute Mouse in VNC and debug ports patch
  2010-04-02 14:19 [Qemu-devel] Absolute Mouse in VNC and debug ports patch Gerhard Wiesinger
@ 2010-04-03 15:26 ` Paul Brook
  2010-04-03 16:20   ` Gerhard Wiesinger
  2010-04-05 10:20   ` Gerhard Wiesinger
  0 siblings, 2 replies; 4+ messages in thread
From: Paul Brook @ 2010-04-03 15:26 UTC (permalink / raw)
  To: qemu-devel; +Cc: Gerhard Wiesinger

> This is my first contribution to QEMU: I've written a virtual piece of
> hardware (e.g. ports) that the mouse pointer can be used as an absolute
> pointing device even with non USB devices, e.g. with DOS and doesn't need
> any high memory usage USB driver. This is necessary for e.g. VNC remote
> access, this was my primary motivation.

Why not just use the existing vmmouse?

> To use it you need a mouse driver (e.g. cutemouse,
> http://cutemouse.sourceforge.net/) and an QEMU mouse TSR.
> Further the mouse TSR emulates also a HP-HIL 45911 tablet digitizer. This
> device has been chosen because an Interrupt interface exists at INT 6Fh and
> therefore it is relativly easy to emulate (all other devices I've evaluated
>  use the serial port and are therefore much more complex to emulate)

However emulating an actual tablet connected to the serial port means you 
don't need any custom guest software.

>Further I've written a simple logging debug ports functionality to debug the
>driver

This looks a lot like the existing isa-debugcon.

Paul

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] Absolute Mouse in VNC and debug ports patch
  2010-04-03 15:26 ` Paul Brook
@ 2010-04-03 16:20   ` Gerhard Wiesinger
  2010-04-05 10:20   ` Gerhard Wiesinger
  1 sibling, 0 replies; 4+ messages in thread
From: Gerhard Wiesinger @ 2010-04-03 16:20 UTC (permalink / raw)
  To: Paul Brook; +Cc: qemu-devel

On Sat, 3 Apr 2010, Paul Brook wrote:

>> This is my first contribution to QEMU: I've written a virtual piece of
>> hardware (e.g. ports) that the mouse pointer can be used as an absolute
>> pointing device even with non USB devices, e.g. with DOS and doesn't need
>> any high memory usage USB driver. This is necessary for e.g. VNC remote
>> access, this was my primary motivation.
>
> Why not just use the existing vmmouse?
>

First I didn't know that QEMU has already implemented vmmouse. I'm very 
new to QEMU. After looking at the code vmmouse requires 386 instructions 
in the DOS driver to access the 32 bit port access (eax, ebx, etc.) which 
might be problematic in real mode. and even on 286 (don't know whether 
this is relevant or not). Further protocol is a little bit more complex to 
implement in Assembler in the DOS TSR and therefore performance would be 
lower (DOS polls the mouse, no standard event or interrupt based system 
specified).

>> To use it you need a mouse driver (e.g. cutemouse,
>> http://cutemouse.sourceforge.net/) and an QEMU mouse TSR.
>> Further the mouse TSR emulates also a HP-HIL 45911 tablet digitizer. This
>> device has been chosen because an Interrupt interface exists at INT 6Fh and
>> therefore it is relativly easy to emulate (all other devices I've evaluated
>>  use the serial port and are therefore much more complex to emulate)
>
> However emulating an actual tablet connected to the serial port means you
> don't need any custom guest software.

But I thing it is only relevant for very old software like DOS. Every 
modern OS has USB on board and therefore the USB tablet emulation is IHMO 
sufficient and works well. The guest software could also be implemented as 
option rom (~2k), then no TSR would be necessary. As the typical use case 
is for DOS I don't see any relevant problems here because resident TSR 
size is very small (~2k) and common practice in DOS. BTW: is it possible 
to load more than one option ROM at a time, e.g. SCSI and another?

>
>> Further I've written a simple logging debug ports functionality to debug the
>> driver
>
> This looks a lot like the existing isa-debugcon.
>

Is this in the development tree only? I had only a look at the stable 
release and didn't find anything.

Ciao,
Gerhard

--
http://www.wiesinger.com/

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [Qemu-devel] Absolute Mouse in VNC and debug ports patch
  2010-04-03 15:26 ` Paul Brook
  2010-04-03 16:20   ` Gerhard Wiesinger
@ 2010-04-05 10:20   ` Gerhard Wiesinger
  1 sibling, 0 replies; 4+ messages in thread
From: Gerhard Wiesinger @ 2010-04-05 10:20 UTC (permalink / raw)
  To: Paul Brook; +Cc: qemu-devel

On Sat, 3 Apr 2010, Paul Brook wrote:

>> This is my first contribution to QEMU: I've written a virtual piece of
>> hardware (e.g. ports) that the mouse pointer can be used as an absolute
>> pointing device even with non USB devices, e.g. with DOS and doesn't need
>> any high memory usage USB driver. This is necessary for e.g. VNC remote
>> access, this was my primary motivation.
>
> Why not just use the existing vmmouse?
>
>> To use it you need a mouse driver (e.g. cutemouse,
>> http://cutemouse.sourceforge.net/) and an QEMU mouse TSR.
>> Further the mouse TSR emulates also a HP-HIL 45911 tablet digitizer. This
>> device has been chosen because an Interrupt interface exists at INT 6Fh and
>> therefore it is relativly easy to emulate (all other devices I've evaluated
>>  use the serial port and are therefore much more complex to emulate)
>
> However emulating an actual tablet connected to the serial port means you
> don't need any custom guest software.
>

Hello Paul,

There is another reason: I'm using interrupts, therefore the Guest OS must 
not poll (except DOS, where the Mouse interface is a polling one).

Ciao,
Gerhard

--
http://www.wiesinger.com/

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-04-05 10:22 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-04-02 14:19 [Qemu-devel] Absolute Mouse in VNC and debug ports patch Gerhard Wiesinger
2010-04-03 15:26 ` Paul Brook
2010-04-03 16:20   ` Gerhard Wiesinger
2010-04-05 10:20   ` Gerhard Wiesinger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).