Changes
This mouse is supported by [[The OCP Art Studio]], [[The Advanced OCP Art Studio]]and [[Carrier Command]]. It is emulated in [[Arnold (Emulator)|Arnold]], [[ACE_(Emulator)|ACE]] and [[ACE-DL]]. == Pictures == <gallery caption="Kempston Mouse Interface">Image:KempstonMouseInterfaceTop.jpg|Back (showing mouse connector) - faces away from CPCImage:KempstonMouseInterfaceBottom.jpg|Front (showing edge connector) - faces CPCImage:KempstonMouseInterfaceSide1.jpg|Side Image:KempstonMouseInterfaceSide2.jpg|Other sideImage:KempstonMouseInterfaceAbove.jpg|From aboveImage:KempstonMouseInterfaceUnder.jpg|From belowImage:KempstonMousePCBTop.jpg|PCB (joystick connector side)Image:KempstonMousePCBUnder.jpg|PCB (edge connector side)</gallery> <gallery caption="Kempston compatible mouse">Image:KempstonMouse.jpg|Kempston MouseImage:KempstonMouseUnder.jpg|Kempston Mouse (under)</gallery>
== Technical ==
dist=new-old, old=new
whereas,
dist=-01h..-80h moved left/down
==== Buttons:====
Port FAEFh READ: Kempston Mouse Buttons
bit 0: Left Right Button (active low) bit 1: Right Left Button (active low) bit 2..7: not used. report as high (1) Number of supported mouse buttons is unknown. It is believed to be 2. The mouse that comes with the interface has two.
== Review (German) ==
From an article about the "Amstrad Consumer Show" in german German magazine "Happy Computer 12/1986":
* "Bewundern Sie auch die Maussteuerung eines Atari ST oder eines Schneider PC? Bei Kempston gibt es für 69,95 Pfund auch für Ihren CPC oder Joyce so eine komfortable Benutzeroberfläche. Die Maus entspricht dabei völlig dem Standard mit zwei unabhängigen Tasten. Das mitgelieferte Desktop-Programm braucht sich vor den Brüdern auf 16-Bit-Computern nicht zu verstecken."
== Get mouse position on screen == Calculating the mouse position from the information given on the Kempston mouse ports is easy. We will proceed in 2 steps: 1. Calculate mouse pointer location on a virtual screen that has a 640*400 resolution. 2. Translate position from the virtual screen to the current CPC screen mode. Here is the algorithm in pseudo-code: # initMouse initializes variables and centers the mouse pointer on screen def initMouse(): maxX = 639 maxY = 399 # centering the mouse pointer on the screen virtualX = maxX >> 1 # maxX/2 virtualY = maxY >> 1 # maxY/2 # store raw mouse values oldX = inp(&FBEE) oldY = inp(&FBEF) # get mouse pointer position refreshMouse() def refreshMouse(): # get raw mouse values rawX = inp(&FBEE) rawY = inp(&FBEF) # get the relative mouse displacement since last call deltaX = rawX - oldX deltaY = rawY - oldY # store raw mouse values oldX = rawX oldY = rawY # calculate new unclipped virtual position virtualX = virtualX + deltaX virtualY = virtualY - deltaY # Kempston mouse Y-axis is inverted compared to screen coordinates! # perform clipping if virtualX < 0: virtualX = 0 elif virtualX > maxX: virtualX = maxX if virtualY < 0: virtualY = 0 elif virtualY > maxY: virtualY = maxY # now we translate position from the virtual screen to the current CPC screen mode mouseX = virtualX if graphicsMode == 2 else (virtualX >> 1 if graphicsMode == 1 else virtualX >> 2) mouseY = virtualY >> 1 == Manual == * Any manual exists? == Downloads == * Any kempston example or driver software exists? [[Category:Peripherals]][[Category:Input Device]]