нет эмуляции загрузки ОС

Я работаю над загрузкой ОС без эмуляции , как вы знаете, при загрузке без эмуляции загрузочным образом может быть любой исполняемый двоичный код (реального режима).

я использую 2-этапный загрузчик для своей ОС, сначала я загружаю первый этап, проблема, с которой я сталкиваюсь, находится на втором этапе. Когда загрузчик пытается загрузить образ ОС, ему нужен номер устройства привода CD / DVD, чтобы сделать BIOS звонки

Вопрос: какой номер устройства я должен использовать?

Я пробовал 0x81 (первый ведомый IDE) и 0x82 (второй главный IDE) на одном компьютере работает, на другом нет


person jason vlomp    schedule 24.08.2018    source источник
comment
@PeterCordes Не могли бы вы рассказать немного подробнее, пожалуйста?   -  person jason vlomp    schedule 24.08.2018
comment
Я не знаю навскидку. Но если вы выполните поиск на wiki.osdev.org, вы должны что-то найти. (Или, возможно, один из ответов @MichaelPetch здесь, на SO.) Или посмотрите соответствующую боковую панель; есть вопрос с регистром дл и номером диска в заголовке.   -  person Peter Cordes    schedule 24.08.2018
comment
В режиме без эмуляции ваш загрузчик может запросить загрузочный диск с помощью INT 13H AH=4Bh, AL =1   -  person Michael Petch    schedule 24.08.2018


Ответы (1)


Протокол El Torito (стандарт CD-ROM) утверждает только, что BIOS должен эмулировать диск CD/DVD произвольным номером устройства.

Разные BIOS могут иметь разные номера дисков.

когда BIOS вызывает загрузчик, он также передает номер эмулируемого диска в регистр DL процессора.

Загрузчик должен поймать номер диска и использовать его для вызовов BIOS.

а в остальном похоже на эмуляцию загрузки

person zerocool    schedule 24.08.2018