Código fonte Apollo 11 publicado no Github



Em 20 de julho de 2009, em homenagem ao 40º aniversário do pouso na Lua, as impressões com o código-fonte do programa do computador de bordo Apollo Guidance Computer (AGC) foram digitalizadas e publicadas na Internet . Sete anos se passaram - e agora esse exemplo único da história do computador recebeu uma segunda vida. Hoje, o código-fonte do AGC no assembler é publicado no Github na íntegra, aberto para pesquisa, comentários, forks, etc.

No código, você encontra as chamadas dos famosos erros com os códigos 1201 e 1202 , com os quais Neil Armstrong estava tão preocupado, e muito mais.

No Github, o repositório Apollo-11 decolou rapidamente em 1º lugar na lista dos repositórios mais populares por dia (não há dúvida de que na classificação semanal ele terá o 1º lugar amanhã). Realmente há algo para ver. É especialmente interessante ler alguns nomes de procedimentos ( BURN_BABY_BURN - MASTER_IGNITION_ROUTINE.s ) e comentários no código original.

CAF	CODE500		# ASTRONAUT:	PLEASE CRANK THE
TC	BANKCALL	#		SILLY THING AROUND
CADR	GOPERF1
TCF	GOTOP00H	# TERMINATE
TCF	P63SPOT3	# PROCEED	SEE IF HE'S LYING

TC	BANKCALL	# ENTER		INITIALIZE LANDING RADAR
CADR	SETPOS1

TC	POSTJUMP	# OFF TO SEE THE WIZARD ...
CADR	BURNBABY

O programa possui um código "temporário", como em muitos programas modernos.

TC	BANKCALL	# TEMPORARY, I HOPE HOPE HOPE
CADR	STOPRATE	# TEMPORARY, I HOPE HOPE HOPE
TC	DOWNFLAG	# PERMIT X-AXIS OVERRIDE

E aqui está a versão de 1969 do comentário popular "Isso nunca deve acontecer".

CA	A		# SHOULD NEVER HIT THIS LOCATION

O primeiro ticket já foi criado no repositório do Github - uma discussão sobre o "bug" que precisa ser corrigido no programa.

O desenvolvedor do SilverWingedSeraph escreve: "Um usuário teve um problema bastante sério com a mistura criogênica em tanques de oxigênio com a aparência de uma mensagem de falha". Para reproduzir o erro no programa, repita a seguinte sequência de ações:

  1. Crie um módulo de serviço.
  2. Voe para a órbita lunar.
  3. Na órbita lunar, comece a se misturar em tanques de oxigênio.

“Se houver um problema com a fiação no módulo, o erro poderá ser reproduzido. Cuidado, pois a situação pode ser perigosa para um testador que está tentando reproduzir o erro ”, disse o desenvolvedor no Github, não sem senso de humor.

Obviamente, ele se refere ao famoso acidente com o equipamento do módulo de serviço Apollo 13, após o qual o módulo teve que ser devolvido urgentemente à Terra usando manobras extraordinárias.

Em geral, até o momento, apenas uma cópia física das impressões do programa do módulo lunar foi preservada . Um livro impresso é mantido no Museu do Instituto de Tecnologia de Massachusetts.

O código do programa foi escrito por Don Islescom colegas. Isles, pessoalmente, é o autor de cerca de 2.000 linhas de código responsáveis ​​pelo pouso do módulo lunar.

Você pode tentar executar os comandos de controle Apollo no emulador (este é apenas um simulador de computador, sem a própria espaçonave). Emulador de


computador da nave espacial


Apollo Instruções do emulador Apollo Os computadores

Apollo Command Module (CM) e Lunar Module (LM) pousaram automaticamente na superfície lunar. O computador controlava os motores e servomotores em tempo real.


Nave espacial Apollo


computador de controle a bordo Monitor de computador a bordo

O gerenciamento foi realizado pela Apollo Guidance Computer (AGC). O computador de bordo era equipado com um sistema operacional em tempo real com suporte para multithreading, controlava todos os sistemas, recebendo sinais de radares, telescópios, giroscópios e acelerômetros.

O livro “ Digital Apollo ” descreve bem como o programa priorizou e alocou o tempo da CPU.



Especificações técnicas do computador de controle a bordo da espaçonave Apollo
Os padrões de tempo do AGC foram estabelecidos por um ressonador de quartzo com uma frequência de 2,048 MHz. A memória do computador consistia em 2048 palavras de RAM regravável e 36 K de ROM com amostragem linear em vários núcleos costurados. O ciclo de leitura e gravação de RAM e ROM levou 11,72 μs. O comprimento da palavra era de 16 bits: 15 bits de dados e 1 bit de paridade. O formato de texto de 16 bits do processador incluía 14 bits de dados, um bit de estouro e um bit de sinal.

Consulte também:
Guia de programação de computadores da Apollo Guidance

Source: https://habr.com/ru/post/pt395973/


All Articles