Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Все, что не подходит под определение "старого софта и железа", обсуждается здесь
Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение Rio444 » 19.09.2020,01:34

Адаптер для подключения AT PS/2 клавиатуры к IBM PC XT 8088.
Является доработанным аналогом схемы на PIC.
Выполнен на AVR ATtiny25. Обладает всеми функциями и возможностями последней прошивки для PIC, плюс дополнительными.
Главная особенность - все настройки выполняются по нажатию комбинации клавиш на клавиатуре.
Возможности и преимущества:
- отключение/включение передачи кодов E0/E1 (эмуляция 83/84-клавишной и 101/102-клавишной клавиатур, соответственно),
- настройка скорости автоповтора и паузы перед автоповтором, при нажатии и удержании клавиши,
- возможность автоматического включения Num Lock при старте компьютера (или перезагрузке),
- возможность перевода клавиатуры в режим передачи XT-кодов, без преобразования адаптером,
- подтверждение правильности выполняемых действий миганием индикаторов на клавиатуре,
- сохранение произведенных настроек в энергонезависимой памяти,
- состояние индикаторов на клавиатуре соответствует нажатию клавиш Num Lock, Caps Lock, Scroll Lock,
- исключено ложное изменение индикаторов при нажатии на Pause/Break и другие клавиши (частью кода которых являются коды Num Lock, Caps Lock, Scroll Lock),
- заблокирован автоповтор при нажатии на Num Lock, Caps Lock, Scroll Lock.

Изображение
Изображение

Настройка
Перед входом в режим настроек желательно погасить все индикаторы на клавиатуре (кроме Num Lock, см. ниже), нажимая клавиши Caps Lock и Scroll Lock.
Для входа в режим настроек нужно нажать клавишу F11, и не отпуская её (до самого конца настроек), нажать (и отпустить) F12.
Клавиша F11 продолжает оставаться нажатой. Отпускание клавиши F11 - выход из режима настроек и сохранение изменений.
Нажатие (и отпускание) клавиши F11 передаётся в XT. Все остальные нажатия на клавиши в режиме настроек в XT не передаются.
Если после нажатия на F11, F12 вход в режим настроек произведён, (погашенные) индикаторы клавиатуры зажгутся на 0,3 сек.
Также далее любое допустимое действие будет подтверждаться миганием индикаторов.
Любое действие производится нажатием (и отпусканием) соответствующей клавиши (клавиша F11 всё время удерживается нажатой).
Возможные варианты команд (все буквы латинские):
1. "E" - Enable E0/E1 - включить передачу кодов E0 и E1. На 101/102-клавишной клавиатуре код E0 предшествует основному коду и необходим для того, чтобы отличить дублирующие клавиши от основных. В частности: правый Alt и Ctrl от левого, клавиши блока стрелок и блок Insert/Delete/Home/End/Page Up/Page Down от соответствующих клавиш на блоке цифровых клавиш (расположенном справа от основного блока клавиш). В большинстве случаев передача кода E0 предпочтительна. Но некоторые старые программы, разработанные до появления 101/102-клавишной клавиатуры могут неадекватно реагировать на этот код. Чтобы его отключить служит следующая команда.
2. "D" - Disable E0/E1 - отключить передачу кодов E0/E1, перейти в режим совместимости с 83/84-клавишной клавиатурой. В этом случае левый Alt и правый не различаются, как левый и правый Ctrl. Нажатия на стрелки равноценны нажатию на клавиши малого цифрового блока и т.д.
Код E1, аналогично коду E1 используется как префикс для некоторых клавиш, отсутствующих на 83/84-клавишной клавиатуре (например Pause).

Как известно, при нажатии на любую клавишу и её удержании, через некоторое время начинается автоповтор нажатия.
Для его настройки служат следующие команды.
3. "P" (Pause) - задать паузу перед автоповтором. После ввода этой команды нужно нажать клавишу от 1 до 4 (на основном блоке клавиш), что будет соответствовать паузе в [число*1/4] секунд. Т.е. при нажатии "1" пауза составит 1/4 сек, при нажатии "2" - 2/4 сек и так далее. По умолчанию пауза составляет 2/4 сек, т.е. 0,5 сек.
4. Набрать число от 3 до 29 (на основном блоке клавиш) - задание частоты автоповтора от 3 до 30 нажатий в секунду. Возможная частота автоповтора ограничена значениями: 30,0; 26,6; 24,0; 21,8; 20,0; 18,4; 17,1; 16,0; 15,0; 13,3; 12,0; 10,9; 10,0; 9,2; 8,6; 8,0; 7,5; 6,7; 6,0; 5,5; 5,0; 4,6; 4,3; 4,0; 3,7; 3,3; 3,0; 2,7; 2,5; 2,3; 2,1; 2,0. Выбирается значение, ближайшее к введённому числу. При вводе "29" ближайшее значение - 30, при вводе "28" - 26,6, вводе "27", "26" - также 26,6, вводе "25", "24", "23" - 24, и так далее.

5. "N" - автоматическая установка текущего режима Num Lock (определяется по соответствующему индикатору) при включении или перезагрузке компьютера. Если Num Lock активен, через 4 сек после инициализации клавиатуры в компьютер посылается код клавиши "Num Lock", что соответствует переводу блок цифровых клавиш в режим ввода цифр (а не режим стрелок по умолчанию). Работает на чипсетной XT (клон Juko). Бесчипсетная XT во время получения кода тестирует память и не воспринимает код. Для этого случая следующая команда.
6. "M" - автоматическая установка текущего режима Num Lock с паузой передачи кода в 19 сек. Бесчипсетная XT получает код Num Lock перед загрузкой ОС, или в течение нескольких секунд после загрузки (в зависимости от режима "Турбо" и носителя с которого выполняется загрузка).
Если режим Num Lock отключен, то не имеет значения какой командой это сделано ("N' или "M")

7. "X" (XT) - перевод клавиатуры к режим передачи кодов XT. Большинство клавиатур имеют возможность работать в этом режиме. Его преимущество в том, что передаются все коды, в том числе те, о которых может не знать адаптер (особенно это касается специфических комбинаций клавиш). Недостатки - не все клавиатуры работают в таком режиме, невозможна работа через KVM.
8. "A" (AT) - возврат клавиатуры в основной режим работы, когда передаются AT-коды.
Все команды можно выполнять по очереди в режиме настроек (например задать частоту автоповтора, потом паузу перед автоповтором), кроме этих двух. Они выполняются отдельно. Т.е. нужно зайти в режим настроек, изменить режим работы клавиатуры на AT или XT, выйти из режима настроек. Потом при необходимости снова в него войти и выполнить другие настройки. В противном случае возможно искажение кодов. Исправить это можно только перезагрузкой.

9. "Esc" - отменить произведенные изменения. Если после этого выйти из режима настроек (отпустить F11), то все настройки останутся прежними. Но можно продолжать изменять настройки.
10. "R" ("Reset") - сброс всех настроек на значения по умолчанию, кроме режима передачи кодов клавиатурой (AT/XT).
Значения по умолчанию:
- коды E0 и E1 передаются,
- пауза перед автоповтором 0,5 сек, частота автоповтора - 10 символов в секунду,
- Num Lock при старте отключен.
Если таким образом сбросить адаптер невозможно (например Вы включили режим передачи клавиатурой XT кодов, а клавиатура этот режим не поддерживает), сброс можно выполнить аппаратно.
Для этого нужно закоротить соответствующие контакты разъёма PS/2 (см. фото), подсоединить к компьютеру и включить его (клавиатуру подключать не надо!).
Если при загрузке появится сообщение об ошибке клавиатуры (код 301), то адаптер сброшен. Если не появится - перемычка не обеспечивает необходимый контакт. В качестве перемычки может служить изогнутая скрепка или кусок голого провода. При аппаратном сбросе клавиатура возвращается в режим передачи AT-кодов. Все остальные значения по умолчанию - те же, что при вводе команды "R".
ИзображениеИзображение

Дисклеймер.
1. Адаптер протестирован на >5-ти клавиатурах и пяти XT + Поиск-2. Количество возможных устройств гораздо разнообразнее. Поэтому я допускаю несовместимость с некоторыми из них.
2. Применённый разъём PS/2 в силу особенностей конструкции не всегда обеспечивает должный контакт. В первую очередь это касается дешевых PS/2 клавиатур с очень тонкими штырьками в разъёме. В большинстве случаев это решаемо более плотным соединением разъёмов, с усилием. В крайнем случае, придется использовать другую клавиатуру.

Описание будет дополняться.
Приобрести можно здесь https://phantom.sannata.org/viewtopic.php?f=14&t=37686
Последний раз редактировалось Rio444 26.10.2020,13:54, всего редактировалось 7 раз.
Электронка: Изображение копия Изображение

-MiS-
Advanced Member
Сообщения: 923
Зарегистрирован: 09.03.2016,15:39
Откуда: Москва

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение -MiS- » 19.09.2020,02:13

Красиво получилось! С KVM переключателями тестировалось? С ними бывают непонятные глюки при работе с конверторами. Например при нажатии стрелочек появлялись цифры аналогичные стрелкам в NUMPADе.

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение Rio444 » 19.09.2020,02:32

-MiS- писал(а): 19.09.2020,02:13 Например при нажатии стрелочек появлялись цифры аналогичные стрелкам в NUMPADе.
Сталкивался с таким. Помогает Shift+Num Lock или Ctrl+Num Lock, в зависимости от системы. Т.е. это какой-то глюк обработчика прерывания в БИОС. Конвертор коды передаёт одни и те же.
Интерпретируются они по-разному.
KVM к сожалению нет. Но не вижу причин, почему может не работать.
Электронка: Изображение копия Изображение

i8088
Advanced Member
Сообщения: 4383
Зарегистрирован: 30.01.2015,17:06
Откуда: г. Баку, Азербайджан

Конкурсы

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение i8088 » 19.09.2020,07:54

Rio444, поздравляю с успешным завершением проекта!
И очень хорошо, что на AVR сделали!

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение Rio444 » 19.09.2020,10:11

i8088, спасибо! :)
Электронка: Изображение копия Изображение

Forza3dfx
Advanced Member
Сообщения: 1021
Зарегистрирован: 01.03.2015,08:51

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение Forza3dfx » 22.09.2020,10:35

Rio444, можно еще пару уточнений по режиму XT ?
Я так понимаю, что перевод адаптера в режим XT аналогичен переключателю AT/XT на некоторых cтарых DIN5 AT-клавиатурах ?
Какие критерии возможности работы PS/2 клавиатуры в режиме XT - дата производства (т.е. более ранние PS/2), производитель
(который использует определенную начинку), еще что-то?

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение Rio444 » 22.09.2020,10:52

Forza3dfx писал(а): 22.09.2020,10:35 Я так понимаю, что перевод адаптера в режим XT аналогичен переключателю AT/XT на некоторых cтарых DIN5 AT-клавиатурах ?
Да, можно так сказать. Клавиатура сразу передаёт XT-коды, их не нужно транслировать из AT-кодов.
Forza3dfx писал(а): 22.09.2020,10:35 Какие критерии возможности работы PS/2 клавиатуры в режиме XT - дата производства (т.е. более ранние PS/2), производитель
(который использует определенную начинку), еще что-то?
Думаю что подавляющее количество клавиатур должно поддерживать этот режим.
Я проверял с Mitsumi примерно 2000 года выпуска, дешевой Sven, купленной ~2010 году и дешевой ноунейм (какой-то Element) купленной года два назад.
Вероятно прошивка в клавиатурах какая-то стандартная и не менялась десятилетиями.
Возможно проблемы могут возникнуть с каким-то нестандартными клавиатурами: беспроводными, игровыми, неполноразмерными (имеющими только часть клавиш) и т.п.
Но это не точно. :)
Электронка: Изображение копия Изображение

La Forge
Advanced Member
Сообщения: 5584
Зарегистрирован: 16.11.2012,17:29
Откуда: Рязань

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение La Forge » 22.09.2020,11:35

Ну чё, молодец :thumbup: Крутую и полезную девайсину сделал.

Аватара пользователя
Alex_Vac
Advanced Member
Сообщения: 5149
Зарегистрирован: 25.03.2009,07:04
Откуда: Ростов-на-Дону

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение Alex_Vac » 22.09.2020,11:50

Вот бы на самом штекере был бы микро-переключатель XT-AT. Но наверное там места не хватит.

Аватара пользователя
Rio444
Почётный пользователь
Сообщения: 26861
Зарегистрирован: 14.09.2014,19:11
Откуда: Ростов-на-Дону

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение Rio444 » 22.09.2020,12:36

Alex_Vac писал(а): 22.09.2020,11:50 Вот бы на самом штекере был бы микро-переключатель XT-AT. Но наверное там места не хватит.
Лёш, я может неправильно выразился. После переходника всегда выходят коды XT. Т.е. со стороны компьютера переходник всегда видится как XT-клавиатура.
Клавиатура, в зависимости от выбранного режима (AT/XT) передаёт в переходник или коды AT, или коды XT.
Т.е. этот адаптер нельзя использовать как пассивный переходник из PS/2 в AT.
Более того, в нём используется обычный стандартный (аудио) штеккер DIN 5pin. Именно такие использовались в XT. У AT клавиатуры разъём немного меньше (меньше диаметр металлического кольца). И этот переходник в большинство разъёмов АТ-клавиатуры просто не влезет. Либо с большим усилием.

P.S. Измерил диаметры. Получилось 13,5 и 13,2 мм. На фото видно.
1.jpg
Электронка: Изображение копия Изображение

Forza3dfx
Advanced Member
Сообщения: 1021
Зарегистрирован: 01.03.2015,08:51

Вклад в сообщество

Адаптер PS/2 клавиатуры для PC XT (8088 AT2XT)

Сообщение Forza3dfx » 22.09.2020,14:11

Rio444 писал(а): 22.09.2020,12:36 После переходника всегда выходят коды XT. Т.е. со стороны компьютера переходник всегда видится как XT-клавиатура.
Клавиатура, в зависимости от выбранного режима (AT/XT) передаёт в переходник или коды AT, или коды XT.
Т.е. этот адаптер нельзя использовать как пассивный переходник из PS/2 в AT.
Роман, это то понятно.
Алексей скорее всего имел ввиду "быстрое" переключение, ну чтобы в режим настройки не заходить.
Типа "щелк и все" :) Было бы удобнее, особенно если клавиатура не поддерживает режим XT,
то "щелк обратно" и не надо сброс скобкой делать...
Но это так, к слову, на заметку для следующей ревизии :)

Ответить