Внимание! Это временный неофициальный архив старой версии форума Полигон Призраков, созданный сочувствующим форуму участником. Этот сайт просуществует лишь до тех пор, пока администрация Полигона не сдержит своё обещание и не откроет официальный архив по адресу old.sannata.org.

Полигон-2

Форум о старых компьютерах

Объявление форума

Если пользуетесь личными сообщениями и получили по электронной почте оповещение о новом письме, не отвечайте, пожалуйста, почтой. Зайдите на форум и ответьте отправителю через ЛС.

Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   прочитать свой биос в досе
RSS

прочитать свой биос в досе

как и чем?

<<Назад  Вперед>> Страницы: 1 2 3 4
Печать
 
BreakPoint
Гость

Ссылка

Теоретически да, но он же в ROMе находится, т.е. перезаписать себя он не может. Такое возможно когда он отображается на основную память, но тогда обычный и отображенный биосы будут отличатся. И зачем оно надо? Может при копировании в основную память не весь код копируется.
Сейчас на форуме
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
Появится i8088, надеюсь расскажет.
alecv
Advanced Member


Откуда: Санкт-Петербург
Всего сообщений: 5545
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
5 окт. 2004
BreakPoint написал:
[q]
Я до сих пор не могу понять, почему чтение биоса из памяти компа иногда дает другой результат чем "прошивалка".
[/q]
Достаточно, например, махнуть местами D0 и D1 ПЗУ и результаты при чтении "из памяти" будут совершенно отличаться от чтения 'программатором'. Причем для клонировани устройства нужен именно образ считаный "программатором".

Или вопрос не об этом ?
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Rio444 написал:
[q]
Мне кажется биос может сам менять свой код.
[/q]
Если не рассматривать более современные системы, с упакованным BIOS (тут понятно,
что чтение памяти не одно и то же, что чтение BIOS, кстати к таким BIOS относится
win-AMI для 486, 64KB размером), то:

1.При использовании shadow/cache для Fsegment BIOS уже может копироваться не
весь/копироваться с изменениями/меняться в процессе работы (обычно отличия в
нескольких байтах). Неплохая аналогия - BIOS-ы PCI cards, которые всегда исполняются
из памяти, а не из ROM. Не всегда этот shadow/cache для Fsegment можно отключить
по факту.

2. Универсальную програму для чтения BIOS можно попробовать создать, имея
документацию на конкретный чипсет (или привязываясь к движку BIOS - если
разобраться, что именно меняется при shadow). В более современных системах
(Pentium1 +) за отображение ПЗУ BIOS (в частности) на адресное пространство отвечают
регистры PAM.

3.
alecv написал:
[q]
Достаточно, например, махнуть местами D0 и D1 ПЗУ и результаты при чтении "из памяти" будут совершенно отличаться от чтения 'программатором'. Причем для клонировани устройства нужен именно образ считаный "программатором".

Или вопрос не об этом ?
[/q]
Это тоже, но в данном случае рассматривается именно искажение образа ПЗУ, читаемое процессором
из адресного пространства.
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
i8088 написал:
[q]
1.При использовании shadow/cache для Fsegment BIOS уже может копироваться невесь/копироваться с изменениями/меняться в процессе работы (обычно отличия внескольких байтах). Неплохая аналогия - BIOS-ы PCI cards, которые всегда исполняютсяиз памяти, а не из ROM. Не всегда этот shadow/cache для Fsegment можно отключитьпо факту.
[/q]
Чуть-чуть вчера почитал на эту тему.
Изначально, при загрузке, управление передаётся BIOS в ROM. Но дальше BIOS может делать всё, что хочет. Например, загрузиться вовсе не в диапазон F0000-FFFFF (где он должен быть), а в любой другой. Память пока что девственно чистая.

Затем загрузить уже в RAM по адресам F0000-FFFFF любой нужный код. Установить для этой области памяти "Shadow", т.е. обращение будет не в ROM, а в RAM по данным адресам. И включить для этой области памяти режим "только чтение".
Ни одна программа ничего не заподозрит, а содержаться по этим адресам будет уже не ROM.

Как Вы правильно заметили, делается это всё средствами чипсета. И на разных чипсетах по-разному.
Книжка была относительно современная (2007 год). Совсем древние системы там не рассматривались.
Поэтому точно не знаю, что там на 386-х и 486-х.
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
i8088 написал:
[q]
3. alecv написал:
[q]
Достаточно, например, махнуть местами D0 и D1 ПЗУ и результаты при чтении "из памяти" будут совершенно отличаться от чтения 'программатором'. Причем для клонировани устройства нужен именно образ считаный "программатором".Или вопрос не об этом ?
[/q]
Это тоже, но в данном случае рассматривается именно искажение образа ПЗУ, читаемое процессоромиз адресного пространства.
[/q]
Вот это вряд ли. Иначе была бы невозможна прошивка на программаторе. Такое было только на некоторых старых видеокартах.
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Rio444 написал:
[q]
Книжка была относительно современная (2007 год). Совсем древние системы там не рассматривались.
Поэтому точно не знаю, что там на 386-х и 486-х.
[/q]
На XT все прозрачно - BIOS исполняется из ROM, из Fseg. На XT DMA обычно не работае по
адресамв Fseg, но это уже другая тема, поднималась на форуме.
На 286-386 то же, но уже на некоторых 286 появился shadow, DMA в Fseg работает.
На 486 по разному, на поздних встречается уже вполне современный упакованный
Award (SiS 496/497)


Rio444 написал:
[q]
Затем загрузить уже в RAM по адресам F0000-FFFFF любой нужный код.
[/q]
У Award копируется original.tmp в Eseg и Fseg. Примечательно, что original.tmp содержит и
почти копию boot-block без декомпрессора. Есть идея, что для облегчения отладки 128KB
Award BIOS можно использовать (в некоторых случаях) распакованный original.tmp, просто
записанный в ПЗУ. Работать это может, если в упакованных компонентах нет критичных
исполняемых модулей (как правило, ранние BIOS 4.5). Никак не соберусь проверить.


Rio444 написал:
[q]
Вот это вряд ли. Иначе была бы невозможна прошивка на программаторе. Такое было только на некоторых старых видеокартах.
[/q]
На 286 плате TD60C переставлены линии адреса, с линиями данных нормально
IdeaFix
Гость

Ссылка

La Forge написал:
[q]
За одно только это i8088 нужно в рейтинг +несколько пунктов сразу!
[/q]
И не только за это... +1 в общем.
Сейчас на форуме
Rio444
Гость


Откуда: Ростов-на-Дону
Всего сообщений: 8632
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
14 сен. 2014
i8088 подскажите, пожалуйста, что делает Ваша программа bios64.exe?
Она просто сохраняет содержимое ячеек F0000-FFFFF в файл, или проделывает ещё какие-то манипуляции?
i8088
Advanced Member


Откуда: г. Баку, Азербайджан
Всего сообщений: 2132
Рейтинг пользователя: 0


Ссылка


Дата регистрации на форуме:
30 янв. 2015
Да, просто сохраняет Fsegment (стандартные функции C используют промежуточный буфер,
из-за этого нормально работает и на XT без дополнительного создания буфера, тк у
большинства XT не работает DMA в Fseg). Делать чипсетозависимые вещи из-за отсутствия
документации на старые чипсеты затруднительно.

Исходник прилагаю

Прикрепленный файл (bios64.c, 0 байт, скачан: 24 раза)
<<Назад  Вперед>> Страницы: 1 2 3 4
Печать
Полигон-2 »   IBM PC-совместимое. До 2000 года включительно »   прочитать свой биос в досе
RSS

1 посетитель просмотрел эту тему за последние 15 минут
В том числе: 1 гость, 0 скрытых пользователей

Последние RSS
[Москва] LIQUID-Акция. Сливаются разъемы CF
МС7004 и 7004А на AT и XT
Пайка термотрубок
Проммать s478 PEAK 715VL2-HT ( Full-Size SBC)
Подскажите по 386 материке по джамперам.

Самые активные 5 тем RSS