ชิป ESP32 ถูกนำมาใช้สำหรับการเล่นเกมย้อนยุคและการจำลองคอมพิวเตอร์รุ่นเก่ามาเป็นเวลาหลายปีแล้ว แต่ Austin McChord (Amcchord) ได้ต่อยอดไปอีกขั้นด้วยการพอร์ต Macintosh emulator ให้ทำงานบนบอร์ดพัฒนา ESP32-P4 ที่มาพร้อมหน้าจอแสดงผล
โปรเจกต์ของเขาเป็นการพอร์ต BasiliskII ซึ่งเป็นอีมูเลเตอร์สำหรับเครื่อง Macintosh 68k อย่างสมบูรณ์ ทำให้สามารถรัน Mac OS รุ่นคลาสสิก ตั้งแต่ System 7.x ไปจนถึง Mac OS 8.1 บนอุปกรณ์ฝังตัวแบบพกพาที่ใช้ ESP32-P4 ได้ โดยรองรับหน้าจอสัมผัส, อุปกรณ์ USB และการเชื่อมต่อ Wi-Fi ผ่านชิป 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 ตามลำดับ ก่อนจะขยายภาพเป็น 2 เท่า เพื่อแสดงผลเต็มความละเอียดของหน้าจอจริง
จุดเด่นของโปรเจกต์:
- CPU – จำลองการทำงานของ Motorola 68040 พร้อมหน่วยประมวลผลทศนิยม FPU (68881) ให้ประสิทธิภาพประมาณ 2–3 MIPS
- RAM – กำหนดขนาดหน่วยความจำได้ตั้งแต่ 4MB ถึง 16MB โดยใช้ PSRAM ขนาด 32MB ของ ESP32-P4
- ที่เก็บข้อมูล – โหลดอิมเมจของฮาร์ดดิสก์และไดรฟ์ CD-ROM จาก microSD card
- การแสดงผล – ใช้ความละเอียดเสมือน 640×360 หรือ 640×400 แล้วขยายเป็น 2 เท่า ไปยังหน้าจอจริง 1280×720 หรือ 1280×800 รองรับความลึกสี 1, 2, 4 และ 8 บิต ที่อัตรารีเฟรช 24 FPS
- ระบบวิดีโอ – ปรับแต่งประสิทธิภาพด้วยเทคนิค Write-time Dirty Tracking, Double-buffered DMA และ Tile-based Rendering เพื่อให้การแสดงผลลื่นไหลยิ่งขึ้น
- ระบบเสียง – รองรับเสียงแบบดั้งเดิมของ Macintosh ผ่านชิป ES8388 Audio Codec และสามารถเปิดหรือปิดเสียงได้จากเมนูบูต
- ระบบเครือข่าย – เชื่อมต่ออินเทอร์เน็ตผ่าน Wi-Fi โดยใช้ NAT Router รองรับโปรโตคอล TCP, UDP, ICMP, DHCP และอื่น ๆ
- อุปกรณ์รับข้อมูล (Input)
- ใช้หน้าจอสัมผัสแบบคาปาซิทีฟเป็นเมาส์
- รองรับการเชื่อมต่อ คีย์บอร์ดและเมาส์ผ่าน USB
อีมูเลเตอร์รองรับระบบปฏิบัติการ System 7.1, System 7.5.x, Mac OS 8.0 และ Mac OS 8.1
การทำงานของอีมูเลเตอร์แบ่งออกเป็น 2 คอร์ของ ESP32-P4 ดังนี้:
- CORE 0 – คอร์สำหรับวิดีโอและอินพุต/เอาต์พุต (Video & I/O Core)
- งานเรนเดอร์ภาพ (Video Rendering)
- ระบบ DMA แบบ Double Buffer
- การขยายภาพแบบ 2×2 พิกเซล
- งานประมวลผลอินพุต (60Hz)
- ประมวลผลอุปกรณ์ USB HID
- ส่งออกเสียงผ่านชิป ES8388
- ตรวจสอบแพ็กเก็ตข้อมูลเครือข่ายขาเข้า (Network RX Polling)
- ทำงานแบบ Event-driven ที่อัตรา 24 FPS
- CORE 1 – คอร์สำหรับจำลองซีพียู (CPU Emulation Core)
- ตัวแปลคำสั่ง (Interpreter) ของ Motorola 68040
- การเข้าถึงหน่วยความจำแบบ Fast Path
- ทำเครื่องหมายข้อมูลที่มีการเปลี่ยนแปลง (Write-time Dirty Marking)
- ประมวลผลชุดคำสั่งเป็นกลุ่ม (Batch Instruction Execution)
- แพตช์ ROM
- จัดการการอ่าน/เขียนข้อมูลดิสก์ (Disk I/O)
ประสิทธิภาพของอีมูเลเตอร์ Motorola 68040 ที่ทำงานบน ESP32-P4 อยู่ในระดับใกล้เคียงกับ Macintosh Quadra 610 ที่ใช้ซีพียู Motorola 68040 ความเร็ว 25 MHz โดยสามารถแสดงผลวิดีโอได้ที่ 24 FPS และให้ประสิทธิภาพในการประมวลผลประมาณ 2–3 MIPS
สามารถดูซอร์สโค้ด ซึ่งได้รับการพอร์ตโดยมีความช่วยเหลือจาก Anthropic Claude รวมถึงเอกสารอธิบายรายละเอียดการพอร์ตและการทำงานของอีมูเลเตอร์ได้จาก GitHub repository ของโปรเจกต์
แปลจากบทความ : Macintosh emulator works on ESP32-P4 display devkits from M5Stack and Waveshare

บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT



