home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windoware
/
WINDOWARE_1_6.iso
/
bugfix
/
msftfix2
/
rodent.fix
next >
Wrap
Text File
|
1991-01-16
|
3KB
|
84 lines
Microsoft Mouse COM port interrupt fix.
Errata: The interrupt mask shown for INT 5 was incorrect. I did
not realize it until I had to use it. BFh should have
been DFh.
The Microsoft mouse driver makes a dangerous assumption when it
finds a serial mouse attached to your computer. If you only have
two COM ports all will be transparently well. But for those of you
wanting to connect the mouse to COM3 or COM4 you run into a
situation that assumes COM3 is using INT 4 and COM4 uses INT 3.
For most default installations this is correct, but what if you
also want to use another interrupt driven serial port that
uses the same interrupt vector. You can't. The mouse driver
grabs it and hangs on. The only way to correct it is to move
that serial port to another interrupt vector, say INT 2. The
mouse driver runs and indicates that it installed, but all is
not well, your mouse doesn't work. The driver install ASSUMES
a defacto STANDARD configuration and doesn't bother even checking!
To remedy the situation is an easy patch to a table in the mouse
driver. Use a file hex editor like NORTON or PCTOOLS and search
MOUSE.COM or MOUSE.SYS for:
F8 03 0C EF ;Com 1
F8 02 0B F7 ;Com 2
E8 03 0C EF ;Com 3
E8 02 0B F7 ;Com 4
For version 7.00 MOUSE.COM this is at Offset 3468h.
For version 7.00 MOUSE.SYS this is at Offset 34C0h.
For version 7.04 MOUSE.COM this is at Offset 46BFh.
For version 7.04 MOUSE.SYS this is at Offset 4717h.
If you are a Windows user then you will also need to patch Windows.
For some reason Microsoft decided to have Windows drive the mouse
itself so if you only use your mouse for Windows then you need not
load the mouse driver before running Windows.
For version 2.11 Windows 386 the table is in WIN200.BIN. The table is
as described above execpt it only contains COM1 and COM2 port info.
The table offset will vary from configuration to configuration. WIN200.BIN
is created during SETUP depending on the equipment configuration.
In any case the patch will be the same.
For version 3.0 Windows the table is in MOUSE.DRV at offset 82Ch.
The first two bytes of each entry are the serial ports base address.
The next byte is the actual interrupt vector. The interrupt jumpers most
of you are used to dealing with refer to the designations as they are
assigned on the PC bus not the actual microprocessor vectors. The bus
interrupt requests are routed to an 8259 interrupt controller. This
device is offset from INT 0 by 8. So INT 2 (Bus) is in actuality INT 0Ah.
The last byte is a value that gets ANDed with the value on I/O port 21h
which is the 8259 interrupt controller control port. This is a bit mapped
port which indicates which interrupts are pending. The LSB is INT 0 and
the MSB is INT 7.
For convenience these are the numbers you need to use for your interrupt
choice:
INT 2 - 0A FB
INT 3 - 0B F7
INT 4 - 0C EF
INT 5 - 0D DF
INT 7 - 0F 7F
So decide which port you are going to connect to, pick an interrupt and patch
one of the entries. I used COM3 and INT2 and patched the first table
entry (COM1) as:
0E 03 0A FB
As for other versions of Windows or other versions of mouse drivers I
would assume the same patch would work just go in and look for it!
Dave Karr
Email via Exec-PC
(414) 789-4210