As missões Apollo tinham tecnologia não mais complicada do que uma calculadora de bolso.
No link aqui , há informações sobre o Apollo Guidance Computer (AGC)
O computador de orientação Apollo (AGC) de bordo tinha cerca de 1 pé cúbico com 2K de RAM de 16 bits e 36K de memória de núcleo de corda com fios com fios de cobre enfiados ou não através de minúsculos núcleos magnéticos. As palavras de 16 bits eram geralmente 14 bits de dados (ou dois códigos op), 1 bit de sinal e 1 bit de paridade. O tempo de ciclo foi de 11,7 microssegundos. A programação foi realizada em linguagem assembly e em linguagem interpretativa, em polonês reverso.
Então, eu me deparei com algum código-fonte quando pesquisei o que havia lá em cima e notei ótimos comentários (por exemplo: TEMPORÁRIO, ESPERO ESPERAR ESPERANÇA)
VRTSTART TS WCHVERT
# Page 801
CAF TWO # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
TS WCHPHOLD
TS WCHPHASE
TC BANKCALL # TEMPORARY, I HOPE HOPE HOPE
CADR STOPRATE # TEMPORARY, I HOPE HOPE HOPE
TC DOWNFLAG # PERMIT X-AXIS OVERRIDE
ADRES XOVINFLG
TC DOWNFLAG
ADRES REDFLAG
TCF VERTGUID
Os programas atuais da espaçonave eram armazenados na memória do cabo principal , uma tecnologia de memória antiga feita (literalmente) por tecer um tecido / corda, onde os bits eram anéis físicos de material de ferrita. A memória "central" é resistente aos raios cósmicos. O estado de um núcleo não muda quando bombardeado por radiação no espaço sideral.
O software Virtual Apollo Guidance Computer (AGC) também está no GITHUB!
Alguma parte da documentação está aqui.
Outro exemplo de código fonte com ótimos comentários.
033911,000064: 32,3017 06037 FLAGORGY TC INTPRET # DIONYSIAN FLAG WAVING
034090,000243: 32,3241 13247 BZF P63SPOT4 # BRANCH IF ANTENNA ALREADY IN POSITION 1
034091,000244:
034092,000245: 32,3242 33254 CAF CODE500 # ASTRONAUT: PLEASE CRANK THE
034093,000246: 32,3243 04616 TC BANKCALL # SILLY THING AROUND
034094,000247: 32,3244 20623 CADR GOPERF1
034095,000248: 32,3245 16001 TCF GOTOP00H # TERMINATE
034096,000249: 32,3246 13235 TCF P63SPOT3 # PROCEED SEE IF HE'S LYING
034101,000254: 32,3251 04635 TC POSTJUMP # OFF TO SEE THE WIZARD ...
034102,000255: 32,3252 74126 CADR BURNBABY
Minha pergunta aqui é esta:
- Como as equipes que escreviam esse código conseguiram torná-lo funcional, dadas as ferramentas da época?
Porque se você compilar tanto código usado no Apollo 11 ... levaria dias, até semanas. Eu duvido seriamente que os programadores da época deixassem tudo acontecer por acaso.
HOPE HOPE HOPE
acertou na primeira vez.Respostas:
Havia um documentário adorável que estou tentando descobrir sobre John 'Jack' Garman teve que "inventar" um "sistema operacional de multiprogramação com prioridade programada". Isso pode ter sido relacionado ao módulo lander. A história era que, quando você estava pousando na sonda, é melhor você dar prioridade à orientação, porque outras coisas, como a temperatura na cabine pelos próximos 15 segundos, realmente não importavam se você batesse e queimasse. Na primeira tentativa, eles sobrecarregaram o computador e os alarmes começaram a acontecer porque algumas sub-rotinas não estavam sendo executadas. Havia muitos carregados, mas graças ao conceito de prioridade, que Garman previu e incorporou porque achava que era uma boa ideia, as rotinas de baixa prioridade não atrapalharam a rotina de pouso de maior prioridade.
Assistindo ao documentário na época, fiquei impressionado com como era fazer uma grande refatoração no código sem avisar a gerência e quase ser demitido porque você estava atrasado no que deveria estar trabalhando. Nesse caso, no entanto, a refatoração veio à tona quando o motivo dos alarmes foi investigado. (E a gerência ainda estava chateada! :-)
Alguns links:
Não, um “erro de lista de verificação” quase não atrapalhou o primeiro pouso na lua
CONTOS DO COMPUTADOR DE ORIENTAÇÃO DO MÓDULO LUNAR
Como eles o construíram: o software da Apollo 11
Projeto de História Oral do NASA Space Center da NASA Transcrição da História Oral editada
Breve histórico do trecho do programa Apollo da NASA : Cinco minutos depois da queimadura de descida e 1.800 m acima da superfície da Lua, o computador de navegação e orientação LM produziu o primeiro de vários alarmes inesperados do programa "1202" e "1201". O engenheiro de computação do Mission Control Center em Houston, Jack Garman, disse ao oficial de orientação Steve Bales que era seguro continuar a descida. Esses alarmes eram indicações de "excesso de executivos", o que significa que o computador de orientação não pôde concluir todas as suas tarefas em tempo real e teve que adiar algumas delas.
Recordando o trecho do 'Salto Gigante' : sabíamos o que era e que não deveria estar acontecendo. Mas projetamos um sistema que tentou se recuperar de qualquer condição de sobrecarga. Então me lembro de ouvir [o engenheiro de computação da NASA] Jack Garman gritando: "Vá, vá!" E eles foram. Em seguida, ouvimos Neil voar com o LEM e tentar encontrar um bom local para o touchdown. Nossa nova preocupação era a falta de combustível restante. Mas finalmente ouvimos o aviso de contato e depois "A Águia pousou".
Entrevista com Jack Garman
EDIT: Talvez este tenha sido o documentário: Apollo 11: The Untold Story (2006)
Elenco: John R. Garman ...
Ele mesmo - Engenheiro de computação Apollo 11 (como Jack Garman)
(Entre outros).
Atualização: Um hacker da África do Sul resgatou o primeiro computador da NASA no espaço
fonte
Se bem entendi, o processo de desenvolvimento foi a revisão por pares e a experimentação.
A equipe era formada por pessoas como "Math Doctors" - pessoas extremamente dedicadas, inteligentes, apaixonadas e detalhistas, cujas vidas eram dedicadas ao seu trabalho. Então, quando digo revisão por pares, quero dizer muitas revisões por pares ao longo de muitos meses (mais de um ano).
Esses desenvolvedores "executaram as simulações em suas cabeças", "depuraram o software no papel" e trabalharam em grupos com muitos desenvolvedores que olhavam o mesmo código repetidamente até se convencerem de que estava correto. Havia várias equipes - cada uma trabalhando em uma parte do todo.
Meu professor de Métodos Numéricos da Universidade Estadual de Ohio (primavera de 96) escreveu o código que decidia quando iniciar um estágio do foguete auxiliar. Ele descreveu a impressão como sendo do tamanho da lista telefônica (portanto, talvez com 2,5 a 3,5 polegadas de espessura de papel 8,5 x 11 polegadas - ele não descreveu o tamanho da fonte) do código Fortran.
Quando convencidos, lançaram um míssil não tripulado (foguetes tecnicamente não possuem giroscópios) com um rádio a bordo que emitia um sinal sonoro em intervalos regulares. Eles ouviram os bipes até o ponto em que esperavam que o rádio atingisse a lua (colidisse com ela e se destruísse) e parassem de apitar. Eles sabiam que, se perdessem, o rádio continuaria emitindo um bipe muito além do tempo calculado de impacto. O impacto ocorreu 15 segundos após o tempo calculado.
Esta história admitidamente anedótica são minhas lembranças de uma visita ao consultório com o médico. Ele era muito velho e fazia muito tempo. Esta é a minha melhor lembrança.
fonte
O AGC é controlado com verbos e substantivos
O software de comando Apollo não está escrito em nenhuma sintaxe que os usuários reconheceriam hoje. Os astronautas inserem comandos numericamente, com cada número de dois dígitos representando um verbo ou um substantivo. O verbo descreve a ação a ser executada e o substantivo especifica os dados a serem afetados pela ação do verbo.
Os astronautas odiavam a configuração de verbo e substantivo
Ramón Alonso, um dos desenvolvedores de hardware originais da AGC, disse que a interface foi inventada para impressionar os visitantes de seu laboratório, mas permaneceu nos vôos quando ninguém desenvolveu uma interface melhor. Os críticos disseram que não era "científico", e os primeiros astronautas - todos os pilotos de elite - preferiram seletores e interruptores, semelhantes a um painel de controle de avião.
O software como ele foi projetado foi construído basicamente do zero pelo MIT.
Você pode baixar e instalar o programa emulador Apollo Guidance Computer em seu computador pessoal, sem problemas. Aqui está o que parece no Mac OS X.
fonte
Como praticamente todos os outros projetos de software, ele foi realizado sob prazo agressivo e pressão de qualidade. Felizmente, um grande arquivo de material do gerente de projetos de software Howard W. "Bill" Tindall, Jr. está disponível aqui .
Se você provar os memorandos, poderá ter uma noção muito boa do conflito normal entre tempo, recursos e defeitos. Vale a pena notar que o desenvolvimento prosseguiu ao longo de vários anos, como o restante do projeto.
Não consigo encontrar referências específicas de como o software foi criado, mas, dada a data, só posso presumir que grande parte foi feita em papel e caneta, com "simulações" feitas manualmente. Parece que havia um sistema para carregar programas no AGC com cartões perfurados, presumivelmente para testes "rápidos" no solo, sem a necessidade de fabricar memória de corda.
fonte