Hola de nuevo!
Volví a la vida... XDD
Pues os explico, el código para conectar el teclado PS2 al PCW ya está implentado, pero necesita de al menos 2Kb de memoria Flash, y ahora (Estoy esperando el güeno) solamente dispongo del microcontrolador PIC16F84, que tiene un modesto kb... Se podría "meter" en un PIC16F628 (2Kb) o en un PIC16F88 (4Kb), pero tengo pedido este último, ya que cuando termine con el ratón, me imagino que ya no llegue ni siquiera con los 2kb del 628...
Bueno, os comento.
El teclado del PCW, como todos sabréis, es diferente al de PC (Un AT), tanto por disposición/cantidad de teclas, como eléctricamente.
El teclado AT, cada vex que pulsas una tecla, envía hacia el PC un código (Un byte), distinto para cada una de ellas, y cuando se suelta, envía el mismo código, pero con byte indicando que se ha soltado antes que el propio código.
El teclado AT, dispone, además, de un teclado "extendido", que son más teclas que las que tenía originalmente, estas son las flechas de dirección y los botones del bloque justo encima, así como el INTRO del teclado numérico, ALT GR y CTRL de la derecha. (Las que voy a usar, hay más, sobre todo en los teclado multimedia).
El microcontrolador tiene que interpretar estos códigos, para ello, el teclado AT tiene dos señales, una de datos y un reloj.
El reloj, en modo IDLE (Espera)está en estado lógico "1", cuando pasa a "0" sabemos que el sioguiente ciclo de reloj va a ser el primer bit del byte del código. Entonces desviamos la atención del PIC del Joystick para centrarnos en el teclado (Apenas unos pocos milisegundos), leemos el byte, lo interpretamos, si es pulsar o soltar, o si se trata también de un código de tecla extendido.
Cuando sabemos cual es, colocamos el bit que le corresponde en la tabla (Hace unos post) y seguimos con la vida normal del programa, cuando envía la trama al PCW, envía también el estado del teclado AT.
Cuando se suelta la tecla (Envía el código para ello), entonces volvemos a establecer el bit correspondiente de la tabla en la trama que se envía al PCW.
Todo esto, ocupa casi 2 Kb de programa. Necesitamos un PIC con más Flash.
EL RATÓN
El ratón estoy aún implentándolo, y funcionará de la siguiente manera:
Codificaremos las señales del ratón PS/2 en los bytes 0xB, 0xC, 0xD y 0xE de la tabla, quedando la misma como en la imagen de abajo.
Esta trama es la que emplea el ratón KEYMOUSE para PCW, entonces en las aplicaciones que empleen ratón, seleccionaremos el KeyMouse.
Lógicamente tendrá menos resolución que la que el mismo ratón tendría en un PC, ya que en el PCW "solamente" tendrá 128 (0 a 127) puntos de desplazamiento (En X y en Y), y en el PC tiene 512 (De -255 a 254, tanto en X como en Y).
La tabla con la que trabajaremos a partir de ahora es la siguiente:

Pues de momento nada más, por ahora a seguir escribiendo el código a ratillos, y en cuando tenga todo (Soft & Hard) expondré los resultados.
Saludinos!!!!
EDITO: Que se me olvidaba, el ratón PS/2 tiene varias formas de trabajar, por defecto, está enviando una trama siempre, con el estado del ratón (Posición y botones), pero esto nos "atascaría" el PIC. Se podría añadir otro controlador al circuito para que interpretara el ratón, pero, se puede solucionar, simplemente cambiando el modo de funcionamiento. Si hacemos funcionar el ratón en modo "remoto", cuando enviemos un código al mismo (F0), este entra en modo "esclavo", solamente nos enviará el estado cuando nosotros le enviemos el código EB, que lo implementaré una vez en cada envío de la trama al PCW. En vez de tener una resolución de ratón 100 por segundo (Lo normal en un PC), la tendremos (aproximadamente) en unas 20 ó 30 veces por segundo (Creo que es aceptable).
Ahora, si, a trabajar un ratillo.
Saludinos!!!!
PD: Edito tb el nombre del post XDDDD...