Как обычно, ложился спать - и в засыпании вспомнил.
Итак, встречаем новую команду в ImageUtils - sq ака squeeze
Код:
>ImageUtilsX -dir m013.dsk rx01 rt11 1>m013.dsk.Dir.txt
>ImageUtilsX -sq m013.dsk rx01 rt11 1>m013.dsk.Squeeze.txt
>ImageUtilsX -dir m013.dsk rx01 rt11 1>>m013.dsk.Dir.txt
>type m013.dsk.Dir.txt
FDF331.DOC 302 27-OCT-1989 FDF333.DOC 118 27-OCT-1989
EMPTY.FIL 61 D 06-FEB-1990 FILE .BAD 1 09-FEB-1990
NNGAME.DSK 4 D 29-OCT-1989
5 files, 421 blocks
65 Free blocks
FDF331.DOC 302 27-OCT-1989 FDF333.DOC 118 27-OCT-1989
FILE .BAD 1 09-FEB-1990 EMPTY.FIL 72 D
4 files, 421 blocks
72 Free blocks
Реализация (включая тестирование) заняла порядка 10 минут - ибо всё сделано через (!!!) конвертирование образа из выбранной ФС в неё же саму с записью в тот же образ То есть по сути - SQUEEZE можно сделать и в другой файл командой
ImageUtilsX -from m013.dsk rx01 rt11 -to m013.new.dsk rx01 rt11
Осталось разобраться - почему показывает разное количество свободных блоков - с одной стороны, это объясняется тем, что метод создания образа ФС RT-11 в настоящее время динамически вычисляет - сколько блоков будет отведено под каталог, но с другой стороны - разница должна быть чётном в этом случае.
Чуть позже - исследую процесс - возможно - есть ошибка в создании описания свободной области в конце ФС
- - - Добавлено - - -
Проверил под RT-11 - получается, что в моём методе создания ФС RT-11 есть ошибка - количество сегментов каталога одинаковое (4) и правильно количество свободных блоков - 65. Нуштош - осталось пофиксить
- - - Добавлено - - -
Другое дело
Код:
>ImageUtilsX -dir m013.dsk rx01 rt11 1>m013.dsk.Dir.txt
>ImageUtilsX -sq m013.dsk rx01 rt11 1>m013.dsk.Squeeze.txt
>ImageUtilsX -dir m013.dsk rx01 rt11 1>>m013.dsk.Dir.txt
>type m013.dsk.Dir.txt
FDF331.DOC 302 27-OCT-1989 FDF333.DOC 118 27-OCT-1989
EMPTY.FIL 61 D 06-FEB-1990 FILE .BAD 1 09-FEB-1990
NNGAME.DSK 4 D 29-OCT-1989
5 files, 421 blocks
65 Free blocks
FDF331.DOC 302 27-OCT-1989 FDF333.DOC 118 27-OCT-1989
FILE .BAD 1 09-FEB-1990 EMPTY.FIL 65 D
4 files, 421 blocks
65 Free blocks
Не учёл описания того, сколько блоков на конкретном устройства испоользует конкретная ФС. На DX - 2002 физических секторов, 501 логический блок (по 512 байт), но RT использует только 494 - где то вроде попадалось объяснение, что первая физическая дорожка (26 секторов) в Interchange формате используется для чего-то, вот поэтому первые 7 блоков (28 секторов), которые сдвинуты через интерлив в конец дискеты (ЕМНИП) и не используются
- - - Добавлено - - -
Немного ошибся. 26 секторов в начале (сдвиг на дорожку) и 2 сектора в конце (так как 2002 на 4 нацело не делится, так что для RT-11 на дискете 500 блоков или 200 секторов)