2013-12-19 14 views
0

Как я могу получить доступ к режимам vesa через IO/Port для процессора x86? я уже попробовал код, который работает только на BoschVESA через IO/Port

private static void SetVideoMode(ushort width, ushort height, ushort depth) 
{  
    WriteCommand(0x4, 0x00); 
    WriteCommand(0x1, width); 
    WriteCommand(0x2, height); 
    WriteCommand(0x3, depth); 
    WriteCommand(0x4, 0x1 | 0x40); 
    PortIO.Outb(0x3c0, 0x20); 
} 
+0

язык, платформа отсутствует .. любой тег, чтобы узнать, о чем вы говорите? – dendini

+0

Вам нужно включить определение 'WriteCommand' в ваш вопрос, иначе мы понятия не имеем, что делает ваш код. – Michael

ответ

2

Вы не можете. VESA (VBE) - стандартная среда драйвера BIOS, которая обеспечивает единый интерфейс для разнесения видеокарты.

Для непосредственного ввода в порты ввода/вывода или регистров с отображением памяти вам нужно будет либо ограничить себя основными режимами VGA и функциональностью, либо узнать точную информацию о вашей конкретной видеокарте.

Это, конечно же, проблема VBE была разработана для решения в первую очередь.

+0

Точно, я разработчик Atom OS (www.atomos.tk), мы делаем операционную систему в C#, используя собственный компилятор в C#, и я хочу реализовать VESA/VBE, как я могу? – amaneureka

+0

Вам понадобится механизм thunking для вызова 16-битных функций реального режима, в этом случае прерывания BIOS. Вам также нужно будет каким-то образом отобразить полученную физическую память в ваше адресное пространство. Взгляните на то, как реализованы основные драйверы дискретного ввода-вывода и VGA-графики, VBE должен быть похож – doynax

+0

Я не понимаю, что вы точно хотите сказать ... Можете ли вы помочь мне в реализации этого? на нашем компиляторе ... Я буду очень благодарен: D – amaneureka

 Смежные вопросы

  • Нет связанных вопросов^_^