Аппаратное обеспечение IBM PC


         

17h имеет еще две функции,


Прерывание INT  17h имеет еще две функции, выпоняющие инициализацию принтера и получающую текущее состояние принтера.

Функция 01h инициализирует принтер:

На входе: AH = 01h;

DX = номер принтера: 0, 1 или 2.

На выходе: AH = слово состояния принтера.

Эта функция выполняет аппаратный сброс принтера. Если вы загрузили в принтер какой-либо шрифт (например, кириллицу), после сброса загрузку шрифта придется выполнять заново. Поэтому не следует выполнять сброс принтера, если это действительно не требуется. Обычно принтер приходится сбрасывать либо перед настройкой его на заданный режим работы, которая выполняется один раз, либо при изменении этого режима.

Слово состояния принтера может быть получено с помощью функции 02h:

На входе: AH = 02h;

DX = номер принтера: 0, 1 или 2.

На выходе: AH = слово состояния принтера.

Эту функцию удобно использовать перед началом печати для определения готовности принтера к работе.

Приведем программу, которая распечатывает содержимое файла с использованием функции 0 прерывания INT 17h.

Программа считывает содержимое файла, открытого в двоичном режиме по байтам. Считанные файлы передаются в качестве параметра функции printchar(), которая и выводит их на принтер. После вызова прерывания INT 17h проверяется состояние принтера, и в случае, когда произошла ошибка ввода/вывода, вызывается обработчик ошибки - функция error(). Эта функция выводит на экран состояние принтера (в развернутом виде, с объяснением каждого бита байта состояния) и запрашивает оператора о дальнейших действиях.

Если оператор может устранить причину ошибки (перевести принтер в состояние ONLINE, вставить бумагу, если она кончилась и т.д.), он нажимает любую клавишу кроме ESC и тогда функция error() возвращает 0. В противном случае возвращается значение 1.

Если оператор решил повторить печать, и, соответственно, если функция error() возвратила значение 0, функция printchar() повторяет печать символа. В противном случае выдается сообщение об ошибке и работа программы завершается.


Содержание  Назад  Вперед