CRC "original.bin"
Контольная сумма в конце "original.bin" является "стандартной" - она считается как побайтовая сумма всего модуля (начиная с самого начала - адреса 90000 в нашем случае) до "нулевого" байта на конце. После чего "инвертированное" значение и является конечным значением - так, чтобы после при подсчете CRC по всему "диапазону" от начала до байта CRC (включая его) получался 0. Данную процедуру можно сделать многими утилитами, но есть важное НО:
Рис.34.
Обведены заголовки и выделено главное отличие - стандартное для "оригинал.бина" место распаковки (5000:0000) в "lha"-шном заголовке обозначает другое, потому имеет совсем другое значение (A69D:8BF6): понятно, что с таким значением биос даже "при желании" - не заработает.
- Замечание. Кстати, то, что модбин корректно "узнал" в подобном модуле "original.bin" - заслуга последних версий cbrom32, более старые версии (cbrom) - страшно бы матерились или даже зависли...
Кроме CRC, мы должны исправить заголовок упакованного модуля "original.bin" - он "похож", но, всё-таки, принципиально отличается от сделанного LHA, потому, не исправив его, мы получим нестартующую систему. И именно этим занимается modbin.
Рис.35.
Открываем сделанный файл в модбине.
|
Рис.36.
Облом-с! "Слишком свежий" был выбран примерчик - даже самый последний модбин не захотел проглотить 8Мбит-ный биос, не признав в нём Аварда...
|
Рис.37.
Для примера, как "должно было бы быть" - продемонстрируем на другом (4М-битном) биосе (от GA-8IPE1000Pro), сделанным таким же образом. Открываем его в модбине...
|
Рис.38.
В отличие от предыдущего, он благополучно открывается...
|
Рис.39.
Сохраняем его под нужным именем (можно "поверх" открываемого).
|
Статья пишется "по ходу", потому для меня это тоже "сюрприз". К сожалению, но факт - стабильностью/"совместимостью"/"всеядностью" - не блещут никакие версии модбина. Будем надеяться, что в будущем эта печальная реальность изменится, но пока нужно стать "пионерами" и быть готовым всегда и ко всему. :)
Выйти из данной ситуации поможет вышеупомянутое правило - модбин "работает" лишь с одним (единственным) модулем - "original.bin", остальные ему абсолютно не нужны. Этим и воспользуемся, придётся "обработать" модуль "original.bin" - "отдельно".
Рис.40.
Для этого можно использовать другой биос, который "примет" используемая версия модбина. Покопавшись в соседних каталогах, был обнаружен "приятный" двухмегабитный биос от GA-8I848P Rev.1.x - на нём и проведем нужные действия.
|
Рис.41.
Сначала "стираем" все модули в биосе. Для этого выделяем область от начала...
|
Рис.42.
...до конца (ищем "стандартно" по FFFFFFFF)...
|
Рис.43.
и забиваем ее эфэфками (ALT-F2 для hiew).
|
Рис.44.
Полученная "заготовка" (без модулей) - готова!
|
Рис.45.
cbrom в отсутствие модулей немного "растерялся". :) Но нас это не пугает - так и задумано! :)
|
Рис.46.
Повторяем процедуру получения запакованного архива изменённого файла "original.bin" для вставки, или берем предусмотрительно ранее заготовленный "1.lzh" (см. Рис.22.).
|
Рис.47.
Выделяем всё (CTRL-* в hiew) и записываем в самое начало сделанной "заготовки".
|
Рис.48.
Теперь полученный биос благополучно открывается модбином...
|
Рис.49.
...Исправляем нужное в нём...
|
|
Изображение:F8edit cbrom good.gif
Рис.51.
Проверяем - cbrom больше не "ругается"...
|
Рис.52.
Далее из сохранённого файла нужно извлечь отредактированный и уже "пересчитанный" модуль "original.bin". Для этого выделяем его от начала...
|
|
Рис.54.
Захватываем, кроме нулевого байта, и байт CRC (54h в нашем случае).
|
Рис.55.
И сохраняем в новый файл.
|
Рис.56.
Теперь к нашему уже полностью "готовому" (с корректным заголовком и правльной CRC на конце) запакованному модулю "original.bin" дописываем аналогично сделанному на этапе Рис.30. содержимое "хвоста", только БЕЗ байта CRC в начале (ведь у нас уже он есть - правильно пересчитанный). "Хвост" делаем аналогично процедуре на Рис.23-29.
|
Рис.57.
И (аналогично шагу на Рис.32) записываем полученный "слепок" в предварительно "вычещенный" от модулей (аналогично шагам на Рис.41-44) наш будущий биос. Модули начинались, как помним ( Рис.15.), с адреса 90000 - туда и вставляем полученный слепок.
|
Рис.58.
"Модбинная" стадия завершена.
|
"Общая" CRC биоса
В отличие от модбина, cbrom обладает достаточной стабильностью и проблем с пересчетом CRC ("его" контрольной суммы - в конце всех модулей; напомню, CRC-байт "original.bin" он не "трогает"). Для работы лучше всего пользоваться самым последним – на момент написания это CBROM.EXE V1.55 10/12/05 Release. Для пересчета CRC достаточно проделать любую операцию с биосом (просмотр по опции /D - не в счёт). Например, просто добавить и после удалить какой-то "ненужный" файлик.
cbrom myfile.bin /other 1234:5678 nanana.ttt
cbrom myfile.bin /other 1234:5678 release
- Замечание - можно посоветовать только не выбирать слишком большие "просто файлики" - 1-5кБ, иначе они могут не "влезть", и обновления CRC не произойдёт.
Всё, BIOS - готов!
- Примечание - биос по-прежнему не будет открываться модбином, однако это уже не "наша вина" - будем ждать, пока не выпустят новую версию, с которой не придется для каждого редактирования опций повторять процедуру, описанную в шагах Рис.40-58. И пусть не смущает кажущаяся "длительность" и "мудрёность" процедуры, при достаточном освоении "азов" сие есть действитьльно - элементарно. (..., Ватсон! :) )
Отправить комментарий