Next: , Previous: Jump operators, Up: MIX instruction set


2.1.2.8 Input-output operators

As explained in previous sections (see MIX architecture), the MIX computer can interact with a series of block devices. To that end, you have at your disposal the following instructions:

IN
Transfer a block of words from the specified unit to memory, starting at address M. OPCODE = 36, MOD = I/O unit.
OUT
Transfer a block of words from memory (starting at address M) to the specified unit. OPCODE = 37, MOD = I/O unit.
IOC
Perfom a control operation (given by M) on the specified unit. OPCODE = 35, MOD = I/O unit.
JRED
Jump to M if the specified unit is ready. OPCODE = 38, MOD = I/O unit.
JBUS
Jump to M if the specified unit is busy. OPCODE = 34, MOD = I/O unit.
In all the above instructions, the ‘MOD’ subfile must be in the range 0-20, since it denotes the operation's target device. The ‘IOC’ instruction only makes sense for tape devices (‘MOD’ = 0-7 or 20): it shifts the read/write pointer by the number of words given by ‘M’ (if it equals zero, the tape is rewound)1.

Footnotes

[1] In Knuth's original definition, there are other control operations available, but they do not make sense when implementing the block 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.