Mac OS 9
Text

Mac OS 9

The Mac OS 9 app is a real Mac in a window: an emulated Power Mac G4 running Mac OS 9.2.2, with a hard disk of its own. exe's desktop only resembles a classic Mac. This one is the system itself, with its Finder, its control panels and the software written for it.

What it is for

  • Run classic Mac software. Mount a CD image (ISO, CDR, IMG or Toast) and use what is on it in the system it was written for.
  • A Mac that stays as you left it. What you install and save is kept on its 2 GB hard disk, on this node. Closing the window leaves the Mac running, and opening it again returns to the same Mac.
  • A Mac on the network. Once installed it reaches the internet through this machine, and classic HTTP browsers work in it.
  • The whole screen, and sound. The Mac can fill your screen, and its sound plays in your browser.

The Mac is not one of exe's Linux virtual machines. It is emulated in software and needs no hypervisor, so it also runs on a node that cannot run VMs.

What it needs

  • An emulator. exe sets up its own PowerPC emulator, a download of about 6 MB, on Linux (x86-64 or ARM64, glibc 2.35 or later), macOS 11 or later and Windows 10 or later (x86-64). It is QEMU with the Mac's sound hardware and a screen paced for your browser. A Mac set up with an earlier emulator gets it the next time it starts. On other systems, install qemu-system-ppc and qemu-img first.
  • Room on this node. The installer is a 497 MiB download, and the Mac's hard disk is 2 GB.

Set it up the first time

  1. Choose Special → Mac OS 9; it is also among the built-in apps. The first launch shows each setup step: preparing QEMU, downloading the 497 MiB Universal installer, checking its checksum, creating a 2 GB persistent disk, and starting the Mac.
  2. When the Mac's screen appears, follow the guide the app shows above it. It takes you through Drive Setup and Apple Software Restore inside the Mac.
  3. After Restore reports success, shut down the guest: Special → Shut Down in the Mac's own menu bar.
  4. Click Installation finished — start my Mac.

Subsequent launches use the saved installation: opening the app starts the Mac from its disk.

Setup details opens the steps and live download progress in a compact in-app dialog over the Mac. Close it with OK or Escape; setup continues, and the guest display keeps its size and connection.

If setup stops

Setup can be paused and retried, and closing the window keeps both setup and a running Mac alive.

  • Pause setup stops a setup that is under way, and Continue setup takes it up again.
  • If exe restarts during a download, choose Continue setup once the connection returns.
  • Use Resume installer if the Mac was shut down before Restore completed.
  • Completed installer downloads are reused after checksum verification, and a download that stopped part way goes on from where it stopped.
  • A failed Start keeps its error visible so you can address the cause and retry.

Start it, leave it, shut it down

  • Start. Opening the app starts a Mac that is shut down. With the window already open, click Start Mac.
  • Leave. Closing the window leaves the Mac running. An open window reconnects automatically after an exe restart or a temporary network interruption, returning to the same running Mac.
  • Shut down from Special → Shut Down inside the Mac to save its files cleanly.

The window

The Mac OS 9 window: a running Power Mac G4 with the Finder, its Control Strip, and the app's own buttons above it

The app's own buttons are in a row above the Mac's screen. The status line at the foot names the hardware, a PowerPC G4 with 512 MB of memory, and says whether the display is connected.

ButtonWhat it does
Start MacStarts the Mac when it is shut down. During setup the same button reads Continue setup or Resume installer.
Pause setupStops a setup that is under way.
Setup detailsShows the setup steps and the download's progress.
Mac keys…Sends a common Command-key shortcut to the Mac, or wakes its display.
Full screenGives the Mac more room.
Sound offEnables the Mac's sound in your browser, where the node has audio support.
CD…Shows the mounted CD and the disc images you can mount.

Keyboard and mouse

Click the Mac's screen to type in it.

The pointer follows your browser cursor directly, including when you leave and re-enter the window. A bundled open-source USB tablet driver loads at boot; no guest installation is needed. Mouse-wheel scrolling is not supported by that driver; use the Mac's scrollbar controls.

Use Mac keys… for common Command-key shortcuts: ⌘ Q to quit, ⌘ W to close, ⌘ O to open and ⌘ L to open a location.

The display

The Mac's Monitors control panel offers only 640×480, 800×600 and 1024×768, with 800×600 as the default.

The app window fits the selected guest resolution automatically. Each guest pixel occupies a whole number of physical screen pixels (1×, 2×, 3×, and so on), including at Windows' 125% or 150% display scaling. The largest crisp size that fits is used; this can be smaller than a fractionally enlarged display. There is no separate grow tile. If even 1× will not fit, the display shrinks proportionally to keep the whole Mac visible.

Use Full screen for more room. Full screen uses the same scaling and adjusts when you move between monitors or change browser zoom.

  • When browser fullscreen is unavailable, including in iPad Home Screen apps, the Mac expands within exe; tap Exit full screen to return.
  • Browser fullscreen also supports older iPad Safari; use the browser's exit control or Escape to return.

When the display turns black

If the connected display turns black after being idle, choose Mac keys… → Wake display, or press Shift with the Mac focused. This wakes Energy Saver without typing or restarting the guest; mouse movement alone may not wake it.

To keep the Mac awake, open Apple menu → Control Panels → Energy Saver inside the guest and set system sleep to Never. Under Show Details, also disable a separate display-sleep timer if one is enabled.

CDs

Click CD… in the toolbar to see the full mounted CD filename, mount an available disc image, or Eject it. The toolbar also shows the filename when space permits. On a phone, tap the CD glyph to see its full filename and controls.

To put a new disc in the drive:

  1. Click CD…, then Upload image…, and choose an ISO, CDR, IMG or Toast raw disc image (up to 2 GiB) from your browser.
  2. Select it under Available images and click Mount.

Images stay on this node and existing files are kept when filenames match. Changes take effect without restarting the Mac, and the displayed filename follows ejects inside Mac OS 9 too. After a Mac restart, mount the desired CD again.

If the Mac locks the disc, eject it in Finder first, or close programs using it before choosing Force eject. Force eject can leave the old volume visible in Finder; restart the Mac if that happens.

Sound

Click Sound off to enable sound in your browser; the button changes to Sound on. Click it again to mute. Browser playback needs this first click.

  • Sound stops when the window is closed or hidden, and an enabled session resumes after reconnecting.
  • The button is disabled when the Mac runs on an emulator without its sound hardware: one this system supplied, not exe's own.
  • On narrow screens the button shows a speaker glyph.
  • Sound travels through the existing authenticated display connection; it does not play through the server's speakers.

Clock and network

The Mac's clock starts at this machine's own local date and time, so a browser in the guest judges today's certificates against today's date and HTTPS works without a visit to Date & Time. Only the installation boot is pinned to 2003, where the Universal installer and the era's software expect to be.

The installed guest has a sungem Ethernet adapter with outbound NAT and DHCP; networking is disabled while booting the installer. Classic HTTP browsers work; modern HTTPS compatibility depends on the guest browser.

Where it is kept

The runtime, installer, setup progress and disk live in ~/.exe/mac-os9/ (or $EXE_HOME/mac-os9/), outside app-data sync: the Mac belongs to this node and is not copied to joined ones.

The display uses private local sockets and the same API token as exe. No public VNC port is opened.

The API is GET /v1/macos9, POST /v1/macos9/start, /cancel and /finish, the binary WebSocket at /v1/macos9/console, and for the CD drive GET and POST /v1/macos9/cd and POST /v1/macos9/cd/upload.

Contents