; *************************************************************************** ; 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_GUI2_ROOTWINDOW_ASM #define AQH_AVR_GUI2_ROOTWINDOW_ASM ; *************************************************************************** ; defines .equ ROOTWINDOW_OFFS_BEGIN = WIDGET_SIZE .equ ROOTWINDOW_OFFS_GUIAPP_LO = ROOTWINDOW_OFFS_BEGIN+0 .equ ROOTWINDOW_OFFS_GUIAPP_HI = ROOTWINDOW_OFFS_BEGIN+1 .equ ROOTWINDOW_SIZE = ROOTWINDOW_OFFS_BEGIN+2 ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; @routine RootWindow_new @global ; ; @return CFLAG set of okay, cleared otherwise ; @return Y address of newly created object ; @param r16 value for OBJECT_OFFS_OPTS_LO ; @param r17 value for OBJECT_OFFS_OPTS_HI ; @clobbers any RootWindow_new: ldi r24, LOW(ROOTWINDOW_SIZE) ldi r25, HIGH(ROOTWINDOW_SIZE) bigcall Object_Alloc ; (!r16, !r17) brcc RootWindow_new_ret rcall RootWindow_Init ; (r16, r17, X) sec RootWindow_new_ret: ret ; @end ; --------------------------------------------------------------------------- ; @routine RootWindow_Init @global ; ; @return CFLAG set if okay, cleared otherwise ; @param Y address of widget ; @param r16 value for OBJECT_OFFS_OPTS_LO ; @param r17 value for OBJECT_OFFS_OPTS_HI ; @clobbers r16, r17, X RootWindow_Init: ; call base class bigcall MainWindow_Init ; (r16, r17, X) ; clear widget-specific data mov xl, yl mov xh, yh adiw xh:xl, ROOTWINDOW_OFFS_BEGIN clr r16 ldi r17, (ROOTWINDOW_SIZE-ROOTWINDOW_OFFS_BEGIN) bigcall Utils_FillSram ; (r17, X) ; set default signal map ldi r16, LOW(RootWindow_DefaultSignalmap*2) std Y+OBJECT_OFFS_SIGNALMAP_LO, r16 ldi r16, HIGH(RootWindow_DefaultSignalmap*2) std Y+OBJECT_OFFS_SIGNALMAP_HI, r16 ; set default style ldi r16, LOW(RootWindow_DefaultStyle*2) std Y+WIDGET_OFFS_STYLE_LO, r16 ldi r16, HIGH(RootWindow_DefaultStyle*2) std Y+WIDGET_OFFS_STYLE_HI, r16 ret ; @end ; --------------------------------------------------------------------------- ; @routine RootWindow_GetApp @global ; ; @param Y address of widget ; @return R19:R18 address pointer to GuiApp ; @clobbers none RootWindow_GetApp: ldd r18, Y+ROOTWINDOW_OFFS_GUIAPP_LO ldd r19, Y+ROOTWINDOW_OFFS_GUIAPP_HI ret ; @end ; --------------------------------------------------------------------------- ; @routine RootWindow_SetApp @global ; ; @param Y address of widget ; @return R25:R24 address pointer to GuiApp ; @clobbers none RootWindow_SetApp: std Y+ROOTWINDOW_OFFS_GUIAPP_LO, r24 std Y+ROOTWINDOW_OFFS_GUIAPP_HI, r25 ret ; @end ; *************************************************************************** ; data in FLASH RootWindow_DefaultSignalmap: ; header .dw MainWindow_DefaultSignalmap ; next table to use ; entries ; none for now .db 0, 0, 0, 0 ; end of table RootWindow_DefaultStyle: .dw DISPLAY_COLOR_BLACK ; frontCol_norm .dw DISPLAY_COLOR_LIGHTGREY ; backCol_norm .dw DISPLAY_COLOR_BLACK ; borderCol_norm .dw DISPLAY_COLOR_WHITE ; shadowCol_norm .dw DISPLAY_COLOR_WHITE ; frontCol_activated .dw DISPLAY_COLOR_NAVY ; backCol_activated .dw DISPLAY_COLOR_BLACK ; borderCol_activated .dw DISPLAY_COLOR_WHITE ; shadowCol_activated .db 0, 1 ; outerBorderSize, innerBorderSize .dw ili9341Font12x16_1*2 ; font .db 12, 16 ; charWidth, charHeight #endif