Teensy Z80: um computador de 8 bits usando um Arduino (e um Teensy) como memória e periféricos
O Z80 era a CPU do MSX, Master System e outras maravilhas dos anos 80, e um entusiasta decidiu reviver um deles, usando microcontroladores modernos no lugar da RAM e dos periféricos.
Parece história de pescador: Colin "Domipheus" Riley encontrou, no fundo de uma caixa de sucata eletrônica, o Z80 à direita na foto abaixo. Chegou o período de férias do final do ano, e ele resolveu fazer algo com o chip (praticamente o mesmo que vinha no seu primeiro computador, um ZX Spectrum – do qual o brasileiro TK-90X era clone), e acabou criando um projeto tão legal que até fiquei com vontade de algum dia imitar.
Ele começou usando um Arduino Nano para fornecer um sinal de clock para o Z80, para ver se ele bootava e tentava executar alguma coisa. Para poder identificar o resultado, ele conectou leds a algumas das vias do barramento de endereços do Z80, como você vê acima, e pôde ver eles piscarem conforme a CPU fazia solicitações de acesso à memória (que não estava lá).
O teste inicial logo funcionou. Após alguns experimentos que demonstraram a tolerância do Z80 a ciclos de clock irregulares (é possível fazer modelos cujo clock é dado por uma manivela!), Colin achou que dava para ousar mais, e deu início a um projeto mais ambicioso, que ele chamou de Teensy Z80.
Ele plugou os pinos de um Teensy 3.11 a todos os pinos do Z80, e passou a programar o Teensy para agir como interface entre o Z80 e tudo que este tentasse acessar.
Essencialmente, isso equivale a fazer o Teensy simular o comportamento de bancos de memória e de periféricos conectados às portas de E/S do Z80, o que leva a poder simular ou emular periféricos como um display em modo texto, um teclado, uma porta serial ou até a leitura e escrita em um disco. E tudo isso já está total ou parcialmente implementado.
Em um segundo post, Colin contou como fez para implementar suporte ao modo 2 de interrupções do Z80 (para reagir a eventos como a disponibilidade de um caracter na serial, por exemplo), e também sobre o modo debug que ele definiu.
O código e outras informações está disponível no GitHub e, definitivamente, vou acompanhar o desenrolar desse projeto.
- Teensy é uma placa de desenvolvimento no estilo do Arduino, e parcialmente compatível com ele, mas com alguns recursos adicionais interessantes. ↩
Comentar