Difference between revisions of "CPC-Mousepack 2.0"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(Pictures)
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
[[Image:CPC mousepack 5.jpg|thumb|The mouse that came with the CPC mousepack]]
 
[[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]].
+
A mouse for the Amstrad CPC. The CPC mousepack was distributed by the German company [[Reisware]].
 +
The mouse itself is an MSX mouse, which was sold by different companies like Sony and Philips for the MSX computers:
 +
 
 +
https://www.msx.org/wiki/Sony_MOS-1
 +
 
  
 
== Technical ==
 
== Technical ==
Line 16: Line 20:
 
   Bit0-7  Keyboard keys (dummy read from row 6 is done... to request/acknowledge something...?)
 
   Bit0-7  Keyboard keys (dummy read from row 6 is done... to request/acknowledge something...?)
  
The 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 (not confirmed):
+
As it is an MSX mouse you can find information how to read the mouse movements on an MSX here:
 +
 
 +
https://www.msx.org/wiki/Mouse/Trackball#Direct_usage_of_mouse
 +
 
 +
Now it's maybe possible to understanding the following (old text of this article) in a better way:...
 +
 
 +
 
 +
The 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 [[Media:CPC Mousepack 2.0 disassembly.txt|disassembled software]], the hardware seems to work like so (not confirmed):
 
   switch from row0 to row9 --> invoke reading X counter (after 200 clks: MSB, after another 200 clks: LSB)
 
   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 row9 to row6 --> terminate X read
Line 34: Line 45:
 
Image:Mauspack 2 2.jpg|
 
Image:Mauspack 2 2.jpg|
 
File:NoPicture.gif|Inside of Interface
 
File:NoPicture.gif|Inside of Interface
 +
</gallery>
 +
 +
<gallery caption="CPC Mousepack">
 +
Mousepack-box.jpg|The box
 +
Mousepack-contents.jpg|Box open
 
</gallery>
 
</gallery>
  
Line 55: Line 71:
 
* [[Media:CPC MousePack 2.0.zip]] - driver disk with sample tools
 
* [[Media:CPC MousePack 2.0.zip]] - driver disk with sample tools
  
[[Category:Hardware]] [[Category:Peripherals]]
+
[[Category:Input Device]][[Category:Peripherals]]

Latest revision as of 18:27, 5 June 2024

The mouse that came with the CPC mousepack

A mouse for the Amstrad CPC. The CPC mousepack was distributed by the German company Reisware. The mouse itself is an MSX mouse, which was sold by different companies like Sony and Philips for the MSX computers:

https://www.msx.org/wiki/Sony_MOS-1


Technical

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 normal 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...?)

As it is an MSX mouse you can find information how to read the mouse movements on an MSX here:

https://www.msx.org/wiki/Mouse/Trackball#Direct_usage_of_mouse

Now it's maybe possible to understanding the following (old text of this article) in a better way:...


The 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 (not confirmed):

 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 all

Whereas, one of the "terminate" actions does apparently reset the motion counter(s) to zero. Instead of "row0" one could use any other non-joystick row (ie. anything else than row6,row9). The "invoke" actions do request the MSB, which is then automatically followed (without another request) by the LSB after some hundred clock cycles.

Pictures

Screenshots

Aliases

The "Mousepack" mouse is sometimes referred to under different names (the names seem to be mainly coming from the software/copyright text on the floppy disks):

 Gerdes Mouse (Gerdes).
 Centaure mouse (Centaur graphics program, included on one of the disks).
 ASS Reis-Mouse (All System Software).
 Reisware-Mouse (Reisware)

Download