Mplab C30 Compiler [ 100% RELIABLE ]

IFS0bits.U1RXIF = 0;

// Initialize (buffer must be 2^N, ideally in Y data space) void c30_cbuf_init(c30_cbuf_t *cb, unsigned char *buf, unsigned int size) cb->head = 0; cb->tail = 0; cb->mask = size - 1; cb->buffer = buf; cb->len = size; mplab c30 compiler

*data = cb->buffer[cb->tail]; cb->tail = (cb->tail + 1) & cb->mask; return 0; IFS0bits