home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / packet / tncv13 / faxdump.c < prev    next >
Text File  |  1990-06-13  |  2KB  |  110 lines

  1. #include <conio.h>
  2. #include <fcntl.h>
  3. #include <io.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. #include <bios.h>
  8.  
  9. void prnc(int c);
  10.  
  11. void main(int argc, char *argv[])
  12.  
  13. {
  14. int fax;
  15. char buff[700];
  16. int t, i;
  17. int z, c, d, l;
  18. long lines;
  19. int li;
  20. int inv = 0;
  21. int rev = 0;
  22.  
  23. char *mess = "FAXDUMP V 1.01 - (C) Jon Welch 12/06/90\n\n"
  24.              "Syntax : FAXDUMP <filename> (-I) (-R)\n";
  25.  
  26.     if (argc < 2) {
  27.         _write(fileno(stdout), mess, strlen(mess));
  28.         exit(1);
  29.     }
  30.  
  31.     for (i = 2; i < argc; ++i) {
  32.         if (argv[i][0] == '-') {
  33.             switch (argv[i][1]) {
  34.                 case 'i' :
  35.                 case 'I' : inv = 255;
  36.                            break;
  37.                 case 'r' :
  38.                 case 'R' : rev = 1;
  39.                            break;
  40.             }
  41.         }
  42.     }
  43.  
  44.     prnc(27);
  45.     prnc('3');
  46.     prnc(23);
  47.  
  48.     fax = _open(argv[1], O_RDONLY | O_BINARY);
  49.     lines = filelength(fax) / 80L;
  50.     li = (int) lines;
  51.  
  52. /*    printf("%d lines in %s\n", li, argv[1]);    */
  53.  
  54.     li = li / 8;
  55.     for (z = 0; z < li; ++z) {
  56.  
  57.         memset(buff, inv, 640);
  58.         _read(fax, buff, 640);
  59.  
  60. #ifdef IAN
  61.         prnc(27);
  62.         prnc('L');
  63.         prnc(128);
  64.         prnc(2);
  65. #else
  66.         prnc(27);
  67.         prnc(42);
  68.         prnc(4);
  69.         prnc(128);
  70.         prnc(2);
  71. #endif
  72.  
  73.  
  74.         for (c = 0; c < 640; c = c + 8) {
  75.             for (d = 0; d < 8; ++d) {
  76.                 t = 0;
  77.                 for (l = 0; l < 8; ++l) {
  78.                     if (rev == 0) {
  79.                         i = l * 80 + c / 8;
  80.                         t = t * 2 + (buff[i] & 128) / 128;
  81.                         buff[i] = (buff[i] * 2) & 255;
  82.                     } else {
  83.                         i = l * 80 + 79 - c / 8;
  84.                         t = t * 2 + (buff[i] & 1);
  85.                         buff[i] = (buff[i] / 2) & 255;
  86.                     }
  87.                 }
  88.                 prnc(t ^ inv);
  89.             }
  90.         }
  91.         prnc(10);
  92.         prnc(13);
  93.         if (bioskey(1) != 0) {
  94.             bioskey(0);
  95.             break;
  96.         }
  97.     }
  98.     close(fax);
  99.  
  100.     prnc(27);
  101.     prnc('3');
  102.     prnc(36);
  103. }
  104.  
  105. void prnc(int c)
  106.  
  107. {
  108.     biosprint(0, c, 0);
  109. }
  110.