Утилита bkread
Утилита bkread - основная программа пакета осуществляет чтение с магнитной ленты файлов, записанных по алгоритмам, принятым в БК. Хотя программа функционирует согласно оригинального алгоритма БК, написана она была без знания оного, на основе анализа осциллограмм. Затем, некоторую ясность внесли чтения смутных мануалов к компьютеру, что дало возможность сделать программу полностью рабочей, а появление материалов Эльтермана - закрепить полученное, исправить мелкие недочеты и довести программу до "публичного" вида. Не могу не отметить, что при помощи bkread удалось перенести на современные носители файлы со всех доступных автору лент.
bkread читает информацию с магнитофона через аудиовход. Вызов утилиты производится следующей командой:

$ bkread [ключи] [имя]
после этого программа приступает к чтению информации с ленты. Если параметр имя отсутствует, то все встречающиеся при воспроизведении файлы сохраняются, в текущей директории, если задано определенное имя, то сохраняются только файлы с совпадающим именем. В случае, если в директории уже имеются файлы с таким именем то к имени прибавляется префикс ".nnn", где nnn - возрастающее число, гарантирующее от записи файла поверх существующих.
В командной строке можно задавать следующие ключи:
Ключи управления аудиовходом:
-r число - число задает коэффициент усиления картой входного сигнала. Значение должно находиться в пределах от 0 до 100 (минимальное и максимальное усиление). Если ключ -r не задан, то коэффициент усиления зависит от особенностей ОС. В случае Solaris коэффициент усиления остается равным последнему, установленному одной из утилит (в т.ч. и bkread).
-m число - коэффициент усиления цепи мониторинга входного сигнала. Значение должно находиться в пределах от 0 до 100 (минимальное и максимальное усиление). Если ключ -r не задан, то коэффициент усиления зависит от особенностей ОС. В случае Solaris коэффициент усиления остается равным последнему, установленному одной из утилит (в т.ч. и bkread).
-R число - задать альтернативный коэффициент дискретизации аудиоданных, число соответствует количеству снимаемых с карты за секунду значений. Задается либо в виде точного значения (-R 96000), либо в тысячах (-R 44), что оставлено для совместимости с версией 1. Значение по умолчанию - 44100 (т.е. -R 44100, CD quality).
-A спец. файл - задать альтернативное аудиоустройство, полезно если у вас установлено более одной аудиокарты или используются нестандартные имена файлов устройств.
-M спец. файл - (только под Linux!) задать альтернативное микшерное устройство, полезно если у вас установлено более одной аудиокарты или используются нестандартные имена файлов устройств.
Ключи управления анализатором:
-a число - задает максимальное количество адаптаций скорости при чтении файла. В bkread используется адаптивный алгоритм анализа сигнала, позволяющий по ходу чтения динамически изменять скоростные коэффициенты, что позволяет компенсировать неравномерность скорости воспроизведения (записи) на магнитофоне. По умолчанию количество таких адаптаций неограничено.
-e число - задает уровень нуля. По умолчанию нулевому уровню соответствует среднее значение между максимальным и минимальным значениями амплитуды, выдаваемыми аудиокартой. В некоторых случаях, например при искажениях сигнала или при помехах бывает полезно сместить уровень со среднего значения в одну из сторон. Значение должно лежать в пределах от 0 до 255 так-как bkread использует 8-битный режим ввода.
-s число - задает количество единичных импульсов, используемых при определении синхропоследовательности. По умолчанию используется число 31408 (несколько меньше принятого в драйвере МЛ БК - 42008). Впоследствии число разделяется на количество импульсов, необходимых для получения среднего значения длительности единичного импульса по формуле (n/218) и количество импульсов для детектирования настроечной последовательности по формуле (n-n/218) соответвенно.
-p 0|1 - задает какую часть полупериода на входе считать единичным импульсом - отрицательную (0) или положительную (1). По умолчанию используется положительная часть.
Ключ -v включает режим вывода расширенной диагностики (автор всегда задает этот ключ, поскольку наблюдать за происходящим довольно интересно). Пример сессии чтения приведен ниже. Читается содержимое монитора БК.

$ ./bkread -v -r 80 -m 20 -e 132 MONITOR
Opening /dev/dsp as sound device...
Opening /dev/mixer as mixer device...
Recording level set by "IGain" (12)
Monitoring device is "Line " (6)
Fragment size set to 4096 bytes
Audio: recording gain = 60
Audio: monitor gain = 40
Audio: sample_rate = 44100
Audio: edge level = 128
Analyzer: synchro tuning pattern count = 1632
Analyzer: max. number of adaptations set to unlimited

Listening for header synchros (S=1536; T=96)...
Synchros detected. Pattern length = 7.
Pattern length after tuning = 8.
Patterns lengths: 0 = 8; 1 = 16.

Signal Period Analyzer Line (2..40):
--000000000111111111111SSSSSSSSSSSSSSSS
---------------------------------------
000000001111111111222222222233333333334
234567890123456789012345678901234567890

File Name = "MONITOR         "
Data Length =  20000 (octal).
Data Address = 100000 (octal).
Tape Checksum =  17341 (octal).
Data Checksum =  17341 (octal).
Saving file to: MONITOR (8214 bytes).

Listening for header synchros (
S=1536; T=96)...
^CSignal (2) received. Program stopped.


Думаю, вывод утилиты с ключем -v достаточно мнемоничен, чтобы его не комментировать. Работа прерывается по сигналу SIGINT (в терминах Unix), в данном случае этот сигнал вызывался нажатием комбинации Ctrl-C (см. termio(7I)).
Программа сохраняет файлы под именами, заданными в заголовках на МЛ. Оконечные пробелы отбрасываются. Если файл с таким именем уже имеется на диске, bkread записывает его под тем-же именем, добавляя ".n" в конец (n последовательно увеличивается до тех пор, пока файла с таким именем не обнаружится на диске).
К bkread идет еще небольшой скрипт bk2bin, призванный конвертировать считанные файлы в формат, понимаемый некоторыми эмуляторами БК. Основная цель создания данного скрипта, была несколько иная - показать насколько просто это сделать. Автор приглашает разработчиков эмуляторов и ПО для БК к сотрудничеству для написания других конверторов.

 
Яндекс.Метрика