Primeros pasos con Sugarless +2 (a ZX-Uno companion)

Uto
9 min readJan 18, 2019

--

La placa Sugarless es una placa adaptadora para poder colocar un ZX-Uno dentro de una carcasa de Spectrum +2A/B o +3, si bien es posible conectarla en una carcasa de Spectrum +2 (el gris) si estáis dispuestos a modificarla.

Básicamente, la placa se limita a recibir conexiones del ZX-Uno por la cara interna de conectores, y llevarlas a los conectores externos, aunque en algunos casos hay cierta circuitería intermedia, especialmente en el caso del teclado.

Podéis ver aquí la placa Sugarless colocada en la base de la carcasa del +3, con las fajas de teclado conectadas. La placa azul que veis conectada es una placa Arduino, pero hay versiones de Sugarles que llevan el chip Arduino soldado.

Montando la Sugarless

Este artículo habla de una manera de montar la Sugarless, que puede variar según las necesidades y donde se vaya a usar después. No se va en general a comentar otras opciones, ni se va a entrar en la configuración de conexión del casette del +2, eso se lo dejo a otros.

Previo: Configurando el ZX-Uno

Es importante antes de nada configurar el ZX-Uno: entrad en la BIOS y cambiar el modo de teclado a modo Spectrum. Este modo no tiene nada que ver con lo que hablaremos después de los modos de teclado, una vez puesto en la BIOS así no lo toquéis nunca. En este artículo hablaremos después de cambiar el modo de teclado, en ningún caso nos referimos a esto de la BIOS, como acabo de decir, esto se queda en modo Spectrum para siempre. Si no sabéis cómo entrar en la BIOS podéis mirar la FAQ del ZX-uno.

Conexiones internas

Paso por paso, conectar el ZX-Uno a la placa Sugarless, usaré la foto superior como referencia.

  • Conectar dos cables dupont hembra-hembra desde el conector reset del ZX-Uno al conector reset de la Sugarless (justo abajo a la derecha de la placa azul). El pin que va más cerca del conector de expansión del ZX-Uno va al pin de arriba (el más interno) de la Sugarless, y el más lejano a la expansión va al que queda más al borde de la Sugarless.
  • Conectar un cable RCA macho-macho desde el conector de vídeo compuesto del ZX-Uno al conector de entrada de vídeo compuesto de la Sugarless. Este cable es opcional y solo es necesario si vais a usar el conector de vídeo compuesto exterior.
  • Conectar el cable microJST que viene con la Sugarless desde el conector microJST (RGB) del ZX-Uno al conector microJST de la Sugarless(el que queda por la parte que mira al interior de la carcasa, no el que queda para fuera que está por la parte de abajo de la placa).
  • Conectar un cable DB9 macho-hembra desde el conector del joystick de ZX-Uno al conector de joystick de la parte interior (justo a la derecha del microJST). Tu placa podría tener un conector macho, en cuyo caso necesitas un cable DB9 hembra-hembra. Lo importante de esos cables es que tengan todos los hilos, existen cables DB9 serie que traen los cables justos para conexión serie, y no funcionaría el joystick bien. Otra opción en este último caso es conectar directamente el ZX-Uno así:
  • Conectar la salida EAR del ZX-Uno con un cable jack macho-macho a la entrada EAR de la Sugarless(a la derecha del joystick).
  • Conectar la salida PS/2 del ZX-Uno a la entrada PS/2 de la Sugarless (a la derecha de la de EAR) con un cable PS/2 macho-macho.
  • Ahora, usar la faja de 6 hilos que viene, para ponerla en el conector de 6 -pin que hay justo detrás del slot de tarjeta SD de la placa Sugarless, con la pequeña placa que acompaña a la Sugarless. El cable que pongáis en la placa pequeña en el pin CS1, debe llegar a la placa al mismo pin CS1, no lo crucéis. Introducir la pequeña placa en la ranura de SD del ZX-Uno.
  • Finalmente, los jumpers: el que está junto al botón de reset ponedlo en los dos pines mas cercanos al botón de reset. El par de pines suelto a la derecha de la placa Arduino, marcado como PW_SW, dejado en circuito abierto (sin jumper). Los jumpers que hay ligeramente mas arriba de ese, ponedlos ambos alineados a la izquierda, uniendo los dos pines de más a la izquierda y dejando libre el de la derecha.
  • Finalmente, justo sobre el conector de EAR interno hay un par de pines a los que podéis conectar el led de encendido del +2/+3. Si veis que brilla demasiado es conveniente poner una resistencia en medio (podéis hacerlo usando unos conectores Dupont por medio si no sabéis soldar.
  • Y por supuesto, conectar ambas fajas del teclado, con mucho cuidado, a los conectores reservados para las mismas entre la placa Arduino y el lateral izquierdo.
  • También hay un conector para el casette del +2 justo entre los dos conectores PS/2 de la placa, pero requiere cierta configuración en los jumpers que hay al lado que no vamos a cubrir en este artículo.

Conexiones externas

Empezando por la esquina inferior izquierda tenemos:

  • Botón de reset
  • Joysticks: uno de ellos irá conectado al ZX-Uno, y funcionará según esté configurado en la BIOS (normalmente Kempston), el otro estará gestionado por la placa Arduino, e imitará pulsaciones de teclas (por defecto, QAOP).
  • Conector EAR
  • Conector de video compuesto, para conectar a TVs con dicha entrada
  • Conector RGB DIN-9: este conector es similar al del ZX Go+, y lo habitual es usarlo para conectar un cable SCART (PERITEL).
  • Conector VGA: para conectar un monitor VGA, es probable que tengáis que quitarle la parte metálica al conector hembra para que el cable macho pueda entrar en la ranura, o bien ampliar esta un poco limando.
  • Conector mic/audio del ZX-Uno
  • Conector RGB del ZX-Uno (por la cara de abajo de la placa)
  • Conector para la tarjeta SD
  • Conector para un TZXduino un tanto especial que podría controlarse desde el teclado. No entraremos a detallar esto.
  • Conector power, para conectar una fuente con conector microUSB (como la del ZX-uno)
  • Conector PS/2, para conectar un teclado PS/2 si es necesario, o un conector en Y para poder conectar un ratón PS/2. Este conector no es accesible en un +2 gris, por lo que o se perfora la carcasa para hacerla más grande, o si sois mañosos del soldador, podéis soldar un cable PS/2 hembra directamente en lugar del conector y sacarlo por dicho agujero. Obviamente, podéis optar por no usar ni teclado ni ratón PS/2

El firmware del Arduino

Para poder utilizar el teclado del +2, la Sugarless utiliza el chip Arduino, que está programado para recibir las pulsaciones del teclado, y convertirlas en “pulsaciones” PS/2, que envía por el conector al ZX-Uno. Esa programación es lo que llamamos el firmware del Arduino, que se puede actualizar si es necesario.

Como sabréis el ZX-Uno tiene ciertas combinaciones en distintos cores, o teclas especiales, que obviamente no están en el teclado del Spectrum +2/+3, y el firmware del Arduino también permite que esas teclas inexistentes, puedan pulsarse desde el Spectrum con combinaciones de teclas adecuadas.

Combos

Estos son los combos soportados por la última versión de dicho firmware, que podéis encontrar en la página del último aportador al código hasta la fecha, y principal desarrollador de la placa Sugarles: Spark2006

Como veis, las combinaciones implican pulsar a la vez caps shift y symbol shift (o pulsar la tecla extended que básicamente es lo mismo) junto con otra tecla.

Por ejemplo pulsar Extended+B producirá la pulsación de Ctrl-Alt-Backspace por la entra PS/2 del ZX-Uno, y en consecuencia se producirá un hard reset en los cores que soportan esa combinación para el hard reset.

Así mismo, Extended+Y, provoca la pulsación de Ctrl+Alt+F5, lo cual en el core de Spectrum provoca como sabéis una NMI.

En general todas las combinaciones funcionan así, y producirán la pulsación de teclas en el teclado PS/2. Sin embargo, hay ciertas teclas que son un poco más especiales, empezando por las que permiten cambiar de “modo” de teclado.

Modos de teclado

Por defecto el teclado estará configurado en modo Spectrum (nada que ver como dijimos antes con el modo Spectrum que se configura en la BIOS), pero en modo Spectrum no se puede cubrir todas las combinaciones de teclas de otros cores, y además la distribución de las teclas es diferente en un Spectrum, un C64, un CPC, etc. Por eso si estamos usando un core distinto del de Spectrum, hay que cambiar el modo del firmware. Para ello pulsaremos Extended+U, soltamos las teclas, y después podemos pulsar una tecla y elegir el modo. Podéis ver los modos y teclas correspondientes en la tabla superior, esquina superior izquierda. Por ejemplo pulsar Extended+U, y luego 2, pasa a modo cpc. Cuando el firmware de la Sugarless cambia de modo, envía varias pulsaciones falsas al zx-uno, para que podamos saber que ha cambiado, por ejemplo, cuando cambia modo cpc, envia las teclas “.”,”c”,”p”,c”, y en consecuencia vemos escribirse en la pantalla el texto “.cpc”. Así ocurre con otros modos.

Además de eso, y dentro del modo de teclado para el core de Spectrum, existen tres combinaciones, que podemos alternar pulsando Extended+J, que permitirá tres sub-modos:

  • Pure: no funciona ningún combo excepto Extended+J: Este modo permite por ejemplo jugar a dos jugadores algunos juegos en los que un jugador podría estar usando el caps y otro el symbol, y de manera casual pulsar un combo sin querer.
  • Partialcombos: permite algunos combos, los de la tecla B, N, G, Y y J
  • Fullcombos: permite todos los combos

Finalmente, si veis la tabla superior, hay algunos combos que solo funcionan en algunos modos, y otros que funcionan en todos los modos menos uno.

Otros combos

Otros combos interesantes son:

  • Extended + V : Manda al zx-uno pulsaciones que hacen que escriba la versión del firmware del Arduino en pantalla.
  • Extended + X : graba en la flash del Arduino la combinación actual, de modo que al reiniciar o perder la corriente, se inicie con ese modo.

El botón de reset

El botón de reset también pasa por el Arduino, con lo que en realidad produce pulsaciones de teclas, pero el Arduino también tiene paso de la corriente que llega al Zx-Uno, de modo que puede encenderlo y apagarlo. En el modo de funcionamiento configurado con los jumpers tal y como hemos dicho arriba, el botón de reset funciona de la siguiente manera:

  • Si el ZX-Uno está apagado: pulsarlo lo enciende
  • Si el ZX-Uno está encendido: una pulsación corta produce un hard reset (envía Ctrl+Alt+Backspace) al ZX-Uno, mientras que mantenerlo pulsado unos segundos apaga el ZX-Uno.

Esta configuración puede cambiarse: si cambiamos el jumper que hay junto al botón de reset a la otra posición, el reset sólo hace de reset, y si ponemos el jumper de power que dejabamos en abierto, en cerrado, el equipo estará siempre encendido (y deberá ser apagado por un interruptor externo). También se puede usar ese jumper para conectar en él un interruptor.

--

--

Uto

Developing indie interactive fiction and IF engines since 1984