|
|
1.1 ! root 1: /* ! 2: * ascii<>radix50 ! 3: */ ! 4: ! 5: #define BADC 0100 ! 6: ! 7: static char r50c[128] = { ! 8: BADC, BADC, BADC, BADC, BADC, BADC, BADC, BADC, ! 9: BADC, BADC, BADC, BADC, BADC, BADC, BADC, BADC, ! 10: BADC, BADC, BADC, BADC, BADC, BADC, BADC, BADC, ! 11: BADC, BADC, BADC, BADC, BADC, BADC, BADC, BADC, ! 12: 000, BADC, BADC, BADC, 033, BADC, BADC, BADC, ! 13: BADC, BADC, BADC, BADC, BADC, BADC, 034, BADC, ! 14: 036, 037, 040, 041, 042, 043, 044, 045, ! 15: 046, 047, BADC, BADC, BADC, BADC, BADC, BADC, ! 16: BADC, 001, 002, 003, 004, 005, 006, 007, ! 17: 010, 011, 012, 013, 014, 015, 016, 017, ! 18: 020, 021, 022, 023, 024, 025, 026, 027, ! 19: 030, 031, 032, BADC, BADC, BADC, BADC, BADC, ! 20: BADC, 001, 002, 003, 004, 005, 006, 007, ! 21: 010, 011, 012, 013, 014, 015, 016, 017, ! 22: 020, 021, 022, 023, 024, 025, 026, 027, ! 23: 030, 031, 032, BADC, BADC, BADC, BADC, BADC ! 24: }; ! 25: ! 26: static char r50a[] = " abcdefghijklmnopqrstuvwxyz$.?0123456789"; ! 27: ! 28: /* ! 29: * convert up to three characters ! 30: * from ascii to r50 ! 31: * advances s; returns the r50 ! 32: * -1 means an error ! 33: */ ! 34: int ! 35: ator50(s) ! 36: register char **s; ! 37: { ! 38: register char c; ! 39: register int i; ! 40: register unsigned short r; ! 41: ! 42: r = 0; ! 43: for (i = 0; i < 3 && (c = **s) != 0 ; i++) { ! 44: if (c & 0200) ! 45: return (-1); ! 46: if ((c = r50c[c]) == BADC) ! 47: return (-1); ! 48: r *= 050; ! 49: r += c; ! 50: (*s)++; ! 51: } ! 52: for (; i < 3; i++) ! 53: r *= 050; /* justify */ ! 54: return (r); ! 55: } ! 56: ! 57: /* ! 58: * convert r50 to ascii, ! 59: * suppressing leading blanks ! 60: * s is where to put the string; ! 61: * the new s is returned. ! 62: * s had best have at least three characters remaining ! 63: */ ! 64: ! 65: char * ! 66: r50toa(s, x) ! 67: register unsigned short x; ! 68: register char *s; ! 69: { ! 70: register unsigned char c; ! 71: ! 72: if (x) { ! 73: c = x % 050; ! 74: x /= 050; ! 75: if (x) ! 76: s = r50toa(s, x); ! 77: *s++ = r50a[c]; ! 78: } ! 79: return (s); ! 80: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.