I can explain why the code was not working on PIC16F689 and is now working on 628 - it is due to the fact that analog inputs are enabled by default and if you look at the diagram in the datasheet they force output 0 of the RX pin - so your uart was constantly starting receiption and getting frame error- stopping it. so simple to fix your original code was to add ANSELH = 0;
I know the original thread was closed but there was not solution there and think it is very important to have it for those who decide to use it in the future..