VESA в защищенном режиме

Тема в разделе "WASM.ASSEMBLER", создана пользователем Aloner, 11 апр 2008.

  1. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Aloner
    У Борланда есть свой расширитель. Я программированием с расширителями не занимался,
    т.ч. ничего подсказать не могу. Только по-моему во времена Висты твои занятия пахнут плесенью :)
     
  2. Aloner

    Aloner New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2008
    Сообщения:
    96
    valterg
    ))
    Если так рассуждать, то можно докатится до того что программирование в асме тоже попахивает... ))
    Ты кстати мож сказать, код который я выложил после перехода в защищенный режим является 32 битным?
    (я код перехода из Зубкова в наглую скатал) а так как в асме недавно, то сомнения берут
     
  3. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Aloner
    Все кто призывают программить на ассемблере, используют макросы, API и кучу библиотек.
    И не скрывают это. Начиная с нуля на асме программить - это мазохизм страшный.
    Все что ты хочешь сделать с графикой наверняка уже реализовано. Найди и используй.
    ==========================
    Если я правильно понял, у тебя там один сегмент для 16-битного режима и
    в конце идет переход в 32-битный режим. Ну далее я ничего сказать не могу
    - остальное я и в теории не все знаю.
    В одном уверен точно: видео-буфер в 32-битном режиме находится никак не по адресу A0000
    Он точно за 2 Гбайтами, возможно там маппинг есть на A0000000, но в ntvdm он
    почему-то немного в другом месте. Да и для высоких видеорежимов просто места не хватит
    между A0000 и B8000.
     
  4. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    А переключение банков видеопамяти просто так что-ли придумали? ;)
     
  5. Aloner

    Aloner New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2008
    Сообщения:
    96
    valterg
    Дык ты говоришь насчет видео-буфера (LFB), а я его и не юзаю. Я через DPMI выделяю селектор для видео-памяти ,то есть :
    ;get selector for Video
    mov ax,02h
    mov bx,0A000h
    int 31h
    mov Sel_Video,ax
    а потом работаю как с 64 кб сегментом, как заметил cppasm, с помощью окон.
     
  6. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    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-бит режим. Поправьте, если я ошибаюсь.
    Я подозреваю, что второй переход не выполняется или прога работает не так, как задумано.
     
  7. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Как говорил Ося Бендер - это была блестящая комбинация (Мои мучения с DPMI).
    Наврано в функции переключения банков - пойнтеры там приводят к глубокому зависанию... даже под скромным юзером.
    mov dword ptr fs:num,eax и

    mov ecx,dword ptr 32768

    а надо mov fs:num,eax и mov ecx,32768
    либо скобки квадратные нарисовать в первом случае.
    ===========================
    Я проверил только переключение банков : писал два раза в видео-буфер в разные банки.
     
  8. Aloner

    Aloner New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2008
    Сообщения:
    96
    valterg
    Огромнейшее спасибо за ответы и неугасающий интерес к теме)))))) !!!
    Долго не отвечал - учеба замучала :))
    По поводу:
    1) запускать планирую под ДОС,Дос-Окно
    2)TASM 5
    3)Расширитель...хм либо из Борланда, либо который в режиме Дос-окна Винда предаставляет
    За ссылку на Паскалевскую страницу тож спасибо, нашел много че хорошего.
     
  9. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Aloner
    В ДОС-окне в Виндах никакого расширителя не нужно(работает Виндовый). Пытался другие прикрутуть или использовать rtmres.exe - пусто на экране. В 98-м под VirtualPC тоже работает.
    Использовал tasm и tlink из Борланд Паскаля 7 - там нет ключа /Tx, хотя и есть запускалка :-(
    С буфером я не проверял - возможно там с памятью лажа будет. Я напрямую в видео-буфер писал и переключал банки (0,1,7).
    Напрягся с разбором, т.к. давно уже хотел пощупать протектед моде, а еще была неудача, когда
    VBE3 пытался запустить - все сделал правильно, но не сработало. Хотел через I2C в настройки дисплея залезть.
     
  10. Aloner

    Aloner New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2008
    Сообщения:
    96
    valterg
    Кстати о переключения банков...
    Я когда с VESA разбирался, прочитал что VESA BIOS хранится указатель на процедуру альтернативного переключения банков, которя быстрее работает. Ты случаем ее не юзал (в реальном режиме)?
     
  11. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Aloner
    Я свято верю в истину "переключение банков зло" - пользуйтесь flat-моделью. При наличии нескольких развитых пакетов для разработки игр изучение на низком уровне вывода графики считаю ненужной тратой времени.
     
  12. Exp10der

    Exp10der Мастер дзена

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    337
    Адрес:
    Красноярск
    Кстати насчёт AGP видюх... ниукого нет толковой доки по работе с ускорителем в защищённом режиме? Сорри за офф-топ...
     
  13. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Exp10der
    Если работа с обычными функциями хоть как-то документирована, то работа с ускорителем - это недокументированные функции нижнего урованя для поддержки OpenGl и DirectX. Возможно что есть какие-то функции разработчиков. И что - ты хочешь убить всю свою жизнь в попытках написать несовместимый движок, который в 2-3 раза будет быстрее. Флаг в руки, но по-моему это величайшая глупость. Если уж хочется этим заняться - пробивайся в AMD(группу ATI) или в NVidia. Только там сможешь этим продуктивно заниматься.
    Либо путь проверенный буржуями на оптимальность - работа в стандарте, т.е. OpenGL или DirectX.
     
  14. Aloner

    Aloner New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2008
    Сообщения:
    96
    valterg
    Я не спорю что переключение банков медленее, но пока я не могу работать с LFB. И тем более отнюдь не все более менее современные карты имеют LFB...
     
  15. Aloner

    Aloner New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2008
    Сообщения:
    96
    valterg
    Я не спорю что переключение банков медленее, но пока я не могу работать с LFB. И тем более отнюдь не все более менее современные карты имеют LFB...
     
  16. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Aloner
    Я давал библиотеку на Паскале(асм вставки). Там вроде написано : VESA 1.2 2.0 и LFB.
    Может все-таки можно. Просмотри код внимательней ? Мне всегда казалось, что AGP предполагает наличие LFB.
     
  17. Aloner

    Aloner New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2008
    Сообщения:
    96
    Короче, замучался я с этим защищеным режимом, как нить с ним потом разберусь, а пока решил юзать связку Real mode+XMS/EMS. С ними у меня проблем не возникает.
     
  18. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Aloner
    Банки есть везде, хотя могут и не работать. =(
    LFB есть почти везде особенно на современных, это на очень старых его нет. Правда вот про самые последние ничего незнаю, но в них VBE3 а значит LFB будет.

    Зато с DPMI есть проблемы, которые не позволяют получить доступ к LFB и/или нижней памяти для работы с VESA, получения информации о режиме.

    Если это та библеотека о которой я думаю она будет работать коректно только в win 9x.

    valterg
    Можно, но не на всех виндах и ...

    Отсюда вывод хотите работать с LFB работайте в чистом досе.
     
  19. Aloner

    Aloner New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2008
    Сообщения:
    96
    Про то что LFB может не поддерживаться даже на VBE2 (что само посебе абсурдно, но факт) - это я знаю, но вот чтобы банки не работали - я по крайненй мере такого не встречал...
     
  20. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Pavia
    Я специально посмотрел. Переключение банков и выход в 32-протектед там точно такие же.
    Т.ч. должно работать в ntvdm Если конечно не подключать DPMI из Борланда.