; *************************************************************************** ; copyright : (C) 2026 by Martin Preuss ; email : martin@libchipcard.de ; ; *************************************************************************** ; * This file is part of the project "AqHome". * ; * Please see toplevel file COPYING of that project for license details. * ; *************************************************************************** #ifndef AQH_AVR_W_LIGHTSETTINGS_ASM #define AQH_AVR_W_LIGHTSETTINGS_ASM ; *************************************************************************** ; defines .equ LIGHTSETTINGSWIN_NUM_COLORS = 8 .equ LIGHTSETTINGSWIN_OFFS_BEGIN = MAINWINDOW_SIZE .equ LIGHTSETTINGSWIN_OFFS_SETTINGS_LO = LIGHTSETTINGSWIN_OFFS_BEGIN+0 .equ LIGHTSETTINGSWIN_OFFS_SETTINGS_HI = LIGHTSETTINGSWIN_OFFS_BEGIN+1 .equ LIGHTSETTINGSWIN_SIZE = LIGHTSETTINGSWIN_OFFS_BEGIN+2 ; selectors .equ LIGHTSETTINGSWIN_SEL_DIALOG_OK = 1 .equ LIGHTSETTINGSWIN_SEL_DIALOG_ABORT = 2 .equ LIGHTSETTINGSWIN_SEL_NODEADDR = 3 .equ LIGHTSETTINGSWIN_SEL_LEDCOUNT = 4 .equ LIGHTSETTINGSWIN_SEL_ONTIME = 5 .equ LIGHTSETTINGSWIN_SEL_MSRC1 = 6 .equ LIGHTSETTINGSWIN_SEL_MSRC2 = 7 .equ LIGHTSETTINGSWIN_SEL_BSRC = 8 ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; @routine LightSettingsWin_new @global ; ; @param Y pointer to GUIAPP ; @param r21:r20 pointer to settings ; @return CFLAG set of okay, cleared otherwise ; @return Y address of newly created object LightSettingsWin_new: bigcall GuiApp_GetRootWindow ; r19:r18=root window (none) brcc LightSettingsWin_new_ret mov xl, r18 ; use root window as parent for main window mov xh, r19 ldi r24, LOW(LIGHTSETTINGSWIN_SIZE) ldi r25, HIGH(LIGHTSETTINGSWIN_SIZE) push r20 push r21 bigcall Object_Alloc ; Y=space (!r16, !r17, !X) pop r21 pop r20 brcc LightSettingsWin_new_ret rcall LightSettingsWin_Init LightSettingsWin_new_ret: ret ; @end ; --------------------------------------------------------------------------- ; @routine LightSettingsWin_new @global ; ; @param Y pointer to newly allocated widget data ; @param X pointer to root window ; @param r21:r20 pointer to settings ; @return CFLAG set of okay, cleared otherwise ; @clobbers any, !Y LightSettingsWin_Init: push r20 push r21 ldi r16, 0 ; OPTS ldi r17, (WIDGET_PACK_FILLED<0) ; @param r22 selector ; @param r18 minimum value ; @param r19 maximum value ; @param Z target ; @return CFLAG set if created, cleared otherwise ; @return Y new object created ; @clobbers any, !X, !Z lightSettingsWinCreateHSpinner: push r18 push r19 push r22 push xl push xh push zl push zh ldi r16, 0 ldi r17, (WIDGET_PACK_BEGIN<