Skip to content
MichaelMondy edited this page Apr 13, 2013 · 6 revisions

Downloading and building the emulator

Dependencies

  • Linux. Building not (yet) tested under Windows or other OSes.
  • SIMH, a multi-system emulator. See the Multics SIMH page for references.
  • IBM's decNumber library which provides decimal floating point support. Note that this same decNumber support is also included in GCC 4.2 and later, but is not enabled by default.
  • GMP, the GNU multiple Precision Arithmetic Library which we use for 72-bit math.

Project's directory structure

You don't have to follow this structure. (In particular, the author's initial development was with simh as the top level directory.) However, this is the layout currently used by the author, matches the repository, and is what the provided makefiles expect:

multics-emul (or whatever name you prefer for the top level folder)
  + decNumber/   Downloaded separately
  + simh/        Downloaded separately
  + Makefile     Top level makefile
  + bin/
  + data/        Tapes
  + etc/         Ini files
  + listings/    PL/1 compiler outputs (for source level display of the Multics OS boot load)
  + sample/      Sample ini files, sample makefile for decNumber, etc
  + src/         Holds the Multics emulator source

Download and Setup - Step by step instructions

# Download the emulator (creating new subdir multics-emul)
git clone https://github.com/MichaelMondy/multics-emul.git

# We need to get some dependencies into the project directory
cd multics-emul

# SIMH is provided as a git sub-module
git submodule init
git submodule update

# Download decNumber
# Not downloading entire GCC just to get decnumber: # git clone http://gcc.gnu.org/git/gcc.git
wget http://download.icu-project.org/files/decNumber/decNumber-icu-368.zip
unzip decNumber-icu-368.zip

# Setup decNumber
cp -i sample/Makefile.decNumber decNumber/Makefile

# Install GMP if not already present
sudo apt-get install libgmp-dev

A note on the folder structure

SIMH comes with many emulators. One common development practice is to put a new emulator within the SIMH tree. However, the SIMH makefile is designed more for production builds than for iterative development. For example, it always recompiles everything and includes compiler options that that may not be combined with debugging. This project currently uses SIMH as a library. We keep the SIMH makefile unchanged, but "wrap" it with a makefile we provide. The sample makefiles will automatically rename the original SIMH makefile and install a wrapper makefile. See the sample makefiles, especially the "testkit" targets for more detail.

Building

# Building
cd multics-emul
make

Next, see the page on Running

Clone this wiki locally