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
mixasm on this platform, using
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
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 block 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
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.
ORIG directive is not used, the program will
be loaded by the virtual machine at address 0.
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
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
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)
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
timing (see Configuration commands).
You may have
noticed that break hooks can be implemented in terms of command hooks
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