Меню сайта

Урок 161. Кассета

Программа управления кассетныммагнитофоном в BIOS — это пример
— — — работы с последовательным устройством спомощью временных циклов.
— — — Но из-за отличий временных параметровкоманд, программа
— — — обслуживания кассетного магнитофона BIOSво всех критических
— — — случаях использует таймер-счетчик8253. — Здесь будут рассмотрены
— — — только две программы использующие таймер -READ_HALF_BIT и
— — — WRITE_BIT.

— — — — — В техническом описании содержится всяинформация о методе
— — — кодировки данных, записываемых на кассету.Программа WRITE_BIT
— — — записывает на ленту один бит данных. Выходканала 2
— — — таймера/счетчика непосредственноподключается к выводному порту
— — — кассетного адаптера. Поэтому запись битаданных заключается в
— — — установке правильной частоты канала 2таймера и ожидании одного
— — — полного цикла. Программа WRITE_BIT делаетименно это, но в обратном
— — — порядке. Когда программа WRITE_BITполучает управление, предыдущий
— — — бит еще находится в процессе записи. Двацикла ожидания в программе
— — — WRITE_BIT обеспечивают задержку напол-цикла, необходимую для
— — — завершения записи предыдущего бита. Когдазапись бита завершена,
— — — BIOS заносит новое значение частоты вканал 2 таймера. Программа
— — — WRITE_BIT возвращает управление вызвавшейпрограмме тогда, когда
— — -новая частота начала выдаваться на ленту. Программа управления
— — — кассетным магнитофоном достаточно быстрая(или скорость выдачи бит
— — — в кассету достаточно медленная — этозависит от вашей точки
— — — зрения), чтобы программа WRITE_BITвызвалась снова до того, как
— — — таймер завершит первые полцикла записибита.

— — — — — Программа READ_HALF_BIT выполняетпротивоположную работу. Эта
— — — программа ждет до тех пор, пока бит вводас кассетного механизма
— — — (бит 4 порта 62H) не изменит состояние.Каждая смена состояния
— — — этого бита соответствует чтению половиныбита. Программа кассетного
— — — механизма вычитает текущее значениетаймера из его значения при
— — — предыдущей смене бита. Это числосоответствует времени, которое
— — — потребовалось сигналу кассеты, чтобыперейти из одного состояния в
— — — другое. Сложение двух полубитовыхпереходов дает общую длительность
— — — цикла этого бита. Так как времена циклов унулей и единиц разные,
— — — программа READ_BYTE может определитьзначение текущего бита. Из
— — — восьми прочтенных битов она формируетбайт.

— — — — — Программа READ_HALF_BIT иллюстрируетиспользование канала 0
— — — таймера для целей измерения времени. BIOSзамораживает значение
— — — счетчика таймера, а затем читает его врегистр AX. Использование
— — — значения 0, загружаемого в счетчик 0таймера позволяет вычитать
— — — любые два значения таймера, не анализируя,какое из них больше- в
— — — любом случае получится верная разность.

— — — — — Программа управления кассетныммагнитофоном BIOS содержит в
— — — себе подпрограммы, выполняющие четырефункции. Две из них — блочные
— — — операции ввода-вывода, чтение блока изапись блока. Для
— — — эффективного использования ленты данныезаписываются на нее блоками
— — — по 256 байт. BIOS проверяет правильностьввода этих блоков с
— — — помощью циклического избыточного кода CRC(Cyclic Redundacy Check).
— — — Проверка ошибок с помощью CRC выявляетпочти все ошибки, которые
— — — могут возникнуть на ленте. Это позволяетIBM PC использовать
— — — кассеты в качестве средства памяти суверенностью, что вновь
— — — читаемые с них данные правильны. Крометого, BIOS помещает данные в
— — — блоки в связи с несовершенством механизмакассетного магнитофона,
— — — проявляющемся при записи блоков любогоразмера. Программа обязана
— — — ждать до тех пор, пока двигателькассетного магнитофона не
— — — включится и разгонится до нужной скорости.Программа также должна
— — — записывать на ленту синхронизирующиеимпульсы для того, чтобы
— — — микропроцессор вошел в синхронизацию сданными тогда, когда они
— — — будут читаться. Наконец, BIOS записываетслово CRC и конечный байт
— — — в конце каждого блока. Вся этадополнительная работа происходит с
— — — любым блоком данных, независимо от того,один это байт или 10000
— -&
nbsp- байт. Фирма IBM выбрала размер блока,равный 256, как компромисс
— — — между слижком большим размером блока инерациональным
— — — использованием ленты.

— — — — — Другие две функции программы управлениякассетным магнитофоном
— — — BIOS — просто включают двигательммагнитофона и выключают его. Если
— — — вы думаете о разработке простого способаподсоединения вашей
— — — аппаратуры к IBM PC, имейте в виду, чтокассетный порт очень удобен
— — — для этой цели. С помощью разъемакассетного магнитофона,
— — — расположенного сзади корпуса машины, выможете подключиться к
— — — последовательной линии ввода-вывода.Существует также реле, которое
— — — позволяет управлять низковольтнымслаботочным двигателем. Но есть
— — — одна вещь, о которой надо помнить.Выходной бит подключается прямо
— — — к входному биту, когда реле двигателявключено. Такое соединение
— — — позволяет диагностическим программам фирмыIBM проверять входные и
— — — выходные цепи кассетного механизма беззаписи и чтения данных. Если
— — — вы отдельно используете последовательныевход и выход, нужно
— — — включить реле двигателя — даже еслидвигателя нет.

Категория: Программирование на Ассемблере | Дата: 02.03.13

Меню раздела
Блок