ZX-Uno 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 ZX-Uno. No te vamos a contar lo que es, ni para que vale. Solo cómo se usa.

El 12/1/2020 recibió una actualización importante por parte de desUBIKado (@desUBIKado) que permanece activo en la escena del ZX-Uno.

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

ÍNDICE

LO MÁS PREGUNTADO

¿Cual es la contraseña del repositorio?

Sin lugar a dudas, la pregunta más preguntada es esta. En algunas otras preguntas de esta FAQ haremos referencia al repositorio. Pues bien, esta es la respuesta:

  • Usuario: guest
  • Contraseña: zxuno

¿Hay algún emulador que emule ZX-Uno?

Bueno, el ZX-Uno es una placa con una FPGA, emularla completamente sería emular la posibilidad de "reconfigurarla" para implementar cualquier hardware, cosa que desde luego no es posible

Sin embargo, si hablamos de emular el core de Spectrum de ZX-Uno, sí, ZesarUX hace una emulación muy completa del core de Spectrum, así como Retro Virtual Machine.

¿Existe un solo modelo de ZX-Uno?

No. El proyecto ZX-Uno nació como un proyecto libre y desde el comienzo se promovió que se pudiesen hacer copias o nuevos modelos con funcionalidades adicionales. Sin embargo, el soporte a esas nuevas placas las debe realizar el fabricante de las mismas, y no el equipo original del ZX-Uno, que solo se responsabilizó de las unidades que se hicieron para el crowdfunding. Así existen distintos modelos:

  • ZX-Uno 4.1 del crowdfunding
  • ZX-Uno 4.1 vendido por Antonio Villena (idéntico al del crowdfunding)
  • ZX-Uno 4.1 vendido por Carmeloco - José Ángel Velasco Fernández - (idéntico al del crowdfunding pero con pines soldados y jumpers para el uso opcional del JoySplitter)
  • ZX-Uno 4.1 vendido por ManuFerHi - Manuel Fernández Higueras - (compatible 4.1 con conector VGA estándar)
  • ZX-Uno 4.2 vendido por Antonio Villena (idéntico al del crowdfunding  pero  preparado para usar el JoySplitter ya de serie)
  • ZX-Uno (M) vendido por 8bits4ever
  • ZX-Uno VGA 2M vendido por ManuFerHi - Manuel Fernández Higueras -
  • ZX GO+ vendido por ManuFerHi - Manuel Fernández Higueras-
  • ZX-Uno XL vendido por 8bits4ever
  • ZXUNO+ 2M vendido por Antonio Villena
  • µZX1 VGA 2M vendido por Antonio Villena
  • +UNO 2MB vendido por Antonio Villena
Todos los modelos son compatibles a nivel de cores con el modelo original 4.1 del crowdfunding, y varían generalmente en el número, tipo y disposición de los conectores de expansión, audio, video, joystick y alimentación, así como en la cantidad de memoria SPI Flash y SRAM.

¿Qué addons se han creado para el ZX-Uno y que utilidad tienen?

El ZX-Uno del crowfunding, y la mayoría de los modelos de ZX-Uno que se han creado después, tienen un conector de expansión de 36 pines hembra. Este conector permite que puedan conectarse a él una serie de addons que expanden las posibilidades hardware del ZX-Uno. A continuación recogemos los addons que se han ido creando y su funcionalidad:

  • Ampliación de memoria de 2MB externos (Antonio Villena): Permite aumentar la capacidad de memoria SRAM de los 512K originales hasta los 2MB. Hay cores que aprovechan esa memoria extra de diferentes formas. Se puede ver más detalladamente su utilidad en esta entrada del foro.
  • MIDI (McLeod Ideafix - Miguel Ángel Rodríguez Jódar): Implementa un sintetizador MIDI de 64 voces, con 128 instrumentos y varios sets de percusión. La salida de audio de este sintetizador se mezcla con el resto de fuentes de audio del ZXUNO para poder ser escuchado a través de la salida de sonido que se esté usando. Está diseñado para ser usado como si fuera un sintetizador conectado al conector MIDI/RS232 del ZX Spectrum 128K y superior.
  • YomboTFT (Yombo - Juan José Luna Espinosa -): Permite conectar una pantalla TFT de 3.2" con el chip ILI9341. Se necesita una versión especial de los cores para poder ver la imagen en la pantalla TFT. POr ahora solo existe adaptado una versión del core de Spectrum antigua que se puede obtener aquí.
  • UnoIEC= (Quest - Samuel Baselga López -): Permite conectar cualquier unidad externa IEC (un SD2IEC, una disquetera real 1541, 1571..., incluso varias conectadas en serie ) a los cores de Commodore, tanto C64 como C16/Plus4 y VIC-20. Necesita versiones de esos cores modificados para poder trabajar con el UnoIEC=.
  • DAC 18 bits (VGA) + WIFI (Antonio Villena): El DAC permite mejor calidad de imagen para cores que la necesiten, como el de PC. El DAC de video del ZX-Uno es de 8 bit y no permite sacar todos los colores que permite una VGA en el core de PC. El modulo wifi permite conectar por wifi simulando una UART, eso permite usar el cliente FTP de Yombo o las utilidades que ha ido publicando Nihirash (wget, clientes irc, gopher y plato, etc).
  • WIFI (Antonio Villena): Solo el WIFI sin el DAC de 18 bits.
  • DAC 18 bits (VGA) (Antonio Villena): Solo el DAC de 18 bits sin el WIFI.
  • Entrenadora VHDL o Verilog (Antonio Villena): Permite aprender HDL y también sirve para depuración y testeo de cores. Tiene 8 switches, 4 pulsadores, un display de 4 dígitos y 7 segmentos y 6 leds.
  • Uno-jamma (Antonio Villena): Permite conectar el ZX-Uno a una máquina Arcade que admita este tipo de conector y ejecutar los cores arcades adaptados instalados en el ZX-Uno.
  • HDMI con conector para ESP8266/ESP12 (Antonio Villena): Solo fue un prototipo para dar salida HDMI a los cores que se adaptasen, además de proporcionar WIFI. Como no funcionaba bien en todas las TV al final no se comercializó.
  • Z80 real para el ZX-Uno (McLeod Ideafix - Miguel Ángel Rodríguez Jódar): Fue un addon experimental para depurar mejor los cores, sin utilidad para los usuarios normales.
  • Netuno (Antonio Villena): Fue un addon experimental para unir dos zxunos por el puerto de expansión. La idea era hacer que 2 zxunos se repartiesen el trabajo y cooperasen para implementar una máquina superior. También vale para sacar señales con jumpers dupont, porque obtienes el conector de expansión invertido con pines macho. No fue comercializado.

¿Qué accesorios pueden utilizarse con el ZX-Uno?

Para el ZX-Uno se han ido creando una serie de accesorios propios que son muy útiles, y otros, que sin ser exclusivos para su uso con el ZX-Uno, también son muy interesantes:

  • Cable VGA para ZX-Uno versión 4.x (Antonio Villena): Proporciona una salida VGA al ZX-Uno del crowfunding.
  • Conector VGA->SCART Activo (Antonio Villena): Para conectar un cable VGA del ZX-Uno como el anterior, que emplea pines no usados del puerto VGA para transmitir el audio, y utilizarlo con una entrada de Euroconector/SCART en un Monitor/TV.
  • PS/2 Splitter: Se pueden comprar fácilmente por internet. Sirve para duplicar el conector PS/2 del ZX-Uno y poder conectar a la vez un teclado y un ratón.
  • JoySplitter (Antonio Villena): Permite duplicar el conector DB9 de joystick del ZX-Uno del crowfunding. No funciona en todos los modelos de ZX-Uno y ese necesario que los cores tengan versiones específicas para usarlo.
  • Joy2PS2 (Spark2k06 - Aitor Gómez -): Se trata de una interfaz a la que se le puede conectar uno o dos gamepads de diversas plataformas antiguas, convirtiendo y redirigiendo los eventos de éstos en pulsaciones de teclado hacia un puerto PS/2. Existe una versión incrustada en un mando de SNES.
  • Etiquetas de teclado (Hark0 - Jordi Bayó -): Bonitas etiquetas para pegarlas sobre las teclas de un teclado PS/2 y darle un aspecto spectrumero.
  • Maxduino (ManuFerHi - Manuel Fernández Higueras -) y Miniduino (Antonio Villena): Reproducen ficheros de audio TZX, TSX, TAP, CDT, CAS, P, O desde una tarjeta SD para cargar programas usando la entrada de audio del ZX-Uno en aquellos cores que la soportan como los de ZX Spectrum, ZX81, BBC Micro, Amstrad CPC y MSX. Los miniduinos se venden sin carcasa o bien con la carcasa diseñada por Jorge Mejías.
  • Carcasa para el ZX-Uno del crowfunding (Mejias3D - Jorge Mejías -): Una carcasa impresa en 3D muy chula para el ZX-Uno del crowfunding
  • Carcasa para el Miniduino de Antonio Villena (Mejias3D - Jorge Mejías -): Una carcasa impresa en 3D muy recomendable para el miniduino de Antonio Villena.
  • Carcasa para el Joy2PS2 de Spark2k06 (Mejias3D - Jorge Mejías -): Una carcasa impresa en 3D para ese accesorio.

¿Qué proyectos han sido desarrollados alrededor del ZX-Uno?

La comunidad de usuarios del ZX-Uno es muy inquieta y a veces nos sorprenden con proyectos muy interesantes como los siguientes:

  • ZX-Uno Gomas (ManuFerHi - Manuel Fernández Higueras -Neuro, Spark2k06 - Aitor Gómez -, Uto): El proyecto consistía en introducir un ZX-UNO en una carcasa de ZX Spectrum 48K "gomas". Al final se diseñó el ZX GO+, una placa completamente nueva por parte de ManuFerHi y otros, basado en el proyecto ZX-UNO de Superfo, Mcleod, Quest, AVillena y Hark0.
  • Sugarless +2 (A ZX-Uno Companion) (Spark2k06 - Aitor Gómez -): 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.
  • Mando X-Arcade para el ZX-Uno (ajsbernal - Antonio Jesus Sánchez Bernal -) Un mando arcade para 2 jugadores construido artesanalmente con un ZX-Uno en su interior.
  • ZX-Uno Pocket (wilco2009): Es un ZX-UNO convertido en una consola portatil. Consta de una placa diseño de superfo, a la que se conecta un ZX-UNO, una bateria y un circuito cargador/inverter/step-up para alimentar el sistema, y se diseñó para usar como carcasa la del spectrum portatil de Ben-Heck. Se puede ver un vídeo de este proyecto ya finalizado.

INSTALACION Y JUEGOS

¿Que cables o conectores necesito para poner en marcha mi ZX-Uno?

Esta es la lista básica:

  • Un cargador de móvil microUSB o al menos un cable USB a microUSB para conectar a la salida USB de la tele o similar
  • Un cable con conector RCA para vídeo compuesto, el típico conector amarillo.
  • Unos altavoces de PC para conectar a la salida de audio, o un cable jack-stereo a dos conectores RCA rojo/blanco para conectar a la TV
  • Una tarjeta SD, no necesariamente muy grande (2Gb está bastante bien). Valen microSD con adaptador.
  • Un teclado PS/2

Opcionalmente tambien puedes:

  • Un cable VGA para conectar el ZX-Uno por VGA
  • Un joystick norma Atari, es decir, un joystick de spectrum
  • Un splitter de ratón/teclado, para poder conectar un ratón PS/2 además del teclado

Si estás interesado en conectar el ZX-Uno por VGA lee la sección Pantalla y monitores

¿Cómo poner en marcha mi ZX-Uno?

Normalmente el fabricante de tu ZX-Uno te habrá facilitado instrucciones de como hacer esto. Si no es así solicitaselas. No obstante los pasos básicos para lanzar ZX-Uno en modo Spectrum es tener una tarjeta SD formateada con FAT16 o FAT32, varios ficheros tap, z80 o sna dentro, y conectarlo a una tele por el conector de video compuesto. Además en la tarjeta tienes que meter los ficheros de ESXDOS correspondientes a la versión de ESXDOS que lleve vuestro ZX-Uno (de ahí que conviene que el fabricante os de ese dato y os diga que fichero meter).

Si tu ZX-Uno proviene del crowdfunding, es muy probable que los ficheros en el enlace "Archivos de ESXDOS para la tarjeta SD" en la página de instrucciones para los backers te valga. Si algo no va bien (ver las siguientes preguntas) pregunta a tu fabricante por la version de ESXDOS y sobreescribe los ficheros de ese paquete con la distribución estándar de ESXDOS para esa versión. Sobreescribe y no reemplaces, para que se queden los comandos especiales de ZX-Uno que hay en la carpeta BIN.

Nuestra recomendación es formatear con FAT16 porque hay cores que solo funcionan con FAT16, mientras que los que lo hacen con FAT32 también lo hacen con FAT16. También recomendamos que formateeis las tarjetas aunque vengan ya formateadas, y que os aseguréis que no están formateadas con NTFS o exFAT. Asimismo, con la tarjeta SD recien formateada, aseguraros de que si quereís usar el core de BBC Micro el primer fichero que copieis en ella sea el BEEB.MMB.

¿Pero qué es ESXDOS?

ESXDOS es un sistema operativo para DivIDE y DivMMC, es decir, para interfaces que permiten el acceso a discos IDE en el caso de DivIDE, o de tarjetas SD haciendo de discos duros en el caso de DivMMC. ESXDOS incluye comandos para movernos por el disco muy al estilo UNIX, aunque para escribirlos en nuestro Spectrum tenemos que precederlos con un punto, por ejemplo ".ls", ".cd",".mv", etc.

Además, ESXDOS incluye un gestor NMI, es decir, una aplicación que se carga cuando pulsamos NMI en nuestro ZX-Uno (ver apartado siguente). Desde el 1/11/2017 hay un nuevo navegador NMI que incluye muchas nuevas funcionalidades, y que es recomendable usar en lugar del antiguo. Fue presentado en este hilo del foro de ESXDOS, y es allí donde se van presentando las sucesivas versiones que va saliendo, y donde podréis descargar la última versión. Para reemplazar el actual gestor de NMI por este nuevo, renombrad el fichero NMI.SYS en la carpeta SYS a NMI.OLD, y extraer todo el contenido del paquete, incluida la carpeta NMI, en el mismo sitio (/SYS).

ZX-Uno implementa el interfaz DivMMC exactamente como es, por lo que soporta exactamente lo mismo que soporta un DivMMC real.

¿Puedo usar ESXDOS en otros cores?

ESXDOS es un sistema operativo para DivMMC, que es un interfaz para Spectrum, por lo que la respuesta es no. Algunos cores pueden acceder a la tarjeta SD pero no usan ESXDOS.

¿Cómo cargo juegos desde la tarjeta SD?

Una vez que tengas juegos en la SD y ESXDOS esté funcionando (comprobad que se ven el logo de ESXDOS al arrancar y en esa misma pantalla se ve que detecta vuestra tarjeta SD) solo tenéis que generar una NMI (Ctrl+Alt+F5 o simplemente F5 en las versiones más nuevas del core de Spectrum) para acceder a un menú en el que os movéis con los cursores y podéis cargar ficheros Z80, SNA, TAP, TRD, SCR y BASIC.

Cuando pulso NMI (Ctrl+Alt+F5 o F5) el ZX-Uno se reinicia

Las causas más comunes de ese problema son:

  • Tu ZX-Uno no ha detectado tu tarjeta SD. Fijate en el arranque de ESXDOS y aseguraté de que esté formateada con FAT
  • Los ficheros de ESXDOS que hay en las carpetas BIN y SYS no concuerdan con la versión de ESXDOS que está instalada en tu ZX-Uno, o ni siquiera existen esas carpetas. Consulta con el fabricante para que te diga que versión lleva, y poner la misma versión. Si has actualizado la versión de ESXDOS de tu ZX-Uno (ver más adelante) asegúrate de actualizar también dichas carpetas.

Cuando pulso NMI el ZX-Uno hace un pitido grave y no pasa nada

Te falta meter los ficheros de ESXDOS en la tarjeta SD o no te ha reconocido la tarjeta. Revisa el primer punto de esta sección.

¿Puedo grabar la partida en la tarjeta SD para volver más tarde?

Sí, en el navegador NMI (Ctrl+Alt+F5 o F5) de ESXDOS hay una opción que pulsando "S" graba un snapshot en la carpeta en la que estuvieramos en la SD. El primer snapshot se llama SNAP0000.SNA, el segundo SNAP0001.SNA, etc.

Sin embargo hay que tener en cuenta que cuando reiniciamos el ZX-Uno si usamos el antiguo navegador NMI, este pierde la cuenta de por qué número iba, por lo que si volvemos a grabar volverá a intentar grabar el SNAP0000.SNA y dará error. En esos casos pulsad "S" hasta que diga que se ha grabado correctamente, lo cual ocurrirá cuando hayas pulsado S tantas veces como fichero SNAPxxxx.SNA hubiera más una. Sin embargo, este funcionamento explicado es el que ocurre con el navegador NMI antiguo a 32 columnas, pero el nuevo navegador NMI a 64 columnas del Dr.Slump tiene corregido este problema, y los snapshots se graban con la siguiente secuencia libre que encuentran sin dar error. Por eso es conveniente actualizar al nuevo navegador NMI, que además trae muchas mejoras con respecto al antiguo.

Para salir del navegador NMI debes hacer BREAK (tecla ESC)

¿Cuáles son los comandos esxDOS exclusivos del ZX-Uno?

El sistema operativo de disco esxDOS es usado en dispositivos como el divIDE o el divMMC, los cuales se conectan a spectrums reales. También se encuentra implementado en otros clones como el OMNI 128HQ (una versión mejorada de la placa Harlequin), o en placas FPGA como el ZX-Uno o el ZX Spectrum Next. Para el esxDOS se han creado una multitud de comandos para las más diversas funciones, pudiéndose ver una lista muy completa de ellos aquí.

Los comandos esxDOS exclusivos del ZX-Uno son los siguientes:
  • backup: Copia a un fichero FLASH.ZX1 en el directorio raíz de la tarjeta SD el contenido de toda la memoria SPI Flash. Funciona solo con memorias SPI Flash de 4 Megas (las originales del crowdfunding para 9 cores).
  • back16m: Versión del comando backup exclusivo para memorias SPI Flash de 16 Megas (las de hasta 45 cores).
  • corclean: Para limpiar los caracteres extraños que quedan en la lista de cores cuando se pasa de una SPI Flash de 9 cores a una de 45.
  • core: Carga el core del slot indicado (1 a 9).
  • corebios: Para hacer una actulización conjunta del core de Spectrum y de la BIOS. Necesario para la actualización al core de Spectrum EXP26 desde versiones anteriores.
  • dmaplayw: Reproduce un archivo de audio .wav,  que debe ser de 8 bits, sin signo y muestreado a 15625 Hz.
  • esprst: Resetea el addon WIFI ESP12
  • iwconfig: Para almacenar la configuración del WIFI (SSID, clave, etc)
  • joyconf: Configura y prueba los joysticks keyboard y DB9.
  • keymap: Sirve para cargar una definición de teclado diferente
  • loadpzx: Para cargar un archivo de imagen de cinta .pzx
  • playmid: Reproduce archivos musicales .mid en el addon MIDI
  • playrmov: Reproduce videos en formato radastaniano (ficheros .RDM)
  • romsback: Copia a un fichero ROMS.ZX1 en el directorio raíz de la tarjeta SD todas las roms del core Spectrum almacenadas en la memoria SPI Flash
  • romsupgr: Copia el contenido de un fichero ROMS.ZX1 en el directorio raíz de la tarjeta SD con todas las roms para el core Spectrum a la memoria SPI Flash.
  • upgrade: Copia el contenido de un fichero FLASH.ZX1 en el directorio raíz de la tarjeta SD a la memoria SPI Flash. Funciona solo con memorias SPI Flash de 4 Megas (las originales del crowdfunding para 9 cores).
  • upgr16m: Versión del comando upgrade exclusivo para memorias SPI Flash de 16 Megas (las de hasta 45 cores).
  • wget: Para descargar algo desde HTTP( https no está soportado) y almacenarlo a la tarjeta SD via esxDOS.
  • zxuc: Configura todas las opciones de la BIOS, permitiendo grabar en la SD las opciones  seleccionadas en archivos de configuración que pueden posteriormente ser cargados.
  • zxunocfg: Configura determinados aspectos del funcionamiento del ZX-Uno como los timings, la contención, el tipo de teclado, la velocidad de la CPU, el tipo y frecuencia vertical del vídeo.
Y hay multitud de comandos esxDOS, que sin ser exclusivos para su uso con el ZX-Uno, sí son de gran utilidad:
  • 128: Para pasar al modo 128K desde el modo 48K.
  • cd: Cambiar de directorio.
  • chmod: cambiar los atributos de los ficheros de la tarjeta SD.
  • cp: Copiar un archivo.
  • divideo: Reproduce un archivo de video DivIDEo (.dvo).
  • drives: Cambiar de unidad de disco
  • dzx7: Descomprime archivos comprimidos en un archivo .ZX7
  • launcher: Crea comandos esxDOS que cargan ficheros .TAP
  • ls: Ver el contenido de un directorio.
  • mkdir: Crear un directorio.
  • mktrd: Crear un fichero imagen de disquete .TRD
  • more: Ver el contenido de un archivo de texto
  • mv: Mover un archivo
  • ownrom: Cargar una rom de 16K
  • playpt3: Reproducir un archivo musical .PT3
  • playsqt: Reproducir un archivo musical .SQT
  • playstc: Reproducir un archivo musical .STC
  • playtfm: Reproducir un archivo musical .TFC
  • playwav: Reproducir un archivo musical .WAV
  • playzxm: Reproducir un archivo de vídeo .ZXM
  • rm: Borrar un archivo o directorio
  • scl2trd: Convierte una imagen de disquete .SCL a formato .TRD
  • sidplay: Reproducir un archivo musical SIDDUMP
  • snapload: Carga archivos .SNA y .Z80
  • tap2mic: Reproduce el audio de un fichero .TAP
  • tapein: Montar un archivo .TAP para poder ser utilizado luego desde BASIC con la sentencia LOAD
  • tapeout: Montar un archivo .TAP para poder ser utilizado luego desde BASIC con la sentencia SAVE
  • te: Un editor de archivos de texto
  • trd: Para pasar al entorno TR-DOS del esxDOS y ejecutar comandos de ese entorno
  • vdisk: Monta una unidad de disquete .TRD para usar en el entorno TR-DOS

El juego X no me funciona

Hay distintas razones para que un juego no funcione, algunas vienen del ZX-Uno propiamente dicho, y otras vienen de problemas anteriores ya conocidos de incompatibilidades con Spectrum 128K o con DivIDE/DivMMC. Estos son algunos casos conocidos:

  • Algunos juegos de 48K no funcionan si el Spectrum elegido es 128K: haz OUT 32765,48 o bien carga este fichero tap ya preparado con el OUT 32765,48 antes.
  • Algunos juegos no cargan bien, especialmente algunos juegos hechos con "La Churrera". Prueba este POKE 23388,16 antes, o carga este otro fichero tap que contiene el POKE 23388,16. La última versión de ESXDOS hasta la fecha (19/9/2016), que es la 0.8.6 beta 5.1, tiene un cambio que viene a paliar este problema, pero ni está probado muy a fondo ni la mayoría de los ZX-Uno hasta la fecha llevan esa versión.
  • Algunos juegos (por ejemplo Mad Mix game) parecen perder la información de color y se ven fatal: Prueba con estos OUT antes de jugar: OUT 64571,15 : OUT 64827,7 o utiliza ZXUC para desactivar los modos Timex. Hay una tercera opción que es desactivar los modos gráficos adiciones desde la BIOS, pero eso hará que juegos que puedan usar esos modos (Radastan, Timex o la ULA Plus no funcione). Una cuarta opción es tener una ROM específica para jugar estos juegos con el setting de los modos Timex desactivado (ver más adelante como instalar y configurar ROMs).

¿Hay otras teclas útiles para el core de Spectrum?

Sí, esto es lo más importante:

  • Ctrl+Alt+backspace: Hard reset. Backspace es la tecla de borrar hacia atrás, encima del enter.
  • Ctrl+Alt+Supr: Soft reset.
  • Bloq. Despl.: cambia de modo video compuesto a VGA y viceversa.
  • Ctrl+Alt+F5 o simplemente F5: NMI
  • F7: Play /Pause en la reproducción de archivos .PZX (a partir del core EXP26).
  • F8: Rebobinar al archivo .PZX hasta la marca anterior (a partir del core EXP26).
  • F12: Turbo Boost. Pone a la CPU a 28MHz mientras se mantenga pulsada (a partir del core EXP27).
Y durante el arranque:
  • F2: Entras en la BIOS
  • Bloq. Mayús o cursor abajo: Menú de selección de cores
  • ESC: Menú de selección de roms del core de Spectrum
  • R: Cargará la rom del core de Spectrum en modo "real" deshabilitando esxDOS, nuevos modos gráficos, etc.
  • / del teclado numérico: Cargará la rom del core de Spectrum en modo "root"

Al arrancar ESXDOS veo un mensaje que pone RTC.SYS ERROR

No pasa nada. ESXDOS es un sistema operativo genérico que soporta dispositivos DivMMC que tienen la posibilidad de guardar la fecha, para grabar los archivos con fecha. El DivMMC implementado dentro del ZX-Uno no es uno de ellos, por lo que el módulo RTC da error al arrancar, pero no pasa nada (salvo que todos los archivos se generan con una fecha por defecto en lugar de la actual). Sin embargo, para evitar que en el arranque se viese ese error se puede colocar el archivo RTC.SYS en la carpeta /SYS/. Este archivo se incluyo por primera vez con la versión EXP26 del core de Spectrum.

¿Cómo elijo con que ROM arrancar el core de Spectrum?

Si cuando sale el logo de ZX-Uno pulsamos la tecla Esc, nos saldrá una lista para elegir la ROM a utilizar. Si quieres cambiar la ROM por defecto, lo puedes hacer en la BIOS (ver apartado "Configuración" de esta misma FAQ).

Nota: es posible que entre las ROMs disponibles haya una cuya descripción incluya la palabra "rooted". Avisamos que NO debéis usar dicha ROM para jugar ni para uso normal. Se trata de una ROM que permite acceder a funciones del ZX-Uno que otra no pueden, como grabar la Flash, y que por tanto está hecha especialmente para acciones que lo requieren, pero usarla de manera continua es un riesgo de dañar accidentalmente tu ZX-Uno.

¿Puedo poner pokes?

Sí, para ello puede usar el nuevo navegador NMI o bien usar la ROM "cargandoleches".

1º Método. Usando el nuevo cargador NMI.

Simplemente pulsar NMI Ctrl+Alt+F5 o simplemente F5, y luego la tecla P para pokear.


2º Método. Usando la ROM "cargandoleches".

Con esa ROM no podrás cargar juegos con el menú de NMI así que tendrás que usar comandos de ESXDOS, después de hacer BREAK al arracar la ROM:

Para cargar taps hay que acceder al directorio donde estén usando así:

.cd <directorio>

y luego cargar el juego así:

.tapein <nombre del fichero tap>
LOAD ""

Una vez cargado el juego, pulsas NMI y te saldrá arriba al a izquierda un recuadro donde primero escribes la dirección del POKE (lo que va antes de la coma), pulsas enter, y después tecleas el valor del POKE (lo que va detrás de la coma). Cuando no quieras poner más pokes simplemente pulsa enter en lugar de escribir la dirección y volverás al juego ya pokeado.


¿Cómo elijo con que core quiero arrancar mi ZX-Uno?

Por defecto el ZX-Uno arrancará con el core de Spectrum, pero si cuando sale el logo de ZX-Uno pulsamos la tecla Bloqueo Mayúsculas, nos saldrá una lista para elegir el core a arrancar. Tened en cuenta que algunos cores solo funcionan por VGA, por lo que si estáis por video compuesto no veréis nada si los elegís.

También podéis arrancar directamente los cores en los slots 2 a 9 pulsando las teclas 2 a 9 en el momento del arranque del ZX-Uno.

¿Puedo elegir core una vez arrancado en modo Spectrum?

Sí siempre que te sepas el slot en el que está el core que quieres arrancar, escribe ".CORE n" , donde n es el numero de slot. Solo funciona para valores de n entre 1 y 9. Si se pone un número mayor solo cogerá el primer dígito, así tanto .CORE 2 como .CORE 24 arrancan con el core del slot 2.

CONFIGURACION

¿Cómo entro a la BIOS?

En la BIOS de Zx-Uno se pueden configurar varias cosas el core de Spectrum, y realizar algunas opciones avanzadas como actualizaciones. Para entrar, solo hay que pulsar la tecla F2 cuando se muestra el logo de ZX-Uno en el arranque.Hay otra forma alternativa de entrar, que es en el arranque pulsar la tecla cursor abajo o dirección abajo en el joystick. Eso nos presentará una pantalla con todos los cores instalados y también una última opción "Enter Setup" que nos permitirá entrar en la BIOS.

¿Cómo puedo seleccionar la ROM de Spectrum por defecto?

Desde dentro de la BIOS. Accede a la BIOS y ve al menú ROMS. Selecciona la ROM que quieres que sea por defecto, pulsa ENTER y luego elige "Set active".

¿Como puedo seleccionar el core por defecto?

Entra a la BIOS, ve al menú BOOT y pulsa enter sobre el core elegido.

Pero selecciono un modelo de 128K y me arranca en 48K

Si tienes activado DivMMC para poder cargar juegos desde la tarjeta SD, este fuerza arrancar en 128K pero en el llamado "modo USR 0", que arranca con la ROM del 48K. En la práctica estarás en un 128K pero en modo 48k. Si quieres que aparezca los menúes de inicio de los modelos de 128K puedes ejecutar el comando esxDOS .128  en caso de que lo tengas instalado.

Pero yo quiero ver el +3DOS o programar BASIC en modo 128K

Para eso tienes dos opciones:

  • Entrar a la BIOS y cambiar el setting de "DivMMC" de "auto" a "disabled", pero dejarás de poder cargar desde la SD desde todas las ROMS.
  • Crear e instalar un ROM específica de 128K con DivMMC disabled. Ver el apartado de instalar o cambiar ROMs más adelante.

¿Que opciones se pueden cambiar en la BIOS?

Estas son las opciones de la BIOS 0.75 a fecha de hoy (05/10/2019):

  • Seleccion de tipo de teclado (Issue 2/Issue 3)
  • Timing ULA (48K, 128K, Pentagon)
  • Contended memory Sí/no
  • DivMMC Sí/no
  • NMI DivMMC Sí/no
  • Layout de teclado ES/EN/Spectrum
  • Joystick DB9: Kempston, SJS1, SJS2, Protek, Fuller o OPQAspM
  • Joystick emulado en teclado: Kempston, SJS1, SJS2, Protek o Fuller
  • Video: PAL, NTSC o VGA
  • Scanlines para modo VGA Sí/no
  • Frecuencia: 50, 51, 53.5, 55.8, 57.4, 59.5, 61.8 y 63.8
  • Velocidad de la CPU: x1, x2, x4 y x8
  • CSync: Spectrum o PAL
  • Opción de deshabilitar modos gráficos avanzados (ULAPlus, Timex, Radastan)

Además la BIOS tiene opciones para hacer varios upgrades, cambiar las ROMS, y algunos test de memoria, teclado, cinta, para comprobar que nuestro ZX-Uno está en forma.

¿Esas opciones se pueden cambiar cuando el Spectrum ya ha arrancado?

La mayoría sí. Existen utilidades que vienen con el ESXDOS de ZX-Uno como .JOYCONF, .KEYMAP o .ZXUNOCFG. Puedes ejecutar dichos comandos sin parámetros para que te indiquen que opciones tienen.

También esta ZXUC, que es un interfaz gráfico que permite modificar muchas opciones y viene en formato .tap.

Finalmente, también es posible modificar muchas opciones a base de OUTs, para lo cual es necesario entender principalmente los registros MASTERCONF, DEVCONTROL y DEVCTRL2 de ZX-Uno, que podemos ver en el listado de registros de ZX-Uno.

No me funciona ni .joyconf, ni .zxunocfg ni nada

Probablemente instalaste un ESXDOS estándar y no el que incluye los comandos específicos de ZX-Uno. Si el fabricante de tu ZX-Uno te facilitó instrucciones repasalas para ver si te has dejado algo, sino preguntale. También pueden descargarse estas aplicaciones, pero si quiere descargar la última version mejor preguntar en el foro donde están.

PANTALLA Y MONITORES

¿Video compuesto, RGB o VGA?

La mejor calidad te la da VGA, en la que además puedes añadir scanlines para simular TVs antiguas. Necesita un cable específico no obstante. Además, algunos cores como el de NES solo van por VGA.

Por otro lado video compuesto es sencillo de utilizar y solo requiere un cable sencillo, pero la calidad de imagen es inferior. Sin embargo cuando se selecciona video compuesto el ZX-Uno también saca señal RGB por el conector VGA, de esta forma se puede, con el cable adecuado,conectar el ZX-Uno a la entrada Euroconector/SCART de una televisión, y ver la imagen con una gran calidad.

¿Cómo cambio a VGA?

Conecta el cable, y pulsa la tecla Bloq Despl. Si se ve bien ve a la BIOS, pulsa de nuevo Bloq Despl y cambia los valores de VGA y Frecuencia en "Advanced options".

No obstante, es posible que tu monitor soporte resoluciones inferiores a los 60Hz por VGA, por lo que puede usar .zxunocfg o ZXUC para probar y tratar de reducir hasta la menor frecuencia que soporte tu monitor, y una vez comprobado, volver a la BIOS y ponerlo así.

Es recomendable elegir la frecuencia menor a la que nuestro monitor sea capaz de sincronizar, porque una frecuencia mayor implica que el Spectrum va más rápido, así que a 60Hz va un 20% pero a 55Hz solo un 10%. Cuanto menos, mejor.

He cambiado de modo de video y ahora no veo nada en la pantalla

Reinicia el ZX-Uno y pulsa F2 para entrar en la BIOS (aunque no la veas). Pulsa la tecla Bloq Despl. Dicha tecla cambia entre modo PAL 50Hz (ideal para video compuesto o RGB) y modo VGA a 60Hz(ideal para conector VGA).

Una vez puedas ver la BIOS puedes cambiar los settings y restaurar los de por defecto por ejemplo.

ACTUALIZACIONES

¿Que son los upgrades y cuales puedo hacer?

El ZX-Uno te permite hacer upgrade (actualizar):

  • El firmware o BIOS, que es lo que sale al arrancar y que pulsando F2 se accede al setup del core de Spectrum al estilo BIOS de PC.
  • Los cores, o la implementación de las distintas máquinas que el ZX-Uno puede soportar.
  • Las ROMS del core de Spectrum. Estas se pueden actualizar por separado del core de Spectrum aunque son solo para dicho core. El resto de cores llevan su propia ROM dentro del core en sí.
  • ESXDOS, el sistema operativo para acceder a la tarjeta SD desde el core de Spectrum.
  • Toda la flash, incluyendo ESXDOS, las ROMS, los CORES y el firmware
NOTA IMPORTANTE: Si vas a actualizar a una BIOS >= 0.70 o a un core >= EXP26 desde una versión de BIOS < 0.70 o de core < EXP26 (p.e: T24 o EXP25) hay que hacer una actualización conjunta de CORE y BIOS a la vez. Está explicado en este hilo.

¿Qué firmware tengo y cómo lo actualizo?

En la pantalla de arranque de ZX-Uno, donde se ve el logo, podéis ver en algún sitio "ZX Uno BIOS v0.xx", o bien si entráis en la BIOS pulsando F2, en la línea inferior veréis la versión que tenéis instalada. A día de hoy (05/10/2019) la última versión es 0.75.

Para actualizarlo debemos descargar el fichero FIRMWARE.ZX1, que podéis obtener en... pues es muy variable, asi que menjor preguntad en el foro de ZX-Uno. No obstante, un sitio donde lo podremos encontrar es en el github de Antonio Villena.

Nota: actualizar el firmware (BIOS) es delicado, no lo hagas si no es necesario, y si lo haces trata de que tu ZX-Uno tenga alimentación ininterumpida (usa un SAI o conecta la corriente a un USB de portatil con bateria).

Una vez tenemos el fichero, lo ponemos en la carpeta raiz de nuestra tarjeta SD, encendemos nuestro ZX-Uno y pulsamos F2 para entrar en la BIOS, nos vamos a Upgrade, elegimos "Upgrade BIOS for ZX", luego "SD file". El sistema leerá el fichero FIRMWARE.ZX1 y avisará cuando esté actualizado. Es el momento de reiniciar nuestro ZX-Uno y disfrutar de nuestra nueva BIOS.

No debe sorprenderos si la barra de progreso no se rellena entera. El firmware ocupa solo una pequeña parte de la flash del ZX-Uno, y la barra de progreso marca solo esa pequeña parte.

¿Cómo instalo o actualizo cores?

Lo primero que debes saber es que hay 9 o 45 slots para cores disponibles (depende del tamaño de la SPI Flash de tu modelo de ZX-Uno), estando reservado el primer slot para el de Spectrum. Todos los cores se actualizan igual, excepto el de Spectrum. Para actualizar o instalar un core necesitamos primero la última versión del fichero que lo define, que será un fichero llamado COREn.ZX1. ¿Dónde están esos ficheros? Pues depende del core, mejor preguntar en el foro. Una vez tenemos el fichero COREn.ZX1 decidimos en que slot lo vamos a poner (2 a 9, 10 a 45) y renombramos el fichero COREn.ZX1 o COREnn.ZX1, sustituyendo la n o nn por el número de slot (por ejemplo CORE2.ZX1 para el slot 2).

Una vez tenemos nuestro fichero, lo ponemos en la carpeta raíz de nuestra tarjeta SD, encendemos nuestro ZX-Uno y pulsamos F2 para entrar en la BIOS, nos vamos a Upgrade, elegimos la fila correspondiente al core elegido (en nuestro ejemplo la 2 - justo después de la de Spectrum - pulsamos enter y luego "SD file". El sistema leerá el fichero CORE2.ZX1 y avisará cuando esté actualizado, aunque antes preguntará el nombre - es el nombre con el que se verá en la lista para elegir el core en el arranque, y en el listado del a BIOS. Una vez instalado el CORE podemos acceder a él al arrancar.

No debe sorprenderos si la barra de progreso no se rellena entera. Cada core ocupa solo una pequeña parte de la flash del ZX-Uno, y la barra de progreso marca solo esa pequeña parte.

¿Cómo actualizo el core de Spectrum?

Nota: actualizar el core de Spectrum es delicado, no lo hagas si no es necesario, y si lo haces trata de que tu ZX-Uno tenga alimentación ininterumpida (usa un SAI o conecta la corriente a un USB de portatil con bateria).

Exactamente igual que los otros cores, pero en lugar del fichero CORE1.ZX1 necesitarás un fichero llamado SPECTRUM.ZX1. Pregunta por él en los foros.

¿Y como puedo borrar un core?

No se puede. Si quieres que no salga en la lista grabale otro encima o graba uno cualquiera y cuando pregunte el nombre dejalo vacío, pero eso no hará que no esté ahí.

¿Cómo actualizo ESXDOS?

Para actualizarlo debemos descargar el fichero ESXDOS.ZX1 de la última versión (o de la versión que queráis instalar). Como cada versión anda por un sitio diferente, preguntad en el foro de ZX-Uno, o bien simplemente renombrad el fichero esxmmc.bin de la distribución que sea como ESXDOS.ZX1.

Una vez tenemos el fichero, lo ponemos en la carpeta raiz de nuestra tarjeta SD, encendemos nuestro ZX-Uno y pulsamos F2 para entrar en la BIOS, nos vamos a Upgrade, elegimos "Upgrade ESXDOS for ZX", luego "SD file". El sistema leerá el fichero ESXDOS.ZX1 y avisará cuando esté actualizado. Ahora tenemos que actualizar ESXDOS en la tarjeta SD. Para ello debemos sustituir las carpetas BIN y SYS con las de la nueva versión pero ojo, no las borres, grabalas encima. Esto es para asegurarse de que los ocmando nuevos de ESXDOS creados para ZX-Uno no se pierden, porque no vienen con las distribuciones de ESXDOS estándar.

No debe sorprenderos si la barra de progreso no se rellena entera. ESXDOS ocupa solo una pequeña parte de la flash del ZX-Uno, y la barra de progreso marca solo esa pequeña parte.

¿Cómo actualizo o cambio las ROMS de Spectrum?

Hay dos posibilidades:

  • Obtener el fichero .tap que corresponde a cada una de las ROMS y desde la BIOS acceder al apartado "ROMS" y pulsar N, elegir un slot y reproducir el fichero .tap desde una fuente externa por la entrada EAR (desde un PC por ejemplo). Hay que tener en cuenta que algunas ROMS ocupan un slot (16k) y otras más (hasta 4), por lo que dependiendo de la ROM a cargar tendréis que elegir un slot vacío, o una zona que tenga 2, 3 o 4 slots vacíos juntos. En caso de querer reemplazar una ROM, primero hay que borrarla (pulsar enter sobre la mismo y elegir "delete") y después cargarla de nuevo.
  • Generar un fichero con todas las ROMs usando la utilidad ZX1RomPack, que además permite poner determinado ajustes a las ROMS - como el timing de la ULa, si tiene habilitado DivMMC, modo Radastan, etc. Si usáis esta aplicación acabaréis grabando un fichero llamado ROMS.ZX1, que tenéis que colocar en el raiz de vuestra tarjeta SD, y después arrancar el ZX-Uno usando una ROM específica "rooted" (buscad en vuestro listado de ROMs y seguro que hay una). Una vez arrancado el ZX-Uno con la ROM rooted, teclead ".ROMSUPGR" (no olvidéis el punto al inicio). Se grabarán todas las ROMs y podremos utilizar nuestro ZX-Uno con nuestras nuevas ROMs. Existe un comando de ESXDOS llamado ".ROMSBACK" que hace el proceso contrario, es decir, coge las ROMS del ZX-Uno y las graba en un fichero ROMS.ZX1 en el raiz de nuestra tarjeta SD. De ese modo - en lugar de partir de cero - podemos extraer las ROMS del ZX-Uno, utilizar ZX1Rompack para modificar lo que queramos, y volver a grabar el ROMS.ZX1 en nuestro ZX-Uno.

Nota: a partir de la BIOS 0.65 si se pulsa / (signo de dividir) en la pantalla del arranque se iniciará en modo rooted la ROM por defecto, o la ROM que se elija si después de pulsarla seleccionamos otra ROM. Verás el borde en color rojo para indicarte que se arrancará en modo rooted.

¿Puedo generar yo mis propios ficheros .tap para cambiar ROMS?

Sí, puedes utilizar la utilidad GenROM, para obtener la última versión podéis preguntar en el foro. Dicha utilidad es para línea de comandos, y requiere entender los parámetros de configuración de la BIOS. Si la ejecutáis sin parámetros podréis ver como funciona, y si tenéis dudas sobre alguna opción, lo mejor es que comprobéis lo que significa en la descripción de registros de ZX-Uno.

¿Hay alguna ROM que sea exacta a determinado modelo de ZX-Spectrum?

Por defecto no, porque todas las ROMS suelen venir con cosas como DivMMC, modos Timex, ULAPlus, etc. activados. Esto son funcionalidades extra que facilita ZX-Uno pero que no traía ningún Spectrum original. En otros casos, como el chip de sonido AY, solo lo traían los modelos de 128K, pero en ZX-Uno incluso el modelo de 48K lo puede llevar activado.

Si queréis un Spectrum puro, solo teneís que crearos vuestra propia ROM (por ejemplo con la ROM del Spectrum 48K y desactivando modos Timex, modo Radastan, ULAPlus, chip AY y DivMMC) e instalarla. Así tendréis un Spectrum 48K puro hasta el punto de que cargar los juegos por EAR será lá única opción. Otra opción más sencilla es arrancar en modo real. A partir de la BIOS 0.65 si se pulsa "r" en la pantalla de arranque se iniciará en modo real con todos los extras anteriores desactivados. Verás el borde en color cyan para indicarte que se arrancará en modo real.

¿Puedo hacer un backup de todo lo que lleva internamente el ZX-Uno?

Sí, tienes que arrancar con la ROM que ponga "rooted" y ejecutar el comando ".BACKUP". Eso creará en el raiz de tu tarjeta un fichero llamado FLASH.ZX1 que después se puede restaurar desde la BIOS (menú upgrade, "Upgrade flash from SD")

OTROS CORES

Aunque el objetivo de esta FAQ es documentar el core de Spectrum, vamos a dar alguna información sobre otros cores, teniendo en cuenta que no es intención del autor de esta FAQ tener este contenido actualizado, para eso, mejor el foro de ZX-Uno

¿Qué otros cores hay para Zx-Uno?

A día de hoy (5 de octubre de 2019) hay varios cores para ZX-Uno: Amstrad CPC 464 (varias versiones), Commodore 64, MSX 1, PC-XT, Sam Coupe, Jupiter Ace, Sega Master System, Oric Atmos, BBC Micro, Atari 800XL, Vic 20, Acorn Electron, Commodore 16, Commodore PET, ZX-81, Sharp MZ-700, Colecovision, Atari 2600, Apple 2, Acorn Atom, Nintendo Entertainment System (NES), otras versiones de Spectrum como la TBBlue o la Kyp, Vectrex, Galaksija, TRS-80 Model I, Multicomp, Apple I, Flappy Bird y además una serie de máquinas arcade.

Muchos de estos cores tienen requisitos especiales, como una tarjeta formateada de una manera especial, o usar solo salida VGA no pudiendo funcionar por video compuesto.

Una lista actualizada de todos los cores la podéis encontrar aquí.

Asimismo, podéis encontrar las teclas utilizadas por cada core, así como la función que realizan, en este otro documento.

¿Puedo cambiar las ROMS de otros cores? ¿La de Sam Coupé por ejemplo?

No, las ROMs de otros cores van dentro del core y salvo que el core lo permita expresamente o el core tenga las ROMS en la SD, no será posible cambiarlas.

¿Cómo hago funcionar el core de Amstrad CPC 464?

Actualmente hay 3 cores de Amstrad CPC para el ZX-Uno. El core de McLeod_Ideafix para el modelo CPC 464, una versión del anterior adaptada por jepalza para paginar hasta 128K (sería como un CPC6128 al que no le funcionase la disquetera), y el core de Renaud Helias que tiene un soporte limitado de carga desde tarjeta SD.

El core de McLeod_Ideafix  no necesita nada en especial, ni siquiera una tarjeta SD, porque solo permite por ahora cargar por la entra EAR. Conecta tu casette o reproductor alternativo al ZX-Uno por dicha entra y teclea RUN" en el ZX-Uno. En la versión de jepalza, antes de poder cargar desde cinta, es necesario teclear el comando |TAPE para indicar que la carga se va a realizar desde el cassette, y no desde la disquetera. Para  utilizar el core de Renaud Helias mejor mirar sus instrucciones en el foro del ZX-Uno.

¿Cómo hago funcionar el core de MSX 1?

Una guía muy completa para el uso de este core la podéis encontrar en esta entrada en el foro del ZX-Uno.

De este core hay una versión para funcionar con 2 joysticks a la vez para el para el modelo ZX-UNO VGA 2M.

¿Cómo hago funcionar el core de Commodore 64?

Una vez configurada la tarjeta SD con las instrucciones que podréis encontrar en el foro (necesita tarjeta propia), el C64 queda con un disco D64 cargado y varios más en la SD preparados para ser cargados. A partir de ahí os recomiendo mirar el final de este post de ºdo que recopila todas las teclas para usar el core.

¿Cómo hago funcionar el core de PC XT?

Este core tiene distintas versiones: la básica para ZX-Uno con 512K de RAM, y dos avanzadas para ZX-Uno con 2Mb de RAM internos, o con 2MB de RAM externos. Elige correctamente la que corresponda a tu equipo.

Para funcionar necesita grabar una imagen en la tarjeta SD, que debe ser de máximo 4Gb y SDHC. Dicha imagen está disponible en el foro. Tened en cuenta que con las últimas versiones del core no es necesario grabar el fichero de la BIOS al final de la tarjeta como algún tutorial indica, lo cual hace todo mucho más fácil, pero sigue siendo necesario grabar la imagen porque graba el sector de arranque de DOS. Una vez grabada la imagen de la tarjeta, se puede meter en cualquier PC y añadir juegos y utilidades para DOS.

El core emula un PC 80186, con algun cambio para dar soporte a algunas instrucciones de 286, con soporte de modo de texto, y modos EGA 320x200x16 y MCGA 320x200x256 (también llamado VGA). Esto implica que puede ejecutar juegos creados principalmente en la primera mitad de los 90, descartando por antiguos aquellos que solo tengan salida CGA o anteriores, y aquellos que usen modo protegido o requieran un 386 o superior.

Como en los tiempos de DOS, la cantidad de memoria convencional libre puede ser un problema, y es por eso que en la versión de 512K, que al final tras cargar el DOS, controlador de ratón, etc. queda poca RAM libre (menos de 500K) habrá juegos que no funcionen. La presencia de los 2Mb permite salvar ese problema y además hace funcionar mejor a algunos juegos que usan el resto de RAM como caché de disco, por ejemplo "El Día del Tentáculo".

Si queréis estrujar la RAM del PC como en los buenos tiempos, esta versión de CuteMouse ocupa bastante menos que la que viene con el core, y este controlador de teclado puede sustituir al original KEYB ocupando mucha menos RAM. Aparte de eso, la necesidad de carcar DOSKEY en un sistema que solo se use para jugar es dudosa.

Tened en cuenta que no había sitio suficiente para almacenar el modo VGA 320x200x256 por lo que veréis que en esos juegos faltan unas lineas en la parte de abajo de la pantalla. Según el juego que sea esto afectará mucho, poco o nada.

¿Cómo hago funcionar el core de Sega Master System?

El core de Sega Master system solo necesita que metas algunos juegos en formato .SMS en una carpeta de tu tarjeta SD. Al arrancar directamente te presenta un selector para cargarlos. Si te dice que hay error de disco probablemente no soporte bien tu tarjeta, prueba a reformatearla que este core es un poco especial con las tarjetas SD.

Ten en cuenta que el core no soporta todos los juegos de Sega Master System, solo una gran cantidad, por lo que si el primero no te funciona no desesperes, prueba más.

Pulsando F12 se accede al menú, y el juego puede pausarse con la tecla Pausa

De este core hay también versiones para funcionar con 2 joysticks a la vez, tanto para joysplitter, como para el modelo ZX-UNO VGA 2M

¿Cómo hago funcionar el core de NES?

El core de NES solo necesita que metas algunos juegos en formato .NES en una carpeta.

Ten en cuenta que el core no soporta todos los juegos de NES, solo una gran cantidad, por lo que si el primero no te funciona no desesperes, prueba más.

Importante: este core solo funciona por VGA

De este core hay también versiones para funcionar con 2 joysticks a la vez, tanto para joysplitter, como para el modelo ZX-UNO VGA 2M.

¿Cómo hago funcionar el core de TTBlue/ZX Next?

Nota: esta información está obsoleta, los últimos cores del Next no caben en el ZX-Uno por lo que las instrucciones que hay aquí son para uno relativamente antiguo.

Instalar el core en sí se hace igual que los demás cores, necesitas el fichero COREn.ZX1 e instalarlo. Además de eso, necesitáis instalar estos ficheros del firmware de TTBlue en la tarjeta SD.

Sin embargo el fichero arriba enlazado tiene el problema de contener cosas en exceso. Del mismo solo tenéis que extraer, de la carpeta SDCard, las carpetas TTBLUE y TMP, y el fichero TTBLUE.FW y ponerlos en vuestra tarjeta SD. Eso os permitirá arrancar, pero es posible que una vez arrancado ESXDOS no funciones: al pulsar F10 se produce un reset, y si pones comandos de ESXDOS dice "Nonsense in BASIC". Si esto ocurre es que el core y vuestra tarjeta no tienen el mismo ESXDOS. Para solucionar eso solo tenéis que saber que versión exacta de ESXDOS tenéis instalada en vuestro ZX-Uno, buscar el paquete original de dicha versión, sacar el fichero esxmmc.bin de dicho paquete, renombrarlo como esxmmc.rom y grabarlo dentro de la carpeta TTBLUE de la tarjeta SD, sustituyendo al que hay en dicha carpeta.

¿Cómo hago funcionar el core de Jupiter Ace?

Existen dos versiones de este core, la original de McLeod_Ideafix, y una mejorada por azesmbog, con soporte de carga desde la tarjeta SD. La versión originalno requiere configuración especial, pero solo puedes carga juegos por la entrada EAR, y no soporta la tarjeta SD.

¿Cómo hago funcionar el core de Sam Coupé?

No requiere configuración especial, pero solo puedes carga juegos por la entrada EAR, no soporta la tarjeta SD.

Para cargar un juego, desde la pantalla inicial de las bandas de colores pulsa 7 en el teclado numérico (equivalente a pulsar F7 en el teclado del SAM Coupé), o bien desde BASIC teclea LOAD ""(como en el Spectrum)

¿Cómo hago funcionar el core de BBC Micro?

Hay que formatear una SD sin formato rápido, preparar fichero BEEB.MMB en la raíz con MMBImager e introducirlo como el primer archivo de la tarjeta.

Con RePag, AvPag cambiamos de modo VGA a vídeo compuesto, con Shift+F12 mostramos el selector de archivos (sin soltar Shift) y con F12 hacemos reset.

¿Cómo hago funcionar el core de Acorn Atom?

Formatear la tarjeta en FAT y meter estos ficheros para el core de Acorn Atom en la raíz.

Con Shift+F10 mostramos el selector de ficheros, con F10 hacemos reset, y F1-F4 elige modo turbo (F1 = 1Mhz, F2 = 2Mhz, F3 = 4Mhz, F4 = 8Mhz)

Importante: este core solo funciona por VGA

¿Cómo hago funcionar el core de Acorn Electron?

Hay que formatear una SD sin formato rápido, preparar fichero un BEEB.MMB e introducirlo como el primer archivo de la tarjeta (de igual forma que en el BBC Micro). Tambień es posible cargar programas por la entrada de audio.

Con RePag, AvPag cambiamos de modo VGA a vídeo compuesto. También hay otros modos (60Hz, etc) usando combinaciones de ctrl+CapsLock+1 al 4).

Podemos hacer Reset con F10 y ctrl+F10.

¿Cómo hago funcionar el core de Colecovision?

La tarjeta SD debe estar formateada en FAT16 (en FAT32 no funciona) y se deben copiar a ella ficheros de este archivo. En la carpeta Coleco se introducirán los juegos que queramos añadir y en el fichero MENU.TXT estarán los nombres largos de los juegos y el nombre de los ficheros .rom. Si se añade un nuevo juego habrá que modificar este fichero para que el nuevo juego aparezca en el menú de selección. El final de líneadel fichero MENU.TXT debe ser en formato DOS (0x0D + 0x0A), no el de linux (solo 0x0D).

De este core hay una versión para funcionar con 2 joysticks a la vez para el para el modelo ZX-UNO VGA 2M.

¿Cómo hago funcionar el core de Atari 2600?

Simplemente pulsa Esc para mostrar el menú

Importante: este core solo funciona por VGA

¿Cómo hago funcionar el core de Apple II?

Necesitamos lo siguiente:

  • Una imagen de disco en formato .nib, si no está en ese formato (suelen estar en .dsk o .do), puedes usar en windows la utilidad dsk2nib.exe disponible en la carpeta roms del core para convertirlo. Hay un par de imágenes preparadas en la carpeta roms, el DOS 3.3 (Apple33.nib) y el juego Spy vs. Spy (SpyVsSpy.nib)
  • Una tarjeta SD dedicada (se borra todo el contenido).
  • Una utilidad de volcado RAW de archivos a disco, como dd de GNU/Linux o HDD Raw Copy Tool de Windows, con la que volcaremos el archivo .nib a la SD.

Importante: este core solo funciona por VGA

Shift+Fx carga el disco x, por ejemplo Shift+F1 carga el primer disco.

¿Y los demás cores?

Para el resto de cores tendrás que elegir el hilo adecuado del foro de ZX-Uno

¿Hay cores de máquinas arcade?

Sí, algunas máquinas clásicas: échale un ojo a este hilo del foro sobre los cores de arcades.

PROGRAMACION DE ZX-UNO

¿Qué funcionalidades especiales tiene ZX-Uno?

ZX-Uno reune muchas funcionalidades que vienen heredadas de distintos periféricos, y en algun caso de algunas expansiones modernas o de antiguos clones. Esta es una lista de funcionalidades 'extra' que no estaban en el Spectrum de 48K original y que se encuentran en la versión EXP27, última a día de hoy (05/10/2019):

  • Modos gráficos HiRes y HiColor de Timex
  • Modo gráfico radastan, con scroll hardware y grupo de paleta seleccionable
  • ULAplus
  • Interrupción raster programable en número de línea, para cualquier linea de TV
  • Kempston mouse
  • Sonido chip AY
  • Turbo sound (segundo chip AY)
  • Configuración de sonido Stereo
  • Memoria adiciona
  • Soporte de SpecDrum
  • Soporte ZXMMC para +3e
  • Soporte DIVMMC para ESXDOS, UnoDOS, y firmwares compatibles
  • Soporte de joystick real y joystick en teclado con protocolo Kempston, Sinclair 1 y 2, Cursor y Fuller.
  • Soporte de modo turbo a 7MHz, 14MHz y 28MHz
  • Posibilidad de salida de video en modo de video compuesto, RGB 15kHz, o VGA.
  • Carga de ficheros .PZX (son .TZX simplificados) desde la SD para simular carga por audio
  • DMA para hacer transferencias de memoria a memoria, de memoria a I/O, de I/O a memoria, o incluso de I/O a I/O
  • Soporte para el addon WIFI (chip ESP8266 / ESP12E) que permite conectarse a Internet al ZX-Uno
  • Soporte para el addon MIDI (chip SAM9773) con 15 canales más percusión, polifonía de 38 voces y ROM de instrumentos interna de 4 Mbits

¿Cómo puedo detectar un ZX-Uno?

En general si se va a usar una funcionalidad de ZX-Uno, y es posible realizar una comprobación de dicha funcionalidad, se recomienda hacerlo así. Sin embargo en ocasiones no es posible, y la única manera posible es detectar el ZX-Uno en si. Para ello lo mejor es acceder al registro COREID de ZX-Uno. Para ello hay que tener en cuenta que este registro devuelve una cadena de caracteres, devolviendo un carácter cada vez que lo leemos, y un cero al final. Si el registro devuelve un cero la primera vez (cadena vacía) o si devuelve cualquier carácter fuera del rango ASCII 32 a 127, es que no es un ZX-Uno.

Este código permite determinarlo:

10 OUT 64571, 255
20 LET A$=””
30 LET A= IN 64827
40 IF (A < 32) OR (A > 127) THEN GOTO 60
50 IF (A <> 0) THEN LET A$ = A$ +CHR(A): GOTO 30
60 IF (A$=””) GOTO 80
70 PRINT “ES UN ZX-UNO”: STOP
80 PRINT “NO ES UN ZX-UNO”

¿Y como sé si el ZX-Uno está actualizado a cierta versión del core que soporta una nueva funcionalidad que necesito?

Muy sencillo, el formato del COREID es el siguiente ETIQUETA-FECHA, por ejemplo T24-03122016 o EXP25-01092017. La etiqueta no sirve de gran cosa, por ejemplo los cores originales del ZX-Uno eran T22, T23, etc. pero el último a fecha de hoy es experimental y es el EXP27, y por ejemplo el emulador ZesarUX lleva la etiqueta Z22 en lugar de T22. Sin embargo la fecha que va tras el guion está mucho más clara (formato DDMMAAAA), y solo tienes que comprobar que el usuario tiene un core con una fecha igual o posterior a la que llevaba el core que incluyó la característica que necesitas por primera vez.

¿Qué modos gráficos soporta el ZX-Uno

El ZX-Uno soporta 4 modos gráficos:

  1. El normal de ZX-Spectrum: 256x192 pixeles, con un color de paper/ink/birght/flash por cada bloque de 8x8 pixeles.
  2. El modo HiColour de Timex, con 256x192 pixeles, y un color de paper/ink/bright/flash por cada bloque de 8x1 pixeles.
  3. El modo HiRes de Timex, con 512x192 pixeles, con solo un color de paper y uno de ink para toda la pantalla.
  4. El modo Radastan, con 128x96 pixeles, linear, con 16 colores por pixel.

Además, gracias a ULAplus es posible modificar la paleta de colores y llegar a modos con hasta 64 colores simultáneos.

ZX-Uno arranca con el modo normal de ZX-Spectrum, en el que no vamos a ahondar porque es de sobre conocido, respecto a los otros modos, hay que tener en cuenta que los Timex permitían tener dos bancos de memoria de pantalla, que pueden intercambiarse. Uno de ellos estaría situado en la zona habitual (0x4000, es decir, 16384) y es llamado Screen 0, y el segundo estaría situado en 0x6000 (24576) y es llamado Screen 1. En el modo normal de ZX Spectrum es posible utilizar esta característica para cambiar rápidamente el contenido de pantalla preparando una pantalla en 0x6000 mientras se muestra la que hay en 0x4000, y luego cambiar a la de 0x6000 cuando ya está lista, o al revés, siendo el cambio instantáneo. Veremos como hacer este cambio más adelante.

El modo HiColour utiliza el área habitual de pantalla (Screen 0) para definir los pixeles activos y los no activos, es decir, desde 0x4000 (16384) en adelante, ocupando los habituales 6144 bytes. Sin embargo la zona de atributos, en lugar de estar situada justo tras la zona de datos como en el modo normal, está situada en Screen 1 (0x6000), ocupando 6144 bytes también. La colocación de los atributos es similar a la de los datos, es decir, primero los de la primera fila, luego los de la octava, etc. para el primer tercio de pantalla, luego el segundo tercio, etc.

El modo HiRes utiliza ambas zonas, Screen 0 y Screen 1. Cada zona guarda datos de píxeles igual que el Spectrum original. En cada linea de 512 píxeles, cada trozo de 8 píxeles corresponde alternativamente a Screen 0 y Screen 1. Es decir, los primeros 8 píxeles de una cierta línea están en Screen 0, en la posición de memoria que le correspondería según el esquema habitual del Spectrum. Los siguientes 8 píxeles estarían en la Screen 1, en la posición de memoria equivalente, y así sucesivamente. No hay atributos. Los bits 3 a 5 del puerto $FF definen el color de tinta. El color de borde y paper se establece automáticamente como 7-tinta. El brillo está siempre activado tanto en borde como en paper. No es posible cambiar el color del borde para que sea distinto de paper. El puerto $FE por tanto no funcionará para este cometido.

Una forma de ver este modo es con el siguiente programa:

10 OUT 255,6
20 FOR n=0 TO 6143
30 POKE 16384+n,255:POKE 24576+n,0
40 NEXT n

En cada linea, cada dos columnas de 8 píxeles valen 11111111 y 00000000.

El modo radastan, es un modo linear en el que se utiliza el Screen 0, siendo cada byte utilizado para describir el color de dos pixeles. Por ejemplo si un byte es así (en binario)

[AAAABBBB]

quiere decir que el pixel de más a la izquierda tiene el colore AAAA y el de más a la derecha el color BBBB. La pantalla ocupa por tanto 128x96/2 = 6144 bytes una vez más.

¿Cómo se activan los modos HiRes y HiColor de Timex?

Los modos Timex se manejan ambos a través del puerto 0xFF (255), lo que se escriba en este puerto mediante un OUT 255,X maneja esta información:

Bits 0-2: Modo: 000=modo clásico en screen 0, 001= modo clásico en screen 1,
010 = modo HiColour, 110=Modo HiRes, otros valores no son válidos

Bits 3-5: Solo para el modo HiRes, define el color de PAPER e INK
000 – Negro sobre blanco 100 – Verde sobre magenta
001 – Azul sobre amarillo 101 - Cyan on Red
010 – Rojo sobre Cyan 110 – Amarillo sobre azul
011 – Magenta sobre verde 111 – Blanco sobre negro

Bit 6: Si se pone a 1 deshabilita la generación de la interrupción de timer

Bit 7: Selecciona que banco debe usar el MMU horizontal 0=DOCK, 1=EX-ROM.

Con estos datos en la mano, las acciones necesarias para activar el modo HiColour es hacer un OUT 255, 2, y para el modo HiRes un OUT 255, 6, si bien eso hará que se active con la combinación de negro sobre blanco.

Respecto a los dos bits superiores, por lo que respecta a este manual no vamos a entrar en detalles, pero salvo que tengáis claro lo que hacen, dejadlos a 0.

Existe un método alternativo de activar los modos Timex gracias a ULAPlus, lo podéis ver detallado, junto con otras funcionalidades de ULAplus que indicaremos más adelante,aquí:

Wiki de ULAPlus

Desde la BIOS 0.55 es posible deshabilitar los modos extra desde la propia BIOS. Esto se hizo porque los modos Timex provocan incompatibilidad con algunos juegos que los activan por error. Esto es una desventaja para juegos que utilicen estos modos, porque impide activarlos. Para evitar esto, hacer un OUT 64571,15: OUT 64827,0 reactiva la posibilidad de activar esos modos.

¿Cómo se activa el modo Radastan?

El modo radastan es un modo (por ahora) exclusivo de ZX-Uno. Es un modo de baja resolución que a cambio da la posibilidad nunca vista en el Spectrum de tener un color por pixel, evitando así el attribute clash. Para activar el modo radastan es necesario utilizar el registro RADASCTRL (0x40, o 64 en decimal) de ZX-Uno, para lo cual básicamente esta es la secuencia para activarlo, que es la misma para escribir en cualquier registro de ZX-Uno:

OUT 64571,64
OUT 64827,3

Para desactivarlo, el segundo OUT deberá asignar el valor 0.

Notas:

  • En los primeros cores de Spectrum de Zx-Uno se utilizaba otro método utilizando los registros de ULAplus. Ese método ha quedado anulado y ya no funciona, actualiza tu core si es el caso.
  • El modo Radastan utiliza los 16 primeros colores de la paleta de ULAPlus, y dicha paleta por defecto está puesta a cero, lo cual quiere decir que salvo que cambiemos la paleta (ver detalles más adelante en esta FAQ) los 16 colores son negro, así que no apreciaremos cambios.
  • Desde la BIOS 0.55 es posible deshabilitar los modos extra desde la propia BIOS. Esto se hizo porque los modos Timex provocan incompatibilidad con algunos juegos que los activan por error. Esto es una desventaja para juegos que utilicen estos modos, porque impide activarlos. Para evitar esto, hacer un OUT 64571,15: OUT 64827,0 reactiva la posibilidad de activar esos modos.

Existe una librería creada para Z88DK que permite manejar el modo Radastan sin problemas, podéis encontrar la última versión disponible a día de hoy en este enlace del foro sobre Z88DK y el modo Radastan. Además, hay una libraría para modo Radastaniano para ZX Basic.

¿Y el scroll hardware del modo Radastan?

El modo Radastan soporta también scroll hardware a partir del core EXP25, lo cual quiere decir que la pantalla mapeada en memoria puede ser más grande que la pantalla real, y que solo se vea una parte de dicha pantalla mayor en la real.

Para controlar el scroll hardware hay dos registros del ZX-Uno llamados RADASOFFSET Y RADASPADDING. En RADASOFFSET se mete un valor de 16 bits para indicar en qué offset a partir de la dirección de video ($4000 en principio, aunque podria ser la shadow en C000 si lo hemos cambiado). Por ejemplo modificándolo de 64 en 64 bytes se puede hacer scroll vertical directamente.

RADASPADDING indica cuantos bytes ocupa una linea en modo Radastaniano, por defecto son 64 bytes, que es el mínimo, y en ese caso el valor del registro es 0. Si ponemos por ejemplo 65 (o sea, metemos un 1 en el registro), solo se pintarán en pantalla 64 de cada 65 bytes, quedando el otro "oculto" por la derecha. Eso permite usar RADASOFFSET para mover y hacer scroll de derecha a izquierda de 1 byte en 1 byte (o sea, de dos en dos pixeles).

Hay que tener en cuenta que RADASOFFSET se circunscribe a una página de 16k, es decir, si hacemos que Radaoffset haga leer más allá de 16384 bytes del inicio de la página, en realidad volverá a leer del principio de la página (es circular).

El registro RADASOFFSET es el 65, por lo que para escribir en él se escribe primero el byte menos significativo del valor de 16 bits, y luego el más significativo:

OUT 64571,65
OUT 64827,LSB
OUT 64827,MSB

El registro RADASPADDING es el 66, y se escribe así:

OUT 64571,66
OUT 64827, valor

¿Cómo se cambia de página usando los modos Timex?

Es posible conmutar entre las zonas de video Screen 1 y Screen 0, para lo cual simplemente hay que seleccionar el modo 0 o 1 cuando se actua sobre el puerto 255, es decir, OUT 255,0 para seleccionar Screen 0 en 0x4000, y OUT 255,1 para seleccionar Screen 1 en 0x6000. De esa manera se pueden intercambiar rápidamente dos pantallas previamente definidas.

Al ser los modos Timex y el modo Radastan totalmente independientes, también se puede utilizar para intercambiar dos pantallas en modo Radastan, situadas en las dos áreas de memoria correspondientes.

Yendo más allá, este sistema de paginación combinado con el bit 3 del puerto 0x7FFD (si está habilitada la paginación de 128K) permite tener un total de 4 pantallas en 4000h, 6000h, C000h y E000h

¿Cómo se cambia la paleta de color con ULAPlus?

Usando ULAplus podemos usar una paleta de 64 colores, para lo cual debemos cambiar primero a modo 64 colores así:

OUT 48955, 64
OUT 65339, 1

Luego podemos modificar la entrada n (0-63) de la paleta asignándole el color x así:

OUT 48955, n
OUT 65339, x

X es una representación RGB del color en 8 bits: GGGRRRBB. Es decir, se usan 3 bits para el verde, 3 para el rojo y 2 para el azul (esto es así porque el ojo humano diferencia peor los azules)

Los 64 colores de la paleta se presentan en 4 grupos de 16 colores, 8 para INK y 8 para paper (permite así tener colores diferentes de tinta y papel). A la hora de elegir el color a pintar en un bloque de 8x8 el color elegido depende de los valores de flash/bright/ink/paper de la siguiente manera:

Spectrumcolor01234567
Flash off
Bright off
Ink01234567
Paper89101112131415
Flash off
Bright on
Ink1617181920212223
Paper2425262728293031
Flash on
Bright off
Ink3233343536373839
Paper4041424344454647
Flash on
Bright on
Ink4849505152535455
Paper5657585960616263

Aunque en teoría esto permitiría tener 64 colores en pantalla, la realidad es que solo puede conseguirse si se pintan barras, porque es imposible utilizar el color de tinta de uno de los cuatro bloques con el color de papel de otro bloque diferente.

Podemos redefinir la paleta en todos los modos mencionados anteriormente, es decir, en el estándar de Spectrum, en los dos modos Timex, y en el modo radastan.

En este último caso caso se usarán los 16 primeros colores de la paleta para los 16 colores que puede mostrar dicho modo. En el momento de escribir estas líneas hay planes para que el color de borde del modo radastan utilice un color aparte de la paleta, de modo que sea independiente de esos 16 colores, pero ese cambio aún no se ha concretado.

¿Cómo funciona la interrupción raster?

El ZX Spectrum produce una interrupción no enmascarable que se produce con una frecuencia de 50Hz y va sincronizada con el retrazado vertical de la pantalla. Esto se ha utilizado tradicionalmente para realizar distintos efectos gráficos.

Por su parte ZX-Uno permite activar lo que se denomina la interrupción raster, que se produce cuando el repintado de pantalla empieza a pintar el borde derecho de la línea que le indiquemos.

Para utilizar esta interrupción tenemos utilizar los registros $0c y $0D del Zx-Uno (RASTERLINE y RASTERCTRL). El valor de RASTERLINE indicará la línea de pantalla donde se produce la interrupción, siendo esta línea relativa a la línea de la pantalla donde empieza la zona de paper. Por ejemplo si RASTERLINE vale 0, se lanzará cuanto se empiece a pintar el borde de la línea inmediatamente encima de la primera línea de paper, y 192 al comienzo del borde inferior, debajo del paper.

Por su parte RASTERCTRL queda definido así:

INT0000DISVINTENARINTLINE8

INT: este bit sólo está disponible en lectura. Vale 1 durante 32 ciclos de reloj a partir del momento en que se dispara la interrupción ráster. Este bit está disponible aunque el procesador tenga las interrupciones deshabilitadas. No está disponible si el bit ENARINT vale 0. DISVINT: a 1 para deshabilitar las interrupciones enmascarables por retrazo vertical (las originales de la ULA). Tras un reset, este bit vale 0. ENARINT: a 1 para habilitar las interrupciones enmascarables por línea ráster. Tras un reset, este bit vale 0. LINE8: guarda el bit 8 del valor de RASTERLINE, para poder definir cualquier valor entre 0 y 511, aunque en la práctica, el mayor valor está limitado por el número de líneas generadas por la ULA (311 en modo 48K, 310 en modo 128K, 319 en modo Pentagon). Si se establece un número de línea superior al límite, la interrupción ráster no se producirá.

Como veis, para activar la interrupción raster es necesario activarla expresamente con ENARIT, pero además lo normal será desactivar la interrupción clásica del retrazado vertical, salvo que queramos hacer algún efecto que necesite ambas y podamos controlarlo.

La interrupción raster puede ser utilizada para hacer combinaciones de colores muy avanzadas, usando ULAplus y los modos avanzados de video de ZX-Uno, porque aunque en teoría hay una paleta de 64 colores con ULAPlus, nada impide cambiar los colores de esa paleta a partir de cierta línea de pantalla, de modo que sean colores nuevos, y llevando así a imágenes con más de 64 colores. Incluso es posible cambiar el modo de video a mitad de pintado de pantalla, con lo que sería posible, si el sistema está bien hecho,tener una parte superior con modo Timex HiColor por ejemplo para una imagen, y una parte inferior con modo Timex HiRes para pintar el texto en una aventura conversacional.

¿Se pueden usar distintos bancos de paleta en modo radastan?

Sí. Para ello se puede usar, desde el core EXP25, el registro RADASPALBANK, el numero 0x43 (67). Se usan los bits 2,1 y 0.

La paleta de ULAPlus tiene 64 colores y a priori en el modo radastan podemos usar los 16 primeros, con los bits 1 y 0 indicamos cual de los cuatro bancos de 16 colores de entre los 64 totales se usará, si los 16 primeros (si valen 00), los 16 siguientes si vale 01, los 16 terceros si vale (10) o los 16 últimos si vale (00). Por defecto es 00 y por eso se usan los 16 primeros.

El bit 2 indica que mitad de la paleta del modo radastan se usará para fijar el color de borde, indicando un 0 que se usa las primeras 8 entradas del bloque de 16 seleccionado, y un 1 las últimas 8. Así un BORDER 7 usará el color 7 de la paleta si el bit es 0, y el color 15 si el bit 2 vale 1, pero si hemos cambiado a otro banco de 16 colores, en lugar del 7 o el 15 un BORDER 7 usará el color 7 del bloque actual, o el color 15 del bloque actual. Por ejemplo, si los tres bits valen 1 (111) un BORDER 7 usará la entrada 63 de la paleta.

Notese que utilizando la interrupción raster y este registro al tiempo, es posible conseguir hasta 64 colores en pantalla (cambiando de bloque de paleta cada vez que llega la interrupción)

¿Cómo activo los modos turbo?

El Zx-Uno es capaz de hacer funcionar la CPU a 7Mhz o 14Mhz (además de con los 3.5Mhz estándar de un Spectrum). Para activar dichas velocidades es necesario modificar el registro SCANDBLCTRL (0x0B) de Zx-Uno.

Si simplemente queréis probarlo podéis hacerlo desde la BIOS, o bien usar ZXUC una vez arrancado el ZX-Uno. Es posible que en la BIOS y según la versión que tengáis os encontréis un modo x8 (28Mhz), tened en cuenta que es un modo experimental que probablemente no funcione bien en un ZX-Uno real.

Si lo que queréis es modificar la velocidad en vuestros programas, tened en cuenta que el registro 0X0B tiene este formato a nivel de bit (bit 7 a la izquierda):

TURBO0FREQENSCANVGA

Donde TURBO es 00 para seleccionar 3.5 MHz, 01 para seleccionar 7 MHz, y 1x para seleccionar 14 MHz.

En principio podría parecer que ponerlo todo a 0 pone el modo normal, a 64 el modo de 7Mhz y a 128 el modo de 14Mhz:

OUT 64571,11      (0X0B)
OUT 64827,128

Sin embargo es necesario tener en cuenta que el bit más bajo (ENSCAN) es el que controla si la salida es por VGA o PAL, por lo que no es conveniente ponerlo a 0 si está a 1 (podríamos dejar a nuestro usuario sin ver la pantalla). Por tanto lo correcto es leer el valor de dicho registro:

OUT 64571,11   (0X0B)
LET VAL = IN 64827,128

Quitar los dos bits superiores, que como en Basic Sinclair no existe el AND bitwise se puede hacer así:

IF (VAL>=128) THEN LET VAL=VAL-128
IF (VAL>=64) THEN LET VAL=VAL-64

Y después sumarle 0 para modo normal, 64 para modo 7Mhz o 128 para 14Mhz:

LET VAL=VAL+64
OUT 54571,11
OUT 64827,VAL

¿Cómo maneja ZX-Uno el ratón?

El ZX-Uno implementa la interfaz Kempston Mouse a través del puerto PS/2, al que podemos conectar un ratón PS/2 usando un splitter (para poder conectar el teclado también).

Básicamente, la lectura del ratón se realiza mediante acceso a varios puertos:

PuertoHexValor
64479FBDFPosición horizontal (Eje-X)
65503FFDFPosición vertical (Eje-Y)
64223FADFEstado de botones (bitwise)

Así PRINT IN 64479 nos devuelve la posición en el eje X.

El contenido del puerto 64223 se puede leer el siguiente modo, bit a bit:

BitContenido
0A cero si el botón derecho está pulsado
1A cero si el botón izquierdo está pulsado
2A cero si el botón central está pulsado
3A cero si el cuarto botón está pulsado
4 a 7Devuelven la posición de la rueda del ratón, por defecto valen 1111

Nota: hay que tener en cuenta que no existe ningún tipo de driver que de soporte al ratón, lo cual se manifiesta principalmente en el hecho de que no hay ningún puntero de ratón, salvo que lo pintemos nosotros mismos.

Aparte de poder leer el ratón como un dispositivo Kempston Mouse, en ZX-Uno también podemos leer directamente los datos PS/2 recibidos, para lo cual debemos usar los registros MOUSEDATA (0x09) y MOUSESTATUS (0x10) de ZX-Uno. La lectura (o escritura) de estos registros y su significado se escapa del alcance de este manual, pero no queríamos dejar de constatar el hecho por si pudiera ser útil. Más información al respecto de esto en la descripción de registros del Zx-Uno.

¿Cómo programar el sonido por el chip AY del ZX-Uno?

El chip AY, disponible en los modelos de 128k de ZX Spectrum, está también disponible en ZX-Uno aun para los modelos de 48K. Por supuesto si arrancamos con una ROM de 128K podemos usar el comando PLAY del BASIC, pero para usos más avanzados será necesario conocer lo siguiente.

El chip AY tiene varios registros programables:

RegistroFunciónRango
0Canal A fine pitch8-bit (0-255)
1Canal A course pitch4-bit (0-15)
2Canal B fine pitch8-bit (0-255)
3Canal B course pitch4-bit (0-15)
4Canal C fine pitch8-bit (0-255)
5Canal C course pitch4-bit (0-15)
6Noise pitch5-bit (0-31)
7Mixer8-bit (ver abajo)
8Canal A volumen4-bit (0-15, ver abajo)
9Canal B volumen4-bit (0-15, ver abajo)
10Canal C volumen4-bit (0-15, ver abajo)
11Envolvente fine duración8-bit (0-255)
12Envolvente course duración8-bit (0-255)
13Forma de la envolvente4-bit (0-15)
14I/O port A8-bit (0-255)
15I/O port B8-bit (0-255)

Para modificar un registro del chip AY debe escribirse en el puerto de control 65533 el número del registro a modificar, y seguidamente en el puerto de datos 49149 el valor. Para leer el valor (raro pero posible) se debe escribir en el puerto de control 65533 el número del registro, y después leer el dato del mismo puerto de control (no del de datos).

Por ejemplo esté código pone un 255 en el registro 7:

OUT 65533,7
OUT 49149,255

El registro “mixer” tiene los siguientes campos, permitiendo activar o desactivar los canales:

76543210
E/SE/SNoise CNoise BNoise ATone CTone BTone A

Las salidas E/S por ahora no hacen nada en el ZX-Uno, aunque es posible que en el futuro sean aprovechadas para algo.

Valores de pitch

Para determinar la frecuencia de la onda que suene por cada canal - o dicho de otro modo la nota que queremos que suene - se utilizan los valores de pitch. Cada nota musical tiene una frecuencia específica asignada, y cualquier valor fuera de ella son notas desafinadas. Podemos ver en la siguiente tabla los valores de frecuencia para una escala completa en una octava media.

NotaFrecuencia (Hz)NotaFrecuencia (Hz)
La220Re#311.1
La #233.3Mi329.63
Si246.94Fa349.23
Do (medio)261.63Fa#370
Do#277.2Sol392
Re293.66Sol#415.3

Ahora bien, el chip AY no nos deja indicar directamente la frecuencia que queremos que suene en un canal, sino que lo tenemos que hacer mediante el pitch. El pitch es un valor entre 1 y 4095, y la frecuencia que suene por un canal es la resultado de dividir 110,83Khz entre el pitch. Es decir, podemos obtener un valor entre aproximadamente 27Hz (con pitch 4095) y 110.83Khz (con pitch 1).

El pitch se selecciona para cada canal con dos registros, el llamado course, que guarda los 4 bits más significativos (0-15) y el llamado fine, que guarda los 8 bits menos significativos (0-255).

Ejemplo de un sonido sencillo en BASIC:

OUT 65533,0 :REM Fine Pitch canal A=43
OUT 49149,43
OUT 65533,1 : REM Course Pitch canal A=1
OUT 49149,1
OUT 65533,8 : REM Volumen canal A a = 12
OUT 49149,12
OUT 65533,7 : REM registro MIXER, activo canal A
OUT 49149,1

En definitiva, con un course pitch de 1 y un fine pitch de 43, el valor de Pitch es 299, y 110,83Khz dividido de 299 son 370hz, es decir, un Fa sostenido, que sonará a un volumen de 12 (de un máximo de 15) por el canal A porque el mixer tiene activo ese canal.

Hay que tener en cuenta que por las limitaciones técnicas que este cálculo impone, es más difícil afinar bien las frecuencias para que cuadren con las notas oficiales occidentales cuanto más baja sea la frecuencia.

Volumen

Los registros de volumen (8,9 y 10) contienen un valor de 4 bits con el volumen de cada canal, pero si el bit 5 está a uno entonces la onda envolvente indicada en el registro 13 es aplicada, y el valor de volumen es ignorado.

Envolventes

El chip AY soporta las siguientes envolventes o formas de onda, que se establecen mediante el registro 13. Notese que estas envolventes afectan a la amplitud de la onda (volumen) pero no a la frecuencia (pitch o tono).

La onda viene dada por una combinación de los siguientes cuatro bits en dicho registro:

BitComando
3Continue
2Attack
1Alternate
0Hold

Dependiendo de los bit seleccionado encontraremos unas ondas diferentes.

La frecuencia de la onda envolvente dependerá de los valores en los registros 11 y 12, que permiten marcar un valor entre 1 y 65535 (siendo el registro course el que guarda el byte más significativo, y el fine el menos significativo). Dicho valor dividirá a una frecuencia de 6,91Khz, de modo que si el periodo es 1, la onda envolvente tendrá una frecuencia de 6,91Khz, y si es valor es 65535 será de 0,11Hz.

Se puede encontrar una descripción más detallada de las envolventes, y del chip AY en general, en las especificaciones del chip AY.

¿Cómo programo el Turbo Sound en ZX-Uno?

ZX-Uno soporta Turbo Sound, que básicamente es un segundo chip AY que puede reproducir música a la vez que el primero. Para ello basta con seleccionar a que chip queremos acceder, mediante un OUT 65533,255 para acceder al primero, y un OUT 65533,254. Una vez seleccionado el chip en cuestión, la escritura en registros AY afecta solamente a ese chip.

¿Cómo se programa el SpecDrum?

Debido a la complejidad del interfaz, sugerimos acceder a la información del propio Cheetah SpecDrum.

¿Cómo controlo la configuración mono/stereo?

A través del puerto 0xF7 (247) es posible controlar por que altavoces se reproducen los distintos canales del Spectrum, así como por que altavoces suena el beeper original del Spectrum, y el interfaz SpecDrum. El valor enviado o leído de ese puerto es un byte cuyos bits se interpretan así:

bitsControl
0-1SpecDrum y beeper
2-3Canal C
4-5Canal B
6-7Canal A
Así, cada canal del chip AY, y el beeper y SpecDrum podrán tener un valor de dos bits que indique por donde deben sonar:
ValorAltavoz
00Ninguno
01Derecho
10Izquierdo
11Ambos (mono)

El valor por defecto de este puerto es 10011111b, que viene a querer decir que el el canal A suena por el altavoz izquierdo, el canal B por el derecho, el canal C por ambos y tanto beeper como SpecDrum por ambos también. Esto viene a ser lo que se denomina configuración ACB.

Como puedo acceder a la tarjeta SD?

La información sobre como acceder al disco con ESXDOS no es pública, sin embargo son conocidas algunas funciones de manera extraoficial. Estos datos no son oficiales y son válidos para ESXDOS 0.8.6 pero podría no funcionar en futuras versiones si las hubiera, usadlo a vuestro propio riesgo.

Lo primero que debéis saber, es que todas las llamadas a ESXDOS son a través de la instrucción RST 8, y que justo detrás de esa instrucción debe venir el código de la función concreta solicitada (leer, escribir, etc.). Además según el caso determinados registros de la CPU deben llevar asignados distintos valores.

Detectar si la unidad de disco está lista (Ready)

M_GETSETDRV   equ   $89
XOR a
RST $08
DB M_GETSETDRV

El carry flag se activa si hubo error.

Abrir un archivo

F_OPEN   equ   $9a
XOR a
LD B, FA_READ ; b = modo de apertura
LD IX, FileName ; ix = Puntero al nombre del fichero (ASCIIZ)
RST $08
DB F_OPEN ; abrir archivo en modo lectura

Devuelve en el registro A el handler para manejar el fichero.

Activa el carry flag si el fichero no se puedo abrir.

Otros modos de abrir fichero:

FA_READ   equ   $01
FA_APPEND equ $06
FA_OVERWRITE equ $0C

Leer desde un archivo

F_READ   equ   $9d
LD IX, 16384 ; ix=dirección donde almacenar lo leido
LD BC, 6912 ; bc=bytes a leer
LD A, handler; A = el handler del fichero abierto anteriormente en F_OPEN
RST $08
DB F_READ ; Leer archivo

El carry flag se activa si hubo un problema al leer.

Escribir a archivo

F_WRITE   equ   $9e
LD IX, 16384 ; ix=dirección de memoria que se va a copiar en disco
LD BC, 6912 ; bc=bytes a escribir
LD A, handler; A = el handler del fichero abierto anteriormente en F_OPEN
RST $08
DB F_WRITE ; Escribir archivo

El carry flag se activa si hubo un problema al escribir.

Cerrar archivo

F_CLOSE   equ   $9b
LD A, handler ; A =handler del fichero a cerrar
RST $08
DB F_CLOSE

El carry flag se activa si hubo un problema al cerrar el fichero.

Notas

  • Para los path de los archivos cuando hay directorios por medio se utiliza el carácter ‘/’ como en UNIX.

¿Como puedo usar memoria adicional?

Hay tres maneras de acceder a más memoria en ZX-Uno:

  • Memoria del DivMMC
  • Paginación horizontal Timex MMU
  • Acceso directo a la memoria de ZX-Uno vía registro MASTERMAPPER

El ZX-Uno implementa un DivMMC con 128K RAM, así que es posible usar esa RAM extra para tus desarrollos. Este es un enlace a la página de documentación de Velesoft's acerca de la memoria en el DivIDE, compatible con el mapa de memoria de DivMMC.

Las maquinas Timex emuladas por el ZX-Uno tienen una funcionalida de paginacion horizontal.

El mapa de memoria de estos equipos es:
         EX-ROM      HOME       DOCK
0xffff +----------+----------+----------+
| Bank 7' | 32K RAM | Bank 7 |
| | | |
0xe000 +----------+ +----------+
| Bank 6' | | Bank 6 |
| | | |
0xc000 +----------+ +----------+
| Bank 5' | | Bank 5 |
| | | |
0xa000 +----------+ +----------+
| Bank 4' | | Bank 4 |
| | | |
0x8000 +----------+----------+----------+
| Bank 3' | Screen 1 | Bank 3 |
| | | |
0x6000 +----------+----------+----------+
| Bank 2' | Screen 0 | Bank 2 |
| | | |
0x4000 +----------+----------+----------+
| Bank 1' | 16K ROM | Bank 1 |
| | | |
0x2000 +----------+ +----------+
| Bank 0' | | Bank 0 |
| | | |
0x0000 +----------+----------+----------+

La memoria es paginada en bancos de 8K banks bien de DOCK or EX-ROM, pero estos bancos son mutuamente exclusivos, no puedes paginar un banco de cada a la vez. El bit 7 del puerto 0xff determina que banco usamos (0=DOCK, 1=EX-ROM). El puerto 0xf4 determina que bancos son paginados con cada bit refiriendose al banco en cuestión (0-7 o 0'-7'). Cuando la memoria va a ser paginada, se deben deshabilitar las interrupciones y el stack (SP) debe estar en un área que no vaya a paginarse.

El banco HOME es la zona normal de memoria del Spectrum, los 32K superiores son memoria sin contienda pero los 16K inferiores son con contienda. Los bancos se paginan sobre estos, pero paginar la zona de pantalla no hace que la ULA acceda a esa RAM.

Leer estos puertos devuelve el último byte enviado a ellos.

Usar la RAM del 128K + 128K RAM del DivMMC + 128K RAM del Timex permite usar hasta 384K RAM. Si necesitas más debes acceder a la memoria del ZX-Uno en modo RAW:

Esto es posible usando el registro MASTERMAPPER (0x01). Cuando se escribe en dicho registro, el banco de 16K seleccionado (0 a 31 en el ZX-Uno original de 512K) se mapeará en 0xC000-0xFFFF. De esa manera se puede acceder a toda la memoria. Tristemente, este acceso raw solo e sposible usando una ROM rooted, en este momento, dado que bit LOCK del registro MASTERCONF (0x00) deshabilita tanto la escritura en SPI flash como el acceso directo a memoria. Esto es así porque acceder directamente a la RAM es un poco peligroso:

  • Algunos de los bancos de la RAM se usan para almacenar ROMS (System ROMs y ESXDOS ROMS). Mapear esos bancos en 0xC000 y modificarlos es modificar las ROMs, y no volverán a su estado original hasta que se haga un hard reset. Aunque se puede hacer a propósito, en general es una cosa arriesgada.
  • Además, la RAM es usada por los dot command de ESXDOS, y pueden ser corrompidos si no se tiene cuidado

Por otro lado, si una vez tu programa inicia no necesita ni la ROM de Spectrum ni la de ESXDOS, se pueden usar esos dos slots sin problema, siempre que nos aseguremos que el banco de la ROM contiene al principio (direccion 0000) una rutina simple que escriba en pantalla que debe reiniciarse con hard reset para restaurar la ROM original.

UNBRICK DE ZX-UNO

Algo ha pasado y mi ZX-Uno no arranca. Unbrick fácil.

Si tu ZX-Uno no arranca pero se enciende los leds es posible que en un upgrade o por alguna otra razón se te haya brickeado.

Hay varios pasos a seguir si así es:

Arranca el ZX-Uno con un joystick conectado y manteniendo la palanca hacia arriba y el botón de disparo pulsado. Si te sale algo parecido a una carta de ajuste estás de enhorabuena. En esas condiciones el ZX-Uno está esperando a que le cargues la BIOS por la entrada EAR, por lo que necesitarás un .tap con la última versión de la BIOS (pregunta en el foro dónde está ese último tap) y algo para reproducir .tap (tu móvil con alguna app, o un PC normalmente). También necesitarás el firmware en versión ZX1, es decir, el fichero FIRMWARE.ZX1, que debes poner en el raiz de la SD. Si no sabes donde encontrar el último FIRMWARE.ZX1, pregunta en el foro.

Simplemente arranca como se ha dicho y dale al play. Estate atento mientras carga para nada más terminar empezar a pulsar F2 rápidamente para entrar a la BIOS. Si se te pasa, tendrás que volver a empezar. Una vez dentro de la BIOS, elige la opción "Upgrade BIOS from SD del menú upgrade para restaurar la BIOS, y a partir de ahí ya puedes arrancar normal, y entrar en la BIOS para instalar el core de Spectrum y los demás, o bien restaurar todo con un fichero FLASH.ZX1.

Si no ha funcionado pasamos a restauración por cable, que es más complicado. La opción original en este caso es usar el cable de Xilinx, que es el oficial, pero hay otros métodos usando un cable clónico de Altera bastante má barato, o una Raspberry Pi.

¿Cómo puedo hacer unbrick con una Raspberry Pi?

Si disponemos de una Raspberry Pi, podemos ahorrarnos el cable Altera, y reprogramar nuestro ZX-Uno directamente desde la Raspberry. Para ello debemos hacer lo siguiente:

Bajamos el archivo del apartado anterior para extraer el fichero recovery.bit y lo grabamos en la tarjeta SD de la Raspberry Pi, que tiene que ser una A+, B+ o posterior. Podéis colocarlo por ejemplo en la carpeta /boot de la tarjeta, que es accesible desde Windows porque está en FAT, o podéis hacerlo directamente desde la Raspberry.

En nuestra Raspberry, y asumiendo que usamos Raspbian, hacemos lo siguiente:

sudo apt-get install autoconf
sudo apt-get install autopoint
sudo apt-get install libtool
sudo apt-get install libreadline-dev
sudo rm -rf /var/lib/apt/lists/*
sudo apt-get update
sudo apt-get install python-dev
sudo apt-get install git

Ahora nos bajamos el urjtag del repositorio git:

git clone git://git.code.sf.net/p/urjtag/git urjtag-git
cd urjtag-git/urjtag

Editamos el fichero src/cmd/cmd_bfin.c con nuestro editor favorito:

nano src/cmd/cmd_bfin.c

Y ponemos los siquiente en la primera línea:

#define _SYS_UCONTEXT_H

Y ahora compilamos con las siguientes órdenes:

./autogen.sh
make
sudo make install

Una vez compilador, arrancamos ldconfig y jtag:

sudo ldconfig
sudo jtag

Y desde dentro de jtag, como en el caso anterior, cargamos el recovery.bit

pld load /boot/recovery.bit

Ahora enchufamos el ZX-Uno y le metemos una SD con el fichero FLASH.ZX1 en el raiz.

Conectamos el cable JTAG a la Raspberry Pi siguiendo el siguiente esquema que podemos ver más abajo.

Una vez esté todo conectado escribe las siguientes órdenes:

cable gpio tdi=13 tdo=19 tck=26 tms=6
detect

Si todo va bien, el detect mostrará un mensaje en pantalla con el modelo de FPGA, y escribimos el siguiente comando (si pusimos el recovery.bit en la carpeta /boot)

pld load /boot/recovery.bit

Esperamos un rato hasta ver el menú upgrade de la BIOS y con el teclado PS/2 conectado al ZX-Uno pulsamos intro para que se flashee el fichero FLASH.ZX1 en el ZX-Uno.

El cable para flashear lleva la siguiente conectividad:

Zx-UnoRaspberry pi
JTAGPinGPIOPin
TMS6GPIO631
TDI5GPIO1333
TDO4GPIO1935
TCK3GPIO2637
GND2GND39
3.3V1N/CN/C

Nótese que el cable de 3.3v del ZX-Uno no se conecta de ninguna manera a la Raspberry Pi.

Si tienes una Raspberry PI de las primeras puedes a priori usar otros puertos GPIO, siempre  que cambias acordemente esta orden:

cable gpio tdi=13 tdo=19 tck=26 tms=6
detect

¿Cómo puedo hacer unbrick con el cable Altera?

Por apenas 3,50€ se puede comprar este cable en Aliexpress. Tardará entre 1 y 2 meses en llegar eso sí.

Además necesitaremos un conector microJST para la conexión JTAG del ZX-Uno, un conector para el conector de 10 pines del cable, y unos hilos de cobre para hacer el cable adaptador.

Este sería el esquema de como conectar los cables en el conector de 10 pines del cable grabador.

PinSeñal
1TCK
2GND
3TDO
43.3V
5TMS
6N/C
7N/C
8N/C
9TDI
10GND

Nota importante: si miras de frente el conector del blaster, colocando la muesca que tiene a la izquierda, y viéndose por tanto dos columnas de pines, los dos de arriba serán 1 y 2, los dos siguientes 3 y 4, etc. El pin 5 queda por tanto junto a la muesca.

Y este es el pinout del conector JTAG:

PinSeñal
13.3V
2GND
3TCK
4TDO
5TDI
6TMS

Se recomienda utilizar cables cortos para hacer las conexiones, se ha observado que cuanto más largos más posibilidad de que no funcione.

Una vez hecho el cable necesitamos el software urjtag y los drivers para Windows, junto con el fichero para recuperar el arranque. Lo más fácil es bajarse este archivo desde el foro de Zx-Uno:

http://www.zxuno.com/forum/download/file.php?id=505

Conectamos el cable JTAG al ZX-Uno y al USB Blaster. Alimentamos el ZX-Uno y conectamos el USB Blaster al PC. Descomprimimos el fichero descargado y lo primero es instalar los drivers: nos vamos al Administrador de dispositivos y lo buscamos, luego le damos a añadir ficheros manualmente y apuntamos a la carpeta drivers que acabamos de descomprimir. Si todo ha ido bien debemos ver el dispositivo "Altera USB-Blaster" en el Administrador de dispositivos.

Ahora, desde la línea de comandos (símbolo del sistema) nos vamos a la carpeta donde está el jtag y escribimos

jtag

Una vez dentro del programa tecleamos:

cable usbblaster
detect

Si todo va bien, el detect mostrará un mensaje en pantalla con el modelo de FPGA.

Luego escribimos el siguiente comando:

pld load recovery.bit

En la pantalla debe aparecer el menú de la BIOS (puede tardar hasta un minuto en aparecer. paciencia). Metes una SD con el FLASH.ZX1 en la raíz y pulsas Intro y aceptar para que se flashee el contenido del fichero FLASH.ZX1. Si no sabes donde obtener la última versión del FLASH.ZX1 pregunta en el foro.

¿Cómo puedo hacer unbrick con el cable Xilinx?

Obviamente la última opción es grabar el bitstream con el propio cable de Xilinx, el oficial para ZX-Uno. No vamos a dar detalles sobre esta solución.

ENLACES ÚTILES

Dado que ZX-Uno está en continua evolución, a veces no es fácil saber dónde está la última versión de tal o cual cosa, y es por eso que en esta FAQ no se añaden enlaces a algunos ficheros y se dice en su lugar "tienes que hacer esto pero por el último fichero pregunta en el foro".

Sin embargo, hay algunos sitios donde podéis buscar, que a priori tienen ciertas garantías de contener ciertos ficheros necesarios para algunas opciones, sobre todo para upgrades, instalación de COREs y cambio de ROMs. Aun así sigo recomendando que para cosas delicadas como upgrades preguntéis en el foro, no sea que instaleis lo que no se debe.

Además hay otros enlaces interesantes en sí mismos.