[[Image:CPC mousepack 5.jpg|thumb|The mouse that came with the CPC mousepack]]
A mouse for the Amstrad CPC. The CPC mousepack was manufactured by the German company [[Reisware]] and a similiar product to the more known one from the British company [[Advanced Memory Systems]] the [[AMX Mouse]]. Mousepack came with software. But nothing else is known about this product. Please supply!
== Technical ==
Unknown how to The mouse/interface includes two buttons (0=pressed), and two signed 8bit motion counters (distance since last access : positive=up/left, negative=right/down). The buttons can be read via the mouse by softwarenormal BIOS keyboard scanning routines, the motion counters requires custom ASM code that reads & combines four 4bit fragments into two 8bit values (to be done once per frame). Joystick 1 Read (keyboard row 9): Bit0-3 Motion Counter (4bit fragment) (requires four reads to get the two signed 8bit values) Bit4 Left Mouse Button (aka Joystick Fire 2) (0=Pressed) Bit5 Right Mouse Button (aka Joystick Fire 1) (0=Pressed) Bit6 Unknown/Unused (aka Joystick Fire 3) (old CPC only, not CPC+) Bit7 Keyboard DEL key Joystick 2 Read (keyboard row 6): Bit0-7 Keyboard keys (dummy read from row 6 is done... to request/acknowledge something...?)
The Centaur screenshot exact mechanism that defines when the hardware does output the next 4bit fragment is unknown. The software does manipulate row 9 & row 6 signals, which does somehow request and/or acknowledge the fragments. Looking at the disassembled software, the hardware seems to work like so (see belownot confirmed) claims that using : switch from row0 to row9 --> invoke reading X counter (after 200 clks: MSB, after another 200 clks: LSB) switch from row9 to row6 --> terminate X read switch from row6 to row9 --> invoke reading Y counter (after 66 clks: MSB, after another 280 clks: LSB) switch from row9 to row6 --> terminate Y read switch from row6 to row0 --> terminate allWhereas, one of the program with "terminate" actions does apparently reset the motion counter(s) to zero. Instead of "row0" one could use any other mouse will cause malfunction" non- if that's truejoystick row (ie. anything else than row6, row9). The "invoke" actions do request the MSB, which is then it's apparently not [[AMX Mouse]] compatibleautomatically followed (without another request) by the LSB after some hundred clock cycles.
== Pictures ==