Annotation of 40BSD/cmd/apl/asciiterm.c, revision 1.1

1.1     ! root        1: #include "apl.h"
        !             2: 
        !             3: asciich() {
        !             4:        extern unsigned char    *iline;
        !             5:        extern struct asoperbox charconv[OPERBOXSIZE];
        !             6:        register D,E,F,I;
        !             7:        
        !             8:        F = *iline++;
        !             9:        if ( ( F == '.') && ( digit(*iline) == 0 ) ) {
        !            10:                D = (int)*iline++;
        !            11:                E = (int)*iline++;
        !            12:                for (I = 0; I <= OPERBOXSIZE;I++) {
        !            13:                        if (( D== (charconv[I].letters[0]) ) &&
        !            14:                            ( E== (charconv[I].letters[1]) ) ) {
        !            15:                                F = charconv[I].returnchar;
        !            16:                                goto out;
        !            17:                        }
        !            18:                }
        !            19:                --iline;--iline;
        !            20:        }
        !            21: out:   return(F);
        !            22: };
        !            23: 
        !            24: /* eventually this should be replaces with arrays that hae a better    */
        !            25: /*     method of selecting and returning the lexical value, but        */
        !            26: /*     for now, this is a quick implementation                         */
        !            27: /*                                                                     */
        !            28: /*     use char as subscript from ascii - get apl character hopefully  */
        !            29: /*     for character conversion from ascii to apl char set ---         */
        !            30: /* see files write2.c and write3.c for more recent version             */
        !            31: 
        !            32: struct asoperbox charconv[OPERBOXSIZE] = {
        !            33: /* ascii mnemonic ( from HP  APL ascii char mnemonics and              */
        !            34: /*     equivalent apl character value.                                 */
        !            35: /*     all are two lowercase letters preceeded by a dot.               */
        !            36: /*     letters for identifiers are lowercase or uppercase              */
        !            37: /*     lowercase corresponding to apl uppercase and                    */
        !            38: /*     uppercase corresponding to apl underscored letters.             */
        !            39: 
        !            40: "sg",   /* unary SGN           */ '@',
        !            41: "le",  /* less than or equal   */ '$',
        !            42: "ge",  /* greater than or equal*/ '^',
        !            43: "ne",  /* not equal            */ '*',
        !            44: "om",  /* omega ( not used )   */ 'W',
        !            45: "ep",  /* epsilon              */ 'E',
        !            46: "rh",  /* shape (rho)          */ 'R',
        !            47: "nt",  /* not ( also '~' )     */ 'T',
        !            48: "tk",  /* take ( also '^' )    */ 'Y',
        !            49: "dr",  /* drop                 */ 'U',
        !            50: "it",  /* iota                 */ 'I',
        !            51: "ci",  /* circular function    */ 'O',
        !            52: "al",  /* alpha ( not used )   */ 'A',
        !            53: "cl",  /* maximum ( ceiling )  */ 'S',
        !            54: "fl",  /* minimum ( floor )    */ 'D',
        !            55: "dl",  /* del ( not used )     */ 'G',
        !            56: "de",  /* upside down del      */ 'H',
        !            57: "jt",  /* small circle ( null )*/ 'J',
        !            58: "qd",  /* quad                 */ 'L',
        !            59: "ss",  /* right U ( not used ) */ 'Z',
        !            60: "sc",  /* left U ( not used )  */ 'X',
        !            61: "si",  /* Down U               */ 'C',
        !            62: "su",  /* U ( not used )       */ 'V',
        !            63: "[^",  /* upside-down del      */ 'H',
        !            64: "bv",  /* decode ( base )      */ 'B',
        !            65: "rp",  /* encode ( rep )       */ 'N',
        !            66: "br",  /* residue ( mod )      */ 'M',
        !            67: "sp",  /* assignment           */ '[',
        !            68: "go",  /* goto                 */ ']',
        !            69: "or",  /* or                   */ '(',
        !            70: "nn",  /* nand                 */ 0205,
        !            71: "nr",  /* nor                  */ 0206,
        !            72: "lg",  /* log                  */ 0207, 
        !            73: "rv",  /* reversal             */ 0217,
        !            74: "tr",  /* transpose            */ 0212,
        !            75: "rb",  /* reverse bar          */ 0214,
        !            76: "cb",  /* comma bar ( not used)*/ 0,
        !            77: "sb",  /* slash bar            */ 0200,
        !            78: "bb",  /* blackslash bar       */ 0201,
        !            79: "gu",  /* grade up             */ 0215,
        !            80: "gd",  /* grade down           */ 0216,
        !            81: "qq",  /* quote quad           */ 0202,
        !            82: "dm",  /* domino               */ 0214,
        !            83: "lm",  /* lamp                 */ 0204,
        !            84: "ib",  /* i - beam             */ 0213,
        !            85: "ex",  /* execute ( not used ) */ 0,
        !            86: "fr",  /* format( not used )   */ 0,
        !            87: "di",  /* diamond ( not used ) */ 0,
        !            88: "ot",  /* out ( not used )     */ 0,
        !            89: "ld",  /* locked del (not used)*/ 0,
        !            90: "[a",  /* alias for 'A'        */ 0220,
        !            91: "[b",  /* alias for 'B'        */ 0221,
        !            92: "[c",  /* alias for 'C'        */ 0222,
        !            93: "[d",  /* alias for 'D'        */ 0223,
        !            94: "[e",  /* alias for 'E'        */ 0224,
        !            95: "[f",  /* alias for 'F'        */ 0225,
        !            96: "[g",  /* alias for 'G'        */ 0226,
        !            97: "[h",  /* alias for 'H'        */ 0227,
        !            98: "[i",  /* alias for 'I'        */ 0230,
        !            99: "[j",  /* alias for 'J'        */ 0231,
        !           100: "[k",  /* alias for 'K'        */ 0232,
        !           101: "[l",  /* alias for 'L'        */ 0233,
        !           102: "[m",  /* alias for 'M'        */ 0234,
        !           103: "[n",  /* alias for 'N'        */ 0235,
        !           104: "[o",  /* alias for 'O'        */ 0236,
        !           105: "[p",  /* alias for 'P'        */ 0237,
        !           106: "[q",  /* alias for 'Q'        */ 0240,
        !           107: "[r",  /* alias for 'R'        */ 0241,
        !           108: "[s",  /* alias for 'S'        */ 0242,
        !           109: "[t",  /* alias for 'T'        */ 0243,
        !           110: "[u",  /* alias for 'U'        */ 0244,
        !           111: "[v",  /* alias for 'V'        */ 0245,
        !           112: "[w",  /* alias for 'W'        */ 0246,
        !           113: "[x",  /* alias for 'X'        */ 0247,
        !           114: "[y",  /* alias for 'Y'        */ 0250,
        !           115: "[z",  /* alias for 'Z'        */ 0251
        !           116: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.