domingo, 7 de enero de 2018

Probando el ZX-UNO

Hace meses adquirí un ZX-Uno a través del crowdfunding, y poco después la ZX-Box que es la carcasa para el ZX-Uno en diseño 3D. Hasta ahora no había podido dedicar mucho tiempo a esta implementación en FPGA del ZX Spectrum. Sí había probado las diferentes ROMs del core del ZX Spectrum y la implementación del interface DivMMC para cargar software a través de la tarjeta SD.




Hace tiempo que quería dedicar algo de tiempo para descubrir implementaciones de otros sistemas que se han ido preparando en el foro del ZX-Uno. Particularmente estaba interesado en algún sistema de los que quise tener cuando era joven y por razones económicas no pude tener. Si bien existen emuladores a nivel de software de la mayoría de ellos, quería probar como era una implementación a nivel de hardware, y si encima se podía cargar software, mejor aún.

Además del ZX Spectrum, he probado los cores de:

SAM Coupé. Quizás el que más me gusta, y además permite la carga de programas a través de la conexión EAR. En las fotos a continuación, la pantalla inicial de arranque, varias demos y la pantalla de carga del juego F-16.










BBC Micro. Por el momento no permite la carga de programas.

Commodore Vic-20. Permite la carga pero como tengo el emulador VICE para Commodore, no he investigado mucho más sobre el tema.




Oric Atmos. No permite la carga de software por el momento. Y no pareciera que en el corto plazo pudiera estar disponible esta posibilidad.




Jupiter Ace. Este ordenador se puede emular mediante la ROM de Paul Farrow en un ZX Spectrum. Algo que probé en su momento utilizando el clon Harlequin. En las fotos a continuación, las versiones de los juegos Racer y Centipede para el Ace, cargadas a través de la toma EAR del ZX-Uno.





Atari 800XL. Otro descubrimiento como el del Sam Coupé. Se puede incluso cargar software a través de la tarjeta SD. En las fotos a continuación, las versiones de los juegos Manic Miner y Mario Bros para el 800XL.





Sin duda, el ZX-Uno te garantiza horas y horas de diversión.

domingo, 17 de diciembre de 2017

El ZX81 y los programadores en el siglo XXI

El ZX81 tiene un elenco de programadores más amplio de lo que pudiera creerse para un ordenador que tiene un número relativamente bajo de seguidores si lo comparamos con su hermano mayor, el ZX Spectrum.

Me estoy refiriendo a Bob Smith, Paul Farrow, Jim Bagley y Johan "Dr Beep" Koelman. No quiero olvidarme de la escena nacional a la que dedicaré un capítulo aparte, con programadores como dancresp, Antonio Villena, ........

Todos son bastantes activos tanto en webs como en el foro Sinclair ZX World, que explotan al máximo las características del ZX81, incluyendo el HIRES.

Bob Smith es un programador bastante activo con versiones de juegos tanto para ZX Spectrum como para el ZX81. Bob´s Stuff es la web de Bob Smith.







Entrevista a Bob Smith en "Yo Tenía un Juego"

Entrevista a Bob Smith en "Flickering Myth"

ZX Resource Centre es la web de Paul Farrow en donde se puede descargar programas nuevos para ZX81 (Celebration, Against The Elements) y versiones actualizadas de juegos del ZX80, como Kong y Pacman, pero usando la ROM del ZX81. Su web es muy interesante, con análisis profundos de todos los proyectos que lleva a cabo, tiene gran cantidad de información sobre los programas que desensambla y también sobre sus proyectos de hardware. Una auténtica referencia para usuarios del ZX80 y ZX81.


Jim Bagley es un veterano programador bastante activo en la escena retro, pero más enfocado al ZX Spectrum y la Game Boy. El hecho de ser nombrado aquí es debido a la versión del juego Dragon´s Lair para ZX81. También tiene algún juego programado por él con HIRES (WRX), como ZX81 Racing.




Entrevista a Jim Bagley en "Retro Gamer"

Johan "Dr Beep" Koelman es un programador de las Países Bajos muy activo y prolífico en el foro Sinclair ZX World, y especializado en juegos de 1K WRX HIRES. Recientemente ha publicado en el foro ZX81 Owners Club de Facebook todos sus juegos con motivo de su cumpleaños. Según explica él mismo, aunque era poseedor de un ZX Spectrum desde 1983, siempre tuvo cierta predilección por el ZX81.

En 1997 programó un emulador del ZX81 para el ZX Spectrum, y en 2011 hizo un primer programa para el ZX81, el port del juego Shogun. En ese momento descubrió la rutina WRX de Wilf Rigter, y desde entonces ha programado 40 juegos siguiendo este algoritmo y para 1K.

sábado, 25 de noviembre de 2017

Demos HIRES para ZX81

Si bien no son recientes, he descubierto en este hilo del foro ZX80/ZX81 dos demos de HIRES para el ZX81. Uno de ellos es de Bodo Wenzel y otro del usuario del foro zsolt.

La rutina programada por Bodo Wenzel consigue resoluciones de 320 x 240 píxeles y requiere un ZX81 con al menos 16Kb de RAM.

"Testbild" es una carta de ajuste que además puede moverse en las cuatro direcciones mediante las teclas de cursor. Bodo Wenzel además tiene otros programas demo usando HIRES: 25 aniversario, puzzle2, rezurrection y maxdemo.


Con unos resultados parecidos a los obtenidos en la rutina de Bodo Wenzel y en resolución 320 x 240, el usuario zsolt ha programado "FullHD81" y "FullHDzeddy".




También se pueden desplazar con SHIFT+tecla de cursor, y con SHIFT+9 se obtiene la imagen en video inverso.


sábado, 18 de noviembre de 2017

Entrevistas a Rick Dickinson, Brian Flind y David Southward

Si bien en esta entrada hacia una breve reseña sobre las personas más importantes en el universo Sinclair, creo interesante incluir aquí los links a sendas entrevistas  David Southward (2013), Brian Flind (2011) y Rick Dickinson (2011).

Las fechas entre paréntesis se corresponden a la fecha de la entrevista.







viernes, 10 de noviembre de 2017

Prueba de Diagnostic Board en un ZX Spectrum

El diseño original es de Dylan “winston” Smith. Es una solución por hardware que dispone también de su software particular almacenado en la Flash ROM de la placa. 

La tarjeta realiza pruebas tanto en la RAM baja como en la RAM alta. También comprueba la ROM y la generación de interrupciones por parte de la ULA sobre el Z80. El resultado lo muestra sobre un juego de leds montados sobre la placa y también se muestran en pantalla. 

José Leandro realiza un exhaustivo análisis de esta placa en el número 218 de Microhobby.


jueves, 9 de noviembre de 2017

Un ZX80 en estado impecable

Recientemente se ha vendido en eBay un Sinclair ZX80 en un estado impecable, incluyendo la carta que firmaba Clive Sinclair con cada envío postal.

Tras más de 30 pujar la subasta acabo con un precio al cambio de 1775 euros, con unos gastos de envío de 53 euros.

martes, 8 de agosto de 2017

Reparación de una avería severa en un ZX Spectrum (y II)

(en la página de reparaciones se corresponde con la #17)

CONTINUACIÓN


Se extraen primero los multiplexores IC3 e IC4 y se comprueban que están bien. Se aprovecha y se ponen sendos zócalos. Se realizan varios test de memoria -ahora sí se pueden ejecutar- y se comprueba que hay ciertos fallos aleatorios, pero que en la mayoría de las veces la RAM baja pasa el test, no así el test de la RAM alta. El patrón del test de mcleod es el mostrado a continuación.



El patrón muestra que la RAM baja está bien, pero esos cuadrados azules son extraños. No permite ejecutar el test de memoria RAM alta. Se utilizan otro tests (Diag ROM de Phil Ruston y ZX Diagnostics), pero no son claros en el error. Se comprueban el resto de multiplexores (IC25 e IC26) y las puertas lógicas (IC23 e IC24). Todos correctos. Se colocan zócalos. Se comprueba que responde bien a una interface de teclado externo. Se comprueba también la señal del reloj en TR3 y también es correcta.

El siguiente paso es comprobar el bus de control y otras señales (MREQ, RD, M1, WRITE, RAS, CAS, WAIT, RFSH, etc). Hay continuidad en todas las señales y utilizando un analizador lógico se ve que las señales son como deberían ser.

Después se analiza el bus de datos. Al medir resistencia en las líneas, se observa una resistencia muy baja, casi 0, en las líneas D4 y D5. El valor de referencia debería ser 6-7 en la escala de 20 kohm. Esto se comprueba con el analizador lógico.



Al medir las resistencias R13 y R14 dan valores muy bajos, se suelta una pata para aislar estos componentes del circuito y se comprueba que están bien por lo que se vuelven a soldar.

Se decide desoldar los chips 4532 de la RAM alta IC19 e IC20 correspondientes a los bits D4 y D5. Se ponen zócalos y se colocan otras memorias nuevas. Tras esta operación se recuperan los valores de resistencia normales en el bus de datos, y también se obtiene el valor de resistencia de referencia en el rail de +5V.

Tras esta operación el ordenador arranca correctamente.

Como nota curiosa, decir que al extraer una de las memorias 4532 de la RAM alta, no pude hacerlo con la pistola de aire caliente que utilizo para todas. De hecho, estuve a punto de dañar la placa, aunque sí quedó un poco más oscura en esa zona, como se puede observar en la foto. Es como si estuviera soldada con otro material ya que al aplicar los 350ºC no llegaba a fundirse. Las soldaduras de la RAM alta eran las originales, no pareciera que hubiera habido ninguna manipulación posterior.

Fotos de cómo ha quedado la placa tras todas las reparaciones:



En resumen, se han sustituido los siguientes componentes:

Z80
ROM
3 x chips 4116 (RAM baja)
2 x chips 4532 (RAM alta)
Transistor TR4
Todos los condensadores electrolíticos
3 x diodos señal IN4148 (aunque los originales estaban bien)

Y en la foto los chips en fallo (falta un 4532 que tuve que cortar porque no salía con la pistola de aire caliente).


martes, 1 de agosto de 2017

Reparación de una avería severa en un ZX Spectrum (I)

(en la página de reparaciones se corresponde con la #17)

Se presenta la reparación de una placa issue 3 con diferentes averías. La placa presenta el siguiente estado a su recepción, con algunos de los condensadores electrolíticos (en color naranja) que no parecen ser los originales. Además, muestra un montaje de un diodo en una de las patillas del LM1889 cuyo propósito se desconoce. Lo primero es realizar el montaje para poder tener señal de video en un TV moderno.







Las primeras medidas de resistencia, sin tener el ordenador conectado a la fuente, muestran valores anormalmente bajos en las líneas de +5V, +12V y -5V, luego a priori hay un problema de alimentación. El único chip que se encuentra en zócalo es la ULA, esta se extrae y se prueba en otra placa y funciona correctamente, luego parece que la ULA está bien. Posteriormente, se realizan pruebas más exhaustivas que confirman su correcto funcionamiento.

Al conectar el ordenador se observa el siguiente patrón.


Es un patrón dinámico en el que a veces aparece color, más como ruido que como un color real generado por el ordenador. Y suele ser el color rojo. Se realizan las primeras mediciones de tensión y se ve que hay 6V en el rail de 12V; y 0,7V en el rail de -5V. Además, el IC7 de la RAM baja quema mucho, y también quema la ROM. El resto de los chips, salvo los que están pegados al IC7 tienen una temperatura normal al tacto. Lo primero es extraer el chip IC7 (4116) y la ROM. Se comprueba que están ambos en cortocircuito en otro ordenador. Se ubican sendos zócalos y las mediciones de resistencia en las líneas mejoran.

Se analiza el circuito de alimentación extrayendo TR4 y TR5. Se comprueba que TR4 está en cortocircuito, pero TR5 está bien. TR5 se vuelve a instalar y se pone un sustituto para el TR4 (ZTX653). Se recuperan los -12V, pero no los -5V. El valor medido ahora es -1,6V. Se cambian todos los condensadores electrolíticos que forman parte del circuito de alimentación (C46/C47, C44/C45, C34, C50, C74 y C28). No hay cambio en los voltajes. Se cambian los diodos del circuito D11, D12 y D16, pero sigue sin haber cambios. Los diodos estaban bien.

Se procede a desoldar el resto de IC de la memoria baja (4116) y se comprueban uno a uno en otra placa. 2 memorias más están dañadas aunque no se calientan, luego en total son 3 chips 4116. Se sueldan zócalos y se sustituyen por 4116 nuevos. Tras esta reparación se recuperan los -5V.

Se revisa el resto del circuito y se observa que el condensador C25 está colocado con la polaridad al revés.


Se cambian el resto de condensadores electrolíticos que no se habían cambiado. Además, se realiza la modificación para instalar una EPROM en lugar de la ROM original del Spectrum. Se opta por la propuesta de José Leandro que está publicada en El Trastero del Spectrum.

Tras estos cambios se obtiene el patrón que se muestra a continuación.


Con todos estos cambios se restablecen los valores de resistencia normales en los raíles de +12V y -5V, pero no así en el de +5V. El valor de resistencia medido es de 0,7 (escala 20 kohm), cuando el normal debería ser para este modelo de placa de 1.

Se instala una interface externa y se comprueba que no responde al Reset, por lo que se extrae el Z80 y se prueba en otra placa dando el mismo patrón de barras negras y blancas. Z80 en fallo. Se pone un zócalo y un Z80 nuevo. El patrón ahora cambia al mostrado en la siguiente figura.


domingo, 25 de junio de 2017

¿Quién fue Quién en el mundo Sinclair?

Dejando al margen la figura de Sir Clive Sinclair, y la de Alan Sugar que cerraría el ciclo de la compañía, en Sinclair Research y sus primigenias hubo un elenco interesante de personas que contribuyeron al éxito de la compañía, y a la postre de la informática doméstica.

En otras entradas del blog he repasado algunas de las figuras importantes del software del ZX Spectrum, por lo que en esta entrada me voy a ceñir al hardware y al diseño.

Christopher Curry. Trabajó en Sinclair Radionics desde 1966 hasta 1976; y en Science of Cambridge en 1977 y 1978, en donde participó en el diseño del ordenador MK14. En 1979 funda Acorn Computer.

John Grant. La empresa Nine Tiles fue la encargada de escribir el Sinclair BASIC, una versión reducida del BASIC de Microsoft escrita para el ZX80. En 1979, Clive Sinclair encarga a John Grant escribir una versión del BASIC para no tener que pagar la licencia a Microsoft. El Sinclair BASIC debería caber en una ROM de 4kB y una RAM limitada a 1kB. Junto a Steven Vickers escribió la versión extendida de 8kB que luego se usaría en el ZX81. La historia completa del Sinclair BASIC puede leerse en esta web.

Dr. Steve Vickers. Empezó a trabajar en 1980 en Nine Tiles que había escrito el lenguaje Sinclair BASIC para el ZX80. Escribió la ROM del ZX81, adaptando la del ZX80, y del ZX Spectrum. También escribió los manuales del ZX81 y ZX Spectrum. Fundó en 1982, junto a Richard Altawasser, la compañía Rainbow Computing Co, renombrada posteriormente a Jupiter Cantab, lanzando al mercado el microordenador Jupiter Ace. La compañía entra en liquidación en 1984. Tiene su web en la Universidad de Birmingham.

Richard Altawasser. Entró a trabajar en Sinclair Research en 1980. Participó en el diseño del hardware del ZX81 y ZX Spectrum, siendo su mayor contribución el modo gráfico que ocupa 7kB, cuya patente puede verse en esta web. También participó en las primeras etapas de desarrollo del ZX Microdrive. Deja Sinclair 1982 para fundar, junto a Vickers, Jupiter Cantab.

Jim Westwood. Se unió a Sinclair Radionics in 1963. Figura fundamental que participó en casi todos los diseños de productos Sinclair, pero que siempre aparecía en segunda fila. Westwood fue el responsable del diseño del ZX80.

Rick Dickinson. Dickinson es un diseñador industrial que entró a trabajar en Sinclair Research en 1979. Diseñó las carcasas del ZX80, ZX81, ZX Spectrum y del QL. Posteriormente también participó en el diseño del Cambridge Z88 y de otros productos Amstrad. Recibió el British Design Council Award en 1981 por el diseño del ZX81. Las patentes de los diseños pueden consultarse en internet: ZX80, ZX81, ZX Spectrum. Forma parte del equipo de diseño del Spectrum Next.

Nigel Searle. Entró a formar parte de Sinclair Radionics en 1973 y estuvo en la compañía hasta 1986, cuando Sinclair fue adquirida por Amstrad, aunque estuvo fuera de la compañía entre 1977 y 1979. Era el hombre de Sinclair en EEUU donde obtuvo un gran éxito en la promoción del ZX80 y ZX81. Regreso al Reino Unido en 1982 como director general de la compañía hasta 1986.

Dr. Ian Logan. En 1982 comienza a trabajar en Sinclair Research. Hasta entonces había realizado varias colaboraciones con revistas del sector como Sync Magazine, y publicado libros referentes al ZX80 y ZX81. Su gran aportación a Sinclair Research fue escribir la ROM para la ZX Interface 1. Si bien la ROM original del ZX81 fue escrita en su mayoría por Vickers, junto al Dr. Frank O´Hara, revisó y corrigió los errores que tenía la ROM original dando lugar a la "Improved" ROM del ZX81. Fue autor o co-autor de algunos de los mejores libros que se han escrito para el ZX81 y ZX Spectrum.

viernes, 2 de junio de 2017

La Aventura Original

William Crowther, programador de la red ARPAnet y, junto a su esposa, entusiasta de la exploración de cuevas, escribió en 1976 el germen de lo que sería Colossal Cave Adventure, Colossal Cave, Adventure, Advent o La Aventura Original en castellano, a raíz del mapa de la cueva Mammoth (Kentucky). El programa se distribuyó por la red primigenia de Internet, hasta que Dan Woods la encontró en 1977 en uno de los ordenadores conectados a dicha red.



Colossal Cave fue escrita originariamente en lenguaje Fortran para para ordenador PDP-10 (DEC), y requirió unas 300 kB de memoria. El programa estaba dividido en dos partes, por un lado el código de ejecución, y por otro los datos, que incluían el diccionario, las descripciones y el mapa. Versiones posteriores, dejaron de utilizar lenguajes de propósito general y utilizaron lenguajes adaptados para aventuras conversacionales.

Dennis G. Jerz (2007) publica un interesante artículo, en el que además de detallar la visita a la cueva Mammoth para ver analogías con el juego, también analiza el código y la estructura de los datos. La estructura original de los datos está dividida en varias partes que pueden identificarse bien:
  1. Descripciones largas
  2. Descripciones cortas
  3. Mapa
  4. Vocabulario
  5. Descripción de los objetos
  6. Mensajes
  7. Localización de los objetos
  8. Acciones por defecto
  9. Otras acciones
  10. Mensajes del sistema
  11. Indicaciones o consejos ("hints")
  12. Mensajes "mágicos", como el mensaje inicial y rutinas especiales.
El contador de localizaciones, que se corresponde en el menú de arriba a las descripciones cortas, sube hasta las 130 localizaciones. Sin embargo, hay espacios en blanco; por ejemplo, se pasa de la 41 a la 57. En Wikipedia se dan 78 ubicaciones. Al realizar un filtro con una hoja de cálculo te dan 71 descripciones de ubicación ("YOU´RE...") y 98 mensajes del tipo "YOU ARE...". Como siempre lo mejor, jugar a la aventura y hacerse un mapa.

La versión original es la denominada "350 puntos" que no es ni más ni menos que los puntos máximos que puedes obtener al terminar el juego. Una versión muy extendida es la F77 de 550 puntos de Dave Platt.

Muchas versiones salieron a partir de Colossal Adventure. Todas ellas fueron programadas por seguidores y entusiastas del juego original.

Zork (Infocom, 1980)
"West of House. You are standing in an open field west of a white house, with a boarded front door."


Colossal Adventure (Level 9, 1983). La foto se corresponde con una versión para MS-DOS. La versión para ZX Spectrum no tiene gráficos. Esta versión tiene más localizaciones, del entorno de 200, que el juego original.
"You are standing beside a small brick building at the end of a road from the north."


Pantalla de la versión para ZX Spectrum


Adventureland (Adventure International, 1985)


La Aventura Original (Aventuras AD, 1989)
"Estás en el bosque. Muy cerca hacia el Este hay una cabaña de ladrillos rodeada de árboles."



Referencias:

Somewhere Nearby is Colossal Cave: Examining Will Crowther's Original “Adventure” in Code and in Kentucky

Código Fuente original

Artículo en WiKi del CAAD

The Colossal Cave Adventure page

sábado, 13 de mayo de 2017

Y otro kit de ZX81 a la venta...

Es difícil de creer, pero otro kit a la venta en eBay, con un precio de 499 GBP + gastos de envío.

En el momento de publicar esta entrada, aún sigue a la venta el kit anterior cuyo anuncio es del mes de Febrero.




sábado, 6 de mayo de 2017

Reemplazo de la ULA del ZX81

A la fecha de publicación de esta entrada, existen tres implementaciones que sustituirían a la ULA original del ZX81. Si bien, hay rumores de que algún usuario del foro Sinclair ZX World está trabajando en una implementación más moderna.

Las tres implementaciones son:

  • Diseño en CPLD de Alwin Henseler (2012). La CPLD utilizada es la Xilinx XC9572 de 84 pines. Más información puede obtenerse en este hilo del foro Sinclair ZX World, así como descargar todo la información que estaba disponible en internet, pero que ahora no lo está.



  • Diseño de Andy Rea (2007), utilizando componentes discretos, muy parecido al clon Harlequin del ZX Spectrum. Se utilizan unos 22 integrados TTL de la serie 74xx. Diseño versión 2 (2011), pero utilizando 2xGAL 20v8, 4xGAL 16v8 y 1x74LS374. Andy Rea ha realizado otras implementaciones en CPLD con más o menos éxito. El usuario SirMorris diseño una ULA mejorada, incluso con varios modos gráficos, en base al diseño de Andy Rea. Esta ULA mejorada estuvo a la venta en 2016 en SellMyRetro. 
Diseño Andy Rea basado en TTL 74xx

Diseño Andy Rea versión 2

Diseño SirMorris en CPLD

  • Diseño de Bodo Wenzel, adaptado por José Leandro (2008), basado en un chip MACH210 (4 x GAL 22V10). Como se puede ver en el articulo del enlace, el autor plantea dificultades al usar este chip dado lo obsoleto del modelo, entre otras cosas.