Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:general_purpose_port:general_purpose_port [2021-11-10 10:51] GreyWolf [General Purpose port] |
msx:general_purpose_port:general_purpose_port [2023-03-19 18:12] (текущий) GreyWolf [Мышь] |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== General Purpose port ====== | + | ====== MSX — Порт общего назначения ====== |
- | Порт общего назначения. | + | Порт ввода/вывода общего назначения назначения. |
В стандарте 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» компьютер посылает импульс на восьмой контакт порта ввода-вывода общего назначения. Этот импульс взводит одновибратор, который формирует ответный импульс переменной длины, возвращаясь в стабильное состояние через промежуток времени, зависящий от угла поворота переменного резистора, прикреплённого к ручке манипулятора. К каждому порту может быть подключено до шести манипуляторов включительно. | ||
+ | |||
+ | <WRAP center round important 60%> | ||
+ | Манипулятор колесо не будет поддерживаться системным программным обеспечением на MSX turbo R или более поздней версии MSX. | ||
+ | </WRAP> | ||
+ | |||
+ | Временная диаграмма колеса: \\ | ||
+ | {{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|]] | ||
====== Ссылки ====== | ====== Ссылки ====== | ||
Строка 9: | Строка 133: | ||
[[msxorg>wiki/General_Purpose_port|General Purpose port]] | [[msxorg>wiki/General_Purpose_port|General Purpose port]] | ||
- | {{tag>MSX Hardare}} | + | [[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}} |