OSDev http://osdev.su/ |
|
Не работает графический режим VESA на "современном" железе http://osdev.su/viewtopic.php?f=7&t=4110 |
Страница 1 из 3 |
Автор: | JackKatch [ 19 янв 2025, 19:13 ] | |||
Заголовок сообщения: | Не работает графический режим VESA на "современном" железе | |||
Запускаю своё программное обеспечение (среда поддержки выполнения программ), условно назовём операционной системой. В эмуляторах bochs и qemu работает как надо. На относительно старом железе (AM2, Radeon HD3850), работает как надо. А вот на относительно новом железе (Core I3 s1200, B560M D3H, nVidia GT740), работает не так как мне хотелось бы. Вижу что включается графический режим, но на экране чёрный фон с артефактами. Попробовал на новом железе старую видеокарту, не помогло. Попробовал на старом железе новую видеокарту, результат странный. Видно что включается графический режим, видно кусок текстового буфера (вверху экрана полоса 15%), потом как должно было быть по всему экрану, зелёный фон. Но на зелёном фоне вижу точки другого цвета. Скорей всего где то некорректно работает программа, буду разбираться. Так как графическим режимом занимался относительно давно, всё забылось ![]()
|
Автор: | SII [ 20 янв 2025, 01:36 ] |
Заголовок сообщения: | Re: Не работает графический режим VESA на "современном" желе |
Я с графикой точно не помогу: никогда её не использовал, только чисто текстовый режим. Но, честно говоря, не уверен, что современное железо хоть как-то это поддерживает: ДОСу для работы достаточно текстового режима, причём через BIOS, а современные ОС во время запуска используют UEFI и его сервисы; соответственно, поддержка режимов VESA вроде как и не нужна... Может, попробовать включить какой-то из классических видеорежимов, лучше всего -- стандартный VGA (640*480 точек, 16 цветов)? Думается, у него больше шансов быть корректно поддержанным. В общем, если что-нибудь откопаете, просьба написать: интересно ж, как с этим сейчас дело обстоит. |
Автор: | JackKatch [ 20 янв 2025, 09:47 ] |
Заголовок сообщения: | Re: Не работает графический режим VESA на "современном" желе |
Конечно о результатах напишу. Хотя задачи запуска на современном железе нет. Это я из интереса пробовал. Сейчас более актуально поддержка чтения и записи на диск, и файловая система ext2, а потом попробую разобраться. Пробовал включать все режимы 32 бита цвет и больше 1024x768, переключение в графику происходит так же. То есть я думаю поддержка BIOS всё таки есть, просто какие то особенности. На форуме почему то тихо, я ещё что нибудь по спрашиваю. ![]() |
Автор: | SII [ 20 янв 2025, 17:25 ] |
Заголовок сообщения: | Re: Не работает графический режим VESA на "современном" желе |
JackKatch писал(а): Конечно о результатах напишу. Хотя задачи запуска на современном железе нет. Это я из интереса пробовал. Сейчас более актуально поддержка чтения и записи на диск, и файловая система ext2, а потом попробую разобраться. Пробовал включать все режимы 32 бита цвет и больше 1024x768, переключение в графику происходит так же. То есть я думаю поддержка BIOS всё таки есть, просто какие то особенности. На форуме почему то тихо, я ещё что нибудь по спрашиваю. ![]() Ну, активность на форуме близка к нулю уже много лет: старые отходят от сумасшедших дел по осеписательству, а молодые больше во всякие там вебы идут ![]() |
Автор: | dixie [ 20 янв 2025, 18:43 ] |
Заголовок сообщения: | Re: Не работает графический режим VESA на "современном" желе |
Это правда, случайно зашёл ![]() Если семёрка на железяку ставится - значит с VESA биосом всё нормально ... На новом железе встречаются вообще весёлые вещи - нормального биоса нет, а видеобиос есть и проинициализирован - в итоге во всех переменных биоса мусор, но всё, что относится к видео настроено правильно (int 10h указывает на c000, адрес порта crt в 0:463h, итд). После того как режим включён - собстно, никаких проблем с записью быть не должно (если конечно, не использовать переключение банков ![]() Как бы, memset() на всю длину памяти режима должен давать результат (только надо помнить, что длина строки может быть больше количества точек - некоторые странные биосы любят выравнивать). И на всякий случай - не надо пытаться ставить рефреш (vesa 3.0, бит 11 в номере режима), вот это битое уже очень давно .... вполне может даже ошибку не вернуть и режим не включить. |
Автор: | SII [ 21 янв 2025, 05:11 ] |
Заголовок сообщения: | Re: Не работает графический режим VESA на "современном" желе |
dixie писал(а): Это правда, случайно зашёл ![]() Рад видеть живым ![]() dixie писал(а): только надо помнить, что длина строки может быть больше количества точек - некоторые странные биосы любят выравнивать Ну, дело может быть не в странностях биоса, а в аппаратуре: я с таким на МК сталкиваюсь время от времени, хотя нельзя сказать, чтоб часто. |
Автор: | JackKatch [ 21 янв 2025, 10:32 ] |
Заголовок сообщения: | Re: Не работает графический режим VESA на "современном" желе |
Включаю в real mode видео режим, а в long mode пишу в видеобуфер, всё. Посмотрел код, устанавливаю видео режим прочитанным значением, ничего не добавляю (0xCxxx). Потом зачем то (не помню уже) функцию 8 вызываю Set DAC Palette Format , интересно что в примечании 3-го стандарта пишут "Get DAC Palette Format not supported via the VBE 3.0 protected mode entry point". Может в этом всё дело. Попробую напишу. |
Автор: | dixie [ 21 янв 2025, 12:37 ] |
Заголовок сообщения: | Re: Не работает графический режим VESA на "современном" желе |
JackKatch писал(а): Включаю в real mode видео режим, а в long mode пишу в видеобуфер, всё. Посмотрел код, устанавливаю видео режим прочитанным значением, ничего не добавляю (0xCxxx). Потом зачем то (не помню уже) функцию 8 вызываю Set DAC Palette Format , интересно что в примечании 3-го стандарта пишут "Get DAC Palette Format not supported via the VBE 3.0 protected mode entry point". Может в этом всё дело. Попробую напишу. Если режим не 8 бит, то она вообще не нужна.Номер режима Cxxx - это бит "не очищать память" стоит? От него и мусор на экране, по идее. SII писал(а): Рад видеть живым Надеюсь и впредь ... ![]() ![]() Цитата: Ну, дело может быть не в странностях биоса, а в аппаратуре: я с таким на МК сталкиваюсь время от времени, хотя нельзя сказать, чтоб часто. Ну, например AMD что-то там, 800x600x8 бит .. длина строки - 832. На карте другого производителя, на том же чипе - 800.Вот зачем? ![]() |
Автор: | SII [ 21 янв 2025, 15:34 ] |
Заголовок сообщения: | Re: Не работает графический режим VESA на "современном" желе |
dixie писал(а): Ну, например AMD что-то там, 800x600x8 бит .. длина строки - 832. На карте другого производителя, на том же чипе - 800. Вот зачем? ![]() Если 832 -- наверное, индуизм головного мозга. Аппаратно можно объяснить увеличение длины строки до ближайшей степени двойки, но и только. Кстати, с сотым сообщением ![]() |
Автор: | JackKatch [ 21 янв 2025, 16:16 ] |
Заголовок сообщения: | Re: Не работает графический режим VESA на "современном" желе |
Итак диагноз в первом приближении. Как всегда виноват автор, правда пока не ясно в чём. Программа зацикливается в месте где выполняется поиск ядра в корневом каталоге. То есть до отладочной закраски экрана дело не доходит. Из подозрительного, чтение сектора с диска порядка секунды. Почему на старом железе и в эмуляторе срабатывает, это непонятный вопрос. Пока сделаю паузу, для подумать ![]() |
Страница 1 из 3 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |