Переделка АТ интерфейса клавиатуры в PS/2 на старых платах (Уровня 386-х, 486-х, чтобы можно было подключить PS/2 мышь.)

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

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

Переделка АТ интерфейса клавиатуры в PS/2 на старых платах

Сообщение Rio444 » 15.10.2017,15:40

Уровня 386-х, 486-х, чтобы можно было подключить PS/2 мышь.

Краткое изложение последующих 8-ми страниц, включая предысторию в вольном толковании

Начиная с 286-х IBM PC в составе материнской платы появился "контроллер клавиатуры" (сокращенно KBC - KeyBoard Controller). Это большая 40-ножечная микросхема, похожая на Bios, только побольше.
Первоначально в качестве KBC использовался контроллер общего назначения Intel 8042 со специальной прошивкой.
Позднее, когда KBC стали применяться массово, Intel стала производить 8042 уже с прошитой программой. Появилось множество уже прошитых клонов. Самые известные - Amikey, LT38C41, W83C42, Jetkey. Более подробный список на rom.by
Основной функцией KBC является преобразование последовательного синхронного интерфейса АТ клавиатуры в параллельный.
Т.е. информация из клавиатуры приходит побитно по двум линиям - Data (данные) и Clock (тактирование), а процессору "предстаёт" побайтно. Причём уже в виде ASCII кодов, в порте 60h.
Помимо этого, KBC "нагружен" и другими функциями. Самые важные из которых - программный Reset и управление Gate A20.
Также к KBC подключены разные джамперы, которыми задаётся работа компьютера на этапе загрузки BIOS - "Color/Mono", "Turbo", "Keylock", "Объём RAM".

В компьютерах IBM PS/2 к тому же самому KBC подключили "PS/2 мышь". Это потребовало смены прошивки и схемы подключения.
Физически протокол PS/2 никак не отличается от АТ. Это тот же самый синхронный последовательный интерфейс с двумя линиями - Data и Clock (плюс питание +5В и "земля"). Информация, передаваемая от мыши, конечно отличается.
Ниже схемы включения контроллера клавиатуры для АТ и PS/2 режима:
Изображение Изображение
Что характерно, остальной части компьютера абсолютно всё равно, в каком режиме работает KBC. Взаимодействие с клавиатурой не меняется никак. Это всё тот же порт 60h для данных и порт 64h для управления и получения информации о состоянии KBC.
Естественно, PS/2 мышь будет работать только в режиме PS/2 KBC.
Контроллеры клавиатуры с поддержкой PS/2 режима (это Amikey-2, Holtek HT6542B, VIA VT82C42N и др.) обратно совместимы с АТ контроллерами. И сами определяют режим работы (АТ или PS/2) по схеме включения.

Идея переделки состоит в том, чтобы изменить схему включения KBC с АТ на PS/2. При необходимости заменить сам контроллер, если установленный не поддерживает режим PS/2.

Схема переделки:
Синим цветом - то, что исходно уже есть на материнской плате. X1.1 и X1.2 - панелька под контроллер клавиатуры. Старый контроллер вытаскиваем. Вставляем новый с обвязкой. Сажаем на 36-ю ногу IRQ12 перемычкой на материнской плате.
Черным цветом - то, что добавляем.
Вместо инверторов 7406 используются обычные smd транзисторы типа 3904.
Изображение

В железе, на текущий момент:
Изображение
Изображение
Как видно, помимо установки нового KBC и обвязки нужно соединить проводом ноги 36 KBC и D5 разъёма ISA. Это сигнал аппаратного прерывания Irq12, которым KBC сигнализирует процессору о приходе данных от мыши.

Помимо аппаратной переделки необходима программная поддержка со стороны BIOS.
ЧСХ поддержка PS/2 мыши существует во всех BIOS с древних времён (появления IBM PS/2), но отключена. :(
Для Award BIOS существует отличная программа Modbin, которая понимает даже старые версии Bios.
На 486-й с Award Bios модификация успешно проделана, поддержка PS/2 мыши в Bios включена, PS/2 мышь работает.)))

Для редактирования старых AMI Bios существует туева куча версий программы AmiBCP. Причем под каждую версию биоса своя версия AmiBCP и никто эти версии в глаза не видел. Список версий.

Поэтому возник вопрос, как добавить программную поддержку PS/2 мыши не трогая биос.
Мною написан драйвер PS2SUPP rev.1.0.2, который эту поддержку добавляет.
26.01.18 добавил версию 1.0.2c, которая проверяет 3-й бит в первом байте пакета от мыши (он всегда должен быть =1), и если он не равен 1, сбрасывает мышь. Он немного больше по размерам, чем предыдущий. В памяти занимает на 16 байт больше.
Достаточно запустить этот драйвер перед запуском драйвера мыши.
Работает в DOS и версиях Windows - надстройках над DOS (Win 3xx, Win9x).
Удобнее всего поставить запуск драйвера поддержки PS/2 мыши в autoexec.bat.

К сожалению, не работает в Win NT и других осях, которые не базируются на DOS.

Пока всё.
Сейчас занимаюсь улучшением аппаратной части.

;============================================================
; Начало исходного сообщения
;============================================================
Интерфейс PS/2 нужен, чтобы можно было подключать оптическую мышь.

Коллеги, есть какие-то соображения по этому поводу?
Можно ли это сделать?
Имеет ли смысл?
Как лучше делать?
Может кто-то уже делал такое?
Вообще, стоит ли этим заниматься?
Последний раз редактировалось Rio444 26.04.2019,13:07, всего редактировалось 2 раза.
Электронка: Изображение копия Изображение

пользователь
Newbie
Сообщения: 53
Зарегистрирован: 04.10.2017,23:16
Откуда: Йошкар-Ола

Сообщение пользователь » 15.10.2017,16:08

Поисковик выдал: http://www.phantom.sannata.ru/forum/ind ... nt&t=11271
После беглого ознакомления - либо конвертер протокола, либо ISA плата.
тема моих продаж http://www.phantom.sannata.ru/forum/index.php?t=27513

Гость

Сообщение Гость » 15.10.2017,16:14

Видел на картинках плату в разъём клавиатурного BIOS, в который вставлялся собственно клавный BIOS и была гребенка для PS2 мыши

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

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

Сообщение Rio444 » 15.10.2017,16:18

пользователь писал(а):
Да, видел эту тему. ISA плата - только для Bus Mouse. https://en.wikipedia.org/wiki/Bus_mouse
Её сейчас сложнее найти, чем шариковую COM.
Конвертер протокола PS/2 в COM даже в отдельной теме обсуждался.
Работать, работает, но всё равно часть информации теряется. Это как кинопленку переписывать на видеокассету. Разные форматы, разные носители, частота кадров, цветовой охват.
Хочется, так сказать, нативно.
IdeaFix писал(а):Видел на картинках плату в разъём клавиатурного BIOS, в который вставлялся собственно клавный BIOS и была гребенка для PS2 мыши
Где?
Электронка: Изображение копия Изображение

Гость

Сообщение Гость » 15.10.2017,16:32

Rio444
Вот сейчас гуглю, не могу нагуглить.... т.е. это была платка небольшая, котоаря втыкалась в ДИП40 вместо клавного биоса, а на ней самой был клавный биос (тоже в дип40) и что-то еще из логики, ну и 5пин гребенка под PS/2.

Гость

Сообщение Гость » 15.10.2017,16:34

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

http://www.vogons.org/viewtopic.php?f=4 ... 2&start=60

Но я по диагонали читал, может это и совсем не то...


Anonymous1
Advanced Member
Сообщения: 2727
Зарегистрирован: 22.11.2011,09:41
Откуда: Москва(Россия)

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

Сообщение Anonymous1 » 15.10.2017,16:39

IdeaFix писал(а):и что-то еще из логики
7405 нужна была, либо 7407, в зависимости от прошивки.

Гость

Сообщение Гость » 15.10.2017,16:41

Если кто-то освоит выпуск таких штук даже на макетке - стал бы постоянным покупателем :)

Но я так понял там есть какие-то блокирующие баги, то ли на isa надо кидать хвост какой-то, то ли еще что-то, но повторюсь, читал по диагонали.

Anonymous1
Advanced Member
Сообщения: 2727
Зарегистрирован: 22.11.2011,09:41
Откуда: Москва(Россия)

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

Сообщение Anonymous1 » 15.10.2017,16:43

Прерывание от ps/2-мышки на irq12 протаскивать надо. В 386 только клавиатурное разведено до 8042.

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

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

Сообщение Rio444 » 15.10.2017,17:05

IdeaFix, спасибо! То, что нужно.
Бегло просмотрел. Как понял, главная загвоздка - поддержка биосом. Если поддерживает, то всё ОК. Если нет - нужно писать свой обработчик прерывания от мыши. Насколько понял, никто его ещё не написал.
Anonymous писал(а):Прерывание от ps/2-мышки на irq12 протаскивать надо.
Это не сложно. IRQ12 сидит на ноге D5 разъема ISA16.
IdeaFix писал(а):Если кто-то освоит выпуск таких штук даже на макетке - стал бы постоянным покупателем
В варианте на картинке получается довольно толстый "бутерброд". На моей материнке, для которой всё затеял, прямо над контроллером 8042 сидят VLB карты. Зазор миллиметров 5, не больше. Кстати, сейчас посмотрел другую плату, там контроллер под ISA платами. Их можно в принципе не ставить.
Не на всех материнках контроллер стоит в панельке. Его придется выпаивать и запаивать панельку.
Сколько штук Вам было бы интересно и порядок цены?
Anonymous писал(а):IdeaFix написал:
и что-то еще из логики
7405 нужна была, либо 7407, в зависимости от прошивки.
Истина где-то рядом(с) 7406.
Электронка: Изображение копия Изображение

Гость

Сообщение Гость » 15.10.2017,17:27

Rio444
Зависит от цены и совместимости.... мне было бы интересно полдюжины если оно было бы совместимо с моими платами и не сильно бы урезало возможности системы (в плане ISA слотов и пр). А насчет ISA и того что DIP40 будет мешать платам, у меня есть такие платы, которым DIP40 штатно стоящий на плате мешает :( В основном это мультикарты, у которых ком дб25 и гейм порт на плате - широко...

На последней странице указанной мной темы есть картинка сборки контроллера на панельке. Т.е. если панельки ранее не было - высотка будет так или иначе штатной (панелька+микросхема)

Ответить