Sugarless +2 (A ZX-Uno Companion)

Proyectos ajenos al equipo oficial pero desarrollados o promovidos por la comunidad, relacionados con el ZX-UNO / Projects outside the official team but developed or promoted by the community, related to the ZX-UNO
Avatar de Usuario
spark2k06
Mensajes: 1150
Registrado: 12 Feb 2016, 13:58

Re: Sugarless +2 (A ZX-Uno Companion)

Mensaje por spark2k06 » 20 Ago 2019, 14:54

Ok. Bueno, pues si encuentras el problema perfecto. Si no, en septiembre cuando vuelva de vacaciones miraré a ver si localizo el teclado de un +2 gris que debe de andar por el trastero y a ver si localizo el problema. Desde luego, en un teclado de +2A negro no he tenido problema alguno, pero precisamente estás combinaciones funcionan de distinta manera en un +2 gris por su membrana de 8x5.

Enviado desde mi Redmi 4 mediante Tapatalk

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

Re: RE: Re: Sugarless +2 (A ZX-Uno Companion)

Mensaje por spark2k06 » 20 Ago 2019, 14:57

parax escribió:Estoy un poco confuso. La release 1.1 parece corresponder con este punto del repositorio zxuno (la no existencia de tags en el repo lo complica un poco, pero la fecha del hex oficial era del 14/5/2018, y este es el último commit en esa fecha):

https://github.com/spark2k06/zxuno/tree ... re/sources

En esta carpeta veo un par de makefiles, los ficheros de cabecera, y un main.c cuyos comentarios al principio del fichero indican ser "Firmware Sugarless +2 (A ZX-Uno Companion) Alpha 1". Pero al mismo tiempo, hay una subcarpeta "sugarless" donde el fichero main.c pasa a ser sugarless.ino (con la misma versión Alpha 1 indicada al comienzo del código) y hay otras copias de los ficheros de cabecera.

¿Qué versión es la buena (quiero decir, aquella que se utilizó para generar el sugarless_2560_release1_1.hex)?
Lo unifiqué y creo que cambié de directorio. Ahora no tengo un ordenador para revisarlo bien, no te preocupes, ya le echaré un vistazo y te comento.

Enviado desde mi Redmi 4 mediante Tapatalk

parax
Mensajes: 37
Registrado: 07 Feb 2017, 23:29

Re: Sugarless +2 (A ZX-Uno Companion)

Mensaje por parax » 20 Ago 2019, 15:18

Gracias. Por ahora, he echado un ojo rápido al diff entre ambas versiones (que es bastante grande... casi 5500 líneas en formato diff) tomando como referencia aquella que está en la carpeta "sugarless" para la versión 1.1, y lo primero que me ha llamado la atención es la existencia en la versión 3 de unas funciones pulsa_y_suelta_teclas_modificadoras y espera_a_soltar_tecla, que ahora son utilizadas en todo tipo de comprobaciones de pulsación de teclas especiales, así como la adición del flag fkbmode donde antes a veces sólo se comprobaba el flag modo a los chequeos de condiciones realizadas por esas comprobaciones. Parece que han habido varias refactorizaciones grandes alrededor de esta parte del código, pero no sé si estará relacionado.
Última edición por parax el 20 Ago 2019, 15:22, editado 2 veces en total.

parax
Mensajes: 37
Registrado: 07 Feb 2017, 23:29

Re: Sugarless +2 (A ZX-Uno Companion)

Mensaje por parax » 20 Ago 2019, 15:20

He aquí el diff, por cierto: https://pastebin.com/29hcT22L

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

Re: Sugarless +2 (A ZX-Uno Companion)

Mensaje por spark2k06 » 20 Ago 2019, 15:34

Todos los cambios estarían relacionados con los del proyecto ZXUnoPS2, más detalles aquí:

http://www.zxuno.com/forum/viewtopic.php?p=25909#p25909

Ahora bien, todo esto fue probado en teclados tipo gomas y en +2A para sugarless. La particularidad del +2 gris en cuanto a determinadas teclas especiales, como los cursores, es que la membrana de éstos hace que se puedan presionar dos teclas "al mismo tiempo", CS + la tecla correspondiente, de manera que hay algún problema en la detección de esta simultaneidad... cuestión de revisar y ajustar, seguro.

Enviado desde mi Redmi 4 mediante Tapatalk

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

Re: Sugarless +2 (A ZX-Uno Companion)

Mensaje por spark2k06 » 20 Ago 2019, 15:54

Por ejemplo, en CS+0, se estará detectando antes el 0 que el CS...y por eso se escribe el 0.

Enviado desde mi Redmi 4 mediante Tapatalk

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

Re: Sugarless +2 (A ZX-Uno Companion)

Mensaje por spark2k06 » 27 Sep 2020, 08:14

Mil disculpas por el retraso @parax, me olvidé por completo de este problema :oops:
spark2k06 escribió:
20 Ago 2019, 15:54
Por ejemplo, en CS+0, se estará detectando antes el 0 que el CS...y por eso se escribe el 0.

Enviado desde mi Redmi 4 mediante Tapatalk
He detectado exactamente cual es el problema, la clave está en este último post. Y aunque no dispongo de un teclado gris, puedo simular fácilmente su comportamiento con este tipo de teclas del gris, pulsando al mismo tiempo CS y 0, o similares.

Lo primero decirte que hay una forma de que no te suceda en el modo de teclado de Spectrum de la nueva versión alternativa, y es desactivando el modo de teclado completo con CS + SS + F -> D, después guardas la configuración en la EEPROM con CS + SS + F -> X y listo... si lo pruebas veras que te funciona a la perfección, al igual que con el firmware de teclado original.

Sin embargo, la forma de trabajar en el modo de teclado completo hará que también te suceda este problema en el resto de cores porque por defecto trabajan igual (en este firmware desactivarlo sólo es válido para Spectrum, para dar acceso al uso de esas teclas modificadoras de forma independiente).

Y la mala noticia de todo esto es que también te va a suceder con la versión original de firmware en cuanto cambies de tipo de teclado, por ejemplo pasa a modo .CPC y compruébalo por ti mismo. El motivo al final es el mismo, para imprimir caracteres especiales en otros cores, la forma de hacerlo es distinta que en el teclado original del Spectrum, primero se intercepta la pulsación de CS o SS y después el carácter especial (ya sean unas comillas, punto y coma, etc...), y lo que es muy importante, sólo en ese orden es posible su manejo.

El problema sucede con el acceso a cursores u otros accesos de tipo CS + tecla que lleva a cabo de forma simultánea la membrana de los +2 gris, en esta simultaneidad radica el problema de incompatibilidad con estos modos de teclado y me temo que no va a tener solución, al menos con el diseño base de este firmware, o si la tiene desde luego no sería nada sencilla, no tiene que ver con timmings ni nada por el estilo :( . Puedes tratar de investigar si quieres, pero verás que llegas a la misma conclusión.

En definitiva, por mi parte:

1. Tanto en el firmware de teclado original como en el alternativo, no es compatible en su totalidad con el manejo de teclados distintos al específico del Spectrum para la membrana de un teclado +2 GRIS.

2. El teclado +2A/+3 funciona correctamente también en este tipo de teclas porque son interceptadas de forma independiente, no se lleva a cabo simultaneidad de CS + tecla para su interceptación por parte del firmware.

¿Solución más eficaz para poder usar el firmware con todos los cores y sin problemas? Comprar una membrana de +2A/+3 y que se la cambies ;)

parax
Mensajes: 37
Registrado: 07 Feb 2017, 23:29

Re: Sugarless +2 (A ZX-Uno Companion)

Mensaje por parax » 27 Sep 2020, 14:57

spark2k06 escribió:
27 Sep 2020, 08:14
Mil disculpas por el retraso @parax, me olvidé por completo de este problema :oops:
Ni te preocupes. No tenías ninguna responsabilidad en hacerlo, y entendí que por lo que fuese se te complicó la cosa. Esto es una afición después de todo. Yo también lo dejé aparcado una vez restauré el firmware antiguo, ya que el Sugarless lo tengo más bien por nostalgia (por haber reutilizado el +2 gris de mi infancia, mi primer ordenador personal), pero corre con un ZX-Uno sencillo. Le he dado más uso al ZX-Go, al cual, cuando hemos querido una mejor experiencia de teclado, le hemos enchufado un PS/2.
spark2k06 escribió:
20 Ago 2019, 15:54
Lo primero decirte que hay una forma de que no te suceda en el modo de teclado de Spectrum de la nueva versión alternativa, y es desactivando el modo de teclado completo con CS + SS + F -> D, después guardas la configuración en la EEPROM con CS + SS + F -> X y listo... si lo pruebas veras que te funciona a la perfección, al igual que con el firmware de teclado original.
Vale, muchísimas gracias por la detallada explicación. O sea, que mientras el uso se limite al core de Spectrum con el modo de teclado de Spectrum (modo que puede establecerse como el modo por defecto grabándolo en EEPROM), no debería tener problemas con el nuevo firmware, y si quiero otros cores o bien cambio de membrana o bien le enchufo un teclado PS/2 y lo uso en modo de teclado completo.

Lo que no he terminado de entender es qué diferencia hay entre el modo de teclado "completo" y el modo de teclado de Spectrum. ¿Es quizás porque en las membranas de un +2A o un +3 se usan códigos independientes para estas teclas, mientras que en el caso del +2 gris estas se usan como combinación de otras como en un Spectrum original?

A ver si saco un rato para reprogramar de nuevo el ATmega y lo pruebo todo.

Una vez más, muchísimas gracias por el cable :maestro:

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

Re: Sugarless +2 (A ZX-Uno Companion)

Mensaje por spark2k06 » 27 Sep 2020, 15:39

parax escribió: Ni te preocupes. No tenías ninguna responsabilidad en hacerlo, y entendí que por lo que fuese se te complicó la cosa. Esto es una afición después de todo.
Lo sé, pero a pesar de que como ya he comentado no llevaré a cabo más desarrollos, no me gusta dejar asuntos pendientes sin cerrar ;)
parax escribió: Yo también lo dejé aparcado una vez restauré el firmware antiguo, ya que el Sugarless lo tengo más bien por nostalgia (por haber reutilizado el +2 gris de mi infancia, mi primer ordenador personal), pero corre con un ZX-Uno sencillo. Le he dado más uso al ZX-Go, al cual, cuando hemos querido una mejor experiencia de teclado, le hemos enchufado un PS/2.
El firmware alternativo te permite precisamente no depender de un teclado PS/2 externo, aunque ello pueda implicar a ser un poco más complejo su manejo.
parax escribió: Vale, muchísimas gracias por la detallada explicación. O sea, que mientras el uso se limite al core de Spectrum con el modo de teclado de Spectrum (modo que puede establecerse como el modo por defecto grabándolo en EEPROM), no debería tener problemas con el nuevo firmware, y si quiero otros cores o bien cambio de membrana o bien le enchufo un teclado PS/2 y lo uso en modo de teclado completo.
Por una parte, sí, si usas el core de Spectrum y cambias a modo teclado de Spectrum normal, o convencial como queramos llamarlo... sin modo completo, efectivamente, lo podrás usar sin problema.

Si quieres usar otros cores, en principio tampoco supone un problema su uso con la membrana del +2 Gris, lo que pasa que no podrás utilizar las teclas adicionales (adicionales a las de un gomas) pero no necesitas utilizar obligatoriamente un teclado PS/2 externo. No obstante, conociéndote la combinación correspondiente de sus CS + tecla asociadas, podrás utilizarlo de esta manera. Así que es un sí puedes, pero con restricciones... y si cambias la membrana por una de +2A/+3, se terminaron esas restricciones.

parax escribió: Lo que no he terminado de entender es qué diferencia hay entre el modo de teclado "completo" y el modo de teclado de Spectrum. ¿Es quizás porque en las membranas de un +2A o un +3 se usan códigos independientes para estas teclas, mientras que en el caso del +2 gris estas se usan como combinación de otras como en un Spectrum original?

A ver si saco un rato para reprogramar de nuevo el ATmega y lo pruebo todo.
Pues hay una diferencia importante. El teclado completo se refiere a completo equivalente a un teclado PS/2 externo, pero accesible desde el mismo firmware. Su uso implica que, al igual que sucede con el resto de modos de teclado para otros cores, se necesite utilizar CS y SS como teclas modificadoras para sacar símbolos y nuevos caracteres, y no funcionen de la forma convencional como lo hacen en un Spectrum real. @desubikado hizo un breve resumen de este modo en un PDF que está subido en la carpeta de Alternative del proyecto ZXUnoPS2:

https://github.com/spark2k06/zxunops2/b ... -GO%2B.pdf

Aunque sí que es cierto que es un poco confuso para nuevos usuarios del mismo, y no se explica con detalle. Creo que este firmware alternativo se ha quedado como el gran incomprendido, cuando realmente tiene mucho potencial, aunque ello requiera un reentrenamiento mental para hacerse con los nuevos combos necesarios para su uso y comprensión.

En definitiva, requeriría dedicar un buen tiempo al desarrollo de esa documentación detallada que haga replantearse a la gente si realmente le interesa o no dar el salto a la misma, pero con toda la información sobre ambos firmwares bien interiorizada y comprendida... esa es la verdadera tarea pendiente.
parax escribió: Una vez más, muchísimas gracias por el cable :maestro:
No hay de qué, para eso estamos ;)

Responder