Написал вчера mkisofs.inc для того, чтобы делать ISO-образы fasm'ом. С таблицами путей пришлось немного повозиться. В итоге сделал предварительное резервирование пространства для таблиц. Есть идея использовать двойной рекурсивный обход структуры каталогов, но тогда таблицы путей придется размещать в конце тома. Обычно так не делают. Код (Text): include "cdrom/mkisofs.inc" format binary as "iso" maxptsize equ 2048 ; this line may be erased rb 16*2048 ; system area primvd bootrec termvd bootcat lpt mpt defdir root { dent bootfs,"BOOT.FS",FA_DEF dent bootos,"BOOT.OS",FA_DEF } stof boot,"cdrom/bootcode.bin" stod root,root stof bootos,"boot.os" stof bootfs,"boot.fs" times 600*2048-$ db 0 ; keep this line while image is too small label size label ptsize at ptdisp У меня возникла пара вопросов. Во-первых, почему Nero делает даже минимальные образы размером около 1 Мб? Во-вторых, почему Nero для файлов нулевого размера сохраняет в качестве номера начального сектора его экстента номер "текущей" позиции (а не ноль, скажем)?
Короче, вместо обхода структуры каталогов я нашел более простой вариант. Использовать уже сформированные фрагменты таблиц. Дело в том, что в таблицах путей описания каталогов хранятся по уровням вложенности, т.е. описания всех каталогов одного уровня находятся в смежных записях таблиц, т.е. фактически в одном непрерывном списке, причем разбиты на группы в зависимости от того, какой каталог для данной группы каталогов является родительским. Писать в таблицы буду также, как это происходит в текущей версии - в зарезервированную область, но уже не отдельными записями внутри макроса dent, а целиком в макросе, размещенном в конце тома. Теперь что касается моих вопросов. Как оказалось, Nero может успешно писать минимальные образы, но только в режиме Disk at Once/96. Чем по сути отличается этот режим от просто Disk at Once, я не знаю.