Doug McIlroy:
Bit-addressing is very helpful for manipulating characters
in a word-organized memory. The central idea of my ancient
(patented!) string macros that underlay SNOBOL was that it's
more efficient to refer to 6-bit characters as living at
bits 0,6,12,... of a 36-bit word than as being characters
0,1,2,... of the word. I've heard that this convention was
supported in hardware on the PDP-10.
====
Indeed it was. The DEC-10 had `byte pointers' as well as
(36-bit) word addresses. A byte pointer comprised an address,
a starting bit within the addressed word, and a length.
There were instructions to load and store an addressed byte
to or from a register, and to do same while incrementing
the pointer to the next byte, wrapping the start of the next
word if the remainder of the current word was too small.
(Bytes couldn't span word boundaries.)
Byte pointers were used routinely to process text. ASCII
text was conventionally stored as five 7-bit bytes packed
into each 36-bit word. The leftover bit was used by some
programs as a flag to mean these five characters (usually
the first of a line) were special, e.g. represented a
five-decimal-digit line number.
Byte pointers were used to access Sixbit characters as
well (each character six bits, so six to the word,
character set comprising the 64-character subset of
ASCII starting with 0 == space).
Norman Wilson
Toronto ON
(spent about four years playing with TOPS-10 before
growing up to play with UNIX)