· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› Проблеммы с hdd в протектеде

Посл.отвђт Сообщенiе


Дата: Сен 16, 2004 13:19:40

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

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


Дата: Сен 16, 2004 21:54:25

Я, конечно, не специалист, но у меня возникло смутное подозрение, что контроллер просто хочет сказать тебе что-то важное, а ты ему рот затыкаешь :) Хорошо бы проверить другие флаги регистра состояния.


Дата: Сен 16, 2004 22:39:57

...под реальный режим та-же прога работает на ура... вопрос : whatta **** ?!


Дата: Сен 17, 2004 15:18:02

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


Дата: Сен 17, 2004 17:26:21

Спасибо всем ;) я уже разобрался, в очередной раз подвела конченная дока по контроллеру прерываний (не в тот порт отсылал EOI)... Однако запретить прерывания от винта я так и не смог (ни через APIC ни через hdd порт 3f6h...) вот гон....


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.071