Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
54
Добавлен:
03.06.2014
Размер:
2.63 Mб
Скачать

Функции ms-dos для работы с принтером

Операционная система MS-DOS имеет свои срдества, предназначенные для работы с принтером. Это функция 05h прерывания INT 21h и система буферизованной печати.

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

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

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

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.

Система буферизованной печати

Более интересные возможности по управлению процессом печати предоставляет резидентная программа буферизованной печати PRINT.EXE. Напомним, что команда PRINT операционной системыMS-DOS предназначена для выполнения печати в фоновом режиме.

Оказывается, что если запущена программа PRINT, другие программы могут взаимодействовать с ней, управляя процессом печати.

Для связи с системой буферизованной печати можно использовать несколько функций прерывания INT 2Fh, которые мы рассмотрим ниже.

Проверка установки системы буферизованной печати

С помощью этой функции программа может проверить, установлена система печати или нет, а также определить возможность ее установки:

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

AH = 01h;

AL = 00h

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

AH = состояние системы буферизованной печати

Байт состояния системы буферизованной печати описан ниже:

Содержимое регистра AH

Состояние системы буферизованной печати

00h

Не установлена, но ее можно установить командой PRINT

01h

Не установлена и ее установка невозможна

FFh

Установлена

Запуск процесса печати файла

Данная функция запускает процесс фоновой печати.

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

AH = 01h;

AL = 01h;

DS:DX = адрес структуры, с помощью которой функции передается путь к распечатываемому файлу

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

AH = состояние системы буферизованной печати

Формат структуры, адрес которой передается функции в регистровой паре DS:DX, представлен ниже:

Смещение

Длина

Описание

0

1

Уровень запроса, равен 0

1

4

Полный адрес строки в формате ASCIIZ, содержащей путь к файлу

Соседние файлы в папке несколько программ