Не было у бабы забот, да купила она себе порося! Ну, начнём с того, что писюковая совместимость - полный отстой, и сейчас я всех в этом убедю... или убеждю...Итак, все современные видеоадаптеры могут работать в нескольких стандартных видеорежимах:
- несколько текстовых, начиная от 40x25 (стандартным считается 80x25);
- CGA: 640x200, два цвета; 320x200, четыре цвета;
- EGA: 640x350, шестнадцать цветов (битовые слои);
- VGA: 640x480, шестнадцать цветов (битовые слои); 320x200, 256 цветов.
Плюс к тому у каждой видеокарты (ну, кроме самых древних типа CL-5421) есть собственные режимы; при том, что у разных видеокарт могут совпадать разрешение&цветность, для них нужны разные драйверы, т.е. не получится заменить видеокарту на аналогичную др.производителя и надеяться, что удастся работать без изменений в софте.
Компьютерные игры под DOS работали с графикой в тех же условиях, что и твой загрузчик, т.к. сам DOS не имел функций для работы с графикой, так что приходилось либо пользоваться средствами VideoBIOS, либо обращаться напрямую к видеопамяти.
Казалось бы, если на видеокарте есть ПЗУ, то в это ПЗУ надо залить драйвер, который будет принимать от программ стандартные запросы (т.е одинаковые для всех видеокарт) и реализовывать их в зависимости от конкретных особенностей видеокарты (как это делают BIOS'ы на контроллерах жёстких дисков, особенно SCSI). Но VideoBIOS имеет всего две функции: "установить видеорежим" и "поставить точку в заданном месте". Но если рисовать рисунок поточечно, то при каждом вызове VideoBIOS будет проверять, не вышла ли точка за границы экрана, а это медленно; тогда как при рисовании отрезка достаточно проверить, не выходят ли за границу экрана его концы. Впрочем, для тебя это м.б. приемлимо.
Другой вариант - прямое обращение к видеопамяти. Даже текстовые программы типа Norton Commander обращаются напрямую (я читал, что первой это сделала электронная таблица Lotus "1-2-3"). Но проблема в том, что все видеорежимы работают через "окно" размером в один сегмент (64 KB), тогда как уже EGA-адаптеры несли на себе вдвое больше; поэтому для адресации видеопамяти используются такие [censored] методы, что [censored], [censored] и [censored]!
И есть ещё какой-то метод работы "VESA", который я не понял. В компьютерных журналах иногдя появляются статьи на тему "программирование видеоадаптеров через VESA", которые я обычно не читаю.
Короче говоря, я советую читать следующие материалы:
- "TechHelp" (это электронный справочник под DOS, ищи в Internet);
- книги типа "Программирование видеоадаптеров" (такие древние, что в Internet их может не быть, но попробуй);
- статьи на тему "VESA";
(в кавычках пиведены ключевые слова для поисковых машин). Ну а напоследок пожелаю тебе удачи и терпения - они тебе понадобится.