Прерывания

Тема в разделе "WASM.OS.DEVEL", создана пользователем drem1lin, 31 окт 2010.

  1. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    Здравствуйте, мне необходимо разработать программу работающую с видеокартой. Для работы с ней в Досе используется Int 10h. Сществует ли способ вызвать его из под винды или какой-нибудь его аналог?
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    Это сервис биос. А для работы с видео картой используются порты вв. Т.к. винда является многозадачной ос, и призвана скрывать специфику работы различного оборудования от прикладных программ (работа напрямую с различными моделями видео карт может существенно разниться), то и достучаться до портов вв можно только с уровня ос (или поставить драйвер это разрешающий, но это уже, как говориться, на свой страх и риск). Без достаточных навыков туда лучше не соваться. Шаг сторону будет расценен железом за попытку побега, прыжок на месте - попыткой взлететь, а финт ушами свернет шею.
    Аналогом int 10h под винду можно считать gdi32. В вашем случае они будут выполнять одни и теже функции.
     
  3. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    Это все я в принципе знаю, думал есть и интерфейс какой-нибудь на уровне ядра. gdi32.dll надо будет посмотреть.
     
  4. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    Нету такого интерфейса. В 32-разрядных ОС есть эмуляция ДОСа и ряда функций БИОСа для выполнения старых 16-разрядных программ, но не более того.
     
  5. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    Плохо, простто int 10h управляет шиной DDC, в винде есть какой то способ точно, а какой не знаю. Просто у меня есть библиотека, она делает то же самое что и прерывание, а как я понять не могу
     
  6. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    В WinXP в ядре есть костыль для обращения к INT 10h (как раз для этой цели, насколько помню), в Висле его полностью упразднили. Но по-любому он был доступен только драйверам.
     
  7. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    drem1lin
    А что за фишку вы хотите реализовать управляя данной шиной напрямую. По моему это лишнее. Винда полностью покрывает все необходимые возможности. Поищите как это реализовать под нее но без привязки к железу. Например стоит спросить не "С помощью каких портов видео контроллера переключить разрешение экрана", а "Как под Виндой переключить разрешение экрана". И вместо последовательности записей в порты найдете структуры и последовательности вызовов функций. А Винда и ее драйвера уже сами как-нибудь разберутся с железом.

    Вопрос в том, что именно вы хотите сотворить и возможно ли это сделать средствами винды. И если винда это не потянет, то вам придется дописывать это самому, ручками, драйвером.
     
  8. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.549
    Адрес:
    Russia
  9. baldr

    baldr New Member

    Публикаций:
    0
    Регистрация:
    29 апр 2010
    Сообщения:
    327
    Но ведь работает! По меньшей мере мне нонче список режимов на две страницы накатало VBE 2.0 из-под NTVDM.

    Хотя по сути — верно. Либо лезть в порты видеоконтроллера, либо ой.
     
  10. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    А как лезть в порты видеоконтроллера и где о них почитать?
     
  11. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    drem1lin
    как всегда in/ins и out/outs
     
  12. SII

    SII Воин против дзена

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    1.483
    Адрес:
    Подмосковье
    baldr
    Ну так это через эмулятор и есть. Потому и работает.
     
  13. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    Спасибо Кэп
     
  14. IceCrashLdr

    IceCrashLdr New Member

    Публикаций:
    0
    Регистрация:
    29 июн 2010
    Сообщения:
    193
    Пример: http://www.codeproject.com/kb/system/driverdev6asp.aspx
     
  15. shm

    shm New Member

    Публикаций:
    0
    Регистрация:
    18 сен 2010
    Сообщения:
    93
    эмуляция VGA - да, а прямое управление SVGA+ давно уже через MMIO
     
  16. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    V86. Юзаем напрямую Int 0x10.
     
  17. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    Что такое V86?
     
  18. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    drem1lin
    режим такой у проца. Эмуляция чистого 8086(80386 в реальном режиме)