The purpose of this wiki is to provide information to users wishing to run Multics
under the DPS8M simulator. While other resources exist on both the subject of Multics and the DPS8M simulator, this Wiki focuses specifically on how to install the simulator and Multics on your machine, how to configure it and administer it, and then how to use it. It differs from the DPS8M-related sites whose focus of attention is on the simulator itself, and from the Multics-related sites, which provide historical, informational, nostalgic, etc. background on Multics. Where appropriate, this site links to those other sites rather than duplicate information.
To get started and install Multics on your host system, follow the Getting Started link.
If you want to download the entire source code of a Multics release, you can do it by following these steps:
git clone command to create a copy of the repository on your computer. For example, use the command line: git clone https://gitlab.com/atsampson/multics-history-repo. This will create a subdirectory in your current working directory called multics-history-repo with the source code. You will get a copy of the latest sources (currently MR12.8) that have been uploaded to that repository. This will download about 170 MB of source files. Each original .archive file will be represented as a directory of files.git checkout TAG command. You can list the available tags with the git tag --list command.The sources, as pulled from the repository will exist in the following directories:
The "documentation" directory contains all the "info segments" that are distributed with the release.
The "library_dir_dir" is where the system software sources are found. This directory contains the following subdirectories:
MR12.8 was released on 08/08/2023. New features in this release can be found in the Software Release Bulletin (SRB):
You can find the tapes, SRB, the Software Installation Bulletin (SIB), and other release artifacts here: Release Artifacts.
You can find a QuickStart for MR12.8 here: MR12.8 QuickStart, but only use it if you don't already have a Multics system. If you do, then ignore the QuickStart and upgrade your system as described here.
MR12.8 is primarily a bugfix release -- 80 tickets were resolved
for this release. However, there are a few new features, listed below.
A brief description of known tickets addressed in this release is
found the file Tickets_fixed_in_MR12.8 available on the Multics Wiki MR12.8 page.
The analyze_multics (azm) command has been extended to
support the following (command) requests and active function
requests:
The index_set (ixs) command (and azm request) now supports
control arguments to:
In addition, set specification triplets can now be provided
in bases other than decimal.
Now you can fetch include files by name using library_fetch
(lf). Other library commands also support the include file
library.
In addition, the library commands support a new log
directory, used by mbuild and other programs to manipulate
files in that directory. The log directory is used for the
Installations.log and Installations.info segments for a
given library. The location of this directory for
multics_libraries_ is >ldd>log.
Source and object archives (and indeed all archives) on
Multics are limited to 255 pages. Sometimes, when mbuild is
update source and object archives, the archives may attempt
to grow beyond 255. mbuild now reports that a source or
object archive overflow would occur. The user can then
manually split the overflowing archive into a pair of
archives. Then, mbuild will handle a build script file
which DELETEs the original bound segment and its
source/object archives, and then ADDs a new bound segment
using the split source and object archives. See MCR10102
for details.
mbuild now also can generate installation exec_coms where
the update_seg command is configured to specify the
appropriate log directory based on the library descriptor in
use.
An updated info_seg_ implementation and replaced help_
resulted in creating a new bound_help_ executable segment.
Now the history_comment (hcom) command fully supports .info
segments. It can add the appropriate info segment ":hcom:"
block if none is present, updating that block if it exists
when history comments are added.
Mbuild has been improved to make its read request diagnose a
build script line that references an existing segment using
the wrong library name. A minor issue is fixed in the bind
command not setting the required access mode when initiating
object archives/segments being bound together. R_ACCESS
will be the minimum required access to such segments. A
minor problem is fixed in installing exec_com segments:
always use their primary name when locating them in the
library.
In addition to fixes to mbuild to handle unknown suffixes
more gracefully, mbuild now supports installing .gdt source
files.
New subroutines are provided to perform conversions of
numeric strings between different bases. These are
foundational changes required to support fixing various
other programs' handling of numeric arguments. A new
implementation of the binary, octal, decimal, hexadecimal,
and radix commands is provided as well. Lots of other
commands/active functions are updated as a result of this
change: plus, minus, times, divide, quotient, mod, min,
trunc, floor, round. The result of all these changes is to
provide uniform treatment of input and output radixes in
numeric arguments passed to commands and active functions.
The numeric_to_ascii_base_ subroutine has been rewritten to
support changes to index_set, including supporting adding an
output radix to the end of the returned string to allow
expressing non-decimal numbers.
Because issuing the "help hcs_" command resulted in
record_quota_overflow errors when the default process
directory quota was used, and because the default quota size
(1000 records) is very small, and limits the operation of
various commands, the default process directory quota was
raised to 2000. This only applies to new systems, as the
change is made in the defaults to the ed_installation_parms
command. Existing systems can similarly have their process
directory quota updated by issuing these commands:
cwd >sc1
ed_installation_parms
type p default_pdir_seg_quota
default_pdir_seg_quota: 1000
type c default_pdir_seg_quota 2000
type p default_pdir_seg_quota
default_pdir_seg_quota: 2000
type w
type q
Mbuild has been updated to support support the developing,
auditing, and installing phases. Initially mbuild creates
an .mb segment for the developing phase. During audit, the
phase can be changed to auditing and auditing
progress/comments can be recorded in the .mb segment. The
install tag (e.g. MR12.8-1023) can be specified, so that it
can be automatically added to the update_seg logs.
In addition, the structure of an .mb segment has been
enhanced, such that the names of the developer, auditor, and
installer are recorded, along with the MCR number. mbuild
now manages the library descriptor in effect to prevent
inadvertent errors regarding having the wrong library
descriptor set when invoking mbuild. Mbuild also knows
about the log library, so that it can tell update_seg in
which directory to place the Installations.log and
Installations.info segments. The exec_com invoking
update_seg is updated to include the approval id (MCR id).
Support for ssl segments and exec_coms was added to mbuild
in this release.
Lots of other fixes were made to mbuild in this release.
See MCR101026 and the help files for mbuild for more info.
The memory limits on GTSS programs were increased to allow
Jovial and Algol compilers to run under GCOS.
Also, an issue with case comparisons of card names in the
GCOS batch simulator was also fixed.
Analyze_multics (azm) is updated to version 2.4. There are
several new or enhanced requests: cme, slte,
page_control_check, and aste. copy_deadproc/copy_liveproc
now correctly capture the UID for segments in the process
directory.
The new cme request displays the contents of a core_map
entry (CME).
The new slte request displays the contents of an segment
loader table entry (SLTE).
The new page_control_check request checks consistency
between the SST and core_map. Any errors found are
displayed.
The useful privileged command, patch_ring_zero (prz), has
never had an info segment. One is provided in this release.
The time() function is documented to exist, but was
incorrectly prototyped in previous releases. This is fixed
in the current release.
Upon startup a message is emitted to the bootload console
and the syserr log that includes all the ID PROM fields,
that are present. This is only supported for DPS8/M
processors (not L68 processors).
Also, a warning is emitted to the bootload console and the
syserr log when it is detected that an old simulator release
is running.
The Volume Backup support has long allowed tapes to be
allocated from a volume pool, however up until this release,
this support was not extended to the Hierarchy Backup
daemons. If a volume pool is setup and configured for the
incremental, catchup, or complete backup daemons, tapes will
be allocated from the configured pool. A single pool can be
used, or separate pools per backup type can be employed.
See the info segments for the backup_dump, start_dump,
catchup_dump, and complete_dump commands for more info on
using volume pools with the hierarchy backup commands. See
also the updated documentation on these commands in the
Multics Administration, Maintenance, and Operations Commands
(GB64) manual errata -- gb64.errata.info.
Prior to this release, it wasn't possible to include history
comments to track changes in info segments. Now with an
updated version of the history_comment (hcom) command, you
can. See the instructions for adding history comments in
info segment by issuing the command help info_seg.hcom.
A new subsystem, mbuild, has been introduced that helps
developers prepare additions to the software libraries, or
changes to software in those libraries. This system helps
with compilation, source/object archive updating, binding,
checking history comments, performing source comparisons,
and installing changes to the system libraries.
The mbuild subsystem also helps system and library
administrators manage installations into the system
libraries.
The validate_info_seg command has been replaced with the
verify_info command. The help_ subroutine now uses a new
info_seg_ subroutine to parse info segments, and provides a
more powerful user interface for displaying that
information.
Following is a list of new features since MR12.6e. The full list of new features since MR12.5 can be found in the SRB.
A new input_history_ I/O module was added to bound_video_
that allows recall and execution of previous input lines, as
well as searching for prior input lines. The Multics video
system provides functions for editing input lines as they
are typed. It uses Emacs-like key bindings to edit input
lines. However, it provides no mechanism for saving
previous input lines, recalling those lines, and reexecuting
them. The new input history functionality does just that.
See input_history.info and input_history_.info for details.
A new call command invokes a subroutine with arguments given
in a command line. It uses the declared entrypoint calling
sequence to convert each command argument to a corresponding
subroutine parameter's data type; invokes the subroutine;
then displays any output values.
The library_pathname (lpn) command/active function was
updated to return all matching pathnames when invoked as an
active function. This command/AF was also updated to accept
the -container control argument.
The cv_ptr_ subroutine was updated to handle pointers to
hardcore segments.
The pointer_info (pin) command was added to provide a
command-line interface to the interpret_ptr_ subroutine.
Added the VT102_132C_50L and VT102_132C_78L terminal types.