diff --git a/avr/common/ringbuffer_y.asm b/avr/common/ringbuffer_y.asm index 4022c59..7eba828 100644 --- a/avr/common/ringbuffer_y.asm +++ b/avr/common/ringbuffer_y.asm @@ -115,3 +115,84 @@ RingBufferY_Reset: +; --------------------------------------------------------------------------- +; @routine RingBufferY_ReadByteGuarded +; +; @return CFLAG on success, cleared on error +; @param r16 byte to write +; @param Y pointer to start of interface data +; @clobbers R17, R18, X + +RingBufferY_ReadByteGuarded: + push r15 + in r15, SREG + cli + rcall RingBufferY_ReadByte ; R17, R18, X + brcc RingBufferY_ReadByteGuarded_error + out SREG, r15 + pop r15 + sec + ret +RingBufferY_ReadByteGuarded_error: + out SREG, r15 + pop r15 + clc + ret +; @end + + + +; --------------------------------------------------------------------------- +; @routine RingBufferY_PeekByteGuarded +; +; @return CFLAG on success, cleared on error +; @param r16 byte to write +; @param Y pointer to start of interface data +; @clobbers R17, R18, X + +RingBufferY_PeekByteGuarded: + push r15 + in r15, SREG + cli + rcall RingBufferY_PeekByte ; R17, R18, X + brcc RingBufferY_PeekByteGuarded_error + out SREG, r15 + pop r15 + sec + ret +RingBufferY_PeekByteGuarded_error: + out SREG, r15 + pop r15 + clc + ret +; @end + + + +; --------------------------------------------------------------------------- +; @routine RingBufferY_WriteByteGuarded +; +; @return CFLAG on success, cleared on error +; @param r16 byte to write +; @param Y pointer to start of interface data +; @clobbers R17, R18, X + +RingBufferY_WriteByteGuarded: + push r15 + in r15, SREG + cli + rcall RingBufferY_WriteByte ; R17, R18, X + brcc RingBufferY_WriteByteGuarded_error + out SREG, r15 + pop r15 + sec + ret +RingBufferY_WriteByteGuarded_error: + out SREG, r15 + pop r15 + clc + ret +; @end + + +