ivagor, тест пока не запускал. Т.к. уверен, что работать не будет
Чем больше разбираюсь, тем больше запутываюсь...
Прихожу к выводу, что описанная в статье "ХТ-клава", моя "ЕС1840" и "IBM PC/XT" - это три совсем разные клавиатуры...
все они между собой имеют отличия. Некоторые не критичны и не помешают работе, некоторое отличия принципиальны.
Например:
1. Алгоритм из статьи читает/ждет 11 синхро-Бит. Первые 2 пропускает (как Старт-биты) 8 - данные, 1 - Стоп-Бит.
НО у ЕС и РС/ХТ в пакете только 10 синхро-Бит. 1 - Старт, 8 данные и 1 Стоп.
2. Алгоритм из статьи и ЕС считают, что чтение данных происходит по переднему фронту строба, а в описании РС/ХТ ясно видно, что по заднему фронту (спаду)...
3. у ЕС стоп-бит = "1", а из описания РС/ХТ следует, что стоп-бит должен быть "0".
4. В ЕС-клаве передача данных о нажатии/отпускании клавиш начинается с выставления "1" на шине данных, причём за 66мкс до первого синхроимпульса. А в описании РС/ХТ явно всё начинается с перевода синхры в "0".
5. эксперимент показал, что если у ЕС-клавы "зажать" в "0" шину данных, то она совсем не будет пытаться что-то передать или сообщать о том, что ей есть, что сказать, она не будет "дёргать" шиной синхры. А ведь именно этого ждёт от клавиатуры алгоритм из статьи.
Приложу скриншот логгера нажатия клавиши ЕС-клавы и найденное в нете (на этом форуме в архиве) описание протокола РС/ХТ-клавы.
Нажмите на изображение для увеличения. 

Название:	key.jpg 
Просмотров:	339 
Размер:	10.1 Кб 
ID:	68466
Нажмите на изображение для увеличения. 

Название:	kbd_signaling_pcxt.jpg 
Просмотров:	330 
Размер:	20.9 Кб 
ID:	68467