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.

viernes, 28 de abril de 2017

La Explosión de los Parsers

En esta entrada no voy a definir lo que es un parser, ni listar los que hubo, ni siquiera analizar cómo funcionan. De eso ya se encargó Andrés Samudio en los artículos publicados en la sección El Mundo de la Aventura de la revista Microhobby.

Con Yenght (Dinamic, 1984) descubrí el mundo de las aventuras conversacionales, y prácticamente desde ese momento ya quise escribir mi propia aventura. Poco después tenía un juego conversacional escrito en Basic y ambientado en el antiguo Egipto. Tenía gráficos y todo, muy simples, eso sí. Y un listado larguísimo. Ese juego se perdió.

Las compañías de software tenían sus propias utilidades de programación de aventuras, lenguajes propios, parsers, compresores, utilidades para hacer gráficos o ampliar vocabulario. Pero no eran comerciales.

Infocom (ZIL y Maquina-Z)
Adventure International (SAGA)
Level 9 (A-Code)
Magnetic Scrolls (parser, engine y base de datos)
Aventuras AD (DAAD)

El único programa comercial disponible en esa primera mitad de los años 80 fue The Quill (Gilsoft International UK, 1983), que junto a su complemento The Illustrator (1984) formaban el set de utilidades para escribir aventuras. O no estaban disponibles en el mercado español, o no eran fáciles de encontrar. Yo desde luego desconocía de su existencia. Era un sector con poca penetración en el mercado español. Pocos éramos los que jugábamos con esos juegos. Pero The Hobbit, y las aventuras de Adventure International cambiaron algo el panorama en la segunda mitad del decenio de los 80.


A este sistema le salió un duro competidor con el Graphic Adventure Creator (Incentive Software Ltd UK, 1986). El GAC era mejor que The Quill, permitía crear frases más complejas y además integraba el diseño de gráficos. Fue el utilizado por Dinamic en varias de sus aventuras conversacionales como Don Quijote, Megacorp, Carvalho o Las Guerra de las Vajillas.


Sin embargo, la revolución llegó con Professional Adventure Writing System (Gilsoft International UK, 1986). PAW o PAWS fue el sistema que se impuso, sobre todo en el mercado hispano. En esos años, el mercado de los 8 bits en el Reino Unido empezaba a descender. Fue el sistema usado en aventuras como Abracadabra y Supervivencia (El Fifurcio). Con PAWS escribí una aventura; "El Orbe de los Dragones", creo que se llamaba. Con mapa, personajes, objetos e incluso algún gráfico. La pantalla de carga la diseñé con aquel programa de Dinamic: "Artist". Pero ya no guardo nada de aquella época.



PAWS fue el germen de otros sistemas como System Without a Name -SWAN- (Infinite Imaginations, 1986) con Tim Gilberts detrás, y el Diseñador de Aventuras AD -DAAD- (Tim Gilberts para Aventuras AD, 1988).

DAAD fue el sistema utilizado por Aventuras AD para crear todas sus aventuras conversacionales. Con DAAD se escribieron La Aventura Original, Jabato, Cozumel, La Aventura Espacial, Los Templos Sagrados y Chichen Itzá.

Sin duda, un tiempo diferente. Emocionante. Una época en la que con unas pocas utilidades podías crearte tus universos, tus personajes, tu atmósfera. Una época para soñar.


domingo, 23 de abril de 2017

35 Años del ZX Spectrum

El 23 de Abril de 2017 se cumplen 35 años de la presentación del Sinclair ZX Spectrum. No fue el mejor micro-ordenador de la época pero sin duda fue el que más impacto causó en una generación.

El ZX Spectrum fue lanzado al mercado el 23 de abril de 1982 y fue uno de los microordenadores domésticos más populares de los años 80 y primeros de los 90, con más de 5 millones de unidades vendidas.

El hardware fue diseñado por Richard Altawasser y el software por Steve Vickers. Ambos se desvincularon de Sinclair en 1981, para formar su propia compañía, a la cual llamarían Jupiter Cantab. Allí lanzaron al mercado una máquina de idéntica arquitectura a la empleada en la compañía de la que salían, el Jupiter Ace.





domingo, 16 de abril de 2017

Level 9 & The Jewels of Darkness

Level 9 Computing fue fundada en 1981 por Mike, Nicholas y Pete Austin. Produjo 20 juegos hasta su desaparición en 1991 coincidiendo con la decadencia de los juegos conversacionales. Level 9 desarrolló el código A-Code y el intérprete A-Virtual Machine que utilizó en sus juegos.



Jewels of Darkness es una trilogía ambientada en la Tierra Media de J.R.R. Tolkien. Esta trilogía está formada por los juegos:

Colossal Adventure (1983)
Adventure Quest (1983)
Dungeon Adventure (1983)


Los años entre paréntesis son los correspondientes a su distribución para ZX Spectrum. Los 3 juegos fueron revisados en 1986 y empaquetados en formato trilogía bajo el título "The Jewels of Darkness". Las tres aventuras son de texto, sin gráficos. Ni siquiera tienen pantalla de carga.

"Colossal Adventure" es una versión extendida de "Adventure" o "La Aventura Original". La versión de Level 9 tiene más de 200 localizaciones frente a las 130 de la Original. También muestra muchas similitudes con "Adventureland" (Adventure International).

Versión MS-DOS de "Colossal Adventure" (Level 9):



Y versión para ZX Spectrum de "Adventureland" (Adventure International):



Referencias:

The Level 9 Memorial

Level 9 Fact Sheet
Level 9 o El Apogeo de la Aventura en CAAD
Jewels of Darkness en World of Spectrum

martes, 11 de abril de 2017

Infocom & Zork

La compañía Infocom fue una empresa de software establecida en Cambridge, Massachusetts (EEUU) y fundada en 1979 por personal del MIT. La compañía fue independiente hasta 1986 cuando fue adquirida por Activision, que cerró definitivamente la división de Infocom en 1989. Los fundadores de la compañía fueron Dave Lebling, Marc Blank, Albert Vezza y Joel Berez.




Los juegos de Infocom se programaban usando un parser llamado Zork Implementation Language o Zork Interactive Language (ZIL) que corría en una máquina virtual llamada Máquina-Z.

La creación de Infocom se debe a la inspiración que Colossal Cave provocó en Marc Blank y Dave Lebling, y que se convertiría en el que luego sería el primer juego de Infocom: Zork. 

Zork nació en 1977 en el MIT originalmente para un DED PDP-10, e implementado en el lenguaje de programación MDL. Además de Marc y Dave, en el juego colaboraron Bruce Daniels y Tim Anderson.



Posteriormente, en 1980, se programó para un TRS-80 aunque tuvo que dividirse en 3 partes debido a su reducida capacidad de memoria comparada con el mainframe.

Zork no fue programada para ZX Spectrum, y solo hay versión disponible para CP/M en el Spectrum +3.



Referencias:

Infocom
The Zork Library
Material Level 9 en World of Spectrum

viernes, 7 de abril de 2017

Carga de programas en el ZX81

La velocidad de reproducción se fijó con referencia al Kansas City Standard (KCS) o Byte Standard, que establece que un casete es similar a un modem conectado a un puerto serie. Los “1” y los “0” son convertidos en tonos usando Audio Frequency-Shift Keying (ADSK). El “0” es representado por cuatro ciclos de 1200 Hz y onda sinusoidal, y el “1” con ocho ciclos de 2400 Hz. Esto da un ratio de 300 baudios (bit/segundo).

Albertus Bredekamp realizó pruebas reales de carga de casete con el ZX81 y obtuvo unas velocidades de 400 baudios en el caso de “0”, y 250 baudios en el caso de “1”. Suponiendo que la carga tuviera un 50% de “0” y el otro 50% de “1”, la tasa media nos daría 307 baudios. Tanto a los “0” como a los “1” les siguen un período de silencio de 1300 micro-segundos. Cada “0” está formado por cuatro pulsos, y cada pulso de “1” por nueve pulsos.

Por lo tanto, podemos considerar que la velocidad de carga media de un ZX81 es de 300 bit/s frente a los 1500 bit/s del ZX Spectrum.

La pérdida de la señal de sintonización con el TV se produce durante las operaciones de carga (LOAD) y grabación (SAVE) de software utilizando un reproductor externo conectado a las correspondientes tomas del ordenador. Esto es debido a que la señal de TV y la conexión con la toma TAPE comparten el mismo pin de la ULA (pin 16). Esta toma TAPE está conectada con la toma MIC del ordenador. La ULA no puede acometer a la vez ambas operaciones, generación de señal de TV y la operación TAPE/TAPE IN.

A continuación, la imagen que muestra un TV al ejecutar LOAD ""



Si el ZX81 dispone de circuito de video que permita usar una TV moderna a través de una toma de video compuesto o SCART, muy posiblemente la señal se pierda por completo (pantalla negra), volviéndose a recuperar tras terminar la carga o la grabación.

Se han probado diversos dispositivos externos para cargar programas a un ZX81 y se ha demostrado que es muy sensible al volumen, más aún que el ZX Spectrum. Funciona muy bien usando un PC o portátil conectándolo a través de la toma de auriculares con el cable original de audio del ZX81. Hay que subir el volumen al 75% y el 80% de potencia. Usando el programa de reproducción WinAmp va bastante bien. Asegurarse que está en MONO y no en STEREO. Con esta configuración, prácticamente todos los programas cargan.