Serial RS232 Mouse

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search

Serial RS232 mice could be connected to RS232 interfaces, such like the Amstrad Serial Interface, or to other (in-)compatible Serial interfaces (see Peripherals for a complete list of known Serial interfaces).

  • With their hardware based motion-counters, these mice would give much better resolution (5120 mickeys/second) (forty 3-byte packets/second) than the AMX Mouse (300 mickeys/second). Another approach to use a RS232 mouse would be a mouse interface like the AMX Kit, though that'd cripple the resolution to the AMX level.

Known CPC Software that supports RS232 Mice

  • The Aleste 520EX uses its built-in RS232 port to access a serial mouse. [not sure if that's supported at BIOS level, or if it requires special software, like the MSXDOS disk or so?]

Standard Serial Mouse (most common)

A serial mouse should be read at 1200 bauds, 7 data bits, no parity, 1 stop bit (7N1) with DTR and RTS on. For best compatibility, the mouse should output 2 stop bits (so it could be alternately also read as 7N2 or 8N1). When the mouse gets moved, or when a button gets pressed/released, the mouse sends 3 or 4 characters:

 __First Character____________________
 6    First Character Flag (1)
 5    Left Button  (1=Pressed)
 4    Right Button (1=Pressed)
 2-3  Upper 2bit of Vertical Motion
 0-1  Upper 2bit of Horizontal Motion
 __Second Character___________________
 6    Non-first Character Flag (0)
 5-0  Lower 6bit of Horizontal Motion
 __Third Character____________________
 6    Non-first Character Flag (0)
 5-0  Lower 6bit of Vertical Motion
 __Fourth Character (if any)__________
 6    Non-first Character Flag (0)
 5    Middle Button (1=Pressed)
 4    Unused ???
 3-0  Wheel  ???

Additionally, the mouse outputs a detection character (when switching RTS (or DTR?) off and on:

 "M" = Two-Button Mouse (aka "Microsoft" mouse)
 "3" = Three-Button Mouse (aka "Logitech" mouse)
 "Z" = Mouse-Wheel

Normally, the detection response consist of a single character (usually "M"), though some mice have the "M" followed by 11 additional characters of garbage or version information (these extra characters have bit6=0, so after detection, one should ignore all characters until receiving the first data character with bit6=1).

Mouse Systems Serial Mouse (quite rare)

Accessed at 1200 bauds, just like standard serial mouse, but with 8N1 instead 7N1, and with different data bytes.

 __First Byte_________________________
 7-3  First Byte Code (10000b)
 2    Left? Button   (0=Pressed)
 1    Middle? Button (0=Pressed)
 0    Right? Button  (0=Pressed)
 __Second Byte________________________
 7-0  Horizontal Motion (X1)
 __Third Byte_________________________
 7-0  Vertical Motion   (Y1)
 __Fourth Byte________________________
 7-0  Horizontal Motion (X2)
 __Fifth Byte_________________________
 7-0  Vertical Motion   (Y2)

The strange duplicated 8bit motion values are usually simply added together, ie. X=X1+X2 and Y=Y1+Y2, producing 9bit motion values.


Mice do return raw mickeys, so effects like double speed threshold must (should) be implemented by software.