Emulador del mítico MAC de los 80

Efectivamente, el MicroMac es un proyecto apasionante que ha resucitado el clásico Macintosh 128K de 1984 utilizando una placa Raspberry Pi Pico. Esta iniciativa, creada por el entusiasta Matt Evans, demuestra la versatilidad de estas placas de bajo costo, capaces de emular no solo ordenadores antiguos, sino también de convertirse en consolas retro o incluso en smartphones, hasta tal punto que podemos llegar a construirnos nuestro propio Mac casero.

¿Qué hace especial al MicroMac?

  • Bajo costo: Lo que más sorprende del MicroMac es su precio. Con un costo de apenas 5 euros por la placa base, se convierte en una opción muy accesible para aquellos que buscan revivir la experiencia del Macintosh original o simplemente adentrarse en el mundo de la emulación.
  • Facilidad de ensamblaje: El proceso de ensamblaje del MicroMac es relativamente sencillo, incluso para aquellos sin experiencia previa en electrónica. Las instrucciones detalladas y los diagramas proporcionados por el creador facilitan la construcción de este dispositivo.
  • Funcionalidad: A pesar de su bajo costo, el MicroMac es capaz de ejecutar de manera fluida aplicaciones clásicas del Macintosh 128K, como el procesador de textos MacWrite o el programa de gráficos vectoriales MacDraw. Esto lo convierte en una herramienta útil para aquellos que desean recordar la nostalgia de la era de las computadoras Macintosh o para aquellos que simplemente quieren experimentar con software retro.

Reviviendo el Macintosh 128K con una Raspberry Pi!

En efecto Matt Evans, un apasionado de la tecnología, ha logrado una hazaña impresionante: construir un clon funcional del Macintosh 128K original utilizando una placa Raspberry Pi Pico. Este proyecto, MicroMac, destaca por su bajo costo (menos de 5 euros) y su capacidad para emular con precisión la experiencia del Macintosh original.

¿Cómo funciona el MicroMac?

El MicroMac se basa en un microcontrolador RP2040, que cuenta con un procesador Arm Cortex-M0+ de doble núcleo y 264 kB de RAM. Para replicar la experiencia del Macintosh 128K, Evans ha conectado varios componentes adicionales, incluyendo:

  • Un monitor VGA.
  • Un teclado USB.
  • Un mouse USB.
  • Un adaptador USB OTG de Micro-B a Micro-A (para conectar el ratón y el teclado).
  • Una fuente de alimentación de 5V.
  • Un par de resistencias para adaptar niveles para la VGA.
  • Un Cable VGA.

Un microcontrolador Raspberry Pi RP2040 (en una placa Pico), manejando vídeo VGA monocromo y tomando entrada de teclado/ratón USB, emulando un ordenador Macintosh 128K y almacenamiento en disco. El RP2040 tiene fácilmente suficiente RAM para albergar la memoria del Mac, más la del emulador; es lo suficientemente rápido (con algunos trucos) para alcanzar el rendimiento de la máquina real, tiene capacidad de host USB, y los pines del GPIO hacen posible que el soporte de vídeo VGA sea bastante sencilla (con algunos trucos). Los 2 MB de memoria flash de la placa Pico básica son suficientes para una imagen de disco con el SO y el software.

Para su creación, Evans tuvo que combinar varios componentes actuales que le permitieran simular una experiencia similar a la de la máquina de Apple, con el mayor realismo posible.

En la imagen vemos todo el hw empleado. Junto al microcontrolador, consiguió un monitor VGA, un teclado, un mouse USB, un adaptador USB OTG de Micro-B a Micro-A, una fuente de alimentación de 5V y un par de resistencias, que montó sobre la placa de prototipos.

Tres pines GPIO de 3.3V son manejados por PIO para dar señales VSYNC, HSYNC, y salida de video. Los sincronismos son en muchos proyectos similares manejados directamente desde GPIO, pero aquí recomienda una resistencia en serie de 66Ω en cada uno para mantener los voltajes en el extremo VGA (¿presumiblemente en terminación de 75Ω?) en el rango correcto. Para la salida de video, un GPIO maneja los canales R,G,B para salida mono/blanco. Una resistencia de 100Ω da aproximadamente 0,7V (intensidad máxima) en 3*75Ω señales.

Esta es la configuración de pines usada:

GPIO/pinPico pinUsage
GP01UART0 TX
GP12UART0 RX
GP1824Video output
GP1925VSYNC
GP2127HSYNC
Gnd23, 28Video ground
VBUS (5V)40+5V supply
Gnd38Supply ground

Resumen de conexiones:

  • Cablea 5V a VBUS/Gnd
  • Salida de video –> 100Ω –> VGA
  • RGB (pines 1,2,3) todos conectados juntos
  • HSYNC –> 66Ω –> VGA pin 13
  • VSYNC –> 66Ω –> VGA pin 14
  • Tierra de video –> tierra VGA (pines 5-8, 10)

Si no tiene exactamente una resistencia de 100Ω, puede usar otra un poco de mas valor pero la pantalla será más tenue. Si no tiene resistencia de 66Ω para los sincronismos, conectarlos directamente es «probablemente OK», pero YMMV. Pruebe sus conexiones: la parte clave es no conseguir más de 0.7V en las señales de su conector VGA. Conecta el ratón USB, y el teclado si quiere, y encienda.

Software

Después de solucionar el tema del hw, Evans inició el proceso para adaptar el RP2040 para que pudiera manejar los periféricos y emitir una señal de video. En el lado del software, tuvo que conseguir una imagen de System 3.2, la última versión compatible con Macintosh 128, que incluía algunos de los programas utilizados por el sistema operativo.

El emulador umac y la salida de vídeo se ejecutan en el núcleo 1, mientras que el núcleo 0 se encarga de la entrada USB HID. El DMA de vídeo se inicializa apuntando al framebuffer en la RAM del Mac. Aparte de eso, es sólo un bucle principal en main.c barajando cosas en umac. Se ha hecho bastante optimización en umac y Musashi para aumentar el rendimiento en Cortex-M0+ y el RP2040, como la ubicación cuidadosa de ciertas rutinas en la RAM, asegurando que los inlining/constantes puedan ser foldeados, etc. Es 5 veces más rápido de lo que era al principio. El proyecto de nivel superior podría ser un marco útil para otros emuladores, u otros proyectos que necesitan entrada USB HID y un framebuffer (por ejemplo, un emulador VT220). El código USB HID es en gran parte robado del ejemplo TinyUSB, pero muestra cómo en la práctica se podría capturar las pulsaciones de teclas / tratar con eventos del ratón.

Todo el sw esta disponible en su respositoriio de Github:https://github.com/evansm7/pico-mac?tab=readme-ov-file#hardware-contruction

En cuanto a la imagen del System 3.2, esta es la última versión compatible con el Macintosh 128K. Esto le permite ejecutar programas clásicos como el procesador de textos MacWrite y el programa de gráficos vectoriales MacDraw.

El trabajo principal de Evans se enfocó en hacer un equipo que fuera capaz de correr con un hardware que cataloga como «muy simple«, por lo que la estética no estaba realmente contemplada, tal como se muestra en sus distintas fotografías.

Más allá del MicroMac:

El proyecto MicroMac es un claro ejemplo del potencial de las placas Raspberry Pi. Estas pequeñas placas han abierto un mundo de posibilidades para la creación de dispositivos electrónicos personalizados, desde ordenadores retro hasta consolas de videojuegos y objetos inteligentes para el hogar.

Se puede decir que esta computadora que emula a la Macintosh es toda una ganga para el usuario. Según su creador, se trata de un equipo que cuesta menos de 5 euros, es decir,  aunque este precio es únicamente por su placa base y no por el resto de componentes y accesorios.

Enlaces de interés:

ARRIBA