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