ZXNet эхоконференция «code.zx»


тема: Генерация матрицы клавиатуры



от: Виталий Гаврилов
кому: All
дата: 21 Jan 2007
Hello, AlexCrush ┌─- CODE ─── ;SRC - source map ;DST - destination map, 256-aligned ld de,SRC ld hl,DST fillloop; ld; (hl),-1 inc l jr nz,fillloop ld c,1 ;step cpyloop; ld; a,c cpl ld l,a ld b,c fillal; ld; a,(de) and (hl) ld (hl),a dec l djnz fillal ld a,l sub c ld l,a jr nc,fillal inc de rl c jr nc,cpyloop └── CODE ─── Hабросал на скорую руку. В правильности работы не уверен :) Алгоритм, думаю, понятен.

от: Крашенинников Александр
кому: All
дата: 21 Jan 2007
Hello, All Занимался я как-то (года 4 назад) созданием контроллера PS/2 клавиатуры на базе второго спека ;-). Контроллер был без-wait-овый за счет чтения кода клавиши основным спеком прямо из памяти спека-контроллера (да,я, наверное, извращенец :) ). Следовательно, стояла задача генерации 256-байтной таблицы клавиатуры. Т.е., 0й байт - то что основной спек получит при чтении из порта #00FE, 1й - #01FE... И т.д.. Если кто не знает, каждый байт в этой таблице рассчитывается как AND тех рядов клавиатуры, номера которых в номере данного байта нулевые. Т.е значение ячейки с номером #D6= %11010110 равняется ANDу 0го,3го и 5го рядов клавиатуры. Значение последней ячейки - порта #FFFE, есс-но = #FF Так вот, предлагаю (в качестве этюда, чтоли), написать процедуру для рассчета такой таблицы. Естесственно хочется, чтобы процедура была как можно быстрее. Входные данные - 8 байт (ряды клавы, имеют значения только 5 младших бит, но это вроде как побоку), выход - 256 байт. Больше ограничений - никаких. P.S. Помнится у меня получился результат около 7000 тактов. Сегодняшние раздумия позволяют вроде как бы сократить это число до ~4500 тактов (хотя я точно считал и вообще не проверял свои мысли). Дерзайте,ежели кому интересно :-)

от: Крашенинников Александр
кому: All
дата: 21 Jan 2007
Hello, Vitamin Vit> Алгоритм, думаю, понятен. Алгоритм и изначально проблем ни разу не вызывал :-). Я же в скорости предлагаю поупражняться ;-) . А у Вас получается (хотя я и не могу уже в 3 часа ночи чтолибо нормально сосчитать) примерно "совсем-дофига-тактов"

от: Знахарь
кому: All
дата: 21 Jan 2007
Hello, AlexCrush к слову о клавах - сколько-то лет назад я разбирал АТшные еще клавы для ремонта (!) (мда, когда-то их чинили...) так вот там контроллером реально стояло нечто ОЧЕHЬ похожее внешне и с надписью Z80... Так что на извращенца AlexCrush не тянет и может спать спокойно :)))) а я, если повезет, попробую найти раритет и сфоткать.

от: Камиль Каримов
кому: All
дата: 21 Jan 2007
Hello, Знахарь > там контроллером реально стояло нечто ОЧЕHЬ похожее внешне и с > надписью Z80... Zilog выпускал контроллеры клавиатуры Z8602/14/15/C15/E23 Применялись во многих AT клавиатурах.

от: Петр Кицун
кому: All
дата: 21 Jan 2007
Hello, caro 2caro - я так понял у тебя в ZXMC когда спек клаву опрашивает wait используется, это не сильно тормозит при загрузки с касеты например?

от: Крашенинников Александр
кому: All
дата: 22 Jan 2007
Hello, caro Предлагаю не уходить от темы. Hеужели никому не интересно попытаться придумать быстрый способ? Или все сильно чем-то заняты?

от: Виталий Гаврилов
кому: All
дата: 23 Jan 2007
Hello, AlexCrush Hу можно еще так... ┌─- CODE ─── ld de,dst allkc; ld; hl,src ld a,-1 exa ld a,e cpl keyc; and; a jr z,nokey rra jr nc,nochk exa and (hl) exa nochk; inc; l ;?? jr keyc nokey; exa; ld (de),a inc e jr nz,allkc └── CODE ─── Признаюсь, запамятовал- влияет ли rra на флаг нуля. Если да, то можно сократить. Сколько весит по тактам- не считал :)




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
От автора - скоро день рождения газеты...
Новости - История знакомства.
Реклама - Реклама и объявления ...
Размышления - О происхождении информации.
Part 1 - Editorial and news.

В этот день...   8 мая