Snow - Classic Macintosh emulator

1 day ago (snowemu.com)

GitHub repo: https://github.com/twvd/snow, Announcement from creator: https://www.emaculation.com/forum/viewtopic.php?t=12509, Originally-submitted source with further details: https://oldbytes.space/@smallsco/114747196289375530

For some context about why a portable, user-friendly, hardware-level emulator for classic Mac systems is such a big deal, see this blog post from 2020: https://invisibleup.com/articles/30/

For game consoles, we've had emulators like Nestopia and bsnes and Dolphin and Duckstation for years.

For PCs, virtualisation systems like VMWare and VirtualBox have covered most people's needs, and recently there's been high-fidelity emulators like 86Box and MartyPC.

The C64 has VICE, the Amiga has WinUAE, even the Apple II has had high-quality emulators like KEGS and AppleWin, but the Mac has mostly been limited to high-level and approximate emulators like Basilisk II.

  • In compatibility, it's MUCH worse than all the others, but there's also Executor: https://en.wikipedia.org/wiki/Executor_(software) which you can use to run a Macintosh version of solitaire in your browser by having the browser emulate MS-DOS which then runs Executor/DOS: https://archive.org/details/executor

    In addition to Executor/DOS, a non-released version ran on the Sun 3 workstations (they too had 680x0 processors) and Executor/NEXTSTEP ran on NeXT machines, both the 680x0 based ones and the x86 powered PCs that could run NEXTSTEP.

    Executor was the least compatible because it used no intellectual property from Apple. The ROMs and system software substitutes were all written in a clean room--no disassembly of the Apple ROMs or System file.

    Although Executor ostensibly has a Linux port, it's probably hard to build (I haven't tried in a couple decades) in part because to squeeze the maximum performance out of a 80386 processor, the synthetic CPU relied on gcc-specific extensions.

    I know a fair amount about Executor, because I wrote the initial version of it, although all the super impressive parts (e.g., the synthetic 68k emulator and the color subsystem) were written by better programmers than I am.

    • Thank you so much for Executor. I used to run it on my 486 Linux box, over an X11 SSH tunnel to the Sun workstation I used in the computer labs for work on campus. I balanced my checkbook and wrote essays in emulated Excel and Word (with rough compatibility with the Windows versions). It was so cool to be able to mix and match systems that way.

    • I had a licensed copy of Executor back in the mid-90s. It was the coolest thing ever. Thanks for being one of my inspirations to go into software development.

    • When I was starting out in the 90s, Executor was one of those very cool pieces of software I would love to play around with.

  • I managed to get the Macintosh II FDHD emulator to boot, but the emulator menu only invites me to load 400K/800K floppies despite the Snow manual claiming that the Mac II FDHD emulator provides two SuperDrives https://docs.snowemu.com/manual/media/floppies . Maybe that has something to do with why the system has immediately ejected every floppy image I've given it so far, including 800K System 7.1.1 disks which are supposedly Mac II compatible. I'm sure that Snow has a great deal of promise and I salute the hard work, but to be honest, so far the overall landscape of Mac emulation seems much the same as before, with n emulators offering a jagged product matrix of emulated hardware and supported features; lots of hoop-jumping and necessary, assumed prior knowledge of old Mac plumbing; and promises for the future.

  • That article is objectively true but .. I've never seen such a grotesque dismissal of the hard work people have done for free.

    • I feel like that’s a bit harsh, but I’ll admit that it is needlessly inflammatory. I wasn’t in the best state mentally when I wrote that. (I do sometimes worry that I’m responsible for the disappearance of Paul C. Pratt…) At some point I need to either rewrite it to be less hostile or just yank it entirely.

      3 replies →

    • For the amount of time and effort that went into that article, the author could surely have fixed at least one of the things they complain about! And they don't seem to understand the C #include mechanism at all, so should we even pay attention to their technical criticisms in the first place?!

      5 replies →

  • It might not count as "user-friendly" but MAME does hardware-level emulation of the Macintosh and Apple II (more accurate and more peripherals but less user friendly than KEGS and AppleWin).

  • there's definitely room to improve user friendliness of mac emulation (minivmac's compile time config is so infuriating), but I think it's a bit unfair to compare to most of those emulators

    vmware and virtualbox were backed by billion dollar corps

    the 16 bit machines are much simpler than macs

    game consoles had highly homogenous well documented hardware, and sold in much greater numbers (snes alone sold more than all macs from 1987 to 1995) so there's a larger community to draw devs and users from. writing a nes emulator is almost a weekend project now, it's so documented.

    • It should be pointed out that VMware started as a tiny, scrappy company mostly focused on selling workstation seats for you to run Windows on your Linux computer (which I did back circa 1999, so I could use Linux on my desktop), and VirtualBox started out from InnoTek, a tiny company which was essentially making software to emulate Windows on OS/2, and then later did a contract with Connectix to run OS/2 on Windows (or other hosts) using Virtual PC.

      Connectix got bought by Windows, and InnoTek got bought by Sun, which is now Oracle. Connectix themselves started as a scrappy outfit making it possible to run DOS/Win95 on a Mac.

      The core emulation was pretty much done and stable and optimised before the billion-dollar corps bought them out.

      1 reply →

I suppose - owing to its accuracy - that this doesn't have some of BasiliskII's killer features: it patches the OS/ROMs to add support for super-high resolutions and (mostly) seamless integration with the host's file system and network.

It's a shame that Basilisk - possibly owing to its inaccurate but killer features - is as janky as it is, because it's really remarkably pleasant to use when it works.

  • An accurate emulator with clean codebase is a good starting point onto which to add patches/shortcuts. I've looked through the Basilisk patching code, it's not really complicated, and there are a handful of partial Toolbox reimplementations including the bits in Basilisk, Executor (author is in the comments here), MACE, etc. It would be some work to port but mostly direct translation of the code & adding test infrastructure.

    • As an aside, I really wish MACE would open-source their work. They've made some impressive progress, but I worry that work's going to go to waste if it stays closed.

      1 reply →

    • One way to add devices that doesn't require ROM or software modification, but _does_ require modifying the emulator: create a virtual memory-mapped device off 68K bus, and write a driver/CDEV to drive it. The SE and Macintosh II had blessed but different expansion options, after all.

      For earlier models, there are unused apertures in model memory maps that are at least 2KB large, but they do differ between models.

Little help - how can I find ROM-s? I tried to download some using sites found in Google, but the emulator always says "Unknown or unsupported ROM file". How can I find usable roms?

Much of my early post-college work is stored across a stack of Mac formatted Bernoulli disks. The software requires an ADB dongle to run, so physical hardware is required. I wonder if any of those ADB to USB adapters could be mapped into the emulator?

I'm surprised HD20 support is listed as "not applicable" for SE, II, etc: I think all models listed except for II have HD20 boot support in ROM. I use an HD20 emulator with my physical Mac SE.

It's one of the most convenient ways to get arbitrary-sized disk images both into emulators -- both Mac emulators and physical floppy emulators.

I tried loading this with the standard Mac OS 7.1 install disks readily available, with a Mac plus rom. Drive 0: disk ejected? Mini vMac seems to work. I guess it needs some work still.

Does the Mac - like the Lisa - also require cycle accurate emulation of the hardware? I spent some time with lisaem and made experiments with Qemu, but the Lisa OS makes assumptions about hardware timing which cannot be met by the latter.

  • The early Macs used the IWM, which is basically Wozniak's 1977 Disk II controller reduced to one chip. The same trick with cycle-exact code, that was used in the Apple II, is also used in the Mac.

    It's why the cursor stops moving sporadically when writing to a disk. The Mac has a 60 Hz interrupt timer that also tracks the cursor. It needs to be switched off when writing.

    There's a story on Folklore.org by Andy Hertzfeld that mentions it in passing:

    > 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

    This reminds me that all of the unusual Apple II disk stuff like spiral tracks and different-sized sectors and different nibbilization schemes were also, at least theoretically, possible on the Mac. I wonder if they were ever used for copy protection?

    • Early Mac games did have disk-based copy protection, and yes there was a cracking scene. A lot of these games did not run on later Macs, so this was largely forgotten.

      1 reply →

Feels so real, great work.

Any chance this could be made to emulate an Atari ST?

  • Hatari is already excellent? https://github.com/hatari/hatari

    And there's also Clock Signal (CLK) "A latency-hating emulator of: the Acorn Electron and Archimedes, Amstrad CPC, Apple II/II+/IIe and early Macintosh, Atari 2600 and ST, ColecoVision, Enterprise 64/128, Commodore Vic-20 and Amiga, MSX 1/2, Oric 1/Atmos, early PC compatibles, Sega Master System, Sinclair ZX80/81 and ZX Spectrum." https://github.com/TomHarte/CLK

Was this inspired by MartyPC?

  • Funny you mention that, I'm actually friends with twvd and we share a discord server and trade UI ideas as we both use the same GUI toolkit. Snow actually uses the disk image library I built for MartyPC.

    Inspired is a strong word. I didn't invent the concept of an accurate emulator, although I'm certainly a fan of his approach.

The original submission was to a post that explains why this is news, and not just a random project:

A brand new 68k Mac emulator quietly dropped last night!!

“Snow” can emulate the Mac 128k, 512k, Plus, SE, Classic, and II. It supports reading disks from bitstream and flux-floppy images, and offers full execution control and debugging features for the emulated CPU. Written using Rust, it doesn't do any ROM patching or system call interception, instead aiming for accurate hardware-level emulation.

* Download link (Mac, Windows, Linux): https://snowemu.com

* Documentation link: https://docs.snowemu.com

* Source link: https://github.com/twvd/snow

* Release announcement: https://www.emaculation.com/forum/viewtopic.php?t=12509

-- https://oldbytes.space/@smallsco/114747196289375530

I understand why links get re-written, but I think the context is relevant and can help the random reader who is unfamiliar with the project.

Off-topic...

I wish Apple would bring back the white menubar background and the coloured logo.

The white menubar makes the whole computer easier to use in a small but constant way. The coloured apple icon would suggest they no longer have their heads stuck up their assess and might bring back "fun" rather than "showing off" to their design process. And then maybe, maybe... with that "suggestion" symbolised in the UI, we can hope they might bring back the more rigorous user-centric design process they used to be famous for.

  • https://www.macrumors.com/2025/06/23/macos-tahoe-beta-2-menu...

    • Are they really changing the UI up again? I am actually so done at this point. The endless UI churn drives me absolutely mad, but I suppose when there's nothing left to do, making it look different is easy.

      I suppose a built in volume mixer is still too much to ask for though.

      3 replies →

    • Nice, thanks. I'll use that when I upgrade.

      But I'm not going to upgrade whilst the back/next buttons are floating 3m above the window as suggested in that screen shot.

  • Turning “Reduce Transparency” on in Accessibility > Display will solidify the menubar in both light and dark modes.

    I go through phases with transparency off or on.

    • Same.

      Sometimes I enjoy the translucent menus. They make the machine look "glossy" and expensive. But they're definitely harder to read than opaque flat ones.

      With "reduce transparency" on, it's better, but the menubar still isn't white. It's a textured light grey that's closer to the look of an unfocused app window than the solid, dependable, flat thing I wish it still was.

  • What about setting a white background, which yields a white menubar?

    A color logo might be added with an overlay app – or you reminisce a black&white screen.

    • So are we supposed to make custom backgrounds with a 30px white bar on top instead of expecting this to be an option in the settings like in every other sanely customizable OS?

    • seconding the overlay app, i forgot the name but there was an app that can configure the appearance of the menubar. maybe it's my menubar icon organizer? Not dozer or bartender, but can't recall right now

      1 reply →

I'm not sure why OP links to this site, but the actual project is here

https://snowemu.com/

https://github.com/twvd/snow

  • Personally I find an announcement like the one linked more helpful and useful to create a context, rather than linking directly to the project.

    Links to the actual project are in the submitted post, so you can get an overview before then being directed to the project itself.

    As always YMMV, indeed, YMWV, but I like seeing the announcement giving the context rather than a bare pointer to the project.

    • ... and while I appreciate the rationale behind it, I'm always saddened when a carefully chosen link that suits the way I think, giving and overview and a context with links to the projects, is then over-written by the direct link to the project that doesn't give a sense of why it's interesting or relevant.

      But as the Man in Black says in The Princess Bride: "Get used to disappointment".

      5 replies →