Информационные технологииStfw.Ru 🔍
🕛

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

Сервисы BIOS I n t 17 h: обеспечивают инициализацию, вывод байта данных и опрос состояния принтера, подключенного к LPT-порту.Сервисы BIOS I n t 17 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 и даже через СОМ-порт), следует внимательно отнестись к битам возвращаемого байта состояния. При их неправильном формировании попытки вывода на печать могут приводить к ошибочным сообщениям.

Также по теме:
Новые программы для Windows, Linux и Android.