Cuando el software se tejió (literalmente) en la memoria de un computador.

A principios de los años 60 del siglo pasado, en plena guerra fría, se daba inicio a la carrera espacial entre las potencias de ese momento, los Estados Unidos de América (USA) y la URSS, en su competencia para llevar al hombre a la luna. En USA se creó el proyecto Apollo, que finalmente cumpliría su objetivo el 21 de julio de 1969.

Margaret Hamilton junto a un listado del programa de la misión Apolo

Desde las etapas iniciales del proyecto, los ingenieros encargados del diseño y planificación tenían claro que para la navegación y especialmente durante las maniobras de salida de órbita, alunizaje, reingreso a la atmósfera y el mantenimiento de la trayectoria de la nave, los tripulantes deberían asistirse mediante algún artilugio electrónico, que los apoyara en estas tareas, pues estaba claro que sería imposible para dicha tripulación manejar los cientos de parámetros, cálculos y mediciones en forma totalmente manual.

Con estos supuestos, surgió la necesidad de instalar a bordo una computadora que ayudara a la tripulación en la difícil tarea. Pero las existentes en ese tiempo no eran adecuadas para estos propósitos. Su gran tamaño, peso, consumo eléctrico y disipación térmica hacían impensable que algunos de los modelos de aquellos monstruos pudieran ser tenidos en cuenta.

La Nasa encargó entonces al MIT (Massachusetts Institute of Tecnology) del diseño y construcción de una computadora que tenía en tener dimensiones no mayores a una caja de zapatos. Todo un desafío inmenso para la época.

El MIT, bajo la dirección de Charles Stark Drapeer, diseñó un equipo al que llamaron AGC (Apollo Guidance Computer) con un procesador basado en puertas electrónicas NOR, de 32 Kg de peso, 61x32x17 cm de volumen, 2048 palabras de 16 bits de memoria de núcleos magnéticos (4 Kb) modificables (hoy la llamaríamos Memoria RAM), y 36864 palabras de núcleos cableados, de solo lectura (72 Kb) (Memoria ROM en la jerga actual). El procesador implementó por diseño físico solamente 11 instrucciones, (copia memoria a/desde registro, operaciones aritméticas sobre registros, comparaciones y saltos condicionales e incondicionales). Se creó asimismo el lenguaje ensamblador y el programa de ensamblado específico para este procesador. El diseño contemplaba algunas interfases físicas que lo conectaban con parte del instrumental de navegación del Apollo. Hoy el código fuente completo de estos programas se puede obtener desde los repositorios de software de Github.

La creación del software estuvo a cargo un grupo de técnicos dirigidos por Margaret Hamilton, quién por ese entonces introdujo el concepto de “Ingeniería de Software”, como rama de la ingeniería que se focaliza en el diseño y construcción de programas de computadoras.

Las memorias de núcleos cableados eran una forma de memoria de solo lectura. Al igual que la memoria de núcleos magnéticos usados en ese entonces, cada bit se correspondía con un anillo de ferrita por donde se enhebraba una malla de cables de cobre que permitían, mediante excitación eléctrica, conocer el estado magnético del anillo correspondiente para determinar su valor. Si el anillo estaba imantado con determinada polaridad, se generaba una corriente eléctrica en el cable colector que era interpretado como un 1 binario. Por el contrario, la falta de corriente se interpretaba como un 0 binario. Este entramado de ceros y unos se ensambló directamente en las placas de memoria. El hecho de pasar el cable colector por el centro del anillo o por fuera del mismo, hacían la diferencia entre obtener un 1 o un 0 en esa posición de memoria.

La programación se generó de la siguiente forma. Se escribió el código fuente en el lenguaje ensamblador creado para este procesador. Después de exhaustivas verificaciones sobre el funcionamiento, se generaron listados de salida del ensamblador, consistente en una interminables sucesión de ceros y unos, (la imagen en binario del programa ejecutable) y luego se “tejió” este entramado en la memoria de núcleos ya mencionada.

La titánica tarea de enhebrar los cables en los núcleos de ferrita, respetando los ceros y unos del código binario impreso en miles de hojas de papel, fue realizada por mujeres que generalmente se reclutaban de las fábricas textiles de Massachusetts, debido a su habilidad y vista entrenada para el “bordado”. En bastidores especiales se disponían las placas memoria de anillos, y de acuerdo al diseño de ceros y unos que correspondía a esta placa, se enhebraban por fuera o por dentro del anillo el cable correspondiente. Estas trabajadoras recibieron, por parte de todos los integrantes del programa Apollo, el nombre, entre cariñoso y peyorativo, de LOL (Little Old Ladies, viejitas).

La titánica tarea de enhebrar los cables en los núcleos de ferrita, respetando los ceros y unos del código binario impreso en miles de hojas de papel, fue realizada por mujeres que generalmente se reclutaban de las fábricas textiles de Massachusetts, debido a su habilidad y vista entrenada para el “bordado”. En bastidores especiales se disponían las placas memoria de anillos, y de acuerdo al diseño de ceros y unos que correspondía a esta placa, se enhebraban por fuera o por dentro del anillo el cable correspondiente. Estas trabajadoras recibieron, por parte de todos los integrantes del programa Apollo, el nombre, entre cariñoso y peyorativo, de LOL (Little Old Ladies, viejitas).

Podemos decir entonces que el programa espacial Apollo fue realizado gracias al esfuerzo e ingenio de miles de personas, que trabajaron en pos de un objetivo que parecía imposible de alcanzar en esa época. Las anónimas tejedoras de Massachusetts cargaron el programa de navegación de la AGC de las naves Apollo, tejiendo, bit a bit, los más de 500.000 anillos de memoria de dicha computadora.

Hugo Bordahandy

Deja un comentario

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

Scroll al inicio