Чипы ESP32 используются для ретро-игр и ретро-вычислений уже много лет, но Остин Маккорд (Amcchord) пополняет эту нишу, портировав эмулятор Macintosh на несколько отладочных плат с дисплеем на ESP32-P4.
Его проект представляет собой полный порт эмулятора Macintosh 68k BasiliskII, который приносит классическую Mac OS (System 7.x — Mac OS 8.1) на портативные встраиваемые устройства на ESP32-P4 с сенсорным экраном, USB-периферией и поддержкой WiFi через ESP32-C6 на платах.
Основной платформой разработки выступает M5Stack Tab5 с 5-дюймовым сенсорным дисплеем разрешением 1280×720. Однако если вам нужно устройство с большим экраном, поддерживается также Waveshare ESP32-P4-WIFI6-Touch-LCD-10.1 с 10,1-дюймовым дисплеем разрешением 1280×800 и емкостным сенсорным экраном на 10 касаний. Фактические разрешения Mac OS составляют 640×360 и 640×400 соответственно, после чего они масштабируются вдвое до собственного разрешения дисплея.
Основные моменты проекта:
- CPU – эмуляция Motorola 68040 с FPU (68881) — 2–3 MIPS
- RAM – от 4 до 16 МБ (конфигурируется); выделяется из 32 МБ PSRAM ESP32-P4
- Память – образы жёсткого диска и CD-ROM загружаются с microSD-карты
- Дисплей – виртуальный дисплей 640×360 или 640×400 (масштабируется 2× до физического 1280×720/800); глубина цвета 1/2/4/8 бит при 24 кадрах/с
- Видео – оптимизированный конвейер с отслеживанием изменений при записи, двухбуферным DMA и тайловой отрисовкой
- Аудио – вывод звука классического Mac через кодек ES8388; переключается в загрузочном GUI
- Сеть – доступ в интернет по WiFi через NAT-роутер с поддержкой TCP, UDP, ICMP, DHCP…
- Ввод
- Емкостный сенсорный экран используется как мышь
- Поддержка USB-клавиатуры и USB-мыши

Каждая задача привязана к конкретному ядру ESP32-P4:
- CORE 0 – ядро видео и ввода/вывода
- Задача отрисовки видео
- Двухбуферный DMA
- Масштабирование пикселей 2×2
- Задача ввода (60 Гц)
- Обработка USB HID
- Вывод аудио (ES8388)
- Опрос RX сети
- Событийно-ориентированная @ 24 кадра/с
- CORE 1 – ядро эмуляции CPU
- Интерпретатор CPU 68040
- Быстрый доступ к памяти
- Пометка изменений при записи
- Пакетное выполнение инструкций
- Патчинг ROM
- Ввод/вывод диска
Производительность эмулятора Motorola 68040, работающего на ESP32-P4, сравнима с Macintosh Quadra 610 (25 МГц 68040). Он также может выводить видео при 24 кадрах/с и обеспечивает скорость CPU 2–3 MIPS.
Исходный код, портированный с помощью Anthropic Claude, и подробную документацию по реализации можно найти в репозитории проекта на GitHub .
Выражаем свою благодарность источнику, с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.


