Книга: Аппаратные интерфейсы ПК. Энциклопедия
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-порт по протоколу ИРПР и даже через СОМ-порт), следует внимательно отнестись к битам возвращаемого байта состояния. При их неправильном формировании попытки вывода на печать могут приводить к ошибочным сообщениям.
- Запуск InterBase-сервера
- Расширенная установка InterBase-сервера
- Резервное копирование базы данных InterBase
- Резервное копирование при работе InterBase в режиме 24x7
- Миграция между различными версиями InterBase
- Перевод базы данных InterBase 6.x на 3-й диалект
- Профилактика повреждений баз данных InterBase
- Восстановление "безнадежных" баз данных. InterBase Surgeon
- Статистика базы данных InterBase
- Sweep interval
- Статистика InterBase-сервера
- Выбор аппаратного обеспечения для InterBase