=== Описание ===
Программа предназначена для записи дискет из файлов. Также
может сохранять содержимое дискет в файлы.
На данном этапе программа вполне хорошо работает, то есть
умеет верно записывать файл в нужное место дискеты. ;) Вам
всего лишь необходимо в специальном файле указать, что ей
нужно делать. К сожалению, сейчас не предусмотрена
возможность использования нескольких файлов с описаниями.
Вы можете контролировать действия программы по файлу
логов, который она создаёт в процессе работы. Записи в
файл логов (DIWR.LOG) с течением времени добавляются,
поэтому он может вырасти до больших размеров. Вы его можете
удалить, он будет создаваться автоматически. Если вы не
хотите, чтобы программа писала отчёт в лог-файл, то можете
отключить эту возможность двумя способами:
1) запустить программу с ключом NOLOG, например:
DIWR.EXE /NOLOG
или
DIWR.EXE -NOLOG
2) изменить файл конфигурации DIWR.CFG. Это, так сказать,
для опытных пользователей :). Например, с помощью программы
HIEW. За возможность ведения логов отвечает последний байт.
если он не равен 0, то логи ведутся, если он ноль - то не
ведутся. В этом случае, если вам вдруг нужно, чтобы
программа записала лог (проконтролировать её), то для этого
имеется специальный ключ:
DIWR.EXE -LOGON
или же
DIWR.EXE /LOGON
В файле лога всегда указываются ошибки, если они произошли
во время обработки коммандного файла st.ds.
В данной версии программы файл конфигурации не изменяется
самой программой.
=== Как работать с программой? ===
На мой взгляд, освоить программу достаточно просто. То,
что вы хотите, чтобы выполнила программа, записываете в файл
st.ds в определённом виде.
ВЫ МОЖЕТЕ:
1. Комментировать строки.
Для этого в самом начале строки нужно поставить знак комментария:
// Это комментарий
// или так:
\\ Это тоже считается комментарием.
\\ Так-то вот! :)
2. В остальных случаях формат строки с командой должен
обязательно иметь следующий вид (иначе при обработке строки
возникнет ошибка и она не будет считаться):
[*] На первом месте должна стоять буква-действие,
безразлично к регистру: "w" или "r", или знак, означающий
добавление ("+"), но только после верной строки с начальными
"W" или "R".
"W" означает, что Вы хотите записать на дискету что-то из
файла, а "R" - что вы хотите сохранить в файл что-то с
дискеты.
[*] Затем, после "W" или "R" (но не после "+"!), должно
стоять имя файла в квадратных скобках "[]". Пустые скобки,
знак вопроса в них или неверное имя файла приведут к тому,
что программа в процессе записи на дискету спросит у Вас
верное имя файла. Вы можете оставить пустое поле и нажать
"Enter", тогда программа завершит свою работу.
%%% Примеры:
w[file1.txt] - запись дискеты, данные будут браться из файла file1.txt
R[file.tmp] - данные с дискеты будут сохраняться в файле file.tmp
W[] - имя файла будет запрашиваться.
r[?] - имя файла также будет запрашиваться.
+[filename.xxl] - НЕВЕРНАЯ ЗАПИСЬ!
[*] Затем идёт описание, с какими головками (англ. head:
H), цилиндрами (дорожками, C) и секторами (sector, S) нужно
работать. Оно состоит в следующем: пишется нужное
имя-идентификатор (H, C или S), а за ним, в фигурных
скобках, указывается номер головки, дорожки или сектора:
w[]H{0}C{0}S{1} - правильная запись, записываться будет первый сектор, причём
//будут записаны первые 512 байт из файла
Если файл будет меньшего размера (или остаток файла), то
файл запишется в начало сектора, а остальная часть сектора
не изменится. Это очень удобно, по-моему. :)
[*] Вы можете указывать диапазоны изменения номеров либо
через запятую, либо через тире, причём может быть сколько
угодно пробелов ВНУТРИ (!) фигурных скобок:
// К примеру:
R[file.dst]H{0, 1}C{0 - 79}S{1, 2, 3, 4 , 5, 6 , 7, 8, 9-10, 11-15, 16-18}
ВНИМАНИЕ! Для стандартных дискет параметры могут меняться следующим образом:
H = 0, 1
C = 0 - 79
S = 1 - 18
Если номера головок будут вне диапазона [0, 1] или номер
сектора будет 0 (ноль), то при обработке строки возникнет
ошибка и она будет пропущена. Все остальные значения
допустимы (например, для нестандартно отформатированных
дискет), но правильности работы программы не гарантирую.
Допустим любой порядок диапазонов:
- можно так:
1, 2, 3-5, 7
- или так:
7, 3-5, 1
- так:
9-4, 6, 7, 6, 5, 1, 10-9, 2-5
- или даже так:
1-11, 79-35, 33, 20, 15-12, 1, 1, 1, 1, 6
[*] При задании параметров ОЧЕНЬ ВАЖЕН порядок следования
идентификаторов, к примеру, следующие две записи будут
интерпретироваться различным образом:
w[file.img]H{0, 1}C{0-79}S{1-18} - будет сделана запись всей дискеты.
w[file.img]C{0-79}H{0, 1}S{1-18} - также будет сделана запись дискеты, но иначе
//чем в предыдущей команде.
Порядок записи идентификаторов отвечает порядку записи на
дискету. Так, в первой команде, приведённой выше, запись
будет сделана следующим образом:
H C S
0 0 1
0 0 2
...
0 0 18
0 1 1
0 1 2
...
0 2 1
...
0 3 1
...
...
...
1 79 17
1 79 18
А вторая будет интерпретирована по-другому:
H C C
0 0 1
0 0 2
...
0 0 18
1 0 1
1 0 2
...
1 0 18
0 1 1
...
1 1 1
...
0 2 1
...
1 3 1
...
...
...
1 79 18
То есть в первом случае при фиксированных H и C меняется
S, после того, как все значения S пробегает, меняется С, а
уже после всего меняется H.
Во втором случае опять меняется S, но после того, как
записаны все секторы (1-18), изменится H. И уже в последнюю
очередь будет изменяться C.
Этот случай соответствует стандарту образов дискет IMG.
Чуть ниже есть более понятные примеры.
Если вы хотите продолжать с предыдущим файлом, а
записывать/читать дискету хотите другим способом, то в этом
случае Вам пригодится команда добавления "+". При
использовании этой команды позиция чтения/записи в
обрабатываемом файле не изменится.
Примеры:
r[file.tmp]S{2-4}H{1, 0}C{5, 14}
+H{1}C{8-10}S{3}
+C{1, 2-3, 5}S{12-10, 6-5}H{0}
В этом случае сначала выполнится запись в файл с указанных
в первой команде секторов, затем в файл будет добавлены
данные работы второй команды, а затем третьей. В противном
случае (если указать три команды r[file]), то файл file.tmp
будет только перезаписываться, и данные работы предыдущих
команд будут потеряны.
В конце оформленных по всем правилам строк допускаются
комментарии (без знака комментария).
Расмотрим на более ясном примере различие действий
программы при разном порядке идентификаторов H, C и S.
Возьмём случай команды
r[file.tmp]S{2-4}H{1, 0}C{5, 14}
Проследим её работу:
H C S
1 5 2
1 14 2
0 5 2
0 14 2
1 5 3
1 14 3
0 5 3
0 14 3
1 5 4
1 14 4
0 5 4
0 14 4
Как видно из примера, в этом случае сначала меняются все
цилиндры, только потом головки и, в последнюю очередь,
сектора. То есть записываются все вторые секторы, затем все
третие, а потом четвёртые.
Если команду записать так:
r[file.tmp]H{1, 0}C{5, 14}S{2-4}
то запись в файл уже будет происходить в другой последовательности:
H C S
1 5 2
1 5 3
1 5 4
1 14 2
1 14 3
1 14 4
0 5 2
0 5 3
0 5 4
0 14 2
0 14 3
0 14 4
Здесь в последнюю очередь меняются номера головок.
И, наконец, последний пример:
r[file.tmp]C{5, 14}S{2-4}H{1, 0}
H C S
1 5 2
0 5 2
1 5 3
0 5 3
1 5 4
0 5 4
1 14 2
0 14 2
1 14 3
0 14 3
1 14 4
0 14 4
Надеюсь, что Вам было понятно и вы разобрались, как
работать с программой (поверьте, это просто, только
попробуйте несколько раз)! Желаю Вам успешной работы!
Обо всех ошибках, недочётах, со своими предложениями обращайтесь ко мне.
a via Felix!8-9 июня 2005 года.
К одной из первых версий программы.