Причем тут "поиск приключений"?
Речь о вполне логичном желании провести считывание кода (проверку содержимого) сразу после активации режима последовательного доступа в постраничном режиме.
Простой пример - есть контрольный дамп и есть МК.
Ставим МК, активируем режим последовательного программирования и запускаем чтение в постраничном режиме с последующей проверкой результата.
(Или по-Вашему "так низзя!!!"?

)
Ничего "запредельного" - а вот в результате .... сплошь ошибки данных.
В то же время вариант:
ставим МК, активируем режим последовательного программирования, даем общее стирание, постраничную верификацию, постраничную запись с последующей верификацией и.... никаких ошибок!
При том, что программа то постраничного чтения/верификации - одна и та же.
Неуж-то никаких вопросов не возникнет?...
Собственно сам
"ленивый прошивальщик биос" для КОТУИНКИ.
схемка
СКОТчик:
Собираем схемку.
Внешний источник +5 вольт обязателен - АТ89S51/S52 весьма требовательны в отношении питания во время программирования.
Включаем питание,
подключаем адуринку к компьютеру.
Запускаем IDE и загружаем прилагаемый скотчик.
После загрузки скотча в адуринку на ней зажигается штатный светик как указатель готовности к запуску на компьютере терминальной программы.
запускаем монитор порта IDE (установить скорость 9600 бод в окошке настройки)
нажимаем кнопу (штатный светик адуринки погаснет)
высвечивается приглашение установить МК в "кроватку"
ставим туда AT89S52 (можно и AT89S51 - будет строчка о несоответствии кристалла, но прошьется и ессно работать не будет ибо прошивка для AT89S52)
далее согласно сообщениям периодически нажимаем на кнопу управления и наблюдаем ход выполнения на терминале.
После заставки и первого нажатия выполняется чтение сигнатуры МК и LOC бит
результат выводится на терминал
если LOC биты не сброшены будет выполнена команда записи LB3:LB2:LB1 =0:0:0 (сброс лок-битов не проверялся макетом из-за отсутствия кристаллов с записанными)
далее выполняется тест "чистоты" ПЗУ - режим медленно-побайтовый (тестируется только область соответствующая загружаемому дампу, а не весь объём ПЗУ)
при выполнении теста высвечивается начальный адрес страницы , двоеточие и через некоторый интервал времени или "*" - "страница без ошибок" или
"ERROR on адрес байта : содержимое байта != 0xFF"
и управление сразу переходит к общему стиранию
затем идет повторная проверка "чистоты" но уже в постраничном режиме.
При обнаружении ошибки в этот раз после соответствующего сообщения с указанием адреса и данных первой встретившейся ошибки управление переходит к началу программы.
Если верификация после стирания прошла успешно предлагается продолжить работу после очередного нажатия управляющей кнопы.
Далее следует постраничная запись дампа с постраничной верификацией
процесс также сопровождается выводом начального адреса текущей страницы и последующей "звездочкой" после завершения верификации.
по окончании обработки всех страниц дампа выводится соответствующее сообщение и после нажатия кнопы возвращаемся в точку начала программы.
В случае обнаружения ошибки - индикация аналогична таковой при тесте на "чистоту" - только после "!=" будет корректное значение данных и программа будет ожидать нажатия кнопы для возврата к началу (установка кристалла).
В данном варианте терминалка выполняет исключительно роль индикатора хода работы.
Сам дамп вставлен в состав СКОТча в виде массива и не подлежит изменениям (но может быть заменен чем-то иным при желании).
Работу "внешнего светика" также макетом не проверял - лень ставить было....
Помимо "штатного" терминала IDE данная конструкция работает также с любым иным терминалом при установленных параметрах:
скорость 9600, 8 бит данных, паритет - none, 1 стоп-бит
максимальное время обработки не более 8 минут.
