BIOS может не обеспечить прямой доступ к дисководам компакт-дисков через int 13h, напрямую с дискетами и жесткими дисками всегда можно получить доступ через int 13h. Если вы загружаетесь с компакт-диска (если ваш BIOS поддерживает это), вы можете использовать int 13h для доступа к компакт-диску, но тогда единственный вариант, который гарантированно будет работать, - это режим эмуляции, в котором вы будете иметь доступ не ко всему компакт-диску , но загрузочный образ, как если бы это был FDD или HDD (в этом случае BIOS обычно назначает номер диска 0 или 80h эмулируемому диску AKA A:
и C:
). Здесь обсуждается эта проблема здесь .
Возможно, вам понадобится написать драйвер CD для чтения данных с него напрямую через порты ввода / вывода.
Что касается ISO9660, вам нужно прочитать Directory entry for the root directory
с Primary Volume Descriptor
(что по смещению 156). Тогда вас интересуют Location of extent (LBA)
(смещение 2) и Data length (size of extent)
(смещение 10) от Directory entry for the root directory
. Они сообщают вам, где находятся данные каталога (список файлов / каталогов) и насколько они велики.
Этот список является в основном списком тех же самых записей каталога, которые имеют переменную длину (из-за переменной длины файла / имени каталога и заполнения). Когда вы читаете его, вам нужно просмотреть File flags
каждой записи, чтобы определить, является ли это файл или каталог. Если это каталог, и вы хотите получить к нему доступ, вы повторяете всю процедуру рекурсивно. Если это файл, Location of extent (LBA)
(смещение 2) и Data length (size of extent)
(смещение 10) сообщают вам, где он находится и насколько он велик.
Надеюсь, я не испортил это, так как у меня нет под рукой старого кода CD.
О, и имейте в виду, выше приведено очень упрощенное описание того, как вам следует читать CD, большинство CD, но не все. FS является излишне общим и сложным, и в нем много функций и опций, которые затрудняют его правильное чтение в любых ситуациях.
Я предлагаю вам получить несколько .iso
файлов, шестнадцатеричный редактор и калькулятор, перепроверить логику и лучше ознакомиться с файловой системой.