July 23, 2024


Technological development

A tour de force of emulation and integr • The Register

A tour de force of emulation and integr • The Register

Friday FOSS Fest Emulators make it easy to run vintage software in a window on a modern machine, but without specialist knowledge of obsolete systems, it can be hard to do much with them. It turns out, unexpectedly, that a good answer to this is… run them in a browser.

MacOS9.app is the latest, and in some ways the most impressive, installment of “the Infinite Mac,” a series of five web-based emulators of classic Macintosh computers. It adds a MacOS 9 version to the existing System7.app and MacOS8.app emulators. That meant changing emulation engine, since MacOS 9 is PowerPC-only. All of them load inside a web page, but execute on your local machine; their storage is online, streamed on demand, and comes preloaded with a swath of apps and games… but even so, they’re set up to allow you to load and save files from your local drive, and they can even network with other instances of themselves.

Emulation is fun. Even a low-end 21st century computer is so much faster (and more capacious) than one from 25 or 30 years ago that it can not only easily run a full-speed emulation of the older machine, you can also do tricks like running emulators inside emulators. There are snags, though: Where do you find the ancient OSes to run on the emulated machine? And the apps or games to run on that OS? If you do find them, then how do you get them into an emulated machine that only understands long-obsolete media and – if you’re lucky – network protocols?

Early in his career, your correspondent was a bit of an expert in all things DOS, and still has some hobby projects involving resurrecting ancient, now freeware, versions of DOS. (You might have inferred some of this from the story about the release of FreeDOS 1.3.) It’s easy to get DOS (or even, say, Windows 9x) running inside a VM on a modern OS, but it’s then very difficult to get files into or out of that DOS VM. In its day, DOS didn’t speak TCP/IP and couldn’t mount CDs as writeable volumes. Connecting it to a shared drive on the host machine means installing multiple additional components, and there’s no straightforward way to get those tools into the VM other than creating floppy-disk images, or ISO files full of installers and mounting them in a virtual CD drive. It is, in short, a pain.

Similar issues are true of existing Mac emulators such as Basilisk II, as you can see from the quite long guide on how to install MacOS 7 into it. (Specifically, MacOS 7.5.3, because that’s the only version of classic MacOS it was possible to download from Apple.com for free – and it’s gone now.) You also need a file containing an image of a Macintosh ROM, which wasn’t easy to obtain legitimately.

This is what Tailscale’s Mihai Parparita decided to fix. As he described on his blog, he took James Friend’s browser-based version of Basilisk II, added a pre-installed hard disk image full of apps and games, networking support, and methods for transferring files between the emulated Mac and the host. A particularly striking aspect is how quickly the emulated Macs start up. He told us:

The even bigger improvement in boot up time was switching from loading the entire disk image (which is ~50MB) to only loading the parts of it that are needed for startup. There are many resources that are not needed at startup, so they don’t need to be downloaded. This is done by breaking up the hard drive into 256K chunks and only loading them from the network when the emulator asks for them (the LED on the monitor blinks when this happens). This also unblocked having the large (1GB) “Infinite HD” with all the software – it’s all loaded on demand as you browse around.

The result, as he summarized previously, was a big hit. This week, he published a new iteration, which replaces the Basilisk engine with SheepShaver, providing PowerPC emulation instead of 68040.

About building the new version, he modestly told us:

It is quite different, but at the same time I’m building on the existing work for the Basilisk II (68K) and SheepShaver (PPC) emulators, and they share sub-systems and the overall architecture style, so it was not as big of a lift as it seems. I’m currently investigating what it would take to support System 6 and older OS’es, which would involve bringing up mini vMac or another emulator, which is going to be a bigger task.

If you prefer System 7 on PowerPC, there’s a version for that too, as well as a Japanese-language version, KanjiTalk. The whole series are free to use, and the source code is available, if you want to see how it works. ®