Аппаратное обеспечение персонального компьютера© Александр Фролов, Григорий ФроловТом 33, М.: Диалог-МИФИ, 1997, 304 стр. Функции MS-DOS для работы с принтеромОперационная система MS-DOS имеет свои срдества, предназначенные для работы с принтером. Это функция 05h прерывания INT 21h и система буферизованной печати. Функция MS-DOS для вывода на принтерДля печати символа на стандартном печатающем устройстве PRN вы можете использовать функцию 05h прерывания MS-DOS INT 21h:
Ниже мы привели исходный текст функции 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. Система буферизованной печатиБолее интересные возможности по управлению процессом печати предоставляет резидентная программа буферизованной печати PRINT.EXE. Напомним, что команда PRINT операционной системы MS-DOS предназначена для выполнения печати в фоновом режиме. Оказывается, что если запущена программа PRINT, другие программы могут взаимодействовать с ней, управляя процессом печати. Для связи с системой буферизованной печати можно использовать несколько функций прерывания INT 2Fh, которые мы рассмотрим ниже. Проверка установки системы буферизованной печатиС помощью этой функции программа может проверить, установлена система печати или нет, а также определить возможность ее установки:
Байт состояния системы буферизованной печати описан ниже:
Запуск процесса печати файлаДанная функция запускает процесс фоновой печати.
Формат структуры, адрес которой передается функции в регистровой паре DS:DX, представлен ниже:
Отмена печати файлаС помощью этой функции вы можете удалить файл из очереди печати.
Отмена печати всех файловС помощью этой функции вы можете удалить печать всех файлов, которые находятся в очереди печати.
Определение состояния и блокировка системы буферизованной печатиС помощью этой функции можно заблокировать систему буферизованной печати, определить ее состояние и получить доступ к списку файлов, находящихся в очереди печати.
Разблокирование системы буферизованной печатиЭта функция может быть использована для разблокирования системы буферизованной печати, заблокированной предыдущей функцией.
Коды ошибокЕсли после вызова перечисленных выше функций установлен флаг переноса CF, регистр AX содержит код ошибки:
|