crc.c 741 B

12345678910111213141516171819202122232425262728293031323334353637
  1. #include "data.h"
  2. word crc_update(char far * data, word size)
  3. {
  4. word i;
  5. word j;
  6. word crc = 0;
  7. for (j = 0; j < size; j++) {
  8. crc = crc ^ ((word) data[j] << 8);
  9. for (i = 0; i < 8; i++) {
  10. if (crc & 0x8000)
  11. crc = (crc << 1) ^ 0x1021;
  12. else
  13. crc <<= 1;
  14. }
  15. }
  16. return crc;
  17. }
  18. word crc_update_mem(unsigned long addr, word size)
  19. {
  20. word i;
  21. word j;
  22. word crc = 0;
  23. for (j = 0; j < size; j++) {
  24. crc = crc ^ ((word) * (byte *) (addr + j) << 8);
  25. for (i = 0; i < 8; i++) {
  26. if (crc & 0x8000)
  27. crc = (crc << 1) ^ 0x1021;
  28. else
  29. crc <<= 1;
  30. }
  31. }
  32. return crc;
  33. }