From c48423b4c177b66b9a75db9fb02402609533bed0 Mon Sep 17 00:00:00 2001 From: Martin Preuss Date: Fri, 8 May 2026 00:28:31 +0200 Subject: [PATCH] gui: added OBJ_GetChildBySelector --- avr/modules/lcd2/gui/base/object.asm | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/avr/modules/lcd2/gui/base/object.asm b/avr/modules/lcd2/gui/base/object.asm index 6bf04fe..32e43ca 100644 --- a/avr/modules/lcd2/gui/base/object.asm +++ b/avr/modules/lcd2/gui/base/object.asm @@ -356,6 +356,38 @@ OBJ_GetChildAt_ret: +; --------------------------------------------------------------------------- +; @routine OBJ_GetChildBySelector @global +; +; @param Y address of object +; @param R16 selector to look for +; @return CFLAG set, if found, cleared otherwise +; @return r19:r18 resulting object +; @clobbers r17 + +OBJ_GetChildBySelector: + push yl + push yh + rcall OBJ_GetFirstChild ; R19:R18=obj (none) +OBJ_GetChildBySelector_loop: + brcc OBJ_GetChildBySelector_ret + mov yl, r18 + mov yh, r19 + ldd r17, Y+OBJECT_OFFS_SELECTOR + cp r17, r16 + breq OBJ_GetChildBySelector_secRet + rcall OBJ_GetNext ; R19:R18=obj (none) + rjmp OBJ_GetChildBySelector_loop +OBJ_GetChildBySelector_secRet: + sec +OBJ_GetChildBySelector_ret: + pop yh + pop yl + ret +; @end + + + ; --------------------------------------------------------------------------- ; @routine OBJ_SkipObjects @global ;