73 lines
2.2 KiB
NASM
73 lines
2.2 KiB
NASM
; ***************************************************************************
|
|
; copyright : (C) 2025 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. *
|
|
; ***************************************************************************
|
|
|
|
|
|
|
|
.cseg
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine UART_HW_InitInterface @global
|
|
;
|
|
; @param Y pointer to interface data in SRAM (see @ref UART_HW_IFACE_OFFS_STATE)
|
|
; @param Z pointer to IFACE jump table for the given interface
|
|
; @clobbers R16, R17, X
|
|
|
|
UART_HW_InitInterface:
|
|
mov xl, yl
|
|
mov xh, yh
|
|
ldi r17, UART_HW_IFACE_SIZE
|
|
clr r16
|
|
rcall Utils_FillSram ; (R17, X)
|
|
m_ringbuffer_y_reset UART_HW_IFACE_READBUF_SIZE, \
|
|
UART_HW_IFACE_OFFS_RINGBUF_USED, \
|
|
UART_HW_IFACE_OFFS_RINGBUF_RDPOS, \
|
|
UART_HW_IFACE_OFFS_RINGBUF_WRPOS, \
|
|
UART_HW_IFACE_OFFS_RINGBUF_DATA
|
|
m_ringbuffer_y_reset UART_HW_IFACE_MSGIDBUF_SIZE, \
|
|
UART_HW_IFACE_OFFS_MSGIDBUF_USED, \
|
|
UART_HW_IFACE_OFFS_MSGIDBUF_RDPOS, \
|
|
UART_HW_IFACE_OFFS_MSGIDBUF_WRPOS, \
|
|
UART_HW_IFACE_OFFS_MSGIDBUF_DATA
|
|
ldi r16, 0xff
|
|
std Y+UART_HW_IFACE_OFFS_READBUFFERNUM, r16
|
|
ret
|
|
; @end
|
|
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; @routine UART_HW_JumpToFunction @global
|
|
;
|
|
; @param R16 function number (see @ref UART_HW_IFACE_FN_ISR_CHECKATTN)
|
|
; @param Y pointer to interface data in SRAM (see @ref UART_HW_IFACE_OFFS_STATE)
|
|
; @param Z pointer to IFACE jump table for the given interface
|
|
; @clobbers R16, R17, X
|
|
|
|
UART_HW_JumpToFunction:
|
|
cpi r16, UART_HW_IFACE_FN_COUNT
|
|
brcc UART_HW_JumpToFunction_ret ; return with cleared CFLAG
|
|
mov xl, zl
|
|
mov xh, zh
|
|
add xl, r16
|
|
adc xh, xl
|
|
sub xh, xl
|
|
push xl
|
|
push xh
|
|
UART_HW_JumpToFunction_ret:
|
|
ret ; indirect jump to address we just pushed onto the stack or return on error
|
|
; @end
|
|
|
|
|
|
|
|
|
|
|
|
|