|
|
| Посл.отвђт | Сообщен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 |