Всем привет! Загружаюсь с флешки, которая эмулируется BIOS-ом как USB-HDD. Бутсектор читает еще несколько секторов с помощью функции 42h int 13h (Extended Read) и передает управление. Далее переключаюсь в защищенный режим. Теперь int 13h уже не работает, полагаю нужно читать через порты ввода/вывода. Как теперь узнать с какого устройства произошла загрузка? на начальном этапе в DL будет номер устройства, но теперь то нужно знать базовый порт. Этот вопрос частично решил используя функцию 48h (Get Device Parameters), до переключения в защищенный режим по номеру устройства можно опредлить I/O port base address и Control port address. С реальными HDD это работает. А с флешкой 48h возвращает либо 0, либо какой-то левый адрес, данные не читаются. http://ru.osdev.wikia.com/wiki/HDD Читать с PCI шины не пробовал. Будет ли там флешка? Например, программы Victoria, MHDD ее не видят, 48h я так думаю тоже берет информацию оттуда.
У флешки совсем другой интерфейс. См. документацию на UHCI/EHCI, а также описание интерфейса взаимодействия с соответствующим классом устройств.
Phantom_84 да не, это уж совсем в дебри лезть. Я так понимаю это нужно для доступа к флешке как к USB устройству. А при загрузке с нее BIOS эмулирует флешку как HDD. А как же grub, syslinux? Нереальный режим и int 13? А инсталлятор винды (XP), он же воспринимает флешку как HDD на текстовом этапе установки, правда после маyипуляций с грабом, а так обычно синий экран 7B, когда до выбора диска доходит ))