PCI BIOS

Тема в разделе "WASM.OS.DEVEL", создана пользователем XshStasX, 19 апр 2011.

  1. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Проблема вот в чем функция PCI BIOS 0B102h возвращает всегда (Function not support) ah=86h
    уже перепробывал несколько классов в том числе и клавиатуру(00090000h) он ведь то есть.. а результат один(.
    Код (Text):
    1. .386   
    2.         mov ecx,00090000h;00090300h  ; Scanner Controller
    3. .286   
    4.        xor si,si   
    5. @@loop:
    6.        
    7.         mov ax,0B102h
    8.         int 1ah
    9.         jc @@PCI_ERROR
    10.         test ah,ah
    11.         jnz @@PCI_ERROR
    12.        
    13.         push si
    14.             call GetScanerInfo
    15.         pop si
    16.         inc si
    17. jnz     @@loop
    код тестирую в real-mode режиме процессора.
     
  2. Tronix

    Tronix Member

    Публикаций:
    0
    Регистрация:
    10 сен 2010
    Сообщения:
    122
    На живом железе или какая-нибудь недо-виртуалка типа dosbox? Если последнее, то афторы вполне могут и забить на такие неведомые для досовых игрух в 90-94 гг функции.
    Плюс, надо больше золота кода.
     
  3. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    живое железо.
    вот больше кода:
    Код (Text):
    1.        
    2.         mov ax,0B101h
    3.         int 1Ah
    4. jc @@PCI_BIOS_NOT_FOUND
    5.         cmp dx,'PC'
    6. jnz @@PCI_BIOS_NOT_FOUND
    7.  
    8. .386   
    9.         mov ecx,00090000h;00090300h  ; Scanner Controller
    10. .286   
    11.        xor si,si   
    12. @@loop:
    13.        
    14.         mov ax,0B102h
    15.         int 1ah
    16.         jc @@PCI_ERROR
    17.         test ah,ah
    18.         jnz @@PCI_ERROR
    19.        
    20.         push si
    21.             call GetScanerInfo
    22.         pop si
    23.         inc si
    24. jnz     @@loop
    к теме прикрепил весь код.
     
  4. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    XshStasX
    Если вам не нужно генерировать какие-нибудь специальные циклы, то
    почему бы не взаимодействовать с конф. пространством PCI напрямую?

    https://wasm.ru/article.php?article=hardzen
    См. Устройства PCI.
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    XshStasX
    Читай описание внимательнее.
    http://ru.osdev.wikia.com/wiki/PCI_BIOS

    У вас 3 ошибки как минимум
    1)
    ah=86 это устройство не найдено.
    2) mov ax,0B102h ищет не по классу, а по
    CX ID устройства/Device ID (0...65535)
    DX ID поставщика/Vendor ID (0...65534)

    3) mov ecx,00090000h; явно больше 65535
    4) С чего вы взяли что этот класс у вас есть? Обычная клавиатура весит на контроллере 8042 который располагается на шине ISA (нынешняя LPC). И к PCI не имеет отношения.
     
  6. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    Pavia

    Опечатка там 0B103h

    Еще вопрос как определить отноститься устройство к PCI или нет?
     
  7. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    XshStasX
    Первый вариант. Из спецификаций на компьютер.

    Второй вариант разработать сканер который получит список всех устройств.
    К примеру он может быть таким вначале сканируем основные устройства. Находим некоторые "мосты" между шинами и сканируем уже эти шины и так далее.
    Ближе к практике. Вначале основные шины PCI, и PnP BIOS. Затем в зависимости от того что нашли сканируем USB, IDE, SCSI.


    Сканер PCI я бы сделал так. Нашел структуру PIR считал от туда максимальное число шин. Потом перебирал бы все шины и устройства по порядку. Если устройство содержит несколько функциональных устройств. То перебирал бы и функции на конкретном устройстве.

    PnP BIOS делает тоже просто. Находишь точку входа и перебираешь все структуры.
     
  8. MisHel64

    MisHel64 Member

    Публикаций:
    0
    Регистрация:
    9 мар 2011
    Сообщения:
    182
    Кстати, а какой философский смысл ты вкладываешь вот в эти инструкции?
    .386
    mov ecx,00090000h;00090300h ; Scanner Controller
    .286
    xor si,si
     
  9. XshStasX

    XshStasX New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2008
    Сообщения:
    991
    MisHel64
    а ты попробуй в тасм 5.0 написать
    и собрать сом файл:)
     
  10. MisHel64

    MisHel64 Member

    Публикаций:
    0
    Регистрация:
    9 мар 2011
    Сообщения:
    182
    XshStasX
    В легкую. Я вообще v3.2 пользуюсь.
    Пробовал на 5 тасме. Нормально собираются COM файлы.
     
  11. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    XshStasX
    Еще можно глянуть, как Линукс сканирует. По исходникам.