Цитата Сообщение от Error404 Посмотреть сообщение
Опрос всегда в одну сторону (там же диоды, выход 8 бит, 11 входов для УКНЦ), все линии могут опрашиваться одновременно.
фух, слава богу Иначе пришлось бы делать опциональный переворот матрицы в зависимости от назначения порта А - сейчас выход вычисляется как построчный OR для сочетания "строка матрицы" и "скан-код". Такое решение максимально быстрое и позволяет опрашивать любое число столбцов сразу. Только реализацию надо чуть ускорить - пока что сделал немного "в лоб" и при неудачном стечении обстоятельств может не успеть среагировать.
Цитата Сообщение от Error404 Посмотреть сообщение
А вот опрос по ячейкам памяти может быть почти вдвое быстее чем по портам - в режиме Ориона-128 с косвенной адресацией, пример с потолка:

ld de, portB
ld hl, portC
ld bc, portA
ld a,scаncode
ld (bc),a
ld a,(de)
ld b,(hl)
Глянул в справочник:

  • OUT r, (C) - 12 T-States
  • IN A, X - 11 T-States
  • LD (bc), a - 7 T-States
  • LD a, (de) - 7 T-States
  • LD r, (hl) - 7 T-States

Таки да, надо будет ужимать по времени максимально. Подумаю над этим вопросом завтра

- - - Добавлено - - -

Цитата Сообщение от Error404 Посмотреть сообщение
Опрос всегда в одну сторону (там же диоды, выход 8 бит, 11 входов для УКНЦ), все линии могут опрашиваться одновременно.
Просто в эмуляторе видел раскладку питерскую, где сканоды гнались в порт А, а выход читался из В и части С.