Печать символа
Функция 00h предназначена для печати одного символа:
Регистры на входе: | AH = 00h;
AL = код ASCII символа, который нужно напечатать; DX = номер параллельного адаптера: 0 – LPT1, 1 – LPT2, 2 – LPT3 | ||
Регистры на выходе: | AH = слово состояния принтера
|
Эта функция выводит на принтер один символ, заданный в регистре AL. В регистре DX необходимо записать номер используемого параллельного адаптера. Для адаптера LPT1 это 0, для LPT2 - 1 и так далее.
После выполнения прерывания регистр AH будет содержать слово состояния, имеющее следующий формат:
Поле | Описание | ||
0 | Истекло время ожидания при выполнении операции печати, возможно, что принтер неисправен | ||
1-2 | Не используются | ||
3 | Ошибка ввода/вывода | ||
4 | 1 - принтер выбран для работы;
0 - принтер находится в состоянии offline | ||
5 | Конец бумаги | ||
6 | Подтверждение | ||
7 | 1 - принтер готов к работе;
0 - принтер занят |
Вызвав функцию 00h прерывания INT 17h, программа должна проверить биты слова состояния и убедиться в том, что вывод байта произошел без ошибок. Пользователь часто забывает перевести принтер в состояние online, вставить бумагу, либо вообще включить принтер. В этом случае целесообразно напомнить пользователю о необходимости выполнения этих действий и затем повторить попытку печати.
Если принтер неисправен, программа должна предоставить пользователю возможность отменить печать.
Обратите внимание на бит 1 байта состояния. Если принтер находится в состоянии offline, функция 00h прерывания INT 17h ожидает некоторое время готовности принтера, после чего, если принтер так и не перешел в состояние готовности, устанавливает бит 1 в байте состояния. Область данных BIOS по адресу 0000h:0478h содержит четыре байта, которые используются в качестве счетчика времени при ожидании готовности принтера.