LFB

Тема в разделе "WASM.ASSEMBLER", создана пользователем valeri, 16 июн 2006.

Статус темы:
Закрыта.
  1. valeri

    valeri New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2005
    Сообщения:
    59
    Адрес:
    Russia
    У меня такея проблема. При установке VESA режимов, хочу осуществлять вывод на экран через LFB, но в структуре характеристик видеорежима в поле PhysBasePtr - физический адрес LFB стоит 0. Что это означает, что LFB доступен по адресам начиная с 0, скорее всего это не так, так в чем же здесь дело???
     
  2. NoName

    NoName New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2004
    Сообщения:
    1.229
    Вроде не все карточки LFB поддерживают.
     
  3. valeri

    valeri New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2005
    Сообщения:
    59
    Адрес:
    Russia
    Эта точно поддерживает. В соответствующем поле, бит, отвечающий за поддержку LFB, установлен.
     
  4. Smile

    Smile New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2004
    Сообщения:
    129
    valeri

    А в какой среде работаете, может неправильно карта инициализируется, как-то под линукс использовал FrameBuffer там нужен был драйвер.
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    valeri

    Проверь код. Если в коде нет ошибок. То могу посоветовать определить, тот же адресс через PCI.

    Архитектура 32Битная? А виндоус какой адресс показывает?
     
  6. valeri

    valeri New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2005
    Сообщения:
    59
    Адрес:
    Russia
    Архитектура 32-битная, а как через PCI? Windows показывает EE000000h.
     
  7. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    valeri

    Ты из защищенного режима этот адрес пытаешся получить? Может чуток кода представишь публике?
     
  8. valeri

    valeri New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2005
    Сообщения:
    59
    Адрес:
    Russia
    Вот код:


    Код (Text):
    1.  
    2. mov ax,0
    3. mov es,ax
    4.  
    5. mov ax,4f01h
    6. mov di,500h
    7. mov cx,140h
    8. int 10h
    9.  
    10. mov ax,4f02h
    11. mov bx,4140h
    12. int 10h
    13.  
    14. ... ;переход в защищенный режим
    15.  
    16. mov esi,500h
    17. mov eax,dword ptr [esi+28h] ;еах содержит 0!!!
    18. ...
    19.  




    Кстати, если обращаться по адресу EE000000h все работает, но хотелось бы узнать, в чем все-таки дело.
     
  9. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    valeri

    Ошибка в адрессации. У тебя при старте программы регистр DS имеет некоторое значение.

    После вызова прерывания

    mov ax,4f01h

    mov di,500h

    mov cx,140h

    int 10h

    данные помещаются по адрессу DS:lol: I. Линейный адресс для LFB будет такой DS*16+500h+28h, а читаешь ты данные по адрессу 500h+28h
     
  10. valeri

    valeri New Member

    Публикаций:
    0
    Регистрация:
    3 июн 2005
    Сообщения:
    59
    Адрес:
    Russia
    Точно! Все работает. Огромное спасибо!
     
Статус темы:
Закрыта.