X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;f=src%2Fcommon%2Fhexfile.c;h=a84c11759849ed9405c8009ca5257d39d88aecc8;hb=1f9c51e5df300c1b546cb939e4391691bbe0128c;hp=80a0aac9c17a719c0b5686e4d226f35d6ff69742;hpb=fc904031c818c70b4e8e97ac64d79b628c72dbfa;p=emu8051.git diff --git a/src/common/hexfile.c b/src/common/hexfile.c index 80a0aac..a84c117 100644 --- a/src/common/hexfile.c +++ b/src/common/hexfile.c @@ -140,36 +140,35 @@ LoadHexFile(const char *filename) i += 2; Checksum += RecType; - if (RecType == 1) { - Checksum += Ascii2Hex(&line[i], 2); - Checksum &= 0x000000FF; - - if (Checksum) { - log_err("hexfile invalid format"); - goto close_file; - } else { - /* OK */ - goto close_file; + if (RecType == 0) { + for (j = 0; j < RecLength; j++) { + Data = Ascii2Hex(&line[i], 2); + memory_write8(PGM_MEM_ID, + (unsigned int)(LoadOffset + j), + (unsigned char)Data); + i += 2; + Checksum += Data; } } - for (j = 0; j < RecLength; j++) { - Data = Ascii2Hex(&line[i], 2); - memory_write8(PGM_MEM_ID, - (unsigned int)(LoadOffset + j), - (unsigned char)Data); - i += 2; - Checksum += Data; - } - - RecType = Ascii2Hex(&line[i], 2); - Checksum += RecType; + /* Read and add checksum value */ + Checksum += Ascii2Hex(&line[i], 2); Checksum &= 0x000000FF; + /* Make sure line checksum is valid */ if (Checksum) { log_err("hexfile checksum mismatch"); goto close_file; } + + if (RecType == 0) { + log_debug("hex record: data"); + } else if (RecType == 1) { + log_debug("hex record: End Of File"); + goto close_file; + } else { + log_warn("hex record: Unsupported ($%02X)", RecType); + } } close_file: