На Амиге для счёта положения мыши используются байтовые счётчики со знаком, и AmigaOS проверяет их один раз каждый обратный ход луча. Это означает, что мышь может перемещаться только на 127*КадроваяЧастота пикселов в секунду (6096 пикселов в секунду для дефолтового DblPAL). Если это значение превышено, AmigaOS не может определить истинное перемещение мыши, и стрелка начинает хаотично метаться по экрану. Для исправления этого эффекта, мой PS/2 контроллер ограничивает перемещение до 6000 пикселов в секунду. Если мышь перемещается быстрее, перемещение будет запомнено и отработано на скорости 6000 пикселов в секунду.
Более медленные перемещения всегда отрабатываются на своей реальной скорости.
Как известно, RS-232C (так же известные как «COM») мыши на PC имеют исключительно отстойное качество - мышиная стрелка с ними не перемещается, а сколее прыгает. Это происходит из-за того, что обычная трёхкнопочная RS-232C мышь сообщает о своём состоянии всего 25 раз в секунду (а кадровая частота обычно в несколько раз больше этого значения). PS/2 мыши работают лучше - все они умеют сообщать о изменении сосотяния как минимум 80 раз в секунду, и большинство из них (исключая пятикнопочные мыши) умеют это делать даже 200 раз в секунду. Но это тоже не идеал - поскольку скорость обновления с мыши вызывает «биения» (интерференцию) с частотой обновления экрана, которая обычно имеет сходную величину (для сравнения - 80 герц для Genius NetScroll Optical и 72 герца для популярного экранного режима Super72). Для исправления этого, мой контроллер перемещает «виртуальную амижную мышь» плавно. Если пользователь перемещает PS/2 мышь на 500 пикселов в секунду, Амига получит с моего контроллера истинные 500 пикселов в секунду, с не менее истинными двухмиллисекундными интервалами - Вы можете взять осциллограф и проверить это. Приведённая ниже иллюстрация наглядно демонстрирует эту идею:

Большинство (если не все) остальных контроллеров PC-мышей не имеют чего-либо подобного, и перемещают «виртуальную амижную мышь» рывками после каждого пакета байтов с PC-мыши. Например, если пользователь перемещает RS-232C мышь на 500 пикселов в секунду, и мышь посылает 25 пакетов в секунду, Амига получит 25 пакетов по 20 быстрых (несколько микросекунд между отсчётами) перемещений в секунду, с почти 40-миллисекундными интервалами между пакетами. Если пользователь имеет 75 герц кадровой частоты, положение мышиной стрелки будет обновляться только каждый третий вертикальный ход луча, и прыжки мышиной стрелки (по сравнению с идеально плавной амижной мышью) будут только подталкивать пользователя к самоубийству при помощи шнура от мыши :-)
Мой PS/2 контроллер свободен от этих эффектов. Теоретически я даже могу сделать плавный контроллер RS-232C мышей, но это бессмысленно ввиду фактической смерти RS-232C мышей как явления. Современные оптические мыши уже не имеют RS-232C версий, но не существует современных мышей без PS/2 версии.
Некоторые китайские мыши не только очень дешевы, но и очени нестабильны. Встроенный в мышь контроллер может зависнуть и даже не отвечать на команду сброса. Такие мыши на PC требуют реконнекта (и иногда ребута) - либо передёргивания питания. Мой контроллер в случае двухсекундной «тишины» (когда пользователь не трогает мышь) спрашивает мышь о её состоянии. Если мышь не отвечает, контроллер автоматически снимает с неё питание на некоторое время.
Будьте внимательны: аппаратный сброс не работает на пятикнопочной версии контроллера из-за нехватки контактов PIC'а - вы можете выбирать между пятикнопочной версией и качественной мышью, и четырёхкнопочной версией для отстойных мышей. Однако, в любом случае, экстренный сброс мыши можно осуществить путём её «перетыкания» на лету...
Благодаря предыдущей возможности, контроллер будет определять смену мыши, и даже корректно определять её дополнительные возможности (или их отсутствие). Вам не нужно не только заменять драйвера, но даже перегружаться для смены мыши на абсолютно другую: смело меняйте её «на лету» - это вам не PC :)
Microsoft (в данном контексте это не ругательство, а всего лишь название компании) вместо своей обычной практики утаивания разных тонкостей, опубликовал протоколы своих «колёсных» мышей. Этот протокол имеет два уровня - протокол трёхкнопочной колёсной мыши (Intellimouse), и протокол пятикнопочной колёсной мыши (Intellimouse Explorer). На рынке присутствует множество совместимых с первым уровнем этого протокола мышей (например, упомянутый выше Genius NetScroll Optical). Все эти мыши должны работать с колёсиком на моём контроллере.
Некоторые другие мыши поддерживают и второй уровень протокола. Например, это мышка A4Tech WOP-35. С моим контроллером на таких мышах поддерживаются все пять кнопок. Если Вы используете четырёхкнопочную версию моего контроллера, обе дополнительные кнопки будут работать как одна.
Некоторые мыши, типа описанной Genius NetScroll Optical, могут поддерживать только первый уровень протокола Microsoft - хотя имеют дополнительные кнопки. Для поддержки дополнительных возможностей в таких мышах реализован собственный протокол. Начиная с версии 1.5, контроллер поддерживает оба пятикнопочных протокола, включая протокол NetScroll Optical.
Другие мыши, типа A4Tech WOP-35, могут также иметь совместимость с протоколами MS и свои собственные протоколы - для дополнительных колёсиков (WOP-35), «отдачи» (Logitech iFeel) и т.п. Некоторые мыши имеют другую идеологию органов управления - как, например, «джойстик» между кнопками Maxxtro. Дополнительные возможности всех этих мышей пока не могут быть использованы с моим контроллером - но всё меняется :-)
Если у Вас не поддерживаемая моим контроллером мышь, Вы можете передать её мне лично или послать по почте (либо прислать сумму, достаточную для её покупки здесь) - и я сделаю её поддержку. Заинтересованы?
До этого времени на Амиге поддерживалось максимум четыре кнопки мыши. Мой контроллер преодолел этот барьер - пусть будет больше кнопок, хороших и разных! :)
Вы можете переключить вертикальный скроллинг на горизонтальный с помощью нажатия выделенной для этого клавиши или кнопки мыши. Могут использоваться клавиши Ctrl/Alt/Shift/Amiga на клавиатуре, любая кнопка мыши, любая кнопка джойстика.
Стандарт NewMouse описывает внутренний протокол AmigaOS для «колёсных» мышей. Есть ряд программ, совместимых с этим стандартом - например, утилита MUIWheel и пакет Directory Opus Magellan. Все эти программы будут работать с моим PS/2 контроллером.
К сожалению, этот стандарт описывает только четыре кнопки мыши. Но в любом случае, любая из двух дополнительных кнопок может быть использована как абстрактная четвёртая кнопка, и вторая - как временный переключатель направления скроллинга (вертикальный/горизонтальный). Также можно использовать обе кнопки как горизонтальный скроллер.
WheelBusMouse на самом деле не является драйвером колёсика для моего переходника. Это самостоятельный программный продукт, позволяющий подключать к Амиге переделанные PC-мыши с сохранением дополнительных функций. Контроллер полностью электрически совместим с переделанной мышью - и в результате с пакетом WBM. Таким образом, Вы можете установить пакет WBM и переделать мышь вместо изготовления моего переходника. А можно и наоборот :)
Поскольку для колёсика используются такие же квадратурные сигналы, как и для основной функции мыши, то Вы даже можете просто воткнуть в джойстиковый порт вторую мышь и использовать её в качестве скроллера ;-)
То, что сигналы колёсика заводятся на джойстиковый порт - никак не мешает использованию джойстика. Контроллер не нужно «перетыкать» - можно сделать для него «проходной» разъём, или вообще смонтировать его путём припаивания проводами к материнке в desktop/tower варианте Амиги. Более того, вы можете использовать даже ВТОРОЙ джойстик безе «перетыкания« - просто подключив его параллельно мышиному контроллеру!
Для реализации таких чудес применено простейшее решение. Очевидно, что джойстик и мышь одновременно обычно не требуются. Поэтому для активации джойстика достаточно нажать на нём Fire - контроллер обнаружит это и уберёт с джойстикового порта свои сигналы. Это ещё не является каким-то особенным режимом его работы - при прокручивании колёсика сигналы появятся вновь.
Для того, чтобы начать использовать два джойстика - нужно на втором (подключённом параллельно мыши) опять же нажать кнопку Fire. После этого контроллер полностью отключится, убрав свои сигналы с обоих портов. Более того, он никак себя не будет проявлять даже при движении мыши - что ликвидирует неприятные эффекты во время игры, если Вы случайно заденете мышь.
Чтобы вернуть контроллер в «мышиное состояние» - нажмите любую кнопку мыши.
Контроллер не использует никаких программных последовательных протоколов - типа применяемого для считывания состояния игрового контроллера CD32. Не используется аналого-цифровых преобразований, не используются прерывания - как для сериальных мышей. Таким образом, количество обращений к чипсету сводится до абсолютного минимума, и этот вариант реализации «колёсных» мышей можно считать наиболее шустрым среди всех имеющихся.
Вы всё ещё сомневаетесь в этом? :) ;) =)