Macintosh Programmer's Workshop (mpw) compatibility layer
Go to file
Kelvin Sherlock 45c89042ee Squashed commit of the following:
commit 13b5c532e1b72b7d3737c451a519af749d25c61f
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Tue Jan 6 17:46:00 2015 -0500

    add fclassify sane ops.

commit 374aa6cc90218d8f86843cf5eecbf3095fe59a5e
Author: Kelvin Sherlock <ksherlock@gmail.com>
Date:   Tue Jan 6 16:55:16 2015 -0500

    proc entry / proc exit stubs and updated environment documentation
2015-01-06 17:46:24 -05:00
bin merge in debug template code 2015-01-05 20:28:56 -05:00
cpu updates to match current fellow cpu code 2014-12-04 16:09:18 -05:00
macos add tool_return pair for returning error or value. 2014-12-20 12:20:18 -05:00
mplite mpllite functions for maxmem/freemem compatibility 2013-03-30 18:44:39 -04:00
mpw use mpw_errno_from_errno() 2014-12-21 08:25:40 -05:00
toolbox Squashed commit of the following: 2015-01-06 17:46:24 -05:00
verbatim verbatim code 2013-08-21 21:30:06 -04:00
.gitignore
CHANGELOG.text updated changelog 2015-01-04 11:34:19 -05:00
CMakeLists.txt move debugger code into bin, clean up dispatch 2013-07-07 23:42:27 -04:00
README.md Update README.md 2013-08-16 22:51:28 -04: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.

License

The 680x0 CPU code is from WinFellow and is licensed under GPL v2 or later. Consequently, the rest of the code 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.

Building

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.

Installation

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)
/usr/local/share/mpw/
/usr/share/mpw/

The layout is reminiscent of actual MPW installations.

mpw/Environment.text
mpw/Tools/...
mpw/Interfaces/...
mpw/Libraries/...
mpw/Help/...

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
Libraries=$MPW:Libraries:Libraries:
Libraries=${MPW}:Libraries:Libraries:

Usage

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)

/usr/local/bin/AsmIIgs:

#!/usr/bin/sh

exec mpw AsmIIgs $@

mpw looks in the current directory and then in the $MPW:Tools: directory for the command to run. The MPW $Commands variable is not yet supported.