Hola,
El lunes a las 17 voy a estar por el IIE y lo podemos ver. Más allá de eso, tengo algunas preguntas que tal vez los ayuda a encontrar el problema.
1. Cuando dicen "el carry queda con el mismo valor", están diciendo que a la salida de get_ps2 el valor en el carry es siempre el mismo independientemente del bit de paridad recibido?
2. Verificaron que la lectura del bit de paridad es lo que esperan para un scancode dado? Para ver esto pueden poner un breakpoint inmemdiatamente despues de la instrucción IN A, (PS_CLK_I) correspondiente a la lectura del bit de paridad e inspeccionar el acumulador. (Si hicieron un loop con 9 iteraciones, pueden separarlo en un loop de 8 iteraciones y 1 lectura adicional para el bit de paridad de manera de no poner un breakpoint en el medio del loop)
Saludos,
Leonardo.