Hserin es una función del sistema que junto con los comandos Goto, Waitms no son recomendados su uso en la programación. También entran pero en menor medida Gosub/Return y las variables globales.
Hserin supuestamente para la ejecución del programa y se queda esperando que llegue un carácter. No se si se le puede programar un tiempo máximo de espera, por si no llega el carácter para que no quede bloqueado el Pic. No la he probado porque no me interesa, pero posiblemente por su forma de trabajar internamente se vería afectada por las interrupciones, posiblemente falle si las interrupciones están activas.
Hserget lee también un byte al igual que Hserin, pero lo que se hace es que cuando el modulo usart activa el BIT de indicación de que hay datos en su búfer, pues se llama a Hserget para que lo lea y mientras hacemos otra cosa. Y si no hay mas datos en el búfer de la usart Hserget borra el BIT de forma automática. Hserin también debería borrar este BIT porque trabajan sobre los mismos registros internos de la usart.
En realidad hay gente que los utiliza de forma indistinta, porque si no se cometen errores y se llama cuando se debe no se nota la diferencia, pero en realidad es Hserget la que se debe de utilizar porque es más segura.
PD. No se puede ver el código porque son funciones directas al compilador, la única forma es compilando unos ejemplos y luego utilizando las herramientas del PSI para hacer un desensamblado a código nemotécnico, y para esto hay que manejarse si no bien por lo menos con cierta soltura en lenguaje maquina. El Basic del PSI permite crearte una especie de librerías utilizando los Includes y las estructuras tipo funciones y procedimientos, junto con las variables locales, esto es realmente útil y muy parecido a las librerías. Así que la estructura interna para trabajar con librerías esta implementada, por lo que no creo que tarde mucho en implementarlas en el compilador de una forma directa.