Mengenang kembali era emas Macintosh klasik kini bukan lagi impian yang hanya bisa terwujud di komputer desktop. Berkat proyek ambisius bernama M5Tab-Macintosh, Anda bisa menjalankan emulator BasiliskII 68k secara penuh di perangkat embedded portabel berbasis ESP32-P4. Proyek ini membawa nuansa Mac OS klasik, dari System 7.x hingga Mac OS 8.1, ke perangkat mungil dengan layar sentuh dan dukungan periferal USB.
Perangkat yang Didukung
M5Tab-Macintosh dirancang untuk dua jenis board utama, dengan konfigurasi display dan performa yang dioptimalkan:
| Board | Display Fisik | Layar Mac (Virtual) | Lingkungan PlatformIO |
|---|---|---|---|
| M5Stack Tab5 | 5" 1280x720 | 640x360 @ 2x | esp32p4_pioarduino |
| Waveshare ESP32-P4-WIFI6-Touch-LCD-10.1 | 10.1" 800x1280 (putar ke 1280x800 lanskap) | 640x400 @ 2x | waveshare_p4_101 |
Kedua varian ini berbagi inti BasiliskII yang sama, pipeline video, penanganan USB HID, dan antarmuka boot grafis. Driver spesifik untuk setiap board dikelola melalui lapisan abstraksi hardware (HAL) yang ramping.
Performa yang Mengejutkan
Jangan remehkan perangkat kecil ini. Emulator M5Tab-Macintosh ini menargetkan performa yang sebanding dengan Macintosh Quadra 610 (dengan CPU 68040 25 MHz). Anda bisa mendapatkan video 24 FPS dan kecepatan CPU 2-3 MIPS, yang lebih dari cukup untuk bernostalgia dengan aplikasi dan game klasik.
Emulator ini menghadirkan:
- CPU: Emulasi Motorola 68040 dengan FPU (68881).
- RAM: Dapat dikonfigurasi dari 4MB hingga 16MB, dialokasikan dari 32MB PSRAM ESP32-P4.
- Display: Layar virtual 640x360, diskala 2x ke layar fisik 1280x720 (untuk Tab5), mendukung kedalaman warna 1/2/4/8-bit pada 24 FPS.
- Penyimpanan: Gambar hard disk dan CD-ROM dimuat dari kartu SD.
- Input: Layar sentuh kapasitif, keyboard atau mouse USB, dan keyboard resmi Tab5 yang terdeteksi otomatis.
- Audio: Suara Mac klasik via codec ES8388 atau ES8311, yang bisa diaktifkan atau dinonaktifkan di GUI boot.
- Jaringan: Akses internet WiFi melalui router NAT, termasuk TCP, UDP, ICMP, dan DHCP.
Arsitektur Dual-Core yang Optimal
M5Stack Tab5 memiliki arsitektur dual-chip yang unik, menjadikannya pilihan ideal untuk proyek ini:
- ESP32-P4: Prosesor Aplikasi Utama, ditenagai dual-core RISC-V 400MHz, 32MB PSRAM, dan display MIPI-DSI.
- ESP32-C6: Co-prosesor Nirkabel, menyediakan WiFi 6 dan Bluetooth LE 5.0 untuk akses internet ke Mac OS klasik.
Emulator ini memanfaatkan arsitektur dual-core ESP32-P4 untuk kinerja optimal:
| CORE 0 (Video & I/O Core) | CORE 1 (CPU Emulation Core) |
|---|---|
| • Tugas rendering video | • Interpreter CPU 68040 |
| • DMA double-buffered | • Akses memori fast-path |
| • Penskalaan piksel 2x2 | • Penandaan kotoran write-time |
| • Tugas input (60Hz) | • Eksekusi instruksi batch |
| • Pemrosesan USB HID | • Penambalan ROM |
| • Output audio (ES8388) | • I/O Disk |
| • Polling RX jaringan | |
| • Event-driven @ 24 FPS |
Pipeline Video yang Efisien
Sistem video menggunakan pipeline yang sangat dioptimalkan dengan pelacakan kotoran write-time untuk meminimalkan beban CPU. Saat CPU 68040 menulis ke framebuffer, sistem memori langsung menandai tile yang terpengaruh sebagai "kotor". Ini menghilangkan perbandingan mahal per-frame.
Layar dibagi menjadi grid 16x9 tile berukuran 40x40 piksel. Hanya tile yang "kotor" yang akan di-render ulang setiap frame, mengurangi waktu CPU video hingga 60-90%. Teknologi double-buffered DMA dan per-tile render locks juga memastikan tampilan yang lancar dan bebas glitch.
Memulai Nostalgia Anda
Untuk memulai perjalanan Anda ke masa lalu Mac OS, Anda perlu menyiapkan beberapa hal.
Persyaratan
- Hardware: M5Stack Tab5 atau Waveshare ESP32-P4 10.1".
- Software: PlatformIO (CLI atau ekstensi IDE).
- Kartu SD: Kartu microSD format FAT32 (disarankan 8GB+). Perhatian: exFAT tidak sepenuhnya didukung dan akan meminta Anda untuk memformat ulang ke FAT32.
Penyiapan Kartu SD
Anda bisa memilih cara cepat atau manual:
1. Mulai Cepat (Disarankan)
- Unduh
sdCard.zipdari repositori proyek. - Format kartu microSD Anda sebagai FAT32.
- Ekstrak isi ZIP ke root kartu SD Anda.
- Masukkan ke Tab5 dan nyalakan.
2. Penyiapan Manual Atau, buat penyiapan Anda sendiri dengan file-file ini di root kartu SD:
/
├── Q650.ROM # ROM Macintosh Quadra (wajib)
├── Macintosh.dsk # Gambar hard disk (wajib)
├── System753.iso # CD instalasi Mac OS (opsional)
└── DiskTools1.img # Floppy boot untuk instalasi (opsional)
Untuk membuat gambar disk kosong, Anda bisa menggunakan perintah dd:
bashdd if=/dev/zero of=Macintosh.dsk bs=1M count=500
Ini akan membuat gambar disk kosong berukuran 500MB yang kemudian bisa Anda format saat instalasi Mac OS.
ROM dan Sistem Operasi yang Didukung
Emulator ini bekerja paling baik dengan ROM seri Macintosh Quadra. Q650.ROM adalah yang paling direkomendasikan untuk kompatibilitas terbaik. File ROM harus memiliki kata versi 16-bit di offset 8 yang berbunyi 0x067C (keluarga Mac II 32-bit clean) atau 0x0276 (Classic).
Sistem Operasi yang didukung meliputi:
- System 7.1
- System 7.5.x
- Mac OS 8.0
- Mac OS 8.1
Mem-flash Firmware
Anda bisa mengunduh firmware yang sudah dibuat sebelumnya atau membangunnya dari sumber.
Opsi 1: Firmware Pra-bangun (Termudah)
Unduh rilis terbaru dari GitHub. Lalu, flash biner tunggal menggunakan esptool.py:
bashpip install esptool esptool.py --chip esp32p4 \ --port /dev/ttyACM0 \ --baud 921600 \ write_flash \ 0x0 M5Tab-Macintosh-v4.0.bin
Ingat untuk mengganti /dev/ttyACM0 dengan port serial perangkat Anda yang sebenarnya, misalnya /dev/cu.usbmodem* di macOS, COM3 di Windows, atau /dev/ttyUSB0 di Linux.
Opsi 2: Build dari Sumber
bashgit clone https://github.com/amcchord/M5Tab-Macintosh.git cd M5Tab-Macintosh pio run # Membangun firmware pio run --target upload # Mengunggah ke perangkat pio device monitor # Memantau output serial
Pengalaman Pengguna: Pre-Boot GUI dan Input
Setiap kali Anda menyalakan atau me-reset perangkat, Anda akan disambut oleh layar konfigurasi pre-boot bergaya Mac klasik. Ini adalah tempat Anda memilih disk, CD, ukuran RAM, WiFi, folder bersama, dan mode USB Disk (khusus Tab5). Cukup ketuk "Change Settings" selama hitungan mundur 3 detik untuk masuk ke menu ini. Pengaturan Anda akan disimpan ke file /basilisk_settings.txt di kartu SD.
Input yang Fleksibel
- Layar Sentuh: Berfungsi sebagai mouse single-button, tap untuk klik dan drag untuk klik dan seret.
- Overlay Keyboard & Gaming (v4.0):
- Tiga jari tap: Menampilkan/menyembunyikan overlay keyboard QWERTY lengkap dengan pengubah sticky Shift, Ctrl, Option, dan Command.
- Empat jari tap: Menampilkan/menyembunyikan overlay D-pad gaming dengan tombol aksi Esc, Return, Space, dan Option.
- Overlay ini "transparan" berkat teknik sub-pixel stipple sehingga Anda tetap bisa melihat konten Mac di baliknya.
- Keyboard USB: Hubungkan ke port USB Type-A Tab5 untuk pengalaman mengetik penuh dengan pemetaan kunci Mac yang benar.
- Mouse USB: Hubungkan mouse USB untuk input gerakan relatif, lengkap dengan dukungan tombol kiri, kanan, dan tengah. Versi v4.1 beta 2 menambahkan parser descriptor HID untuk mouse modern dan meneruskan scroll wheel sebagai tombol panah Mac.
- Keyboard Resmi Tab5 (beta, v4.1 beta 2): Keyboard 70 tombol resmi Tab5 yang terpasang ke Ext.Port1 akan terdeteksi otomatis dan mendukung hot-plugging.
Dukungan Jaringan WiFi
M5Tab-Macintosh memiliki fitur jaringan TCP/IP melalui co-prosesor WiFi ESP32-C6. Ini menyediakan akses internet berbasis NAT untuk aplikasi Mac klasik dengan dukungan server DHCP.
Konfigurasi Jaringan Virtual:
- IP Mac OS: 10.0.2.15 (ditetapkan via DHCP)
- Gateway: 10.0.2.2
- DNS: 10.0.2.3 (diteruskan ke DNS sesungguhnya)
Anda dapat mengkonfigurasi WiFi melalui GUI pre-boot. Setelah terhubung, IP Anda akan ditampilkan, dan pengaturan akan disimpan untuk boot berikutnya. Di Mac OS, cukup buka TCP/IP Control Panel dan atur "Connect via: Ethernet" dan "Configure: Using DHCP Server".
Pembaruan Penting
Proyek ini terus berkembang dengan pembaruan yang signifikan.
Apa yang Baru di v4.1 beta 2?
- Keyboard Tab5 Plug-and-play (beta): Deteksi otomatis keyboard resmi Tab5 di Ext.Port1, mendukung hot-plugging.
- Semua revisi display Tab5 (beta): Mendukung revisi ST7121, ST7123, dan ILI9881C secara otomatis.
- Flush SD + sinkronisasi shutdown lebih cepat: Gambar disk di kartu sekarang di-flush setiap 2 detik dan setelah guest idle, mengurangi potensi kehilangan data.
- Parser descriptor HID: Memperbaiki masalah gerakan kursor pada mouse USB modern dengan tata letak bit X/Y non-standar, serta meneruskan scroll wheel sebagai tombol panah Mac.
- Boot dari CD: Opsi "Boot from CD" di GUI pre-boot memungkinkan boot langsung dari file ISO.
- Pemilih file CD/disk yang lebih luas: Kini mendukung file
.cdrdan.toastuntuk CD-ROM, serta.hfvuntuk hard disk. - Tombol rotasi layar: Kotak centang "Rotate 180" di GUI pre-boot memungkinkan rotasi layar 180° untuk Tab5.
- Reset codec audio yang kuat: Melakukan urutan mute, power-down, dan reset chip penuh untuk memulihkan audio setelah soft reboot.
- Deteksi kartu exFAT: Jika kartu SD diformat sebagai exFAT, sistem akan mendeteksinya dan memberikan pesan yang jelas untuk memformat ulang ke FAT32.
Apa yang Baru di v4.0?
- Keyboard on-screen multi-touch dan overlay gaming.
- Overlay "transparan" tanpa perhitungan alpha, menggunakan penulisan sub-pixel 25%.
- Penetapan PlatformIO per-board untuk stabilitas yang lebih baik.
- USB Disk Tab5 melalui USB-A: Sekarang Anda dapat mengakses kartu SD Tab5 sebagai perangkat USB Mass Storage melalui port USB-A.
Optimasi Performa Mendalam
M5Tab-Macintosh mencapai kinerja desktop yang mulus berkat serangkaian teknik optimasi tingkat rendah:
- Pelacakan Kotoran Write-Time: Menandai tile sebagai kotor pada saat CPU menulis, menghindari perbandingan mahal per-frame.
- Pemisahan Dual-Core: Emulasi CPU (Core 1) berjalan secara independen dari video/input (Core 0) dengan sinkronisasi minimal.
- Akses Memori Fast-Path: Pemeriksaan inline untuk RAM/ROM melewati pencarian bank memori yang mahal.
- Eksekusi Instruksi Batch: CPU mengeksekusi 32 instruksi per iterasi loop sebelum memeriksa tick.
- DMA Double-Buffered: Rendering video menggunakan tile dan row buffer double-buffered.
- Kunci Render Per-Tile: Kunci atomik mencegah kondisi race selama snapshot tile.
- Penjadwalan CPU/IO Adaptif: Emulasi CPU, I/O disk, rendering video, dan polling jaringan diseimbangkan di kedua core dengan timing adaptif.
- Optimasi Kompiler Agresif: Proses build menggunakan
-O3,-funroll-loops,-ffast-math, dan inlining agresif untuk jalur cepat.
Pemecahan Masalah Umum
Jika Anda mengalami masalah, berikut beberapa solusi cepat:
| Masalah | Solusi |
|---|---|
| "SD card initialization failed" | Pastikan kartu SD diformat FAT32 dan terpasang dengan benar. |
| "Q650.ROM not found" | Letakkan file ROM di direktori root kartu SD. |
| Layar hitam setelah boot | Periksa output serial untuk kesalahan, verifikasi kompatibilitas ROM. |
| Layar sentuh tidak merespons | Tunggu GUI boot menyelesaikan inisialisasi. |
| Keyboard USB tidak berfungsi | Hubungkan ke port USB Type-A (bukan Type-C). |
| Keyboard Tab5 tidak terdeteksi | Pastikan terpasang sepenuhnya pada Ext.Port1 dan alamat I2C di 0x6D. |
| Tampilan lambat/terputus-putus | Periksa statistik [VIDEO PERF] di output serial, 60-90% pembaruan parsial adalah normal. |
| Tidak ada output audio | Pastikan audio diaktifkan di layar pengaturan GUI boot. |
Proyek ini adalah contoh bagaimana inovasi open-source dan perangkat keras modern dapat membawa kembali pengalaman klasik yang berharga. M5Tab-Macintosh bukan hanya emulator, melainkan sebuah jembatan waktu yang memungkinkan kita merasakan kembali keajaiban Mac OS generasi pertama.
Referensi
https://github.com/amcchord/M5Tab-Macintosh
