Кто-нить знающий подскажите. Пишу программу на асме в учебных целях, которая должна выводить на экран в графическом режиме 1024х768х15бит через LFB. Прога стартует под виндой как обычное ДОС-приложение. Через прерывания узнает параметры видеоадаптера (32-битный физический адрес LFB, объем видеопамяти и т.д.). Затем с помощью DPMI переходит в защищенный режим. Строит дескрипторы 32-битных сегментов кода и данных и загружает их. Но дескриптор, описывающий видеопамять никак не хочет строиться. (В смысле он строится, но при обращении к видеопамяти вылезает необрабытываемое исключение). В DPMI есть функция отображения физического адреса в линейный. Так вот: она никак не хочет отображать физический адрес LFB в линейный. Я всяко уже пробовал. А без отображения тоже ничего не работает: при попытке записи в видеопамять вылезает:"необрабатываемое исключение х=0Dh". В общем проблема такого плана: как использовать LFB под Виндой в ДОС-программе на асме с DPMI (в смысле как построить дескриптор, описывающий LFB). Желательно киньте кусок реально работающего кода на асме и объясните что к чему.
Когда то давно под чистым ДОС дотягивался до LFB просто из нулевого сегмента без перехода в защищённый режим и насколько помню (хотя мог и что-то забыть) удавалось обойтись одними префиксами размера, даже без махинаций с теневыми дескрипторами сегментов Есно под Виндой это не катит. Но раз у тебя есть рабочий 32-битный сегмент данных, то что мешает адресовать видеопамять из него? Он же перекрывает все 4Гига.
Я пробовал создать 4 Гб сегмент данных и адресоваться из него к LFB, но ничего не получается. Вылазит необрабатываемое исключение. Что делять? Для справки: у меня WinXP
Вообще, b800 - это сегментный адрес в реальном режиме окна видеопамяти. Для дескриптора база должна быть в 16 раз больше, т.е. b8000
Автору темы следует найти Allegro library, версию для DJGPP. Эта библиотека поставляется в исходниках и предназначена именно для работы в PM (а DJGPP, собственно, только для PM и компилит). Там есть работа и с LFB, и в режимах с переключением страниц.