# Kempston Mouse

El Kempston Mouse o Kempston Mouse Interface es una interfaz para conectar un ratón a las computadoras Amstrad CPC, Amstrad PCW y Sinclair ZX Spectrum. Esta interfaz existe en una versión diferente para cada familia de computadoras. La interfaz original fue fabricada por Kempston Micro Electronics. El ratón conectado a través de esta interfaz se denomina Kempston mouse (checo Kempston myš) o KMouse. Un mouse conectado a través de la interfaz de mouse Kempston se convirtió en equipo estándar en los clones rusos ZX Spectrum.
A diferencia del AMX Mouse, el Kempston mouse tiene dos botones. A diferencia del A-Mouse no es necesario que el software procese más las señales que provienen del mouse, ya que la interfaz proporciona directamente las coordenadas de la posición del mouse en el rango de valores 0-255.
Kempston Mouse es compatible, por ejemplo, con el programa Art Studio o el juego Carrier Command.
El ratón Kempston se emula en el emulador Speccy.
El mouse suministrado con las computadoras Kompakt profesional y Kompakt 128 también se conoce como mouse Kempston, pero no es compatible con la interfaz de mouse Kempston, su nombre se deriva del hecho de que el mouse está conectado de tal manera que simula un Kempston joystick.

## Información técnica
### Amstrad CPC

La interfaz utiliza tres puertos 64239, 64494 y 64495 para su funcionamiento con el siguiente significado:
| decimal | hexadecimal | sentido |
| 64239 | FAEF | botones del ratón |
| 64494 | FBEE | Coordenadas X del ratón |
| 64495 | FBEF | Coordenadas Y del ratón |

### Amstrad PCW

La interfaz utiliza tres puertos 208, 209 y 212 para su funcionamiento con el siguiente significado:
| decimal | hexadecimal | sentido |
| 208 | D0 | Coordenadas X del ratón |
| 209 | D1 | Coordenadas Y del ratón |
| 212 | D4 | botones del ratón |

### Sinclair ZX Spectrum

La interfaz utiliza tres puertos 64223, 64479 y 65503 para su funcionamiento con el siguiente significado:
| decimal | hexadecimal | descodificación | decodificación (versión rusa) | sentido |
| 64223 | FADF | xxxxxx10 xx0xxxxx | xxxxx0x0 1x0xxxx1 | botones del ratón |
| 64479 | FBDF | xxxxx011 xx0xxxxx | xxxxx0x1 1x0xxxx1 | Coordenadas X del ratón |
| 65503 | FFDF | xxxxx111 xx0xxxxx | xxxxx1x1 1x0xxxx1 | Coordenadas Y del ratón |
Después de la extensión del mouse con rueda, Velesoft propuso una extensión de esta interfaz para que el estado de la rueda se leyera en el puerto 65247/FEDF; sin embargo, debido a la compatibilidad con la extensión del mouse ruso para leer el estado de la rueda, esta extensión se abandonó. La extensión Russian Kempston Mouse Interface permite leer el estado de la rueda y el botón central del mouse en los bits no utilizados del puerto 64223.

#### KMouse Turbo 2008

Velesoft es el autor de una variante del Kempston Mouse Interface llamada KMouse Turbo 2008, que permite la conexión de dos ratones.
En esta versión, el mouse principal usa los mismos puertos que la interfaz de mouse de Kempston, el mouse secundario usa los nuevos puertos. Si se van a conectar dos ratones a la computadora, se deben usar dos interfaces, una de las cuales está configurada como primaria y la otra como secundaria. La interfaz también permite la conexión de un joystick, que en el caso de la interfaz principal se trata como un Kempston joystick, en el caso de una interfaz secundaria se trata como un Fuller joystick. Si tanto un mouse como un joystick están conectados a la interfaz, ambos dispositivos no pueden funcionar al mismo tiempo, solo uno de ellos está activo (aquel en el que se presionó uno de sus botones por última vez).
La interfaz también permite conectar un ratón desde los ordenadores Amiga en lugar de un joystick . Si se detecta esto, el mouse se comporta como un mouse Kempston y como un A-Mouse. Incluso en este caso, también se puede conectar un mouse serie estándar y, al presionar uno de los botones del mouse dado, se cambia su actividad. Además, la interfaz incluye conexiones para leer el estado del puerto de paginación 7FFD Sinclair ZX Spectrum 128K.
KMouse Turbo utiliza los siguientes puertos:
| decimal | hexadecimal | descodificación | sentido |
| 64223 | FADF | 1xxxx0x0 11011111 | ratón principal: botones, rueda |
| 64479 | FBDF | 1xxxx0x1 11011111 | ratón principal: coordenadas X |
| 65503 | FFDF | 1xxxx1x1 11011111 | ratón principal: coordenadas Y |
| 65503 | FEDF | 1xxxx1x0 11011111 | valor del puerto de paginación 7FFD |
| 15071 | 3ADF | 0xxxx0x0 11011111 | ratón secundario: botones, rueda |
| 15327 | 3BDF | 0xxxx0x1 11011111 | ratón secundario: coordenadas X |
| 16351 | 3FDF | 0xxxx1x1 11011111 | ratón secundario: coordenadas Y |
| 16095 | 3EDF | 0xxxx1x0 11011111 | lectura: valor del puerto de paginación 7FFD escritura: inhibe el mouse primario y secundario y el joystick Fuller |
| opcional: ||||
| 31 | 1F | 00011111 | Kempston joystick/AMouse – solo interfaz principal |
| 127 | 7F | 01111111 | Fuller joystick – solo interfaz secundaria |

## Literatura

* «The artist's mice». Sinclair User (49). ISSN 0262-5458. Archivado desde el original el 6 de agosto de 2012. Consultado el 27 de junio de 2021.