#include #include #include #define CRLF "\r\n" #define BASE 0xfe0000 #define RECLEN 32 void putS0(FILE* out, const char* header) { int i, csum, c; int len = strlen(header); fprintf(out, "S0%02X0000", 2 + len + 1); csum = 0; for (i=0; i>16) & 0xff) + ((BASE>>8) & 0xff) + (BASE & 0xff); fprintf(out, "S804%06X%02X" CRLF, BASE & 0xffffff, (~csum) &0xff); } void putS2(FILE* out, int addr, unsigned char* data, int n) { int i, csum, c; fprintf(out, "S2%02X%06X", 3 + n + 1, addr & 0xffffff); csum = 3 + n + 1 + ((addr>>16) & 0xff) + ((addr>>8) & 0xff) + (addr & 0xff); for (i=0; i