Со своим или чужим, готовым, контроллером Вы рано или поздно получите место для хранения программ, но откуда их первоначально загружать?
Как-то думал об этом. На шилде разъемов есть USB, и вполне возможно подключить туда флешку с обычным загрузочным диском. Я в свое время почти досконально изучил, как работает загрузка из MBR, как устроены разделы и особенно FAT12/16/32 (там совсем ничего сложного, кроме разве что слегка запутанных "длинных имен") и писал загрузчик для собственной (защищенного режима) ОС, но мне не хватило, опять-таки, мотивации для завершения ОС.
Предполагаю сделать так, что не писать в железе контроллер USB, а написать только некоторый простой приемо-передатчик, который переводит сигналы в пакеты, а разбираться с этим дать загрузчику в ПЗУ, который и будет по сути BIOS, поддерживающий flash память. То есть как-то так... но до этого, конечно, очень далеко еще. Предстоит много работы по самому "железу".
Задача MBR - загрузить с определённого сектора файл IO.SYS (его положение чётко задано на диске, это неперемещаемый файл)
Ну это да, хотя насчет четкого размещения не очень уверен... с одной стороны, загружать из FAT не так уж и сложно, знаю по своему коду загрузчика... Я знаю, что загрузчик для Linux содержится сразу же после boot-sector, там да, жестко привязано.
В итоге кстати придется реализовать железо напрямую, а коды обработки int 10h, 13h, 16h придется брать из BIOS, скорее всего. Ну либо написать микро-версию от BIOS. Да... представляю, сколько это будет работы :) Насчет microsd, не знаю, т.к. хочется использовать шилд, а там уже все "забито" разъемами по ps/2, usb и т.д.
p.s. В данный момент прогресс моей работы только в том, что я научился считывать инструкцию, и обрабатывать инструкции АЛУ (которые находятся в диапазоне маски опкода 00xxx0xx) и записывать результат в регистр, в память еще не сделал.