Ano 1 · Ano 2 · Ano 3 · Ano 4 · Ano 5 · Ano 6 · Ano 7 · Ano 8 · Ano 9
Tópicos › Sétimo ano › Patinho Feio
Lucas Alberto começou um emulador próprio do Patinho Feio em C com SDL e Dear ImGui. Felipe "Juca" Sanches explicou detalhes da máquina e dos periféricos, e o emulador chegou a rodar parte do HEXAM. Felipe também lembrou as fitas perfuradas ainda não lidas e reencaminhou a reconstituição do pré-loader feita por João José Neto.
Sétimo ano: novembro de 2023 a outubro de 2024
Partindo do código da versão em Arduino, Lucas escreveu um emulador com interface em Dear ImGui. Corrigiu a instrução PUG e implementou a SUS até o HEXAM chegar à instrução PARE, e publicou o rascunho no GitHub do grupo.
Lucas Alberto perguntou se havia emuladores do Patinho Feio. Felipe apontou o driver no MAME (src/mame/usp), a versão em Arduino e a versão para Raspberry Pi Pico, ambas feitas para painéis-réplica, e passou o comando de compilação parcial do MAME. RicBit contou que a compilação completa levou 85 minutos e apontou um sprintf com risco de buffer overflow em patinho_feio.cpp, o que levou a uma discussão sobre trocar sprintf por snprintf no MAME.
Lucas Alberto começou um emulador do Patinho Feio em C com SDL, partindo do código do Arduino e com hexdump da RAM durante a execução. Recebeu acesso à organização ArqueologiaDigital no GitHub e, por sugestão de Pablo, passou a usar Dear ImGui na interface. Conseguiu carregar binários do repositório do Patinho Feio e rodar parte do HEXAM (apendice_g__hexam.bin) até o ponto em que o programa espera E/S. Felipe explicou as cores do painel e por que as luzes de fase não mudam (a emulação é por instrução), além de lembrar que o endereço de entrada é dado pelas chaves e que a memória é de 4 kB.
Lucas tinha dúvida sobre onde as instruções de deslocamento e giro guardam o resultado; Pablo sugeriu que fosse no acumulador, e Lucas decidiu implementar assim. Lucas descobriu também que o HEXAM corresponde à listagem do Apêndice G do manual do montador do Patinho Feio. Depois de corrigir a instrução PUG e implementar a SUS, o programa chegou à instrução PARE. Felipe explicou que a PUG (pula e guarda) não usa pilha e por isso não permite recursão, descreveu as placas de interface para periféricos (possivelmente uma DECwriter III) e as características da Teletype ASR-33: 110 baud, ASCII de 7 bits com paridade.
Lucas Alberto publicou no repositório do grupo o rascunho do emulador do Patinho Feio que vinha desenvolvendo e convidou outras pessoas a contribuir.
Parte das fitas perfuradas ainda não foi lida, e o vídeo da leitora de fita da USP mostra o cabeçote emperrando. Felipe reencaminhou mensagens de 2017 em que João José Neto reconstitui de memória fragmentos do micro pré-loader.
Felipe lembrou que transcrever uma listagem impressa também é uma técnica de dump e que parte das fitas perfuradas do Patinho Feio ainda não foi lida: algumas estão com Sebastiao, outras ficaram guardadas com terceiros. Indicou o vídeo da leitora de fita da USP, cujo cabeçote emperrava, e o professor Fernando Redigolo (LaSSu/USP) como contato para agendar novos testes.
Felipe reencaminhou mensagens de 2017 em que o professor João José Neto, depois de saber da recuperação do HEXAM, reconstituiu de memória fragmentos do micro pré-loader do Patinho Feio em hexadecimal e pediu testes no simulador. Ele também registrou que o loader absoluto foi escrito por Victor Mammana de Barros em macro assembler do IBM 1130.