home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / x / volume3 / xdvi / part03 / mktable.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-03-07  |  819 b   |  61 lines

  1. #ifndef lint
  2. static char *mktable_c = 
  3.   "$Header: mktable.c,v 10.5 86/02/01 15:44:59 tony Rel $";
  4. #endif     lint
  5.  
  6. #include <stdio.h>
  7.  
  8. unsigned char reverse_byte[0x100] = { 0 };
  9.  
  10. main()
  11. {
  12.     seed_table();
  13.     fill_in_table();
  14.     print_table();
  15. }
  16.  
  17. seed_table()
  18. {
  19.     int i = 0;
  20.     int j = 0x100/2;
  21.     int b = 0;
  22.  
  23.     for (;;) {
  24.         reverse_byte[i] = b;
  25.         if (j == 0)
  26.             break;
  27.         i = 2*i + 1;
  28.         b = b + j;
  29.         j = j/2;
  30.     }
  31. }
  32.  
  33. fill_in_table()
  34. {
  35.     int b;
  36.  
  37.     for (b = 1; b < 0x100-2; b += 1)
  38.         reverse_byte[b+1] =
  39.             reverse_byte[b] ^ reverse_byte[b^(b+1)];
  40. }
  41.  
  42. print_table()
  43. {
  44.     int b;
  45.  
  46.     printf("unsigned char reverse_byte[0x100] = {\n\t");
  47.     b = 0;
  48.     for (;;) {
  49.         printf("0x%02x", reverse_byte[b] & 0xff);
  50.         b += 1;
  51.         if (b == 0x100) {
  52.             printf("\n};\n");
  53.             return;
  54.         } else if (b % 8 == 0) {
  55.             printf(",\n\t");
  56.         } else {
  57.             printf(", ");
  58.         }
  59.     }
  60. }
  61.