The specification for termios.h
includes a facility for controlling the number of bits per character sent over the serial line, the CSIZE and CSn constants. You can request five, six, seven, or eight bits per character.
Nowadays, of course, five- and six-bit-per-character serial protocols are thoroughly obsolete. It seems logical that there must have, historically, been Unixes that did implement five- or six-bit terminal I/O, because the constants wouldn't exist if not, but I've browsed through the serial drivers of contemporary, Linux and FreeBSD and I have the impression that most of them either ignore or refuse a request to put a serial line into five- or six-bit mode. (Every driver has its own implementation of tcsetattr
, which makes it extremely tedious to try to find out if any driver still supports these modes.) Coming at it from the other end, the Teletype Model 33 was already a seven-bit terminal in 1963, and all the references I can find for five- and six-bit codes still in use in the 1970s make them sound like they were only used for special purposes and not for general serial communication.
Furthermore, the termios
interface doesn't give you any way to specify what character encoding to use in five- or six-bit mode, despite the many competing standards and the apparent necessity of translating from ASCII, so I'm guessing this isn't a case of "we have one computer and several hundred terminals of various models -- make it work with all of them", as the story goes re the development of the higher-level termcap/terminfo system.
So, the question is, what historical implementations of Unix did implement five- and/or six-bit terminal I/O, for use with what peripherals, and which character encodings?