domingo, 19 de março de 2017

Painel de LEDs e chaves para o projeto Sofia.

Um dos objetivos do projeto Sofia (em búlgaro, София) é evitar o uso de tecnologias atuais, especialmente emuladores e cross-compilers. A questão é: como colocar alguma coisa na memória de um computador sem ele ter software que permita editar sua memória?

A solução é construir um painel de LEDs e chaves controlado apenas com circuitos integrados discretos (nada de processadores, microcontroladores, PLDs ou FPGAs), que acessem a memória do computador, usando DMA de forma concorrente com o processador.

Vou documentar essa etapa do projeto Sofia no site hackaday.io como um projeto específico, uma vez que ele deve servir aos demais computadores homebrew que pretendo montar.

6 comentários:

  1. Minha sugestão é que compensa usar um número maior de TTLs para fazer um painel hexadecimal ao invés de um painel binário. Veja a diferença entre o Patinho Feio e o G10, por exemplo:

    https://plus.google.com/117567126361658403526/posts/Wg6yqoeHJKn

    Digitar um programa num painel binário é uma experiência didática interessante, mas algo que ninguém quer repetir uma segunda vez. Já em hexa é algo razoavelmente prático.

    Além de ler e escrever na memória, o painel precisa no mínimo poder forçar o processador a pular para um endereço específico. Um botão de reset ou de interrupção resolve, mas não é ideal. É interessante poder executar passo a passo ou normalmente e melhor ainda é poder definir um ou mais "break points".

    A funcionalidade mais avançada é poder ler e alterar os registradores.

    ResponderExcluir
    Respostas
    1. Acrescentar circuitos para decodificar os LEDs (valores hexa) em displays de 7-segmentos e para fazer entrada de valores em hexa a partir de um teclado (botões de pressão) específico são possibilidades reais para o painel.

      Já, determinar ponto de partida para execução de código ou visualizar o conteúdo de registradores exige a execução de código previamente programado. Nestes casos, fica fora do escopo proposto do painel... Ou não!

      As opções são especificamente reset e interrupção, o que não chega a ser um problema, afinal a proposta do painel é permitir a inserção do programa monitor na memória (que inclui flash EEPROM, tornando o programa em firmware). Uma vez lá, basta levar o painel a ler determinados endereços de memória onde o código escrito anteriormente armazene os valores. Vou pensar nisso com carinho.

      Excluir
  2. Um computador 6800 com painel binário era o Altair 680:

    http://www.swtpc.com/mholley/Altair/680B_Manual/Schematic.pdf

    ResponderExcluir
    Respostas
    1. Eu tenho pesquisado, baixado e organizado a documentação desses poucos computadores que foram feitos com o MC6800. A parte de hardware vai ser um apanhado de ideias desses computadores (exceto pelo gerenciamento de memória e, talvez, de controle de acesso).

      O software / firmware é que vai fazer a diferença específica. Pretendo colocar um interpretador Forth e me aproximar do OpenFirmware para controle do hardware.

      Excluir
    2. Meu primeiro computador foi o MEK6800D2 que tinha um painel hexa, so que era por software.

      http://www.vintagecomputer.net/motorola/mek6800d2/

      A Motorola tinha algumas variações de firmware que eram populares. O capítulo 11 do livro "Using Microprocessors and Microcomputers: The 6800 Family" de Joseph Greenfield e William Wray lista o Exbug, Minibug, Mikbug, Minibug II, Minibug III, J-Bug e Microbug. Eles eram vendidos na forma de uma ROM. As diferenças eram em que faixa de endereços ficavam e qual era o hardware para comunicar com o programador.

      Excluir
    3. Tanto o MEK, quanto SWTPC, Altair 680, entre outros, usam firmware previamente gravado na ROM para controlar painéis e teclados, ou seja, foi feito um processo externo ao computador (inserção dos dados e gravação da ROM). A ideia do painel do Sofia é ser o primeiro ponto de entrada de um firmware que dê outras funcionalidades ao computador, em especial um software monitor e o driver de comunicação serial.

      Eu tenho algumas listagens desses programas monitores que vc citou, mas não consegui uma cópia desse livro (nem eletrônico, nem em papel).

      E o seu MEK6800, ainda existe? O único "computador" com 6800 que eu cheguei perto foi um kit didático Heathkit ET-3400, que está no Laboratório Hacker de Campinas.

      Excluir