Why are you using the RTS & CTS lines? Just curious...I've never used them, never had a need, kinda complicates thing unneccesarily. Try this whole thing without the RTS and CTS lines. Set Windows to 'Handshaking-None' in the serial properties. See what happens then. Again, you're breaking it down, starting super-simple, then working your way up.
Another thing, you're using SERIN with HSER defines. Why?
And SERIN @ 4mhz isn't exactly reliable. Switch down to 2400 and see what happens.
You're also not using a MAX232. It should work with a PC using the inverted serial modes, but the voltage levels might not be high enough. You might end up using one. It's always worked for me, but you never know.
Incidentally, I got over 100 threads here on this site alone all about serial interfacing, PC's, visual basic, hyperterminal, etc.
Bookmarks