#### Footnotes

##### (1)

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.

##### (2)

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.

##### (3)

The actual memory address the instruction refers to, is obtained by adding to ADDRESS the value of the ‘`rI`’ register denoted by INDEX.

##### (4)

In general, ‘`[X]`’ will denote the contents of entity ‘`X`’; thus, by definition, ‘`V = [M](MOD)`’.

##### (5)

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.

##### (6)

We shall call them, collectively, MIXAL instructions.

##### (7)

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.

##### (8)

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).

##### (9)

The author wants to thank Philip E. King for pointing these two special cases of local symbol usage to him.

##### (10)

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.

##### (11)

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.

##### (12)

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)

##### (13)

The `mixguile` program allows you to execute arbitrary combinations of `mixvm` commands (using Scheme) non-interactively. See Scheme scripts.

##### (14)

Printing of timing statistics can be disabled using the command `timing` (see Configuration commands).

##### (15)

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.

##### (16)

mixal-mode has been developed and documented by Pieter E. J. Pareit

##### (17)

`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.

##### (18)

The default command prompt, ‘`MIX >` ’, can be changed using the `prompt` command (see Configuration commands)

##### (19)

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