ZX-Uno FAQ (versión desUBIKado)

Sobre estas FAQ

Estas FAQ son mantenidas por @desUBIKado, y nacen como un «fork» de las FAQ en español creadas por @uto_dev. Puedes seguir accediendo a sus FAQ del ZX-Uno, tanto en español como en inglés, desde este enlace.

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). Tras terminar su ejecución hay que ejecutar el comando .ls para que se termine de grabar la cache en la tarjeta SD, sino lo haces la longitud del archivo se quedará en 0 de forma errónea.
  • back16m: Versión del comando backup exclusivo para memorias SPI Flash de 16 Megas (las de hasta 45 cores). Igual que en el comando anterior, hay que hacer un .ls a continuación para que quede bien grabada en la tarjeta SD.
  • 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ç

Podéis echar un vistazo a las posibilidades que ofrece el sistema operativo de disco esxDOS consultando estos manuales de uso:

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 visitar la página oficial de ESXDOS, y  descargamos los archivos de la versión que queramos instalar, y luego seguir esta «receta» :

  • Copia las carpetas BIN y SYS al directorio raíz de tu tarjeta SD, sobrescribiendo los archivos. pero ojo, no las borres, grabalas encima. Esto es para asegurarse de que los comando nuevos de ESXDOS creados para ZX-Uno no se pierden, porque no vienen con las distribuciones de ESXDOS estándar. Si estás usando un navegador NMI alternativo, no copies NMI.SYS ni NMI_HELP.SCR de la carpeta SYS.
  • Haz una copia de ESXMMC.BIN, renómbralo a ESXDOS.ZX1, y cópialo a la carpeta raíz de tarjeta SD.
  • Inserta la tarjeta SD en tu ZX-Uno.
  • Enciende tu ZX-Uno y pulsa F2 para entrar en la BIOS.
  • Dirígete al menú Upgrade y elige «Upgrade ESXDOS for ZX».
  • En los diálogos de la opción elige «SD file», y cuando presente «Load from SD» contesta «Yes»  a la pregunta «Are you sure?».
  • El sistema leerá el fichero ESXDOS.ZX1 y avisará cuando esté actualizado. 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.
  • Haz un Hard-reset de tu ZX-Uno, o apágalo y enciéndelo.
  • ¡Lo has conseguido!

¿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 desUBIKado 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: 256×192 pixeles, con un color de paper/ink/birght/flash por cada bloque de 8×8 pixeles.
  2. El modo HiColour de Timex, con 256×192 pixeles, y un color de paper/ink/bright/flash por cada bloque de 8×1 pixeles.
  3. El modo HiRes de Timex, con 512×192 pixeles, con solo un color de paper y uno de ink para toda la pantalla.
  4. El modo Radastan, con 128×96 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
128×96/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
8×8 el color elegido depende de los valores de flash/bright/ink/paper
de la siguiente manera:

Spectrum color 0 1 2 3 4 5 6 7
Flash off
Bright off
Ink 0 1 2 3 4 5 6 7
Paper 8 9 10 11 12 13 14 15
Flash off
Bright on
Ink 16 17 18 19 20 21 22 23
Paper 24 25 26 27 28 29 30 31
Flash on
Bright off
Ink 32 33 34 35 36 37 38 39
Paper 40 41 42 43 44 45 46 47
Flash on
Bright on
Ink 48 49 50 51 52 53 54 55
Paper 56 57 58 59 60 61 62 63

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í:

INT 0 0 0 0 DISVINT ENARINT LINE8

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):

TURBO 0 FREQ ENSCAN VGA

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:

Puerto Hex Valor
64479 FBDF Posición horizontal (Eje-X)
65503 FFDF Posición vertical (Eje-Y)
64223 FADF Estado 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:

Bit Contenido
0 A cero si el botón derecho está pulsado
1 A cero si el botón izquierdo está pulsado
2 A cero si el botón central está pulsado
3 A cero si el cuarto botón está pulsado
4 a 7 Devuelven 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:

Registro Función Rango
0 Canal A fine pitch 8-bit (0-255)
1 Canal A course pitch 4-bit (0-15)
2 Canal B fine pitch 8-bit (0-255)
3 Canal B course pitch 4-bit (0-15)
4 Canal C fine pitch 8-bit (0-255)
5 Canal C course pitch 4-bit (0-15)
6 Noise pitch 5-bit (0-31)
7 Mixer 8-bit (ver abajo)
8 Canal A volumen 4-bit (0-15, ver abajo)
9 Canal B volumen 4-bit (0-15, ver abajo)
10 Canal C volumen 4-bit (0-15, ver abajo)
11 Envolvente fine duración 8-bit (0-255)
12 Envolvente course duración 8-bit (0-255)
13 Forma de la envolvente 4-bit (0-15)
14 I/O port A 8-bit (0-255)
15 I/O port B 8-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:

7 6 5 4 3 2 1 0
E/S E/S Noise C Noise B Noise A Tone C Tone B Tone 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.

Nota Frecuencia (Hz) Nota Frecuencia (Hz)
La 220 Re# 311.1
La # 233.3 Mi 329.63
Si 246.94 Fa 349.23
Do (medio) 261.63 Fa# 370
Do# 277.2 Sol 392
Re 293.66 Sol# 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:

Bit Comando
3 Continue
2 Attack
1 Alternate
0 Hold

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í:

bits Control
0-1 SpecDrum y beeper
2-3 Canal C
4-5 Canal B
6-7 Canal 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:

Valor Altavoz
00 Ninguno
01 Derecho
10 Izquierdo
11 Ambos (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-Uno Raspberry pi
JTAG Pin GPIO Pin
TMS 6 GPIO6 31
TDI 5 GPIO13 33
TDO 4 GPIO19 35
TCK 3 GPIO26 37
GND 2 GND 39
3.3V 1 N/C N/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.

Pin Señal
1 TCK
2 GND
3 TDO
4 3.3V
5 TMS
6 N/C
7 N/C
8 N/C
9 TDI
10 GND

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:

Pin Señal
1 3.3V
2 GND
3 TCK
4 TDO
5 TDI
6 TMS

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.