Micromys

From IndividualComputers
Jump to: navigation, search
(thumbnail)
Micromys V3
(thumbnail)
Micromys V4

Contents

General

PS2 mouse adapter

Micromys V3/V4 lets you use a modern optical mouse with your C64, Amiga or Atari ST/Falcon computer. A USB mouse can be used with a USB to PS2 adapter, provided that the mouse supports the PS2 protocol. While other interfaces may offer the same functionality, Micromys V3/V4 have their strength in the small details: The flexible mechanical construction does not put mechanical stress on the mouse/joystick port of your computer. Even the mouse wheel can be used in C64 and Amiga programs. Hot-plugging is supported, and operation with KVM switches is flawless, while our competitors often don't work at all in such configurations.

For the C64, the adapter will emulate a Commodore 1351 proportional mouse. Programs like Prophet64, MSSIAH, Geos, GoDot and others that use a mouse will work without any additional drivers and with the comfort of a modern mouse or trackball. Even the joystick-emulation mode of the 1351 is implemented!

Atari ST/Falcon users can only use two mouse buttons, but will enjoy the hot-plug compatibility, which has not been demonstrated by any other mouse adapter for that computer.

For the Amiga, there's two modes of operation: One that allows using the adapter without any drivers, emulating a 3-button mouse (as shipped with some A3000 models), and another mode that allows using the mouse wheel in conjunction with our free driver. Both modes work flawlessly without any drivers and let you use the Amiga's early startup menu.

Micromys V3

Micromys V3 can be configured for the different target systems by DIP switches. Read more about the product on the dedicated Micromys_V3 page.

In case you wondered what happened to "Micromys V2", it's an intermediate design that was never available in the shops. Individual Computers has bought the design in a half-working state from Marko Herold and did major updates to the code, which justified the version bump to V3. The design is RoHS compliant now, and it's compatible with Amiga and Atari ST. The new design uses a new chip version that is RoHS compliant and ensures the availability of Micromys V3 for many years in the future.

Micromys V4

Micromys V4 is the next generation of Micromys which implements a highly sophisticated auto-detect function of the host computer, so DIP switches are not required any more. Further, the case has become a lot smaller, and we have increased the length of the cable, which makes using the adapter on Atari ST and Falcon a lot easier.

Micromys V4 of course retains the high compatibilty of its predecessor, the Micromys V3 adapter. USB mice supporting the PS/2 protocol also work with the Micromys adapter. These are usually shipped with an adapter from USB to PS2.

In order to deal with space constraints on every desk, the Micromys V4 comes with a longer cable than it's predecessor. This design allows installation on every narrow desk, even when a bulky USB-PS/2 adapter is being used. Please note that due to the space constraints around the Amiga 600 mouse port and port 1 of the Commodore 128, an additional adapter with a smaller plug or modification of the Micromys plug is required.

Modes of operation

Amiga wheel mode

Just plug in and switch on. Device will auto-detect that it's connected to an Amiga and switch to 2-button mode with wheel support. Wheel and middle-mouse button can be activated with our driver. No further connections to the Amiga are required: Wheel and middle mouse button data is all transferred through the same mouse port, and the joystick port remains free.

Amiga 3-button mode without drivers

Since you don't have DIP switches on Micromys V4 any more, the 3-button mode for Amiga computers is entered only by holding down the middle mouse button while the computer is starting. This will disable the wheel functions of Micromys V4, but enable the middle mouse button that does not require any driver. In this mode, Micromys will emulate a mouse just like the rare 3-button mice that have been shipped with some A3000 models. The middle mouse button is supported by programs like DirOpus 4. This mode stays active until the next power cycle. A machine reset does not alter the mode of operation - only a power-cycle does.

Atari ST/STe/Falcon

Just plug in and switch on. Micromys will auto-detect that it's connected to an Atari and switch to that mode. The Atari mode supports two mouse buttons, additional buttons or a mouse wheel are ignored.

The following models could not be tested, but should work flawlessly with the Micromys adapter anyway: Atari Stacy, Atari TT 030, C-LAB Falcon, ATW (Atari Transputer Workstation 800 - ABAQ).

C64 or C128 in joystick port 1

This is the usual port for a 1351 mouse. Most programs use it for the proportional mouse, because the GEOS operating system expects the mouse there. If Micromys V4 is plugged into port 1, it detects the machine and switches to 1351 mode. Should the user hold down the right mouse button during power-up, the unit goes to joystick emulation mode, just like the real 1351 mouse would do.

C64 or C128 in joystick port 2

This is a rather unusual port for a proportional mouse. However, the popular music programs MSSIAH and Prophet64 use the mouse in that port, so we're also covering this mode of operation. If the user wants to use joystick port 2, then Micromys must be attached to port 2 after the program has been started. The program must be set to use the mouse, and then the adapter can be attached to port 2. Since auto-detect in port 2 is highly depending on software (thus may not always work), Micromys V4 can be configured to be C64-only by removing the auto-detect jumper inside the case. Once the jumper is removed, the auto-detect sequence is bypassed and the unit will work in C64-only mode on any port of any computer. This will also let you use the joystick emulation mode on other computers than the C64.

Installing the Amiga driver

Download the driver here. The archive contains the driver, an installer-script and instructions in AmigaGuide format. The instructions are available in English and in German. These drivers can be used with AmigaOS V2.0 and higher. Wheel movements are passed into the system according to the "Newmouse" standard. MUI programs will recognize this without any further software. All other programs require an additional program like Freewheel, which is available on Aminet.

Jumper Settings

Please enable Javascript to use this feature.

Developer Information

C64

The current mouse position can be taken from the SID registers $D419 (X-value) and $D41A (y-value). However, these values are not absolute, but relative movements of the mouse. You need to store the current state of the register, delay a certain amount of time and re-read the register. This is preferrably done in an IRQ routine. The difference between the two values gives an indication of the mouse movement during the delay interval. We won't go into detail about this here, as there's other literature available about 1351 mouse programming that applies 100% to Micromys as well.

additional signals in 1351 mode

Micromys will not only translate the left and right mouse buttons, but also wheel movements and the middle mouse button to the C64. This is done using the joystick direction lines that are normally not used by the original 1351 mouse. If the wheel is not moved or pressed, the nomally-unused signals remain untouched, so full compatibility to the original 1351 mouse is still given. The following description gives some idea from a programmer's point of view.

Bit 7 6 5 4 3 2 1 0
Function -- -- -- LMB DN UP MMB RMB

This bit layout is valid for both control ports. Port 1 is located at CIA address $DC01, and port 2 is located at CIA address $DC00. Bits 7, 6 and 5 are unused and should be masked out. All five signals are active-low:

LMB stands for left mouse button

RMB stands for right mouse button

MMB stands for middle mouse button

UP is the scrollwheel-flag for up-movements

DN is the scrollwheel-flag for down-movments

If a button is pressed, it will be represented as a 0 in the corresponding bit. If it is released, the corresponding bit will be 1.

If the wheel is moved up or down, a sequence of pulses appears on the UP or DN bits of the above port registers. The number of pulses is exactly the number of increments that the wheel has been moved. The following picture illustrates two pulses for a wheel movement of two clicks:

Micromys Wheel pulses.png

The idle state of the UP and DN bits is 1, and the pulses bring the bit to zero for a period of 50ms. The time between two pulses is also about 50ms. The time may vary by about 4%, mainly caused by different timings between PAL and NTSC machines (Micromys V3 takes a timebase from the potentiometer conversion rate, which is affected by the different clock speeds of the different C64 video norms). This also means that you don't need to tweak your code to run on NTSC and PAL - with changing C64 timing, the Micromys V3 timing will automatically adapt. The number of CPU cycles between low-pulses is the same on PAL and NTSC machines.

Sampling the UP and DN bits should be done at a rate of at least 45ms in order not to miss a pulse. You should count the number of high-to-low changes, but not the static signal in the UP and DN bits. If you link your wheel-routine with the system timer interrupt (Jiffy IRQ), the sampling rate will be high enough, as the interrupt occurs every 17ms (60Hz). Other interrupt sources like a raster-IRQ are also possible, as even a PAL raster IRQ comes at a rate of 50Hz (20ms).

This part of the manual also applies to the old Micromys, originally developed by Marko Herold, who sold the design to us. The difference to the older hardware is the absence of DIP switches and therefore the absence of Amiga- and Atari modes. The C64 / 1351 emulation mode is identical to Micromys V1, so any software that you write for the C64 will also work with the existing customer base. We're happy to answer any support questions, including code review and cross-testing with the old Micromys model and the original 1351 mouse. Let us know if we should update the list of programs on this site with a link to your software!

Amiga

Wheel and middle mouse button data is transferred through the potentiomenter input (PotX). Although this is an analog input, it's two digital units talking to each other, and the protocol nulls any error in transmission. The protocol for transporting the data into the Amiga aims at the least possible CPU usage, and it's making smart use of the Amiga's hardware.

First of all, set the PotX line into potentiometer mode and make sure that the operating system does not change this setting back to "digital input" in the VBlank IRQ. Note that the Amiga requires the software to start each and every measurement. The fact that every measurement is a discrete process is used by Micromys, as two values are transferred to the Amiga for a single set of wheel data: One calibration value and a data value that includes four valid bits of data. The calibration value is required, because values change with different screenmodes.

Read two consecutive values from the PotX register, doing two measurements. It does not matter in what order you actually read the two values, as the calibration value is always the same. The calibration value is always bigger than the data value, so the two are easily distinguished. The following assumes that you have put the calibration value (the larger one) into variable A, and the data value into variable B. Variable C is a working-variable.

C=(B*127/A) - 9 

Reduce variable C to an unsigned byte by cutting off any fractions. This really means cutting off fractions, not mathematical rounding! The data word C now contains the middle mouse button in bit 6. In other words: If C is larger or equal to 64, then the middle mouse button (or wheel) is pressed. If the MMB is pressed, subtract 64 from C and continue:

C=2*C/3 

This time, do not just cut off fractions, but round mathematically correct. Bits 4,3 and 2 now contain the lower three bits of the scroll-counter, where bit 4 is the LSB:

Bit 7 6 5 4 3 2 1 0
Function 0 0 0 SCRL0 SCRL1 SCRL2 0 0

Should bit 0 and 1 of C not be 0, they can be used to identify and correct any measurement errors. In addition to that, the order of the bits allows you to reduce the number of valid bits to two, in case an extremely low HSync frequency introduces more error than the protocol can balance.

Download

  • Amiga driver for 68020 and higher processors; install script: Micromys.lha (June 2009)
  • Amiga driver only, re-compiled for 68000 processor (binary only): Micromys_68000.lha (March 2013)

Shop

Resellers

Please shop locally. Our partners are listed in alphabetical order.

Personal tools