Вид для печати
Цитата: Сообщение от Pyk Из исходников Emu80. Возможно, будет понятнее: Код: uint16_t cs = 0; for (uint16_t i = 0; i < fileSize - 1; i++) { cs += buf[i]; cs += (buf[i] << 8); } cs = (cs & 0xff00) | ((cs + buf[fileSize - 1]) & 0xff); Это типа бага изначального монитора, что старший байт последнего суммирования теряется и вместо него используется его предыдущее значение?
uint16_t cs = 0; for (uint16_t i = 0; i < fileSize - 1; i++) { cs += buf[i]; cs += (buf[i] << 8); } cs = (cs & 0xff00) | ((cs + buf[fileSize - 1]) & 0xff);
А где условие то? Код: if (lastChunk) --len; if (lastChunk) baseCs = (baseCs & 0xff00) | ((baseCs + data[len]) & 0xff); Цитата: Сообщение от Pyk Последняя строка Код: cs = (cs & 0xff00) | ((cs + buf[fileSize - 1]) & 0xff); lastChunk нет :) - - - Добавлено - - - Точнее, в Вашем примере, lastChunk всегда равен true.
if (lastChunk) --len; if (lastChunk) baseCs = (baseCs & 0xff00) | ((baseCs + data[len]) & 0xff);
cs = (cs & 0xff00) | ((cs + buf[fileSize - 1]) & 0xff);
Цитата: Сообщение от Shaos Это типа бага изначального монитора, что старший байт последнего суммирования теряется и вместо него используется его предыдущее значение? Похоже на то, только младший байт.
Цитата: Сообщение от Pyk Похоже на то, только младший байт. lastChunk включает именно это, так? Цитата: Сообщение от Shaos Это типа бага изначального монитора, что старший байт последнего суммирования теряется и вместо него используется его предыдущее значение Вот это.