added stdio.h to includes for DBG compilation
[gpxe.git] / contrib / bin2intelhex / bin2intelhex.c.simple
blob3cb279a747e416cb38d522d8c61e62751c5d6e7f
1 /* 
3   Quick and dirty program to make intel-hex from a binary.
5   Written by R.E.Wolff@BitWizard.nl
6   This file is in the public domain
8   Typing started:
10   Mon Jun 16 00:24:15 MET DST 1997
12   programming stopped:
14   Mon Jun 16 00:31:27 MET DST 1997
16   debugging finished (2 bugs found):
17   Mon Jun 16 00:32:52 MET DST 1997
19 --------------------------------------------------------- 
21   Doc written in timeout. Everything else in this file was done while
22   the timer was running.
24   I promised "Mark Kopecki" that writing the bin-to-intel-hex
25   converter would cost less than 15 minutes, and that it would be more
26   trouble to find a converter on the net than to write the converter
27   myself.  I ended up spending over half an hour searching for
28   spec/converter/docs because of unreachable hosts on the internet. I
29   got a file with docs, after that it was 8 minutes.....
31 --------------------------------------------------------- 
36 #include <stdio.h>
37 #include <unistd.h>
39 /* Intel Hex format:
40    
41    ll aaaa tt dd....dd cc
43    ll = length
44    aaaa = address
45    tt = type
46    dd....dd = data
47    cc = checksum.
51 int main (int argc, char **argv)
53   unsigned char buf[32];
54   int addr = 0;
55   int n,i;
57   while ((n = read (0, buf+4, 16)) > 0) {
58     buf[0] = n;
59     buf[1] = addr >> 8;
60     buf[2] = addr & 0xff;
61     buf[3] = 0x00;
62     buf[4+n] = 0x00;
64     for (i=0;i<4+n;i++)
65       buf[4+n] -= buf[i];
66     printf (":");
67     for (i=0;i<= 4+n;i++)
68       printf ("%02x", buf[i]);
69     printf ("\n");
70     addr += n;
71   }
72   printf (":0000000001ff\n");
73   exit (0);