Hello,

I'm the computer science student of Brest State Technical University (Belarus), 
and have an idea for Google Summer of Code (I see it as an important feature 
and have already started working on it, but mentoring would be a great help).

The proposition is about implementing one more absolute coordinates device for 
QEMU – a serial tablet with behaviour like usb-tablet we use to get mouse 
integration.

The implementing serial tablet would allow to have mouse integration for 
vintage operating systems. This feature is absent in other virtualisation 
systems, as far a I know. Emulating additional character  device with absolute 
coordinates – the one which was rather popular in 1990x– would allow us to use 
already existing drivers for old operating systems without USB support and so 
such device would bring mouse integration to them.

Supporting such old systems is more important than meets the eye. We see more 
and more web based projects demonstrating historical systems with their 
'screen' embedded into HTML (with VNC client written in JavaScript or something 
similar). One of such projects is oldweb (http://oldweb.today/ 
<http://oldweb.today/>) <http://oldweb.today/)/>, and there are several others 
(e.g. there are single demos of some old Microsoft or Apple OS, and Amiga). Of 
course these systems have no mouse integration, and demonstrate two mouse 
cursors moving with different speed, making it not so easy to operate with. 

We also have a project suffering from this problem: a live history timeline of 
GUI-based mobile & desktop operating systems. This timeline also uses virtual 
machines, embedded into HTML instead of screenshots. Our goal is to virtualise 
about 40 desktop & 30 mobile OSes for this demo (more than 50% is already 
done). The architecture of our project involves QEMU as the container for 
historical operating systems (either straightforward or with an iternal 
emulator).  The project is hosted at 
https://gitssh.com/fiowro/ostimeline/tree/master (dedicated web site with live 
demo demanded separate hardware server and finally should appear this spring…). 
And of course we also have the same problem with guest systems not supporting 
Wacom USB tablet. 

So there are enough projects and users who would benefit from implementing such 
feature.

At first I was thinking to make a plugin subsystem which would allow to write 
separate loadable modules for different character backends (to re-vitalize also 
some abandoned QEMU patches for exotic relative coordinates mice). But later I 
decided to chose more simple goal and just to implement serial tablet.

So I've studied these abandoned patches (mainly one for serial mouse with PC 
mouse systems protocol) and started working to implement similar patch for 
serial Wacom tablet. RS-232 Wacom PenPartner tablet was chosen to match the 
newer USB one, and because it is enough old to have drivers for the larger 
share of antique systems, and also has described protocol. 

At this moment I have got the real hardware PenPartner tablet (model CT-0405-R) 
and three virtual machines configured to use it:
- wacom wtest program under FreeDOS (it discovers the tablet and prints events 
from it),
- windows 3.11,
- windows 95. 
Drivers for OS/2 and MacOS X (and perhaps some others we will find for our 
ostimeline project) are still waiting to be installed into virtualised systems, 
but of course it's not so urgent.

My initial efforts have resulted into some dirty patch to QEMU 1.7 which makes 
wtest to recognise emulated tablet and sends coordinates (a pair of constants) 
on mouse move.  The following link provides pre-compiled qemu binary, its souce 
code, starting script and qcow image with wtest: 
https://www.dropbox.com/sh/q8ud6og8fxjzm60/AAAAtcStLohBP6PR-KLyIvxSa?dl=0

Of course the code is far from being finished, but at least it seems to be a 
good proof… And participating in GSoC program would help me a lot not to make 
something useful for other projects and not to finish with one more patch for 
an outdated QEMU version (like an abandoned genius backend, a vmware mouse, and 
a bus mouse patch used to run NextSTEP OS).

P.S. Sorry for such a long intro… Don't know how did it happened…  :)

Reply via email to