@jepalza, entonces déjalo para cuando te llegue el cable de UK, no vaya a ser que al intentar arreglar algo que no esté roto y la cagues.
@mcleod, he estado repensando el layout y he llegado a esta solución que es compatible con la implementación actual (no requiere detectar $e0) y admite todo lo importante. Lo que hay en azul oscuro es el puerto kempston, para el sinclair no hace falta puesto que se puede hacer con los números. Lo único que falta por definir entonces es la combinación NMI, las dos combinaciones de Reset son las que has propuesto antes.
-- Actualizado 11 Feb 2014, 23:11 --
He intercambiado el - por el /
Al no detectar $e0 son indistinguibles nuestra tecla - ( / para los ingleses ) de la tecla / del teclado numérico. De esta forma queda más desequilibrado (más parecido al teclado inglés que al español) pero es menos lioso.
-- Actualizado 11 Feb 2014, 23:29 --
Un último cambio más. Me he dado cuenta que si usamos los signos aritméticos del teclado numérico hacemos el zxuno más independiente del layout. Espero que este sea ya el definitivo.
Montaje del ZXUNO
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Montaje del ZXUNO
antoniovillena escribió:@jepalza, entonces déjalo para cuando te llegue el cable de UK, no vaya a ser que al intentar arreglar algo que no esté roto y la cagues.
@mcleod, he estado repensando el layout y he llegado a esta solución que es compatible con la implementación actual (no requiere detectar $e0)
Ah! No te preocupes. Ya lo he ampliado para que detecte las teclas extendidas y distinga entre tecla pulsada tal cual, o tecla pulsada con shift. ¡Ya reconozco el teclado español completo!

Además, para poder pillar las teclas INICIO, FIN, AVPAG, etc, se necesita que reconozca las teclas extendidas. Por cierto: la asignación de teclas que has usado precisamente para el josytick (INICIO, FIN, SUPR, AVPAG) es de las que más dan problemas a la hora del tema del ghosting.
PD: viendo las teclas que has elegido para cursores, en azul, en el teclado numérico... ¿de verdad quieres poner esas? ¿cómo hay que poner los dedos para usar esas teclas como cursores, o como direcciones en un joystick?

Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Montaje del ZXUNO
mcleod_ideafix escribió:Ah! No te preocupes. Ya lo he ampliado para que detecte las teclas extendidas y distinga entre tecla pulsada tal cual, o tecla pulsada con shift. ¡Ya reconozco el teclado español completo!
Además, para poder pillar las teclas INICIO, FIN, AVPAG, etc, se necesita que reconozca las teclas extendidas. Por cierto: la asignación de teclas que has usado precisamente para el josytick (INICIO, FIN, SUPR, AVPAG) es de las que más dan problemas a la hora del tema del ghosting.
No, no hace falta detectar las teclas extendidas. Lo he comprobado, tal y como está debería poder detectarse todo sin tener que leer el código $e0, no hay colisiones. Bueno las colisiones que hay las he tenido en cuenta. Otra cosa es el ghosting pero para esto no se me ocurre nada. Sin detectar teclas extendidas la verdad es que no quedan opciones.
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Montaje del ZXUNO
antoniovillena escribió:Sin detectar teclas extendidas la verdad es que no quedan opciones.
Es que YA está hecho... ya he ampliado el módulo PS/2 y detecta todas las teclas, extendidas y normales.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Montaje del ZXUNO
mcleod_ideafix escribió:PD: viendo las teclas que has elegido para cursores, en azul, en el teclado numérico... ¿de verdad quieres poner esas? ¿cómo hay que poner los dedos para usar esas teclas como cursores, o como direcciones en un joystick?
Bueno esto es que no lo he explicado. Si no detectas el $e0, hay teclas que no puedes distinguir si son del teclado numérico o del grupo de 6 teclas central. Entonces la idea es poner la mano en ese grupo de teclas (las otras están digamos que de rebote)
-- Actualizado 11 Feb 2014, 23:44 --
mcleod_ideafix escribió:antoniovillena escribió:Sin detectar teclas extendidas la verdad es que no quedan opciones.
Es que YA está hecho... ya he ampliado el módulo PS/2 y detecta todas las teclas, extendidas y normales.
Ya, bueno, no pasa nada. Yo seguí dándole vueltas a la idea porque pensé que querías usar (sin modificar) el módulo que te pasé yo al ser mas simple. No se me ocurrió que le fueras a añadir la detección de teclas extendidas. Supongo que el nuevo módulo+teclas extendidas sigue ocupando menos en FPGA que el antiguo módulo, así que nos quedamos con lo que tienes hecho y desechamos el layout que he propuesto.
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Montaje del ZXUNO
antoniovillena escribió:Ya, bueno, no pasa nada. Yo seguí dándole vueltas a la idea porque pensé que querías usar (sin modificar) el módulo que te pasé yo al ser mas simple. No se me ocurrió que le fueras a añadir la detección de teclas extendidas. Supongo que el nuevo módulo+teclas extendidas sigue ocupando menos en FPGA que el antiguo módulo, así que nos quedamos con lo que tienes hecho y desechamos el layout que he propuesto.
Sí, sigue ocupando menos incluso con la ampliación. Ahora sí puedes crearte un layout con las teclas especiales, que serían:
Reset de la CPU: Ctrl-Alt-Supr
Reset maestro: Ctrl-Alt-Bksp
(la diferencia entre el reset de la CPU y el maestro es que el reset maestro te lleva de nuevo a la ROM de arranque, mientras que el reset de CPU resetea el clon, pero con la ROM actualmente seleccionada)
NMI: ? (iba a sugerir la tecla SysReq, o PetSis en español, que es de hecho la misma tecla que ImprPant, pero acabo de comprobar que esa tecla genera 4 scancodes

BREAK: Esc
Entiendo que las teclas del cursor harán doblete como teclas de un joystick Kempston (Sinclair no puede ser porque "chocaría" con el comportamiento de los cursores como teclas de cursor). En este caso, ¿qué norma tendrá el joystick físico?
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Montaje del ZXUNO
En la propuesta se desdoblan un montón de teclas. Por ejemplo LCtrl y RCtrl, LAlt y RAlt, Enter y Enter numérico, el bloque de 6 (Insert, Supr, etc...) y los cursores están ambos desdoblados en el teclado numérico, incluso el signo / también está desdoblado. Lo único que se salva de desdoblarse en el teclado numérico es el 5 y los signos + - *
La gracia era cubrir el mayor número de teclas haciendo las mínimas comprobaciones y por tanto ocupando menos de FPGA.
Supongo que hablas de mi propuesta, ¿no? No he puesto el Reset y el Reset maestro para no complicar el dibujo pero me quedo con los que has dicho. Para NMI tampoco se me ocurre nada, ¿F5+F8? La tecla Break no es especial sino extendida (está incluída en el dibujo). Y los cursores se corresponden con los cursores CAPS SHIFT+5, CS+6, CS+7, CS+8. De la norma Sinclair me he olvidado, se puede jugar con la fila de números en el teclado así que tampoco tiene mucha gracia tenerlo repetido (aunque sea más fácil de poner la mano). En el DB9 también iría Kempston. Aunque si quieres puedes hacer lo que propuse antes, con una única opción de la BIOS seleccionar entre Sinclair 2 y Kempston para el teclado y conector DB9. Si en el teclado tenemos Sinclair 2, en el DB9 tenemos Kempston y viceversa.
-- Actualizado 12 Feb 2014, 02:00 --
Para que quede claro, los colores serían:
-- Actualizado 12 Feb 2014, 02:12 --
Actualizo la imagen. Ojo lo del NMI es provisional.
La gracia era cubrir el mayor número de teclas haciendo las mínimas comprobaciones y por tanto ocupando menos de FPGA.
Supongo que hablas de mi propuesta, ¿no? No he puesto el Reset y el Reset maestro para no complicar el dibujo pero me quedo con los que has dicho. Para NMI tampoco se me ocurre nada, ¿F5+F8? La tecla Break no es especial sino extendida (está incluída en el dibujo). Y los cursores se corresponden con los cursores CAPS SHIFT+5, CS+6, CS+7, CS+8. De la norma Sinclair me he olvidado, se puede jugar con la fila de números en el teclado así que tampoco tiene mucha gracia tenerlo repetido (aunque sea más fácil de poner la mano). En el DB9 también iría Kempston. Aunque si quieres puedes hacer lo que propuse antes, con una única opción de la BIOS seleccionar entre Sinclair 2 y Kempston para el teclado y conector DB9. Si en el teclado tenemos Sinclair 2, en el DB9 tenemos Kempston y viceversa.
-- Actualizado 12 Feb 2014, 02:00 --
Para que quede claro, los colores serían:
- Verde para las 40 teclas principales del Spectrum. Hay 43 porque Symbol, Shift y Enter están desdobladas.
- Rosa y lila para las teclas extendidas, de las cuales:
- Rosa son teclas de función que surgen de combinar Shift+Número, ó Shift+Espacio ó Shift+Symbol
- Lila son teclas extendidas de símbolos que combinan Symbol+letra. Cuatro de estos ya aparecían en el Plus y el +2A
- Azul para el joystick Kempston (en principio, aunque si os parece bien lo hacemos conmutable con Sinclair 2)
- Rojo para teclas especiales, es decir teclas que no existen en el teclado de Spectrum pero que nos resultan muy útiles en el clon. De las 4 teclas especiales solo he puesto la Pausa porque es la única que ocupa una tecla. Las otras 3 son las combinaciones antes citadas (falta por determinar NMI).
- Blanco. Tecla no usada. Mantengo la leyenda que tiene en el PC para no perdernos pero si está en blanco en el ZX-Uno no haría nada.
-- Actualizado 12 Feb 2014, 02:12 --
Actualizo la imagen. Ojo lo del NMI es provisional.
- Adjuntos
-
- keyboard.png (37.36 KiB) Visto 5408 veces
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Montaje del ZXUNO
antoniovillena escribió:La gracia era cubrir el mayor número de teclas haciendo las mínimas comprobaciones y por tanto ocupando menos de FPGA.
En realidad no funciona así... puedes tener un bloque combinacional muy complejo y aún así, ocupar lo mismo en la FPGA. Es lo que pasa con las teclas extendidas, que aunque hace que se usen más slices en la FPGA, al ser combinacional, se aprovechan mejor (es algo más complejo, pero no sé explicarlo mejor en estos momentos).
antoniovillena escribió:No he puesto el Reset y el Reset maestro para no complicar el dibujo pero me quedo con los que has dicho.
Ok.
antoniovillena escribió:Para NMI tampoco se me ocurre nada, ¿F5+F8?
¿Se usa alguna tecla en particular en los emuladores? En Spectaculator es F5.
antoniovillena escribió:La tecla Break no es especial sino extendida (está incluída en el dibujo).
¿Cómo? La tecla Break, si se implementa con Esc, no es extendida.
antoniovillena escribió:Y los cursores se corresponden con los cursores CAPS SHIFT+5, CS+6, CS+7, CS+8
Ok.
antoniovillena escribió:De la norma Sinclair me he olvidado, se puede jugar con la fila de números en el teclado así que tampoco tiene mucha gracia tenerlo repetido
¡Ufff! Eso es como cuando hay que jugar al Cookie o al PSSST con el teclado: un verdadero calvario. Pero dado que la norma Kempston es la más habitual, pasamos de Sinclair.
antoniovillena escribió:En el DB9 también iría Kempston. Aunque si quieres puedes hacer lo que propuse antes, con una única opción de la BIOS seleccionar entre Sinclair 2 y Kempston para el teclado y conector DB9. Si en el teclado tenemos Sinclair 2, en el DB9 tenemos Kempston y viceversa.
No, eso sí que complica las cosas: si en el teclado hemos acordado que los cursores son CAPS SHIFT + loquesea, hacer que también sean las teclas de la norma Sinclair obliga a que se tenga que tener en cuenta en el módulo del teclado, y además hace que si se elige eso en el arranque, no puedas usar las teclas del cursor como teclas de cursor en el editor BASIC. Yo preferiría optar por dejar la opción de que los cursores sean Kempston, si se elige que el joystick físico es Sinclair 2, y si se elige que el joystick físico es Kempston, el bloque cursor no es ningún tipo de joystick. De esta forma, su comportamiento como teclas del cursor no se altera.
-- Actualizado 12 Feb 2014, 02:21 --
antoniovillena escribió:[*]Rojo para teclas especiales, es decir teclas que no existen en el teclado de Spectrum pero que nos resultan muy útiles en el clon. De las 4 teclas especiales solo he puesto la Pausa porque es la única que ocupa una tecla. Las otras 3 son las combinaciones antes citadas (falta por determinar NMI).
Te comentaba en un post anterior que la tecla Pausa, y la tecla ImprPant tienen una secuencia de cuatro códigos, lo que complicaría un poco más el asunto, así que preferiría evitarlas.
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
- antoniovillena
- Amiga 1200
- Mensajes: 2013
- Registrado: 16 Abr 2012, 21:22
- Gracias recibidas: 8 veces
Re: Montaje del ZXUNO
mcleod_ideafix escribió:antoniovillena escribió:En el DB9 también iría Kempston. Aunque si quieres puedes hacer lo que propuse antes, con una única opción de la BIOS seleccionar entre Sinclair 2 y Kempston para el teclado y conector DB9. Si en el teclado tenemos Sinclair 2, en el DB9 tenemos Kempston y viceversa.
No, eso sí que complica las cosas: si en el teclado hemos acordado que los cursores son CAPS SHIFT + loquesea, hacer que también sean las teclas de la norma Sinclair obliga a que se tenga que tener en cuenta en el módulo del teclado, y además hace que si se elige eso en el arranque, no puedas usar las teclas del cursor como teclas de cursor en el editor BASIC. Yo preferiría optar por dejar la opción de que los cursores sean Kempston, si se elige que el joystick físico es Sinclair 2, y si se elige que el joystick físico es Kempston, el bloque cursor no es ningún tipo de joystick. De esta forma, su comportamiento como teclas del cursor no se altera.
No te había entendido bien. Yo decía lo mismo. Dejar las teclas de los cursores inamovibles. Lo que cambian son las teclas azules (que se implementan con el bloque de 6). Actualmente son sólo Kempston pero que se puede hacer intercambiable con lo que hay en el DB9 por si se da el caso. Para que quede más claro:
Opción 0:
- Los cursores del PC son los cursores del spectrum
- Las teclas azules son Sinclair 2
- El conector DB9 es Kempston
Opción 1:
- Los cursores del PC son los cursores del spectrum
- Las teclas azules son Kempston
- El conector DB9 es Sinclair 2
-- Actualizado 12 Feb 2014, 02:44 --
Lo siento, me has pisado la respuesta y me he hecho un lío, total que he perdido el mensaje con mi respuesta. Resumen entonces. Decía que yo llamo extendida cuando es combinación de 2 teclas del spectrum, y el caso Break lo es (Caps Shift+Espacio). Y lo de la tecla pausa lo tuve en cuenta, fíjate bien en el dibujo, se corresponde con Page Up
-- Actualizado 12 Feb 2014, 02:45 --
Bueno no me has pisado el mensaje pero se me ha borrado de todas formas.
- mcleod_ideafix
- Amiga 2500
- Mensajes: 5316
- Registrado: 06 Oct 2009, 04:12
- Sistema Favorito: Spectrum 16Kb/48Kb
- primer_sistema: Spectrum 16Kb/48Kb
- consola_favorita: Vectrex
- Primera consola: TV Games/Pong Clone
- Ubicación: Jerez de la Frontera
- Gracias dadas: 12 veces
- Gracias recibidas: 54 veces
- Contactar:
Re: Montaje del ZXUNO
Bueno... mientras solucionamos el pequeño lío del layout del teclado, dejo el test7
El test7 es un Spectrum con la ROM de un 48K, pero con los recursos de un +2A/+3. Cambios desde el test6:
- Se ha mejorado un poco más lo del puerto $FF.
- El módulo de teclado es el que ha suministrado Antonio, al cual se le han hecho las siguientes ampliaciones (sujetas a lo que se decida sobre el layout):
* Reconocimiento de todo el teclado en español: pulsando mayusculas+2 salen las comillas, por ejemplo.
* Joystick Kempston en las teclas del cursor. El fuego son las teclas Ctrl y Alt (cualquiera de las cuatro). Usar únicamente las teclas Alt junto con los cursores causa colisiones y no se detecta la pulsación de Alt. Con Ctrl no hay problema (al menos en mi teclado)
* Ctrl-Alt-Supr envía un reset al sistema
* Ctrl-Alt-BkSp envía un reset total (ahora mismo, es igual que el reset del sistema)
* F5 envía NMI
Aunque el puerto $FF funciona (más o menos) como debiera, hay juegos como Cobra, y Arkanoid que se bloquean. Y no lo hacen donde se supone que se bloquean por causa del puerto $FF, sino antes.
También se bloquea el King's Valley. Aún no sé por qué
Me he pasado el Misco Jones (otra vez) desde el ZX-Uno. Con eso he podido comprobar que el teclado no tiene apenas lag (comparado con un teclado real de Spectrum)
Próximos hitos:
- Implementar el acceso a la SPI Flash
- Implementar las shadow RAM para cargar en ellas ROMs desde la SPI Flash
- Refactorizar la parte del diseño que se ocupa de la decodificación del rango $0000-$3FFF para que tengan en cuenta que puede haber ROMs externas que le hagan un takeover al bus (caso del DIVMMC)
Con estos tres puntos (sobre todo los dos primeros) ya podré cargar una ROM de +3e con soporte de ZXMMC para...
- Implementar el acceso a la SD por SPI. De momento, usando los puertos de la ZXMMC. Probar que el acceso funciona usando una ROM de +3e
- Cambiar (o añadir) los puertos para que el acceso a la SD sea según la interfaz DIVMMC
- Implementar el DIVMMC completo, con ESXDOS y esas cosas
Fallos a corregir:
- Los mencionados cuelgues
- Cambiar emplazamiento joystick de teclado para que no colisionen teclas
- Lo que surja en las pruebas...
Y ya, después de esto, ampliaciones deseables:
- Que el clon pueda resetear el teclado para dar soporte a teclados duales USB/PS2
- Switch para conmutar a 7MHz
- Mapa de memoria compatible con Chloe-128
- Acceso al bus de expansión físico (a expensas de terminar una plaquita adaptadora que estoy haciendo...)
- Pijadas variadas que ahora no caigo en qué quedamos que se haría... (modos de pantalla "fancy", etc)
El test7 es un Spectrum con la ROM de un 48K, pero con los recursos de un +2A/+3. Cambios desde el test6:
- Se ha mejorado un poco más lo del puerto $FF.
- El módulo de teclado es el que ha suministrado Antonio, al cual se le han hecho las siguientes ampliaciones (sujetas a lo que se decida sobre el layout):
* Reconocimiento de todo el teclado en español: pulsando mayusculas+2 salen las comillas, por ejemplo.
* Joystick Kempston en las teclas del cursor. El fuego son las teclas Ctrl y Alt (cualquiera de las cuatro). Usar únicamente las teclas Alt junto con los cursores causa colisiones y no se detecta la pulsación de Alt. Con Ctrl no hay problema (al menos en mi teclado)
* Ctrl-Alt-Supr envía un reset al sistema
* Ctrl-Alt-BkSp envía un reset total (ahora mismo, es igual que el reset del sistema)
* F5 envía NMI
Aunque el puerto $FF funciona (más o menos) como debiera, hay juegos como Cobra, y Arkanoid que se bloquean. Y no lo hacen donde se supone que se bloquean por causa del puerto $FF, sino antes.
También se bloquea el King's Valley. Aún no sé por qué

Me he pasado el Misco Jones (otra vez) desde el ZX-Uno. Con eso he podido comprobar que el teclado no tiene apenas lag (comparado con un teclado real de Spectrum)
Próximos hitos:
- Implementar el acceso a la SPI Flash
- Implementar las shadow RAM para cargar en ellas ROMs desde la SPI Flash
- Refactorizar la parte del diseño que se ocupa de la decodificación del rango $0000-$3FFF para que tengan en cuenta que puede haber ROMs externas que le hagan un takeover al bus (caso del DIVMMC)
Con estos tres puntos (sobre todo los dos primeros) ya podré cargar una ROM de +3e con soporte de ZXMMC para...
- Implementar el acceso a la SD por SPI. De momento, usando los puertos de la ZXMMC. Probar que el acceso funciona usando una ROM de +3e
- Cambiar (o añadir) los puertos para que el acceso a la SD sea según la interfaz DIVMMC
- Implementar el DIVMMC completo, con ESXDOS y esas cosas
Fallos a corregir:
- Los mencionados cuelgues
- Cambiar emplazamiento joystick de teclado para que no colisionen teclas
- Lo que surja en las pruebas...
Y ya, después de esto, ampliaciones deseables:
- Que el clon pueda resetear el teclado para dar soporte a teclados duales USB/PS2
- Switch para conmutar a 7MHz
- Mapa de memoria compatible con Chloe-128
- Acceso al bus de expansión físico (a expensas de terminar una plaquita adaptadora que estoy haciendo...)
- Pijadas variadas que ahora no caigo en qué quedamos que se haría... (modos de pantalla "fancy", etc)
Recuerda: cada vez que se implementa un sistema clásico en FPGA, Dios mata a un purista
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados