diff --git a/avr/modules/lcd2/gui2/object.asm b/avr/modules/lcd2/gui2/object.asm index 3d64006..9267c81 100644 --- a/avr/modules/lcd2/gui2/object.asm +++ b/avr/modules/lcd2/gui2/object.asm @@ -502,15 +502,18 @@ objGetHandlerFromSignalMap_loop: tst r23 ; end of table? clc breq objGetHandlerFromSignalMap_done ; yes, jmp - cp r16, r23 ; signal match? - brne objGetHandlerFromSignalMap_next ; no, next - cp r17, r22 ; selector match? - brne objGetHandlerFromSignalMap_next ; no, next - mov r23, r18 ; handler==NULL? + cp r16, r23 ; signal match? + brne objGetHandlerFromSignalMap_next ; no, next + tst r22 + breq objGetHandlerFromSignalMap_checkHandler ; accept any selector if it is 0 in table + cp r17, r22 ; selector match? + brne objGetHandlerFromSignalMap_next ; no, next +objGetHandlerFromSignalMap_checkHandler: + mov r23, r18 ; handler==NULL? or r23, r19 clc - breq objGetHandlerFromSignalMap_done ; yes, done - sec ; found handler, return in r19:r18 + breq objGetHandlerFromSignalMap_done ; yes, done + sec ; found handler, return in r19:r18 rjmp objGetHandlerFromSignalMap_done objGetHandlerFromSignalMap_next: rjmp objGetHandlerFromSignalMap_loop