Вопрос по работе с ЖД через порты

Тема в разделе "WASM.BEGINNERS", создана пользователем fireman, 9 сен 2011.

  1. fireman

    fireman New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2008
    Сообщения:
    39
    Меня интересует такой аспект алгоритма чтения через порты нескольких секторов.
    Везде в примерах показано как читать один сектор ф-ции 20/24, а как читать несколько секторов этими функциями?

    Т.е. после каждого принятого сектора необходимо проверять регистр статуса на DRQ=1 и Err?

    Вот так?:

    next:
    ...
    mov cx,128
    rep insd
    mov dx,1F7h
    in al,dx
    test al,Err
    jnz ATA_ERROR
    test al,DRQ
    Jnz next
    ...
     
  2. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    fireman
    http://wiki.osdev.org/ATA_PIO_Mode
    Читаем разбираемся. Там и пример есть.
     
  3. fireman

    fireman New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2008
    Сообщения:
    39
    Pavia
    Спасибо! Так и думал, после принятия очередного сектора проверяем флаги на готовность данных или ошибку!!!!

    Созрел еще вопрос, в принципе я читал, что базой для статусных регистров режима легаси АТА являются 3F4/374 + 2
    также нужно работать и с другими базами?
    Т.е. у меня база BAR2 = B800, т.е. Статусный нужно читать B802? Я правильно понял?
     
  4. Pavia

    Pavia Well-Known Member

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