3 điểm bởi GN⁺ 2025-06-28 | 1 bình luận | Chia sẻ qua WhatsApp
  • Snow tái hiện các máy Macintosh cổ điển dựa trên Motorola 680x0 theo cách gần với phần cứng, giúp có thể sử dụng môi trường Mac cũ trên các hệ thống hiện đại
  • Thay vì vá ROM hay chặn các lời gọi hệ thống, dự án hướng tới giả lập ở cấp độ phần cứng và đồng thời cung cấp giao diện đồ họa cùng các tính năng gỡ lỗi
  • Hỗ trợ nhiều mẫu Mac cổ điển từ Macintosh 128K đến SE/30, cho phép thử nghiệm rộng rãi với dòng máy Mac đời đầu
  • Đây là dự án mã nguồn mở theo giấy phép MIT được viết bằng Rust, đồng thời đã công bố bản demo trực tuyến giới hạn và tài liệu cài đặt
  • Bản phát hành ổn định có thể tải từ GitHub, còn các bản build phát triển mới nhất ít được kiểm thử hơn nhưng có sẵn cho Windows, macOS và Linux

Giả lập Mac cổ điển gần với phần cứng

  • Snow là một dự án giả lập các máy tính Macintosh cổ điển dựa trên Motorola 680x0
  • Cung cấp giao diện người dùng đồ họa để điều khiển máy được giả lập cùng các tính năng gỡ lỗi phong phú
  • Mục tiêu là giả lập Macintosh ở cấp độ phần cứng nhiều nhất có thể, thay vì vá ROM hoặc chặn các lời gọi hệ thống
  • Các mẫu hiện được hỗ trợ:
    • Macintosh 128K/512K/512Ke
    • Macintosh Plus
    • Macintosh SE, non-FDHD và FDHD
    • Macintosh Classic
    • Macintosh II, non-FDHD và FDHD
    • Macintosh IIx, IIcx, SE/30

Cách công bố và trải nghiệm

Phát hành và kênh hỗ trợ

  • Các bản phát hành ổn định được đóng gói khi đạt tới những cột mốc nhất định
  • Có thể tải bản phát hành ổn định từ GitHub releases
  • Bản build phát triển mới nhất (bleeding edge) được tạo tự động theo tiến độ phát triển của trình giả lập; có thể bao gồm tính năng mới hơn nhưng ít được kiểm thử hơn
  • Các bản build phát triển mới nhất được cung cấp:
    • Windows 10 trở lên x86 64-bit
    • Windows 10 trở lên ARM64
    • macOS 11.7 Big Sur trở lên Universal
    • Linux Ubuntu 24.04 x86 64-bit
    • Linux Ubuntu 24.04 ARM64
  • Báo lỗi và yêu cầu cải tiến được tiếp nhận tại GitHub issues
  • Có thể nhận hỗ trợ hoặc trao đổi tại kênh #snow của The Opcode Collective Discord

1 bình luận

 
GN⁺ 2025-06-28
Ý kiến trên Hacker News
  • Để hiểu bối cảnh vì sao một trình giả lập cấp phần cứng dễ dùng và có thể mang theo cho Mac cổ điển lại có ý nghĩa lớn, có thể xem bài viết năm 2020 này: https://invisibleup.com/articles/30/
    Máy chơi game từ lâu đã có các trình giả lập như Nestopia, bsnes, Dolphin, Duckstation; phía PC thì ảo hóa như VMWare và VirtualBox đã đáp ứng hầu hết nhu cầu, còn gần đây cũng có các trình giả lập độ trung thực cao như 86Box và MartyPC
    C64 có VICE, Amiga có WinUAE, Apple II cũng có các trình giả lập chất lượng cao như KEGS và AppleWin, nhưng Mac nhìn chung vẫn dừng ở các trình giả lập mức cao, xấp xỉ như Basilisk II

    • Cũng có Executor, dù độ tương thích kém hơn nhiều so với những cái khác: https://en.wikipedia.org/wiki/Executor_(software)
      Cũng có thể chạy phiên bản Solitaire cho Macintosh ngay trong trình duyệt bằng cách để trình duyệt giả lập MS-DOS rồi chạy Executor/DOS trên đó: https://archive.org/details/executor
      Ngoài Executor/DOS, một phiên bản chưa công bố từng chạy trên workstation Sun 3; Executor/NEXTSTEP chạy trên máy NeXT và hỗ trợ cả thiết bị nền 680x0 lẫn PC x86 có thể chạy NEXTSTEP
      Executor có độ tương thích thấp nhất vì hoàn toàn không dùng tài sản trí tuệ của Apple; ROM và phần thay thế phần mềm hệ thống là triển khai clean-room, không tháo ngược Apple ROM hay các tệp System
      Có bản port Linux, nhưng nhiều khả năng khó build. Lý do là CPU tổng hợp dựa vào các phần mở rộng riêng của gcc để vắt tối đa hiệu năng từ 80386
      Tôi biết khá nhiều về Executor, vì tôi đã viết phiên bản ban đầu. Tuy vậy, những phần thật sự ấn tượng như trình giả lập 68k tổng hợp hay subsystem màu là do các lập trình viên giỏi hơn tôi rất nhiều tạo ra
    • Bài đó khách quan là đúng, nhưng đây là lần đầu tôi thấy công sức nhọc nhằn mà người ta làm miễn phí bị hạ thấp một cách kỳ quặc như vậy
    • Có thể khó gọi là “thân thiện với người dùng”, nhưng MAME giả lập Macintosh và Apple II ở cấp phần cứng
      Nó chính xác hơn KEGS hay AppleWin và xử lý nhiều thiết bị ngoại vi hơn, nhưng kém thân thiện với người dùng hơn
    • Tôi đã boot được trình giả lập Macintosh II FDHD, nhưng dù hướng dẫn Snow nói trình giả lập Mac II FDHD cung cấp hai SuperDrive, trong menu của trình giả lập https://docs.snowemu.com/manual/media/floppies lại chỉ cho nạp floppy 400K/800K
      Có lẽ vì vậy mà mọi image floppy tôi thử đưa vào đến giờ đều bị đẩy ra ngay lập tức, kể cả đĩa System 7.1.1 800K được cho là tương thích với Mac II
      Tiềm năng của Snow rất lớn và tôi tôn trọng công sức đã bỏ ra, nhưng thành thật mà nói, bức tranh giả lập Mac cho đến nay trông vẫn chưa khác xưa là mấy. Nhiều trình giả lập cung cấp một ma trận sản phẩm lồi lõm về phần cứng được giả lập và tính năng hỗ trợ, đòi hỏi nhiều quy trình cùng kiến thức sẵn có về cấu trúc bên trong của Mac đời cũ, và vẫn ở trạng thái hứa hẹn cho tương lai
    • Một điểm không nên quên là MAME cũng hỗ trợ 68k Macintosh ở một mức độ nào đó
      https://wiki.mamedev.org/index.php/Driver:Mac_68K
  • Vì tính chính xác, có lẽ nó sẽ không có các tính năng mạnh của BasiliskII. BasiliskII vá OS/ROM để thêm độ phân giải siêu cao và tích hợp gần như liền mạch với hệ thống tệp cũng như mạng của máy chủ
    Đáng tiếc là Basilisk khá thiếu ổn định, có lẽ vì vừa không chính xác vừa có các tính năng mạnh. Khi chạy đúng thì dùng thật sự rất dễ chịu

    • Một trình giả lập chính xác và codebase sạch là điểm khởi đầu tốt để chồng thêm các bản vá hoặc đường tắt
      Tôi đã xem qua mã vá của Basilisk và nó không phức tạp đến vậy; trong mã nội bộ của Basilisk, Executor, MACE, v.v. cũng có khá nhiều phần tái triển khai Toolbox
      Việc port sẽ cần chút công sức, nhưng nhìn chung có lẽ gần với dịch trực tiếp mã và bổ sung dựa trên kiểm thử
  • Làm sao tìm được ROM? Tôi đã tải vài cái từ các trang tìm thấy trên Google, nhưng trình giả lập lúc nào cũng báo “Unknown or unsupported ROM file”. Có thể lấy tệp ROM dùng được ở đâu?

  • Khá nhiều công việc tôi làm thời đầu ngay sau khi tốt nghiệp đại học được lưu trên một đống đĩa Bernoulli định dạng Mac
    Phần mềm cần dongle ADB để chạy, nên cần phần cứng thật. Tôi tò mò liệu có bộ chuyển ADB-USB nào có thể map vào trình giả lập không

    • Tất cả bộ chuyển ADB-USB mà tôi biết chỉ hỗ trợ chuột và bàn phím, firmware bên trong map chúng sang USB HID
      Để passthrough thô vào trình giả lập, có lẽ cần viết firmware tùy chỉnh. Có lẽ crack phần mềm còn dễ hơn
    • Nếu bạn vẫn chưa sao lưu, dữ liệu đó có thể đã mất rồi
      Nếu là dữ liệu có giá trị, tốt nhất nên kiểm tra trước khi quá muộn
    • Ai có một hộp Bernoulli còn hoạt động thì nhiều khả năng cũng có luôn một máy Mac cũ phù hợp với nó
    • Cái này có thể làm được: https://www.bigmessowires.com/usb-wombat/
  • Tôi thử khởi động bằng bộ đĩa cài đặt Mac OS 7.1 tiêu chuẩn dễ kiếm và ROM Mac Plus, nhưng đĩa bị đẩy ra ở Drive 0
    Nhìn việc Mini vMac vẫn chạy được thì có vẻ vẫn cần cải thiện

  • Khá bất ngờ khi hỗ trợ HD20 cho SE, II, v.v. được hiển thị là “không áp dụng”. Theo tôi biết, tất cả các mẫu trong danh sách ngoại trừ II đều có hỗ trợ khởi động HD20 trong ROM
    Tôi cũng đang dùng trình giả lập HD20 trên Mac SE thật
    Đây là một trong những cách tiện nhất để mang image đĩa có kích thước tùy ý qua lại giữa trình giả lập Mac và trình giả lập floppy thật

  • Vì đây là trình giả lập 68K được triển khai lại bằng Rust, nên không có phần nào dùng chung với các CPU core nổi tiếng viết bằng C như Musashi hay mã UAE

  • Mac có cần giả lập chính xác theo chu kỳ phần cứng như Lisa không? Tôi đã thử lisaem và cũng thử nghiệm với Qemu, nhưng Lisa OS đưa ra các giả định về timing phần cứng mà Qemu không thể đáp ứng

    • Các Mac đời đầu dùng IWM, về cơ bản là bộ điều khiển Disk II năm 1977 của Wozniak được thu gọn vào một chip
      Kỹ thuật mã chính xác theo chu kỳ giống như dùng trên Apple II cũng đã được dùng trên Mac
      Đây cũng là lý do con trỏ thỉnh thoảng bị khựng khi đang ghi đĩa. Mac có bộ định thời ngắt 60Hz cũng dùng để theo dõi con trỏ, nhưng trong lúc ghi thì phải tắt nó
      Điều này cũng được nhắc thoáng qua trong bài của Andy Hertzfeld trên Folklore.org:

      Woz's disk technology required that the software feed it new data every 32 microseconds exactly. If we were even a single microsecond early or late, it would cause a glitch in the data and ruin it. In order to write the routines, I needed to know how fast the Macintosh executed each instruction. The manual gave the number of clocks for each instruction, but I wasn't sure how long it took to fetch from memory. So of course, I asked Burrell what the timings were, but I was surprised at his response.
      "I don't know. The Mac is synchronous, just like the Apple II, so each instruction has the same timing, every time you execute it, so you will be able to write disk routines that have exact timing. I don't know what it is, so we'll just measure it. Why don't you write your routine and we'll measure it with the logic analyzer."
      -- https://www.folklore.org/Nybbles.html
      Nhìn vào đó, có vẻ về mặt lý thuyết những kỹ thuật đĩa đặc thù của Apple II như track xoắn ốc, sector có kích thước khác nhau, nhiều cách nibble hóa khác nhau cũng có thể làm được trên Mac. Tôi tò mò không biết thực tế chúng có từng được dùng để chống sao chép không

  • Cảm giác thật sự như máy thật và công việc làm rất xuất sắc. Liệu có thể dùng cái này cho giả lập Atari ST không?

    • Hatari chẳng phải đã rất tốt rồi sao? https://github.com/hatari/hatari
      Cũng có Clock Signal(CLK). Dự án này tự mô tả là “trình giả lập ghét độ trễ dành cho Acorn Electron và Archimedes, Amstrad CPC, Apple II/II+/IIe và Macintosh đời đầu, Atari 2600 và ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 và Amiga, MSX 1/2, Oric 1/Atmos, các máy tương thích PC đời đầu, Sega Master System, Sinclair ZX80/81 và ZX Spectrum”: https://github.com/TomHarte/CLK