See MDK’s Git page for more information on using the unstable source tree. Note, however, that the rest of this manual is about the stable release.
Caveats: Christoph has only tested mixvm
and
mixasm
on this platform, using gcc
2.95.3-2, GLIB
1.2.10 and GNU readline
4.1-2. He has reported missing history
functionalities on a first try. If you find problems with
history/readline functionality, please try a newer/manually installed
readline version.
The actual memory address the instruction refers to, is obtained by adding to ADDRESS the value of the ‘rI’ register denoted by INDEX.
In general, ‘[X]’ will denote the contents of entity ‘X’; thus, by definition, ‘V = [M](MOD)’.
In Knuth’s original definition, there are other control operations available, but they do not make sense when implementing the devices as disk files (as we do in MDK simulator). For the same reason, MDK devices are always ready, since all input-output operations are performed using synchronous system calls.
We shall call them, collectively, MIXAL instructions.
In fact, Knuth’s definition of MIXAL restricts the
column number at which each of these instruction parts must start. The
MIXAL assembler included in MDK, mixasm
, does not impose
such restriction.
In the original
MIXAL definition, the ALF
argument is not quoted. You can write
the operand (as the ADDRESS
field) without quotes, but, in this
case, you must follow the alignment rules of the original MIXAL
definition (namely, the ADDRESS
must start at column 17).
The author wants to thank Philip E. King for pointing these two special cases of local symbol usage to him.
If an ORIG
directive is not used, the program will
be loaded by the virtual machine at address 0. ORIG
allows
allocating the executable code where you see fit.
In Knuth’s definition,
the operand always starts at a fixed column number, and the use of
quotation is therefore unnecessary. As mixasm
releases this
requirement, marking the beginning and end of the ALF
operand
disambiguates the parser’s recognition of this operand when it includes
blanks. Note that double-quotes (") are not part of the MIX character
set, and, therefore, no escape characters are needed within
ALF
’s operands.
The device files are stored, by
default, in a directory called .mdk, which is created in your
home directory the first time mixvm
is run. You can change this
default directory using the command devdir
when running
mixvm
in interactive mode (see Configuration commands)
The mixguile
program allows you to execute
arbitrary combinations of mixvm
commands (using Scheme)
non-interactively. See Scheme scripts.
Printing of timing statistics can be disabled using
the command timing
(see Configuration commands).
You may have
noticed that break hooks can be implemented in terms of command hooks
associated to mix-run
and mix-next
. As a matter of fact,
they are implemented this way: take a look at the file
install_dir/share/mdk/mix-vm-stat.scm if you are curious.
mixal-mode has been developed and documented by Pieter E. J. Pareit
mixvm.el has been kindly contributed by Philip E. King. mixvm.el is based on a study of gdb, perldb, and pdb as found in gud.el, and rubydb3x.el distributed with the source code to the Ruby language.
The default command prompt, ‘MIX > ’, can be
changed using the prompt
command (see Configuration commands)
The readline functionality will be available if you have compiled MDK with readline support, i.e., if GNU readline is installed in your system. This is often the case in GNU/Linux and BSD systems