ESP32 chips have been used for retro gaming and computing for years, but Austin McChord (Amcchord) adds to that with a Macintosh emulator ported to a couple of ESP32-P4 display devkits.
His project is a full port of the BasiliskII Macintosh 68k emulator, bringing classic Mac OS (System 7.x through Mac OS 8.1) to portable ESP32-P4 embedded devices with touchscreen, USB peripherals, and WiFi support through an ESP32-C6 on the boards.
The main development platform appears to be the M5Stack Tab5 equipped with a 5-inch touchscreen display with 1280×720 resolution. However, if you need something with a larger screen, the Waveshare ESP32-P4-WIFI6-Touch-LCD-10.1 is also supported, and features a 10.1-inch display with 1280×800 resolution and a 10-point capacitive touchscreen. The actual Mac OS resolutions used are 640×360 and 640×400, respectively, then scaled twice to the native resolution of the display.
Highlights of the project:
- CPU – Motorola 68040 emulation with FPU (68881) — 2-3 MIPS
- RAM – Configurable from 4MB to 16MB; allocated from ESP32-P4’s 32MB PSRAM
- Storage – Hard disk and CD-ROM images loaded from microSD card
- Display – 640×360 or 640×400 virtual display (2x scaled to 1280×720/800 physical display); 1/2/4/8-bit color depths at 24 FPS
- Video – Optimized pipeline with write-time dirty tracking, double-buffered DMA, and tile-based rendering
- Audio – Classic Mac sound output via ES8388 codec; toggleable in boot GUI
- Networking – WiFi internet access via NAT router with support for TCP, UDP, ICMP, DHCP…
- Input
- Capacitive touchscreen used as a mouse
- USB keyboard/mouse support
The emulator is compatible with System 7.1, System 7.5.x, Mac OS 8.0, and Mac OS 8.1.
Each task is attached to a specific core of the ESP32-P4:
- CORE 0 – Video & I/O Core
- Video rendering task
- Double-buffered DMA
- 2×2 pixel scaling
- Input task (60Hz)
- USB HID processing
- Audio output (ES8388)
- Network RX polling
- Event-driven @ 24 FPS
- CORE 1 – CPU Emulation Core
- 68040 CPU interpreter
- Fast-path memory access
- Write-time dirty marking
- Batch instruction execution
- ROM patching
- Disk I/O
The performance of the Motorola 68040 emulator running on ESP32-P4 is comparable to a Macintosh Quadra 610 (25 MHz 68040). It can also render video at 24 FPS, and delivers 2-3 MIPS CPU speed.
You’ll find the source code, ported with Anthropic Claude’s assistance, and detailed documentation of the implementation in the project’s GitHub repository.
Via Hackaday

Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress. We also use affiliate links in articles to earn commissions if you make a purchase after clicking on those links.







Too bad they didn’t source 1024×768 displays as that’s a native Mac resolution. 640×400 or 640×480 is pretty damn cramped for screen space. Other than that it’s pretty cool.
Why Apple not opened System 1-7.2 as open source?
Apple and open source ? That doesn’t work well together. They know pretty much that stuff from the 80s might become trendy again. Look at “modern” flat interfaces, they’re just exactly like the very early ones we had in the 80s that were ugly and uncomfortable to use, yet they’re the norm now. And after everyone complains that it’s super difficult to visually distinguish active from passive screen areas, someone will come with the idea of making a 3d border like in windows 3 🙂 So maybe in 5-10-15 years, the old macos UI will become the norm and apple certainly doesn’t want that to help competition!
Yeah, what dumbass thought it was a good idea to have active be indistinguishable from inactive screen areas?
For a larger display, see https://sites.google.com/site/olivier2smet2/other-projects/basilisk-ii-esp32p4. I use a Waveshare dev kit (Link https://www.waveshare.com/product/arduino/boards-kits/esp32-p4/esp32-p4-wifi6-dev-kit.htm) and a custom made VGA hat (link https://github.com/OulanB/P4VGA565).