Macintosh Programmer's Workshop (mpw) compatibility layer
Go to file
2015-02-17 00:23:12 +00:00
bin gcc-4.9 support/c11 fixes 2015-02-17 00:23:12 +00:00
cpu fix disassembly for Bxx.L 2015-01-07 19:09:01 -05:00
cxx cxx string_splitter 2015-02-06 19:58:19 -05:00
macos ENOTEMPTY (rmdir) is fBsyErr 2015-01-16 20:34:10 -05:00
mplite update mempool with fixes in sqlite 2015-01-13 13:51:41 -05:00
mpw gcc-4.9 support/c11 fixes 2015-02-17 00:23:12 +00:00
test comments from basilisk execution 2015-02-06 19:59:45 -05:00
toolbox gcc-4.9 support/c11 fixes 2015-02-17 00:23:12 +00:00
verbatim Smarter handling of : after a variable. 2015-02-08 14:49:08 -05:00
.gitignore updated gitignore 2015-02-06 20:51:25 -05:00
CHANGELOG.text changeling, bump version 2015-02-12 20:14:15 -05:00
CMakeLists.txt move debugger code into bin, clean up dispatch 2013-07-07 23:42:27 -04:00 Update 2015-02-14 09:57:40 -05:00
README.text updated readme 2013-08-16 22:53:04 -04:00
TODO.txt todo update 2013-08-21 21:28:50 -04:00

MPW Emulator

by Kelvin W Sherlock, et alia

Please check the wiki for useful information.

System compatibility

Currently, only OS X 10.8+ with case-insensitive HFS+ is supported.


The 680x0 CPU code is from WinFellow and is licensed under GPL v2 or later. Consequently, the compiled binary is licensed under the GPL v2 as well.

The memory allocator (NewHandle/NewPointer) code is from mempoolite, which is a fork of the SQLite zero-alloc allocator by Jefty Negapatan and D. Richard Hipp. It, as is SQLite, is in the public domain.


Compiling requires cmake, ragel, lemon, and a recent version of clang++ with c++11 support. It has only been built and tested with OS X 10.8+.

mkdir build cd build cmake .. make

This will generate bin/mpw and bin/disasm.


Certain configuration and execution files are generally useful. They are stored in an mpw directory, which may be located:

$MPW (shell variable)
~/mpw/ (your home directory)

The layout is reminiscent of actual MPW installations.


Environment file

The Environment.text file is new; it contains MPW environment variables (many of them set the library and include file locations). The format is fairly simple.

# this is a comment

#this sets a variable
name = value

# this sets a variable if it is undefined.
name ?= value

# values may refer to other variables


mpw [mpw flags] command-name [command arguments]

you may also create shell aliases:

alias AsmIIgs='mpw AsmIIgs'

or create a shell script (in /usr/local/bin, etc)



exec mpw AsmIIgs $@

mpw uses the MPW $Commands variable to find the command, similar to $PATH on Unix. If the $Commands variable is not set, mpw looks in the current directory and then in the $MPW:Tools: directory.