My conclusion is that LETTER is a categorization subroutine that categorizes characters into one of 14 types. Type 2 is minus sign, 4 is alphabetic character, 5 is period, 6 is right paren, 9 and 13 are blanks, 10 is left paren. Types 1, 3, 7, 8, and 11 are single characters (presumably different special characters). Type 12 is a digit. Type 14 gets handled as a single character or alphabetic character depending on circumstances.<p>The LETTER routine operates on a word of 6 characters at a time, producing 6 categorizations. The results of LETTER are stored in the variable KNOW, which is then used for a switch statement Z(IDENT), which transfers to W4, W5, W6, etc, which perform the appropriate action for the character type: creating a number, creating a sublist, creating a word token, or so forth.<p>Some other random things I determined on the way to this: IS is the parenthesization level, IC counts the character within a card (1 to 6), and IW counts selects the card (1-14). KGETBL and KGETIN extract one character from the specified word. I think KGETBL extracts it as a character and KGETIN extracts it as an index. MADIN converts its argument from a MAD language variable to an assembly variable, while MADOUT converts an assembly variable to a MAD variable.