Table of Contents

Cloning From Github

NOTE: You can compile and run your own Elements just using the pre-built packages, as shown here; the instructions on this page are not needed for that.

However, if you wish to participate in the development of MFM or ULAM, you will need to download and build the software from its source codes, which are kept in two repositories at Github.

Cloning the repos from Github seems relatively straightforward, but there are some dependencies that need to be installed in order to get the source to build. Here are steps describing how to build MFM and ULAM from their sources.

WARNING: As of Summer 2017, both the MFM and ULAM repos are under heavy development. Your Mileage May Vary!

Note: This tutorial is performed on Ubuntu 14.04 . Your installation procedure may vary.

Update lists of packages

First, make sure that lists of packages are up-to-date

sudo apt-get update

Install needed packages

These packages are described in more detail in the immediately following subsections, but here they are all in one command for convenience:

sudo apt-get install git g++ libsdl1.2-dev libsdl-image1.2-dev libsdl-ttf2.0-dev libcrypt-openssl-bignum-perl libcrypt-openssl-rsa-perl libcapture-tiny-perl

Install git

You will need to install git. This can be done with a package manager, such as apt-get:

sudo apt-get install git

Install g++

You will need g++, a c++ compiler, in order to build the software. Simply use your package manager to download it:

sudo apt-get install g++

Install SDL

The MFM software uses SDL to render to a window, play audio, and render fonts.

The MFM software needs SDL version 1.2 . Do not install SDL 2.0!

libsdl1.2-dev is the package for the main SDL system.

libsdl-image1.2-dev is the package for translating image types other than bitmaps.

libsdl-ttf2.0-dev is the package for rendering TrueType fonts. Note that, despite the name, this is an SDL 1.2 package.

Install the packages:

sudo apt-get install libsdl1.2-dev
sudo apt-get install libsdl-image1.2-dev
sudo apt-get install libsdl-ttf2.0-dev

Install crypto support and misc packages

The top level of the ULAM compiler is written in Perl. Among its tasks is to generate 'mfz' files signed by a 'handle' that you create; a few packages are required to support signing and signature checking.

sudo apt-get install libcrypt-openssl-bignum-perl
sudo apt-get install libcrypt-openssl-rsa-perl
sudo apt-get install libcapture-tiny-perl

Clone the Repositories

Next, you will need to clone the codebase to your computer. To do this, browse to the folder which you would like to contain the repos and clone:

git clone https://github.com/DaveAckley/MFM
git clone https://github.com/DaveAckley/ULAM

Note this will create MFM/ and ULAM/ directories as siblings in whatever directory you started in – and that's desirable because the two repositories will be able to find each other without any additional local configuration.

Build the software

Now that you have installed all of the dependencies that you need, you can build the MFM software:

$ cd MFM
MFM$ make

This should build the MFM software as long as the repo does not contain any errors. Depending on your machine, the build may take quite a while.

After that succeeds, you can build the ULAM compiler:

MFM$ cd ../ULAM
ULAM$ make

This may also take quite a while.

Once the ULAM compiler is built, you need to use it to build “ulam exports” – various libraries and demos that are part of the system:

ULAM$ make ulamexports

Note that the results of making ulamexports (in the ULAM/ repo) places its output in the MFM/ repo! Trying to run the MFM simulator without getting through 'ulamexports' successfully is unlikely to work!

Note also that make ulamexports might take a very long time.

Run the software

To run the software, the executable is located in the MFM/bin folder. Type:

MFM$ ./bin/mfms

to run the simulator.