Top
Best
New

Posted by ColinWright 5 days ago

Snow - Classic Macintosh emulator(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
278 points | 91 comments
thristian 5 days ago|
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.

nmdeadhead 5 days ago||
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.

joshmarinacci 4 days ago|||
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.
dlevine 4 days ago||||
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.
homarp 5 days ago||||
https://github.com/autc04/executor is a more recent fork of executor (but based on the issues, it does build on recent OS)
homarp 4 days ago||
typo: does NOT build on recent OS
mattl 4 days ago|||
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.
0points 4 days ago|||
Not to be forgotten: MAME supports the 68k macintoshes to some extent

https://wiki.mamedev.org/index.php/Driver:Mac_68K

xdfgh1112 5 days ago|||
That article is objectively true but .. I've never seen such a grotesque dismissal of the hard work people have done for free.
InvisibleUp 4 days ago|||
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.
InvisibleUp 4 days ago|||
Update: Now that I'm off work, I’ve removed the big rant about mini vMac’s code and sanded off the snark from the rest. I should have done this years ago, and I never should have added that in the first place.
troad 4 days ago|||
I stopped reading when we got to sarcastic hate-compiling. That whole part could be a thoughtful and compassionate discussion of the state of Mac emulators, and would be much more persuasive if it were, and instead it reads like a blog-length dunk tweet.

> I feel like that’s a bit harsh, but I’ll admit that it is needlessly inflammatory.

You're asking for a courtesy here that you failed to extend to others.

When you write a hit piece on someone's hobby volunteer code, and then you get called out for being unduly mean, I don't think you get to complain people are being harsh to you. You chose to devote hours of your time to dismantling something someone put years of effort in, entirely as a fun hobby. (Antique Mac emulation is certainly not the highway to riches.) You say 'inflammatory', like the issue here is that you're slightly heated and passionate. No, the issue here is that the piece boils down to bullying other people because their fun hobby projects don't meet your esoteric standards ('no Github releases!').

> 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…)

Nothing about your mental state gives you licence to bully others. Their emotional states are no less important than yours.

InvisibleUp 4 days ago||
To clarify, at the time I was aiming for the tone of Tantacrul's popular and well-received videos about poor software UX. (In particular, the MuseScore video is a good comparison; that was also an open source passion project.) Light-hearted ribbing / frustration venting mixed with genuine compassion toward the project's creator and his remarkable effort. Clearly I wildly missed the mark there. I'll try my best to avoid things like this happening again in the future.
tom_ 5 days ago|||
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?!
ndiddy 5 days ago||
I don't know if you read the whole article. The author did make a Mini vMac fork to clean up the build system and code, she linked it at the end. https://github.com/InvisibleUp/uvmac .
tom_ 5 days ago|||
Ha. I was starting to find the article a bit tiring and the moment my eyes landed on the Conclusion heading I stopped right there. You shouldn't trust my criticisms either.
tclancy 4 days ago||
Wait, but that last sentence makes you a reliable narrator now. I am lost.
projektfu 4 days ago|||
Oh, thank goodness. Hacking Mini vMac was a chore and I didn't have the energy to do something like this.
nxobject 4 days ago||
My 2c: having played around with the codebase recently (to add C++ to the codebase), I did find Cursor helpful in figuring out how to work with the bespoke build system.
ksherlock 5 days ago|||
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).
snvzz 4 days ago|||
Note that while this was true about software, there is also hardware (FPGA HDL), such as the MacPlus-miSTer core[0].

0. https://github.com/MiSTer-devel/MacPlus_MiSTer

Palomides 5 days ago|||
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.

trollbridge 4 days ago||
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.

Palomides 4 days ago||
vmware apparently had 20 employees in year one, I don't think a single person has ever worked full time on a mac emulator (other than Apple's internal ones, of course)

even a "tiny, scrappy company" has massive manpower compared to 99.999% of open source projects

anthk 4 days ago||
You forgot miniVMAC, 68k. Qemu does MacPPC fine.
wk_end 5 days ago||
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.

hedgehog 4 days ago|
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.
duskwuff 4 days ago|||
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.
hedgehog 4 days ago||
Aha, I got MACE and Advanced Mac Substitute (AMS) mixed up. AMS looks less complete but has source available.

https://www.v68k.org/advanced-mac-substitute/

nxobject 4 days ago|||
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.

mdavid626 5 days ago||
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?
longtimelistnr 5 days ago||
https://macintoshgarden.org/ has always been the gold standard source for me!
CTOSian 4 days ago||
I usually use https://www.macintoshrepository.org , the garden lack some proper organisation
RachelF 4 days ago|||
It's a bit crazy that Apple still prosecutes people who put these old ROMs online.
reaperducer 5 days ago||
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?

These seem to work:

https://archive.org/details/mac_rom_archive_-_as_of_8-19-201...

mdavid626 4 days ago||
Very nice, thank you.

I try to run some of them, e.g. Macintosh Plus. It does accept the ROM, but it just shows a flashing floppy disk icon and doesn't do anything else. How could this be fixed?

numpad0 4 days ago|||
Macintosh ROMs aren't OS, they're like BIOS images. The OS were supplied in forms of either CD for data + minimum OS on floppy, or a 40-ish box of floppies.

Apps on Macintosh were supplied as disk images often compressed in hqx formats. You'll need PC Exchange and StuffIt Expander - think of those as equivalents of a file extension renaming tool, and 7-zip.

Installation of apps was often accomplished by dragging and dropping the application icon from installer image to Applications folder, although some did came with Windows-like installer apps.

Unmounting disks and installer images was done by moving disk icons to Trash(recycle bin). It's the most intuitive and straightforward feature of classic MacOS, followed by "Shut down" menu being under "Special".

duskwuff 4 days ago||||
The icon is telling you that you need a disk to boot from.

https://www.gryphel.com/c/minivmac/start.html has some links.

wsc981 4 days ago||||
The Mac Plus didn’t have an internal hard drive. So you need to start the OS from a floppy.

My father used an external hard drive with his Mac Plus, back in the day.

jakedata 5 days ago||
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?
kalleboo 5 days ago||
All of the ADB to USB adapters I know of only support mice and keyboards and have internal firmware that maps to USB HID. You'd have to write a custom firmware to make a raw pass through to an emulator...

It would probably be easier to crack the software!

longtimelistnr 5 days ago|||
I have a large collection of vintage Mac's and peripherals, with the largest quantity being the Apple Keyboard II [1]. Archive forums all suggest the Belkin ADB Adapter [2] but that has long since been retired. I would like to make my own, i know instructions exist for a raw passthrough.

[1]https://en.wikipedia.org/wiki/File:Apple_Keyboard_II.jpg

[2]https://www.cnet.com/tech/computing/hack-your-old-macs-adb-k...

mewse-hn 4 days ago||
I made a adb-to-usb adapter for my AEK2 using a teensy 2.0 and a cut up s-video cable. The TMK and QMK firmware have this functionality, but I used this firmware because it's much smaller and not a "kitchen sink" keyboard firmware:

https://github.com/gblargg/adb-usb

Unfortunately it's US-ANSI only so my pile of 4 french canadian AEK2s don't work very well with it.

mrpippy 5 days ago|||
The Griffin iMate was the most popular ADB-USB adapter from the time, and probably supports non-input devices (it would’ve been the only option at the time to make those dongles work).
kalleboo 4 days ago||
Ah yeah, the ones that were sold at the time would work if you passed through USB to an emulator that supported USB hardware, or reverse-engineered their proprietary protocol. I was only thinking of the modern options when I wrote my comment.
ChrisRR 5 days ago|||
If you've not backed it up already that data might be gone. If it's valuable to you then I'd recommend finding out sooner than later
jakedata 5 days ago||
Good advice of course. It is not valuable, and it is not my product - I merely worked on it. The real value was guiding me _away_ from a career as a programmer (and the friends we made along the way).
mmmlinux 5 days ago|||
Anyone who has a working Bernoulli box probably has a matching old mac to go with it.
jakedata 4 days ago||
Several, yes ;-)
thehigherlife 5 days ago||
maybe this would work? https://www.bigmessowires.com/usb-wombat/
jakedata 4 days ago||
It turns out there has been some discussion on emulating or passing through ADB hardware keys but nothing conclusive seems to have come of it.
chiffre01 4 days ago||
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.
nxobject 4 days ago||
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.

gbraad 3 days ago||
It is a reimplemented 68K emulator in Rust, so shares nothing from Musashi or UAEs code (wellknown cpu cores in C).
Rochus 4 days ago||
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.
retrac 4 days ago|
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?

flomo 4 days ago||
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.
Someone 4 days ago||
The original Mac floppy also was constant linear velocity (https://en.wikipedia.org/wiki/Constant_linear_velocity), with rotation speed being under software control.

http://www.mac.linux-m68k.org/devel/plushw.php:

“The Macintosh disk interface uses a design similar to that used on the Apple II and Apple III computers, employing the Apple custom IWM chip. Another custom chip called the Analog Signal Generator (ASG) reads the disk speed buffer in RAM and generates voltages that control the disk speed. Together with the VIA, the IWM and the ASG generate all the signals necessary to read, write, format, and eject the 3 1/2-inch disks used by the Macintosh.”

car 4 days ago|
Feels so real, great work.

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

msephton 4 days ago|
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

More comments...