sábado, 26 de diciembre de 2015

The Explorers Guide to the ZX81

Autor:                             Mike Lord
Año de publicación:       1982
Editorial:                         Timedata                 
Idioma:                           Inglés

La primera edición de este libro salió en Febrero de 1982. Tengo registrado una segunda edición. Es un libro bastante completo ya que incluye capítulos de hardware y de software.

Los capítulos relacionados con el software tratan tanto la programación en Basic como el uso del Código Máquina. En ambos casos se dan unas nociones del lenguaje y se avanza en la programación a través de ejemplos. Algunas de las rutinas o pistas para programar son bastante interesantes.

Hay un capítulo dedicado a la ROM en la que se comentan las diferentes rutinas de la ROM de Sinclair, centrándose en aquellos aspectos más importantes. Una sección muy interesante dentro de este capítulo en la explicación sobre la generación de video, uno de los aspectos más complicados de este ordenador.

El último capítulo del libro está dedicado al hardware. No es una explicación del hardware del ZX81. Es un conjunto de propuestas para mejorar el hardware del ZX81, desde el circuito de alimentación, generación de video compuesto, conexión a un altavoz, añadir un botón de RESET, ampliar la memoria RAM y otras muchas propuestas.

En resumen, un libro más que interesante.





Errores encontrados en la Edición 1:

- Página 9: Al establecer el espacio ocupado por el área de Variables del Usuario como diferencia entre las direcciones apuntadas por las variables del sistema VARS y E_LINE, no ha tenido en cuenta que hay 1 byte libre justo antes de E_LINE.

- Página 11: el cálculo de RAMTOP Check asume como correcto el valor 17404, cuando en realidad es 17408.

domingo, 20 de diciembre de 2015

Como cambiar la membrana del teclado en el ZX81

Con el paso de los años las membranas originales del ZX81 (y del ZX Spectrum) sufren debido al envejecimiento del material provocado por el calor disipado por el regulador de tensión y la propia geometría de las fajas que las unen a la placa.

La típica avería es que las fajas se cuarteen o directamente se rompan. También puede aparecer óxido en los conductores, que se identifica claramente por el color más oscuro, frente a las no oxidadas.



Cambiar la membrana es sencillo. Solo se necesita un secador y un destornillador plano para empezar la operación. Para quitar la sembrar, primero levantar una de las esquinas e ir moviendo el destornillador a lo largo del lateral hasta la zona más cercana al secador. En este caso la esquina mejor era la contraria.






Aplicando aire caliente, se va tirando de la membrana. En este caso estaba fuertemente pegada. Pero hay otras que salen muy bien y no dejan residuo. Esta membrana en particular dejó mucho residuo.





Una vez extraída habrá que limpiar los restos del pegamento original, si hay. Esto a veces es lo más laborioso.



Para colocar la membrana nueva, sugiero ubicar las esquinas contrarias a los flejes e ir pegando de ahí hacia los flejes. Previamente hay que meter los dos flejes por los huecos que hay en la carcasa. Si se empieza a peor desde la zona de los flejes, hay muchas posibilidades de que la membrana te quede descentrada.



Fácil y rápido.




La membrana del ZX81es bastante resistente y su punto débil son los flejes. ¿Por qué no reciclarla para otro equipo o para tener de pruebas?

Fácil. Cortar la zona dañada y poner unos refuerzos con plástico rígido, como el de los blister, en la zona en la que las fajas se meten en los conectores de la placa. Tener cuidad de no pegar los protectores de plástico por el lado de los conductores.




Y por la parte de atrás yo le he puesto un trozo de goma eva. Sin pegamento, ni nada. Con los residuos del pegamento original de la membrana es suficiente.




Y ya tenemos una membrana que podemos usar para pruebas. En este caso los flejes son suficientemente largos como para que esta membrana se pudiera reciclar en otro ZX81. Pero no siempre es así.



domingo, 13 de diciembre de 2015

Dr. Ian Logan

No es fácil encontrar información sobre una de las figuras más importantes del universo Sinclair, autor de varios libros de gran calidad y guías fundamentales para los programadores y usuarios en general. 

Durante los años iniciales de la década de los años 80 del siglo pasado, Logan vivía con su familia en Skellingthorpe, a 5 km de la ciudad de Lincoln, capital del condado del mismo nombre. Salvo los viajes a Cambridge para colaborar con Sinclair Research, y a Londres, realizaba todo su trabajo desde casa y por teléfono o correo.

El Dr. Ian Logan fue co-fundador del Lincoln Computer Club en el año 1982. Este grupo de apasionados de la informática celebraba su primeras reuniones en el pub "The Cardinals Hat", y disponían de 30 unidades BBC Micro y unos 20 ordenadores ZX Spectrum (ref. Lincolnshire Echo).

En diciembre de 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 (adaptación de la del ZX80) fue escrita en su mayoría por Steve Vickers de Nine Tiles Networks Ltd (al igual que la del ZX Spectrum); 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. 

Los libros de Logan son manuales imprescindibles de todo programador de estos micros.

Software de Test:
  • System Test ROM Cartridge, 1983
  • Test Program, 1985

Libros publicados con la editorial LINSAC:
  • The ZX80 Companion, 1980
  • The ZX80 Monitor Listing, 1981
  • The ZX81 Companion, 1981
En estos libros participaba como co-autor en algunas seccionas dedicadas a las rutinas de la ROM (The Monitor).

Libros publicados con la editorial Melbourne House:
  • The Complete Timex TS1000 & Sinclair ZX81 ROM Disassembly - Part A & Part B- (coautor: Dr. Frank O´Hara), 1982 (*)
  • Understanding Your ZX81 ROM, 1981
  • Understanding Your Spectrum, 1982
  • The Complete Spectrum ROM Disassembly (coautor: Dr. Frank O´Hara), 1983
  • Spectrum Micro Drive Book, 1983
(*) Ambas partes fueron publicadas por separado. La Parte A en 1981, y la Parte B en 1982. En los dos casos se refería únicamente al ZX81.


Artículos publicados:
  • Revista Sinclair User nº 20 (Nov 1983): "Microdrive" (pag. 62)  descarga
  • Revista Popular Computing Weekly Vol. 2 nº 23 (Jun 1983): "Paint it Black!" descarga
  • Revista Popular Computing Weekly Vol. 2 nº 38 (Sep 1983): "Logan´s Run" descarga
  • Sync Magazine Vol. 1 nº 2 (Mar-Abr 1981): "How to Produce a Display File Using Machine Code" (**)
  • Sync Magazine Vol. 1 nº 3 (May-Jun 1981): "Auto Display Changing" (**)
  • Sync Magazine Vol. 1 nº 4 (Jul-Ago 1981): "Screen Scrolling" (**)
  • Sync Magazine Vol. 1 nº 5 (Sep-Oct 1981): "The PEEK Function and the POKE Command" (***)
  • Sync Magazine Vol. 1 nº 6 (Nov-Dic 1981): "An Introduction to Machine Language" (**)
  • Sync Magazine Vol. 2 nº 1 (Ene-Feb 1982): "Understanding Floating-Point Arithmetic. Part 1" (+)
  • Sync Magazine Vol. 2 nº 2 (Mar-Abr 1982): "Understanding Floating-Point Arithmetic. Part 2" (+)
  • Sync Magazine Vol. 2 nº 3 (May-Jun 1982): "An Introduction to Expression Evaluation" (++)
  • Sync Magazine Vol. 2 nº 4 (Jul-Ago 1982): "Understanding Floating-Point Arithmetic. Part 3" (+)

(**) Artículos en la sección "Machine Code"
(***) Artículos en la sección "Programming"
(+) Artículos en la sección "Math and Hardware"
(++) Artículos en la sección "Programming Techniques and Functions"






viernes, 4 de diciembre de 2015

Hewson Consultants

Hewson Consultants fue fundada por Andrew Hewson a principio de la década de los 80 como una compañía independiente de software que vendía por correo, y también publicando una serie de libros.

Andrew tenia una sección -"Hewson´s Helpline"- en la revista Sinclair User en la que desde el número 1 resolvía los problemas que los usuarios le planteaban por carta, primero referentes al Sinclair ZX81, y después a toda la gama de productos ZX.

Tras recibir su primer ordenador, un Sinclair ZX80, Andrew escribió un libro conforme iba avanzando en el conocimiento del hardware de este micro, así como en la programación. El libro, "Hints and Tips for the ZX80", se vendía por correo. Es un libro que yo no he podido encontrar. 

Posteriormente publicó una secuela teniendo al ZX81 como protagonista: "Hints and Tips for the ZX81". Es un excelente libro que puede encontrarse sin problemas, y posiblemente sea el mejor libro sobre el hardware del ZX81. Puedes encontrar un comentario sobre este libro en este mismo blog.

En 2013, Andrew Henson refunda su compañía Hewson Consultants Ltd para publicar un nuevo libro: "Hints & Tips for Videogame Pioneers". 



Libros publicados:

  • Hints & Tips for the ZX80, publicado en 1981.

  • Hints & Tips for the ZX81, publicado en 1982.


  • 20 Best Programs for the ZX Spectrum, publicado en 1983. Indescomp publicó una versión en español en 1984.


  • 40 Best Machine Code Routines for the ZX Spectrum, publicado en 1983. Indescomp publicó una versión en español en 1984.



  • Hints & Tips for Videogame Pioneers, publicado en 2013.




domingo, 22 de noviembre de 2015

Avería en la RAM alta del ZX Spectrum

La zona de la memoria RAM alta del ZX Spectrum está formada por los siguientes chips:

IC15-IC22:  8 x 4532 (32768 x 1 bit, 16 pines)
IC23:           1 x 74LS32
IC24:           1 x 74LS00
IC25-IC26:  2 x 74LS157


Microhobby nº 5 pag. 29

















Había dos fabricantes que suministraban los chips DRAM 4532; Texas Instruments y OKI (modelos 3732). Estos chips eran en realidad modelos 4164 (65536 x 1 bit) en lo que solo funcionaba la mitad de la memoria. Tanto TI como OKI macaban en la especificación de su producto la parte de la memoria que funcionaba. Además, la placa del ZX Spectrum esta preparada con una serie de puentes para permitir cualquier tipo de combinación de fabricante y modelo.

Texas Instruments: modelos TI 4532-3 o TI 4532-4
OKI: modelos MSM3732L o MSM3732H




El pinout del 4532 se muestra a continuación:














El pin 9 (AR) está conectado a través del IC26 a los puentes de selección de la marca y el modelo.

Las memorias 4532 son muy difíciles de encontrar hoy en día. Los modelos 4164 e incluso plaquitas con memorias SRAM de reciente fabricación pueden ser un buen sustituto.

Lo más normal es que en averías relacionadas con la memoria sea la RAM baja (4116) el problema. Para estas averías hay muchos tests por software que identifican muy bien el chip averiado, además de las pruebas que se pueden hacer si se tienen conocimientos de electrónica. Las averías en la RAM alta son, en mi opinión, más difíciles de determinar. Aunque también hay buenos programas, sirva el siguiente ejemplo cómo el software disponible no fija claramente la avería.

La siguiente placa es una issue#3B que mostraba dos cuadrados estáticos de color magenta siempre en la misma ubicación. El ordenador funcionaba correctamente, pero estos cuadrados siempre aparecían después de conectar y usar una interface RAMTurbo o la Boardtest (interface de chequeo de memoria por hardware conectada al bus de expansión). Esta placa solo direccionaba 16 kb.




Al correr los tests, todos daban error en la RAM alta. Las conclusiones de cada test eran diferentes, los errores eran aleatorios y erráticos. Alguna vez hasta los pasaba.

Test de Phil Ruston: error en IC15 e IC16
Test de Paul Farrow: error en la línea 0, y a veces en la línea 1, la 3,...
Test mcleod: Daba fallo.
Test ZX Diagnostics: error en multiplexores LS157, LS00 y LS32
Boardtest: error generalizado. Se bloquea.

Resultado Test de Phil Ruston:
















Resultado Test de Paul Farrow:
















Resultado Test ZX Diagnostics:
















El Inversión Test (series de POKE-PEEK sobre las direcciones de memoria) daba fallos en continuo, en todos los ICS y aleatorios, es decir, no eran siempre las mismas direcciones y bits los afectados.

Este test parte de la última localización de memoria válida que marca la instrucción:

PRINT PEEK 23732 + PEEK 23733 * 256

El valor obtenido para un 48 kb debería ser 65535
El valor obtenido para un 16 kb debería ser 32767

Si el valor obtenido es diferente, recomiendo la lectura de la sección 4.2 del Service Manual del ZX Spectrum. En esta sección se explica cómo realizar este test y como interpretar los valores obtenidos.

Estas son las pruebas que realicé.

  • Medidas de tensiones: correctas
  • Cambio ICs Z80, ULA, ROM y todos los 4532: todos correctos
  • Cambios multiplexores LS157, LS32 y LS00: todos correctos. La medida de la resistencia daba valores correctos, aunque esta prueba solo da resultados si hay un corto.
  • Medida de continuidad de las señales /CAS, /RAS, /WRITE, /MREQ, /WR y /RD: todas correctas. La señal /MREQ es la encargada de refrescar la DRAM.
  • Medida de continuidad de la línea A15 del bus de direcciones: correcta. Esta línea habilita la memoria por encima de la dirección 32767.
  • Medida de continuidad de la línea A14 del bus de direcciones: correcta. Esta línea está conectada a los puentes de selección de marca y modelo de memoria.
  • Medida líneas de datos (D0-D7): obtenía valores de resistencia elevadas entre 7 y 10,5 kohm, cuando estas líneas deben tener 5-6 kohm. Con osciloscopio y sonda lógica medí las señales de pull-up de las resistencias R9-R16 y estaban correctas.

Pero aquí había algo. Revisando el zócalo de la ROM vi que tenía malas soldaduras en algunos pines. Las hice yo hace un par de años. ¡Vaya chapuza que hice!. Cambié el zócalo y obtuve los valores de resistencia correctos.
















Pero no fue suficiente. Después de esto me puse a repasar las soldaduras de los zócalos de los multiplexores. Estaban bien. Pero al medir continuidad del pin 7 (A0) de IC26 (LS157), a veces tenía, a veces no. Una cosa rara. Medía resistencia en el zócalo y vi que tenía cierta medida en ese pin.

Finalmente cambié el zócalo del IC26 porque es de un tipo que no me gusta. En la foto siguiente se ve el zócalo de IC26 ya cambiado, y el modelo similar que había en su lugar (de color rojo a la izquierda del IC26).

















Además repasé con un osciloscopio los condensadores cerámicos C63 y C64. Normalmente estos no cascan pero como participan en el circuito de los multiplexores LS00 y LS32 que establecen las señales CAS y RAS de direccionamiento de la RAM alta, quise asegurarme. Ambos condensadores estaban bien.

Con el cambio de los zócalos de la ROM y del IC26 resolví el problema. Pero hasta llegar ahí tuve que hacer un montón de pruebas ya que los programas de test daban resultados dispares. Una vez cambiados estos zócalos el ordenador ya direccionaba 48 kb y pasó todos los tests.