A Macintosh Plus emulator written in Go for macOS, Windows and Linux. Built on iz68000.
It runs the real ROM and the real software: the processor, the memory, the video and the sound, the clock with its parameter RAM, the keyboard and the mouse, the SCSI bus with up to seven disks on it, and both diskette drives, reading, writing and formatting. The clipboard is shared with the host, and an ImageWriter II on the printer port turns what the machine prints into images. Nothing arrives the other way down a serial line, so AppleTalk and the LaserWriter are out.
The development was assisted by Claude Code based on the architecture of my previous similar pre-AI projects izapple2, iz6502 and bbz
No installation required. Download the archive for Linux, Windows or macOS and run the single executable inside.
On macOS it can also be installed with homebrew:
brew install ivanizag/tap/izmacizmac with no arguments comes up on MacPaint 1.5, downloading the ROM and a disk image the first time and keeping both:
izmac
Or just put the fisk images you want to run, the emulator will automatically what they are, floopies, hard disk images or disk partitions and mount them:
izmac system.img games.dskPoint at the window and the machine points where you point. F10 opens the emulator's menu.
More info in the manual .
| The manual | installing izmac, the first run, and what the machine is |
| Disks and diskettes | where the software comes from, and how to put it in |
| Keyboard, mouse and the menu | driving the machine and driving the emulator |
| Printing | the ImageWriter on the printer port, and where the pages go |
| Command line options | every option of both frontends |
| Speed, the clock and the tracers | the emulator's own knobs, and the debugging tools |
| When something goes wrong | the failures worth recognising |
You need Go 1.26 or newer:
go run ./frontend/macebiten mydisk.imgRunning from the source in the manual
has the rest of it, and doc/plan.md has the hardware notes and the design
decisions behind the emulator.
go test ./... # all of it
go test -short ./... # without the end to end tests, in secondsThe end to end tests, in e2e_tests, start a Macintosh Plus on
the ROM and the disks in test_images and take it through what
a user does: the Finder, the Chooser, printing, AppleShare, two machines on
LocalTalk. They run in parallel, and take a few minutes.
test_images/README.md says what is on each disk and
how they are made.
izmac is a Go package as well as an emulator. A program makes a machine with
izmac.NewMac, runs it a frame at a time with RunFrames, and reads what it
shows with Screenshot, CurrentApplication or MountedVolumes. The
operator package is someone sitting at it, with the mouse and the
keyboard: it clicks, drags, chooses from menus, types, and waits for an
application to start, as a person would. The end to end tests are written with
it.
The activities package makes the pictures of the
activities: an Album of screenshots and GIF
recordings, in the frame they all have. The activities of the documentation
are its tests, and anyone can write more the same way.
- Inside Macintosh*, volume III, chapter 2, "The Macintosh Hardware", pages III-17 to III-46, refered as the book on the comments.
- Guide to the Macintosh Family Hardware*, 2nd edition
- mac_rom, Jonathan Schilling's commented and buildable disassembly
- Mini vMac
- The
mac128driver of MAME
While runnng, izmac optionally fetches:
- The ROM from The Internet Archive: Macintosh ROM archive
- MacPaoint 1.5 from The Internet Archive: MacPaint 1.5 diskette
- The scsi driver from MrGaaS's github: blank formatted disks
