- Em comparação com os 128 KB de memória do Macintosh original, os 264 KB de RAM do Raspberry Pi são suficientes. Em 1984, o Macintosh custava um terço do preço de um Volkswagen Golf.
- Emula um Mac com RP2040, conectando VGA monocromático e USB/teclado para executar aplicativos dos primeiros Macs
- Com as informações publicadas no GitHub, qualquer pessoa pode montar o seu
O que é o Pico-Mac?
- O microcontrolador Raspberry Pi RP2040 (usando a placa Pico) gera vídeo VGA monocromático, recebe entrada de teclado/mouse USB e emula um computador Macintosh 128K e seu dispositivo de armazenamento em disco
- Os 2 MB de flash do RP2040 são suficientes para uma imagem de disco com o OS e os softwares
- É possível executar aplicativos antigos do Macintosh, como MacDraw, MacWrite e MacPaint
Jornada
Três regras
- Precisa ser divertido.
- Não quero aprender assembly 68K.
- Não quero me aprofundar demais nos detalhes internos do software de sistema dos primeiros Macs.
Mac 128K
- CPU Motorola 68000, 8 MHz.
- Configuração básica de hardware, como mapa de memória, teclado/mouse e varredura de vídeo.
- O Mac 128K e o Mac 512K diferem apenas na RAM.
- O Mac Plus adiciona SCSI e drive de disquete de 800 KB.
Emulador de Mac: umac
- Foi construído um emulador de Mac 128K usando o interpretador Musashi 68K.
- Carregamento da imagem de ROM, alocação de RAM e configuração de mensagens de depuração e logging.
- Foi adicionada a decodificação de endereços para direcionar leituras/escritas da CPU para RAM ou ROM.
- Após acessar o chip IWM, apareceu o ícone "Unknown Disc".
- Ao envolver tudo com um frontend SDL2, foi possível verificar a atualização da tela em tempo real.
Hardware e RP2040
- Saída de vídeo 512x342x1 para VGA e integração do exemplo TinyUSB HID.
- O trabalho com VGA PIO faz a varredura dos dados de vídeo, e o DMA é usado para enviar os dados do framebuffer.
- Após várias reconfigurações de canais DMA, foi obtida uma saída de vídeo estável.
De volta à emulação
- O grande jump table de decodificação de opcodes do Musashi foi alterado para ficar armazenado na flash.
- O disassembler e a contagem de ciclos de execução foram removidos.
- O uso de RAM foi minimizado para permitir build e execução no Pico.
Desempenho
- O Pico foi overclockado para 250 MHz para melhorar o desempenho.
- Ao armazenar na RAM as 200 funções de opcode mais usadas, chegou-se a 1,4 MIPS.
Despedida
- O projeto MicroMac foi uma experiência divertida e instrutiva.
- É possível montar o seu próprio a partir do link no GitHub.
Opinião do GN⁺
- Projeto interessante: o MicroMac é um projeto interessante que emula um Macintosh clássico com hardware barato. A combinação de software e hardware permite sentir a diversão da engenharia.
- Oportunidade de aprendizado: este projeto oferece a engenheiros de software iniciantes uma boa oportunidade de entender a interação entre hardware e software. Em especial, dá para aprender conceitos como emulação, PIO e DMA.
- Otimização de desempenho: no processo de otimização de desempenho, é possível aprender diversos desafios técnicos e formas de resolvê-los. Em particular, ajuda a entender a importância do gerenciamento de memória e do overclocking.
- Compartilhamento com a comunidade: por meio do GitHub, o projeto pode ser compartilhado e abre oportunidades de colaboração com outras pessoas. Isso mostra bem as vantagens da comunidade open source.
- Possibilidades futuras: o projeto tem potencial de expansão com o uso de MCUs com mais RAM. Isso abre a possibilidade de executar aplicações mais complexas.
1 comentários
Comentários no Hacker News
Dificuldade para encontrar cabo VGA: Recentemente precisei de um cabo VGA para uma instalação artística, mas ninguém por perto tinha um, então no fim precisei comprar um novo. É uma pena, considerando quantos cabos acabam sendo jogados fora.
Projeto Amiga: Queria montar um Amiga capaz de rodar o AmigaOS 3.2. A ideia de fazer com impressão 3D uma pequena carcaça no formato original é adorável. A experiência fica um pouco incompleta sem um drive de disquete antigo, mas gosto da ideia de usar uma máquina dedicada em vez de rodar um emulador em um desktop já existente. A abordagem de baixo nível, com o RP2040 fazendo o papel do 68k, é interessante.
Primeira impressão do Mac: Eu trabalhava em uma loja de informática quando o Mac apareceu pela primeira vez. Vi os cantos arredondados da tela e admirei a genialidade disso.
Elogio ao projeto: Este projeto é muito impressionante. Foi divertido de ler, e também gostei do estilo de escrita. Em projetos embarcados, tento fazer builds para dois alvos para prototipagem/debug rápido, mas acabo usando o build para PC com mais frequência. Mais gente deveria fazer isso.
Interface VGA: A interface VGA é a parte mais impressionante.
Desafio de hackear o ESP32: Tentei rodar o vMac em um ESP32, mas não consegui. Este projeto está em um nível muito mais alto. Meus respeitos.
Explorando pequenos SBCs: Fico curioso sobre qual seria o menor SBC capaz de emular, em desempenho total, o último Mac 68k ou um Mac PPC de meados/final dos anos 90. Colocá-lo em um chassi moderno de notebook poderia virar um útil notebook em "modo zen", capaz de rodar do System 7.6.1 ao Mac OS 9.x.
Espelho do blog: O blog parece estar sobrecarregado, então compartilho um link espelho.
Menção ao MacPaint: Explica por que não mencionou o MacPaint. Bill Atkinson conhecia todos os truques e provavelmente os teria usado para fazer o MacPaint funcionar dentro das restrições originais. Para o autor, não seria uma disputa justa.
Encontrando um conector VGA: Eu precisava de um conector VGA, mas não conseguia encontrar um. Durante uma caminhada na hora do almoço, encontrei um cabo VGA na rua. Às vezes essas coisas acontecem.