Книга: Аппаратные интерфейсы ПК. Энциклопедия

12.8.5. Int 17h — поддержка принтера

12.8.5. Int 17h — поддержка принтера

Сервисы BIOSInt 17h: обеспечивают инициализацию, вывод байта данных и опрос состояния принтера, подключенного к LPT-порту. При вызове функция задается в регистре АН, номер LPT-порта — в регистре DX.

АН = 00h — вывод байта из регистра AL по протоколу Centronics (без аппаратных прерываний). Данные помещаются в выходной регистр, и, дождавшись готовности принтера (снятия сигнала Busy), формируется строб.

АН = 01h — инициализация интерфейса и принтера (установка исходных уровней управляющих сигналов, формирование импульса Init#, запрет аппаратных прерываний и переключение на вывод двунаправленного интерфейса).

АН = 02h — опрос состояния принтера (чтение регистра состояния порта).

При возврате регистр АН содержит байт состояния, который собирается из бит регистра состояния SR[7:3] и программно формируемого флага тайм-аута. Биты 6 и 3 относительно байта, считанного из регистра состояния, инвертированы. Назначение бит байта состояния:

? бит 7 — не занято (сигнал Busy); нулевое значение означает, что принтер занят (буфер полон или состояние Off-Line, или ошибка);

? бит 6 — подтверждение (сигнал Ack#); единичное значение означает, что принтер подключен;

? бит 5 — конец бумаги (сигнал PaperEnd);

? бит 4 — принтер готов (сигнал Select); нулевое значение означает, что принтер в состоянии Off-Line;

? бит 3 — ошибка принтера (сигнал Error#); единичное значение соответствует ошибке;

? биты 2:1=00 (не используются);

? бит 0 — флаг тайм-аута, устанавливается при неудачной попытке вывода символа, если сигнал Busy не снимается в течение времени, определенного для данного порта в ячейках тайм-аута (в BIOS Data Area); в этом случае согласно протоколу Centronics строб данных не вырабатывается.

Перехват прерывания Int 17h является удобным способом внедрения собственных драйверов принтера. Потребность в них может возникать при подключении к порту принтера с интерфейсом ИРПР или необходимости перекодировки символов. Если разрабатываемый драйвер предназначен не только для перекодировки, но и изменения протокола (через Int 17h можно организовать вывод через LPT-порт по протоколу ИРПР и даже через СОМ-порт), следует внимательно отнестись к битам возвращаемого байта состояния. При их неправильном формировании попытки вывода на печать могут приводить к ошибочным сообщениям.

Оглавление книги


Генерация: 1.082. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз