Подключение PS/2 или USB(ps/2 совместимой) клавиатуры к ZX-Spectrum
Текущая версия 5.5
В процессе модернизации своего ZX-Spectrum каждый постепенно приходит к тому, что у него перестают работать некоторые кнопки на стандартной клавиатуре, это может быть вызвано различными факторами. Например, перетерлись дорожки пленочной клавиатуры в местах стыковки её с платой или появились микротрещины на пленке самой клавиатуры.
Да и сама по себе ZX клавиатура весьма неудобна, и лучше бы её заменить на более современную, благо теперь вы можете совершенно без труда это сделать.
В поисках по интернету я находил много вариантов данного решения, но везде была куча обвязки у микроконтроллеров, да и сами микроконтроллеры были такими, которые либо трудно достать, либо они достаточно дорогие.
Вы уже наверное заметили моё пристрастие к МК Atmega 8 ? 🙂 Собственно на нем бы и хотелось всё это реализовать с минимальной обвязкой, а еще лучше совсем без неё.
В интернете я наткнулся на очень интересную реализацию данного решения, собственно вот здесь
покопавшись в архивах с прошивками я нашел прошивку под Atmega8, но, она почему-то не заработала… 🙁
Долго, очень долго я пытался её запустить, но ничего не получалось, при этом под Atmega48 и 168 всё было хорошо (по словам тех кто их подключал).
В итоге, я решил дизассемблировать прошивку от Atmega8 и Atmega168, порывшись в даташитах, я обнаружил, что в Atmega8 перепутаны некоторые порты (видимо прошивка делалась до кучи и не проверялась), так же для регистра TIFR пришлось переписать часть кода, т.к. его номер 0x58 и он недоступен для команд sbis и cbis. Ковыряясь дальше, я обнаружил, что на одном из входов шины адреса не был включен PullUp из-за чего в приведенной схеме автору пришлось поставить подтягивающие резисторы на все адресные пины. Проанализировав схему, я убрал подтягивающие резисторы с CLK и DATA выходов, т.к. они есть в самой клавиатуре (по заверению производителей). Так же убрал светодиод, т.к. он всё-равно внутри и некому им любоваться 🙂 Подправил работу дополнительных кнопок.
В итоге, прошивка заработала с кварцем 24МГц, причем очень даже отлично! Лучше чем родная клавиатура!
PS: так же я удалил из прошивки работу с клавиатурными скриптами, они мне не нужны, да и вообще мало кому нужны, это позволило еще больше ускорить реакцию на нажатия клавиш. В версии 2.0 удалось избавиться от самопроизвольных нажатий на кнопки BTN1, BTN2 при инициализации контроллера.
Во общем, теперь собственно о реализации.
Прошивка
Скачать прошивку (версия 2) для Atmega8 и кварца 24МГц вы можете >>>тут<<<
Версия 3 (24.01.2016) >>>тут<<<
Новая улучшенная версия 4 (26.01.2016) >>>тут<<<
Новая улучшенная версия 5.5 с исходниками (03.02.2016)
kbd_firmware_v5_5_m8_with_src (для ATMega8) не нужны конденсаторы на кварц
kbd_firmware_v5_5_m48_with_src (для ATMega48)
kbd_firmware_v5_5_m168p_with_src (для ATMega168p)
kbd_firmware_v5_5_m328p_with_src (для ATMega328p)
С версии 5.3 отключение NumLock переводит курсорные клавиши и пробел в режим Sinclair джойстика, а так же автоматически включается режим E перед нажатием клавиш {}[]~
Загружается стандартно с помощью avrdude и USBASP
avrdude -p atmega8 -c USBasp -U flash:w:KBD13_M8_nw_MODIFIEDv4.hex -U lfuse:w:0xCF:m -U hfuse:w:0xC7:m
Подключение
Я подключил все пины напрямую к ZX-Spectrum, вроде всё работает хорошо, но можно для большей стабильности повесить резистор 10 КОм на (RESET) подключив резистор к VCC.
Конденсаторы на кристалл можно не вешать, т.к. включен фьюз CKOPT.
Минус питания можно подключать как к 8 пину, так и к 22, т.к. они запараллелены в МК. Так же можно брать плюс питания с 20-ой ноги для подключения других микросхем, очень удобно 🙂
Примерная схема подключения:
Распиновки клавиатурных разъемов
Если есть вопросы, пишите в комментариях.
PPS: выходы BTN1 и BTN2 можно подключать к любым кнопкам типа /RES (т.е. которые замыкаются на землю GND) в своем кворум-бк04 я подключил на них INV и кнопку которая делает тише звук.
Данная схема работает на обычном спектруме. Но на турбированном работают только кнопки F11, F12, SysRq.
Я правильно понимаю, что атмега просто не успевает поймать биты опроса клавиатуры со стороны спектрума?
Можно ли это как-то исправить программно?
Да, именно так, скорее всего программно исправить можно, поправив тайминги опроса. F11, F12 работают т.к. они не участвуют в опросе, а замыкают контакты напрямую.
Здравствуйте. RDFE это куда подключается?
К порту клавиатуры, если он разведен, если нет, то сделать самостоятельно, по схеме из практически любого клона ZX
У меня схема пентагон 128 от.2014 года, брал плату у Tetroid. Там на общей гребёнке есть контакт KEY SELECT, прокурив схему, пришел к выводу, что это оно. Подключил. Не работает. Делал на arduino nano с 328 мегой на борту, кварц 16 Мгц. Не работает. Клавиатура моргает всеми светодиодами и тишина.
А не будет слишком наглым попросить Вас поправить прошивку или подсказать в каком месте что поправить?
К сожалению, я не являюсь автором данной прошивки, но беглый просмотр кода говорит, что обработка шины ведется в INT0_Handler, т.е. с порта D читаются биты адреса + 1 бит адреса берется с порта C, получив адрес, из таблицы берется значение и шлется в шину данных (порт B).
Так как у вас клавиши не работают совсем (даже нет мусора), то здесь возможны 2 проблемы
1) атмега не успевает считать/записать данные на шину и требуется задействовать WAIT (можно повесить на B.5 и поместить дерганье этого сигнала в INT0_Handler)
2) сама атмега тормозит с кристаллом 24МГц, попробуйте заменить на другую, возможно проблема именно в чипе.
Подумав еще немножко, могу сказать следующее
1. Раз кнопки F11, F12… работают, значит опрос самой клавиатуры ps/2 происходит нормально и аппаратные прерывания от ZX не забивают таймер.
2. Раз другие кнопки не работают совсем, значит аппаратные прерывания, хоть и работают, но не успевают выставить нужный бит на порту вывода или вообще переключиться в режим вывода, а, возможно, и не срабатывает считывание по /RDFE.
INT0_Handler:
in YL,PinD ; PinD -> YL получаем данные с шины адреса
sbic PinC,0x03 ; if (PinC.3=0) skip next line (IF KA10=0)
ori YL,0x04 ; YL or 4 (1->YL.2) добавляем недостающий бит с порта C
; [Y] -> r20 // берем данные из таблицы и шлем в порт B
ldd r20,Y+0x00
out PortB,r20 ; r20 -> PortB
LOOP0: // держим шину данных пока /RDFE=0
sbis PinD,0x02 ;if PinD.2=1 skip rjmp
rjmp LOOP0
// выставляем единицы на порту B (на шине данных все единицы)
out PortB,CONSTFF ; 0xFF -> PortB
reti
Если по коду, то в YL мы получили состояние шины адреса для опроса клавиатуры, затем, из таблицы, подготовленной в таймере, получили значение для отправки в шину данных в регистр r20, который отправляем в порт B и ждем пока /RDFE не станет 0.
Вот, где-то в этом промежутке отправки данных и выставления единиц на шине данных может быть проблема, но, чтобы понять более конкретно, нужно проверить на конкретном примере.
К сожалению, у меня турбированного варианта нет, поэтому я оставляю это для тех у кого есть такая возможность.
Еще, можно попробовать
// set INT0
ldi r18,0x0A ;falling edge
поменять на rising edge, но, не знаю, поможет это или нет
поменять нужно на
ldi r18,0x0F ;int0/1 rising edge
PS: если будут успехи, сообщите, пожалуйста.
Увы, не помогло. Видно Атмега8 не успевает обрабатывать сигнал на такой скорости. Сейчас жду Атмегу48, попробую по этой же упрощённой схеме залить для неё прошивку и проверить, успеет ли она.
Поделитесь потом успехами, 48-ая возможно и заработает, т.к. там больше портов, т.е. нет необходимости объединять биты с шины адреса.
AVR ZX Spectrum:
http://meandr.org/archives/21451
Поддержка TR-DOS
http://www.youtube.com/watch?v=N9m1kG-0Tek
Василий, я давно слежу за вашим проектом, если хотите могу для вас отдельный раздел сделать
В версии 3 ускорена обработка прерываний /RDFE, поэтому возможно клавиатура заработает и в турбо режиме, если у кого-то заработала, сообщите, пожалуйста.
Is this for the zx spectrum 48k or other?
And which is the column and address pins in the schematic?
Regards
Yes, it is for ZX-Spectrum, address pins on PD0,PD1,PD3-PD7,PC3, data (column) pins on PB0-PB4, PD2 is for keyboard port switching /RDFE (reading from port #FE signal). If you mean ZX-Spectrum with ULA chip, you need to add additional IC for decoding port #FE, bacause decoder is in ULA and we don’t have access inside 🙁
Не могу запустить на желтом скорпионе( F11, F12, PrintScreen — работают, а вот все остальное — нет. Использую Atmega8 и 24МГц кварц, прошивка Версии 5.5. Сигнал /RDFE подключаю к КП11 на 15 ногу, он на схеме обозначен /CSK (там стоит две КП11 для сигналов KL0-KL4) Прошу хоть какой-то помощи в подключении.
Чтобы не показалось, что сообщение осталось без ответа, обсудили здесь http://zx-pk.ru/threads/17270-kontroller-klaviatury-dlya-quot-pentagon-128-quot-na-atmega8-48-88-168-328.html?p=896980&viewfull=1#post896980
я тоже сделал устройство для подключения PS/2 клавиатуры на ATmega168, работающей на частоте 20MHz. Порт D подключен к KA8..KA15, порт B — KD0..KD4. По прерываниям происходит чтение скан кода от клавиатуры, а вот читать линии адреса KAn и управлять линиями KDn по прерываниям микроконтроллер уже не успевает, поэтом пришлось сделать поллинг в очень коротком основном цикле. Все работает, но полагаю, что реализация подключения на микроконтроллере принципиально не верна )) — для иммитации оригинальной кнопочной клавиатуры правильнее использовать CPLD в сочетании с микроконтроллером. Такой проект уже есть http://microsin.net/adminstuff/hardware/yet-another-sinclair-spectrum-at-keyboard-interface.html , и я в рамках освоения технологии применения CPLD планирую создать нечто подобное, но с расширением: например, включить в CPLD логику управления выбора ПЗУ Спектрума…
Схема с CPLD однозначно будет на 100% иммитировать оригинальную клавиатуру и подключаться 13-тью проводками к Спектруму. Чипы MAX3064A уже заказал и жду ))
С CPLD конечно вариант лучше, но дороже и сложнее, тут же решение требующее минимум усилий для повторения 🙂 хотя не на всех моделях будет работать.
Да, EPM3064ATC44 в Чип и Дипе стоит 240р. за штуку, а на Aliexpress — 70р., (20шт. за 1400р)… Сложность схемы возрастает незначительно, но можно сэкономить на микроконтроллере — взять попроще. Так что с CPLD возрастает сложность — но плюсом будет корректность работы. Сделаю для себя — обязательно поделюсь с заинтересованными лицами ))
Собрал, все работает. Но иногда нажатие любой кнопки вызывает RESET. Не знаете что можно сделать, что бы этого не происходило,?
Может МК на данной частоте работает нестабильно (зашунтируйте кварц атмеги сопротивлением на 2-3МОм), или шина данных не стабильна, тут тогда нужно ставить диоды как в оригинальной схеме.
Hello. Greetings from Argentina. /RDFE signal can be obtained when A0, /RD, and /IORQ are low. Am I right?.
Yes, you’re absolutely right!
Доброго времени суток всем!
Получилось на EPM3064ATC44 сделать? Если да поделитесь пожалуйста со схемой и прошивкой.
Собрал устройство на макетной плате. Освоил Verilog, написал прошивку для CPLD, отлажу — и все буде готово. Останется только нарисовать схему в PCAD и развести там же плату. Плата ATmega+CPLD предполагается быть универсальной, так что мне она нужна не только для спектрумовской клавиатуры.
Поделитесь потом ссылочкой
Здесь ссылка на проект https://github.com/leonid-z/zxkeyboard
Вчера закончил работу с макетом, прошивкой для CPLD и программой для микроконтроллера. Все работает как задумывалось.
Буду рисовать схему, разводить и заказывать платы.
Хотя появилась следующая задумка: PS/2 клавиатура — хорошо, а USB — лучше! В результате заказал на Aliexpress платку с SL811 — USB хост контроллером.
P.S. Интересно — кому-нибудь такие адаптеры нужны?
Очень интересный проект! Хотелось бы иметь такую разведенную платку для CPLD, можно даже пока только под PS/2. Буду следить за гитхабом.
Hello from Canada!
Would you tell me what to connect to /BTN1 and /BTN2? Are there any buttons? If yes, what are their functions?
Thank you very much!
Laurentiu
You may connect any button like /RESET, /MAGIC etc. which shorts to ground.
Доброго дня! Я прикупил контроллер, о котором идет речь на форуме zx-pk, но там вместо atmega48 стоит atmega8, ребята подсказали, что в этом случае лучше всего использовать вашу схему. Нет ли где-то печатной платы вашего контроллера? Я сам не смогу сделать чертеж монтажки по схеме.
Privet Vsem!
V nachale goda sdelal ya ZX97 (klon ZX81). Prilogil k nemy TZXDuino. Neskol’ko foto zdes’ — https://imgur.com/a/kYP2Q
Potom reshil dobavit klavyaturu PS2. Nashol v internete ssylki k proektu ZX Spectrum PS2 keyboard. U menya ne bylo otdel’nogo kontrollera ATMega328P no imel Arduino Pro Mini 16MHZ s nim. Zaprogrammiroval, podklyuchil — no i PS2 ne rabotaet :/.Oshibok v montage net.
Ya smotryu shemu ZX81 i ZX Spectrum i tak dumayu, chto klavyatury u nih odinakovye i opros toge.
U menya est vopros: ya horosho dumayu ili net? Nado mne iskat’ samyy kontroller ATMega na vysshuyu chastotu ili ya oshibayus i nado mne brosit’ eto delo?
Pozdrvlyayu vseh — Tadeusz.
Судя по схеме ZX97 работа с клавиатурой ведется аналогично ZX-Spectrum, поэтому данный проект должен работать.
16MHz это мало для нормальной работы контроллера, нужно минимум 24MHz
Spasibo bol’shoe za otvet. V takom sluchae ne sdayus’ — poishchu ATMega8. Obyazatelno napishu o rezultate — no eto moget byt’ ne ochen’ bystro.
Добрый день! Пожалуйста подскажите, есть ли где-то чертеж печатной платы? Хочу собрать ваш контроллер, но не могу развести плату сам.
Поищите на zx-pk.ru в этой теме https://zx-pk.ru/threads/17270-kontroller-klaviatury-dlya-quot-pentagon-128-quot-na-atmega8-48-88-168-328.html вроде бы там кто-то делал плату
Добрый день, помогите пожалуйста. Хочу сделать обычную 40 клавишную клавиатуру как на оригинальном zx spectrum 48k, с помощью ps/2 клавиатуры. Как в прошивке переназначить кнопки? Я в асемблере не волоку вобще, код на си пишу. ADMIN подскажи, если можно с примером пожалуйста
KEYTABLE: ; KeyCode PC ZX KeyCode PC ZX
.db 0x00, SS+KEY_D ; 0x00 — N/A — ——- ; 0x01 — [ F9] — STEP
.db 0x00, SS+KEY_U ; 0x02 — N/A — ——- ; 0x03 — [ F5] — OR
.db SS+KEY_E, SS+KEY_Q ; 0x04 — [ F3] — >= ; 0x05 — [ F1] — ASN
Тут в табличке по два сканкода PS/2 клавиатуры (без расширенных кодов, с расширенными в других таблицах ниже),
нумерация начинается с нуля, т.е. в первой строке в таблице им ставится соответствие, 0 — 0 (данный код ничего не делает), 1 (кнопка F9) ей ставится в соответствие SymbolShift + D, что соответствует слову STEP на ZX,
в следующей строке идут коды 2 и 3, 2 — 0 (данный код ничего не делает ему ставится в соответствие 0, что означает нет нажатия на клавишу ZX), коду 3 (кнопка F5 на клавиатуре) ставится в соответствие комбинация SymbolShift + U, что соответствует слову OR на ZX клавиатуре, и т.д.
Аналогично для кодов с префиксом E0 на PS/2 клавиатуре, отдельная таблица, принцип кодирования аналогичный
И еще 2 таблицы для нажатий при включенном CapsLock и NumLock, чтобы можно было эмулировать PC клавиатуру на ZX, особенно полезно при редактировании текста, чтобы было удобно работать как на PC.
Понял спасибо, будем разбираться, в версии 5,5 немного непонятно работа светодиодов, в самом начале загараются и гаснут, потом зажигаются если нажать на кнопку, и не меняются если нажимать на HumLock CapsLock. Подскажите Реально ли в прошивке оставить только опрос клавиатуры ps/2, прерывания и табличку одну, а такое как светодиоды и разные режимы убрать, чтоб было просто нажал на кнопку и контроллер с эмулировал нажатую кнопку? Если да то подскажите куда в прошивке копать?
Разобрался уже)) Спасибо ADMIN за подсказку, все отлично работает
Собрал схему выше на atmega 8 завелась на кварце 24мгц,но вот светодиод NUM LOCK на клаве горит постоянно и на нажатие кнопки не реагирует т.е нельзя использовать джойстик как описано выше прошивка v5.5.Остальное вроде работает нормально.В чем может быть проблема?Комп PENTAGON 128K модификация 2014г.
А Caps Lock и Scroll Lock нормально реагируют? Может с самой клавиатурой что-то? Китайцы иногда и не такое могут учудить…
Да нормально реагируют.
Клава гениус KWD-820 стара как г… мамонта.На обычном компе нормально работает.Другой клавы правда с PS/2 нет в наличии.
Да Админ ваша правда,попробовал на обычном компе не работает кнопка NUM LOCk видимо шлейф отвалился.Бум искать другую клаву.
Доброй ночи. Собрал схему — работает но както прерывисто. Т.Е. если удерживать клавишу — то повтор символа получается с разным периодом. Atmega8A (по датащиту максимум 16мгц) а стоит кварц на 18 мгц. Проблема в малой частоте?
Да, скорее всего слабоват, удивительно, что он на данной частоте вообще работает 🙂 я всегда ставлю 24, но 8А они такие…
Писал точно такую-же программу только на СИ и для at89c55 с кварцем 33 мгц. Работает еще более прерывисто!
а где в ленинграде /RDFE взять ? Что-то не могу найти его
В ленинграде его нет, /IORD и A0 заведены на КП11, поэтому нужно его сформировать, например как здесь https://www.alpsoid.ru/?p=746
Собрал данную схему с МК ATmega168PA. Кварц 20 МГц. Прошивка 5.5 Fuse биты взял из файла readme.txt (Low 0xCE High 0xDD).
После включения кратковременно вспыхивают три светодиода на клавиатуре. На Caps Lock, Num Lock, PrScr клавиатура не реагирует и соответствующий светодиод не зажигается. Сам спектрум ни на одно нажатие клавиатуры не реагирует. Подключено все по схеме, единственное вызывает затруднение сигнал /RDFE. У меня плата HARLEQUIN_128_Issue_2D. Это участок схемы https://zx-pk.ru/attachment.php?attachmentid=66061&d=1535183302. (здесь полная схема http://trastero.speccy.org/cosas/JL/Superfo-Harlequin-128K/128K-i.html). Я пробовал подключать его как к выводу 3, так и к выводу 6 микросхемы U5. Сигнал RESET ZX должен же формироваться вне зависимости от подключения линий КА8-КА15, KD0-KD4 и /RDFE? Те же светодиоды на клавиатуре тоже должны светится без подключения к спектруму? Просто как еще проверить работоспособность кнтроллера?
Мне кажется, нужно инвертировать сигнал с 6-го вывода U5
Подскажите собрал данную схему на atmega8a кварц 24мгц клавиатуру подключаю по usb dexp k-902bu согнал /RDFE беру с лл1 как по схеме https://www.alpsoid.ru/?p=746. Клавиатура при подключении никак не реагирует, светодиоды не загораются, Атмегу прошивал прошивкий 5.5 24 мгц кварц через TL866II+, фьюзы как в readme.txt, лок галки сняты. Ленинграл 48к никак не реагрирует на нажатия клавиш, если замыкаешь контакты на самой плате ленинграда, символы на экране появляются.
Продублирую с zx-pk.ru свое сообщение. Я провел эксперимент. Закатал назад ATMega168PA на плату и поставил кварц 25 МГц. Биты конфигурации выставил на внешнее тактирование и разрешил выход тактового сигнала на порт CLKO (РВ0). После подачи питания частотомер показал на этом выводе частоту в 25 МГц. Причем стабильную частоту, без скачков и провалов. Это стало доказательством, что МК дружит с кварцем на этой частоте. Прошил прошивку KBD13_M168P_nw_MODIFIEDv5_5_25MHz.hex.
Результат отрицательный. Клавиатура не дружит с МК, Снизил тактовую до 8 МГц на внутреннем генераторе, клавиатура и МК заработали на этой частоте. Воспользовался случаем и проверил с какой частотой идет тактирование порта CLK клавиатуры. Всего 137 Гц. Что-то маловато. По вики там частота 10-16 кГц должна быть.
В общем делаю выводы из своего эксперимента. Прошивка не работает, где-то в ней ошибка. Изначально надо сделать так, чтобы без проблем дружили МК и клавиатура, а уж затем проверять работу на ZX.
Проверил на клоне ZX Spectrum КВАНТ и atmega8a, ставил кварцы от 20 до 30 МГц, проверил все прошивки по частотам. ПРОШИВКИ НЕ РАБОТАЮТ!!!. Или компьютер вешаеться — при этом повышается потребление электроэнерги примерно 200-500 мА, испортил 4 — atmegi, вероятно они вылетели из-за разностей уровней-атмега не в такт (в прерывание) выставляла свои данные на шину, один раз повредилась прошивка ПЗУ спеки. Самый лучший вариант- это реакция на prt sc — reser компа, и включение и выключение светодиодов num lk и …ПРОШИВКИ НЕ РАБОТАЮТ!!!.
Добрый день.
Прошивки неоднократно проверялсь и работали. Atmega8 по определению не может вылететь, если не нее не подавать повышенное напряжение более 5,5 вольт. Повредить ПЗУ тоже очень сложно, если нет повышенных напряжений или статики, скорее всего у вас проблемы с питанием или некачественные микроконтроллеры.
Продолжая эксперементировать с кварцами и прошивками… Добился отказа части клавиатуры по линиям А15 и А14- 2 ряда перестали работать. Что интересно диоды по линиям на прозвон ЖИВЫЕ. При подключении данного контролера-повышаться потребление электроэнергии до 500мА и комп вешаеться или выполняет что-то непонятное из пзу. Схему по триста раз перепроверял….данный контроллер мне подпалил мой КВАНТ.
Спасибо за проект, очень полезная штука. Я собирал для 4-х Спектрумов, все на 8-х Мегах. У меня заработало только на 20 Мгц, все прочие варианты не работали.
Но есть «но» — маленькими клавиатурами (82-,83-кнопочными) пользоваться практически не возможно. При запуске включается NumLock — курсор работает, но вместо букв на ноутбучнах клавах — цифровая клавиатура. При выключении NumLосk — буквы работают, но вместо кусорных кнопок включается Sinclair_Joystick (6-9 и 0 на пробеле).
В результате я модифицировал прошивку. При инициализации клавы команда, включающая ScrollLock и NumLock заменена на команду, выключающую все Lock-и. Убрано переключение курсора на Sinclair_Joystick путём редактирования таблицы замены кодов курсорных кнопок и пробела.
Прошивка здесь — https://disk.yandex.ru/d/mgTT7LXgXUaMVw
Было Стало
0000006C: 83 80
0000006D: E0 E0
Было:
.def KBD_IND=r24
KBD_MAIN_R:
// init indicators
ldi KBD_IND,3 ; 3 = Scroll lock + num lock
rcall KBD_SEND_INDICATORS
Стало:
.def KBD_IND=r24
KBD_MAIN_R:
// init indicators
ldi KBD_IND,0 ; 0 = All Lock’s OFF
rcall KBD_SEND_INDICATORS
Было Стало
00000506: 22 A4
00000507: A4 A4
00000508: 23 A5
00000509: A5 A5
0000050A: 25 9D
0000050B: 9D 9D
0000050C: 24 A3
0000050D: A3 A3
0000050E: 21 39
0000050F: 39 39
Было:
KEYTABLE_ALT2: ; Keycode KEYS Value in table
.db KEY_9, CS+KEY_7 ; 0x75 [Sinclair Up] / [Up] {ALT2-0}
.db KEY_8, CS+KEY_6 ; 0x72 [Sinclair Down] / [Down] {ALT2-1}
.db KEY_6, CS+KEY_5 ; 0x6B [Sinclair Left] / [Left] {ALT2-2}
.db KEY_7, CS+KEY_8 ; 0x74 [Sinclair Right] / [Right] {ALT2-3}
.db KEY_0, KEY_SP ; 0x75 [Sinclair Fire] / [Space] {ALT2-4}
Стало:
KEYTABLE_ALT2: ; Keycode KEYS Value in table
.db CS+KEY_7, CS+KEY_7 ; 0x75 [Sinclair Up] / [Up] {ALT2-0}
.db CS+KEY_6, CS+KEY_6 ; 0x72 [Sinclair Down] / [Down] {ALT2-1}
.db CS+KEY_5, CS+KEY_5 ; 0x6B [Sinclair Left] / [Left] {ALT2-2}
.db CS+KEY_8, CS+KEY_8 ; 0x74 [Sinclair Right] / [Right] {ALT2-3}
.db KEY_SP, KEY_SP ; 0x75 [Sinclair Fire] / [Space] {ALT2-4}