ISO 9660

Тема в разделе "WASM.OS.DEVEL", создана пользователем Phantom_84, 15 авг 2010.

  1. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Написал вчера mkisofs.inc для того, чтобы делать ISO-образы fasm'ом. С таблицами путей пришлось немного повозиться. В итоге сделал предварительное резервирование пространства для таблиц. Есть идея использовать двойной рекурсивный обход структуры каталогов, но тогда таблицы путей придется размещать в конце тома. Обычно так не делают.

    Код (Text):
    1. include "cdrom/mkisofs.inc"
    2.  
    3. format binary as "iso"
    4.  
    5. maxptsize equ 2048 ; this line may be erased
    6.  
    7. rb 16*2048 ; system area
    8. primvd
    9. bootrec
    10. termvd
    11. bootcat
    12. lpt
    13. mpt
    14.  
    15. defdir root
    16. {
    17. dent bootfs,"BOOT.FS",FA_DEF
    18. dent bootos,"BOOT.OS",FA_DEF
    19. }
    20.  
    21. stof boot,"cdrom/bootcode.bin"
    22. stod root,root
    23. stof bootos,"boot.os"
    24. stof bootfs,"boot.fs"
    25.  
    26. times 600*2048-$ db 0 ; keep this line while image is too small
    27.  
    28. label size
    29. label ptsize at ptdisp
    У меня возникла пара вопросов. Во-первых, почему Nero делает даже минимальные образы размером около 1 Мб? Во-вторых, почему Nero для файлов нулевого размера сохраняет в качестве номера начального сектора его экстента номер "текущей" позиции (а не ноль, скажем)?
     
  2. Phantom_84

    Phantom_84 New Member

    Публикаций:
    0
    Регистрация:
    6 июн 2007
    Сообщения:
    820
    Короче, вместо обхода структуры каталогов я нашел более простой вариант. Использовать уже сформированные фрагменты таблиц. Дело в том, что в таблицах путей описания каталогов хранятся по уровням вложенности, т.е. описания всех каталогов одного уровня находятся в смежных записях таблиц, т.е. фактически в одном непрерывном списке, причем разбиты на группы в зависимости от того, какой каталог для данной группы каталогов является родительским. Писать в таблицы буду также, как это происходит в текущей версии - в зарезервированную область, но уже не отдельными записями внутри макроса dent, а целиком в макросе, размещенном в конце тома.

    Теперь что касается моих вопросов. Как оказалось, Nero может успешно писать минимальные образы, но только в режиме Disk at Once/96. Чем по сути отличается этот режим от просто Disk at Once, я не знаю.