Уважаемые коллеги,
Вашему вниманию предлагается очередной контроллер PS/2 клавиатуры для ZX Spectrum совместимых компьютеров и многочисленных клонов.
Построен данный контроллер на базе Atmega328p и CPLD Altera EPM7128STC100.
Детали проекта: https://github.com/andykarpov/ps2_cpld_kbd/
За основу была взята идея отсюда: http://www.jrok.com/project/speckey/spec_key.html
Принцип работы:
AVR слушает события от PS/2 клавиатуры, заполняет некую внутреннюю матрицу состояний 40-кнопочной клавиатуры и по SPI протоколу передает эту матрицу в CPLD, которая, в свою очередь, слушает адресные линии клавиатуры и моментально отображает результат в порт клавиатуры ZX Spectrum.
Исходники железной и софтовой части проекта открыты, можно ознакомиться с принципом работы и внести коррективы, если потребуется
Кроме стандартных 40-кнопок также реализованы клавиатурные комбинации ZX Spectrum, включая курсор.
Из дополнительных плюшек:
- сигнал RESET по Ctrl+Alt+Del (формируется короткий импульс сброса)
- сигнал TURBO по Scroll Lock (переключается 2 состояния с запоминанием выбора в EEPROM меги)
- сигнал MAGICK по F2 (формируется короткий импульс)
- сигнал SPECIAL по Print Screen (также как и в TURBO, переключается между двумя состояниями)
- индикация TURBO и SPECIAL, а также активности устройства на светодиодах, расположенных на плате
Работоспособность проверялось вместе с ZX Max 128 и ZX 128 Spider.