All of the Mouse handling code is in the "mouse" subdirectory.
There are only 2 main files, mouse.c and mouseint.c.
These are the functions defined in base/mouse/mouse.c.
Initialize internal mouse.
I have not properly tested this INT74 - JES 96/10/20 I have removed it. INT74 is irq 12. Which I suppose is the proper irq for a ps2 mouse. It appears initial support was planned to support irq 12 and at Mouse_ROUTINE_OFF is a routine that acknowledges an irq. That routine is probably what should be acknowledging irq12, and what int 0x74 should point to. I have disabled int0x74 support for now. --EB 29 Oct 1997
Whoever wrote the dos mouse driver spec was brain dead... For some video modes the mouse driver appears to randomly pick a shift factor, possibly to keep at least a 640x200 resolution.
The general programming documentation doesn't make this clear. And says that in text modes it is safe to divide the resolution by 8 to get the coordinates in characters.
The only safe way to handle the mouse driver is to call function 0x26 Get max x & max y coordinates and scale whatever the driver returns yourself.
To handle programs written by programmers who weren't so cautious a doctrine of least suprise has been implemented.
As much as possible do the same as a standard dos mouse driver in the original vga modes 0,1,2,3,4,5,6,7,13,14,15,16,17,18,19.
For other text modes allow the divide by 8 technique to work. For other graphics modes return x & y in screen coordinates. Except when those modes are either 40x?? or 320x??? and then handle the x resolution as in 40x25 and 320x200 modes.
320x200 modes are slightly controversial as I have indications that not all mouse drivers do the same thing. So I have taken the simplest, and most common route, which is also long standing dosemu practice of always shifting by 1.
-- Eric Biederman 19 August 1998
Next Previous Contents
|The DOSEMU team|