Um cara motivado implementou um Apple ][ inteiro no seu Arduino Uno
Um ato de amor geek: um Arduino Uno reprogramado com saída de vídeo, entrada de teclado, e capacidade de rodar programas clássicos feitos para o Apple 2, de 1977.
Os computadores dos anos 80 me fascinam, mas Damian Peckett foi muito adiante do que jamais irei: ele programou um Apple ][ inteirinho dentro dos limites de um Arduino Uno.
A emulação de um Apple ][ original é bem completa: tem entrada pelo teclado, saída pelo monitor de vídeo, gravação e leitura de programas em fita cassete,
Ele precisou de algum hardware adicional: um led, um circuito com op-amp para ler e gravar na fita cassete, a capacidade de emitir sons... Fora isso, ele basicamente uso bem a capacidade de software, e bastante criatividade: a interface de vídeo (sim, tem!) foi feita reaproveitando o potencial do chip da interface USB do Uno, por exemplo.
Quanto ao software, ele optou por não usar um dos diversos emuladores da CPU 6502 já existentes, e criou seu próprio, em C e otimizado para as capacidades do Arduino, complementado por testes unitários para todas as instruções deste processador. O emulador executa o BIOS e o BASIC do Apple ][, bem como os programas que o usuário colocar lá.
A imagem acima mostra o resultado de um programa em BASIC que gera fractais de Mandelbrot (também típico dos anos 80...). No momento, o emulador tem capacidade de rodar apenas os modos texto do Apple, mas a restrição aos modos gráficos está relacionada à capacidade de memória do Arduino, e imagino que o autor ainda dará um jeito de contornar, assim como ele vem lidando com uma série de bugs já identificados por ele mesmo ;-)
Os detalhes técnicos sobre o emulador e sobre o Apple ][, além dos downloads dos softwares desenvolvidos pelo Damian para o projeto (incluindo os testes unitários) você encontra no artigo dele: Turning The Arduino Uno Into An Apple ][.
O meu respeito pelo trabalho que ele fez você encontra aqui mesmo. E leia também: Teensy Z80: um computador de 8 bits usando um Arduino (e um Teensy) como memória e periféricos.
Comentar