Проблеммы с hdd в протектеде

Тема в разделе "WASM.ASSEMBLER", создана пользователем tylerdurden, 16 сен 2004.

  1. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Привет всем. Вообщем, пишу свою собственную ос (как ново :) так вот, нужно написать загрузчик PE файлов, написал... для начала\проверки под реальный... вставляю этот код в свою os.am (protected 32b) (понятно с изменением регистров и пр....) не читает... хмм... отрубаю прерывания cli (и добовляю в начале ресет винта (чего в реальном режиме не делал))... читает бутсектор, больше ничего (второй\третий\пр. раз\разы в смысле ничего не читает)... что за бред ? смотрю где зависает (у меня в ОСь встроенная поддержка GDB удаленной отладки)... оказывается что тут:
    Код (Text):
    1.  
    2. ;disable hdd interrupts
    3.  mov edx,hddPort+206h
    4.  mov al,2
    5.  out dx,al
    6. ;wait for bsy=1
    7.  mov edx,hddPort+7
    8.  .wait:
    9.   in al,dx
    10.   test al,80h
    11.  jnz .wait ;<- виснет тут !
    12.  


    Поясните плиз ! Все прерывания 8e00h (типа "ловушка") но это и не важно, ведь я их отрубаю через APIC/Hdd port 3f6h...
     
  2. ava

    ava New Member

    Публикаций:
    0
    Регистрация:
    11 окт 2003
    Сообщения:
    169
    Я, конечно, не специалист, но у меня возникло смутное подозрение, что контроллер просто хочет сказать тебе что-то важное, а ты ему рот затыкаешь :) Хорошо бы проверить другие флаги регистра состояния.
     
  3. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    ...под реальный режим та-же прога работает на ура... вопрос : whatta **** ?!
     
  4. Chingachguk

    Chingachguk New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    340
    Не обращай особого внимания на мои слова, но у меня была похожая ситуация, когда код работы с винтом, работающий в дос, перестал работать в вин, так как тама, естественно, запрещена работа прикладного приложения с портами жд. Посмотри карту i/o или что-то в этом роде.
     
  5. tylerdurden

    tylerdurden New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2004
    Сообщения:
    322
    Спасибо всем ;) я уже разобрался, в очередной раз подвела конченная дока по контроллеру прерываний (не в тот порт отсылал EOI)... Однако запретить прерывания от винта я так и не смог (ни через APIC ни через hdd порт 3f6h...) вот гон....