in

Thug lifeThug life GeekyGeeky

El código fuente del Apollo 11 a tu disposición

Con esto del 40 aniversario de la llegada del hombre a la Luna no hacen más que sacar sorpresas relacionadas con el evento. Gracias a la colaboración de Google y de la NASA se ha publicado el código fuente del módulo de mando y del módulo lunar de la misión Apollo 11. Tienes la posibilidad de comprobar cómo se hacían las cosas antes. No es que vaya a acabar con la crisis o con el cáncer pero como curiosidad tecnológica no tiene precio.

La Luna está de moda, de eso no cabe la menor duda. El bombardeo constante por parte de los medios no admite réplica, ni las exigencias del guión tampoco, por tanto, aquí nos encontramos de nuevo ofreciendo una curiosa información referida a la misión del Apollo 11. Se trata de la publicación del código fuente de los programas del Módulo de Comandos(comanche054) y Módulo Lunar (Luminary099) utilizados en la famosa nave que todos estamos hartos de nombrar ya. Los más graciosos seguro que esperan ver algo de Microsoft oculto entre las líneas de código pero la prueba de que Bill no metió las manos en el diseño la tenemos en el hecho de que la misión concluyó con éxito.

En eso y en que el código ha sido lanzado de manera pública para que cualquiera pueda verlo sin cobrar por ello. El código transcrito ahora se encuentra en los repositorios de Google Code y se puede ejecutar sobre Virtual AGC (Apollo Guidance Computer), un emulador del AGC que veréis en el video y que puede correr sobre Linux, MacOSX y Windows entre otros. La computadora y su software fueron desarrollados por el Laboratorio de Instrumentación de la MIT, también conocido como los Draper Labs.

Por restricciones de memoria no convenía escribir el código directamente en lenguaje ensamblador del AGC, razón por la cual se diseñó un intérprete que funcionaba algo más lento pero cumplía con las condiciones especiales de estas máquinas. El código interpretado contenía instrucciones para manejar vectores y funciones trigonométricas, algo de crucial importancia en sistemas de este tipo.

Otra peculiaridad de este código fuente es que se grababa como firmware y sólo se le podían realizar modificaciones en caliente, aunque eso sí, las variaciones se podían ejecutar desde la Tierra y desde la propia nave por mano de los astronautas si lo consideraban necesario. Si alguno de vosotros entiende el lenguaje ensamblador de procesadores antiguos como el MOS6502 (Atari, Commodore, Apple) o Z80 (Spectrum, MSX) no tendrán problemas en entender el del Apollo.

Código fuente del Módulo de Comandos (302 líneas)

Código fuente del Módulo de Comandos (302 líneas)

Código fuente del Módulo Lunar (1.474 líneas)

Código fuente del Módulo Lunar (1.474 líneas)

Este código no tiene mucha utilidad a día de hoy pero resulta muy interesante observar cómo se programaba en aquellos sistemas considerados críticos y de alto riesgo. La calidad del código debía estar fuera de toda duda y depurado hasta el extremo. Fijarse en la limpieza conceptual del diseño y en la optimización de las instrucciones. Apenas necesitan 300 líneas para el Módulo de Comandos y 1400 líneas para el Módulo Lunar. Cualquier error hubiera sido catastrófico para la mision, sin embargo, la prueba de que todo se hizo correctamente la tenemos hoy en forma de 40 aniversario de la llegada del hombre a la Luna. La digitalización en PDF de todos los códigos la puedes encontrar haciendo click aquí.

Un pequeño paso para las noticias de Neoteo, pero un gran paso para el código fuente público.

Reportar

¿Qué te pareció?

Escrito por imported_Kir

32 Comments

Leave a Reply
  1. Por lo que veo, el programa compila a nivel basico en ensamblador 8086 no en 6502. Pero vamos, hace mas de 10 años que no toco ensamblador osea que no estoy seguro al 100%…

    • Hola, ¿me puedes aclarar eso del "nivel básico del 8086"?

      Hace poquitísimo he estado programando en el ensamblador del 8086 que dices… y no se me parece en nada, aunque he de reconocer que soy nuevo en esto del ensamblador de dicha máquina.

      Mirando el código fuente, no encuentro ni siquiera la instrucción "mov" que es la "reina de las instrucciones" por así decirlo. La única coincidencia que veo es alguna linea comentada en la que se menciona AX y BX, pero nada más. No veo que se manipulen esos registros directamente.

      • @cuatro: No sé si de verdad eres argikt o te haces pasar por él. Si de verdad lo eres (o si se pasa por aquí el verdadero), ¿por qué no te atreves a dar aunque sea algunas nociones sobre el tema? No hace falta contarlo todo.

        Respecto a si lo entiendo o no, es problema mío 😉

  2. "Los más graciosos seguro que esperan ver algo de Microsoft oculto entre las líneas de código pero la prueba de que Bill no metió las manos en el diseño la tenemos en el hecho de que la misión concluyó con éxito"

    Ya tardabais en hacer una broma en contra de Ms, ¿cuánto ha pasado desde la última? ¿5 horas? Vas a necesitar pastillas para dormir, ya veo lo contento que estás con tu sistema operativo y lo obsesionado que estás con Windows; el cúal es tan malo y tan insignificante que provoca que de cada 10 palabras que escribes una sea "Microsoft".

    Te aconsejo una terapia anti odio y otra anti cruzadas Ms.
    Vive y deja vivir.

    • Mejor deja de alardear con lo de microsoft era una broma por dios!!! acaso cada ves que alguien haga una broma tendremos que poner como posdata : PDT: BROMA no jodas…

  3. Que sensibles son algunos! Lo de MS es broma, todos sabemos que el Microsoft Windows se usa, lo usamos (no siempre legalmente) y creo que el solo hecho de haberlo hecho (yo por lo menos desde el 1992, Linux lo uso desde el 1996) nos da derecho a criticarlo y hablar mal de el, asi como del primo vago que todos tenemos…

    Menos sensibilidad y mas bromas…y es obvio que el Apolo logro llegar (??? aun tengo dudas) por tener un buen programa y no uno que se bloqueara facilmente como por ejemplo…Windows ME!!! Bien ya hice la mia ahora un sensible que me critique…

    • Linux es una mierda,

      no soporta gran número de periféricos, es un coñazo actualizar ciertas aplicaciones ya que suele haber dependencia con otros paquetes teniendo que al final actualizar medio sistema, tiene un gran nº de xploits, root kits, troyanos, desbordamiento de buffers, reza para que te funcione en ciertos portátiles al 100% de compatibilidad, cada distro va a su bola, tiene una interfaz de ventanas copiada (tanto criticar a Ms porque ellos copiaron de Apple) que por cierto a un servidor se le ha quedado colgado el gnome más de una vez, no sirve para juegos.

      Pero no sean sensibles, es solo una broma, tengo derecho a hablar mal de él, asi como del primo vago que todos tenemos… Menos sensibilidad y mas bromas. Bien ya hice la mia ahora un sensible que me critique…

      • ¿Alguna vez has explotado alguna de esas vulnerabilidades de las que hablas? Yo creo que no…

        Cualquier tonto abre la boca, pero no cualquier tonto hace las cosas…

        A leguas se ve que eres de esas personas que se dedican a criticar en vez de resaltar las virtudes de algo o de alguien, creo que la mayoría de los problemas que se presentan en Linux para el usuario promedio se resuelven investigando un poco, la mayoría de las veces tienes que modificar una o dos líneas de un archivo para que funcione de manera adecuada.

        Creo que tardas más tiempo en hacer un análisis con un Antivirus en Windows, que ejecutar un sudo y modificar unas cuantas líneas de configuración.

      • ¿Es que necesito explotar una vulnerabilidad para saber que existe? menudo argumento!
        ¿Has pisado alguna vez en la luna? ¿no? pues emepezaría a dudar de su existencia, tal vez sea una ilusión óptica. Linux está petada de xploits y si no sabes eso es que no sabes una mierda de administrar un servidor Linux.

        Y encima te excusas en que los problemas se resuelven investigando un poco!!! jajaja! si señor toda una solución, investiguen señores! que es gratis… que seriedad.

        Que pena de Linux fan boys.

      • JAJAJAJAJAJAJAJA POBRE QUE SE MA HACE…JAJAJA NO SABES LO QUE DICES HAS DE ESTAR BIEN SALADO…..HAY DIOS!!! SI EN CERIO BUENA BROMA MUY BUENA BROMA….

  4. Entonces todos los sitemas operativos son mierda.

    Pues hay condiciones para que asi lo sean

    Todos son vulnerables, todos tienen errores, a todos les han hecho virus, espias,
    todos tienen en alguna ocasion incompatibilidad con cierto hardware.

    La pregunta es cual es el mas mierda?

    HAGAN SUS APUESTAS SEÑORES

  5. Editores de Neoteo: Como sugerencia les pido que agreguen una seccion mas a su pagina llamada "Catarsis", en ella podrian invitar a que los lectores a purificarse de tanta pasion negativa e impulsividad en sus comentarios…
    Paz, Amor y sarcasmo

  6. Hombre, pues el mejor OS es el que me puedo diseñar yo mismo, asi si explota la compu será mi culpa xD.

    Un OS no es una salida al parque diversiones, en una PC falla muchisimo por la gran variedad de perifericos que existen, una Mac no falla tanto y un Linux/GNU fabricado por uno mismo nunca tendra errores.

    Asi como las rutinas de programación que demostraron los Apollo, el código debe estar programado explicitamente para el hardware.

  7. Bueno ya entendi lo que paso, ellos creyeron llegar a la luna, porque eso les decia el poderoso mainframe que tenia menos memoria que mi celular, Me queda la duda de porque Neil Armstrong siempre al preguntarle sobre las estrellas dice que "no se acuerda", que farsa por Dios

    • Una farsa, ¿porque? ¿Por decir que no se acordaba de las estrellas? Eso es patético, señor Anibal.

      Digame, si hubiera dicho que sí, que vio estrellas, a caso la gente como tu no diria: Vio las estrellas y no se ven en la foto, ¡¡FRAUDE!!

      Al decir que no probó que fue a la Luna.

    • YA TU!! eso de la luna ya paso de moda ademas que tiene de malo el no haber ido solamente que los estadounidenses se sentirán avergonzados de su país y nosotros nos burlaremos de ellos y que no son lo que aparentan ser (el país mas poderoso del mundo) esa es la razón por la cual los psicópatas conspiracionistas buscan la falsedad del alunizaje.

  8. En fin pues como no se nada de esas cosas (ensambladores y esas cosas) lo único que me queda decir es que es un buen recuerdo histórico y la manera de ver como programaban en esa época lo que considero bueno

    • Imagínense una pantalla azul en pleno vuelo espacial jajajajajaja reiniciando el apollo jajajajajaj y al llegar a la luna que no es compactible con el sistem…..jajajajajaja

      P.D.T.: broma!!

  9. Hola Cuatro, perdon por no explicarme bien, el codigo que ves, efectivente no es ensamblador, ni 6502 ni 8086, es un codigo interprete que compila en ensamblador, osea, un codigo que resulta mas sencillo de programar que las famosas sentencias de tres letras en ensamblador, y que a su vez, resulta sencillo para el ordenador convertirlo a un lenguaje mas amigable para el, como ensamblador.

    Espero haberte sido de ayuda.

    • Muchas gracias 😀 me ha servido de ayuda para hacerme una idea.

      Aunque hay que tener en cuenta la diferencia entre compilador e intérprete. Me supongo que lo que dices será que dado ese código, se hará una especie de "traducción" intermedia, y dicha traducción es la que se irá interpretando. ¿Sería algo parecido a lo que hoy en día hace JAVA pero adaptado a las necesidades de la época? (y a mucho más bajo nivel y sin máquina virtual, claro).

  10. ¿Falta de memoria en un ordenador de la NASA? ¿Y para meter entre 500 y 1000 líneas de código? mmmm… algo falla por algún lado.

  11. ¿Falta de memoria en un ordenador de la NASA? me llama la atención..primero porque un código interpretado siempre es de ejecución más lenta que el código nativo del procesador
    segundo el código interpretado no corre directamente sino que necesita un interprete que también ocupa memoria y en tiempo de ejecución memoria extra para alojar punteros, buffers,
    almacenamiento transitorio de entrada/salida de datos etc.

  12. Linda nota. Adhiero algo mas, por los comentarios que
    necio es aquel que dice ser sabio. Sabio es aquel que dice ser ignorante. Asique sin comentarios,,

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

uSbuntu: Instala Ubuntu en una memoria USB

MyDefrag: La evolución de JkDefrag