mixal is an implementation of the hypothetical MIX computer and its assembly language called MIXAL. The computer was designed by Donald Knuth for use in his monumental and yet to be finished book series The Art of Computer Programming. All programs and all programming exercises in the book are written in the MIXAL language.
This implementation is a load-and-go assembler, meaning that you provide it with a MIXAL program source, which it translates into MIX machine code, which it promptly executes by acting as a MIX emulator.
You give mixal zero or more MIXAL program source files in the command line, which the program interprets. If you give it no arguments, it expects to find a program in the standard input stream. After the program has executed, the final state of the machine registers is printed to the standard output stream.
The card punch and line printer devices are connected to the standard input and output stream, respectively. Console input and output are connected to standard input and output, and the disk devices are connected to files named diskN in the current directory, where N is the device number. Those files are created on demand.
There is one significant difference between the MIXAL input language and MIX as originally described by Knuth: Knuth puts fields at fixed offsets on a line, while this implementation expects them to be separated by whitespace. (Purists may wish to fix this obvious bug.) Since the ALF directive, which defines constant strings, becomes ambiguous when delimited by whitespace, there's a new syntax to achieve the same effect. Instead of
CON " rime"
This MIXAL implementation was designed and written by Darius Bacon, and then ported to Unixish systems and debugged by Eric S. Raymond. This version includes corrections to multiplication and division by Larry Gately. This manual page was written for Debian by Antti-Juhani Kaijanaho, with changes by Darius Bacon and Eric S. Raymond.
The MIXAL language was designed by Donald Knuth. We gratefully acknowledge the general permission granted by Dr. Knuth and Addison-Wesley to redistribute MIX documentation and examples from The Art of Computer Programming in connection with open-source implementations of the language and under the license terms of those implementations.
/usr/share/doc/mixal/NOTES contain some
information about this MIXAL implementation.
A description of the MIX system and the MIXAL language can be found in Donald E. Knuth's book The Art of Computer Programming, Volume 1: Fundamental Algorithms; 3rd Edition (Addison-Wesley 1997). (Or see the home page at http://www-cs-faculty.stanford.edu/~knuth/taocp.html.)