the problem is in this macro
Code:
ASM
PrintStr macro x, y, Str
    local TheString, OverStr
    goto OverStr
TheString
    data   Str, 0
OverStr
    MOVE?CB  x, _PosX
    MOVE?CB  y, _PosY
    MOVE?CW  TheString, _Addr
    L?CALL   _StringOut
    endm
ENDASM
its not that simple going from code for pic18 to pic16
the word size for core 14 pics ie pic16 is 14bits
the "data" directive attempts to write two 8 bit pieces of data into a 14bit slot ,hence the end falls off



you could change it to use the "da" directive to pack two 7 bit pieces of data into that space [its ok for 7bit ascii]
but then you need to unpack the data when you read it back