- // include correction bit if necessary
- if (Uart.parityBits & 0x01) {
- correctionNeeded = TRUE;
+ // Include correction bit if necessary
+ if (Uart.bitCount == 7)
+ {
+ // Short tags (7 bits) don't have parity, determine the correct value from MSB
+ correctionNeeded = Uart.output[0] & 0x40;
+ }
+ else
+ {
+ // The parity bits are left-aligned
+ correctionNeeded = Uart.parity[(Uart.len-1)/8] & (0x80 >> ((Uart.len-1) & 7));