Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Переадресация Ввода-Вывода    >>    prdput
   
 
 Переназначение печати в файл  Юрий Школьников 04.06.1993

Еще одна программа переназначения принтера в файл



4k 
 

Еще одна программа переназначения принтера в файл? Вполне ес- тественный вопрос. Только в Софтпанораме я в последнее время видел не менее двух таких программ. К сожалению, некоторые недостатки в работе этих программ, обусловленные, по мнению их авторов, особенностями стро- ения MS DOS, постоянно вызывали у меня трудности в их использовании. Поэтому я решил написать новую, более приспособленную к особенностям MS DOS программу. Программа PRDP.COM написана на ассемблере, скомпилирована с по- мощью TASM 2.51 фирмы Borland и представляет собой резидентный модуль. Может обслуживать сразу 4 принтера, причем для каждого из них вывод пе- реназначается в отдельный файл. Переназначение выполняется на как на уровне INT 17h для каждого из принтеров так и на уровне функции DOS 40h для устройств PRN и LPT1 - LPT4. Это дает возможность без проблем выво- дить в файл функцией 0 INT 17h, функцией 5 DOS, PrintScreen-ом, коман- дами Type file>prn, Copy files prn и из различных программ, выводящих на принтер как в тексте, так и в графике. Программа также нормально со- существует с программой фоновой печати PRINT.EXE. Отличительной особен- ностью программы являетсяполное отсутствие буферизации вывода, что дало возможность оптимизировать программу и в объеме и во времени. Единствен- ное, что реализовать пока не удалось, это переназначение эхо-вывода кон- соли на принтер по нажатию Ctrl-P. Надеюсь со временем это доделать. Программа вызывается без параметров. Объем резидентной части 816 байт. Функционирует в MS DOS версий от 3.0 и совместимых с ней ОС. Системный интерфейс программы следующий: - открыть файл и переназначить в него принтер Int 17h AH=0D1 BX=номер принтера (1-40) DS:DX=адрес ASCIIZ-имени файла, возврат - аналогичен возврату функции DOS 3C; - закрыть файл и восстановить исходное состояние вывода Int 17h AH=0D0 DX=номер принтера; - определить наличие программы PRDP.COM резидентно в памяти Int 17h AH=0D7 DX=номер принтера Возврат AH=0 если находится, иначе - без изменений. Для реализации данного интерфейса в практической работе исполь- зуется утилита PRDPUT.EXE, работающая только при резидентном наличии в памяти программы PRDP.COM. Программа PRDPUT.EXE написана на "пассембле- ре", т.е. паскале с ассамблерными вставками. Вызывается следующим обра- зом: PRDPUT /1=file_1 /2=file_2 /3=file_3 /4=file_4 где /1=file_1 обозначает переназна