Программа управления кассетным магнитофоном в BIOS - это пример работы с последовательным устройством с помощью временных циклов. Но из-за отличий временных параметров команд, программа обслуживания кассетного магнитофона BIOS во всех критических случаях использует таймер-счетчик 8253. Здесь будут рассмотрены только две программы использующие таймер - READ_HALF_BIT и WRITE_BIT.
Программа READ_HALF_BIT иллюстрирует использование канала 0 таймера для целей измерения времени. BIOS замораживает значение счетчика таймера, а затем читает его в регистр AX. Использование значения 0, загружаемого в счетчик 0 таймера позволяет вычитать любые два значения таймера, не анализируя, какое из них больше; в любом случае получится верная разность.
Программа управления кассетным магнитофоном BIOS содержит в себе подпрограммы, выполняющие четыре функции. Две из них - блочные операции ввода-вывода, чтение блока и запись блока. Для эффективного использования ленты данные записываются на нее блоками по 256 байт. BIOS проверяет правильность ввода этих блоков с помощью циклического избыточного кода CRC (Cyclic Redundacy Check). Проверка ошибок с помощью CRC выявляет почти все ошибки, которые могут возникнуть на ленте. Это позволяет IBM PC использовать кассеты в качестве средства памяти с уверенностью, что вновь читаемые с них данные правильны. Кроме того, BIOS помещает данные в блоки в связи с несовершенством механизма кассетного магнитофона, проявляющемся при записи блоков любого размера. Программа обязана ждать до тех пор, пока двигатель кассетного магнитофона не включится и разгонится до нужной скорости. Программа также должна записывать на ленту синхронизирующие импульсы для того, чтобы микропроцессор вошел в синхронизацию с данными тогда, когда они будут читаться. Наконец, BIOS записывает слово CRC и конечный байт в конце каждого блока. Вся эта дополнительная работа происходит с любым блоком данных, независимо от того, один это байт или 10000 байт. Фирма IBM выбрала размер блока, равный 256, как компромисс между слишком большим размером блока и нерациональным использованием ленты.Другие две функции программы управления кассетным магнитофоном BIOS - просто включают двигатель магнитофона и выключают его. Если вы думаете о разработке простого способа подсоединения вашей аппаратуры к IBM PC, имейте в виду, что кассетный порт очень удобен для этой цели. С помощью разъема кассетного магнитофона, расположенного сзади корпуса машины, вы можете подключиться к последовательной линии ввода-вывода. Существует также реле, которое позволяет управлять низковольтным слаботочным двигателем. Но есть одна вещь, о которой надо помнить. Выходной бит подключается прямо к входному биту, когда реле двигателя включено. Такое соединение позволяет диагностическим программам фирмы IBM проверять входные и выходные цепи кассетного механизма без записи и чтения данных. Если вы отдельно используете последовательные вход и выход, нужно включить реле двигателя - даже если двигателя нет.