; *************************************************************************** ; 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_GUIAPP_ASM #define AQH_AVR_GUI2_GUIAPP_ASM ; *************************************************************************** ; defines .equ GUIAPP_WINDOWSTACK_ENTRIES = 8 ; Widget in flash .equ GUIAPP_OFFS_BEGIN = OBJECT_SIZE .equ GUIAPP_OFFS_ROOTWINDOW_LO = GUIAPP_OFFS_BEGIN+0 .equ GUIAPP_OFFS_ROOTWINDOW_HI = GUIAPP_OFFS_BEGIN+1 .equ GUIAPP_OFFS_SCREENSAVER_LO = GUIAPP_OFFS_BEGIN+2 .equ GUIAPP_OFFS_SCREENSAVER_HI = GUIAPP_OFFS_BEGIN+3 .equ GUIAPP_OFFS_CURRENTWINDOW_LO = GUIAPP_OFFS_BEGIN+4 .equ GUIAPP_OFFS_CURRENTWINDOW_HI = GUIAPP_OFFS_BEGIN+5 .equ GUIAPP_OFFS_TOUCHWIDGET_LO = GUIAPP_OFFS_BEGIN+6 .equ GUIAPP_OFFS_TOUCHWIDGET_HI = GUIAPP_OFFS_BEGIN+7 .equ GUIAPP_OFFS_GUITIMER = GUIAPP_OFFS_BEGIN+8 .equ GUIAPP_OFFS_WINDOWSTACK_POS = GUIAPP_OFFS_BEGIN+9 .equ GUIAPP_OFFS_WINDOWSTACK_BEGIN = GUIAPP_OFFS_BEGIN+10 .equ GUIAPP_SIZE = GUIAPP_OFFS_WINDOWSTACK_BEGIN+(GUIAPP_WINDOWSTACK_ENTRIES*2) .equ GUIAPP_GUITIMER = 2 ; *************************************************************************** ; data .dseg guiapp_touch_event: .byte WIDGET_TOUCH_SIZE ; *************************************************************************** ; code .cseg ; --------------------------------------------------------------------------- ; @routine GuiApp_new @global ; ; @return CFLAG set of okay, cleared otherwise ; @return Y address of newly created object ; @param r16 value for OBJECT_OFFS_OPTS ; @clobbers any GuiApp_new: ldi r24, LOW(GUIAPP_SIZE) ldi r25, HIGH(GUIAPP_SIZE) bigcall Object_Alloc ; (!r16, !r17) brcc GuiApp_new_ret rcall GuiApp_Init ; (r16, r17, X) sec GuiApp_new_ret: ret ; @end ; --------------------------------------------------------------------------- ; @routine GuiApp_Init @global ; ; @param Y address of object in SDRAM ; @param r16 value for OBJECT_OFFS_OPTS ; @clobbers r16, r17, X GuiApp_Init: ; call base class bigcall OBJ_Init ; (r16, r17, X) ; set default signal map ldi r16, LOW(GuiApp_DefaultSignalmap*2) std Y+OBJECT_OFFS_SIGNALMAP_LO, r16 ldi r16, HIGH(GuiApp_DefaultSignalmap*2) std Y+OBJECT_OFFS_SIGNALMAP_HI, r16 ; create root window push yl push yh mov xl, yl mov xh, yh ldi r16, 0 ; opts ldi r17, 0 ; pack bigcall RootWindow_new ; always visible ldd r16, Y+OBJECT_OFFS_FLAGS sbr r16, (1<