mirror of https://github.com/ipxe/ipxe.git
				
				
				
			
		
			
				
	
	
		
			75 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
| /* 
 | |
| 
 | |
|   Quick and dirty program to make intel-hex from a binary.
 | |
| 
 | |
|   Written by R.E.Wolff@BitWizard.nl
 | |
|   This file is in the public domain
 | |
| 
 | |
|   Typing started:
 | |
| 
 | |
|   Mon Jun 16 00:24:15 MET DST 1997
 | |
| 
 | |
|   programming stopped:
 | |
| 
 | |
|   Mon Jun 16 00:31:27 MET DST 1997
 | |
| 
 | |
|   debugging finished (2 bugs found):
 | |
|   Mon Jun 16 00:32:52 MET DST 1997
 | |
| 
 | |
| --------------------------------------------------------- 
 | |
| 
 | |
|   Doc written in timeout. Everything else in this file was done while
 | |
|   the timer was running.
 | |
| 
 | |
|   I promised "Mark Kopecki" that writing the bin-to-intel-hex
 | |
|   converter would cost less than 15 minutes, and that it would be more
 | |
|   trouble to find a converter on the net than to write the converter
 | |
|   myself.  I ended up spending over half an hour searching for
 | |
|   spec/converter/docs because of unreachable hosts on the internet. I
 | |
|   got a file with docs, after that it was 8 minutes.....
 | |
| 
 | |
| --------------------------------------------------------- 
 | |
| 
 | |
| */
 | |
| 
 | |
| 
 | |
| #include <stdio.h>
 | |
| #include <unistd.h>
 | |
| 
 | |
| /* Intel Hex format:
 | |
|    
 | |
|    ll aaaa tt dd....dd cc
 | |
|  
 | |
|    ll = length
 | |
|    aaaa = address
 | |
|    tt = type
 | |
|    dd....dd = data
 | |
|    cc = checksum.
 | |
| */
 | |
| 
 | |
| 
 | |
| int main (int argc, char **argv)
 | |
| {
 | |
|   unsigned char buf[32];
 | |
|   int addr = 0;
 | |
|   int n,i;
 | |
| 
 | |
|   while ((n = read (0, buf+4, 16)) > 0) {
 | |
|     buf[0] = n;
 | |
|     buf[1] = addr >> 8;
 | |
|     buf[2] = addr & 0xff;
 | |
|     buf[3] = 0x00;
 | |
|     buf[4+n] = 0x00;
 | |
| 
 | |
|     for (i=0;i<4+n;i++)
 | |
|       buf[4+n] -= buf[i];
 | |
|     printf (":");
 | |
|     for (i=0;i<= 4+n;i++)
 | |
|       printf ("%02x", buf[i]);
 | |
|     printf ("\n");
 | |
|     addr += n;
 | |
|   }
 | |
|   printf (":0000000001ff\n");
 | |
|   exit (0);
 | |
| }
 |