Есть такое дело - нужно добавить/изменить код в BIOS - 2 Mbit, Гигабайтовский.
1) Редактируем основной код 128 Кб, который идет сначала прошивки, то есть распаковываем, меняем, пакуем, суем обратно. Проблема с CheckSum - она идет сразу после упакованного файла - один байт.
Но есть 4 байта в файле BIOS по адресам 37FFE..38001, которые тоже каким-то макаром относятся к контрольным суммам.
Вопрос - как они вычисляются?
Вообще-то 1-й байт как мы поняли - это контрольная сумма кода 0..37FFD. Но уже со второго - непонятки. Второй байт равен первому + 11h. Что это за константа и откуда? Непонятно. Ну а остальные 2 байта - вообще мрак.
2) После обработки файла BIOS патчером - туда добавляются два файла - modul.tmp и start.tmp. Насколько я понял, первая команда start.tmp передает управление в modul.tmp. Я сравнивал два патченных файла с разным размером modul.tmp - меняется кроме самого modul.tmp только эти же самые байты - 37FFE...38001 и еще кусочек после них (пустого места видимо - там 00 00 FE забиваются FF FF FF)
Вопрос - как передается управление на start.tmp? Ведь нигде больше ничего не меняется, а адрес start.tmp меняется? И как встроить код в modul.tmp так, чтобы БИОС нормально работал?
Вопрос был - как эти байты вычисляются, а не как их поправить. Мне нужен именно алгоритм вычисления и где искать все дополнительные контрольные суммы.
Опять же - про modul.tmp и start.tmp вопрос?
Читал статьи - и как редактировать BIOS и как контрольную сумму править. Не помогает. :mrgreen:
Эти вопросы там не раскрыты.
ЗЫ: Вдогонку - в оригинальном файле контрольная сумма всего файла БИОС совпадает с 3-им байтом из этих четырех, а после BIOS патчера сумма всего файла = 0 и не совпадает с 3-им байтом (из 4-х - 37FFE..38001). Что за фигня?