- En comparación con los 128 KB de memoria del Macintosh original, los 264 KB de RAM de la Raspberry Pi son suficientes. En 1984, el Macintosh costaba un tercio de un Volkswagen Golf.
- Emula una Mac conectando VGA monocromático y USB/teclado al RP2040 para ejecutar aplicaciones tempranas de Mac.
- Cualquiera puede construirlo por su cuenta con la información publicada en GitHub.
¿Qué es Pico-Mac?
- El microcontrolador Raspberry Pi RP2040 (usando la placa Pico) maneja video VGA monocromático, recibe entrada de teclado/mouse USB y emula una computadora Macintosh 128K y su dispositivo de almacenamiento en disco.
- Los 2 MB de flash del RP2040 son suficientes como imagen de disco para el OS y el software.
- Puede ejecutar aplicaciones tempranas de Macintosh como MacDraw, MacWrite y MacPaint.
El recorrido
Tres reglas
- Tiene que ser divertido.
- No quiero aprender ensamblador 68K.
- No quiero profundizar demasiado en las entrañas del software de sistema de las primeras Mac.
Mac 128K
- CPU Motorola 68000, 8 MHz.
- Configuración básica de hardware como mapa de memoria, teclado/mouse y escaneo de video.
- La Mac 128K y la Mac 512K solo se diferencian en la RAM.
- La Mac Plus añadió SCSI y una unidad de disquete de 800K.
Emulador de Mac: umac
- Se construyó un emulador de Mac 128K usando el intérprete Musashi 68K.
- Carga de imagen ROM, asignación de RAM y configuración de mensajes de depuración y logging.
- Se añadió decodificación de direcciones para dirigir las lecturas/escrituras de CPU a RAM o ROM.
- Tras acceder al chip IWM se obtuvo el ícono de "Unknown Disc".
- Se envolvió con un frontend SDL2 para comprobar la actualización de pantalla en tiempo real.
Hardware y RP2040
- Genera video 512x342x1 por VGA e integra el ejemplo HID de TinyUSB.
- Mediante trabajo de VGA PIO escanea los datos de video y usa DMA para emitir los datos del framebuffer.
- Después de varias reconfiguraciones de canales DMA, se logró una salida de video estable.
De vuelta a la emulación
- Se modificó Musashi para almacenar en flash su gran tabla de saltos de decodificación de opcodes.
- Se eliminaron el desensamblador y el conteo de ciclos de ejecución.
- Se minimizó el uso de RAM para que pudiera compilar y ejecutarse en la Pico.
Rendimiento
- Se hizo overclock a la Pico hasta 250 MHz para mejorar el rendimiento.
- Guardando en RAM las 200 funciones de opcode más usadas, se alcanzaron 1.4 MIPS.
Despedida
- El proyecto MicroMac fue una experiencia divertida y educativa.
- Puede construirse directamente a través del enlace de GitHub.
Opinión de GN⁺
- Proyecto interesante: MicroMac es un proyecto interesante que emula un Macintosh clásico con hardware barato. A través de la combinación de software y hardware, permite sentir la diversión de la ingeniería.
- Oportunidad de aprendizaje: Este proyecto ofrece a ingenieros de software principiantes una buena oportunidad para entender la interacción entre hardware y software. En particular, permite aprender conceptos como emulación, PIO y DMA.
- Optimización de rendimiento: En el proceso de optimización del rendimiento se pueden aprender diversos desafíos técnicos y formas de resolverlos. En especial, ayuda a entender la importancia de la gestión de memoria y el overclocking.
- Compartir con la comunidad: A través de GitHub ofrece la oportunidad de compartir el proyecto y colaborar con otras personas. Esto muestra bien las ventajas de la comunidad de código abierto.
- Posibilidades futuras: Este proyecto tiene potencial de expansión usando MCU con más RAM. Eso abre la posibilidad de ejecutar aplicaciones más complejas.
1 comentarios
Comentarios en Hacker News
Difícil encontrar un cable VGA: Hace poco necesitaba un cable VGA para una instalación artística, pero nadie cerca tenía uno, así que al final tuve que comprar uno nuevo. Da pena considerando cuántos cables terminan en la basura.
Proyecto Amiga: Quería construir una Amiga que corriera AmigaOS 3.2. La idea de hacer con impresión 3D una carcasa pequeña con la forma original se ve tierna. La falta de una disquetera antigua le quita un poco de la experiencia, pero me gusta la idea de usar una máquina dedicada en lugar de correr un emulador en una PC de escritorio existente. El enfoque de bajo nivel en el que el RP2040 hace el papel del 68k resulta interesante.
Primera impresión del Mac: Cuando salió el Mac por primera vez, trabajaba en una tienda de computadoras. Ver las esquinas redondeadas de la pantalla me hizo admirar su genialidad.
Elogio al proyecto: Este proyecto es muy impresionante. Fue muy entretenido de leer y también me gustó el estilo de escritura. Intento hacer builds de doble objetivo para prototipado/depuración rápida en proyectos embebidos, pero termino usando más seguido el build para PC. Más gente debería hacerlo así.
Interfaz VGA: La interfaz VGA es lo más impresionante.
Desafío de hackear el ESP32: Intenté correr vMac en un ESP32, pero fracasé. Este proyecto está en otro nivel. Mis respetos.
Explorando SBC pequeñas: Me pregunto cuál será la SBC más pequeña capaz de emular a rendimiento completo los últimos Mac 68k o los Mac PPC de mediados/finales de los 90. Si se montara en el cuerpo de una laptop moderna, podría convertirse en una útil laptop de "modo zen" capaz de correr desde System 7.6.1 hasta Mac OS 9.x.
Mirror del blog: Parece que el blog está sobrecargado, así que comparto un enlace mirror.
Mención de MacPaint: Explica por qué no mencionó MacPaint. Piensa que Bill Atkinson conocía todos los trucos y los habría aprovechado para hacer que MacPaint funcionara dentro de las limitaciones originales. No es una pelea justa para el autor.
Buscando un conector VGA: Necesitaba un conector VGA, pero no lograba conseguir uno. Durante una caminata a la hora del almuerzo, encontré un cable VGA tirado en la calle. A veces esas cosas pasan.