Вообще может ты и прав насчет версии 1.98. Приведенный ниже код оставляет без изменений соответствующие переменные при значении номера раздела в формате Multiboot Spec. 0xFF. Я видимо ориентировался на исходные значения этих переменных в исходниках, а ты на значения, устанавливаемые инсталлятором, что наверное более правильно, хотя мой вариант тоже работает. Это точно, что инсталлятор записывает в переменные именно 0x000000FF (как я понимаю, речь естественно идет о цельном загрузочном устройстве)?
Код:
multiboot_trampoline:
/* fill the boot information */
movl %edx, %eax
shrl $8, %eax
xorl %ebx, %ebx
cmpb $0xFF, %ah
je 1f
movb %ah, %bl
movl %ebx, EXT_C(grub_install_dos_part)
1:
cmpb $0xFF, %al
je 2f
movb %al, %bl
movl %ebx, EXT_C(grub_install_bsd_part)
2:
shrl $24, %edx
movb $0xFF, %dh
/* enter the usual booting */
call prot_to_real
Кстати команда mov dh,0FFh какая-то "мутная". Помню, я долго не мог понять, где далее используется это значение dh. В итоге так и не нашел, но на всякий случай вписал такую же команду в мой адаптационный код и прокомментировал: "я не знаю, что это значит"
Только сейчас в браузере заметил, что она даже оформлена иначе. Видать, какой-то специалист тоже ее вписал на всякий случай