Aloner У Борланда есть свой расширитель. Я программированием с расширителями не занимался, т.ч. ничего подсказать не могу. Только по-моему во времена Висты твои занятия пахнут плесенью
valterg )) Если так рассуждать, то можно докатится до того что программирование в асме тоже попахивает... )) Ты кстати мож сказать, код который я выложил после перехода в защищенный режим является 32 битным? (я код перехода из Зубкова в наглую скатал) а так как в асме недавно, то сомнения берут
Aloner Все кто призывают программить на ассемблере, используют макросы, API и кучу библиотек. И не скрывают это. Начиная с нуля на асме программить - это мазохизм страшный. Все что ты хочешь сделать с графикой наверняка уже реализовано. Найди и используй. ========================== Если я правильно понял, у тебя там один сегмент для 16-битного режима и в конце идет переход в 32-битный режим. Ну далее я ничего сказать не могу - остальное я и в теории не все знаю. В одном уверен точно: видео-буфер в 32-битном режиме находится никак не по адресу A0000 Он точно за 2 Гбайтами, возможно там маппинг есть на A0000000, но в ntvdm он почему-то немного в другом месте. Да и для высоких видеорежимов просто места не хватит между A0000 и B8000.
valterg Дык ты говоришь насчет видео-буфера (LFB), а я его и не юзаю. Я через DPMI выделяю селектор для видео-памяти ,то есть : ;get selector for Video mov ax,02h mov bx,0A000h int 31h mov Sel_Video,ax а потом работаю как с 64 кб сегментом, как заметил cppasm, с помощью окон.
cppasm Человек не может понять : у него хоть что-то работает или нет. Вот здесь и надо подсказывать. Кстати переключения банков у него нет и он именно пытается в защищенном режиме с LFB работать. Получает селектор для A000 и использует тот факт, что банки линейно лежат друг за другом. Кстати вот тут написано, что в NT с LFB работать нельзя(VBE2). http://www.wasm.ru/forum/viewtopic.php?id=16252&p=2 ++++++++++++++++++++ Aloner чтобы разговор от теории к практике перешел, напиши : 1) Где запускается программа : чистый ДОС, ДОС-окно(под какой ОС), еще что-то ? 2) Какой именно TASM используется, как линкуется... 3) Какой расширитель DMPI используется? По идее наверно из Борланда, но все-таки. +++++++++/////////// Наврал конечно по LFB. Прочитал короткое пояснение про DPMI - в проге есть только резервирование памяти и ее освобождение. Т.е. вся работа в лучшем случае происходит в рамках 64Кб видео-буфера. Более того, регистр ES адресует всего 256 байт - PSP. А лучше всего глянуть сюда http://pascal.sources.ru/memory/index.htm Тут вам и DPMI и банки и VBE. Правда зачем-то в порты VGA лезут, но .... ++++++++.............. Еще раз посмотрел код. Там сначала идет переход в протектед с 16 битами коде-сегмент, А потом делается выход в полномасштабный 32-бит режим. Поправьте, если я ошибаюсь. Я подозреваю, что второй переход не выполняется или прога работает не так, как задумано.
Как говорил Ося Бендер - это была блестящая комбинация (Мои мучения с DPMI). Наврано в функции переключения банков - пойнтеры там приводят к глубокому зависанию... даже под скромным юзером. mov dword ptr fs:num,eax и mov ecx,dword ptr 32768 а надо mov fs:num,eax и mov ecx,32768 либо скобки квадратные нарисовать в первом случае. =========================== Я проверил только переключение банков : писал два раза в видео-буфер в разные банки.
valterg Огромнейшее спасибо за ответы и неугасающий интерес к теме)))))) !!! Долго не отвечал - учеба замучала ) По поводу: 1) запускать планирую под ДОС,Дос-Окно 2)TASM 5 3)Расширитель...хм либо из Борланда, либо который в режиме Дос-окна Винда предаставляет За ссылку на Паскалевскую страницу тож спасибо, нашел много че хорошего.
Aloner В ДОС-окне в Виндах никакого расширителя не нужно(работает Виндовый). Пытался другие прикрутуть или использовать rtmres.exe - пусто на экране. В 98-м под VirtualPC тоже работает. Использовал tasm и tlink из Борланд Паскаля 7 - там нет ключа /Tx, хотя и есть запускалка :-( С буфером я не проверял - возможно там с памятью лажа будет. Я напрямую в видео-буфер писал и переключал банки (0,1,7). Напрягся с разбором, т.к. давно уже хотел пощупать протектед моде, а еще была неудача, когда VBE3 пытался запустить - все сделал правильно, но не сработало. Хотел через I2C в настройки дисплея залезть.
valterg Кстати о переключения банков... Я когда с VESA разбирался, прочитал что VESA BIOS хранится указатель на процедуру альтернативного переключения банков, которя быстрее работает. Ты случаем ее не юзал (в реальном режиме)?
Aloner Я свято верю в истину "переключение банков зло" - пользуйтесь flat-моделью. При наличии нескольких развитых пакетов для разработки игр изучение на низком уровне вывода графики считаю ненужной тратой времени.
Кстати насчёт AGP видюх... ниукого нет толковой доки по работе с ускорителем в защищённом режиме? Сорри за офф-топ...
Exp10der Если работа с обычными функциями хоть как-то документирована, то работа с ускорителем - это недокументированные функции нижнего урованя для поддержки OpenGl и DirectX. Возможно что есть какие-то функции разработчиков. И что - ты хочешь убить всю свою жизнь в попытках написать несовместимый движок, который в 2-3 раза будет быстрее. Флаг в руки, но по-моему это величайшая глупость. Если уж хочется этим заняться - пробивайся в AMD(группу ATI) или в NVidia. Только там сможешь этим продуктивно заниматься. Либо путь проверенный буржуями на оптимальность - работа в стандарте, т.е. OpenGL или DirectX.
valterg Я не спорю что переключение банков медленее, но пока я не могу работать с LFB. И тем более отнюдь не все более менее современные карты имеют LFB...
valterg Я не спорю что переключение банков медленее, но пока я не могу работать с LFB. И тем более отнюдь не все более менее современные карты имеют LFB...
Aloner Я давал библиотеку на Паскале(асм вставки). Там вроде написано : VESA 1.2 2.0 и LFB. Может все-таки можно. Просмотри код внимательней ? Мне всегда казалось, что AGP предполагает наличие LFB.
Короче, замучался я с этим защищеным режимом, как нить с ним потом разберусь, а пока решил юзать связку Real mode+XMS/EMS. С ними у меня проблем не возникает.
Aloner Банки есть везде, хотя могут и не работать. =( LFB есть почти везде особенно на современных, это на очень старых его нет. Правда вот про самые последние ничего незнаю, но в них VBE3 а значит LFB будет. Зато с DPMI есть проблемы, которые не позволяют получить доступ к LFB и/или нижней памяти для работы с VESA, получения информации о режиме. Если это та библеотека о которой я думаю она будет работать коректно только в win 9x. valterg Можно, но не на всех виндах и ... Отсюда вывод хотите работать с LFB работайте в чистом досе.
Про то что LFB может не поддерживаться даже на VBE2 (что само посебе абсурдно, но факт) - это я знаю, но вот чтобы банки не работали - я по крайненй мере такого не встречал...
Pavia Я специально посмотрел. Переключение банков и выход в 32-протектед там точно такие же. Т.ч. должно работать в ntvdm Если конечно не подключать DPMI из Борланда.