Sugarless +2 (a ZX-Uno Companion) FAQ

Sobre esta FAQ

avatar Uto Esta FAQ es mantenida por @uto_dev, en base a distintas preguntas encontradas en diversos foros. Esta es una FAQ de uso de la placa Sugarless +2.

Licencia de Creative Commons
Este obra está bajo una licencia de Creative Commons Reconocimiento-CompartirIgual 4.0 Internacional.

Sugarless +2 y como funciona

IMPORTANTE: Antes de empezar, si tienes una placa Sugarless con los componentes sin soldar, antes de soldar lee este enlace. Si tu placa ya está soldada, sigue leyendo.

¿Qué es Sugarless +2?

Se trata de una tarjeta adaptadora que permite conectar una placa ZX-Uno (4.1 o 4.2) en una carcasa de un Spectrum +2A/+2B/+3. También es posible instalarla en una carcasa de +2 (gris) pero requiere hacer modificaciones a la carcasa.

¿Esta placa es un ZX-Uno?

No, la Sugarless no es un ZX-Uno, es solo una placa adaptadora que no puede funcionar si no tienes un ZX-Uno 4.1 o 4.2. Necesita además una placa atmega 2560 o compatible - que se pincha en la placa Sugarless mediante una serie de pines de la misma - o un chip atmega 128 que iría soldado directamente en la placa.

Por otro lado necesitarás varios cables para conectar ambas placas (ZX-Uno y la Sugarless) dentro de la carcasa del Spectrum (ver más adelante).

¿Se puede usar con otros modelos de ZX-Uno?

A priori no hay problema en usarla con otros modelos basados en el ZX-Uno 4.1, salvo que haya problemas de espacio dentro de la carcasa. Podríais tener que adaptar alguna conexión eso sí (por ejemplo para modelos con microSD en lugar de SD haría falta un adaptador, para modelos sin salida RGB tipo ZX-Uno haría falta adaptar salida, etc.)

En cuanto a prototipos anteriores al ZX-Uno 4.1, necesitarán seguramente un cable para sacar las señales del conector RGB de la 4.1 partiendo del conector que llevan esos prototipos.

¿Como se hace para que el teclado del Spectrum funcione con el ZX-Uno

La placa atmega 2560 lleva un Arduino hace de interfaz entre el teclado del spectrum y el conector PS/2, es decir, recibe las pulsaciones del teclado del Spectrum y las convierte en códigos como los que emite un teclado PS/2. De esa manera el ZX-Uno recibe pulsaciones PS/2 como si de cualquier otro teclado PS/2 se tratara.

¿Y como se pulsan las teclas especiales de los cores? (NMI, hard reset)

El teclado de Spectrum es capaz de simular varias pulsaciones con determinados "combos":

  • NMI: Extra+Y
  • Hard reset: Extra+B (como en Boot)
  • Soft reset: Extra+N (como en New)
  • Modo de teclado:Extra+U
  • Graphic Output: Extra+G (VGA /RGB)
  • F1-F10: Extra+Número. Ej: Caps+Symbol+7 = F7
  • F11-F12: Extra+Q y Extra+E

Además en la pantalla de arranque puedes pulsar Caps+1 (o Editar) para entra en la BIOS, Caps+2 (o Bloq. Mays.) para entrar en el menú de cores, y Caps+Space (o Break) para el selector de ROMs.

¿Qué es el modo de teclado?

El teclado de Spectrum functiona como un teclado de Spectrum por defecto (obviamente), pero para poder usarlo con otros cores la Sugarless permite cambiar el modo de modo que se comporte como otro teclado (el de un CPC por ejemplo, o el de un PC). No todos los cores pueden funcionar perfectamente, para los demás, hay que usar el teclado PS/2.

¿Y que pasa con el joystick?

La Sugarless tiene dos conectores de joystick, uno de los cuales se conecta directamente al conector de joystick del Zx-Uno y funciona transparentemente como si se enchufara el joystick al ZX-Uno directamente. El otro sin embargo va conectado también al Arduino, y al accionarlo provoca la pulsacion de teclas, en concreto QAOP para las direcciones, y espacio el disparo. Si nuestro joystick tiene un segundo disparo, generará la pulsación de la tecla X.

Conexiones y extensiones de Sugarless

¿Qué conectores tiene la Sugarless?

Al tratarse de una placa adaptadora, la Sugarless tiene conexiones hacia dentro que llamaremos "IN" (al ZX-Uno) y hacia fuera que llamaremos "OUT" (que son visibles por los agujeros originales de la carcasa)

Las externas son las siguientes

  • RGB-OUT-GO+: colocada en la posición donde estaba el conector RGB, pero usando un mini-din-9 en su lugar. Esta salida es compatible con la del ZX GO+, por lo que se pueden usar los cables RGB y VGA disponibles.
  • RGB-OUT-Classic: colocada en el slot de expansión, usando exactamente el mismo conector que el ZX-Uno pero boca abajo. Sirven los mismos cables que para los ZX-Uno 4.1, pero hay que conectarlo boca abajo con respecto a como se hace en el ZX-Uno.
  • EAR-OUT, AUDIO-OUT: estos conectores son exactamente igual que los del ZX-Uno. El primero está colocado en la antigua salida AUX y el segundo en la antigua salida CINTA/SONIDO
  • SD: situada en el antiguo conector de expansión
  • RESET: en el hueco del viejo pulsador de reset hay un botón similar, que dependiendo de la configuración de un jumper interno puede funcionar como el reset del ZX-Uno directamente, o como un pulsador mixto que permite apagar y encender el sistema además de reset. En el primer caso el sistema está siempre encendido por lo que es necesario un interruptor externo o desenchufar del todo para apagar.
  • TZXDUINO: un conector situado en el conector de expansión que permite controlar desde el teclado un dispositivo TZXduino especialmente preparado para el Sugarless.
  • POWER: en último lugar en el antiguo hueco de expansión, el conector de corriente microUSB
  • PS/2-OUT: situado en el hueco de la conexión de alimentación original
  • VGA: situado en el conector RS232/MIDI.
  • Video compuesto-OUT: situado en el antiguo hueco del conector TV
  • JOYSTICK-OUT: salida de joystick que funciona exactamente igual que la del ZX-Uno, situada en la ranura "Joystick 2" de la carcasa.
  • JOY2PSD-OUT: salida de joystick que pasa a través del arduino y simula la pulsación de teclas, situada en la ranura "Joystick 1" de la carcasa.

Las internas son las siguientes

  • RGB-IN: para conectar la salida RGB del ZX-Uno, lo cual da a la Sugarless tanto los datos de video como los de audio.
  • EAR-IN: para conectar la conexión EAR
  • Joystick-IN: para conectar la salida de joystick del ZX-Uno. Notese que esta conexión está pensada para poder conectar directamente el ZX-Uno, sin cable intermedio, aunque obviamente se puede poner un cable si se quiere el ZX-Uno en otro sitio
  • Video compuesto-IN: para conectar la salida de video compuesto del ZX-Uno
  • PS/2-IN: para conectar la salida PS/2 del ZX-Uno
  • Reset: para conectar el reset del ZX-Uno

¿Que pasa con el +2 gris?

El +2 gris no tiene un agujero de alimentación más pequeño, por lo que no cabe el conector PS/2, es necesario hacerlo más grande con una dremel o buscar alternativas si se quiere usar un teclado externo. Además, hay un anclaje de la carcasa, de la parte del casette, que estorba a la placa Sugarless, por lo que hay que cortarlo

¿Que cables necesitaré para conectar mi ZX-Uno y la Sugarless?

Necesitarás los siguientes cables:

  • Un cable RCA macho-macho para conectar la conexión de video compuesto del ZX-Uno y la entrada Video-Compuesto-IN de la Sugarless.
  • Un cable jack de 3.5 mm macho-macho stereo para conectar la salida EAR del ZX-Uno con EAR-IN de la Sugarless. Este cable se distribuye con la placa.
  • Un cable microJST macho-macho para conectar la salida RGB del ZX-Uno y la entrada RGB de la Sugarless.
  • Un cable PS/2 macho-macho para conectar el PS/2 del ZX-Uno y la entrada PS/2-IN de la Sugarless
  • Dos cables dupont hembra-hembra para conectar el reset del ZX-Uno.
  • Un cable dupont hembra hembra de 6 hilos, para conectar la tarjeta SD. Este cable se distribuye junto con la placa.

Además, si vais a colocar el ZX-Uno en otro sitio que no sea enchufado directamente a la placa Sugarless por la conexión de joystick, necesitaréis un cable DB9 recto macho-hembra.

No obstante, no todos tendréis que poner todos los cables, dependerá de qué salidas queráis operativas. Por ejemplo:

  • Si no vais a usar la salida de video compuesto podéis no poner el cable RCA de video compuesto.
  • Si no vais cargar desde cinta real por la entrada EAR, os podéis ahorrar el cable EAR.
  • Si no vais a usar las salidas RGB o la VGA, os podéis ahorrar el cable microJST, aunque en ese caso tendréis que de alguna manera reproducir el audio internamente (quizá poniendo un altavoz alimentado en el conector de audio del ZX-Uno y dejándolo dentro de la carcasa).
  • Si no vais a usar el joystick del ZX-Uno y os vale con el teclado, o con el joystick de JOY2PS2 que emula teclado, no hace falta conectar el ZX-Uno por el conector de joystick.

Además, hay algunos conectores que pueden conectarse con cables dupont en algunos casos, pero como eso cae ya más en el terreno del bricolage, queda fuera del alcance de esta FAQ

¿Cómo se conecta la SD?

Junto con la placa Sugarless viene una pequeña placa adicional que es como una tarjeta SD cortada. Tenéis que introducir dicha placa en la ranura SD del ZX-Uno, y luego conectar con el cable dupont de 6 hilos dicha placa pequeña y la placa Sugarless, en el conector de la SD. ¡Mirad la serigrafía y aseguraros de no ponerlo al reves!

¿Se puede connectar el casette del +2?

Sí, la placa Sugarless tiene un conector para el reproductor de cintas del +2A/B, y para el +2 gris también. No obstante, debido a diferencias entre la ULA del Spectrum 48K (implementada en el core de Spectrum de ZX-Uno) y la del un +2A/B, el casette podrá usarse para cargar, pero no para grabar, salvo que se apliquen unos cambios a la ROM utilizada para hacer que grabe con más volumen. En concreto hay que parchear la ROM3 con estos parches (asumiendo $0000 como el principio de dicha ROM):

  • $04DD: pasa de $0F a $1F
  • $04EF: pasa de $0D a $1D
  • $04F7: pasa de $0E a $1E

Dejo una versión parcheada de la ROM de 48K aquí. Para otros modelos os la tendréis que parchear vosotros, recordad que la ROM clásica en una ROM de 64 está en los últimos 16K.

[[PENDIENTE]] ¿Puedo actualizar como funciona la lógica de ese arduino conversor Spectrum-->PS/2?

Si. Sigue los siguientes pasos:

  • Descarga XLoader
  • Compra un adaptador USB para el arduino mini pro.
  • Desenchufa el ZXGO+ de modo que no tenga corriente. El adaptador alimentará el arduino.
  • Conecta el adapter al ZXGo+ así: DTR -- DTR, 5V -- 5V, RXI -- TXI, TXI -- RXI, GND -- GND. Los 3.3V no se conectan. Conéctalo a tu PC también.
  • Ejecuta XLoader, elije el "device" Duemilanove/Nano ATMega 328 device, 57600 de baud rate y elige el puerto COM donde el adaptador ha sido colocado (depende de tu PC, si hay más de uno simplemente prueba). Pulsa "upload" y espera a que se muestre el mensaje "xx bytes uploaded".

Si el enlace al XLoader os falla, aquí tenéis la versión disponible a fecha de 1/11/2017.

¿Hay pines libres en ese arduino que pueda utilizar para mis cosas?

Si usas la placa atmega 2560 sí, existen varios pines libres en la placa, para saber cuales se pueden mirar los esquemáticos del Sugarless. No obstante, se han definido expresamente los pines A8 a A15 para ampliaciones de usuario, para lo cual no se sueldan los pines correspondientes en la placa Sugarless, lo cual permite no insertar la placa atmega del todo y conectar así por debajo cables dupont girados, conectores acodados, etc.

Llamaremos a estos pines por tanto "pines de usuario" y podéis usarlos para lo que queráis con la tranquilidad del que el firmware oficial no los va a utilizar.

Si usais el chip atmega 128 directamente, aunque hay pines libres, es muy difícil soldar sobre ellos por lo que es poco viable.

Por otro lado, los pines del conector tzxduino que hay en el slot de expansión están pensados para controlar el tzxduino externo, pero si no usais tzxduino siempre podéis reprogramar el arduino para que se usen de otra manera.

El conector VGA entra muy justo, y no puedo conectar el cable

Efectivamente, se ha comprobado que no todas las carcasas de +2A/B/3 eran exactamente iguales, por lo que en algunos casos la salida VGA queda muy justa, y es imposible conectar el cable. La única solución en esos casos, y asumiendo que el conector VGA ya se haya soldado lo más alto posible, es limar un poco el agujero para hacer espacio. Otra opció no comprobada sería quitarle al cable macho el recubrimiento metálico de modo que solo queden los pines que entran al conector. Si probáis esto ruego lo indiquéis para actualizar la FAQ.

No consigo que se apague el Sugarless

En principio, aseguraos que el jumper reset_sw[[PENDIENTE]] está en la postura [[PENDIENTE]]. Si lo está, aseguraros que no estáis usando un puerto USB de la TV a la que está conectada el Sugarless como fuente de alimentación, porque si es así puede no funcionar. Técnicamente hablando el motivo es que se haría corto entre GND_POW del USB y GND del conector de vídeo, y como consecuencia quedaría anulada la función del MOSFET que realiza el apagado.

[[PENDIENTE]]Jumpers y configuración

¿Para que vale el jumper tal?

¿Para que vale el jumper tal?

¿Para que vale el jumper tal?

¿Para que vale el jumper tal?

Pinouts

Conector RGB

imagen pinout RGB

Notese que el pin de video compuesto solo estará conectado si pediste tu placa con salida de video compuesto<./p>

[[PENDIENTE]]Conector TZXDUINO

Soldando la placa Sugarless

¿Debo tener algo en cuenta antes de ponerme a soldar la placa Sugarless?

Sí, hay un par de puntos importantes, y algunas recomendaciones:

  • La version issue 1 de la placa Sugarless tiene un error de diseño, que hace que las señales del puerto RGB-OUT (el microJST que está en la zona del conector de expansión) estén al revés. Por tanto para que funcione correctamente dicho conector es imprescindible soldarlo por la cara de abajo de la PCB.
  • Los pines A8 a A15 del atmega 2560 se pueden usar para extensiones de usuario. No es recomendable soldar los pines macho en la placa Sugarless para ese rango.
  • Los conectores VGA y EAR quedan muy bajos si se suelda directamente sobre la placa, lo mejor es ponerlos lo más alto posible introduciendo la menor parte posible de sus pines en la sugarless, para que queden alzados.
  • En algunas carcasas el conector de reset entra muy justo, antes de soldar comprueba la tuya porque quizá sería conveniente soldarlo ligeramente inclinado.

¿Si fuérais a hacer una ISSUE2 que cosas cambiaríais?

No está claro si habrá una issue 2 hecha por el mismo equipo, pero como es open hardware otros podrían hacerla. Para ellos dejamos estas recomendaciones:

  • Hay que buscar la manera de que el el RGB-OUT-Classic vaya en la posición correcta
  • Sería bueno colocar una tira de pines que ponga todos los pines del Arduino que no se usan, tanto para el atmega 2560 como para el atmega128, a mano.

¿Hay una lista de piezas necesarias para la placa?

[[PENDIENTE]]
[[PENDIENTE]]
[[PENDIENTE]]
[[PENDIENTE]]
[[PENDIENTE]]
[[PENDIENTE]]

¿Si quiero hacerme una placa donde puedo encontrar los esquemáticos?

[[PENDIENTE]]
[[PENDIENTE]]
[[PENDIENTE]]
[[PENDIENTE]]
[[PENDIENTE]]
[[PENDIENTE]]