Аппаратное обеспечение персонального компьютера

Функция MS-DOS для вывода на принтер


Для печати символа на стандартном печатающем устройстве PRN вы можете использовать функцию 05h прерывания MS-DOS INT21h:

Регистры на входе:

AH = 05h;

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

Регистры на выходе:

AH = слово состояния принтера



Ниже мы привели исходный текст функции printchar, которая распечатывает символ, передаваемый ей в качестве параметра, при помощи описанной выше функции MS-DOS:

int printchar(int chr)

{

  // Дублируем распечатываемый символ на экране

  putch(chr);

  // Вызываем функцию 5 прерывания INT 21h -

  // распечатка символа на принтере.

  rg.h.ah = 5;

  rg.h.dl = chr;

  int86(0x21, &rg, &rg);

}

Функция 05h по умолчанию работает с устройством PRN, однако с помощью команды MODE вы можете переназначить стандартное устройство печати LPT1, например, на асинхронный последовательный адаптер COM1:

MODE LPT1:=COM1

Заметим, что функция 05h прерывания INT 21h не возвращает состояния принтера при ошибке ввода/вывода. Вместо этого вызывается стандартный обработчик критических ошибок MS-DOS, который выводит на экран хорошо знакомое вам сообщение:

Write fault error writing device PRN

Abort, Retry, Ignore, Fail?

Вы можете ответить Retry, нажав клавишу <R>, и тогда MS-DOS выполнит попытку повторить печать символа. Если ответить Abort (нажав клавишу <A>), MS-DOS завершит работу вашей программы.

Если вас не устраивают действия, выполняемые стандартным обработчиком критических ошибок MS-DOS, вы можете составить собственный. О том, как это сделать, можно узнать из 18 и 19 томов «Библиотеки системного программиста», посвященных программированию для MS-DOS.



Содержание раздела