Juil 24 2009
Exclusif : le code source d’Apollo 11 !
Il est hallucinant d’imaginer qu’ils sont partis sur la Lune avec une si petite puissance de calcul et… si peu de lignes de code.
Pour rappel, l’ordinateur de bord faisait 14ko !!! Ce qui provoqua d’ailleurs une erreur 1202 lors de l’alunissage pour cause de trop plein d’informations (l’ordinateur ne pouvait pas gérer deux radars en même temps).
Le code source en entier est ici.
Extrait :
# Copyright: Public domain.
# Filename: CM_BODY_ATTITUDE.s
# Purpose: Part of the source code for Comanche, build 055. It
# is part of the source code for the Command Module’s
# (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler: yaYUL
# Reference: pp. 883-889
# Contact: Ron Burkey <[email protected]>
# Website: http://www.ibiblio.org/apollo.
# Mod history: 2009-05-12 RSB Adapted from Colossus249 file of the same
# name and Comanche 055 page images.
#
# The contents of the « Comanche055 » files, in general, are transcribed
# from scanned documents.
#
# Assemble revision 055 of AGC program Comanche by NASA
# 2021113-051. April 1, 1969.
#
# This AGC program shall also be referred to as Colossus 2A
#
# Prepared by
# Massachussets Institute of Technology
# 75 Cambridge Parkway
# Cambridge, Massachusetts
#
# under NASA contract NAS 9-4065.
#
# Refer directly to the online document mentioned above for further
# information. Please report any errors to [email protected].
# Page 883
BANK 35
SETLOC BODYATT
BANK
COUNT 37/CMBAT
# PDL 12D – 15D SAFE.
# VALUE OF GIMBAL AND BODY ANGLES VALID AT PIP TIME ARE SAVED DURING READACCS.
EBANK= RTINIT # LET INTERPRETER SET EB
CM/POSE TC INTPRET # COME HERE VIA AVEGEXIT.
SETPD VLOAD
0
VN # KVSCALE = (12800/ .3048) /2VS
VXSC PDVL
-KVSCALE # KVSCALE = .81491944
UNITW # FULL UNIT VECTOR
VXV VXSC # VREL = V – WE*R
UNITR
KWE
VAD STADR
STORE -VREL # SAVE FOR ENTRY GUIDANCE. REF COORDS
UNIT LXA,1
36D # ABVAL( -VREL) TO X1
STORE UXA/2 # -UVREL REF COORDS
VXV VCOMP
UNITR # .5 UNIT REF COORDS
UNIT SSP # THE FOLLOWING IS TO PROVIDE A STABLE
S1 # UN FOR THE END OF THE TERMINAL PHASE.
SPVQUIT DEC .019405 # 1000/ 2 VS
TIX,1 VLOAD # IF V-VQUIT POS, BRANCH.
CM/POSE2 # SAME UYA IN OLDUYA
OLDUYA # OTHERWISE CONTINUE TO USE OLDUYA
CM/POSE2 STORE UYA/2 # REF COORDS
STORE OLDUYA # RESTORE, OR SAVE AS CASE MAY BE.
VXV VCOMP
UXA/2 # FINISH OBTAINING TRAJECTORY TRIAD.
VSL1
STORE UZA/2 # REF COORDS
Louis
juillet 24, 2009 @ 11:05
Arf c’est de l’assembleur 🙂
Bravo aux gars qui codaient avec ça à l’époque (c’est vraiment immonde à programmer ce genre de trucs).
jmplanche
juillet 24, 2009 @ 12:44
Et tu serais surpris de savoir la puissance de calcul de l’ordinateur de bord d’un Concorde … 0 Mhz, 0 RAM.
(en fait, il y a eu ensuite une HP 41CV qui a ensuite été rajouté, surtout pour aider aux calculs de consommation 😉
Mais à l’époque, il y avait de « vrais » pilotes, pas des gars perdus quand une panne informatique arrive. (d’ailleurs la note de 3 syndicats d’Air-France est TRES intéressante et prépare une belle grève à la rentrée si cela continue comme ça)
Ce qui n’empêche que malgré certains soucis, c’était le plus bel avion au monde …
Louis
juillet 24, 2009 @ 2:31
@jmplanche : Tu es sûr que c’étaient eux qui faisaient les calculs ? C’était pas le mécanicien naviguant qui les faisaient ?
DAM
juillet 24, 2009 @ 4:59
@jmplanche : aaahhhh le Concorde… mon regret : n’avoir jamais volé dedans. Le plus bel oiseau de l’aéronautique nous ait donné.
stan
juillet 24, 2009 @ 5:52
vu que j’ai les vertiges dans n’importe quel avion (Caroline si tu nous écoutes)
je vous le laisse … le concorde
keeg
juillet 31, 2009 @ 4:17
C’est flippant. Quand on voit le nombre de ligne de code qu’il nous faut nous pour faire des bricoles^^