====== MSX — Порт общего назначения ====== Порт ввода/вывода общего назначения назначения. В стандарте MSX определено два порта общего назначения, которые также могут использоваться для устройств ввода, таких как джойстик, мышь, трекбол, графический планшет, световое перо и т.п. Программа для тестирования оборудования: [[msx:hidtest:hidtest|]] |Вход/выход|вход 4 бита \\ выход 1 бит, двунаправленный 2 бита (на порт)| |Уровень|TTL| |Разъём|Девятиконтактный разъём AMP (D-SUB) (штырьки со стороны корпуса)| Порядок расположения контактов: ^ На разъёме \\ в MSX ^ На \\ устройстве ^ | {{db9_joystick_male.png|}} \\ [[http://wiki.icomp.de/w/images/7/73/Db9_joystick_male.png|оригинал]] | {{db9_joystick_female.png|}} \\ [[http://wiki.icomp.de/w/images/4/48/Db9_joystick_female.png|оригинал]] | Сигнальные линии интерфейса: |<10% 10% 80%>| ^ № ^ Сигнал ^ Направление ^ | 1 |FWD|вход| | 2 |BACK|вход| | 3 |LEFT|вход| | 4 |RIGHT|вход| | 5 |+5 В|| | 6 |TRG1|вход/выход| | 7 |TRG2|вход/выход| | 8 |COM|выход| | 9 |GND|| Должна быть обеспечена нагрузочная способность не менее 50мА. {{anchor:joystick}} ====== Джойстик ====== Есть два типа джойстиков: * Тип A — имеет одну кнопку или несколько кнопок, но сигнал не может быть распознан программно * Тип B — имеет две кнопки и можно программно определить, какая именно кнопка нажата Большинство доступных джойстиков относятся к типу B, и предполагается, что программное обеспечение также поддерживает тип B. Поэтому при использовании джойстиков типа А необходимо соблюдать осторожность. Схема подключения джойстика: \\ {{msx:datapack:files:1_1_3_13.svg|}} Примет простого оборудования для теста: \\ {{:msx:general_purpose_port:psg_joystick_test-01.jpg?350|}} ---- **[[msxorg>wiki/Joystick_control|Joystick control - MSX Wiki]]** [[https://icomp.de/shop-icomp/en/shop/product/competition-pro-retro.html|Competition PRO Retro]] http://wiki.icomp.de/wiki/Competition_Pro_Retro http://wiki.icomp.de/wiki/DB9-Joystick {{anchor:paddle}} ====== Манипулятор колесо ====== FIXME При вызове функции BIOS «PDL» компьютер посылает импульс на восьмой контакт порта ввода-вывода общего назначения. Этот импульс взводит одновибратор, который формирует ответный импульс переменной длины, возвращаясь в стабильное состояние через промежуток времени, зависящий от угла поворота переменного резистора, прикреплённого к ручке манипулятора. К каждому порту может быть подключено до шести манипуляторов включительно. Манипулятор колесо не будет поддерживаться системным программным обеспечением на MSX turbo R или более поздней версии MSX. Временная диаграмма колеса: \\ {{msx:datapack:files:1_1_3_14.svg|}} Схема подключения цепей колеса: \\ {{msx:datapack:files:1_1_3_15.svg|}} В [[msx:basic:|]] для обработки используется функция [[msx:basic_dialogue_programming_language:007#pdl|PDL()]] ---- [[msxorg>wiki/MSX_Paddle_Controller|MSX Paddle Controller]] ===== Arkanoid Paddle ===== * [[msxorg>wiki/Arkanoid_Vaus_Paddle|Arkanoid Vaus Paddle - MSX Wiki]] * [[msxorg>forum/msx-talk/hardware/dirt-cheap-vaus-paddle-clone-for-msx|Dirt-cheap Vaus paddle clone for MSX | MSX Resource Center]] * [[https://hackaday.io/project/170652-digiarka|Digi:Arka | Hackaday.io]] * [[github>Danjovic/MSX/tree/master/DigiArka|DigiArka]] {{anchor:mouse}} ====== Мышь ====== Мышь стандарта MSX подключается к интерфейсу ввода/вывода общего назначения, поэтому со стороны системного блока не требуется какой–либо ресурсоёмкой обработки и дополнительных схемных решений. Она может работать в двух режимах: режиме счётчика (это собственно и есть режим мыши) и в режиме эмуляции джойстика, поэтому может работать и с программным обеспечением, которое не поддерживает мышь. Список сигнальных линий мыши: ^ № контакта ^ Режим мыши (счётчик) ^ Режим джойстика ^ |1|Бит данных 0 |Вперёд| |2|Бит данных 1 |Назад| |3|Бит данных 2 |Влево| |4|Бит данных 3 |Вправо| |5|Питание +5В| — | |6|Левая кнопка|Кнопка 1| |7|Правая кнопка|Кнопка 2| |8|STROB (строб)|GND (общий)| |9|GND (общий)| — | ==== Режим мыши (счётчик) ==== Как было сказано выше, режим счётчика — это «родной» режим мыши. Мышь фиксирует смещение по координатам X и Y и модифицирует значение восьмибитного внутреннего счетчика. При получении запроса от системы данные передаются и значение счётчика обнуляется. Последовательность передачи данных приведена на рисунке. Формат передаваемых данных: \\ {{msx:datapack:files:1_1_3_16.svg|}} Данные передаются полубайтами, вначале координата X, потом Y по смене значения сигнала строба, как показано ниже. \\ Временная диаграмма передачи координат мыши:\\ {{msx:datapack:files:1_1_3_17.svg|}} Координаты мыши можно прочитать с помощью функции BIOS «GETPAD». Поскольку BIOS инициирует процедуру получения данных о координатах после запроса, в ответ на запрос передаются координаты, которые были получены при предыдущем вызове этой функции. ==== Режим джойстика ==== Если при включении MSX (то есть в момент подачи на мышь питания) нажата левая кнопка мыши, устанавливается режим джойстика. В этом режиме можно использовать мышь в качестве джойстика. На рисунке показан пример формирования сигнала, имитирующего результат наклона рукояти джойстика, на основе сигналов от двух оптических датчиков оптического энкодера одной из координат перемещения. Временная диаграмма режима джойстика: \\ {{msx:datapack:files:1_1_3_18.svg|}} Контроллеры для подключения манипуляторов мышь к MSX: * [[msx:mous4msx:mous4msx|]] * [[msx:msxhid1:msxhid1|]] ====== Ссылки ====== [[msxorg>wiki/General_Purpose_port|General Purpose port]] [[https://github.com/oboroc/msx-books/blob/master/msx2-fb-1993-ru.md#13|Архитектура и устройства микрокомпьютеров стандарта MSX 2 — 13. Универсальный интерфейс ввода/вывода]] [[github>hra1129/msx_tools]] JoyNet * [[http://web.archive.org/web/20021204054320/www.stack.nl/~mth/msx/joynet/|JoyNet: MSX joystick network]] * **[[http://map.tni.nl/resources/joynet/|JoyNet]]** {{tag>MSX Norm}}