|
|
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: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.