Как написать драйвер на видеокарту?
Чтобы было проще понять друг друга, давайте сразу предположим, что мы загрузились с помощью собственного загрузчика и перевели процессор в защищенный режим. Для моего монитора оптимальное разрешение 1280*1024 давайте возьмем его за "стандарт". Как заставить пиксель с координатами (100;100) светиться цветом 00000000 01010101 10101010 11111111 (32бита).
Если у кого есть информация по портам видеокарты, прошу тоже выкладывать.
В современных видео картах программирование ведеться через регистры отоброженные в памить.
Вот только документы на видео карты в большей части засикречены. Так что не судьба.
Для твоей ОС, хватит VESA'ы (ищи vbe3.pdf). Реализуешь в соей ОС режим VM86 от туда сможешь вызывать прерывания. Что касается прерываний они особо не нужны. Так Они нужны только для выбора и установки видео режима, а вывод осуществляется в видео память. Так что установку видео режима можнео проделвать до перехода в защищенный режим.
PS. За стандар, я бы взял стандартное разрешение монитора, а не то которое у тебя.
Если еще не отпало желание написать драйвер. То диз ассемблер в руки и в перед.
А еще можно отладчиком перехватывать что куда пишеться. А после воспроизводить. После долгого обдумывания ты сможешь написать драйвер.
В VESA BIOS есть точка входа и для защищённого режима, подробнее всё в том же vbe3.pdf. Если оси ещё нет, то думаю, что установка видеорежима - последняя из задач, которую тебе надо будет решить.
Точка появилось только в видео картах с VBE3, видео карты ATI с VBE3 не дружат. Да и о старых видео картах забывать не стоит.
Спасибо. Пока буду читать vbe.pdf и ковырять уже готовые драйвера. А своей оси пока нет и думаю не скоро появится.
А как тогда попроще выводить пукели на экран чтобы они держали?
Эксперементировал с vesa-режимами - при включении некоторых, которые точно поддерживаются видеокартой, сигнал на видеовыход не идет. В чем может быть проблема?
Цитата:
Тоесть как не дружат?
А как тогда попроще выводить пукели на экран чтобы они держали?
А как тогда попроще выводить пукели на экран чтобы они держали?
ATI точно поддерживают VBE2, а вот VBE3 могут и не поддерживать.
Цитата:
Эксперементировал с vesa-режимами - при включении некоторых, которые точно поддерживаются видеокартой, сигнал на видеовыход не идет. В чем может быть проблема?
Тут я не специалист. Как то странно.
Интересно где можно прочитать какая видео-карта что держит?
Цитата: artyom-tyanutov
Интересно где можно прочитать какая видео-карта что держит?
Выложил свою програмульку, которая может вывести список поддерживаемых видеокартой vesa-режимов. можешь запустить ее и посмотреть номера режимов, которые записали в нее производители.
http://sources.codenet.ru/download/1683/VESA_COM.html
а можешь просто воспользоваться функцией 04Fh прерывания 010h, которая запишет тебе этот же список по адресу ds:di.
Спасибо, я все равно собрался делать с определением предпочтительного режима для данной видеокарты, поэтому и хотел почитать, а не определить свою)
http://x.org
Также я там обнаружил ссылку на полную спецификацию современных чипов от Intel'a
Для тех, кто сюда залез - очень хорошо про современные видеокарты, драйверы к ним и прочее написано
Также я там обнаружил ссылку на полную спецификацию современных чипов от Intel'a