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?
Uma 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.
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:
ResponderExcluirhttps://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.
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.
ExcluirJá, 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.
Um computador 6800 com painel binário era o Altair 680:
ResponderExcluirhttp://www.swtpc.com/mholley/Altair/680B_Manual/Schematic.pdf
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).
ExcluirO software / firmware é que vai fazer a diferença específica. Pretendo colocar um interpretador Forth e me aproximar do OpenFirmware para controle do hardware.
Meu primeiro computador foi o MEK6800D2 que tinha um painel hexa, so que era por software.
Excluirhttp://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.
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.
ExcluirEu 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.