В этой статье я попробую показать как можно работать с образами FDI под iS-DOS.
И ещё один момент - полученный FDI-файл надо перенести на IBM PC. Я предполагаю наличие дисковода и на Спектруме, и на IBM PC, иначе статья теряет смысл.
Итак, все условия соблюдены, можно приступать :)
Помимо утилит из базового комплекта iS-DOS потребуются программы: sv_image.com, img2fdi.com, cutter.com. Их можно скачать здесь.
Для начала убедимся, что нужная вам дискета вообще нормально распознаётся системой (подробности о возможных проблемах по совместимости здесь). Если всё в порядке, и дискета нормально распознаётся, надо проверить ещё одно условие - дискета должна быть отформатирована под объём не более 3200 блоков. Всё что больше этого объёма, относится к области, расположенной за 80-й физической дорожкой дисковода, и может читаться не на всех дисководах. Обычно подавляющее большинство дискет отформатировано как надо.
Общий объём дискеты можно узнать, вызвав для неё утилиту fileshow.com:
Создадим IMG-образ дискеты утилитой sv_image.com. Для этого открываем устройство, куда будет записан образ, и вызываем утилиту через командную строку: [путь к утилите]sv_image.com /a.
Если дискета, с которой снимается образ, находится не в дисководе А, то вместо ключа /А указываем ключ с соответствующим дисководом (/В, /С и т.д.). На выходе получим img-файл.
Программа начнёт работу по созданию образа, после чего получим файл длиной до 3200 блоков.
 
Полученный образ необходимо сконвертировать в FDI программой img2fdi.com. Но есть один момент - программа требует для своей работы некоторое количество свободной памяти. И если в системах iS-DOS Chic и TASiS проблем не будет, то в iS-DOS Classic при запуске программы иногда можно получить ошибку 130 ("не хватает памяти"):
Эта проблема решаема. Чтобы освободить память надо во-первых, уменьшить размер кэша до минимально возможного для системы уровня - 6 блоков. Для этого служит утилита cache.com:
Если только уменьшения кэша мало для нормального запуска img2fdi.com (что очень маловероятно), высвободить память можно, если удалить из неё ненужные резиденты или драйвера. Для этого вызывается утилита eliminat.com. Она для начала выведет меню со списком драйверов и резидентов, установленных в системе:
Кое-чем из этого списка придётся пожертвовать, чтобы освободить память. Из приведенного выше списка я удалил ненужный на данный момент драйвер для Slave-винчестера (lba_s) и драйвер печати 64 символов в строке (ty64). Чем придётся пожертвовать в вашем случае - я точно не знаю, смотрите сами. Естественно, не следует удалять драйвер Master-винчестера, драйвер дисковода (sys_driv) или драйвер печати в 42 символа в строке (ty42). Остальное можно убирать. Не следует опасаться, что что-то в системе испортится при удалении резидентов - после перезагрузки система будет снова со старым набором драйверов и резидентов. Вот что у меня вышло после удаления lba_s и ty64:
После этого запускаем img2fdi.com. Программа имеет свой GUI и не требует передачи каких-либо входных данных через командную строку. Указываем в программе на нужный IMG-образ и начинаем конвертирование. Выходной файл создаётся на том же устройстве, где расположен IMG-файл:
 
После работы программы img2fdi.com получим файл FDI:
Образ необходимо как-то перенести на IBM PC (иначе зачем тогда мы его создавали?). Если исходный img-файл был большого размера (порядка 700К и более), объёма дисковода не хватает для переноса за один проход такого большого файла (на дискету MS-DOS 720K помещается 713К данных, а FDI-файл занимает объём более 800К). Не переживаем, для этого я написал хитрую программу cutter.com. Она позволяет разбить любой файл на части любой длины. Запускаем cutter.com, указываем какой файл надо разбить и размер частей, на которые будет разбиваться файл. Так, например, для дискеты MS-DOS на 720К достаточно значения по умолчанию - 640К. Программа может заодно посчитать файл CRC32 для последующего контроля склейки файлов на IBM PC. Наличие турбо-режима на компьютере будет нелишним, ибо процесс разбивки и подсчёта CRC32 довольно медленный.
Не забываем установить тип нумерации выходных файлов: при выборе "расширение", нумерация будет осуществляться через расширение файла. При выборе "имя" нумерация будет в последних трёх символах имени файлов. Если предполагается перенос файлов на IBM PC посредством MS-DOS дискет, то лучше выбрать "расширение". Если же перенос будет на дискетах TR-DOS, то следует выбирать "имя". Дело в том, что при записи файлов на дискету TR-DOS расширение файла частично теряется, и нумерация файлов в расширении не имеет смысла.
 
После разбивки получим файлы с расширениями в виде цифр (*.001, *.002 и т.д.) и один файл с расширением *.crc (если был включен режим подсчёта CRC32):
В случае нумерации через имя файла список файлов будет несколько другой, но это не важно.
Эти файлы нужно поэтапно перенести на IBM PC при помощи дискеток MS-DOS (к примеру). В случае с дискетами MS-DOS копируем на них файлы утилитой to_msdos.com:
После переноса всех файлов на IBM PC их можно "склеить", к примеру, в Total Commander:
Полученный в результате FDI-файл можно проверить в эмуляторе, ну и далее использовать по назначению :)
Способ №2 - если надо снять образ с любой дискеты
На самом деле получить рабочий образ fdi можно не с любой дискеты. Дискета должна иметь (как бы это сказать поточнее) правильный формат. Т.е. не должно быть нечитаемых секторов и всякой прочей ерунды, которая затрудняет копирование даже обычными потрековыми копировщиками с автораспознаванием формата диска (Omega Copy, SoftCopy, UFO и т.д.). Само собой отпадают дискеты с защитой от копирования, которая использует информацию в межсекторном пространстве (такая защита была на фирменных дисках с электронными журналами Spectrofon).
Для создания образа FDI с любой дискеты я написал программу makefdi.com:
Программа работает в системе iS-DOS Classic/Chic. Понимает дискеты DS DD (80 дорожек, 2 стороны). Работает на компьютерах с 48К памяти и выше. Короче, программа не требовательна к компьютеру. Наличие винчестера крайне желательно (а то куда вы сохраните fdi-файл?). Также программа позволяет вводить текстовый комментарий к создаваемому образу и указывать количество треков, которые будут просканированы.
Работает программа в два прохода - сначала сканирует все треки дискеты и составляет таблицу секторов, а затем непосредственно копирует информацию с дискеты в образ.
После получения образа fdi его можно перенести на MS-DOS дискеты и далее на IBM PC.
Запись образа FDI на дискету на ZX-Spectrum
Для записи содержимого образа FDI на дискету предназначена программа fdi2disk.com:
Интерфейс программы схож с программой makefdi.com. Системные требования - те же самые, что и для makefdi.com.
При вызове программы указываем ей путь к fdi-файлу, после чего выбираем "START" - и поехали!