Doble teclado en ZXUNO

Dudas, cuestiones, sugerencias y peticiones en general sobre el proyecto / Questions and requests about the project
Avatar de Usuario
jaildesigner
Mensajes: 158
Registrado: 19 Sep 2016, 08:09

Re: RE: Re: Doble teclado en ZXUNO

Mensaje por jaildesigner » 01 Ago 2017, 20:12

neuro_999 escribió:Yo te lo pruebo en cuanto saque un rato el lunes a ver que hace en el go+ si no ha hecho la prueba nadie antes. [emoji2]

Enviado desde mi ONE A2003 mediante Tapatalk
Yo hoy haciendo pruebas con el GO+ he conectado el teclado PS2, y con el teclado PS2 conectado, al usar las combinaciones para NMI o Soft Reset en el teclado de goma no funcionan, y se queda enviando un "3" continuamente.

No se si es esto lo que queríais probar.

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: RE: Re: RE: Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 01 Ago 2017, 20:22

jaildesigner escribió:
neuro_999 escribió:Yo te lo pruebo en cuanto saque un rato el lunes a ver que hace en el go+ si no ha hecho la prueba nadie antes. [emoji2]

Enviado desde mi ONE A2003 mediante Tapatalk
Yo hoy haciendo pruebas con el GO+ he conectado el teclado PS2, y con el teclado PS2 conectado, al usar las combinaciones para NMI o Soft Reset en el teclado de goma no funcionan, y se queda enviando un "3" continuamente.

No se si es esto lo que queríais probar.
Si, realmente se tendría que reproducir pulsando cualquier tecla del GO+ estando al mismo tiempo conectado un teclado externo. Si no es durante las primeras pulsaciones, al de un rato. Prueba por ejemplo a pulsar la letra A varias veces, al final acabara repitiéndose indefinidamente hasta que la vuelvas a pulsar, eso en el mejor de los casos. También puedes notar que se reinicializa el teclado externo solo, que no responden sus teclas, etc... el detonante es la pulsacion repetida de teclas del GO+, así debería ser y puedes probar. La solución, el diodo...

Enviado desde mi Thor mediante Tapatalk
Última edición por spark2k06 el 01 Ago 2017, 20:22, editado 1 vez en total.

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 01 Ago 2017, 20:47

Con el diodo el teclado externo perdería la compatibilidad con el core de PC/XT al caparle la escucha de comandos y no poder inicializarse con el set 1 de scancodes, pero se gana mas de lo que se pierde. Una solución fácil es hacer un mini cable PS/2 macho hembra con un diodo dentro, y usarlo siempre excepto si se quiere usar el core de PC/XT desde el teclado externo.

Enviado desde mi Thor mediante Tapatalk

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 02 Ago 2017, 08:16

Para que se entienda el motivo del conflicto que se genera con un teclado real conectado al mismo tiempo, paso a explicar resumidamente el funcionamiento del protocolo de comunicación, pero todos los detalles los tenéis en este artículo.

Para empezar, comentar que sea cual sea la dirección en la comunicación, la señal de reloj siempre la genera el teclado. Dicho lo cual, la trama de comunicación desde un teclado hacia el host, en este caso el ZXUno, sería la siguiente:

Keyboard (Device) -> ZXUno (Host)

Imagen

Y la comunicación inversa, detallada, es la siguiente:

ZXUno (Host) -> Keyboard (Device)

Imagen

Al principio pensaba que el motivo del conflicto era el comando 0xF0 que se utiliza en el set 2 de scancodes como primer byte al liberar una tecla, que era interpretado en la escucha activa que todos los teclados reales tienen, pero tras algunas pruebas adicionales he llegado a conclusión de que no es ese exactamente el motivo aunque sí el que lo provoca. Lo que sucede es que como se necesitan dos bytes muy seguidos para liberar la tecla (0xF0 y el scancode correspondiente a la tecla liberada), hay un punto durante el inicio de envío del segundo byte por parte de uno de los teclados (el de arduino por ejemplo) que el otro teclado (el real) al tener activa la escucha interpreta como inicio de comunicación por parte del ZXUno (host), pero no es éste el que se quiere comunicar y el segundo teclado comienza a generar una señal de clock al mismo tiempo para recibir el comando, esto provoca que el segundo byte no sea recibido correctamente por el ZXUno (host), y por tanto no se entere de que se ha liberado la tecla y por eso se mantiene pulsada, esto no pasa siempre, a veces el comando le llega correctamente al ZXUno y la libera. Otro efecto habitual es que otro teclado (el que trata de recibir el comando), tenga errores de paridad y tras intentos de petición de reenvío, al final acabe reiniciándose o bloqueándose.

Este comportamiento es propio del método de escucha y debería ser independiente del teclado (siempre y cuando éste disponga de escucha de comandos claro), yo de hecho ya he probado con cuatro distintos y el efecto sucede. Lo que estamos haciendo poniendo un diodo con el cátodo mirando hacia el teclado real, es que éste no pueda “escuchar” el envío ceros pero sí pueda enviarlos, en definitiva, le estaríamos capando la capacidad de escucha y por tanto de recibir peticiones de cambio de set, inicialización, encendido de leds, y poco más…

El motivo por el cual a la inversa funciona siempre bien con el GO+, es decir, se puede escribir con un teclado real conectado al mismo tiempo desde el teclado real, es porque el código de neuro no tiene activa la escucha de comandos de forma permanente, sólo lo hace cuando se selecciona el modo de teclado PC/XT, para que el core original del mismo pueda llevar a término la inicialización y poder cambiar de set. Por lo tanto, es muy sencillo reproducir este comportamiento (que falle al poco de usar el teclado real externo), solo debéis seleccionar este modo de teclado, y sin ir al core de PC, pulsar algunas teclas del teclado real. Por este motivo, he decidido dejar desactivado por defecto en JOY2PS2 la escucha en la nueva actualización, para tener controlada la parte que se puede manejar sencillamente por software.

He visto en el otro hilo sobre el GO+ que comenta Manu que es debido a interferencias que solo suceden en algunos teclados, si no te supone problema @ManuFerHi, me gustaría ver un vídeo de demostración, no es por nada, sino porque a mí me gusta llegar al fondo del asunto y saber por qué pasan las cosas, si de verdad funciona bien, díme por favor si no te importa qué modelo de teclado externo utilizas, porque estoy perplejo.

La demostración sería muy sencilla, consistiría en lo siguiente. Conectas un teclado en el GO+, y desde el editor de BASIC por ejemplo, pulsas cada poco tiempo la tecla que quieras (pero muy importante, pulsa la tecla desde el teclado del GO+), si te funciona bien durante 30 segundos… prueba superada.
Gracias
Última edición por spark2k06 el 02 Ago 2017, 16:23, editado 1 vez en total.

ManuFerHi
Mensajes: 752
Registrado: 15 Nov 2015, 17:50

Re: Doble teclado en ZXUNO

Mensaje por ManuFerHi » 02 Ago 2017, 08:45

Pues supero la prueba y con creces... hay más gente con el go+ supongo que ellos también podrán confirmar que es perfectamente posible conectar un teclado externo e interactuar con los dos, luego cuando tenga un rato hago un vídeo. Creo que en un vídeo de UTO también hace la prueba y él tiene continuamente su teclado externo conectado al go+.

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 02 Ago 2017, 08:56

Estupendo y me alegro, espero el vídeo y el modelo de teclado que utilizáis...en cuanto pueda me preparo un gomas improvisado con el código de neuro y lo pruebo en las mismas condiciones. Repito, lo que quiero saber es el motivo real del asunto, sin más.

Enviado desde mi Thor mediante Tapatalk

ManuFerHi
Mensajes: 752
Registrado: 15 Nov 2015, 17:50

Re: Doble teclado en ZXUNO

Mensaje por ManuFerHi » 02 Ago 2017, 10:20

Pues sí depende del modelo del teclado, no sé a qué se debe pero he sacado un teclado viejo de hace 20 años que lo tengo y hace este comportamiento que dices, si lo conectas a la primera tecla que tocas del gomas se repite. Pero con el teclado que uso habitualmente que compré hace unos meses en pccomponentes va perfectamente, he estado unos 10 minutos pulsando teclas aleatorias de los dos teclados y su comportamiento es perfecto, sólo cuando empiezo a pulsar varias teclas de los dos a la vez es cuando empiezan los errores, pero mientras pulses o un teclado o el otro ningún problema.

Es éste teclado https://www.pccomponentes.com/l-link-ll ... ps-2-negro
Muy baratito, sólo tiene una pega, no sé porqué motivo hay que conectar el teclado con el zx-uno encendido, sólo pasa con el zxuno, con mist o zemmix va bien.

Como curiosidad para tu investigación personal, este teclado si conectas al zxuno y enciendes, no funciona, como he dicho antes hay que encender primero el zxuno y a continuación conectar el teclado. Pero si enciendes el zxuno con el teclado conectado no va, pero curiosamente si pulsas una tecla del go+ comienza a repetirse.

A ver si UTO nos dice su modelo de teclado que a él parece que también le funciona bien.

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 02 Ago 2017, 10:23

A ver si no va a disponer de escucha de comandos o algo así y por eso funciona... si vas al core de PC/XT, te funciona este teclado?

Enviado desde mi Thor mediante Tapatalk

ManuFerHi
Mensajes: 752
Registrado: 15 Nov 2015, 17:50

Re: Doble teclado en ZXUNO

Mensaje por ManuFerHi » 02 Ago 2017, 10:32

De todas formas, es algo curioso que a mi también me sorprendió poder intercalar en la misma sesión los dos teclados, es una anécdota ya que todos los cores se pueden usar con el go+ hasta las teclas de función están implementadas con shift+symb+número , y si alguien quiere usar un teclado externo puede hacerlo perfectamente mientras sólo use el externo en la misma sesión. Y cómo anécdota según el modelo de teclado se pueden usar ambos en la misma sesión.

Me funciona perfectamente el core de PC con este teclado.

Avatar de Usuario
spark2k06
Mensajes: 1188
Registrado: 12 Feb 2016, 13:58

Re: Doble teclado en ZXUNO

Mensaje por spark2k06 » 02 Ago 2017, 10:36

ManuFerHi escribió:De todas formas, es algo curioso que a mi también me sorprendió poder intercalar en la misma sesión los dos teclados, es una anécdota ya que todos los cores se pueden usar con el go+ hasta las teclas de función están implementadas con shift+symb+número , y si alguien quiere usar un teclado externo puede hacerlo perfectamente mientras sólo use el externo en la misma sesión. Y cómo anécdota según el modelo de teclado se pueden usar ambos en la misma sesión.

Me funciona perfectamente el core de PC con este teclado.
El hecho de que funcione bien el externo siempre es por lo que comento. Porque en el código de neuro la escucha de comandos se encuentra inactiva por defecto, solo se activa al cambiar al modo de PC/XT. Haz esa prueba, cambia de modo a PC y prueba a escribir entonces con cualquier teclado externo, el efecto repetición y/o bloqueo del ZXUno sucederá.

Responder