[EMAIL PROTECTED] writes:
 >   Way back when 16 kilobytes was a lot of memory, a method for encoding five
 > characters into a single 32-bit machine word was developed.  It was called
 > "Radix-50", or "RAD50".  The 50 is octal, or 40 decimal.  The character set
 > was 26 monocase letters, 10 digits, three special characters, and a null (a
 > total of 40).  This encoding was used in the linkers of various DEC PDP
 > operating systems, which is where Unix was born.
 > 
 >   (That could, of course, be incorrect, but I did find references to
 > Radix-50/RAD50 in some old DEC migration documentation.)

        It was also known as "squoze code" around the M.I.T. AI lab.
RAD50 may have originated at DEC, but I wouldn't bet either way.

        The description is close.  Radix 50 actually allows you to get
three characters into a 16 bit word (40*40*40 <= 65536), or 6 into a
32 bit word.  5 characters will actually fit into 27 bits (102400000
being no greater than 134217728).  That means that you can also have
up to 5 bits of "flags", say, for symbol type, in the same (double 16
bit) word of your symbol table as that which stores the name.  When it
wasn't uncommon to have as little as 4k words (8k bytes) on your
PDP-11/20, people really did care about bit twiddling.

        People writing in assembly language for such machines didn't
seem to chaff at such symbol length restrictions.  (Perhaps few of
them could type, and short names were easier.)  Linkers developed for
use with assemblers were pressed into service for linking C because
originally the C compiler produced assembly languagy, and the
assembler was invoked on the output.

                                                        Bill
_______________________________________________
gnhlug-discuss mailing list
[EMAIL PROTECTED]
http://mail.gnhlug.org/mailman/listinfo/gnhlug-discuss

Reply via email to