The PDP-10's native character sets are 7-bit ASCII
(originally the 1963
edition) packed five characters to a word, with a leftover bit, and
"SIXBIT" which is the 64-character printable subset (not including the
lower-case region), packed six character to a word (or sometimes three
characters to a half-word).
The C standard requires that the character data type fit in a byte
(ISO/IEC 9899:1999 sections 3.7.1 and 5.2.1), but byte is simply defined
as a unit of data storage large enoguh to hold any member of the basic
character set, so that is a tautology.
However, the standard also requires that the character type occupy at
least 8 bits, that the minimum range for unsigned char is 0 to 255, and
that the minimum range for signed char is -127 to +127 (section 5.2.4.2.1).
This rules out the use of 6-bit and 7-bit characters, so the native
PDP-10 text representation cannot be used as the C standard character
type at all.
I seem ot remember too that siseof(char) is by defintion 1, and tha all
other types have to have sizes that are an integer multiple of this.
Which emans even if you could have 7-bit characters in C on a PDP10, you
couldn't thaen have a type for 36 bits words (which I would assume is a
natural size for some intergers).
IMHO this part of the C standard is a mistake. There are plenty of
machines where there are natural data types that are not integer
multiples of the size of a character. I've worked on nybble-saddressing
machines with a 20 bit address. Characters are, not suprisingly, 2
nybbles long on that machine. But the C standard prevents you having a
type for the natural 20 bit numbers.
WIth hindsight, I think that sizeof should have returend the number of
bits used to store the object (including any wasted bits to get elements
of a struct to fit on natural boundaries, etc). Of course even using
'bits' is not totally general (it assumes a binary machine), but it's a
lot more general than requiring everyhing to be an intenger multiple of
characters in length.
-tony