/*
* unload [files ...]
*/

#include <stdio.h>
#include <ctype.h>
#define SIZE 16

main(argc,argv)
char *argv[];
{
       FILE *f;

       if(argc > 1)
               while(--argc) {
                       if( (f = fopen(argv[argc], "r")) == NULL) {
                               perror(argv[argc]);
                               exit(1);
                       }
                       printf("%s;\n",argv[argc]);
                       unload(f);
                       fclose(f);
               }
       else
               unload(stdin);
}

unsigned char check;

unload(f)
FILE *f;
{
       char buf[SIZE];
       register int n,i;
       int addr = 0x100;

       while((n = fread(buf, 1, SIZE, f)) > 0) {
               check = 0;
               putchar(':');
               putbyte(n);
               putbyte(addr>>8);
               putbyte(addr&0xff);
               putbyte(0);
               addr += n;
               for(i = 0; i<n; i++)
                       putbyte(buf[i]);
               putbyte( (-check) & 0xff);
               putchar('\n');
       }
       printf(":00010001FE\n");
}

static char hexcode[] = "0123456789ABCDEF";

putbyte(b)
register int b;
{
       putchar( hexcode[(b>>4) & 0xf] );
       putchar( hexcode[b & 0xf] );
       check += (unsigned char) (b & 0xff);
}