Прежде чем описывать входящие в пакет утилиты, я приведу краткое описание способа, принятого в БК для записи информации на ленту. Для кодирования записываемых данных используются последовательности импульсов, составляющие передаваемые данные и служебную информацию.
Логически данные (записанный файл) выглядят на ленте так: | Стартовая синхропоследовательность | Маркер начала | Заголовок | Данные | Концевая синхропоследовательность |
С точки зрения читающей программы стартовая настроечная последовательность представляет собой 100008 нулевых одиночных импульсов (один импульс - один период сигнала см. рис.). Длина (продолжительность) такого импульса в дальнейшем определяет "эталонную единичную длину" для всех последующих данных.
 Рисунок. Одиночный импульс. Маркер начала это 108 нулевых одиночных импульсов, заголовок - 248 байт информации о записаном файле и следующие за этим 108 нулевых импульсов, данные - это, собственно, данные файла, заканчивающиеся двухбайтовой контрольной суммой, концевая настроечная последовательность - 4008 нулевых одиночных импульсов. Все элементы, кроме массива данных, заканчиваются синхроимпульсами, за которыми следует единичный бит (синхропоследовательностью).
Каждый бит кодируется двумя импульсами - информационным и синхронизирующим. Нулевой бит кодируется двумя одинаковыми импульсами одиночной длины (см. рис.). Первый импульс своей длительностью определяет значение бита ("0"), второй - синхронизирующий.
 Рисунок. Нулевой бит. Единичный бит кодируется первым импульсом, с полупериодом вдвое больше одиночного (вчетверо длиннее) и следующим за ним синхроимпульсом одиночной длины (см. рис.).
 Рисунок. Единичный бит (реально). Реально, при записи амплитуда единичного импульса понижается вдвое соответственно, в идеале при воспроизведении его размах также должен быть меньше (см. рис.). Однако, за счет нелинейности частотных характерисик трактов магнитофонов и выходного тракта БК, при считывании можно считать что амплитуда импульсов одинакова и, скорее всего именно поэтому драйвер магнитофона БК так и запрограммирован.
 Рисунок. Единичный бит (идеально).
Синхроимпульс представляет собой одиночный импульс утороенной длины. Данный тип импульса в комбинации с единичным битом образует синхропоследовательность и используется для обозначения границ элементов, образующих файл на ленте. Синхроимпульс также передается с половинной амплитудой. Синхропоследовательность, образующую разделительный элемент между полями в файле можно видеть на рисунке.
 Рисунок. Синхропоследовательность.
Фактически, синхропоследовательность это последовательность из импульсов тройной, двойной, а, затем, единичной длины. Биты записываются в порядке увеличения разряда в байте, т.е. нулевой бит - первым, седьмой - последним. Для примера на следующем рисунке приведена последовательность, импульсов образующая комбинацию битов "0101" в виде, выводимом драйвером БК.
 Рисунок. Последовательность бит "1010"
На рисунке обозначены значения каждого импульса. При этом "1D" и "0D" означают стартовые (значащие) импульсы в двухимпульсных посылках, кодирующих единичный и нулевой биты соответственно, а "0S" означает синхроимпульс (по длительности совпадающий с "0D").
|