Алгоритм работы последней (1.6) версии скрипта.
Попробую объяснить по-простому:
Если максимальный размер ROM 128K, но записано туда всего 64, то так и будет. Например, все, кроме одной, прошивки 9365 от ролсена имеют размер 64K, но записаны на 9365 (наверное, им нужна 2K RAM).
То есть сначала определяется размер болванки, и он должен быть прочитан весь. Затем, в процессе чтения, выясняется размер собственно прошивки. Для чистой размер не определяется и вычитывается все в целях полной проверки на чистоту. Для чего это нужно:
1. Прошивки с размером 64K, но записанные на объем 128K, могут быть впоследствии скопированы на болванки хоть и с 2K RAM, но с ограничением ROM до 64K. Например, прошивка TDA9361PS/N2/3/0664 с размером 64K, может быть записана на заводе на TDA9361PS/N2/3/5 с объемом 128K. При чтении мы это выясняем и впоследствии можем скопировать не только на TDA9361PS/N2/3/5, но и на TDA9346PS/N3/3.
2. Для многих пользователей, к сожалению, бывает сложно, глядя на окно редактора, понять, какой размер у прошивки. Выяснить это по размеру файла также нельзя, так как различные секции прошивки находятся в разных местах BIN-файла. По той же причине размер HEX-файла одной и той же прошивки может значительно различаться в зависимости от способа его создания.
Из-за этого ранее неоднократно совершались ошибки, например, из 96 или 128K прошивки прочитывалось или записывалось всего 64. Или, например, для прошивки размером 64, прочитанной как 128, ищутся именно такие болванки, хотя все может решиться проще.
Для упрощения анализа уже сохраненного файла добавлена кнопка "Определение размера прошивки", чтобы, открыв файл прошивки, можно было бы определить ее размер.
По-хорошему, можно было бы добавить анализ сигнатуры и немного автоматики, но и без этого вполне можно обойтись. При желании пользователь может сделать это сам, немного усложнив скрипт - там все очень понятно.