Core ZX81 y ZX80 (AvlixA) para ZX-Uno, ZX-DOS y ZX-DOS+. CHANGELOG y GUÍA DE USO

Este año 2021 se cumplen 40 años de la salida del ordenador Sinclair ZX81, el primer ordenador de gran éxito que sacó Sir Clive Sinclair, y que vendió más de un millón y medio de unidades, llegando a tener también sus propios clones como los estadounidenses Timex Sinclair 1000 y 1500, el argentino Czerweny 1000 (un TS 1000 con modulador PAL), o los brasileños Microdigital TK83 y TK85. Desde el 2016 teníamos en el ZX-Uno un core de ZX81 portado por jepalza, pero ahora Antonio Silva (a.k.a. AvlixA) ha realizado un magnífico port del core de ZX81 y ZX80 desde la MiSTer a los modelos ZX-Uno, ZX-DOS y ZX-DOS+. Este nuevo core trae muchísimas funcionalidades que dejan obsoleto el anterior, e incluso es más potente que el que se puede encontrar a día de hoy en otras FPGA más grandes como la MiST, Mistica FPGA16 o la SiDi. El port no es una copia 1:1 del core de MiSTER, sino que también Antonio le ha añadido una serie de mejoras para explotar al máximo las posibilidades de las fpga ZX-Uno, ZX-DOS y ZX-DOS+.

Especificaciones:

  • Basado en los diseños de la página ZX80 de Grant Searle
  • Seleccionable modelos de ordenadores ZX80 y ZX81
  • Ampliaciones de RAM de 16k/32k/48k
  • 8KB con el addon CHR$128/UDG
  • QS CHRS – juego de caracteres alternativos usado en ciertos juegos de Quicksilva- (F1 para activar/desactivar)
  • Compatibilidad con placa CHR$128 que permite redefinir los 128 caracteres.
  • Compatibilidad con CHROMA81 que permite añadir color a la salida de vídeo del ZX81.
  • Turbo en modo Slow: NoWait, x2, x8
  • Chip de sonido YM2149. Versiones jt49 de jotego y MiSTer a elegir, compatibles ambas con ZON X-81. Por defecto arranca la de jotego (F7 para rotar los chips).
  • Tipos de joystick: Cursor, Sinclar, ZX81, ZXpand
  • Timings PAL/NTSC.
  • Carga turbo de archivos .o (ZX80) y .p (ZX81)
  • Carga de ROM alternativa.
  • Carga y grabación de archivos por audio
  • Configuración inicial de las opciones mediante archivo CONFIG.TXT
  • Salidas de vídeo: Video Compuesto, RGB y VGA. Detecta opción de salida de vídeo de la BIOS para aplicarla en el arranque.

Versiones:

2021.10.31

– Versión inicial del core.
– El core para ZX-Uno os lo podéis descargar de aquí: https://github.com/zxdos/zxuno/tree/master/cores/ZX81 (extensión .ZX1)
– El core para ZX-DOS de aquí: https://github.com/zxdos/binaries (extensión .ZX2)
– Y el core para ZX-DOS+ de aquí: https://github.com/zxdos/zxdos-plus/tree/master/cores (extensión .ZXD)

NOTA 2021.12.11: Las versiones del 2021.10.31 tiene algunos pequeños fallos como:

 

  • La opción del OSD QS CHRS: Disabled/enabled (F1), que activa la placa de redefinición de caracteres de Quicksilva, en el OSD la opción tiene que estar con X en lugar de V para activarse.
  • Al presentar la lista de ficheros en el OSD a veces en el nombre de ciertos ficheros aparecen caracteres del anterior al final.
  • No detecta y pone la salida de vídeo a VGA si está puesta así por defecto en la BIOS. Este problema no lo tiene un core para ZX-Uno y que incluyo dentro del fichero comprimido que comparto más abajo..

Estos defectos ya están reportados, por lo que cuando Antonio disponga de algo de tiempo libre seguro que podrá corregirlos, ya para versiones futuras.

 

Instalación:

El core se debe instalar en la FPGA desde BIOS como otro core secundario normal desde el panel Upgrade.

Si ya se tenía instalado el core de ZX81 de jepalza se puede instalar en el slot que ocupaba, ya que este nuevo core es mucho mejor.

En la tarjeta SD se debe crear un directorio /ZX81, y dentro de él poner el fichero de configuración CONFIG.TXT. Una buena forma de tenerlo todo bien organizado es incluir dentro de ese directorio otros directorios p, o y roms, para incluir los ficheros para el ZX81, el ZX80 y roms alternativas para las 2 computadoras.

Una cosa que hay que tener presente con este core es que al igual que las máquinas que implementa, la CPU (Z80) es la encargada de generar la señal de vídeo, lo cual para el ZX81 supone el 75% del tiempo y el 90% en el caso del ZX80. Eso supone que solo se dispone de un 25% o de un 10% del tiempo de CPU si queremos seguir teniendo imagen. Si queremos disponer de todo el tiempo para la CPU la imagen se pierde, por lo que es típico que en las operaciones de carga de programas (LOAD) o cuando se estén realizando cálculos la imagen se pierda. Esto no es que el core funcione mal, sino que es algo intrínseco del funcionamiento de estas máquinas.

La salida de vídeo de este core es algo puñetera por lo anteriormente citado, por lo que las salidas de vídeo que se recomiendan de mejor a peor son las siguientes: RGB, vídeo compuesto y por último VGA. Hay juegos que pueden no verse en VGA pero que sí se visualizan en RGB o vídeo compuesto.

Teclas de función del CORE:

CTRL+ALT+SUP/Del = Reset del core
CTRL+ALT+BACKSPACE = Reset de la fpga
– Bloq. Despl / Scroll Lock o F12 = Alterna modo de video entre VGA y RGB 15 KHz / CVBS video
F1 = on / off QS CHR$ (addon que incluye 1MB de bancos de caracteres alternativos para juegos de Quicksilva y otros)
F5 = menu OSD on/off
F7 = alterna chips de sonido jt49 (jotego) / ym2149 ( el que trae el core de MiSTer). Arranca con el jt49.
F8 = activa portadora de vídeo compuesto (usarla solo para sacar vídeo compuesto en modelo ZX-Uno+)
F9 = on/off desvío sonido del conector mic al ear. Algunos juegos sacan un ruido molesto y con esto se puede desactivar.
F10 = on/off sonido entrada de carga por ear

Opciones del OSD:

Para sacar el OSD se debe pulsar la tecla F5 o el FIRE2 del joystick, y se puede navegar con los cursores o con el joystick. Para modificar una opción, entrar en un directorio o cargar un archivo pulsar ENTER o el botón FIRE1 del joystick.

Selección de software y documentación:

He preparado un archivo comprimido con una selección del mejor software para el ZX81 y ZX80, así como también documentación (libros, manuales, reviews y boletines). Hay documentación y software tanto en inglés como en español.

2021.12.11 – Software y documentación para ZX81 y ZX80.7z (474 MB)

Software ZX81

  • Juegos clásicos (80’s y 90’s) y modernos (siglo XXI). Algunos están preparados para usar un chip AY-3-8912 para sacar sonido, el soporte de QS CHAR / CHR$128 para redefinir caracteres, o el Chroma81 para tener color.
  • Roms alternativas (‘Shoulders of Giants’ , lenguaje Forth, etc)
  • Juegos en BASIC de dancresp (ver su índice de programas)
  • Programas publicados en la revista ZX (gracias a la labor de preservación de Neil Parsons)
  • Demos

Documentación ZX81

  • Manuales del ZX81 en español e inglés.
  • Manual de Mantenimiento, Pruebas y Reparaciones del ZX81. Grandioso trabajo de recopilación de información por parte de eltargui. La misma información se encuentra en esta web para su consulta on-line.
  • Ficha del ZX81 muy completa para consultar toda la información relevante de un solo vistazo. Trabajazo de eltargui.
  • Un montón de libros de programación, la mayoría en BASIC, con programas listos para ser tecleados.
  • Los boletines del Club Nacional de Usuarios del ZX81
  • Reseñas del ordenador aparecidas en colecciones de informática.

Software ZX80

  • Selección de los mejores juegos de ayer y de hoy para este ordenador.
  • Juegos en BASIC de varios libros que también se incluyen en la documentación.
  • Juegos en BASIC de dancresp (ver su índice de programas)

Documentación ZX80

  • Manual en inglés.
  • Un montón de libros de programación, la mayoría en BASIC, con programas listos para ser tecleados, muchos ya incluidos en las carpetas con software para el ZX80.

Uso del core como Sinclair ZX81:

Las imágenes de cinta para este modelo son los ficheros .p, equivalentes a los famosos .tap de Spectrum. Los ficheros .p se pueden montar desde el OSD (F5) con la opción LOAD TAPE (.p), y una vez montado el fichero que se quiere cargar, salir al BASIC y teclear LOAD «».

Con esas instrucciones la mayoría ya tiene suficiente, pero si quieres profundizar más en el uso del core en la carpeta docs tenéis varios manuales para el ZX81 por si queréis hacer vuestros pinitos con el BASIC que incorpora esta máquina.

Veamos la plantilla del teclado del ZX81 que difiere de la del Spectrum 48K a la que estaremos más acostumbrado.

Y ahora una pequeña guía rápida para manejarse con el teclado:

  • Cuando el cursor está en modo K (comandos), si pulsamos una tecla saldrá la instrucción que está encima de la tecla (NEW, PRINT, RUN, etc).
  • Cuando está en modo L (letras), si pulsamos una tecla saldrá la letra o el número.
  • La tecla SHIFT izquierda del teclado PS/2 hace de SHIFT, y si se pulsa SHIFT+una tecla lo que se ejecutará o sacará es lo que está en rojo en la plantilla.
  • Si se pulsa SHIFT + ENTER se pasa a modo F (función), y si en este modo se pulsa una tecla la instrucción que sacará será la que está indicada debajo de la tecla.
  • Con SHIFT + 9 se pasa a modo G (gráfico), que permite pintar los caracteres gráficos o los UDG (gráficos definidos por el usuario).
  • Con SHIFT + 1 editamos la línea donde se encuentra el cursor.

NOTA: El firmware zxunops2 (RELOADED) ( https://github.com/spark2k06/zxunops2/t … lternative ) que usan los modelos de ZX-Uno y ZX-DOS+ preparados para meterse en carcasas de Spectrum 48K o +2 ya incorporan la definición de teclado ZX81 para usar con este core.

1.1 – CÓMO CONFIGURAR EL HARWARE PARA LA CARGA DE CIERTOS JUEGOS

El ZX81 venía de serie con 1 KB de memoria RAM y con 2KB en algunos modelos como el TS1000, CW1000 o TK83. Por eso fue muy popular las expansiones de memoria de 16K que vendieron Sinclair y otros fabricantes como Timex o Memotech. Por eso muchos juegos no funcionan si al menos no tienen 16K, por eso es interesante que como mínimo se tenga activada la ampliación de memoria de 16K. Todos los juegos que usan los modos de visualización pseudo Hi-Res o True Hi-Res necesitan al menos 16KB de memoria.

Otra forma de conseguir mayor variedad de gráficos fueron los addon QS CHRS y CHR$128 que permitían cada uno disponer de 1MB de memoria más para redefinir los 128 caracteres. La diferencia es que esa memoria extra se mapea en el primero a partir de la dirección 33.792 y de la 12.288 el segundo.

Hay soporte para la tarjeta Chroma81 la cual proporciona la posibilidad de colorear los caracteres de dos formas, en modo atributo, similar a como lo hace un Spectrum (15 colores para tinta y otros 15 para el papel por carácter), y en modo carácter, con 15 valores de tinta y papel para cada línea del carácter, similar al modo Hi-Color de Timex.

También hay juegos que usan ciertos algoritmos para juegos Hi-Res como los WRX16 y WRX16K que necesitan ram entre las direcciones 8K-16K, por lo que es conveniente activar la opción Low RAM.

De los protocolos de joystick que se pueden seleccionar, la mayoría de los juegos reconocen el tipo Cursor, por lo que es el más conveniente.

Valores por defecto del core que suelo usar yo en el fichero /ZX81/CONFIG.TXT en mi ZX-Uno.

101000002010
||||||||||||
0123456789AB
||||||||||||------- B-Slow mode speed: 0 - Original, 1 - NoWait, 2 - x2, 3 - x8
|||||||||||-------- A-CHR$128/UDG: 0 - 128 Chars, 1 - 64 Chars, 2 - Disabled
||||||||||--------- 9-Joystick: 0 - Cursor, 1 - Sinclair, 2 - ZX81
|||||||||---------- 8-Main RAM: 0 - 16KB, 1 - 32KB, 2 - 48KB, 3 - 1KB
||||||||----------- 7-Machine model: 0:ZX81, 1:ZX80
|||||||------------ 6-Composite video carrier signal: 0: off, 1: on
||||||------------- 5-Video frequency: 0:50Hz, 1:60Hz
|||||-------------- 4-Black border: 0: off, 1: on
||||--------------- 3-Inverse video: 0: off, 1: on
|||---------------- 2-CHROMA81: 0:Disabled, 1:Enabled
||----------------- 1-QS CHRS: 0: off, 1: on
|------------------ 0-Low RAM: 0: Off, 1: 8KB

Como veis, por defecto suelo tener así las opciones, y solo si hay incompatibilidades en algún juego, desactivo alguna. Por ejemplo, en el juego H.E.R.O. hay que desactivar la opción CHROMA81 o se verá mal el tercio inferior de la pantalla.

NOTA 2021.12.11: La opción QS CHRS está a 0 (off), pero es porque el core de la versión 2021.11.31 lo interpreta al revés. Realmente así está activada

1.2 – LAS ROMS ALTERNATIVAS

Cuando se arranca el core ya se utilizan unas roms por defecto para cada una de las máquinas. Para el ZX80 se usa la rom de 4K original, y para el ZX81 se usa la rom «improved». Esta es la segunda versión programada por Sinclair, la cual optimiza y corrige ciertos fallos de la versión «Standar», siendo el más famoso el error al calcular la raíz cuadrada de ciertos valores.

Desde el OSD es posible sustituir las roms «por defecto» por otras alternativas. Las roms disponibles para estas 2 máquinas se pueden encontrar aqui:

Si existe el fichero /ZX81/roms/zx8x.rom de 12K utilizarán las roms que se encuentren en él al arrancar. Primero deben ir los 8K de la rom para el ZX81 y luego los 4K para la rom del ZX80.

Para conocer más respecto a estas roms y sus diferencias podéis consultar este artículo.

1.3 – COLORIZACIÓN Y SUSTITUCIÓN DEL JUEGO DE CARACTERES EN JUEGOS CLÁSICOS Y MODERNOS

El core de MiSTer permite la utilización de ficheros de colorización de caracteres (.col) y de redefinición de caracteres (.chr), y en caso de que estos lleven el mismo nombre que el fichero del programa (.p) serán aplicados cuando este sea cargado. Estos ficheros están en formato XML y esta funcionalidad no se ha podido trasladar al port de ZX-Uno debido a la complejidad de tratar estos ficheros en una placa tan limitada como es el ZX-Uno. Sin embargo, utilizando la herramienta Chroma Program Enhancement Creator es posible crear cargadores en formato .p que sirvan para aplicar colores y la redefinición de caracteres. Estos cargadores se deben cargar antes que el programa principal, y una vez cargados y que hayan hecho su trabajo, pulsar SPACE para parar la carga del siguiente fichero, montarlo desde el OSD, y ya entonces realizar la siguiente carga con LOAD¨¨.

Por ejemplo, en la carpeta de clásicos nos encontramos los ficheros:

  • ZX Scramble Loader (CHR$128).p
  • ZX Scramble Loader (Chroma).p
  • ZX Scramble.p

siendo la forma de cargar ese juego la siguiente:

Montar el primer archivo desde el OSD, cargarlo con LOAD «», interrumpir la carga pulsando SPACE, montar el segundo archivo desde el OSD, cargarlo con LOAD «», volver a interrumpir la carga pulsando SPACE, montar el tercer archivo que ya corresponde al juego y cargarlo con LOAD «», con lo cual ya podremos jugar al Scramble con gráficos mejorados y a color.Obviamente, para que esto funcione tenemos que tener previamente activadas las opciones «CHR$128/UDG: 128 Chars» y «CHROMA81: Enabled» en el OSD.

En el material seleccionado que he compartido más arriba tenéis unos cuantos juegos que ya incluyen cargadores para aplicar color y redifinición de caracteres generados con la herramienta Chroma Program Enhancement Creator y los ficheros .col y .chr que podéis encontrar en esta página.

1.4 – HERRAMIENTAS DE APOYO QUE PODEMOS UTILIZAR EN EL PC

  • Chroma Program Enhancement Creator: Permite redefinir caracteres, aplicarles color, trabajar con ficheros .col y .chr, y exportar cargadores en formato .p para aplicar los colores y las redefiniciones de caracteres.
  • Projet ZxTools: Conjunto de herramientas entre las que está incluida el ZX BASIC Editor que permite escribir programas BASIC y luego exportarlos a ficheros .p.
  • zx81putil:Utilidad de línea de comandos para convertir ficheros .p en .wav y a la inversa.
  • EightyOne Sinclair Emulator: Es el emulador de referencia para los modelos ZX80 y ZX81 de Sinclair.

Uso del core como Sinclair ZX80:

Lo primero comentar que usarlo con salida VGA es bastante complicado como ZX80, ya que pocos monitores van a soportar las frecuencias a las que trabaja usando este modelo de ordenador, por lo que se recomienda usar RGB o vídeo compuesto. Si aún así os funcionase la salida VGA con vuestro monitor, por ejemplo, yo sí puedo usarla con mi LG Flatron M12917A, veréis que cada vez que se pulsa una tecla en el BASIC se pierde la imagen durante 3 segundos, por lo que usarlo con este tipo de salida de vídeo es una verdadera tortura.

Dicho esto, las imágenes de cinta para este modelo son los ficheros .o, equivalentes a los famosos .tap de Spectrum. Los ficheros .o se pueden montar desde el OSD (F5) con la opción LOAD TAPE (.o), y una vez montado el fichero que se quiere cargar, salir al BASIC y teclear LOAD (pulsar tecla W) y sin escribir comillas pulsar ENTER.

Con esas instrucciones la mayoría ya tiene suficiente, pero si quieres profundizar más en el uso del core en la carpeta docs tenéis el manual para el ZX80 por si queréis hacer vuestros pinitos con el BASIC que incorpora esta máquina. El BASIC es más espartano que el del ZX81, pero los programas ocupan menos y van ligeramente más rápidos, aunque se pierde la imagen cuando el programa BASIC no está esperando la pulsación de una tecla.

Veamos la plantilla del teclado del ZX80 que también difiere de la del ZX81.

Y ahora una pequeña guía rápida para manejarse con el teclado:

  • Cuando el cursor está en modo K (comandos), si pulsamos una tecla saldrá la instrucción que está encima de la tecla (LOAD, PRINT, RUN, etc).
  • Cuando está en modo L (letras), si pulsamos una tecla saldrá la letra o el número.
  • La tecla SHIFT izquierda del teclado PS/2 hace de SHIFT, y si se pulsa SHIFT+una tecla lo que sacará o ejecutará es la segunda función de la tecla.
  • Cuando se introduce una sentencia BASIC en la parte inferior de la pantalla, y se detecta algún error de sintásis, aparecera un carácter S en vídeo inverso.
  • Con SHIFT + ENTER editamos la línea donde se encuentra el cursor.

NOTA: El firmware zxunops2 (RELOADED) ( https://github.com/spark2k06/zxunops2/t … lternative ) que usan los modelos de ZX-Uno y ZX-DOS+ preparados para meterse en carcasas de Spectrum 48K o +2 ya incorporan la definición de teclado ZX80 para usar con este core.

Respecto a la configuración del hardware a utilizar desde el OSD, se puede mantener el usado con el ZX81, pero solo tendrá efecto el disponer de una ampliación de memoria, y como mucho solo utilizará 16K.

Tampoco hay mucho donde lo que elegir como roms alternativas.

Enlaces de interés:

Agradecimientos:

A Antonio Silva (AvlixA) por portar este gran core al ZX-Uno, ZX-DOS y ZX-DOS+, y que ha logrado que me interese por aprender todo lo posible sobre estos dos curiosos ordenadores de Sinclair que para mi eran totalmente desconocidos más allá de conocer su existencia y poco más.

A ZX eltargui por su gran contribución al recopilar de forma accesible, resumida y clara la información más relevante sobre el ZX81¡En español!

A todos aquellos programadores como Paul Farrow, Bob Smith, Kelly Murta, dancresp, y tantos otros que siguen aun desarrollando para estas maravillosas máquinas, siempre eclipsadas por su sucesor, el Spectrum.

Esta entrada fue publicada en ZX-Uno y etiquetada , , . Guarda el enlace permanente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *