1 คะแนน โดย GN⁺ 17 일 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • ในช่วงทศวรรษ 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 ความคิดเห็น

 
GN⁺ 17 일 전
ความคิดเห็นจาก Hacker News
  • เป็นโปรเจ็กต์ที่ยอดเยี่ยมมาก สุนทรียะแบบ ‘ไทม์ไลน์ทางเลือก’ ที่มาจากกลิ่นอายของ MacOS แบบคลาสสิก ขาวดำ ทำให้รู้สึกถึงความน่าเชื่อถือและความมั่นคง
    มันทำให้นึกถึงความทรงจำของ Macintosh SE หรือ Plus ที่ตั้งเรียงกันอยู่ในห้องคอมพิวเตอร์สมัยประถม
    ขอแนะนำ MacOS System 7 เว็บเดสก์ท็อป UI ที่ฉันทำขึ้น เป็น เวอร์ชันตีความใหม่ ที่สามารถท่องเว็บจริงได้

    • แค่เห็นไอคอน Mac ยิ้มกับแถบความคืบหน้าว่างเปล่า ฉันก็อนุญาตโดเมนนี้ใน NoScript ทันทีเลย มันมีเสน่ห์มาก
      ฉันหัวเราะลั่นตอนเห็นสกรีนเซฟเวอร์ มันทั้งคุ้นเคยและแปลกประหลาด เหมือนกำลังมอง จักรวาลคู่ขนาน อยู่
      เมื่อก่อนฉันก็เคยทำ Mac simulator บนเว็บ เหมือนกัน เดิมทีทำเพื่อเรียนรู้ CSS กับ JS แต่ก็ได้ตระหนักว่าเว็บไม่เหมาะกับการซ้อนโครงสร้างที่ซับซ้อน และประสบการณ์นั้นเองที่กลายมาเป็นแรงผลักดันให้สร้าง Advanced Mac Substitute
  • ช่วงไม่กี่เดือนมานี้ฉันกำลังเพิ่ม ARM64 JIT ให้กับ Basilisk II
    ตอนนี้กำลังแพตช์ Quadra ROM เพื่อข้ามการตรวจจับฮาร์ดแวร์ NuBus
    ฉันอยากลองใช้โปรเจ็กต์นี้มาก ถ้า สภาพแวดล้อม Mac แบบคลาสสิก มีฟีเจอร์สมัยใหม่อย่างการแชร์ไฟล์เพิ่มเข้ามา ก็น่าจะสมบูรณ์แบบแม้บนอุปกรณ์ขนาดเล็ก

  • น่าทึ่งที่ซอฟต์แวร์จากยุค 1980 ยังทำงานได้ด้วยแค่ ความเข้ากันได้ระดับ API
    การที่มันไม่พึ่งรายละเอียดการติดตั้งอย่างจังหวะเวลา หรือการจัดแนวหน่วยความจำ ถือว่ายอดเยี่ยมมาก
    แค่พึ่งพารายละเอียดการติดตั้งเพียงอย่างเดียว ก็อาจทำให้รันบน OS อื่นไม่ได้แล้ว

    • Mac Classic เป็นระบบที่แทบจะบริสุทธิ์สมบูรณ์แบบในเชิงโครงสร้าง
      มันทำงานได้เกือบทุกอย่างด้วยแค่เฟรมบัฟเฟอร์ 1 บิตกับ CPU
      การแฮ็กบนเครื่อง 8 บิตส่วนใหญ่เป็นการพยายามหลบข้อจำกัดของฟังก์ชันที่มีอยู่อย่างจำกัด
      ไม่รู้ว่า Apple ตัดสินใจแบบนี้โดยคิดเผื่อคนรุ่นถัดไปหรือเปล่า แต่ โครงสร้างที่เรียบง่าย น่าจะทำให้การขยายต่อในรุ่นหลังทำได้ง่ายขึ้น
    • แน่นอนว่าก็มีแอปจำนวนมากที่พึ่งพา ความเพี้ยนเฉพาะทาง (quirk) ของการติดตั้งด้วย
  • เป็นโปรเจ็กต์ที่ยอดเยี่ยมจริง ๆ มันทำให้นึกถึง ARDI Executor ซอฟต์แวร์เชิงพาณิชย์จากปี 1990
    ตอนนั้นมันทำความเร็วได้น่าทึ่งมากบนฮาร์ดแวร์ PC ด้วยการ reimplement ระดับ API
    ฉันยังจำได้ว่าตอนเด็ก ๆ รันเกม Mac บน Windows PC แล้วรู้สึกทึ่งว่า ‘แบบนี้ก็ทำได้เหรอ’
    วิกิของ Executor กับ โค้ดบน GitHub ก็น่าดูเหมือนกัน
    วิศวกรของ ARDI ยังโผล่มาสั้น ๆ ในสารคดี Triumph of the Nerds ปี 1996 ด้วย

    • ฉันรู้จัก Executor อยู่แล้ว แต่ไม่เคยเห็นมันทำงานจริง
      สมัยนั้น ประสิทธิภาพของการ emulation เป็นเรื่องสำคัญ แต่ตอนนี้ฮาร์ดแวร์เร็วพอจนไม่ใช่ปัญหาใหญ่แล้ว
      ตอนนี้สิ่งสำคัญคือ ความสามารถในการพอร์ตและการบำรุงรักษา รวมถึงการแพตช์โปรแกรมที่ออกแบบมาให้ยึด CPU แบบผูกขาดให้เข้ากับสภาพแวดล้อมสมัยใหม่
  • นึกไม่ออกเลยว่ามันจะเร็วแค่ไหนเมื่อเทียบกับฮาร์ดแวร์ Mac 512k ดั้งเดิม
    มันทำให้นึกถึง ประสบการณ์เชิงกลไก ของยุคที่ต้องรันระบบจากฟลอปปีดิสก์แผ่นเดียว แล้วคอยสลับดิสก์ไปมาอยู่ตลอด
    ถ้ามีฟังก์ชัน ‘ทำให้ช้าลง’ เพื่อจำลองแม้แต่เสียงอ่าน/เขียนฟลอปปีดิสก์ด้วยก็คงสนุกมาก

    • ไม่นานมานี้มี โปรเจ็กต์ฮาร์ดแวร์ย้อนยุค ขึ้น HN ที่ใส่ sound emulation มาด้วย เสียงนั้นน่าประทับใจที่สุด
    • ฉันเคยใช้ emulator ของ Apple II ที่ชื่อ Virtual II ซึ่งมีทั้งเสียงฟลอปปีดิสก์และฟังก์ชันปรับความเร็ว ให้ความรู้สึกคล้ายกันมาก
    • ฉันยังจำตอนเด็กที่เล่น King’s Quest IV บน Apple IIe ได้ ทุกครั้งที่ย้ายฉากต้องเปลี่ยนฟลอปปีดิสก์ มันคือ ความทรมานของการสลับดิสก์ อย่างแท้จริง
  • อยากรู้ว่าถ้าเทียบกับ Executor แล้วเป็นอย่างไร

  • อยากให้มี compatibility layer คล้าย Carbon ที่ทำให้แอปเก่ารันในหน้าต่างสมัยใหม่และยังเซฟไฟล์ได้

    • Advanced Mac Substitute บันทึกเอกสารและไฟล์ตั้งค่าไว้ในโฮสต์ไดเรกทอรีแบบ sandboxed
      ตัวอย่างเช่น ใน เดโม MacPaint หากดับเบิลคลิกเอกสาร Hello มันจะเปิดด้วย MacPaint.app ใน Finder ของ macOS
    • โปรเจ็กต์แบบนี้ดูเหมือนจะกลายเป็น รากฐาน ของระบบลักษณะนั้นได้เลย
  • อยากรู้ว่ามันเสร็จก่อน MACE หรือว่ามีเป้าหมายต่างกัน

  • “Dark Castle” จะรันได้ไหม? ฉันใช้เวลากับเกมนั้นไปเยอะมาก

    • ฉันยังสงสัยอยู่เลยว่าทำไมตัวเอกถึงหน้าตาเหมือน Shaggy จาก Scooby Doo
      แล้วถ้าดู คอมมิตนี้ ก็จะเห็นว่าจริง ๆ แล้วมันรันได้
    • สำหรับฉันคงขอข้ามไป Beyond Dark Castle เลย ความ ลงตัวของงานสร้าง ต่างกันชัดเจน
  • เป็นความสำเร็จที่น่าทึ่งจริง ๆ อยากรู้เรื่องกระบวนการสร้าง แรงจูงใจ และเวลาที่ใช้

    • แรงจูงใจแรกสุดที่ทำให้ฉันเริ่มโปรเจ็กต์นี้ น่าจะเป็นความอยากชุบชีวิต The Fool’s Errand ขึ้นมาอีกครั้ง ฟังดูย้อนแย้งแต่ก็เป็นจุดเริ่มต้นจริง ๆ
      น่าจะเป็นเพราะในเวลานั้นการเรียกใช้ MacOS ส่วนใหญ่เข้าถึงผ่าน คำสั่ง TRAP ของ 68K จึงสามารถ reimplement ROM ได้โดยตรงแทนการ emulation ฮาร์ดแวร์
      เพื่อนของฉันเองก็เคยเขียน Toolbox ใหม่เป็นไลบรารี C เพื่อพอร์ตแอป Mac ไปลง PC
      เขา reimplement เกือบทุกอย่างใหม่หมด ทั้ง QuickDraw, Event Manager, Memory Manager ฯลฯ โดยใช้ OpenLook UI เลยให้ความรู้สึกต่างออกไปโดยสิ้นเชิง