- Snow là một trình giả lập mã nguồn mở tái hiện hoạt động phần cứng của Macintosh dựa trên Motorola 680x0 sát với máy thật nhất có thể
- Cung cấp giao diện người dùng đồ họa (GUI) và các tính năng gỡ lỗi mạnh mẽ
- Khác với các trình giả lập hiện có, Snow giảm thiểu việc vá ROM hoặc chặn bắt system call
- Hỗ trợ các mẫu Macintosh 128K/512K/Plus/SE/Classic/II
- Được phát triển dựa trên Rust, có thể build và tải xuống trên nhiều hệ điều hành
Tổng quan dự án
- Snow là trình giả lập tái hiện bằng phần mềm các máy tính Macintosh cổ điển (dòng 680x0)
- Người dùng có thể sử dụng qua giao diện đồ họa như đang thao tác trên máy Mac thật
- Có tính năng gỡ lỗi phong phú, phù hợp cho phát triển hoặc phân tích
Cách hoạt động và đặc điểm
- Snow hướng tới mô phỏng hoàn chỉnh ở mức phần cứng (low-level) trong phạm vi có thể
- Thay vì dùng cách phổ biến là vá ROM hoặc обход system call, Snow khiến hệ thống hoạt động giống phần cứng thật
- Các mẫu được hỗ trợ chính thức:
- Macintosh 128K
- Macintosh 512K
- Macintosh Plus
- Macintosh SE
- Macintosh Classic
- Macintosh II
- Được triển khai bằng ngôn ngữ Rust, nhấn mạnh hiệu năng và an toàn
- Là mã nguồn mở, phát hành theo giấy phép MIT
Trải nghiệm và tài liệu
- Cung cấp phiên bản demo giới hạn có thể chạy trong trình duyệt web
- Tuy nhiên, không cung cấp đầy đủ mọi tính năng của phần mềm hoàn chỉnh (đặc biệt là GUI)
- Có thể tham khảo cách cài đặt và sử dụng chi tiết qua tài liệu trực tuyến
Hướng dẫn tải xuống
- Hiện tại chỉ tự động cung cấp phiên bản phát triển mới nhất (bleeding edge build)
- Windows 10 trở lên (x86 64-bit)
- macOS 11.7 (Big Sur) trở lên (universal)
- Linux (Ubuntu 24.04, x86 64-bit và ARM64)
- Đang phân phối các bản build có thể tải ngay theo từng hệ điều hành
Liên hệ và tham gia
- Có thể báo lỗi và đóng góp thông qua kho lưu trữ GitHub
1 bình luận
Ý kiến Hacker News
Để hiểu bối cảnh vì sao một trình giả lập cấp phần cứng có tính di động và thân thiện với người dùng cho các hệ thống Mac cổ điển lại có ý nghĩa lớn, có thể tham khảo bài blog từ năm 2020 này https://invisibleup.com/articles/30/ Trong khi máy chơi game đã có từ lâu những trình giả lập xuất sắc như Nestopia, bsnes, Dolphin, Duckstation, thì phía PC chủ yếu được đáp ứng nhu cầu phổ thông bằng các hệ thống ảo hóa như VMWare, VirtualBox, và gần đây mới xuất hiện các trình giả lập độ chính xác cao như 86Box, MartyPC. Commodore 64 có VICE, Amiga có WinUAE, Apple II có các trình giả lập chất lượng như KEGS và AppleWin, nhưng phía Mac thì chủ yếu chỉ có các trình giả lập gần với kiểu trừu tượng hóa mức cao như Basilisk II, tức là chỉ tái tạo tương đối giống chứ chưa thật sự sát.
Cũng có nhắc đến một lựa chọn khác là Executor, dù còn thiếu nhiều về mặt tương thích https://en.wikipedia.org/wiki/Executor_(software) Có cả demo trong đó trình duyệt giả lập MS-DOS, rồi chạy game Solitaire cho Macintosh bằng Executor/DOS trên đó https://archive.org/details/executor Ngoài Executor/DOS còn có một bản riêng tư cho workstation Sun 3 dùng bộ xử lý 680x0, cùng Executor/NEXTSTEP dành cho môi trường NEXTSTEP. Executor bị chỉ ra là có mức tương thích thấp nhất vì hoàn toàn không dùng bất kỳ tài sản trí tuệ nào của Apple; cả ROM lẫn phần mềm hệ thống thay thế đều được viết mới theo phương pháp clean-room. Các phiên bản cũ của Executor dùng phần mở rộng chỉ dành cho gcc nên việc build trên Linux ngày nay có thể khó hoặc không thể. Người viết đã trực tiếp phát triển phiên bản đầu của dự án Executor, còn trình giả lập 68k hiệu năng cao và hệ thống con màu sắc thì do những lập trình viên giỏi hơn nhiều thực hiện.
Đồng ý rằng nội dung bài viết là đúng, nhưng cũng có cảm giác nó đánh giá quá thấp nỗ lực của cộng đồng đóng góp miễn phí nói chung.
Nhấn mạnh rằng MAME cũng giả lập Macintosh và Apple II ở cấp phần cứng; nó chính xác hơn KEGS và AppleWin, đồng thời hỗ trợ nhiều thiết bị ngoại vi hơn, nhưng lại kém thân thiện với người dùng hơn.
Đã thử chạy trình giả lập Macintosh II FDHD, nhưng trong menu chỉ hiện thông báo bảo chỉ nạp floppy 400K/800K, trong khi tài liệu của Snow ghi rõ là hỗ trợ hai ổ SuperDrive https://docs.snowemu.com/manual/media/floppies Có lẽ vì vậy mà nó lập tức nhả toàn bộ ảnh đĩa mềm đã đưa vào từ trước, thậm chí không nhận cả đĩa System 7.1.1 loại 800K dành cho các hệ tương thích Mac II. Vẫn thấy Snow có rất nhiều tiềm năng và đáng được ghi nhận công sức, nhưng hệ sinh thái giả lập Mac hiện vẫn ở tình trạng mỗi trình giả lập hỗ trợ phần cứng và tính năng khác nhau rất thất thường, vẫn cần đủ kiểu mẹo vặt và kiến thức nền về cấu trúc bên trong của Mac đời cũ, nên cảm giác vẫn toàn là những lời hứa hướng tới tương lai.
Chia sẻ thêm rằng MAME cũng hỗ trợ ở mức nào đó cho Macintosh dùng 68k https://wiki.mamedev.org/index.php/Driver:Mac_68K
Vì tính chính xác của trình giả lập, có lẽ nó sẽ thiếu một số tính năng quan trọng mà BasiliskII có. BasiliskII cung cấp nhiều chức năng như hỗ trợ siêu độ phân giải cao thông qua vá OS và ROM, tích hợp khá mượt với hệ thống tệp và mạng của máy chủ. Nhưng cũng chính vì điều đó có thể khá lỏng lẻo hoặc thiếu chính xác, nên trải nghiệm người dùng không có kiểu hoàn chỉnh tuyệt đối đặc trưng; bù lại, khi nó hoạt động đúng thì cảm giác sử dụng thật sự rất dễ chịu.
Cần lời khuyên về cách kiếm file ROM cho Mac. Đã tải vài cái từ một trang tìm được qua Google, nhưng trình giả lập cứ báo lỗi "file ROM không xác định hoặc không được hỗ trợ". Hỏi cách tìm được ROM dùng ổn.
https://macintoshgarden.org/ luôn được tự tin khuyên là nguồn tốt nhất và đáng tin cậy.
Cảm thấy khá vô lý khi Apple đến giờ vẫn còn kiện những người đăng các ROM cổ này lên mạng.
Chia sẻ trải nghiệm cá nhân rằng các ROM trong kho dưới đây hoạt động được https://archive.org/details/mac_rom_archive_-_as_of_8-19-2011
Các sản phẩm làm hồi đầu mới tốt nghiệp đại học đang được lưu trên các đĩa Bernoulli định dạng Mac. Để chạy phần mềm đó thì bắt buộc phải có một dongle ADB, nên đang thắc mắc liệu có bắt buộc phải dùng phần cứng vật lý hay không. Câu hỏi là liệu có bộ chuyển đổi ADB-USB nào có thể map để kết nối với trình giả lập hay không.
Các bộ chuyển ADB-USB đã biết cho đến nay chỉ hỗ trợ chuột và bàn phím; firmware bên trong chỉ map được sang USB HID. Nếu muốn passthrough hoàn toàn thì sẽ cần firmware tùy biến, và có lẽ hack cơ chế chống sao chép của phần mềm đó còn dễ hơn.
Nếu vẫn chưa sao lưu thì có nguy cơ mất dữ liệu; nếu dữ liệu quý thì nên kiểm tra càng sớm càng tốt.
Có ý kiến rằng những người còn giữ được ổ Bernoulli hoạt động thường cũng có sẵn phần cứng Mac đời cũ phù hợp.
Có thể sản phẩm dưới đây sẽ hữu ích https://www.bigmessowires.com/usb-wombat/
Nhấn mạnh đây là một trình giả lập 68K được tái triển khai bằng Rust, hoàn toàn không dùng mã CPU viết bằng C nổi tiếng và phổ biến như Musashi hay UAE.
Thử khởi động bằng bộ đĩa cài Mac OS 7.1 thường dễ kiếm và file ROM của Mac Plus, nhưng ổ đĩa 0 cứ liên tục nhả đĩa ra. Mini vMac thì chạy tốt, nên cảm giác hiện vẫn cần cải thiện thêm.
Thấy lạ khi hỗ trợ HD20 trên các máy như Mac SE hay II lại bị ghi là "không áp dụng". Mọi mẫu máy đó, trừ II, đều có hỗ trợ khởi động HD20 ngay từ ROM. Đang trực tiếp dùng trình giả lập HD20 trên Mac SE, và thấy đây là cách rất hay để dễ dàng áp dụng nhiều dạng ảnh đĩa khác nhau cho cả Mac lẫn trình giả lập floppy.
Tò mò liệu Mac, giống như Lisa, có cần "độ chính xác theo chu kỳ" (cycle accuracy) của phần cứng hay không. Trường hợp Lisa thì OS giả định một số timing của phần cứng, thứ mà các trình giả lập như Qemu không đáp ứng được.
Chia sẻ ấn tượng cá nhân rằng đây là một bản triển khai rất sống động. Hỏi liệu có hy vọng giả lập được cả Atari ST hay không.