Просмотр полной версии : "Океан-240": подключение клавиатуры
В "Океане-240", согласно современным представлениям, поддержаны только интеллектуальные клавиатуры того времени, то есть выдававшие параллельный 7-битный код нажатой клавиши, сопровождая его стробом. Вариантов тут немного.
Первый - собрать (уже не единственный известный на сегодняшний день) контроллер такой клавиатуры на рассыпухе (см. вложение). Он несколько громоздок, зато рассчитан на привычные клавиатурные матрицы типа 11x8. Рекомендован к сборке неленивым людям или конченным любителям старины глубокой.
Второй вариант - собрать лаконичный контроллер из 4 микросхем малой степени интеграции и немножечко пропатчить Монитор для перекодировки сканкодов в ASCII для одиночных нажатий. Про комбинации клавиш, похоже, в этом варианте лучше забыть, но можно будет насладиться директивами Монитора.
http://sensi.org/~tnt23/pics/ps2ocean
Третий вариант - взять имеющиеся в изобилии PS/2 и USB самодельные контроллеры для самодельных ПК и перекроить их на выдачу параллельного кода со стробом. Вариация этого варианта - взять ардуино или рпи по вкусу, и соорудить собственный закат вручную. Из бонусов - нереальная гибкость, возможность делать сброс ПК по комбинации Alt-Ctrl-Del, приятное щекотание ЧСВ.
Четвертый вариант - разновидность первого, авторства rw6hrm. Он (вариант) с меньшим количеством микросхем, но с большим количеством транзисторов, на радость любителям сладкой парочки КТ315/КТ361: https://qsl.net/rw6hrm/html/ascii_kbrd2.htm
UPD свалка ссылок да будет тут.
http://sbc.rictor.org/pckbavr.html
Поскольку принадлежу к
конченным любителям старины глубокой
и это обеспечивает мне
приятное щекотание ЧСВ ;),
то обошёлся простой ПЗУ с кучкой транзисторов, https://qsl.net/rw6hrm/html/ascii_kbrd2.htm. Гибкость, конечно, чуть более чем реальная, решается перепрошивкой ПЗУ по самым извращённым желаниям.
Тем не менее лентяи требуют использования привычных клавиатур - приходится делать переходник на ПИКе. Но это - очень неспешно, ибо мне оно пока не нужно...
UPD:
1. В качестве клавы можно использовать таковую из комплекта "Ириши". Скорее всего потребуется схемная корректировка.
2. Если патчить Монитор, то можно использовать в качестве основы https://zx-pk.ru/threads/26406-podklyuchenie-at-klaviatury-k-8-bitkam.html , но нужно будет перетранслировать код с 6502 для 8080
perestoronin
07.11.2018, 17:12
взять имеющиеся в изобилии PS/2 и USB самодельные контроллеры для самодельных ПК
Есть в изобилии маленькие чистые платки от проекта для Специалиста МХ2 для подключения клавиатуры PS/2 вместо матричной на кнопках.
Причем под два вида м.к. в smd и dip на выбор.
Кому нужны на опыты для Океанов пишите, халява, попробую отправить обычным письмом, чтобы дешево получилось а Вам бесплатно, но надежнее при встрече в Москве.
Есть в изобилии маленькие чистые платки от проекта для Специалиста МХ2 для подключения клавиатуры PS/2 вместо матричной на кнопках.
Причем под два вида м.к. в smd и dip на выбор.
Кому нужны на опыты для Океанов пишите, халява, попробую отправить обычным письмом, чтобы дешево получилось а Вам бесплатно, но надежнее при встрече в Москве.
А можно поподробнее? со ссылками или картинками.
PS нашел вот это - https://zx-pk.ru/threads/20586-ps-2-adapter-klaviatury-dlya-spetsialista/page12.html - со своим лайком даже. Склерозъ неотвратимъ.
perestoronin
07.11.2018, 17:28
нашел вот это
И еще в догонку (https://zx-pk.ru/threads/26473-spetsialist-m-i-ps-2-klaviatera.html)
perestoronin, этот контроллер хорош как полуфабрикат, но придется по нему выпиливать лобзиком художественно. Потому что см. пост №1 - в "Океане" не поддерживаются матричные клавиатуры.
- - - Добавлено - - -
1. В качестве клавы можно использовать таковую из комплекта "Ириши". Скорее всего потребуется схемная корректировка.
Я, конечно, знатный собиратель хлама, но клавиатур из комплекта "Ириши" у меня дома не завалялось, насколько я помню.
2. Если патчить Монитор, то можно использовать в качестве основы https://zx-pk.ru/threads/26406-podklyuchenie-at-klaviatury-k-8-bitkam.html , но нужно будет перетранслировать код с 6502 для 8080
Да ну, чего там патчить. Ближе к концу процедуры CI: добавить переход в конец свободной области, где разместить тупую таблицу перекодировки в 128 байт с таким же умственно продвинутым кодом, и возврат назад.
perestoronin
07.11.2018, 17:40
в "Океане" не поддерживаются матричные клавиатуры.
Не уверен что не поддерживаются.
Впрочем по любому пилить придется не только лобзиком но и кодом, чтобы выдать на ножках м.к не только 7 битный код но и строб.
Не уверен что не поддерживаются.
Впрочем по любому пилить придется не только лобзиком но и кодом, чтобы выдать на ножках м.к не только 7 битный код но и строб.
Я немножечко поискал по ПЗУ Монитора обращения к портам 40H-42H, их там исчезающе мало, и ничто не намекает на матрицу:
;П\П ВВОДА С КЛАВИАТУРЫ
CI: ;E2A6
CALL CSTS
ORA A
JZ CI
IN 40H
ANI 7FH
PUSH PSW
MVI A,80H
OUT 42H
XRA A
OUT 42H
POP PSW
RET
Третий вариант - взять имеющиеся в изобилии PS/2 и USB самодельные контроллеры для самодельных ПК и перекроить их на выдачу параллельного кода со стробом. Вариация этого варианта - взять ардуино или рпи по вкусу, и соорудить собственный закат вручную. Из бонусов - нереальная гибкость, возможность делать сброс ПК по комбинации Alt-Ctrl-Del, приятное щекотание ЧСВ.
С таким же успехом пропатчить монитор и подключить 40-ногий контроллер клавы со старой ATшки. Зато профит сразу в скан кодах - все по взрослому.
С таким же успехом пропатчить монитор и подключить 40-ногий контроллер клавы со старой ATшки. Зато профит сразу в скан кодах - все по взрослому.
Условия задачи (неясно выраженные) не позволяют что-либо резать или припаивать к плате. Как в этом случае интерфейситься с 40-ногим контроллером, через все те же 7 параллельных бит и строб, я не понимаю.
Условия задачи (неясно выраженные) не позволяют что-либо резать или припаивать к плате. Как в этом случае интерфейситься с 40-ногим контроллером, через все те же 7 параллельных бит и строб, я не понимаю.
Тогда вопрос снят. Хотя можно более изящнее поступить. Взять дешевенькую или убитую PS/2 или USB клаву, выкинуть плату - а вместо нее поставить какую нибудь мегу. Профит в том что сразу делается как нужно без всяких переходников PS/2 то чего то там. Минус этой идеи в том, что плата (если она культурно выглядит) будет заточена под конкретную клаву (вернее корпус с кнопками)
Тогда вопрос снят. Хотя можно более изящнее поступить. Взять дешевенькую или убитую PS/2 или USB клаву, выкинуть плату - а вместо нее поставить какую нибудь мегу. Профит в том что сразу делается как нужно без всяких переходников PS/2 то чего то там. Минус этой идеи в том, что плата (если она культурно выглядит) будет заточена под конкретную клаву (вернее корпус с кнопками)
Такой вариант тоже неплох. В старых клавиатурах контроллер занимает маленькую плату и переделать ее не составит труда. Но вот шнур с пятью проводками от клавы уже не заюзать (7 бит + строб, земля и питание и еще сброс со стороны компа). Промежуточное решение - контроллер PS2 в 7+stb посадить внутрь компа.
Но вот шнур с пятью проводками от клавы уже не заюзать (7 бит + строб, земля и питание и еще сброс со стороны компа).
Стандартный шнур да, не получится использовать, но тут можно и от VGA кабеля взять шнур или шнур от RS-232 кабеля.
https://www.pjrc.com/teensy/td_libs_PS2Keyboard.html (библиотека PS/2 Keyboard для Arduino здесь https://github.com/PaulStoffregen/PS2Keyboard)
Подключил PS/2 клавиатуру через Arduino с простым скетчем. "Турбо-Монитор" странно воспринимает нажатия клавиш, например, пробел ему видится семеркой, а практически все остальные клавиши воспринимаются как листание назад.
Какое-то странное у этого Монитора представление о клавиатуре. В частности, строб сброса он выдает не на PC7, а на PC4:
sub_e103h: ld a,093h ;e103 3e 93
out (043h),a ;e105 d3 43
ld a,010h ;e107 3e 10
out (042h),a ;e109 d3 42
xor a ;e10b af
out (042h),a ;e10c d3 42
xor a ;e10e af
ld (0bffah),a ;e10f 32 fa bf
ret ;e112 c9
Возможно, его тяжело патчили когда-то.
Да и сам ввод с клавиатуры презанятный:
l
e131h:
push bc ;e131 c5
ld b,a ;e132 47
in a,(042h) ;e133 db 42
and 00fh ;e135 e6 0f
ld c,a ;e137 4f
in a,(041h) ;e138 db 41 ; чтение из порта B. Клавиши-модификаторы?
rra ;e13a 1f
and 030h ;e13b e6 30
or c ;e13d b1
ld c,a ;e13e 4f
ld a,010h ;e13f 3e 10
out (042h),a ;e141 d3 42
xor a ;e143 af
out (042h),a ;e144 d3 42
ld a,b ;e146 78
ld b,0ffh ;e147 06 ff
le149h:
inc b ;e149 04
rra ;e14a 1f
jp nc,le149h ;e14b d2 49 e1
ld a,c ;e14e 79
rla ;e14f 17
rla ;e150 17
rla ;e151 17
и так далее
Получается, у нас есть 2 разных монитора. Один с надписью "240/7 MONITOR", назовем его классическим, рассчитанный на клавиатуру с собственным контроллером. И второй с надписью "HARDWARE MONITOR" и встроенным редактором памяти от AZMASTER, назовем его "Turbo Monitor", определенно использующий клавиатуру матричного типа.
Есть смысл покопаться в этом мониторе на предмет других интересных отличий, как то: работа с магнитофоном в скоростном режиме, какие-нибудь иные полезные штуки.
хм... гонять кортекс ради простой перекодировки (бррр, аж мурашки побежали).., придётся всё же плотнее взяться за свой проект на ПИКе (если смогу врубиться в бгмерзкий сишный код)...
А там кортекс разве? дохлая ATmega328, и безумно сложный код:
#include <PS2Keyboard.h>
const int DataPin = 4;
const int IRQpin = 3;
const byte ACKpin = 2;
const int nSTB = 5;
PS2Keyboard keyboard;
void setup() {
// PD5 is low active out strobe
pinMode (nSTB, OUTPUT);
digitalWrite (nSTB, HIGH);
// PD6, PD7 map to Ok240's PA6 and PA7
pinMode (6, OUTPUT);
pinMode (7, OUTPUT);
// PB0-PB5 map to Ok240's PA0-PA5
pinMode (8, OUTPUT);
pinMode (9, OUTPUT);
pinMode (10, OUTPUT);
pinMode (11, OUTPUT);
pinMode (12, OUTPUT);
pinMode (13, OUTPUT);
// PD2 ACK strobe from OK240's PC7
pinMode(ACKpin, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(ACKpin), ClearSTB, RISING);
keyboard.begin (DataPin, IRQpin);
}
void loop() {
if (keyboard.available()) {
// read the next key
char c = keyboard.read();
if (c & 0x01) {digitalWrite (8, HIGH);} else {digitalWrite (8, LOW);}
if (c & 0x02) {digitalWrite (9, HIGH);} else {digitalWrite (9, LOW);}
if (c & 0x04) {digitalWrite (10, HIGH);} else {digitalWrite (10, LOW);}
if (c & 0x08) {digitalWrite (11, HIGH);} else {digitalWrite (11, LOW);}
if (c & 0x10) {digitalWrite (12, HIGH);} else {digitalWrite (12, LOW);}
if (c & 0x20) {digitalWrite (13, HIGH);} else {digitalWrite (13, LOW);}
if (c & 0x40) {digitalWrite (6, HIGH);} else {digitalWrite (6, LOW);}
if (c & 0x80) {digitalWrite (7, HIGH);} else {digitalWrite (7, LOW);} // Probably not needed for OK240
// Strobe low
digitalWrite (nSTB, LOW);
}
}
void ClearSTB () {
// Strobe high
digitalWrite (nSTB, HIGH);
}
В общем, взял монитор 240-7, с ним клавиатура зажила долго и счастливо.
- - - Добавлено - - -
хм... гонять кортекс ради простой перекодировки (бррр, аж мурашки побежали).., придётся всё же плотнее взяться за свой проект на ПИКе (если смогу врубиться в бгмерзкий сишный код)...
Там не совсем уж простая перекодировка. Клавы же генерят скан-коды на нажатие и отпускание, и они бывают до четырех байт длиной. Опять же нужно сделать, чтобы на составные нажатия типа Ctrl+C генерился однобайтовый код 0x03. И еще внешний сброс пристроить по Alt+Ctrl+Del, и проч.
(И если выбирать между PIC и AVR, так по мне лучше AVR)
дохлая ATmega328
...ну да, конечно, дохлая... https://zx-pk.ru/threads/26871-8-bitnyj-displejnyj-modul.html
Попробую на Атмега8. А перекодировка реально простая, гляньте код из http://knzl.de/ps2-keyboard-for-apple-ii/ . Там не нужно всё принимать во внимание. И, кстати, сброс там тоже есть ;)
...ну да, конечно, дохлая... https://zx-pk.ru/threads/26871-8-bit...nyj-modul.html
Да это понятно, что мега могуча: и композитное видео потянет, и MFM поток разобрать сможет. Я сваял на 328, потому что а) есть готовая хорошая библиотека PS2Keyboard для ардуины, б) смог отобрать Uno R3 у ребенка, и в) Nano 3 в Питере можно купить за 210р.
- - - Добавлено - - -
Переходник для PS/2 клавиатуры под Arduino Uno R3:
66887
Есть в изобилии маленькие чистые платки от проекта для Специалиста МХ2 для подключения клавиатуры PS/2 вместо матричной на кнопках.
Посмотрел, этот контроллер тоже можно перезаточить под "параллельный+строб".
Видео работы клавиатуры https://www.youtube.com/watch?v=gu6Bp3OBnOE
Контроллер работает хорошо, но не мапит пока Ctrl+ комбинаций. Дело поправимое, PS2Keyboard доступен в исходниках https://github.com/PaulStoffregen/PS2Keyboard и даже содержит зачатки разумного:
// CTRL, ALT & WIN keys could be added
// but is that really worth the overhead?
state &= ~(BREAK | MODIFIER);
Подключение клавиатуры Consul 262 к компьютеру Океан.
Как раз когда уже успел про неё забыть, приехала платка Arduino Nano с али за 140р. Отличное сырье для клавиатурного контроллера.
67088
MacBuster
28.12.2018, 09:57
Вот тут кое-что на тему подключения клавиатуры (https://zx-pk.ru/threads/29901-(at)ps-2-ascii-adapter-na-pic16f684.html) ;)
Я свой вариант сделаю на ATmega328. Arduino Nano 3 стоит меньше трехсот рублей, программируется через USB и требует под себя несложную переходную плату.
Между прочим, контроллер клавиатуры от AZMaster (http://azmaster.narod.ru/Ocean-240/Hard/KKeyb.jpg) несколько отличается по подключению от журнального варианта. И в альтернативной версии Монитора (http://azmaster.narod.ru/Ocean-240/Bios/0xE000_Monitor.bin), будем называть ее 240.Т, подпрограммы работы с клавиатурой рассчитаны на эту схему.
В частности, подтверждение приема символа ACK выдается на линию PC4, а не PC7, как в журнале.
И это малость обескураживает, потому что в Мониторе 240/7 есть поддержка "журнальной" клавиатуры, но нет ничего про работу с НГМД, а в Мониторе 240.T есть процедуры работы с НГМД, но поддержана другая клавиатура.
ЗЫ Теперь понятно, почему при работе с ней у меня не получалось толком ничего нажать.
ЗЗЫ А еще непонятно, что за сигналы такие JST1, JST2 и JST3, заведенные на линии PB5, PB6 и PB7. Шифты-контролы-руслаты? JST1 - CTRL, JST2 - SHIFT.
Вспомнил еще один свой давний вопрос по океану. Несколько лет назад собирался и на океан конверснуть msx-ные игрушки. Но меня тогда совершенно не устроила работа клавиатуры без автоповтора. Пробовал, я конечно, в emu, причем тогда, насколько помню, был только конфиг Okean-240, варианта с fdd не было. Собственно вопрос - у океана клавиатура действительно работает без автоповтора? Или это я не разобрался, или это особенность конфига без fdd (там видна разница и по клавиатуре)?
Из анализа двух вариантов клавиатурного ввода в двух BIOS могу предположить, что реализация автоповтора целиком ложится на внешний контроллер клавиатуры.
В обоих вариантах анализируется бит прерывания в ВН59, соответствующий линии строба от клавиатуры. Если он взведен, то данные от клавиатуры готовы для считывания в порт, после считывания в сторону клавиатуры отправляется строб подтверждения.
Если для конверсии MSX игр не хватает только автоповтора, то добавить его в прошивки контроллеров PS2-ASCII клавиатур несложно.
Известно ли, как оригинальные контроллеры клавиатуры реагировали на удержание клавиши нажатой при получении контроллером подтверждения о принятии кода компьютером?
Полностью оригинальных контроллеров известно два, оба варианта на жесткой логике с опросом матрицы кнопок. Есть ли там автоповтор, сказать не могу.
Третий вариант - подключение готовых клавиатур от промышленных терминалов, вроде Consul или Mera. В них автоповтор есть, скорее всего.
А зачем автоповтор нужен в играх? он же унылый: нажал клавишу и ждешь секунду, пока не затараторит.
Обычное управление главным героем - нажал вправо, и пока держишь, он идет или едет вправо. А тут нажал, он один раз передвинулся и все. Чтобы он поехал в желаемом направлении нужно много раз жать клавишу.
Считай, что автоповтор у нас в кармане. Давай, порть :)
Стоп, стоп, не надо портить (ухудшать) аутентично работающие контроллеры, с прицелом на то, что некто то ли портирует, то ли нет. Возможно стоит наоборот подождать, пока будет игрушка и только потом что-то менять в железках. Кроме того в эмуляторах останется аутентичный вариант и автоповторной клавиатурой смогут насладиться только многочисленные обладатели реалов.
Автоповтор обычной PS/2 клавиатуры через адаптер (ардуиноподобная PS2Lib) работает: при удержании клавиши пауза в 1.5-2 секунды, потом идет пулеметная очередь.
Это хорошо, особенно для набора текста, но для игрушек имхо не очень. И в эмуляторе нет автоповтора.
Можно похачить прошивку ардуины так, чтобы автоповтор был равномерный и прямолинейный, но а) неясно, какие у него должны быть параметры для удобства игрока, и б) могут быть неприятности при работе в обычных приложениях.
Или перейти на матричные клавиатуры, что в XXI веке как-то, знаете ли, эээ.
А нельзя придумать посылку брейк-кода так, чтобы и совместимо со старым софтом (которого, как я понимаю, целых два) и оставалась возможность отслеживать нажатие-отпускание для нового софта (которого зреют уже тыщи)?
Придумать можно, а что такое брейк-код, и кто куда его должен посылать?
Старый софт - это весь CP/M, как минимум.
PS/2 клавиатура посылает мейк-код, когда клавиша нажимается и брейк-код, когда клавиша отпускается. Дальше уже драйвер делает из этого нажатия, автоповторы итд. Может быть можно было бы придумать как посылать брейк-коды в Океан так, чтобы старый софт не принимал их за что-то еще. Тогда можно написать новый драйвер, который бы позволял знать нажата или отпущена клавиша в момент опроса.
Вряд ли весь бесконечно ценный софт для CP/M общается напрямую с железом клавиатуры на Океане. Он будет рад сгенеренному новым умным драйвером автоповтору.
Про мейк-брейк это я знатно стормозил.
Драйвинга во времена "Океана-240" еще не существовало. Есть пара ассемблерных вызовов, один проверяет статус готовности очередного кода клавиши, другой этот самый код считывает из порта. Можно их переписать вполне (заодно приделать к клавиатурному ППА джойстики), например, расширив количество бит в коде клавиши с 7 до 8. Наружу для CP/M так и будут торчать вызовы KBDSTAT и KBDREAD.
Это и есть драйвер, просто тогда еще не научились делать драйвера мышки на триста мегабайт с рекламой.
В общем все выглядит так, как будто бы никаких проблем сделать более полноценную обработку клавиатуры у Океана на самом деле нет?
В общем все выглядит так, как будто бы никаких проблем сделать более полноценную обработку клавиатуры у Океана на самом деле нет?
Ну как сказать. Есть некоторые конструкционные особенности, которые следует принять во внимание, если мы не хотим заниматься глубокой евгеникой. Это сигналы STB и ACK, а также однонаправленный 7-битный порт данных. А так ограничений практически нет.
Между прочим, контроллер клавиатуры от AZMaster (http://azmaster.narod.ru/Ocean-240/Hard/KKeyb.jpg) несколько отличается по подключению от журнального варианта. И в альтернативной версии Монитора (http://azmaster.narod.ru/Ocean-240/Bios/0xE000_Monitor.bin), будем называть ее 240.Т, подпрограммы работы с клавиатурой рассчитаны на эту схему.
Эта клавиатура - известная по УКНЦ и наборам КР отечественная пленочная клавиатура МС 7007.
Как раз когда уже успел про неё забыть, приехала платка Arduino Nano с али за 140р. Отличное сырье для клавиатурного контроллера.
67088
Не прошло и полугода. В рамках операции по причесыванию "Океана" и расчистке рабочего места сбацал платку-нахлобучку:
69111
5 штук на JLCPCB обошлись в 530р вместе с доставкой. Ждемс.
https://sensi.org/~tnt23/ok240/ok240ps2.jpg
Правильно собранное устройство в настройке не нуждается, как писали когда-то в журнале "Радио".
692866928869287
Не хватает сброса по Ctrl+Alt+Del, и еще надо поправить определения кодов стрелок в PS2Keyboard.h.
Проздравляю с! А для тех кто мимо крокодил - теперь настройка параметров автоповтора станет легкой как никогда прежде?
Проздравляю с! А для тех кто мимо крокодил - теперь настройка параметров автоповтора станет легкой как никогда прежде?
Спасибо за! Настройка автоповтора и раньше была такой же непринужденной (и тут и там одинаковая ардуина). В смысле - я еще не разбирался :) Посмотрю, поддерживает ли версия PS2Library 2.4.0 двустороннюю беседу с клавиатурой.
Есть более продвинутая версия библиотеки PS2KeyboardAdvanced - https://github.com/techpaul/PS2KeyAdvanced - двунаправленная, т.е. с управлением светодиодами, поддержкой всех модификаторов и т.д. To be tested.
Пока в рамках подготовки к Ctrl+Alt+Del завел A0 ардуины на линию сброса клавиатуры "Океана". Как приятное побочное следствие этого пропала необходимость вручную нажимать кнопку сброса после включения.
(Новости ардуиностроения. Штатный бутлоадер передает управление коду скетча спустя примерно 2.5сек, но наука разработала альтернативный скоростной бут https://github.com/Optiboot/optiboot)
Приделал Ctrl+Alt+Del. И как люди жили раньше без этого?
С автоповтором дело обстоит следующим образом. Его можно или подстроить в ограниченных пределах (частота от десятков до единиц нажатий в секунду, задержка от 0.25 до 1 секунды), или просто игнорировать для некоторых клавиш (в данном случае для стрелок управления курсором). В принципе это все можно сделать настраиваемым и отключаемым прямо с клавиатуры же.
Его можно или подстроить в ограниченных пределах (частота от десятков до единиц нажатий в секунду, задержка от 0.25 до 1 секунды), или просто игнорировать для некоторых клавиш
Супер!
игнорировать для некоторых клавиш (в данном случае для стрелок управления курсором)
А почему игнорировать для курсора? Меня больше всего в emuшном океане как раз разочаровало отсутствие автоповтора для курсора (для игрушек).
А почему игнорировать для курсора? Меня больше всего в emuшном океане как раз разочаровало отсутствие автоповтора для курсора (для игрушек).
Ну или действительно, можно автоповтор сохранить, но убрать начальную паузу.
автоповтор сохранить, но убрать начальную паузу.
Да, да, да! Для курсора в игрушках самое то, только наверно лучше чтобы начальная пауза (если она не складывается) была равна интервалу между повторами.
Да, да, да! Для курсора в игрушках самое то, только наверно лучше чтобы начальная пауза (если она не складывается) была равна интервалу между повторами.
Ну вот если использовать стандартные настройки typematic, встроенные в PS/2 клавиатуру, то невозможно полностью убрать задержку или сделать ее менее 0.25с. Частоту автоповтора-то можно подобрать в 4 cps, так что будет неотличимо. Но! не знаю про твои игрушки, а в Океаноиде с такими тормозами играть невозможно.
4 cps совсем мало, тогда снимаю свое предложение по выравниванию. Тут надо по конкретной игрушке на реале настраивать.
Вариантов на самом деле множество, если в центре будет все тот же ардуиноконтроллер: от завести с "Океана" в ардуину неиспользуемые линии клавиатурного ППА и рулить контроллером прямо из новодельных игр, до (как я уже писал) снабдить контроллер комбинациями для настроек, вроде Ctrl+Plus, Ctrl-Minus и проч.
sergey_sitnik
17.01.2024, 11:01
Всем доброго дня!!! Кто ни будь собирал эту схему, просто не понятно.. в области транзистора...кто что может пояснить... что куда и как..80115
Транзистор коротит на землю сигнал RESET (цепь 7, контакт разъема 18).
АлександрПП
18.01.2024, 10:08
С этим все понятно.Не понятно еще вот это. 6 вывод элемента К155ЛН3 идет в 18 цепь. Резистор 5.6к - в цепь питания. На схеме же они соединены. Все будет понятно, если линию от вывода 6 к эмиттеру транзистора считать шиной. Но она ведь тонкая на схеме.
Вот такие сомнения.
По-моему, узел на инверторе предназначен для сброса как кнопкой, так и при включении питания.
Вот зачем там другой узел для прерывания RST0 - загадка.
АлександрПП, выход инвертора 6 (цепь 18) идет на строб готовности данных с клавиатуры RST1 (контакт 30 системного разъема). Резистор 9К1 в базе транзистора идет на цепь 6 и только.
Всякие материалы по океаническим клавиатурам собраны тут - https://www.sensi.org/~tnt23/ok240/keyboard.html
АлександрПП
19.01.2024, 16:45
Спасибо, уже разобрался.
АлександрПП, скетч для ардуино можно взять здесь - https://github.com/timtashpulatov/ok240/blob/master/ps2kbd/ok240ps2.ino
UncleDim
11.08.2024, 15:54
Поясните начинающему пловцу, нативная клавиатура на рассыпухе авто повторяет нажатое? Вот прям с частотой сканирования? А если в одном ряду несколько нажатых оказывается? Никак не решусь раскурить эту схему, доисторические кмопы как-то мимо прошли и не особо хочется)
UncleDim
12.08.2024, 17:12
(сам вроде как оклавиатурен по третьему варианту авторства четвертого (см. классификацию из стартового поста), от себя только заточка под несколько другой пик, 16ф628, ну и протокол-полярности)
Хочется в идеале чтоб как нативная рассыпушная работала, при этом не собирая ее)
UncleDim
15.08.2024, 21:51
из книги по океану номер два:
TOM 6. "ИГРЫ
!!! "'" - ИГРЫ ТРЕБУЮТ НЕСТРОБИРУЕМОГО ОБМЕНА С КЛАВИАТУРОЙ (ДОРАБОТКА СХЕМЫ)
вот да, замечено, если не реагировать на ACK и держать строб активным - скорострельность автоповтора зашкаливает. не в этом ли заключается доработка? держать строб, пока нажато.
UncleDim
21.08.2024, 20:43
зачем там другой узел для прерывания RST0 - загадка.
тем более, что висит он одиноко в воздухе. либо предполагалось наличие еще одной кнопки, помимо целой кучи в 7007, либо переназначение кнопки стоп, путем переноса соотв. резистора
Может, для чисто океанических применений. Там что-то такое в статье упоминалось про RSTx на плате клавиатуры (?)
UncleDim
21.08.2024, 22:14
вопчем почти раскурил схему, пока пытался отрисовать ее в протеусе. недорисовал, вроде понимание настигло раньше)
от генератора с делителями считают счетчики, от счетчиков дешифратор, через диоды на столбцы матрицы. 8 разрядов со строк матрицы складываются, и, буде что в конкретном столбце вдруг нажато - генерится строб. счетчики при этом, похоже, приостанавливаются. далее монитор+ читает номер опрашиваемого контроллером столбца (порт С0..3, 42h), добавляет к нему пару бит состояния Ctrl и Shift (биты порта C5, С6, пододвигаемые, как видим, вплотную к С3..0 в процедуре) и далее, по идее, должен считать порт А(=40h), оно же состояние строк матрицы. по выдаче ack процесс продолжается.
т.е., теоретически есть возможность отработать комбинации нажатых клавиш (с точностью до того, что 7007 это всё же пленка, а не тру механик с персональным диодиком на клавишу),
есть возможность не тратить (почти? прерывания вообще кроме теста задействованы?)) время, когда ничего не нажато,
пока нет пониманиятеперь и ежу понятно, как пробел (20h?) превращается в семерку, на "старом" контроллере,
и получается нет нужды в нестробируемом обмене для вот той части игр из списка книги2.
- - - Добавлено - - -
а также
адаптер на пике под это дело не заточить ввиду отсутствия ног,
на атмеге - можно, ввиду наличия.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot