OSDev
http://osdev.su/

Графический режим
http://osdev.su/viewtopic.php?f=6&t=418
Страница 1 из 1

Автор:  diger [ 25 май 2011, 16:34 ]
Заголовок сообщения:  Графический режим

Не знает ли кто-нибудь , как уже будучи в протектед режиме (multiboot-подобный загрузчик) включить граф. режим ? (svga)
Подкиньте хотя бы доков на эту тему (или хотя бы на тему перехода из протектед режима в реальный, если это возможно)

Автор:  SII [ 25 май 2011, 19:16 ]
Заголовок сообщения:  Re: Графический режим

Всё, касающееся переходов между режимами процессора, описано тыщу раз в тыще руководств и статей. В частности, абсолютно все необходимое имеется в интеловском и АМДшном мануалах. Ну а если самому искать и вникать лениво, то мы тут уже бессильны...

Автор:  Himik [ 25 май 2011, 19:33 ]
Заголовок сообщения:  Re: Графический режим

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

Есть несложный способ перехода в реал, путём сброса процессора. Предварительно в ячейку 0x467 надо записать адрес старта кода реального режима (в ячейке смещение и сегмент по 16 бит). Ещё надо обнулить базу IDT.
Потом в CMOS записывается код режима перезагрузки, а в контроллер клавиатуры сигнал сброса.
//Set RM
//Set restart pointer
*(long*)0x467 = <сегмент> * 0x10000 + <смещение>;
//Set IDT base to 0
_asm xor eax,eax
_asm mov dword ptr [pIDT+2],eax //База IDT
_asm lidt fword ptr [pIDT]

outp(0x70, 0x8F); //CMOS - restart attrib and disable NMI
outp(0x71, 5);

_asm push 0
_asm popfd
_asm clts
outp(0x64, 0xFE); //Сброс
_asm hlt

Автор:  achesnokov [ 25 май 2011, 20:46 ]
Заголовок сообщения:  Re: Графический режим

Переключение графического режима проще всего делать с помощью BIOS. Про переключение из protected mode в real mode с целью вызовов BIOS дискуссия была на этом сайте в viewtopic.php?f=6&t=416.

Непосредственно ссылка переход из protected в real mode: http://www.sudleyplace.com/pmtorm.html
В качестве справочника можно также использовать исходники GRUB/stage2/asm.S
В этом файле есть функции real_to_prot, prot_to_real. А также примеры использования их, в частности для обращения к int 0x10.

Кроме того, неплохой пример с графикой в защищенном можно посмотреть: http://www.wasm.ru/article.php?article=lfbdos

Автор:  Yoda [ 26 май 2011, 14:05 ]
Заголовок сообщения:  Re: Графический режим

Diger, я понял суть твоего вопроса. Дам направление, куда копать. У тебя есть только следующие возможности:
1. Временное переключение из Protected Mode в Real Mode для вызова соответствующей функции BIOS. Это самый простой, но не самый хороший способ.
2. Virtual 86 в защищённом режиме и вызов в нём функций BIOS. Требует создания соответствующего обработчика исключений, дескриптора задачи и механизма коммуникации с процессом V86. Посложней будет, да и в 64-битном режиме V86 не поддерживается.
3. Напрямую работать с железом (регистрами) видеокарты. Т.е. писать (мини)драйвер видюшки.
4. Если VESA BIOS Extention (VBE) видюшки поддерживает защищённый режим, можно воспользоваться им.

Автор:  418ImATeapot [ 27 май 2011, 10:38 ]
Заголовок сообщения:  Re: Графический режим

Извините, если не по теме, но...
Сама ОС будет работать в PM или RM?
Если в PM, то драйвер все равно нужен. Может, сначала загрузить его? А если в RM, то какой смысл в ГРАБ?

Кстати, в стандарте VBE3 есть понятие PM entry point. Можно использовать вместо прерывания 10. Правда, не у всех BIOS оно есть. Подробнее см. здесь: http://www.petesqbsite.com/sections/tutorials/tuts/vbe3.pdf на странице 29 в акробатном исчислении.

Еще графический режим хорошо описан у Пирогова В. Ю., но там надо копаться.

Автор:  diger [ 30 май 2011, 10:28 ]
Заголовок сообщения:  Re: Графический режим

Цитата:
Это самый простой, но не самый хороший способ.


А чем этот способ плох ?

Впринцыпе можно сделать , чтобы переходить в RM нужно было только для установления видео-режима , а рисовать уже в PM через видео память...

Автор:  Yoda [ 20 июл 2011, 23:58 ]
Заголовок сообщения:  Re: Графический режим

diger писал(а):
А чем этот способ плох ?

Этот способ плох тем, что ОС полностью теряет контроль над машиной. Пока работает BIOS в реальном режиме, ни один драйвер ОС не сможет обработать никакого прерывания.

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/