Аппаратные интерфейсы ПК

         

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


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

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

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

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

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

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

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

494______ Глава 12. Архитектурные компоненты IBM PC-совместимого компьютера

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

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

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

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

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

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



Содержание раздела