Skip to content
ivanizagPublic

About

Macintosh Plus emulator in Go

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

55 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

izmac

A Macintosh Plus emulator written in Go for macOS, Windows and Linux. Built on iz68000.

MacPaint 1.5

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

Installing

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/izmac

Running it

izmac 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.dsk

Point at the window and the machine points where you point. F10 opens the emulator's menu.

The manual

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

Building it

You need Go 1.26 or newer:

go run ./frontend/macebiten mydisk.img

Running 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.

Testing it

go test ./...          # all of it
go test -short ./...   # without the end to end tests, in seconds

The 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.

Driving it from a program

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.

References

  • 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 mac128 driver of MAME

While runnng, izmac optionally fetches:

About

Macintosh Plus emulator in Go

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages