a few usart implementations