; *************************************************************************** ; 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. * ; *************************************************************************** .equ RINGBUFFERY_OFFS_MAXSIZE = 0 .equ RINGBUFFERY_OFFS_USED = 1 .equ RINGBUFFERY_OFFS_READPOS = 2 .equ RINGBUFFERY_OFFS_WRITEPOS = 3 .equ RINGBUFFERY_OFFS_DATA = 4 ; --------------------------------------------------------------------------- ; @routine RingBufferY_Init ; ; @param R16 size of ringbuffer ; @param Y base address of ringbuffer struct ; @return CFLAG set if okay, cleared on error (i.e. buffer full) ; @clobbers R17 RingBufferY_Init: std Y+RINGBUFFERY_OFFS_MAXSIZE, r16 rjmp RingBufferY_Reset ; @end ; --------------------------------------------------------------------------- ; @routine RingBufferY_WriteByte ; ; @param R16 byte to write ; @param Y base address of ringbuffer struct ; @return CFLAG set if okay, cleared on error (i.e. buffer full) ; @clobbers R17, R18, X RingBufferY_WriteByte: m_ringbuffer_y_writebyte \ RINGBUFFERY_OFFS_MAXSIZE, \ RINGBUFFERY_OFFS_USED, \ RINGBUFFERY_OFFS_READPOS, \ RINGBUFFERY_OFFS_WRITEPOS, \ RINGBUFFERY_OFFS_DATA ret ; @end ; --------------------------------------------------------------------------- ; @macro m_ringbuffer_y_readbyte ; ; @param Y base address of ringbuffer struct ; @return CFLAG set if okay, cleared on error (i.e. buffer empty) ; @return R16 byte read ; @clobbers R17, R18, X RingBufferY_ReadByte: m_ringbuffer_y_readbyte \ RINGBUFFERY_OFFS_MAXSIZE, \ RINGBUFFERY_OFFS_USED, \ RINGBUFFERY_OFFS_READPOS, \ RINGBUFFERY_OFFS_WRITEPOS, \ RINGBUFFERY_OFFS_DATA ret ; @end ; --------------------------------------------------------------------------- ; @macro m_ringbuffer_y_reset ; ; @param Y base address of ringbuffer struct ; @clobbers R17 RingBufferY_Reset: m_ringbuffer_y_reset \ RINGBUFFERY_OFFS_MAXSIZE, \ RINGBUFFERY_OFFS_USED, \ RINGBUFFERY_OFFS_READPOS, \ RINGBUFFERY_OFFS_WRITEPOS, \ RINGBUFFERY_OFFS_DATA ret ; @end