Как переделать АТ(или PS/2) клавиатуру в XT для АТМ Турбо 2(v6.40)
Вид для печати
Как переделать АТ(или PS/2) клавиатуру в XT для АТМ Турбо 2(v6.40)
Хм, если не ошибаюсь, то в клавиатуры до не давнего времени ставили что-то 8042 подобное. Так вот интересно под этот контроллер XT прошивка клавиатыры можно найти, или проще самому написать. То что придется перепаивать контроллер понятно, он одноразовый, зато можно еще переключатель поставить, как на древних клавах XT<->AT.
Для версии 6.xx это невозможно. Сам в свое время нажегся.
Самый реальный вариант - поискать по загашникам старые клавиатуры (примерно 89-92 года) с переключателем XT/AT. Иногда переключателя нет, но есть перемычка на плате. Найти такую клавиатуру не так сложно, как кажется на первый взгляд. Но вообще, рекомендую использовать стандартную спектрумовскую клавиатуру или внешний контроллер AT клавы. Обработка XT клавиатуры в ATM-Turbo2 v6.xx осуществляется процессором через NMI, и в некоторых программах клавиатура работать не будет, другие программы будут притормаживать, а часть вообще не запустится.
актуальная тема. ничего не понятно. где взять внешний контроллер at клавы, чтобы воткнуть его в xt разъём 2 атмки?
гдето я видел как предлогают pic контроллер сунуть в клаву, и кодировать в xt. рабочих схем не предлагают )
можно переделать саму атмку, но без программатора, это капец как нереально.
https://github.com/kesrut/pcxtkbd/
вот ардуино , рабочая схема.
https://www.youtube.com/watch?v=HJOUtIbPJsg
http://www.kbdbabel.org/
а вот барыги
https://www.phantom.sannata.org/view...a4530&start=11
трёп и ссылки. фигня.
http://tech.mattmillman.com/building...ototype-board/
а вот и схема и прошивка
Традиционно она здесь, но аттачи не скачать :-(
Это когда:
Но, сути это да, не меняет. Хотя, это урок форумодельцам, что не надо ссылки на аттачи закрывать логином, надо сеять доброе, вечное, хотя бы занедолго до смерти форума.Цитата:
прошивка - http://tech.mattmillman.com/wp-conte...TATKEY_675.HEX (будет работать и с 12F629)
схема - http://www.waste.org/~winkles/AT2XTKBD-sch.pdf
а от исходников я бы тоже не отказался ;)
Я делал вот такой контроллер
https://github.com/cr1901/AT2XT
Работает идеально.
Вот про него тема на VCFED
http://www.vcfed.org/forum/showthrea...ighlight=AT2XT
- - - Добавлено - - -
А вообще уже не раз обсуждалось это тут
Поиск рулит
Вот:
https://zx-pk.ru/threads/26636-poisk...l=1#post874588
Я не компилировал. Взял готовые HEX файлы.
Вроде ничего не пропустил: https://www.dropbox.com/s/5geyt7cv6v...ATKEY.zip?dl=0
К сожалению, лично я таких не знаю, так как практически не работал с АТМками версий 6.хх (в руках держал, запускал, но очень давно, в 00х, и очень короткое время).
Но если будут какие-то подвижки изучения работы, то был бы благодарен за подробную информацию о работе с целью как минимум, повторения в эмуляторе.
Я с 6.хх так и не пересекся (в 00х собирал, запускал только атм-1(4.50) и -хт), так что изучение работы сейчас возможно чисто теоретически, по схемам..
Ээээ.. Железка "с подобным контроллером" не атм), это профик v6, который не увидел серийного производства и которых (уже только в начале 10х) было собрано.. пальцев одной руки пожалуй хватит)
Схема контроллера близка к атм (собсно с чего бы ей кардинально отличаться, если принцип работы один: скан-код->mni), но со своими забавными "фенечками" (например: если в программе разрешены 50Гц прерывания - nmi от клавиш влезет ровно после /inta и перед обработчиком, что по идее должно "в среднем" уменьшить влияние nmi на стек - но тому же exolon-у это, ессно, не помогает, прям на глазах экран начинает корежить после нескольких нажатий, пару-тройку экранов удается пройти перед окончательным падением)
Проблему переделки АТ-ХТ решать, кстати, не стал (всё равно с нуля надо было писать поддержку - так зачем хт вообще)), просто добавил в схему пару триггеров на клавиатурный клок/данные, дабы код от ат-клавиш приходил в сдвиговый регистр как положено.
Теоретически излечимо, полной подменой карты памяти на время nmi
(а в демках клавиши можно и не трогать))
Тут возникает проблема детекта момента, когда Z80 прореагировал на NMI и начал выполнять обработчик. Проблема не так проста, как кажется.
Если подменять просто по низкому уровню сигнала NMI - то текущая исполняющаяся команда будет писать/читать не ту память.
Выходит надо дожидаться окончания этой команды, и только потом подменять. Но как это понять?
(стёр)
надо однозначно выделить подтверждение nmi (выглядит как чтение из памяти), т.е. по идее достаточно будет простробировать nmi например чтением порта (любого) - юзер со своими нажатиями вряд ли заметит какую-либо задержку -тогда, после появления nmi, первая же запись в память после чтения из памяти должна будет отправляться уже в новую раскладку памяти (если не путаю, нигде в командах после iord не наступает memrd).
Иными словами - когда нужно сделать NMI:
1. ждём IORQ=0 (при M1=1, чтобы не спутать чтение порта с подтверждением INT)
2. Выставляем NMI=0 на 1 такт
3. Ждём MREQ=0 - как дождались - подменяем память на запись
В целом должно сработать, кажется.
Не подойдет для приложений, где нет чтения из портов, но в случае с клавиатурой это не проблема
3. Mreq+Rd
(1. M1 можно и игнорить, не помешает)
В принципе да, не помешает.
(как-то все проще было сделано у меня в профике, полез в бессменный um0080)
Действительно. Цикл подтверждения nmi - он ещё и м1)
сигналом м1 "ровняем" приход nmi и им же (следующим) переключаем раскладку (хотя не, можем сразу после префикса попасть. ну да ладно, все равно при наличии м1 будет проще)
вот с обратным переходом нужен отдельный механизм
Очень простой и относительно недорогой способ переделки любой АТ клавиатуры в XT https://phantom.sannata.org/viewtopi...785272#p785272
Дополнительный чип устанавливается прямо в клавиатуру, между шнуром и платой.
https://pic.maxiol.com/images2/17197...3444.at2xt.jpg