I'm reading through Knuth's "The Art of Computer Programming" volume 1 (3rd edition), with the goal of understanding the complete workings of his hypothetical MIX computer in order to implement MIX in software. Needless to say this is a long term project! (I'm not in college or anything, just an amateur CS enthusiast doing this for fun, I have no Professors to ask!)

In Section 1.3.1 (onwards) of "The Art of Computer Programming" Prof Knuth describes in detail his MIX computer and its IO devices such as Tape, Drum and Card Readers. The main Text does not describe the "bootstrapping" process for this machine, but Exercice 26 does.

There is one particularly onerous limitation of the Card Reader described in Exercise 26 -- that is certain characters are not allowed to be written to or read from Cards.

To me this is an important point because if this "illegal characters" limitation does apply to the MIX proper, then I cannot see any easy way to write a MIX program by hand without constantly stumbling over illegal characters. The CMPx operators are explicitly forbidden by Ex 26 for instance.

If I was to attempt to implement MIX myself in software I would find it very convenient to ignore this "illegal characters" limit and just indiscriminately accept all characters without error. Although in my mind this gives me some doubt as to whether my implementation would be "compliant" with Prof Knuth's MIX spec. Accepting "illegal" characters would also make creating a MIXAL assembler a lot easier.


  1. Am I to understand that concepts discussed in the Exercises are not formally part of the MIX specification?

  2. It seems arbitrary to add such a tricky obstacle, is this rather severe limitation only supposed to be true within the scope of Exercise 26 or should it be understood that it applies to the formal specification of the MIX computer throughout the entire TAOCP book set?

  • $\begingroup$ Note that Knuth intends to replace MIX with MMIX (as he does in Vol 4A) and has written books about it; in fact someone else has already done the work of rewriting all the MIX programs in Vols 1-3 in MMIX. There are also MMIX implementations available. At this point MIX is a dead end, except for curiosity about 1960s machine language style. $\endgroup$ Dec 3, 2019 at 22:29

1 Answer 1


I imagine the concepts developed in the Exercises are meant to be formally part of the MIX specification, but there will also be some degree of arbitrariness.

For example, the MIX character set of $56$ characters supports only upper case text, but also includes three Greek characters ($\Delta$, $\Sigma$, $\Pi$) and an arbitrary selection of punctuation characters (no '%', '?', '!' or '^'; '/' but no '\').

Similarly, the restriction on allowed characters in the card reader is probably just to make the point that not all input devices will support the full character set. Knuth may have regarded the typewriter terminal (which presumably does support the full character set) as the main input for program instructions, and may have seen the card reader as primarily for data input.

I think you can make your MIX implementation a completely faithful implementation or a looser interpretation of the original specification - it is your choice.

  • $\begingroup$ Since reading your answer earlier I have found a few university dissertation / thesis papers concerned with making a MIX simulator and there seems to be little consensus as to how to interpret some of the requirements. For sanity's sake I've decided to eschew the card reader boot-strapping process altogether and just simply load 4000 words verbatim from a "Disk" device instead, on the grounds that a disk would not impose such awkwardness on me :) My rationalisation / justification for this is that I reckon Prof Knuth would want me to use my initiative as a CS enthusiast! $\endgroup$
    – Wossname
    Nov 12, 2019 at 18:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.