### 6.3 MIX block devices ¶

The MIX computer comes equipped with a set of block devices for input-output operations (see Input-output operators). `mixvm` implements these block devices as disk files, with the exception of block device no. 19 (typewriter terminal) which is redirected to standard input/output. When you request an output operation on any other (output) device, a file named according to the following table will be created, and the specified MIX words will be written to the file in binary form (for binary devices) or in ASCII (for char devices). Files corresponding to input block devices should be created and filled beforehand to be used by the MIX virtual machine (for input-output devices this creation can be accomplished by a MIXAL program writing to the device the required data, or, if you prefer, with your favourite editor). The device files are stored, by default, in the directory `~/.mdk`; this location can be changed using the `mixvm` command `devdir` (see Configuration commands).

Device | No. | filename | type and block size
Tape | 0-7 | `tape[0-7].dev` | bin i/o - 100 words
Disks | 8-15 | `disk[0-7].dev` | bin i/o - 100 words
Card reader | 16 | `cardrd.dev` | char in - 16 words
Card writer | 17 | `cardwr.dev` | char out - 16 words
Line printer | 18 | `printer.dev` | char out - 24 words
Terminal | 19 | `stdin/stdout` | char i/o - 14 words
Paper tape | 20 | `paper.dev` | char in - 14 words

Devices of type char are stored as ASCII files, using one line per block. For instance, since the card reader has blocks of size 16, that is, 80 characters, it will be emulated by an ASCII file consisting of lines with length 80. If the reader finds a line with less than the required number of characters, it pads the memory with zeroes (MIX character ’space’) to complete the block size.

Note that the virtual machine automatically converts between the MIX and ASCII character encodings, so that you can manipulate char device files with any ASCII editor. In addition, the reader is not case-sensitive, i.e., it automatically converts lowercase letters to their uppercase counterparts (since the MIX character set does not include the former).

The typewriter (device no. 19) lets you use the standard input and output in your MIXAL programs. For instance, here is a simple ’echo’ program:

    * simple echo program
    TERM    EQU     19          the typewriter device
    BUF     EQU     500         input buffer
            ORIG    1000
    START   IN      BUF(TERM)   read a block (70 chars)
            OUT     BUF(TERM)   write the read chars
            HLT
            END     START

Input lines longer than 70 characters (14 words) are trimmed. On the other hand, if you type less than a block of characters, whitespace (MIX character zero) is used as padding.