The hack as given is just to check for receive errors.
But it shouldnt be hard to set 7/even parity.
(typing this in for the second time arrgh.)
Note: I havent tested this and I can be a bit dyslexic on bit order. Please check the datasheet yourself. You may also want to look at "wiring_serial" to see how the syntax looks.
1) check page 192-194 of the AVR168 datasheet for the USART registers.
http://www.atmel.com/dyn/resources/prod_documents/doc2545.pdf2) Use serial.begin(9600); to set baud rate and set up interrupt handler/buffering.
3) set word length to 7
USCR0B = UCSR0B & B11111011;
UCSR0C = UCSR0C | B00000010;
UCSR0C = UCSR0C & B11111110;
4) set parity to even
UCSR0C = UCSR0C | B00100000;
UCSR0C = UCSR0C & B11101111;
5) use the serial.read and serial.print functions as normal.
This works because the USART registers are written to once by serial.begin. Once that is set up you can change most of the parameters yourself. I used this same trick with MS-DOS to set nonstandard baud rates.