Пара вопросов по VESA

Тема в разделе "WASM.ASSEMBLER", создана пользователем Pyromaniac, 20 дек 2006.

  1. Pyromaniac

    Pyromaniac New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    9
    Помогите неофиту :)

    Вопрос одын: Можно ли работать с VESA ТОЛЬКО через порты БЕЗ прерываний VBE?
    Если можно, то ткните носом в мануал какой-нибудь (честно искал - ничего не нашел)

    Вопрос два (теоретический): В VESA 2.0 есть такая цацка - можно получить точки входа для функций рабочих в PM. Так вот у кого какие мнения, что будет если их попытаться повызывать из 64 Long Mode (не Compatibility).

    Помогите, люди добрые.
     
  2. 10110111

    10110111 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2006
    Сообщения:
    319
    Адрес:
    Санкт-Петербург
    VBE разрабатывался как интерфейс для совершенно несовместимых (в смысле, не обязательно VGA) видеокарт SVGA, поэтому нет стандартизированных портов для таких карт. Можно попытаться поискать исходники драйверов для осей типа Linux, или дизассемблить дрова Винды, но второй вариант достаточно трудоёмок: обычно такие драйверы содержат десятки файлов.
    Насчёт 64 Long Mode - сомневаюсь, что что-то хорошее выйдет, этот режим я не особо знаю, но по-моему, там некоторые опкоды имеют совершенно другое значение. Но можно просто попытаться - никто ведь не запрещал:)
     
  3. Pyromaniac

    Pyromaniac New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    9
    Эээх, досадно :dntknw: Ибо в режим совместимости тоже не очень то хочется спускаться для вызова прерываний VBE.

    P.S. А ведь как-то этот VBE работает с целой стопкой разного железа... Достать бы исходники с комментариями :)
     
  4. Pyromaniac

    Pyromaniac New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    9
    Люди добрые, ткните нуба носом в какой-нибудь ДОКУМЕНТИРОВАННЫЙ исходник драйвера для GeForce по PCI-E.

    Интим не предлагать :)
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Pyromaniac
    Каждая видео карта снобжается своим биусом. Вот в нем и зашит код для VBE, таким образом у каждой видео карты он свой. Разумеется ни о каких портах и речи быть не может, как уже написал 10110111. Стандар был призван обобщить различные реализации SVGA.
    Не уверен насчет Long Mode, но помойму работать не будет.

    Насчет исходник драйверов http://cvsweb.xfree86.org/cvsweb/xc/programs/Xserver/hw/xfree86
     
  6. _SaNitAr

    _SaNitAr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    68
    исчи книжко Программирование SVGA графики, Павел Соколенко.
    но зачем скажи на милость тибе это?
     
  7. Pyromaniac

    Pyromaniac New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    9
    Pavia
    Спасибо огромное за ссылку! Да, с портами я и вправду загнул.

    _SaNitAr
    Эээ... Да у меня самого таких книг навалом - только толку-то? Я и без этих книг могу SVGA через DPMI или RM прогать. По крайней мере не видел ни одной книги где с SVGA работали иначе. У меня специфика - чистый Long Mode без ничего.

    А для чего все это надо? А для зарядки мозгов ну и "джой" вообще. Вот ты, например, зачем на асме прогаешь? Только не надо про быстродействие и размер бинарников - это не так уж и важно. Главное - состояние души (дзен там..., "...я знаю кун-фу..." и пр.:)

    2All
    BTW что скажете об этом? Просто интересно ваше мнение

    Код (Text):
    1. #define VBE_DISPI_IOPORT_INDEX 0x01CE
    2. #define VBE_DISPI_IOPORT_DATA  0x01CF
    3. #define VBE_DISPI_INDEX_ID              0x0
    4. #define VBE_DISPI_INDEX_XRES            0x1
    5. #define VBE_DISPI_INDEX_YRES            0x2
    6. #define VBE_DISPI_INDEX_BPP             0x3
    7. #define VBE_DISPI_INDEX_ENABLE          0x4
    8. #define VBE_DISPI_INDEX_BANK            0x5
    9. #define VBE_DISPI_INDEX_VIRT_WIDTH      0x6
    10. #define VBE_DISPI_INDEX_VIRT_HEIGHT     0x7
    11. #define VBE_DISPI_INDEX_X_OFFSET        0x8
    12. #define VBE_DISPI_INDEX_Y_OFFSET        0x9
    13.  
    14. #define VBE_DISPI_DISABLED              0x00
    15. #define VBE_DISPI_ENABLED               0x01
    16. #define VBE_DISPI_GETCAPS               0x02
    17. #define VBE_DISPI_8BIT_DAC              0x20
    18. #define VBE_DISPI_LFB_ENABLED           0x40
    19. #define VBE_DISPI_NOCLEARMEM            0x80
    20.  
    21. void vbe_write(USHORT index, USHORT value)
    22. {
    23.    WRITE_PORT_USHORT(VBE_DISPI_IOPORT_INDEX, index);
    24.    WRITE_PORT_USHORT(VBE_DISPI_IOPORT_DATA, value);
    25. }
    26.  
    27.  
    28. void vbe_set(USHORT xres, USHORT yres, USHORT bpp)
    29. {
    30.    vbe_write(VBE_DISPI_INDEX_ENABLE, VBE_DISPI_DISABLED);
    31.    vbe_write(VBE_DISPI_INDEX_XRES, xres);
    32.    vbe_write(VBE_DISPI_INDEX_YRES, yres);
    33.    vbe_write(VBE_DISPI_INDEX_BPP, bpp);
    34.    vbe_write(VBE_DISPI_INDEX_ENABLE, VBE_DISPI_ENABLED | VBE_DISPI_LFB_ENABLED);  
    35. }
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    Pyromaniac
    Этот код будет работать только под эмулятором Boths.
     
  9. _SaNitAr

    _SaNitAr New Member

    Публикаций:
    0
    Регистрация:
    8 ноя 2006
    Сообщения:
    68
    Pyromaniac
    me\чешет репу..." да дзен есть"
    http://www.google.ru/search?hl=ru&q=open+source+driver+svga+video+windows+xp&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA+%D0%B2+Google&lr=
    такой замечательный проект опен соурс
     
  10. Pyromaniac

    Pyromaniac New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    9
    Pavia
    Угу, понял. Были у меня такие подозрения...

    _SaNitAr
    Не понял, к чему это