home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / CPM68K / UTILS.LBR / TOHEX.C < prev    next >
Text File  |  2000-06-30  |  1KB  |  55 lines

  1. /* -*-c,save-*- */
  2. #include <stdio.h>
  3. #define FAST register
  4. #define LOCAL static
  5. #define GLOBAL extern
  6. #define BLOCK_SIZE 32
  7.  
  8.  
  9. main(argc,argv)
  10. int argc;
  11. char *argv[];
  12. {FAST FILE *infile;
  13.  FILE *fopenb();
  14.  char block_buff[BLOCK_SIZE];
  15.  FAST int rec_num,bytes;
  16.  
  17.      if (argc != 2) {
  18.         fprintf(stderr,"Usage: tohex infile [>outfile]\n");
  19.         abort(1);
  20.         }
  21.     infile = fopenb(argv[1],"r");
  22.     if (infile == NULL) {
  23.         perror("tohex: fopenb error");
  24.         abort(2);
  25.         }
  26.     rec_num = 0;
  27.     while ((bytes = fread(&block_buff[0],1,BLOCK_SIZE,infile)) > 0) {
  28.         put_hex(&block_buff[0],bytes,rec_num++);
  29.         }
  30.     put_hex(block_buff,0,rec_num);
  31.     fclose(infile);
  32.     }
  33. put_hex(buff,buffsiz,recnum)
  34. FAST char *buff;
  35. FAST int buffsiz,recnum;
  36. {
  37.     FAST int checksum,n;
  38.     
  39.     printf(";%02x%04x",buffsiz,recnum);
  40.     checksum = buffsiz + (recnum & 0x00ff) + ((recnum >> 8) & 0x00ff);
  41.     while ((buffsiz--)>0) {
  42.     n = *buff++;
  43.     n &= 0x00ff;
  44.     checksum += n;
  45.     printf("%02x",n);
  46.     }
  47.     printf("%04x\n",checksum);
  48.     }
  49. buffsiz--)>0) {
  50.     n = *buff++;
  51.     n &= 0x00ff;
  52.     checksum += n;
  53.     printf("%02x",n);
  54.     }
  55.     printf("%