Nope.
You are incrementing the stringpos variable, but using addr in the readcode. It'll be reading the same byte over and over.
There is no copystring1 label.
It shouldn't be necessary to zero out the rest of the array. A single 0 at the end of the string should be sufficient to mark the end.
And it's only good for 18F's.
Probably just what you're using, but what about the other guy's?
You put it in the Code Example's forum.
Typically, this is for Tested, known to be working code.
Bookmarks