ZX GO+

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: 1188
Registrado: 12 Feb 2016, 13:58

Re: ZX GO+

Mensaje por spark2k06 » 11 Abr 2019, 11:05

He rediseñado el modo de funcionamiento del teclado, puede gustar mas o menos pero considero que sólo es cuestión de acostumbrarse... y ademas queda todo mucho mas organizado a nivel de código:

Imagen

Ahora desde todos los modos de teclado es posible pulsar casi cualquier tecla de un teclado convencional, así como sus teclas modificadoras. Sin embargo, el modo ZX podrá trabajar de dos formas:

* En modo convencional, con acceso al CS y SS original del teclado pero sin acceso a las teclas especiales ni a las teclas modificadoras.

* En modo completo, sin acceso al CS y SS original del teclado pero con acceso a las teclas especiales y a las teclas modificadoras, como el resto de modos de teclado.

Además, estos modos se guardan en la EEPROM si accedemos a la función de guardado.

Ahora sí, podemos hacer uso de todas las caraterísticas de los cores. Para los atajos mas utilizados (NMI, VGA/RGB, Reset) mantengo el uso del atajo corto, eso sí, a través del nuevo modo función que se puede apreciar en esta tabla, como el resto. Adjunto PDF donde se puede ver cómo ejecutar cada función en cada core, basandome en la tabla anterior.

Solo faltaría añadir el nuevo teclado en español de MSX, ya me pondré con ello. No obstante, una vez finalizado y probado (se pueden cambiar las teclas que acceden a cada tecla especial, si no las consideramos adecuadas), no tengo intención de actualizarlo más, actualizaré el proyecto sugarless a este nuevo paradigma y dejaré dos versiones en mi github, la actual "oficial" que tenemos todos ahora con sus limitaciones y ésta nueva... con el código fuente de ambas por si alguien decide modificarlo por su cuenta a su gusto.

Edito: Para ver el modo actual de teclado es tan sencillo como CS + SS + F = U y después cualquier tecla no definida como modo de teclado, por ejemplo otra vez U... y te lo muestra.

Destacar también que cuando se pulsa CS + SS + una tecla modificadora, puedes mantener pulsado CS + SS para activar otra tecla modificadora, o para pulsar una tecla especial final...esto facilita la ejecución de varios combos.

Fe de erratas en 2019.04.11-Teclados ZX GO+.pdf:

Activa modo SHIFT sólo para la siguiente pulsación de tecla de función (F1 a F10) ... -> CS + SS + A (CS + SS + 1 a 0) SHIFT + (F1 - F10)

Activa modo ALT sólo para la siguiente pulsación de tecla de función (F1 a F12) ... -> CS + SS + X (CS + SS + 1 a 0, Q, W)
Adjuntos
zxunops2-11042019b-go.zip
(11.89 KiB) Descargado 294 veces
2019.04.11-Teclados ZX GO+.zip
(96.27 KiB) Descargado 296 veces
Última edición por spark2k06 el 11 Abr 2019, 11:05, editado 1 vez en total.

Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Re: ZX GO+

Mensaje por desUBIKado » 11 Abr 2019, 12:42

Pedazo de curro que te has pegado.

:plasplas: :plasplas: :plasplas: :plasplas:

En cuanto pueda lo pruebo, pero es que ya había cerrado el gomas :D

:gracias!:

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

Re: RE: Re: ZX GO+

Mensaje por spark2k06 » 11 Abr 2019, 12:52

desUBIKado escribió:Pedazo de curro que te has pegado.

:plasplas: :plasplas: :plasplas: :plasplas:

En cuanto pueda lo pruebo, pero es que ya había cerrado el gomas :D

:gracias!:
Todo sea por una buena causa ;-). Lo dicho, lo he probado bastante con un programa en Windows que muestra cómo se pulsa y se suelta cada tecla de forma gráfica, y creo que está bastante bien pero todo lo que sean bugs, reasignación de letras por otras más intuitivas y cosas así, sin problema lo voy corrigiendo, con el objetivo dar por cerrada una versión final y definitiva cuanto antes mejor, porque la parte difícil ya está hecha.

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

Re: ZX GO+

Mensaje por spark2k06 » 20 Abr 2019, 09:26

He realizado unas correcciones para que las teclas especiales correspondientes a Impr. Pant, Bloq. Despl y Pausa correspondan a T, Y y U respectivamente, que estaban mal. También para que en el teclado completo del modo ZX funcionen correctamente las combinaicones SS + tecla, adjunto nueva beta.

Por otro lado @desUBIKado, he puesto el core de la versión 1.3 de MSX a partir de este hilo:

viewtopic.php?f=53&t=2883

Me he descargado el fichero SD-MSX1FPGA-1.3.7z que has publicado y he actualizado la SD, de manera que se haga uso del fichero SPA.kmp (y no del SPA-original.kmp que tienes en la misma carpeta de MSX1FPGA)... el caso es que por ejemplo la tecla ñ no funciona, no sale con la misma tecla de un teclado español, sino con AltGr + N... estoy haciendo algo mal? No se supone que este nuevo layout ya debería usar la tecla correspondiente en lugar de AltGr + N?

Quiero corregir este asunto para poder cerrar el tema de la corrección de símbolos para MSX del proyecto zxunops2, y dar por terminado su desarrollo :mrgreen:
Adjuntos
zxunops2-20042019b-go.zip
(12 KiB) Descargado 248 veces

honda
Mensajes: 73
Registrado: 10 Mar 2017, 13:09

Re: ZX GO+

Mensaje por honda » 20 Abr 2019, 12:46

Sinceras gracias.

Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Re: ZX GO+

Mensaje por desUBIKado » 18 Ago 2019, 18:50

phpBB [media]

Avatar de Usuario
desUBIKado
Mensajes: 1002
Registrado: 05 Ago 2016, 22:33

Re: ZX GO+

Mensaje por desUBIKado » 18 Abr 2020, 23:14

Ahora estoy actualizando todos los cores del ZX GO+ , así como preparando unas tarjetas para usarlo, y me he percatado de una cosa que hasta ahora no me había molestado, porque no tenía los cores en orden. La disposición de los tipos de teclado no coincide con la disposición de los cores en los slots. El primer core debe ser el de Spectrum, pero el tipo de teclado ZX se consigue con la tecla 0, y no con la 1.

Por eso he realizado un cambio para cambiar la disposición de los 10 primeros teclados. Así ahora son:

1 --> ZX
2 --> CPC
3 --> MSX
...
0 --> PCXT

De esta forma, colocando los 10 primeros cores en ese orden, cuando mantenemos pulsamos en el arranque por ejemplo la tecla 3, el core que arrancará en el de MSX, y para poner su teclado se que debo hacer CS+SS+F-->U-->3

Para actualizar el firmware del teclado del ZX GO+ he bajado los fuentes del github de Spark2k06

https://github.com/spark2k06/zxunops2

y los he metido en una carpeta que debe llamarse zxunops2

Con el IDE Arduino instalado abro el archivo zxunops2.ino, y me aparecen 3 pestañas: zxunops2, config.h y keymaps.h

En la pestaña config.h descomento esta línea:

Código: Seleccionar todo

#define switches // Activado para el ZXGo+
y en la pestaña keymaps.h modifico el orden de los teclados:

Código: Seleccionar todo

#define MODO_1       zx
#define MODO_2       cpc
#define MODO_3       msx
#define MODO_4       c64
#define MODO_5       at8
#define MODO_6       bbc
#define MODO_7       aco
#define MODO_8       ap2
#define MODO_9       vic
#define MODO_0       pc
Y esos son todos los cambios que hay que hacer. Para poder compilar, y ya con el conversor USB a UART conectado al ZX GO+, asigno los valores correctos en el menú Herramientas:

Placa: Arduino Duemilanove or Diecimila
Procesador: ATmega328p
Puerto: /dev/ttyUSB0 (en Windows suele ser COM4 u otro parecido)

solo falta dar al botón "Subir" o CTRL+U.

Una vez aparezca "Subido" en la línea de estado ya tendremos el firmware del arduino que controla el teclado actualizado.

megamik
Mensajes: 15
Registrado: 19 Mar 2018, 17:20

Re: ZX GO+

Mensaje por megamik » 26 Abr 2021, 10:01

Hola a todos.

He notado que algunas teclas con Symbol Shift del keymap C64 no están bien mapeadas, como por ejemplo:
  • El punto no está
  • La coma está en la M donde debería estar el punto
  • La libra no está
  • < y > están mal mapeados en R y T
Estoy usando el firmware original del zxunops2, así que me he descargado el código de https://github.com/spark2k06/zxunops2/t ... l/zxunops2 y he modificado la parte correspondiente en el fichero zxunops2.ino para corregirlo, dejándolo así a partir de la línea 674:

Código: Seleccionar todo

case c64:
	key =
		key == KEY_2 ? KEY_ACORCHE | 0x80 : key == KEY_T ? KEY_PUNTO : key == KEY_R ? KEY_COMA : key == KEY_S ? KEY_MENOS :
		key == KEY_Y ? KEY_PTOCOMA : key == KEY_U ? KEY_COMILLA : key == KEY_O ? KEY_COMILLA | 0x80 : key == KEY_P ? KEY_2 :
		key == KEY_V ? KEY_SLASH | 0x80 : key == KEY_C ? KEY_SLASH : key == KEY_Z ? KEY_PTOCOMA | 0x80 : key == KEY_H ? KEY_BKSLASH | 0x80 :
		key == KEY_J ? KEY_MENOS | 0x80 : key == KEY_K ? KEY_F10 | 0x80 : key == KEY_L ? KEY_IGUAL | 0x80 : key == KEY_X ? KEY_F9 | 0x80 :
		key == KEY_B ? KEY_CCORCHE | 0x80 : key == KEY_N ? KEY_COMA | 0x80 : key == KEY_M ? KEY_PUNTO | 0x80 :

		(key == KEY_6 || key == KEY_7 || key == KEY_8 || key == KEY_9 || key == KEY_0) ? key : 0;
	break;
Por otro lado, he incorporado la pulsación de la tecla "END" en el core de C64 para permitir el cambio de paleta mediante el combo CS+SS+P, y he corregido la pulsación de AvPag y RePag (que estaban invertidas y además erróneamente con Shift en lugar de Ctrl) en la línea 1231:

Código: Seleccionar todo

if ((matriz[Y_P_ROW][P_COL] & 0x01) && modo) pulsafn(Y_P_ROW, P_COL, KEY_END,  1, 0, 0, 0, 5); //End (C64 Cambio de Paleta)
if ((matriz[Q_T_ROW][E_COL] & 0x01) && modo) pulsafn(Q_T_ROW, E_COL, KEY_PGDW, 1, 0, 0, 0, 5); //Av Pag / Pg Down   (Acorn: RGB) (C64 Disco Anterior)
if ((matriz[Q_T_ROW][R_COL] & 0x01) && modo) pulsafn(Q_T_ROW, R_COL, KEY_PGUP, 1, 0, 0, 0, 5); //Re Pag / Pg Up (Acorn: VGA) (C64 Disco Siguiente)
if ((matriz[A_G_ROW][D_COL] & 0x01) && modo) pulsafn(A_G_ROW, D_COL, KEY_PGDW, 1, 0, 1, 0, 5); //Av Pag / Pg Down + Control (C64 10 Discos Anteriores)
if ((matriz[A_G_ROW][F_COL] & 0x01) && modo) pulsafn(A_G_ROW, F_COL, KEY_PGUP, 1, 0, 1, 0, 5); //Re Pag / Pg Up + Control (C64 10 Discos Siguientes)
e incorporando el scancode para KEY_END en keymaps.h, línea 37:

Código: Seleccionar todo

#define KEY_END     0x69
Ojo, todo esto sin tener la menor idea de programar un Arduino, así que probablemente haya metido la gamba, pero al menos a mí me funciona.

Edito: también incorporé la reordenación de mapas según el orden de cores del mensaje anterior de desUBIKado, al que doy las gracias por orientarme además para poder modificar esto.
Adjuntos
zxunops2-c64fixed-mapreorder-go.7z
(21.9 KiB) Descargado 123 veces

Responder