Checksum & Eprom Programmers
![]()
![]()
https://sourceforge.net/projects/srecord/files/srecord/1.63/
The SRecord package is a collection of powerful tools for manipulating
EPROM load files
chksumwin32.zip courtesy Gonzalo Fernandez Val from Spain - works on WIn32 and Win64
the dll´s, hdpmi32.exe and dpmild32.exe in chksum.zip are from https://www.japheth.de/HX.html
these files are a DOS extender that allows console win32 app to run under DOS,
hence chksum.exe can run under DOS up to
Windows 10 (and Windows 11?) If we want to run under Windows (Windows 98 up
to Windows 11) a binary can be build using
gcc -O2 chksum.c -o chksum.exe
strip chksum.exe

/* chksum.c (c) 2012 - Version 1.0 chksum - Programa que calcula el valor Checksum, Checksum 32, CRC-CCITT, Para compilarlo por l¡nea de comandos:
Genera un fichero COM, optimizado para m xima rapidez, y sin informaci¢n
Genera un fichero EXE, optimizado para m xima rapidez, y sin informaci¢n
Genera un fichero EXE, optimizado para m xima rapidez, sin informaci¢n Para compilarlo desde el entorno integrado: Abrimos un proyecto, seleccionando las opciones de optimizaci¢n
y de exe2bin chksum.exe chksum.com */ #include <stdio.h> #define CRCCCITT 0x1021 /* polinomio CCITT */ #define crcupdate(d, a, t) *(a) = (*(a) << 8) ^ (t)[(*(a) >>
8) ^ (d)] unsigned short crchware(unsigned short data, unsigned short genpoly, data <<= 8; /* datos al byte alto */
for (i = 8; i > 0; i--)
if ((crctp = (unsigned short *) malloc(256 * sizeof(unsigned short)))
==
poly = 0xEDB88320L;
int main(int argc, char *argv[])
gen_table(); /* Used in CRC-32 calculation */ for (i = 0; i < 16; i++) /* Used */ while ((c = fgetc(handle)) != EOF) chksum += c; /* Calculates Checksum */ chksum32 += c; /* Calculates Checksum 32 */ crcupdate(c, &crcccitt, tablep2);/* Used in CRC-CCITT calculation */ crcrevupdate(c, &crc16, tablep); /* Used in CRC-16 calculation */ crc32 = (crc32 >> 8) ^ crc_table[(crc32 ^ c) & 0xFF]; for (i = 0; i < 5; i++) /* Used */ crc32 ^= 0xFFFFFFFF; /* Used in CRC-32 calculation */ for (n = 0; n < 16; n++) /* Used */ printf("\nChecksum = %04X\n", chksum);
|
|
it is a simple
addition of the bytes in a 16 Bit Variable (or 32 Bit in the case of
conitec, dataio chiplab, advantech labtool-48). That's no CRC at all.. it is
a checksum only.
~/src/checksum $ ./ctest 2716.bin
File 2716.bin: 2048 Bytes!
Memory allocated
file read
cksum=23054 5A0E
The simple C program, it's more filesystem operations then actual
work...
-----------------------------------------------------------------
#include <stdio.h>
uint8_t ebyte; FILE * fp; if(argc < 2)
if(fstat(fno,&infstat)!=0) printf("File %s: %ld Bytes!\n",argv[1],infstat.st_size);
if(fread(bufp,sizeof(uint8_t),infstat.st_size,fp)!=infstat.st_size)
fclose(fp); return 0;
|
In the unlikely event you need a simple CRC for something else, I have seen
this used. It's taken from a Chinese user manual for a barcode scanner. I needed
to implement this crc on my end to match theirs. It takes a pointer to a buffer
and the number of bytes to process.
return (uint16_t)crc;
|
The only checksum algorithm I've ever found specific to EPROMs is the "Kontron
CRC". most of them use an additive checksum, which is almost worthless
really. The Kontron CRC was used in the prestigious Kontron line of programmers.
For that alogorithm, you will need to find Appendix "E.2 KONTRON CRC CHECKSUM ALGORITHM" of the MPP-80S/EPP-80/GPP-80. I have several of the PDFs, but none of them have that appendix. I do have notes from when I taught this back in the late 1980's and early 1990's though.
Kontron_MPP-80_EPP-80_programmer_resources.htm
![]()
If you look forward for other information about this topic, do not
hesitate to contact me by e-mail at: matthieu.benoit@free.fr
.
Important Notice: Also if you have any data about this topic, do not hesitate
to contribute to this page.
Si vous recherchez des informations pour ce sujet, vous pouvez me contacter par e-mail : matthieu.benoit@free.fr . De même si vous avez des informations sur ce sujet, n'hésitez pas à contribuer à cette page.
M-à-j: 9 novembre, 2025 .