Buenas, con mi equipo estamos teniendo problemas con la implementación de la subrutina get_ps2 y capaz nos pueden ayudar con eso.
Nos pasa que para cualquier serie de bits que mandamos por la señal PSDAT_I, cuando salimos de del call, el acumulador queda en 00h. Para ir recibiendo los bits básicamente utilizamos un registro auxiliar (el cual cargamos en el acumulador al final de la subrutina) y la instrucción RRA.
Saludos