Try changing this:
Code:
            DEFINE HSER_CLROERR2 1 ' Clear overflow automatically
to this:
Code:
            DEFINE HSER2_CLROERR 1 ' Clear overflow automatically
You'll definitely be getting overrun errors, so if they're not cleared properly it'll stop receiving.

I'd also try some a LOT simpler to start with. I'd be amazed if those HSERIN2 commands in your main loop work reliably... one thing out of place and it'll likely take a long time to sync up again (if ever).