11.8.13

La época del Spectrum y el mensaje de Arecibo

Cuaderno de bitácora: cuando escribí la entrada en este blog sobre La Habitación de Fermat, uno de los enigmas o problemas propuestos en aquella película me trajo a la memoria los tiempos pasados del Spectrum, y esa época se ha hecho más vívida cuando hace varias semanas recibí un comentario en una de las últimas entradas invitándome a ponerme en contacto con mis antiguos compañeros de colegio.

Para muchos de nosotros, adultos que rondamos los treinta y muchos o los cuarenta y pocos, la época de los primeros ordenadores nos evoca bastantes recuerdos. Algunos tendrán en su mente otros nombres, como Atari, o Amstrad, pero para muchos de nosotros fue, sin alternativa posible, la época del Spectrum.

¿Qué es un Spectrum? Podemos decir brevemente que fue un ordenador, uno de los primeros ordenadores accesibles para tener en casa.

En mi caso particular, el que tuve fue el popular modelo Spectrum 48K, que costaba en aquellos momentos unas 42.000 pesetas más o menos (252 euros). Tuve suerte, porque sabía de otros que lo habían comprado por 48.000 pesetas (288 euros). Hoy puede parecer poco, pero en aquella época constituía una fortuna para nuestras posibilidades.

Hay que tener en cuenta lo que en realidad era aquel cacharro: una pequeña caja negra del tamaño aproximado de un iPad que, con sus botones de goma, más que a un ordenador se parecía a lo que hoy es el teclado del ordenador. No traía pantalla, sino que había que enchufarlo al televisor, que es el que hacía de pantalla. Su memoria, como está indicada en el nombre, era de tan solo 48K, inimaginablemente pequeña para nuestra época actual, donde cualquier aparatejo por simple que sea puede tener un millón de veces más.

El Spectrum no traía unidad de disco y los programas había que cargarlos con la ayuda de cassettes; el reproductor de cassettes había que ponerlo aparte, como la pantalla del televisor. Los programas, principalmente juegos, se transmitían de los cassettes al ordenador a través del sonido, un sonido característico, como el canto de un incansable pájaro eléctrico, y el tiempo de carga oscilaba entre los cuatro y los cinco minutos. Es decir, para transmitir tan solo 48K desde el cassette hasta la memoria del ordenador se necesitaba esperar más de cuatro minutos, y muchas veces, la transmisión terminaba con error debido a defectos en la grabación de la cinta de cassette. En ese caso la espera había sido en vano y había que comenzar otra vez e intentarlo de nuevo desde el principio. Cada vez que el ordenador se apagaba, la memoria se perdía, con lo que cada juego o programa que uno quería utilizar era necesario cargarlo después de encender el aparato.

Hay todo un mundo de distancia entre lo que se podía hacer en aquella época con el Spectrum y lo que hoy se puede hacer con nuestros ordenadores. Por hablar de limitaciones, podemos mencionar, por ejemplo, que el Spectrum presentaba en pantalla solamente ocho colores, cada uno en dos modalidades, normal y luminosa, y que no se podía colorear cada pixel independientemente, sino en cuadrados de ocho por ocho. La resolución gráfica era de 256 por 192 píxeles.

En aquella época no se pensaba en limitaciones, sino en avances. Poder usar aquel aparato significaba entrar en contacto por primera vez con todo un mundo soñado de tecnología de vanguardia, de computadoras, de programación,  aunque en la práctica lo que realmente tenías en casa era tu primera consola de videojuegos.

Hasta ese momento, conocíamos los videojuegos de verlos en los bares y salones recreativos, a los que acudía a menudo para contemplarlos; personalmente, el primero que me cautivó fue Galaxian, cuya máquina estaba en un bar de nuestra calle.

 
Nuestra economía era muy escasa, con lo que fueron muy pocas veces las que pude jugar de verdad en algún salón recreativo; en la mayoría de las ocasiones me limitaba a observar el juego de otros, como si de una película se tratase, y luego soñaba que algún día podría tener acceso a ese mundo, y mientras tanto alimentaba mi imaginación con todos los ambientes, principalmente de ciencia ficción, que aparecían retratados en aquellos videojuegos.

Cursaba 3º de BUP cuando tuve noticia de la existencia del Spectrum a través de los compañeros del colegio, y no pasó mucho tiempo hasta que pude comprarme uno. ¿Fue un viernes por la tarde cuando llegué a casa con él? ¿O un sábado? Aquella noche pasé bastante rato jugando a los primeros juegos, pues en la caja del Spectrum venían varios de regalo: uno de ajedrez, un simulador de vuelo, el Jetpac, el Reversi, y alguno más que no recuerdo el nombre. Al día siguiente comencé a leer el manual de instrucciones que traía, en el que se explicaba la programación en lenguaje BASIC, y pude practicar hasta aprenderlo bastante bien.

A lo largo de aquellos breves años compuse algunos sencillos programas que me ayudaron a aprender muchas cosas. Recuerdo ahora que estuve a punto de terminar un programa que jugaba a los dados, y para ayudarme en el colegio hice varios programas interesantes. Uno de ellos, por ejemplo, calculaba determinantes de tercer grado, también hice un programa que podía resolver sistemas de ecuaciones con la famosa regla de Cramer. Otro programa me ayudó a memorizar una ingente lista de nombres latinos de plantas para la asignatura de Biología: con paciencia fui escribiendo todos los nombres científicos de las plantas y sus correspondencias con el nombre usual, y luego el programa iba sacando nombres al azar y yo respondía en voz alta, luego le daba al botón y cuando en la pantalla aparecía su correspondiente pareja podía comprobar si me había equivocado o no.

También para Química diseñé un programa, al que llamé Arrhenius, en honor al famoso científico Svante Arrhenius, que representaba gráficamente las curvas del pH de diversas disoluciones.

Aunque todos estos programas fueron para uso propio, en el colegio mis compañeros y yo hablábamos mucho de programación, y cuando estábamos en COU se nos ocurrió la idea de intentar hacer un buen programa, un videojuego para el Spectrum. Ni siquiera lo habíamos empezado y ya nos imaginábamos que se lo venderíamos a Dinamic, la empresa de software puntera en España en aquellos momentos. Se nos ocurrió un juego al que llamamos provisionalmente Torneón, y que iba a tratar sobre torneos entre caballeros medievales; en la pantalla se vería un caballero cabalgando con la lanza en ristre, dispuesto a chocarse con otro que vendría en sentido opuesto. La dificultad consistiría en ir manteniendo el trote del caballo golpeando las teclas y luego en el último momento elegir el ángulo de golpe de la lanza y el ángulo de protección del escudo.

Una de las primeras cosas que quisimos empezar fueron los gráficos del juego, y aquí es donde viene la parte matemática relacionada con el problema mencionado en La Habitación de Fermat.

Para hacer un gráfico, imagen o dibujo sencillo en un ordenador como el Spectrum, tuvimos que aprender el sistema binario.

Sabemos que cualquier imagen que aparece en la pantalla de un ordenador está compuesta por puntos o píxeles, y si es en blanco y negro, los píxeles solo pueden ser blancos o negros. Podemos asociar a cada píxel blanco un 0 y a cada píxel negro un 1, y entonces toda imagen en blanco y negro se puede descomponer en filas de ceros y unos.

Cada unidad que puede valer cero o uno es lo que se llama un bit, (abreviatura de binary unit).

Veamos un ejemplo. Supongamos que queremos dibujar un gráfico imitando la cabeza de un guerrero con un casco. Pixelamos un cuadrado de 8 por 8 píxeles sobre fondo blanco, obteniendo la siguiente imagen, ampliada a la izquierda y en tamaño real a la derecha.


Con 8x8 tenemos un dibujo muy pequeño para nuestras pantallas actuales, pero en el Spectrum era la resolución de uno de sus cuadrados básicos. La pantalla se dividía en 32x24 de estos cuadrados de 8x8 píxeles, teniendo una resolución total, como ya hemos indicado más arriba, de 256x192 píxeles.

Si separamos el cuadrado por filas, y en cada fila sustituimos los píxeles en blanco por 0 y los píxeles en negro (o en azul en el caso de nuestra imagen) por 1, entonces tenemos una secuencia de números:

1  0  1  1  1  0  0  1
1  1  1  1  1  1  0  1
1  1  1  1  1  1  1  1
1  0  0  0  1  0  0  1
1  1  0  0  1  0  1  1
0  1  0  0  0  0  1  0
0  1  1  0  0  1  1  0
0  0  1  1  1  1  0  0

En este caso, en cada fila tenemos un número binario de ocho dígitos, 8 bits, que se puede convertir en número decimal, y el resultado, al tener sólo 8 dígitos, nos da un número comprendido entre 0 y 255, que es lo que se llama un byte. Así, de la primera fila tendríamos:

10111001 = 1 · 27 + 0 · 26 + 1 · 25 + 1 · 24 + 1 · 23 + 0 · 22 + 0 · 21 + 1 · 20 =
                  = 128 + 0 + 32 + 16 + 8 + 0 + 0 + 1 = 185

Y si vamos convirtiendo cada una de las filas, pasándolas de binario a decimal, tenemos:

185
253
255
137
203
66
102
60

Es decir, la lista de ocho números 185, 253, 255, 137, 203, 66, 102, 60, ocho bytes en total, pasados a binario y colocados en un cuadrado de 8x8 equivalen al gráfico que hemos puesto de ejemplo. Esta secuencia de bytes era la que teníamos que introducir en el Spectrum.

En el Spectrum las imágenes se descomponían en cuadrados 8x8, y cada fila de la imagen era un número binario de ocho dígitos, u ocho bits, que es lo que llamamos un byte. Tradicionalmente se ha mantenido esta agrupación de ocho en ocho, permaneciendo el byte como unidad de información, y de él se derivan los Kilobytes, los Megabytes, los Gigabytes, etc.

Pero en general, cualquier imagen en blanco y negro se puede secuenciar de forma muy simple en un largo número binario, lo único que hay que tener claro son las dimensiones de la imagen, para poder distribuir el número en filas y que los bits se correspondan de forma correcta con la imagen.

Así, por ejemplo, la imagen anterior se puede secuenciar poniendo todos los números en una sola línea: 1  0  1  1  1  0  0  1  1  1  1  1  1  1  0  1  1  1  1  1  1  1  1  1  1  0  0  0  1  0  0  1  1  1  0  0  1  0  1  1  0  1  0  0  0  0  1  0  0  1  1  0  0  1  1  0  0  0  1  1  1  1  0  0. Basta saber que estos 64 dígitos se deben colocar en filas de 8x8 para recuperar la imagen.

En relación a esto podemos poner otro ejemplo, pero este ya con un contexto mucho más interesante e importante que los disparatados y utópicos proyectos de un adolescente de los 80. Se trata del mensaje de Arecibo, que como dice la Wikipedia, es
un mensaje de radio enviado al espacio desde el radiotelescopio de Arecibo el 16 de noviembre de 1974 para conmemorar la remodelación del radiotelescopio. El mensaje tenía una longitud de 1679 bits y fue enviado en la dirección del cúmulo de estrellas llamado M13, situado en la dirección de la constelación de Hércules, a una distancia de unos 25 000 años luz, y que está formado por unas 400 000 estrellas. El mensaje contiene información sobre la situación del Sistema Solar, de nuestro planeta y del ser humano, y fue diseñado por Frank Drake, Carl Sagan y otros.
El motivo de que la transmisión tenga exactamente 1679 bits es porque este número se descompone en producto de dos números primos: 23 por 73. Eso indicaría al que recibiese la transmisión que puede organizar los bits en un cuadrilátero de 23 columnas por 73 filas, obteniendo el siguiente gráfico:


En este mensaje se pretende condensar una pequeña información gráfica y numérica sobre la humanidad: el código binario, los átomos del ADN, los nucleótidos del ADN, la forma del ADN y el número de nucleótidos que tiene, el ser humano, su estatura y el tamaño de la población de la Tierra (en 1974), un esquema del Sistema Solar, y un gráfico del radiotelescopio de Arecibo con su tamaño.

Para finalizar, la historia de Torneón no fue muy larga. Sabíamos que para poder programar aquel juego y que trabajara de forma eficiente en el Spectrum, el lenguaje BASIC no nos iba a servir, y tendríamos que aprender código máquina, el lenguaje interno que usaba el propio Spectrum, y en el que estaban escritos todos los juegos y programas comerciales. El código máquina no es intuitivo como el BASIC, consiste en una serie de instrucciones que se deben reducir a bytes, y que hay que expresar a través de números. Era complicado conseguir manuales que te enseñaran el código de forma sencilla, los gráficos había que hacerlos también a mano, dibujarlos en papel cuadriculado y luego pasarlos a binario con ayuda de la calculadora, etc.

La tarea se antojaba tremendamente difícil, y después de varios días de ideas, el proyecto Torneón se estancó, se fue enfriando rápidamente y quedó pronto en el olvido.

No hay comentarios: