Files
Digital-Research-Source-Code/CPM OPERATING SYSTEMS/CPM 68K/cpm68k_pgms/utils/tohex.c
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

1 line
1.1 KiB
C

/* -*-c,save-*- */
#include <stdio.h>
#define FAST register
#define LOCAL static
#define GLOBAL extern
#define BLOCK_SIZE 32
main(argc,argv)
int argc;
char *argv[];
{FAST FILE *infile;
FILE *fopenb();
char block_buff[BLOCK_SIZE];
FAST int rec_num,bytes;
if (argc != 2) {
fprintf(stderr,"Usage: tohex infile [>outfile]\n");
abort(1);
}
infile = fopenb(argv[1],"r");
if (infile == NULL) {
perror("tohex: fopenb error");
abort(2);
}
rec_num = 0;
while ((bytes = fread(&block_buff[0],1,BLOCK_SIZE,infile)) > 0) {
put_hex(&block_buff[0],bytes,rec_num++);
}
put_hex(block_buff,0,rec_num);
fclose(infile);
}
put_hex(buff,buffsiz,recnum)
FAST char *buff;
FAST int buffsiz,recnum;
{
FAST int checksum,n;
printf(";%02x%04x",buffsiz,recnum);
checksum = buffsiz + (recnum & 0x00ff) + ((recnum >> 8) & 0x00ff);
while ((buffsiz--)>0) {
n = *buff++;
n &= 0x00ff;
checksum += n;
printf("%02x",n);
}
printf("%04x\n",checksum);
}
buffsiz--)>0) {
n = *buff++;
n &= 0x00ff;
checksum += n;
printf("%02x",n);
}
printf("%