Resgate histórico do computador Patinho Feio (USP - 1971)

Em fevereiro de 2017 eu dei uma aula na Poli, a convite do professor Pedro Luiz Pizzigatti Corrêa, na disciplina de Modelagem e Simulação de Sistemas Computacionais, pros alunos do último ano do curso de engenharia de computação da USP. Segue abaixo o vídeo da aula onde detalho o trabalho de documentação do computador Patinho Feio que eu venho fazendo durante esses últimos anos:

1 curtida

Juca, no podcast Retrocomputaria número 74 parte A aos 14min e 40 segundos o convidado Júlio Neves fala que o Patinho Feio deu origem ao Cobra 530. Procurando mais na internet no site do MCI tem disponível um livro chamado Rastro de Cobra e na página 41 tem a seguinte frase:

“O principal projetista da CPU do 530 foi Stephan Kovach, que na USP já havia trabalhado na CPU do G-10.”

Achei muito bacana.

Sim! Você pode ver que eu já contactei o professor Stephan Kovach, por conta do autógrafo dele na minha réplica do Patinho Feio, como pode ser visto em uma das fotos que publiquei acima nesta thread.

Eu cheguei a enviar alguns emails para ele especificamente sobre o tema do Cobra 530, mas ele ainda não me respondeu. Na época que ele autografou eu não sabia desse vínculo com o projeto do G-10 e do 530. Qualquer dia eu passo lá na USP pra falar com ele mais uma vez e se tiver histórias novas eu conto por aqui.

Obrigado pela mensagem :slight_smile:

Este é o mais antigo “ASCII-art” brasileiro.
Apesar do termo não ser usado naquela época…

A imagem acima foi extraída da tese de mestrado “O Patinho Feio como construção sociotécnica” de Marcia de Oliveira Cardoso da UFRJ, publicada em 2003 que apresenta um relato muito interessante sobre a origem desse desenho:

Segundo o professor João José Neto, posteriormente também foi
incluída, entre os periféricos de E/S, uma impressora. E novos programas foram
feitos para possibilitar a impressão de dados. A primeira impressão foi o desenho
de um Patinho. O desenho foi confeccionado pela irmã de Selma Shimizu e
digitalizado pela equipe do Patinho Feio [Figura 19]. Segundo Antônio Massola, o
tempo para carregar este desenho na memória do Patinho durou uma madrugada.

Todo este processo de construção-adoção do software se estendeu
para o período após a inauguração oficial do Patinho Feio. Muitas das soluções
encontradas neste ciclo foram soluções posteriores à data de inauguração do
minicomputador. Os próprios integrantes do projeto divergem quanto aos periféricos
existentes nesta inauguração. O consenso está no que diz respeito ao fato de ter
sido carregado um programa na memória do Patinho Feio nesta inauguração.
Sobre o desenho do Pato, há divergências se ele foi apresentado na inauguração
ou não. Se ele foi apresentado na inauguração, a impressão do desenho não foi
feita pelo Patinho Feio. A maioria acredita que este desenho foi digitalizado após a
apresentação do Patinho Feio.

Com base na fotografia, fiz uma transcrição do desenho para texto puro (em ASCII pra valer).
Caso seja útil para alguém, segue abaixo:

                 **     ******
                *    ***      ****
                *   *             *
            *******                 *
           *     *                   *
           *    *                     *
               *                       *
              *                   ***   *                          *
             *                   *   *  *                        ***
            *          ****     * ** *  *                       *  *
            *         *    *    * ** *  *                    ***  *
            *         *  ** *    ***** *                  ***    **
***         *          * ** *   ****   *                **    *** *
*  **        *          ****   *   ***********        **     *   *
*    **      *        ***    **              *       *          **
*       **    *      *   ****              **        *         * *
*          *   *     * **               ***         *        **  *
 *          *   *     ** *****     *****            *       *   *
  *          *   **     **    *****    *           *           *
  *           *    *      ***           *         *          **
  *            *    **       *          *         *   *    **
   *            *     **      **      **         *   *     ****
    *        *   *      *       * ****          *   *        *
     * *      *   *      *       *             *   *       **
        ***    *   *     *        *           *   *       *
           *    *   *    *         *        **   *         *
         **      *   *   *          ********    *          *
         *        *   * *                *     *         **  *
          *        *   **                    **          *  **
           **       ** *                                 **  *
             *        *                               *****   *
             **      *                                *      *
               **    *                      *   **  *      ** *
                 *****                       ***  **      *  **
                     *                                    *** *
                     *                                       *
                      *                                     *
                      *                                 ****
                       *                               *
                        *                            **
                         *                         **
                          ****                   ***
                              * **            ***
                                * ************ *
                               * *            * *
                              * *              * *
                             * *               * *
                           ** *                 * *
                          *   ****          ****  *
                          *       ***   ****      *
                           *        **  ***      *
                            *      *      *      *
                            * ******      *******
                             *                 *

Felipe,

Trabalho hercúleo esse seu, e a qualidade apresentada não deixa dúvidas quanto à competência com a qual vem sendo executado!

Eu já pesquisei muita coisa sobre esse computador da USP no meu tempo livre (já faz uns 10 anos desde que eu andei “fuçando” furiosamente pela internet e lendo acerca do desenvolvimento da informática no nosso país). Mas o que você fez até agora já foi muito além do que eu poderia ter imaginado.

Eu assisti também ao vídeo da sua aula na Poli falando a respeito desse trabalho, e uma dúvida me surgiu: você comenta na sua palestra, que devido a restrições do espaço de memória RAM disponível no Arduino (utilizando no seu Painel um UNO, imagino? Não consegui distinguir pelo vídeo), não é possível implementar o código para emulação do Patinho Feio (o UNO só dispõe de 2KB, insuficientes para armazenar os programas do Patinho Feio mais as variáveis de programa do emulador), motivo pelo qual você chegou a mencionar algo como endereçar uma memória RAM externa - o que de imediato me fez pensar, se em um modelo Mega 2560 (com 8KB SRAM) não seria possível a execução do emulador e dos programas?

Me interessou muito essa sua proposta da realização do painel, pelo realismo do “front-end”, tanto na parte física (permitindo a interação “tátil”) quanto na lógica; seria bem legal fazer o painel ser um “Patinho Feio Slim”, com o hardware sendo emulado por uma plataforma de baixo custo e tamanho, mas com recursos mais do que suficientes para realizar esse trabalho.

Eu gostaria bastante de te ajudar com isso, tanto cedendo um Mega 2560 (devo ter uns 2 clones chineses aqui comigo) quanto colaborando na parte do código (na medida do possível). Imagino ser viável “portar” a lógica empregada na sua versão para o MAME em C para dentro do IDE Arduino, compatibilizando-a para rodar nesta plataforma através do remapeamento de E/S.

Também adorei a sua idéia, já parcialmente colocada em prática, de reproduzir todo o hardware original em PCIs unidas através de um barramento comum. Depois de ler todo esse fórum, fiquei com a impressão de que essa idéia deu uma “parada” após o desenvolvimento da CDE-3-DEBUG?
Espero que não; eu gostaria de ver isso tomando forma no mundo real. Concordo com você quanto a deixar tudo exposto, inclusive com as placas de diagnóstico plugadas (como vc mesmo mencionou no seu post).
Tem que ter LEDs piscando, CIs, serigrafia/labels e tudo o mais que atrai os olhares curiosos à mostra. Falando nisso, no seu projeto vc pretende utilizar os TTLs convencionais (se é que ainda se encontra isso por aí) ou fazer um “upgrade” para uma linha compatível, de baixo consumo (LS “Low Power” ou CMOS)?

1 curtida

Em dezembro encomendei a produção das placas CDE-3 e CDE-3-debug no website Curta Circuitos.

https://curtacircuitos.com.br/felipesanches

Seguem abaixo algumas fotos das placas e dos primeiros passos de montagem do circuito soldando conectores, soquetes, capacitores e depois instalando os chips de portas lógicas nos soquetes.

Acabei de terminar a montagem das placas CDE-3 e CDE-3-debug e elas estão funcionando :smiley:

Na foto acima a placa de deputação estimula a CDE-3 com simulando um valor 0x30 no Registrador de Instrução e um valor 0x04 no Registrador de Dados. Com esses inputs, a placa determina que se trata da instrução de armazenamento (+ARA) de dado em memória com endereçamento indexado (sinal +INDICE está ativo). Vemos também que como o registrador de dados é não-nulo, foi indicado também o sinal ativo baixo -RDZ “reg. de dados é zero”.

Os significados dessas instruções, seus opcodes e mnemônicos são resumidas nessa tabela do livro do professor Edson Fregni:

Em breve pretendo gravar um vídeo demonstrando em mais detalhes o funcionamento dessas placas.

Ontem de noite quando tentei ligar as placas pela primeira vez o circuito não funcionou corretamente. Usei um multímetro para inspecionar as soldas e o caminho do sina -RDZ e acabei concluindo que houve um erro de projeto no layout da placa CDE-3. O pino de terra (GND) do CI 74LS30 não estava ligado ao GND do conector da placa.

Abri arquivo do layout de pcb no KICAD e rodei novamente o DRC (Design Rules Checker) e percebi que na realidade havia lá um aviso sobre esse problema que eu acabei não vendo antes de mandar fabricar a placa. Eu tenho o costume de só enviar uma placa para fabricação depois de ter zerado todos os alertas do DRC, mas por algum motivo eu acabei bobeando e não vi esse alerta. Pior que isso: havia 33 alertas similares, todos referentes à interligação dos pinos de GND de todos os CIs da placa.

Bem… depois de um minutinho de tristeza, levantei a cabeça e comecei a mapear quais seriam os remendos necessários para fazer a correção na placa. Aproveitei para simultaneamente ir corrigindo o layout no KICAD de modo que eu possa ter uma placa “Rev.B” caso algum dia eu (ou alguém) queira rodar novamente esse projeto sem ter que lidar com esse erro de layout.

Depois de gastar uma horinha soldando remendos na placa o resultado (que não e bonito mais funciona) foi esse:

Depois disso, a placa funcionou corretamente.

Hoje de manhã notei que um dos opcodes estava gerando sinais incorretos:

O opcode 1010 corresponde à instrução PAN (Pula se acumulador for negativo), corretamente indicada pelo LED +PAN. Entretanto o LED +(PAN+PAZ) está apagado enquanto o (SUS+PUG) está acesso, enquanto eu esperaria o status oposto para esses dois sinais.

Verifiquei nos esquemáticos e não houve erro na atribuição dos sinais aos conectores das duas PCBs. Então fui inspecionar os esquimáticos da CDE-3 e notei que houve um pequeno deslize durante o processo de transcrição para o KICAD a partir dos esquemáticos originais. Vejam abaixo a diferença (os inputs das portas NOT estão trocados):

Isso significa que eu vou ter que fazer mais um remendo na placa (e corrigir o layout para a “Rev.B”). A boa notícia é que como os sinais trocados saem do mesmo CI (a pastilha de portas NOT localizada na posição 3A da placa) o ajuste provavelmente será menor e mais localizado próximo ao chip 3A.

Hmmm… Parece que vai ser um pouco mais complicado do que eu imaginava. Segue abaixo o que eu pretendo fazer:

  1. Cortar as trilhas indicadas em vermelho.
  2. Raspar o esmalte protetor das trilhas nos locais indicados em cinza.
  3. E soldar os fios indicados em verde.
1 curtida

No comecinho de 2018 eu trabalhei com uma máquina leitora de fitas perfuradas que, ao que tudo indica, não foi usada pelo time de desenvolvimento do Patinho Feio, mas que é da mesma época e foi comprada pelo professor Hélio Guerra.

Um relato detalhado deste equipamento encontra-se nesta outra postagem aqui mesmo no Fórum Fiozera:

Nesse final de semana me encontrei com o professor Guido Stolfi em um evento no qual ele demonstrou o sintetizador musical que ele construiu em 1974 e que costumava ser interfaceado com o computador Patinho Feio (e também com um computador da HP MX-21).

Mais informações sobre o sintetizador no site do professor:
http://www.lcs.poli.usp.br/~gstolfi/synthpage2.htm

O Affonso Amendola tava lá também e ficou empolgado para aprimorar o emulador do Patinho Feio no MAME para simular também o sintetizador do Guido:

Seguem abaixo mais algumas fotos:

1 curtida

Semana passada trabalhei na instalação de toda a fiação de LEDs, switches e botões do painel:

Hoje montei um cabo Centronics (de porta paralela) e estou tentando fazer a matricial imprimir… comandada pelo programa “hello world” do patinho feio (que imprimia “PATINHO FEIO\n” na Teletype ASR33)

Fiz uma transmissão ao vivo no YouTube comemorando o aniversário de 50 anos da inauguração do computador Patinho Feio:

Para comemorar o aniversário de 50 anos do Patinho Feio, será realizado um evento no dia 22/09, no auditório Prof. Francisco Romeu Landi, do prédio da Administração da Poli, entre 9h e 11h30. Engenheiras e engenheiros que atuaram no projeto estarão presentes e receberão homenagens.

Vídeo do evento comemorativo na Poli:

Eu sou um entusiasta de eletrônica analógica e estou tentando montar uma coleção de instrumentos da HP, comprando-os com defeito e restaurando-os. No entanto, percebi que muitos desses instrumentos eram da empresa “Cobra”. Ao pesquisar mais a fundo, descobri que essa empresa foi a primeira brasileira a fabricar computadores 100% nacionais. Pesquisando ainda mais, encontrei o “Patinho Feio” e me encantei com toda a história e documentação que o Felipe conseguiu reunir! Nunca tinha visto, em toda a minha vida (tenho 25 anos), material em português sobre computação nesse nível.

Sempre tive acesso a muita informação sobre mini computadores e mainframes estrangeiros, como PDP 11, IBM e Centurion. Mas nunca na minha vida imaginei que houvesse matérias como essa sobre tecnologia brasileira.

Não sei se o Felipe abandonou a restauração, mas vou tentar continuar de onde ele parou! Quero muito montar uma réplica, ou melhor, um protótipo 3 desse computador!

Olá, Lucas!

Vi e respondi seu comentário em meu vídeo no YouTube hoje mais cedo. Fico muito feliz em saber que você tem interesse em ajudar no projeto. Eu não diria que o esforço de resgate histórico do Patinho Feio tenha sido “abandonado”. Mas com certeza esteve pausado ao longo de 2023 por conta da minha mudança para outro país. Hoje em dia estou morando em Londres.

Mas dado o seu interesse, podemos com certeza agendar uma chamada de vídeo para eu te contar em mais detalhes em que etapa estamos e quais próximos passos podemos dar para de fato construir uma réplica do computador. Esse também é um dos meus objetivos de longo-prazo.

Por favor, me adicione no Telegram (meu nome de usuário é @fsanches) e poderemos conversar mais e tentar fazer um planejamento. Pode também me contactar pelo email juca@members.fsf.org se preferir.

Happy Hacking!

1 curtida