diff --git a/avr/modules/lcd2/gui2/base/object.asm b/avr/modules/lcd2/gui2/base/object.asm index 5def65c..154cb9b 100644 --- a/avr/modules/lcd2/gui2/base/object.asm +++ b/avr/modules/lcd2/gui2/base/object.asm @@ -271,6 +271,39 @@ OBJ_GetLastChild_ret: +; --------------------------------------------------------------------------- +; @routine OBJ_GetChildAt @global +; +; @param Y address of object +; @param R16 idx of child to get (starting at 0) +; @return CFLAG set, if found, cleared otherwise +; @return r19:r18 resulting object +; @clobbers none + +OBJ_GetChildAt: + push yl + push yh + rcall OBJ_GetFirstChild ; R19:R18=obj (none) + brcc OBJ_GetChildAt_ret + +OBJ_GetChildAt_loop: + tst r16 + breq OBJ_GetChildAt_secRet + mov yl, r18 + mov yh, r19 + rcall OBJ_GetNext ; R19:R18=obj (none) + brcs OBJ_GetChildAt_loop + rjmp OBJ_GetChildAt_ret ; idx too high, not found +OBJ_GetChildAt_secRet: + sec +OBJ_GetChildAt_ret: + pop yh + pop yl + ret +; @end + + + ; --------------------------------------------------------------------------- ; @routine OBJ_AddChild @global ;