Contents of the PRNDSK.DOC file
PRNDSK Version 1.00
A Printer-To-Disk Redirector
PRNDSK is a utility that redirects output intended for a printer
or communications port and sends it to a disk file or other
device. It is intended to make it easy to capture disk copies of
printed output and screen dumps. It can also be used to discard
printer output by redirecting it to the NUL device, and you can
even use disk files as "virtual printers" if your computer does
not have the printer ports you need.
PRNDSK is written for the IBM PC and closely compatible
computers, running MS-DOS version 2.00 or later. Although it
tries hard to be reliable, it is very likely that there are
computers and programs with which it will not work. If you have
problems, or suggestions for improvements, contact the author:
David H. Rifkind
3993 N. Campbell Ave., #53
Tucson, Arizona 85719
PRNDSK and this document are copyright 1987.
There are three basic formats for the PRNDSK command:
1. PRNDSK [/C][/F]
Displays information about devices currently being
redirected, or closes all files (/C), or flushes them
to disk (/F) while leaving them open.
2. PRNDSK device [/C][/F][/N][/T]
Displays redirection information about the specified
device, or closes its redirection file (/C), flushes it
to disk (/F), or sets or clears the transparency mode
3. PRNDSK device=filespec [/A][/T]
Begins redirecting a device to the file specified. The
/A switch is used to append to an already existing
file, and /T to set the transparent redirection mode.
"Device" may be one of the following names:
LPT1 through LPT3 Printer ports 1 to 3
COM1 or COM2 Serial ports 1 and 2
PRN Same as LPT1
AUX Same as COM1
"Filespec" may be any unambiguous file specification. Legal
To direct output intended for a printer or serial port to a file,
enter the following command:
"Device" should be replaced by the name of an output device:
LPT1, LPT2, LPT3, COM1, COM2, PRN or AUX. "Filespec" is replaced
by the name of a file to receive the output. Here is an example
of a legal command:
This will result in output to the printer being sent instead to
the file PRINTER.TXT in the current drive and directory. A drive
and path name may also be included in the filespec:
In fact, "filespec" may be any MS-DOS file or device name,
including CON, NUL, or even a printer or serial port! If output
is redirected to a serial port or printer port, it is not further
redirected. To make this clear (or at least clearer):
In this example, output sent to the PRN device will go to serial
port number 1; it will NOT go to the file COMM.TXT.
There are two switches which may be included with this form of
the PRNDSK command. The /A switch:
causes data to be appended to the output file. If the /A switch
is not included, the file will be erased before beginning output.
The /T switch:
results in transparent output--characters output will go to both
the redirection file AND to the specified device. This allows
you to make both a soft and a hard copy at the same time.
Once redirection to a file is begun, the disk containing that
file should not be removed. Close the file (see OUTPUT CONTROL)
To close an output file and terminate redirection for that
device, use this command:
The second version closes all files and terminates all
PRNDSK also lets you flush an output file, that is, update the
file directory information on the disk without closing it. Make
whatever use of this that you can:
To keep track of what devices you have redirected, PRNDSK will
show you the status of each device it handles. To find out to
what file a given device is being directed, enter:
The reply might be:
If the device is set for transparent redirection, the file name
will be followed by a "/T":
If redirection to the file has been stopped due to a DOS error,
the error message will be shown after the file name:
Path not found
Finally, if the device in question is not being redirected, there
will be no reply. To list all devices being redirected, type:
Note: the way the filename is reported varies slightly with
different versions of MS-DOS. In DOS 2.xx, the filename is
reported exactly as you entered it. In DOS 3.xx, the complete
unambiguous filespec is given.
DOS 2.xx: LPT1=..\FILES\PRINTER.TXT
DOS 3.xx: LPT1=C:\SUBDIR\FILES\PRINTER.TXT
A redirected device may be switched into and out of the
transparent mode using one of the following commands:
PRNDSK device/T to set transparent mode
PRNDSK device/N to clear transparent mode
"/N" is a mnemonic for "not transparent", and deserves an award
as one of the least mnemonic mnemonics ever.
If any DOS error occurs while PRNDSK is trying to write to a
file, the associated device will become "inactive". Attempts to
write to the device will generate printer I/O errors (for the
printer ports) or timeout errors (for the serial ports). The
device will remain inactive until it is closed (by PRNDSK/C).
PRNDSK intercepts the IBM PC's BIOS INT 14h and INT 17h vectors
(the serial and printer service interrupts). It may not work
correctly with other programs which also take over those vectors.
In most cases, PRNDSK will work with printer buffer software if
it is loaded AFTER that software. Due to the design of the IBM
PC's ROM BIOS, a great number of programs that use the serial
ports will not work with PRNDSK. However, if your serial ports
are being used for simple output devices such as printers or
plotters, it should work. Don't be surprised, though, if your
modem attached to COM2 prevents your using PRNDSK with the
printer attached to COM1.
"Peculiarity" is the word we have chosen to describe some of the
stranger aspects of PRNDSK's operation. The word "feature" might
also be used. Use of the term "bug" is frowned upon.
In order to work correctly with DOS, PRNDSK keeps track of calls
to the various DOS services. This allows it to decide when it is
safe to write to the disk, and when to wait for a better time.
It is not always possible to make this decision correctly, so
PRNDSK adopts a conservative approach: it never writes to the
disk unless it is quite sure that it is safe.
Under some circumstances, it may be impossible to write to the
disk for a considerable period of time. When this happens,
PRNDSK can lose some characters which were sent to the printer.
This is rare, and may happen with some programs and not with
others. One simple example which will demonstrate this is:
COPY somefile PRN
where "somefile" is more than about 2K bytes long. There is no
apparent good solution for this problem.
Another peculiarity has to do with opening files. Under some
circumstances, this sequence of commands:
will result in PRINTER.TXT appearing in directory SECOND instead
of FIRST. This will happen only (1) when using DOS 2.xx and (2)
the first time that PRNDSK is run (that is, if PRNDSK is already
resident in memory, this will not happen).
If this behavior causes a problem, you can follow the first
PRNDSK command with:
which will ensure that the file ends up in the correct directory.
This is the first publicly released version of PRNDSK. There are
other programs that do about the same thing. I hope that PRNDSK
is more reliable and more functional than the others. I also
hope that you find it useful.
This first version is fairly rough in several ways. Since it
uses a 2K buffer for each of five devices, over 8K of memory is
wasted if only one is being redirected. There are also all those
darned "peculiarities" (see above). If there is enough interest
in PRNDSK, I might get ambitious and make improvements.
This is copyrighted material. No fee is charged for its use.
You may reproduce and distribute it as you see fit, but please do
not distribute modified or incomplete copies.
28 Feb 1987