mix – MIX assembler and emulator


games/mix [ -g ] [ file ... ]


Mix is an assembler and emulator for Donald Knuth’s fictitious MIX architecture. The command assembles the named MIXAL files into memory and then presents a command prompt to control an emulated MIX machine. The -g option causes the emulator immediately to run a complete assembled MIX program and exits when the emulator halts.

The following commands are accepted:


Print the value at addr. An optional field specification is given by (a:b).  

a [< file]

Start the MIXAL assembler. The assembler will begin assembling at the address after the last assembled instruction. If no file is given, the assembler will accept instructions from the console.  

b addr

Set or unset a breakpoint at addr.  


Resets the MIX machine to a fresh state by clearing all memory and registers.  

d addr

Disassemble the instruction at addr.  

o addr

Print the alphanumeric MIX word at addr.  

o(addr, d)

Print d alphanumeric mix words starting at addr.  


Print the value in register r* where * is one of a, x, ax, j, or 1-6. An optional field specification is given by (a:b).  


Step through one instruction of the emulated MIX machine.  


Start the emulated MIX machine at the instruction specified by the END pseudo-instruction.  


Quit the emulator/assembler.  

The addr field of the above instructions must be an integer between 0 and 3999 inclusive. A number-sign (#) or an asterisk (*) at the beginning of a line starts a comment which extends to the end of the line.




Donald Knuth, “The Art of Computer Programming”, Volume 1. Section 1.3



As opposed to Knuth’s specification, the ALF pseudo-instruction takes as argument five MIX characters surrounded by quotation marks. Unresolved forward references are assembled to 0 instead of to a location determined by the END psuedo-instruction.

The magnetic tapes and drum units are not implemented.

Comments are handled as described above and not exactly as Knuth specifies.