Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
This is an emulator for the hardware that ran the Multics operating system.
Multics was a very influential early operating system. The OS is probably of more historical interest than the hardware it ran on. However, since Multics ran only on the hardware that was designed for it, most efforts at providing a running version of Multics have focused on emulating that hardware.
This is free software distributed under the ICU License. This project makes use of software, documentation, and virtual tapes provided under a variety of "free" licenses. Once the emulator is usable, this project will probably be offered as a contribution to the SIMH Computer History Simulation Project.
This is pre-alpha. The emulator does not yet run Multics. It does, however, execute the first two million instructions of a standard Multics boot tape.
There is support for an emulated tape drive and an operator's console as well as other emulated hardware. All access to the tape drive and operator's console is via an emulated IOM I/O Multiplexer. There is no significant support for disk drives yet. The emulator can read an on-disk image of a historical boot tape and partially process it. At this time the emulator seems to correctly process just over two million instructions before failing. The emulator fails after hitting an (intentional) segmentation violation and invoking fault handling code that wants to inspect APU history registers for which the emulator currently has no support.
While the emulator still has a long way to go, I believe some of the significant early hurdles have been cleared and that there are few or no remaining issues that seem unsolvable. However, significant effort remains including handling history registers, instruction restart, and devices such as disks, network, and terminals.
All the usual features of an emulator are included - single stepping, break points, display and editing of registers and memory, etc. Break points work in both absolute (non segmented) addressing mode and in appending (segmented) addressing mode. Several Multics-specific display formats are available for memory dumps.
The most unusual feature is support for debugging at the level of the Multics source code. The emulator can track routine names and PL/1 source lines. In addition, the Multics execution stack and even some PL/1 automatic (stack local) variables can be displayed.
Please see the "screen shots" of a sample run.