Предполагается юзать именно как макрос, чтоб хранить предыдущее значение прямо в теле проги, а не делать на каждый сигнал свою ячейку отдельно где-то в памяти (ведь если сигналов будет несколько - то в теле вызываемой процедуры уже нельзя хранить предыдущее состояние)
- - - Добавлено - - -
Кажется домучал (были уже рабочие варианты у меня, просто эмуль подвёл - ведь тестил через ALT+F3 зажав клавишу, а эмуль не сразу опрашивает оказывается, если сделать задержку - то при зажатой кнопке изначально - передний фронт не детектится, т.е. всё как надо работает)
Reobne, а формула клика (т.е. 0-1-0) как получается? Там уже надо видимо хранить 2 предыдущих значения, причём обновлять не каждый вызов, а ставить флаг что мол была клавиша отжатой, потом была нажатой, а теперь вот снова отжалась - тут-то и подымать флаг "клик!" ?Код:MACRO FN_KEY key ; отрицательный фронт, key=high порт/mask (#7f04="m"), Z=1 - фронт был
.prev LD A,#FF
CPL
AND low key
LD (.mask+1),A
LD A,high key
IN A,(#FE)
LD (.prev+1),A
.mask AND 0
ENDM
MACRO FP_KEY key ; положительный фронт, key=high порт/mask (#7f04="m"), Z=1 - фронт был
.prev LD A,#00
AND low key
LD (.mask+1),A
LD A,high key
IN A,(#FE)
LD (.prev+1),A
CPL
.mask AND 0
ENDM

