I did not think about the external OSC change, good catch.

For some reason I was thinking that you did not want to clear anything in the ASM routine...
I do not see what it would hurt to clear all of PORTA in the ASM, "clrf PORTA". When the code gets to SERIN2 it will still input.

Now it works and holds the output on while transmitting but when I release the button most of the time there is a delay of several seconds before the output goes off.
That I am not sure about. Maybe there is something in the TX code causing things to drag?

Maybe post both the TX and RX and someone will be able to spot the problem.