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


         

Средства BIOS для работы с принтером


BIOS использует для работы с принтером функции 0, 1, 2 прерывания INT17h.

Функция 00h предназначена для печати одного символа:

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

AL = ASCII-код символа для печати;

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

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

Эта функция выводит на принтер один символ, заданный в регистре AL. В регистр DX необходимо записать номер используемого принтера, для LPT1 это 0, для LPT2 - 1 и т.д.

После выполнения прерывания регистр AH будет содержать слово состояния, имеющее следующий формат:

7 6 5 4 3 2 1 0 T-T-T-T-T-T-T-¬ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ LT+T+T+T+T+T+T+T- ¦ ¦ ¦ ¦ ¦ L=¦ L= таймаут, слишком большая задержка при ¦ ¦ ¦ ¦ ¦ ¦ выполнении операции печати, возможно, ¦ ¦ ¦ ¦ ¦ ¦ что принтер неисправен; ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L=== не используются; ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ L======= ошибка ввода/вывода; ¦ ¦ ¦ ¦ ¦ ¦ ¦ L========= 1 - принтер выбран для работы; ¦ ¦ ¦ 0 - принтер в состоянии offline; ¦ ¦ ¦ ¦ ¦ L=========== конец бумаги; ¦ ¦ ¦ L============= подтверждение; ¦ L=============== 1 - принтер готов, 0 - принтер занят.

Вызвав функцию 0 прерывания INT 17h, программа должна проверить отдельные биты слова состояния и убедиться в том, что вывод байта произошел без ошибок. Наиболее часто оператор забывает перевести принтер в состояние ONLINE, либо вставить бумагу, либо вообще включить принтер. В этом случае целесообразно напомнить оператору о необходимости выполнения этих действий и затем повторить печать символа.

Если принтер неисправен, программа должна предоставить оператору возможность отменить печать текста. Ниже мы приведем пример программы, выполняющей печать текста и анализирующей ошибки, которые могут возникнуть в процессе печати.

Обратите внимание на бит 1 байта состояния - таймаут. Если принтер находится в состоянии OFFLINE, функция 0 прерывания INT 17h ожидает некоторое время готовности принтера, после чего если принтер так и не перешел в состояние готовности, устанавливает бит 1 в байте состояния. Область данных BIOS по адресу 0000h:0478h содержит четыре байта, которые используются в качестве счетчиков времени при ожидании готовности принтера.



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