Advanced Mac Substitute
(v68k.org)- ในช่วงทศวรรษ 1980 มีการสร้าง Mac OS ขึ้นใหม่ในระดับ API ทำให้สามารถรันแอปพลิเคชัน Mac แบบ 68K ได้โดยตรงโดยไม่ต้องใช้ ROM หรือซอฟต์แวร์ระบบของ Apple
- ใช้สถาปัตยกรรมแบบแทนที่ตัวระบบปฏิบัติการเองโดยไม่ต้องอีมูเลตฮาร์ดแวร์ทั้งหมด จึงสามารถเปิดแอปได้ทันทีโดยไม่ต้องผ่านขั้นตอนบูต
- ประกอบด้วยแบ็กเอนด์ 68K emulator และฟรอนต์เอนด์ที่ใช้ SDL2 ทำให้มอบสภาพแวดล้อมเดียวกันบนหลายแพลตฟอร์ม เช่น macOS, X11 และ Linux framebuffer
- สามารถรันซอฟต์แวร์แมคอินทอชคลาสสิกอย่าง MacPaint, Lode Runner, The Fool’s Errand ได้ในสภาพแวดล้อมกราฟิก 1 บิต
- เผยแพร่เป็นซอร์สโค้ดสาธารณะบน GitHub และเป็นโครงการ reimplementation แบบโอเพนที่รันได้บนระบบตระกูล POSIX และ VNC client
ภาพรวมของ Advanced Mac Substitute
- Advanced Mac Substitute(AMS) คือโครงการที่สร้าง Mac OS ยุคทศวรรษ 1980 ขึ้นใหม่ในระดับ API ทำให้สามารถรันแอปพลิเคชัน Mac แบบ 68K ได้โดยไม่ต้องใช้ ROM หรือซอฟต์แวร์ระบบของ Apple
- ต่างจากอีมูเลเตอร์แบบดั้งเดิมที่ไม่อีมูเลตฮาร์ดแวร์ทั้งระบบ โดยจะจำลองเฉพาะโปรเซสเซอร์ 680x0 และเข้ามาแทนที่ตัวระบบปฏิบัติการเอง
- ด้วยโครงสร้างนี้จึงสามารถเปิดแอปพลิเคชันได้ทันทีโดยไม่ต้องผ่านขั้นตอนบูต
โครงสร้างและองค์ประกอบ
- AMS ถูกสร้างในรูปแบบของแอปพลิเคชันแบบแยกส่วน (factored)
- แบ็กเอนด์ (backend) คือ 68K emulator ซึ่งสามารถบิลด์และรันได้บนระบบตระกูล POSIX แทบทุกแห่ง
- ฟรอนต์เอนด์ (frontend) คือชั้นนามธรรมของ bitmap terminal ซึ่งพัฒนาบนพื้นฐานของ SDL2 และมี implementation สำหรับ macOS, X11 และ Linux framebuffer (fbdev)
- โครงสร้างนี้ทำให้สามารถมอบสภาพแวดล้อมสำหรับรันแอปพลิเคชัน 68K Mac แบบเดียวกันได้บนหลายแพลตฟอร์ม
แอปพลิเคชันที่รันได้และเดโม
- AMS สามารถรันแอปพลิเคชันสำหรับ Macintosh รุ่นดั้งเดิมได้หลายตัว
- ตัวอย่างเช่นเกม Amazing, Solitaire, Missile, IAGO ที่ออกในปี 1984
- นอกจากนี้ยังรันโปรแกรมอย่าง MacPaint, System’s Twilight, Lode Runner, The Fool’s Errand ได้อีกด้วย
- แต่ละแอปพลิเคชันจะทำงานภายใน AMS ในสภาพแวดล้อมกราฟิก 1 บิต และมีวิดีโอแสดงการทำงานจริงให้ดู
ฟีเจอร์ที่รองรับ
- AMS รองรับองค์ประกอบกราฟิกและ UI ของ Mac OS ดังต่อไปนี้
- กราฟิกความลึก 1 บิต, regions, วงกลมและสี่เหลี่ยมมุมมน, เส้น (line), เคอร์เซอร์, GrafPorts, ข้อความ, หน้าต่าง, คอนโทรล, เมนู, ไดอะล็อก เป็นต้น
- สิ่งนี้ช่วยให้สามารถถ่ายทอดลักษณะด้านภาพและการทำงานของซอฟต์แวร์ Macintosh ในยุค 1980 ได้อย่างใกล้เคียงต้นฉบับ
ซอร์สโค้ดและสภาพแวดล้อมการรัน
- ซอร์สโค้ดของ AMS อยู่บน GitHub ใน metamage_1 repository
- สามารถรันได้โดยตรงบน macOS / OS X, X Window System, Linux framebuffer console หรือผ่านVNC client
- เอกสารเดิมของโครงการ (legacy documentation) ถูกย้ายไปยังหน้าแยกต่างหาก และขณะนี้กำลังอยู่ระหว่างการปรับปรุงแก้ไข
ตัวอย่างการสาธิต
- บนเว็บไซต์ทางการมีวิดีโอเดโมหลายรายการ และสามารถดูการรันของ MacPaint, Amazing, Nyanochrome Cat เป็นต้นได้
- หน้าจอ “Welcome to Advanced Mac Substitute” ไม่ใช่หน้าจอบูตจริง แต่เป็นอินเทอร์เฟซในรูปแบบแอปพลิเคชัน
ข้อมูลอื่น ๆ
- โครงการนี้ดูแลอยู่ที่ v68k.org และมีการอัปเดตล่าสุดเมื่อ 29 พฤศจิกายน 2025
- ผู้พัฒนายังคงเคลื่อนไหวผ่านบัญชี GitHub และ Twitter
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
เป็นโปรเจ็กต์ที่ยอดเยี่ยมมาก สุนทรียะแบบ ‘ไทม์ไลน์ทางเลือก’ ที่มาจากกลิ่นอายของ MacOS แบบคลาสสิก ขาวดำ ทำให้รู้สึกถึงความน่าเชื่อถือและความมั่นคง
มันทำให้นึกถึงความทรงจำของ Macintosh SE หรือ Plus ที่ตั้งเรียงกันอยู่ในห้องคอมพิวเตอร์สมัยประถม
ขอแนะนำ MacOS System 7 เว็บเดสก์ท็อป UI ที่ฉันทำขึ้น เป็น เวอร์ชันตีความใหม่ ที่สามารถท่องเว็บจริงได้
ฉันหัวเราะลั่นตอนเห็นสกรีนเซฟเวอร์ มันทั้งคุ้นเคยและแปลกประหลาด เหมือนกำลังมอง จักรวาลคู่ขนาน อยู่
เมื่อก่อนฉันก็เคยทำ Mac simulator บนเว็บ เหมือนกัน เดิมทีทำเพื่อเรียนรู้ CSS กับ JS แต่ก็ได้ตระหนักว่าเว็บไม่เหมาะกับการซ้อนโครงสร้างที่ซับซ้อน และประสบการณ์นั้นเองที่กลายมาเป็นแรงผลักดันให้สร้าง Advanced Mac Substitute
ช่วงไม่กี่เดือนมานี้ฉันกำลังเพิ่ม ARM64 JIT ให้กับ Basilisk II
ตอนนี้กำลังแพตช์ Quadra ROM เพื่อข้ามการตรวจจับฮาร์ดแวร์ NuBus
ฉันอยากลองใช้โปรเจ็กต์นี้มาก ถ้า สภาพแวดล้อม Mac แบบคลาสสิก มีฟีเจอร์สมัยใหม่อย่างการแชร์ไฟล์เพิ่มเข้ามา ก็น่าจะสมบูรณ์แบบแม้บนอุปกรณ์ขนาดเล็ก
น่าทึ่งที่ซอฟต์แวร์จากยุค 1980 ยังทำงานได้ด้วยแค่ ความเข้ากันได้ระดับ API
การที่มันไม่พึ่งรายละเอียดการติดตั้งอย่างจังหวะเวลา หรือการจัดแนวหน่วยความจำ ถือว่ายอดเยี่ยมมาก
แค่พึ่งพารายละเอียดการติดตั้งเพียงอย่างเดียว ก็อาจทำให้รันบน OS อื่นไม่ได้แล้ว
มันทำงานได้เกือบทุกอย่างด้วยแค่เฟรมบัฟเฟอร์ 1 บิตกับ CPU
การแฮ็กบนเครื่อง 8 บิตส่วนใหญ่เป็นการพยายามหลบข้อจำกัดของฟังก์ชันที่มีอยู่อย่างจำกัด
ไม่รู้ว่า Apple ตัดสินใจแบบนี้โดยคิดเผื่อคนรุ่นถัดไปหรือเปล่า แต่ โครงสร้างที่เรียบง่าย น่าจะทำให้การขยายต่อในรุ่นหลังทำได้ง่ายขึ้น
เป็นโปรเจ็กต์ที่ยอดเยี่ยมจริง ๆ มันทำให้นึกถึง ARDI Executor ซอฟต์แวร์เชิงพาณิชย์จากปี 1990
ตอนนั้นมันทำความเร็วได้น่าทึ่งมากบนฮาร์ดแวร์ PC ด้วยการ reimplement ระดับ API
ฉันยังจำได้ว่าตอนเด็ก ๆ รันเกม Mac บน Windows PC แล้วรู้สึกทึ่งว่า ‘แบบนี้ก็ทำได้เหรอ’
วิกิของ Executor กับ โค้ดบน GitHub ก็น่าดูเหมือนกัน
วิศวกรของ ARDI ยังโผล่มาสั้น ๆ ในสารคดี Triumph of the Nerds ปี 1996 ด้วย
สมัยนั้น ประสิทธิภาพของการ emulation เป็นเรื่องสำคัญ แต่ตอนนี้ฮาร์ดแวร์เร็วพอจนไม่ใช่ปัญหาใหญ่แล้ว
ตอนนี้สิ่งสำคัญคือ ความสามารถในการพอร์ตและการบำรุงรักษา รวมถึงการแพตช์โปรแกรมที่ออกแบบมาให้ยึด CPU แบบผูกขาดให้เข้ากับสภาพแวดล้อมสมัยใหม่
นึกไม่ออกเลยว่ามันจะเร็วแค่ไหนเมื่อเทียบกับฮาร์ดแวร์ Mac 512k ดั้งเดิม
มันทำให้นึกถึง ประสบการณ์เชิงกลไก ของยุคที่ต้องรันระบบจากฟลอปปีดิสก์แผ่นเดียว แล้วคอยสลับดิสก์ไปมาอยู่ตลอด
ถ้ามีฟังก์ชัน ‘ทำให้ช้าลง’ เพื่อจำลองแม้แต่เสียงอ่าน/เขียนฟลอปปีดิสก์ด้วยก็คงสนุกมาก
อยากรู้ว่าถ้าเทียบกับ Executor แล้วเป็นอย่างไร
อยากให้มี compatibility layer คล้าย Carbon ที่ทำให้แอปเก่ารันในหน้าต่างสมัยใหม่และยังเซฟไฟล์ได้
ตัวอย่างเช่น ใน เดโม MacPaint หากดับเบิลคลิกเอกสาร Hello มันจะเปิดด้วย MacPaint.app ใน Finder ของ macOS
อยากรู้ว่ามันเสร็จก่อน MACE หรือว่ามีเป้าหมายต่างกัน
“Dark Castle” จะรันได้ไหม? ฉันใช้เวลากับเกมนั้นไปเยอะมาก
แล้วถ้าดู คอมมิตนี้ ก็จะเห็นว่าจริง ๆ แล้วมันรันได้
เป็นความสำเร็จที่น่าทึ่งจริง ๆ อยากรู้เรื่องกระบวนการสร้าง แรงจูงใจ และเวลาที่ใช้
น่าจะเป็นเพราะในเวลานั้นการเรียกใช้ MacOS ส่วนใหญ่เข้าถึงผ่าน คำสั่ง TRAP ของ 68K จึงสามารถ reimplement ROM ได้โดยตรงแทนการ emulation ฮาร์ดแวร์
เพื่อนของฉันเองก็เคยเขียน Toolbox ใหม่เป็นไลบรารี C เพื่อพอร์ตแอป Mac ไปลง PC
เขา reimplement เกือบทุกอย่างใหม่หมด ทั้ง QuickDraw, Event Manager, Memory Manager ฯลฯ โดยใช้ OpenLook UI เลยให้ความรู้สึกต่างออกไปโดยสิ้นเชิง