* DMP *
Printer driver/spooler for IBM PCs and compatibles.
Copyright(c) 1989,1990 DMP software. All rights reserved.
This manual updated 15 Jan. 1991
____|__ | (TM)
--| | |-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
-----| | |---------------------
The following Trademarks are used throughout this manual:
PostScript - Adobe Systems
IBM - International Business Machines Corporation.
MS-DOS - Microsoft Corporation.
204 E. Second Ave., Suite 610
San Mateo, CA 94401
TABLE OF CONTENTS
Introduction. . . . . . . . . . . 1
User Supported Software. . . . . . . . . 1
Contents of the DMP.ARC file. . . . . . . . 2
How to use this documentation. . . . . . . 2
Starting DMP - basic options & examples. . . . . 2
Saving your configuration. . . . . . . . 4
Removing DMP from memory. . . . . . . . 4
Frequently used commands - examples. . . . . . . 5
File print utility - PF. . . . . . . . . 6
Selection of OUTPUT. . . . . . . . . 7
Printer connected to a parallel port. . . . . 7
Printer connected to a serial port. . . . . 8
Printer output redirected to a disk file. . . . 9
Memory and disk spooling. . . . . . . . 11
Changing the internal buffer size. . . . . . 11
Simplified memory diagram. . . . . . . 12
Spooling to expanded memory. . . . . . . 13
Spooling to extended memory. . . . . . . 13
Extended memory - no XMM driver. . . . . . 14
Extended memory with the XMM driver
-the XMBLOCK program. . . . . . . 14
HMA memory spooling. . . . . . . . 16
Spooling to disk. . . . . . . . . 16
Combination memory and disk spooling
- more examples. . . . . . . . 17
Driver control commands and options. . . . . . 19
Character strings in commands. . . . . . 23
Character conversions - Escape sequences. . . . 23
Control and Hi-bit characters. . . . . . 24
Display conversions. . . . . . . . 25
Spooler control. . . . . . . . . . 26
Miscellaneous. . . . . . . . . . . 27
Using the environment variable. . . . . . . 28
Using the configuration file. . . . . . . . 28
DMP with more than one printer
- still more examples. . . . . . . . 29
DMP and Word Processors. . . . . . . . . 29
Technical description.. . . . . . . . . 30
How commands are interpreted. . . . . . . 30
Details of program operation. . . . . . . 30
Parallel port information. . . . . . . 32
Extended memory use guidelines. . . . . . 33
System memory use and the Un-Install function. . . 34
Command summary chart. . . . . . . . . 36
Registration and ordering information. . . . . . 37
DMP 2.03 - page 1.
DMP is a general purpose printer controller including very
versatile spooling capability. It works on IBM PC/XT/AT and PS/2
computers and most compatibles, running under PC-DOS or MS-DOS
versions 2.0 thru 4.01.
Some of DMP's major features are:
-Print to disk file option
-Support for serial port printers
-Spooling to any Dos-recognized disk
-Spooling to all common types of memory, including expanded and
extended, plus XMS spec extended.
-Selectable internal buffer size / system memory usage
-The ability to drive a wide range of printers at full speed.
DMP is a true spooler in that it saves the printer output to non-
system memory or to disk as needed, instead of removing a large buffer
from system memory. The choice of where to spool is yours.
DMP is a memory resident program which uses approximately 16K bytes
of system memory. The program is not compatible with the DOS 'PRINT'
utility, or with any other print spoolers or buffers for the primary
printer. If you use DMP for a serial port printer, you must not use
the DOS "MODE" command to redirect output - DMP does it instead.
DMP has been used with MS-DOS and PC-DOS versions 2.0 thru 4.01,
with Microsoft Windows 286 version 2.11, with Desqview version 2.26
and with numerous 'TSR' programs with no compatibility problems.
The program disk also includes the utility "PF" for printing files
from a disk without using the DOS 'COPY' command. PF is described in
detail below. The syntax for PF is: "PF filespec, filespec,..." The
filespecs use the DOS file and directory conventions, and may include
wildcards, ? and *.
USER SUPPORTED SOFTWARE
This program is copyrighted material for personal use on one
computer. If you would like to continue to use DMP after a reasonable
evaluation period, send a check for registration to:
204 East Second Ave., Suite 610
San Mateo, CA 94401
The registration is $18 until April 15, 1991. After April 15, 1991
it is $29.
You may use the order form at the end of the documentation if you
like. The order form also includes price details. If you do not use
the form, please make sure to include your name and address with your
payment. For overseas orders or credit cards, please refer to the
order form and instructions.
Anyone desiring to use the program on more than one computer must
purchase additonal copies or fill out and return the order form for
multiple copies. Quantity and site license pricing details are
DMP 2.03 - page 2.
included on the form.
No claims are made as to the program's suitability for any specific
purpose. The author disavows responsibility for any damages resulting
from the use of this program.
Making copies of DMP for others or placement on electronic bulletin
boards is allowed and encouraged, as long as the programs and documen-
tation are transferred in their entirety, with no modifications. If
you would like to post DMP on your favorite BBS, please use the
DMP.ARC file as you received it.
CONTENTS OF THE DMP.ARC FILE
The DMP program incudes these files:
1.) DMP.COM; The main program.
2.) DMP.DOC; This documentation.
3.) PF.COM; 'Print Files' utility, described below.
4.) XMBLOCK.COM; Utility program to allow use of DMP with an XMM
driver and an extended memory ramdisk.
5.) DMPNEW.DOC; Updates and fixes since this manual was typeset.
The distribution disk also includes the XMS driver HIMEM.SYS,
Copyright Microsoft Corp., and the documentation HIMEM.TXT.
HOW TO USE THIS DOCUMENTATION
This documentation is quite lengthy, and is best used as a
reference rather than a tutorial. The sections above are important,
as well as the next few small sections on start-up, saving the config-
uration, and frequently used commands. The section on spooler control
should be read after you have the program working.
The rest of the manual describes the commands and options in
detail, and gives a technical description of how the program works.
Read the start-up section below, and anything else that interests you.
It is usually best to get the program printing something, then decide
which other features you might like and try them out.
Commands are shown on a seperate line or in quotes, with optional
parameters in brackets. They should be entered exactly as shown,
except they are not case sensitive. All commands are a right slash
"/" followed by the command and other options. Spaces are not allowed
between the slash and the command name, and commands may be seperated
by any number of spaces.
STARTING DMP - basic options & examples
If you will be using DMP from your hard disk, copy it to a direc-
tory on your path - a directory where you keep utility programs or
device driver programs for DOS is usually a good choice. The two most
important files to copy are DMP.COM and PF.COM, the main utilities.
DMP 2.03 - page 3.
The XMBLOCK program and the HIMEM driver are only needed if you have
extended memory to use for spooling, on a 286 or later CPU. If you
are not sure, keep them for now - delete them later after you read
this manual if you don't need them. The documentation files can be
printed out for reference and deleted, or you can keep them to browse
if disk space is not at a premium.
DMP has a large number of options, and there are default settings
for all of them. The commands for all the options are detailed in
later sections. Only the very basic startup commands are given here.
For most printers, the basics are all you will need!
There are two important things you will want to tell DMP about your
system. First is where to find your printer. Second is where to
spool the data for the printer.
You specify the connection to the printer with the "/LPT" command
for a parallel printer, with an optional port number after the LPT, or
the "/COM" command for a serial printer - the port number is needed
here. For a serial printer, you should also specify the bit rate and
"handshake" signal, as shown in the examples below. You can also
specify the data, parity, and stop bits parameters for a serial
printer, if the default values are not correct for your printer.
You tell DMP where to spool the data with one or more "/MX"
commands for memory spooling or a "/Dx:" command for disk spooling.
The "/MX" commands are:
"/MX:nn" to set the internal buffer size to 'nn' Kbytes,
"/MXP" for expanded (LIM) memory,
"/MXT" for extended memory as found on IBM ATs and many other 80286
or later computers,
"/MXT xxx yyy" also for extended memory, to specify the maximum
amount (xxx) and starting place (yyy) in the extended memory,
"/MXAll" for both expanded and extended memory, and
"/MXAll xxx yyy" to use both expanded and extended and also specify
the maximum and start for extended memory as in "/MXT".
The disk command, as mentioned above, is "/Dx:". You need the colon,
and replace the "x" with the DOS drive letter you want to use.
Startup Example 1:
Printer on BIOS default parallel port, spool to ramdisk D:
Startup Example 2:
Printer on parallel port 1, spool to extended memory above a VDisk
at 1.5MB and to the VDisk itself as drive D:
DMP /LPT1 /DD: /MXT 0 512
Startup Example 3:
Printer on serial port COM1 at 1200bps, using DSR handshake. Spool
to expanded memory and hard disk C:
DMP /COM1 R1200 WDSR /MXP /DC:
DMP 2.03 - page 4.
The commands in these examples can be entered in any order. You
can also change the configuration of DMP at any time by entering new
Like all the options, these basic ones have defaults. The printer
default is the Bios parallel port. The spooling default is to use the
internal 6K byte buffer only. If you install DMP with no commands, it
will try to drive your printer this way. (It will display a warning
for no spool buffers, but still work.) If you specify a serial port
with "/COMn" with no other options, the default is 2400bps, CTS
handshake, 8 data, no parity, one stop bit.
SAVING YOUR CONFIGURATION
After you have entered a command string similar to one of the
above, and printed a page or two using DMP, save the configuration to
disk with the command "DMP /WCF". (It stands for "Write Configuration
File".) From now on you can install the program with just DMP, and
your previous option settings will be used. When it starts up, DMP
displays a summary of it's configuration so you can verify your option
When you enter this command, DMP writes a file named "DMP.CFG" to
the drive and directory where DMP itself is found (current directory
under DOS 2). This file contains all the options you have selected,
including the ones not yet explained here. When DMP is installed it
finds this file and uses the settings in it.
A seperate section at the end of this manual describes what is
saved in the configuration file and how to use it.
A word of caution: If you move DMP to another computer, it is best
to delete the DMP.CFG file and set up the options from scratch on the
new system, unless the computer and printer configurations are
REMOVING DMP FROM MEMORY
The command to remove DMP from memory is DMP /UN. When the "/UN"
command is entered, any other commands on the command line are
ignored. If the program is not installed it will display an error
message and will not install. If more than 500 bytes are spooled for
printing when you issue this command the program will ask for confir-
mation before flushing all spool buffers. If another resident program
would prevent release of DMP from memory, DMP will display an error
message and remain installed.
DMP 2.03 - page 5.
The effects of this command are to replace the interrupt vectors
DMP uses with their previous values, erase any data spooled for
printing, and free the memory DMP was using back to the pool of DOS
memory. See the technical section near the end of this documentation
for more details on the un-install function, and for some precautions
to observe when using another utility program to remove DMP from
FREQUENTLY USED COMMANDS - EXAMPLES
These examples are shown with very little explanation. They show
some of the capabilities of DMP, and should give you some ideas for
which features you want to try out. Detailed descriptions for all the
commands are in the sections following.
Example 1: Parallel printer, text only, spool to hard disk C:,
simulate form feeds with line feeds, expand tabs, skip perforation.
Allow graphics printing temporary, i.e. don't convert tab and form-
Re-enable character conversion features:
Example 2: DMP is already installed for a parallel printer.
Kill spooler output and empty buffers (e.g. paper jam):
Print files ABC.TXT and all files with extension .DOC in directory
\docs on disk drive C:
PF C:\DOCS\ABC.TXT C:\DOCS\*.DOC
Send printer output to file PRINTOUT.TXT in the current directory:
Send output back to parallel printer:
Suspend spooler output:
(Data continues spooling, printer stops.)
Restart spooler output:
Example 3: Parallel printer connected as LPT1:, text only, spool to
ramdisk D:, send sequence 'Esc&k0S' to reset printer on startup. (
You've checked the printer manual!) Prevent character ^U from being
sent to printer.
DMP /DD: /LPT1 /C27,"&k0S"/X15-
DMP 2.03 - page 6.
Example 4: Serial printer connected to COM1, text only, 1200bps, 7
data, even parity, one stop bit, printer busy signal connected to DSR
line, spool to hard disk C:.
DMP /DC: /COM1 R1200 7E1 WDSR
Printer output to disk file DATA.123 on drive A:, append output to
Change output to parallel printer and spool to ramdisk. (No data
spooled for printing.):
Switch back to serial printer, leave spooling set to ramdisk:
You will probably need to read more details about these commands in
some cases, especially if you have a serial port printer with
parameters other than those shown, if you have an 80286 (or later) CPU
and you want to use combinations of different types of memory, or if
you want to enter some complex character conversions.
FILE PRINT UTILITY - PF
The utility program PF.COM is intended for printing disk files
directly, from the DOS prompt. It is used by entering PF followed by
the names of the files to be printed. PF accepts full DOS path spec-
ifications as well as the DOS wildcard specifiers * and ? for printing
groups of files.
PF accepts one parameter in addition to the file specifications:
"/F-" or "/F+" to turn off or on automatic form-feeds. The default is
to send a form-feed to the printer after each file printed. Entering
"/F-" turns this feature off for file specs on the command line after
the command. "/F+" turns it back on. The examples below should make
the use of this command clear.
PF is useful for printing files output by word processors,
compilers, data base programs, etc. that are in "ready to print" form,
plus the "documentation on disk" many programs include.
The PF program can also be used for later printing of files
generated by the "Print-to-disk" option. PF does no conversion
itself, and may be used with or without DMP installed. It's intent,
however, is to spool data for printing with DMP, then allow the
computer to be used for other purposes while the printing takes place.
Please do not confuse this separate utility with the DMP command
"DMP /PF" for directing printer output to a disk file.
DMP 2.03 - page 7.
Some examples for PF:
PF ABC.TXT /F- DEF.TXT /F+ GHI.TXT
File ABC.TXT is printed, the page is elected, files DEF.TXT and
GHI.TXT are printed with no form-feed between, and a form-feed follows
PF *.TXT /F- *.DOC
Files in the current directory with extension ".TXT" are printed with
a form-feed between each file. Files with extension ".DOC" are
printed without form feeds.
SELECTION OF OUTPUT
The spooler output can be sent to a parallel port, a serial port,
or a disk file. The next three sections tell you how.
PRINTER CONNECTED TO A PARALLEL PORT.
There are four parallel port selection commands:
DMP /LPT BIOS designated printer (default)
DMP /LPT1 Printer output goes to port 1, 2 or 3.
These commands can be followed by a colon, and a two digit number for
the maximum output speed to the parallel port, such as "DMP /LPT2:75".
Valid numbers for the output speed are 0 to 99. The default setting
is 75. It is usually not necessary to change the maximum speed, but
there are two cases where you may want to change it.
1.) Your computer slows down too much while printing. Reduce the
speed by 10 or 20 counts. The printer will slow down, but you will
get more processing power from your computer for other programs.
2.) Your printer does not run at full speed. Increasing the speed
setting in this case will work only if DMP is already running at the
maximum setting. Enter "DMP" by itself on the command line while the
printer is running and observe the report for the parallel printer.
If the speed setting matches the maximum speed available, you can
speed up the printer by entering a higher maximum.
For compatibility with older versions, DMP also responds to "/B"
commands for selecting a specific parallel port. You can use these
commands instead of the "/LPT" commands if you like, but they are
usually not needed. See the technical section on parallel ports for
details on how to select a specific port address with the "/B"
command, or if you are interested in more details about parallel
The "/LPT" command can be entered at any time. It has several
-If serial port output was on, it is turned off.
-If Print-to-File was on, the file is closed.
-Character conversions are turned on in the last mode selected.
DMP 2.03 - page 8.
A confirmation is displayed for the parallel port selected. When
you save the configuration with the "/WCF" command, the parameters for
the parallel port are saved so you don't need to re-enter the details.
This command is also useful for switching output between two
If you don't enter any "/LPT" command, or enter a "/LPT" command
without a number DMP checks for a printer port designation in the BIOS
data area. Once a parallel port has been selected, the "/LPT" command
with no number will cause output to go to the selected port.
PRINTER CONNECTED TO A SERIAL PORT.
There are just two basic commands for a serial port: DMP /COM1 and
DMP /COM2 for ports COM1 and COM2.
These commands can be followed by "R" or "W" commands to select the
bit rate and hardware handshake signal. The /COM commands can also
include the data, parity, stop parameters in a format like "8N1". The
full syntax for the "/COM" command is: DMP /COMn [Rxxx] [DPS] [Wyyy]
The items in brackets are optional. Do not type the brackets. 'n' is
the port number. 'xxx' is the bit rate in bps, from 300 to 19200.
DPS are the data, parity, stop parameters. The data bits may be 7 or
8; parity may be N for none, E for even, O for odd; stop bits may be 1
or 2. 'yyy' is the handshake signal to use, selected from CTS, DCD,
DSR, or RI. Control via XOn/XOff is always enabled, in case the
printer uses it. The examples below will make the syntax clearer.
The serial port command may be entered at any time. The effects are
-If parallel port output was on, it is turned off.
-If Print-to-File was on, the file is closed.
-Character conversions are turned on in the last mode selected.
-A confirmation is displayed for the port selected, bit rate, data,
parity and stop parameters, handshake signal, and type of conver-
sion now in effect.
Note the printer must NOT be redirected with the DOS 'MODE' command
or any other software. Use the '/COM' or '/LPT' commands if you want
to switch between serial and parallel printers.
The port number must be specified when this command is first
entered. The rate and handshake signal default to 2400bps and CTS,
respectively. The other parameters default to 8 data, no parity, 1
stop bit (8N1). Once the parameters have been selected, or loaded
from the configuration file, you can switch the serial port on with
just DMP /COM. The previously selected parameters are used.
The optional "R" parameter sets the bit rate. Do not enter any "/"
or "[" between the port select and 'R'. The optional data, parity,
stop parameters must follow the "R" command, if they are to be used.
These parameters may be changed after the serial printer has been
DMP 2.03 - page 9.
The optional 'W' parameter selects the serial port signal to be
used as the printer 'busy' signal. The selected signal should be
connected to the printer output signal for stopping serial input. The
signal designations and pin numbers for a 25-pin (PC/XT) and 9-pin
(AT) connectors are as follows:
Computer connector: 25pin 9pin
CTS - Clear to send - pin 5 pin 8
DCD - Carrier detect - pin 8 pin 1
DSR - Data set ready - pin 6 pin 6
RI - Ring indicator - pin 22 pin 9
DMP also includes pacing via 'XOn/XOff' from the printer. This
function cannot be disabled. If the printer does not use it, this
will have no effect. If the printer does send 'XOff' characters to
control output, a hardware pacing signal may still be selected. The
hardware signal should be disabled on the connector (either end) if it
is desired to use only the 'XOn/XOff' control. If the output to the
printer is stopped by 'XOff', it will restart when the printer sends
an 'XOn'. DMP also times out the XOff status to allow for some
printers that do not properly restart transmission with 'XOn'.
Serial printer examples:
Select COM1, 2400bps, 8data, no parity, 1 stop bit, CTS handshake:
DMP /COM1 R2400 WCTS
Select COM2, DCD handshake. Other parameters as is: DMP /COM2WDCD
Select COM1, 9600bps, 7 data, even parity, 1 stop bit, DSR
DMP /COM1 R9600 7E1 WDSR
PRINTER OUTPUT REDIRECTED TO A DISK FILE.
The three commands for sending printer output to a disk file are:
DMP /AFfilespec, and
The command names stand for "Print File", "Append File" and
"Overwrite File". If the given file does not exist, all three will
operate identically. The file will be created and subsequent printer
output will go to the file.
If the file already exists, the commands operate as follows. The
"/PF..." command will find the file, and ask if you want to append,
overwrite or cancel the command. The "/AF" and "/OF" commands will
append or overwrite the file without asking. A confirmation message
This command allows only two possibilities for specifying the
filename. The first is a filename only, with no drive or directory
specifiers, such as "OUTPUT.PTR". This causes the file to be created
(or appended to) in the current drive/directory. The second method is
full path and filename, starting from the root directory of any DOS
recognized drive, like "A:\DOC.TXT". Note the backslash must be used
DMP 2.03 - page 10.
to specify the root directory of a drive (unless it is the current
directory). A:\DOS.TXT is correct. A:DOC.TXT is NOT correct and will
generate an error message.
The file being printed to does not have to be on the same disk used
for the spool files while printing to the printer.
Character conversions are turned off while printing to a disk file.
This command is cancelled by the "/LPT" or "/COM" commands to
direct output back to the serial or parallel printer. It may also be
cancelled by '/PF-'. This will cause printer output to go back to the
printer port that was in use before the Print-to-disk function was
If the "Print-to-disk" function is enabled while there is data
spooled to be printed, the spooled data will continue to print until
it is finished or the spooler is aborted by command. Any additional
data sent from a running program or from DOS to the printer after
"Print-to-disk" is started will go to the disk file.
Please do not confuse this command with the separate utility "PF".
This command is for sending printer data to a disk file. The PF
utility is for sending an existing file to the printer.
DMP /PFC:\DOCS\PRINTOUT.TXT - Printer output goes to file
"printout.txt" in directory "docs" on drive C until cancelled.
DMP /OFPRTEXT - Printer output goes to file "prtext" in the
current directory. If the file exists it is erased and re-written.
DMP /LPT - If printer output had been set to a file, it is
directed to the parallel port. The file is closed.
DMP 2.03 - page 11.
MEMORY AND DISK SPOOLING
The memory spooling commands are:
DMP /MX:nn to set the internal buffer size,
DMP /MXP for expanded,
DMP /MXT [xxx] [yyy] for extended,
DMP /MXAll [xxx] [yyy] for both, and
DMP /MXNone to stop using memory buffers after they had been
The memory spooling parameters can also be set by using the DOS
environment variable if desired. This is discussed in the section on
The disk spooling command is:
DMP /Dx: where x is the DOS disk to be used for spooling.
The memory diagram on the next page should help clarify some of the
terms in the command descriptions.
CHANGING THE INTERNAL BUFFER SIZE
The default internal buffer size is 6K bytes. You can change it,
during installation of the program only, with the "DMP /MX:nn"
command. 'nn' is the size to use in Kbytes (1024 byte chunks), and
must be one of the following numbers: 4, 8, 12, 16, 24, 32, or 40.
It is normally not necessary to change the buffer size. A larger
buffer may help if you do not have any expanded or extended memory to
use for spooling, and you must use a physical disk (not a ramdisk).
There is almost no effect on performance of the spooler when using
memory buffers. The larger buffer will of course cause more DOS
memory to be used by the spooler.
DMP 2.03 - page 12.
| ** Expanded memory ( up to 8 MB ) |
| Top of Memory on 80286 + | Up to 16MB
| ** |
| ** |
| Possible XMM Extended Memory Block |
| Possible configurable Ramdisk begin. |
| ** |
| The High Memory Area (HMA) |
| | /\ /\ |
| Begin extended mem. Possible VDISK | 80286 + only |
|====================================================|1024K or 1MB
| End reserved area. Top of mem on 8088 PCs |
| System Bios |
| Network adaptor firmware |
| Disk adaptor firmware |
| EMS page frame |
| Video adaptor display mem & firmware |
| Begin reserved area. |
| Conventional or DOS Memory |
| Interrupt vectors, Bios data, Dos, Tsr's, etc. |
Figure 1. Simplified memory diagram.
DMP 2.03 - page 13.
SPOOLING TO EXPANDED MEMORY.
Simply install the program with DMP /MXP. DMP will verify the
presence of the EMM manager, and availability of at least 64K for
spooling. The EMS memory use and availability will be shown on the
summary display. The memory is allocated thru the EMM manager when
needed, and released when done. None is reserved permanently.
-- Example --
DEVICE = EMM.SYS (name of your EMM manager)
In AUTOEXEC.BAT, or enter from the DOS prompt:
DMP /MXP /other options as desired.
Expanded memory is "bank switched" in and out of the PC's address
space as needed. This type of memory can be added to any type of DOS
computer, including 8088 based PCs. An EMM driver is a program that
manages expanded memory. This program is usually supplied when you
buy an expanded memory board.
If you have a 80386 (or later) processor, there are some programs
that will allow you to use your memory above 640k for expanded,
extended, or several other functions. DMP can spool to either
expanded or extended memory as set up by such a program. If you are
not sure, use the extra memory as expanded (LIM) memory and allow DMP
to spool to expanded. The technical section near the end of this
documentation contains more details on this subject.
DMP will work with an EMM manager supporting LIM 3.20 or later.
Use of expanded memory can be turned on at any time with DMP /MXP,
and stopped at any time with DMP /MXNone. If the memory is being
used by the spooler when it is turned off, the data will continue to
print until finished, but no new data will be added to EMM memory.
Expanded memory is supported by many commercial programs via the
EMM driver. It is a good place for spooling because it can be
accessed quickly, and it is allocated and de-allocated as needed,
allowing optimum use of the memory.
SPOOLING TO EXTENDED MEMORY
Extended memory is memory above the 1 MB address range. It is
available only on 80286 or later CPUs, which are capable of addressing
memory in this range. Under DOS, the only standard use of this memory
is for a ramdisk. Some commercial programs support it, but very few
compared to those supporting expanded memory.
DMP 2.03 - page 14.
EXTENDED MEMORY - NO XMM driver.
Install the program with DMP /MXT [xxx] [yyy].
[xxx] is the maximum amount of memory the spooler is allowed to use.
[yyy] is the start address ABOVE 1MB. Do not type the brackets. Both
xxx and yyy represent numbers in Kbytes.
If no parameters are specified DMP will use all memory as reported
by the Bios. If the first parameter is zero or is greater than the
amount available, DMP will use the amount available.
This format is intended to be compatible with the VDISK program, or
to allow all extended memory to be used for spooling (no ramdisk).
-- Example --
You have an 80286 machine with 2 MB total memory, all conventional.
You would like to use 640K for DOS, 1MB for ramdisk, 384K for
DEVICE = VDISK.SYS 1024 512 128 /E
In AUTOEXEC.BAT, or enter from the DOS prompt:
DMP /MXT 384 1024 / other options as desired.
The most important point in this example is that the spooler is
told to start at 1024K above 1MB - which is where the VDISK stops.
The first parameter to DMP (384 in the example) could have been a
zero, or a number greater than 384 to acheive the same result.
Use of extended memory can be turned on at any time with DMP /MXT,
and stopped at any time with the DMP /MXNone. If the memory is being
used by the spooler when it is turned off, the data will continue to
print until finished, but no new data will be added to extended
memory. You can only change the amount and start parameters by using
DMP /MXNone when no data is spooled, then re-starting with a new DMP
The VDISK program supplied with DOS simulates a disk drive in ex-
tended memory. VDISK always starts from the 1 Mb address and uses as
much as you tell it to. Some other ramdisks can use selectable
portions of extended memory with higher start addresses. DMP is sel-
ectable. To use extended memory for both a ramdisk and DMP, you must
command the two programs to use different portions of memory.
EXTENDED MEMORY WITH THE XMM driver
-the XMBLOCK program.
Install the program with DMP /MXT. The command is the same as for
conventional extended, without numbers. Any parameters after the com-
mand are ignored if the XMM driver is found.
DMP 2.03 - page 15.
If the HMA is available, DMP will use it and report it on the
summary. The HMA is reserved for spooling if it is found. Other
extended memory being managed by the driver is allocated as needed and
released when done. The XMM driver and HMA memory are discussed
-- Example --
DEVICE = HIMEM.SYS (or other XMM manager)
In AUTOEXEC.BAT, or enter from the DOS prompt:
DMP /MXT / other options as desired.
An XMM driver is a program to manage extended memory in a similar
fashion to that specified in the LIM standard for expanded memory.
DMP is compatible with the published specification called XMS from
Microsoft. The free Microsoft driver program called HIMEM.SYS is
supplied on the distribution disk for DMP. It is also available on
many BBS systems for anyone with a 80286 CPU who would like to use it.
If you have another version of HIMEM.SYS you have been using with
other software (such as Microsoft Windows), it is a good idea to keep
using your version, even if this one is newer. DMP will try to work
with any version of HIMEM.SYS or any other XMM driver conforming to
Note XMM drivers are not compatible with VDISK for versions of DOS
prior to 4.0, and will refuse to load if VDISK is installed. They can
be made compatible with some other ramdisks by using the XMBLOCK
program supplied with DMP. This is only possible if the ramdisk can
be commanded to start above the HMA memory.
The 'proper' way to use extended memory for a ramdisk is to have
the ramdisk program allocate what it needs through the XMM driver. If
your ramdisk uses XMM memory, DMP can do extended memory spooling in
the portion not used by the ramdisk.
If your ramdisk is not aware of the XMM driver, the XMBLOCK program
allows you to block off memory already taken by a ramdisk, without the
XMM driver's knowledge. The remainder of extended memory can then be
managed by the XMM driver. XMBLOCK is not a resident program - it
uses no memory itself.
The syntax for the XMBLOCK program is "XMBLOCK nnn" where nnn is
the amount of memory in Kbytes to be blocked off ABOVE the HMA. There
is an example under combination spooling, below.
DMP 2.03 - page 16.
HMA MEMORY SPOOLING
The XMM specification and XMM drivers support a 'trick' memory area
on 80286 and later processors called the HMA - High Memory Area. This
is shown on the diagram in figure 1.
DMP can use the HMA for spooling, but only through the XMM driver.
If the driver is present and reports the HMA available, it will be
used for spooling. The size of the HMA is 65520 bytes (64K - 16), and
it can be accessed quickly, so it is a good candidate for spooling if
you have no preferred use for it.
The HMA does not add anything to your available extended memory,
but it does allow access to it in a different way that is faster than
the standard method. The technical section near the end of this
manual explains how to prevent DMP from using the HMA for spooling,
while still using the XMM driver.
SPOOLING TO DISK
Select a disk drive for spooling with DMP /Dx: where x is the
drive to be used for spooling. You need the colon.
A disk drive may be selected when DMP is first installed or any
time later. The drive can be changed if there are no spool files
active. The command will work if there is data in the memory buffers,
as long as nothing is spooled to the disk.
You can stop disk spooling at any time with DMP /DNONE. Any data
spooled to disk when this command is entered will continue to print,
but no new data will be added to the disk.
DMP is compatible with any disk recognized by DOS. A ramdisk is a
very good candidate for spooling because of it's speed. The time
taken by the spooler will usually not be noticeable with a ramdisk. A
hard disk is convenient for large print files. A floppy or any
removable disk is NOT recommended, as removing the diskette while the
spooler is operating can cause the system to crash. Also, the I/O is
very slow and will use noticeable portions of computer time while
DMP will create disk files with filenames $PSPOOL.nnn, where 'nnn'
ranges from '000' to 'FFF' (hexadecimal). The files may vary in size
from 4K up to 32K bytes each if a lot of information is spooled. The
files are written as printer output is generated, then read and
deleted when the information is printed. The files are also deleted
if the spooler is flushed or DMP is un-installed.
The spool files are written to the 'root' directory of the
designated drive. Subdirectories on a hard disk can be used via the
DOS 'SUBST' command. No filenames should be used on the system which
match the program's format. The files are not marked as 'hidden' or
'system', so they will show up in directory listings made while the
DMP 2.03 - page 17.
spooler is running. If the system is stopped or rebooted while the
spooler is running, extra files will be left on the disk. This will
not interfere with the operation of the spooler when it is reloaded,
but the files should be deleted to free up the disk space.
COMBINATION MEMORY AND DISK SPOOLING
- MORE EXAMPLES
Disk spooling can be done with extended and/or expanded memory
spooling in any combination by the appropriate commands as shown
above. If all types of spooling are enabled, DMP will use them in the
1. Internal buffers (6K bytes).
2. HMA memory.
3. Expanded memory.
4. Extended memory via XMM driver if present, or via Bios if not.
There are two basic advantages to using expanded or extended memory
for spooling instead of a disk.
1. Access is faster, so less CPU time is used by the spooler and
the printer still runs full speed.
2. It does not have any contention problems like DOS has when using
it for disk access. The Bios and both types of memory driver
programs can be called by the spooler without fear of 'running
into' your application software (spreadsheet, word processor,
The disadvantage is that memory being used for spooling is of
course unavailable for any other programs. DMP allows you to make the
tradeoff as you desire.
Example 1: XMM driver with ramdisk & spooler.
This is based on an 80286 computer with 2MB total memory. The XMM
driver is available. Desired memory use is 640K for DOS, 896K for
ramdisk, 512K for the spooler. In addition, the spooler will be
allowed to use the ramdisk if it fills the rest of memory.
DEVICE = HIMEM.SYS (Name of XMM driver)
DEVICE = FASTDISK.SYS /M=896 /EXTM=0,1088
(Name of ramdisk, with commands)
XMBLOCK 896 (block off ramdisk portion)
DMP /MXT /DE: (spooler uses XMM driver
... and ramdisk E:)
In this example, the ramdisk program is commanded to start above the
HMA memory, and use 896K bytes. Use commands needed for your ramdisk.
DMP 2.03 - page 18.
The memory used by the ramdisk is then blocked off by XMBLOCK so the
driver will not allow it to be allocated. DMP then discovers the
driver with 448K bytes available when needed for spooling, plus the
HMA with 64K bytes.
Example 2: Expanded and extended memory with simulator
The hypothetical configuration is an 80286 cpu with 1MB of memory on
the motherboard plus an expanded memory board with 1.5MB. The XMM
driver is not used. Desired memory use is 640K for DOS, 1MB ramdisk,
remainder of expanded memory for applications and spooling as needed.
DEVICE = EMS32.SYS /options
(name of EMM driver)
DEVICE = REX.SYS 768 (name of simulator)
DEVICE = VDISK.SYS 1O24 512 128
The EMM driver is installed, the simulator is told to take 768K of
expanded memory and use it as extended memory, and the ramdisk is told
to use all the extended memory (384K + 768K). DMP then finds the
expanded memory available to be 896K bytes, and will share it with
application programs as needed.
Example 3: 386 Driver program, expanded memory and ramdisk spooling
The configuration is an 80386 CPU with 4MB of memory, all extended.
Desired memory use is simulated expanded for spooling, then ramdisk
when the available memory fills. The ramdisk is drive D:.
DEVICE = QEMM386.SYS /options
(name of driver)
DEVICE = RAMDRIVE.SYS 512 /e
DMP /MXP /DD:
DMP 2.03 - page 19.
DRIVER CONTROL COMMANDS AND OPTIONS
The type of output spooled and printed is controlled by the
Graphics/binary mode on/off:
DMP /G+ or DMP /G-
Send/don't send auto line-feeds:
DMP /L+ or DMP /L-
Printer has/doesn't have auto line feed:
DMP /A+ or DMP /A-
Allow/don't allow line-feeds from application:
DMP /U+ or DMP /U-
Printer has/doesn't have form-feed function:
DMP /F+ or DMP /F-
Physical page length is 'nn':
Lines of text before auto form-feed:
Set left margin to 'x' spaces:
Tab expansion on/off:
DMP /T+ or DMP /T-
Reset or clear all tab stops:
DMP /TR or DMP /TC
Set/clear tab stops at 'aa'/'bb':
Jam literal character string to printer:
Convert an escape sequence:
Convert a control character or group of hi-bit characters:
Show character conversions in effect:
The descriptions for all these commands follow.
DMP 2.03 - page 20.
DMP /G+ and DMP /G- commands:
Graphics/binary print mode on/off.
The "/G+" command turns off all character conversions. The "/G-"
command restores character conversions to their previous state.
This command is useful to allow bit image graphics printing for
dot-matrix printers after some character conversion options have been
selected. The options can later be re-enabled with "/G-".
DMP /L+ and DMP /L- commands:
Instruct DMP to send, or stop sending, line feeds to the printer
after each carriage return.
'/L+' causes line feeds to be added, '/L-' removes the effect of
'/L+'. This can be used to force double spacing or in conjunction
with a print program that does not send line feeds, causing a "black
bar" to be printed on one line. It is usually not needed.
Line feeds are not added in graphics '/G+' mode.
DMP /A+ and DMP /A- commands:
Inform program whether printer has auto line-feed.
The "/A" option does not change the character conversion functions,
but allows DMP to count the number of lines the paper has advanced in
order to generate the form feed function. The program should always
be properly set to match the printer's operation. If the printer does
have automatic line feed, the preferable choice is to disable this
function on the printer. If it isn't or can't be disabled, add the
'/A+' command when DMP is installed. The '/A-' command resets to the
DMP /U+ and DMP /U- commands:
Allow or suppress line feeds after carriage returns.
This command refers to characters which are being sent from an
application program to the printer. '/U-' inhibits line feeds after
carriage returns; '/U+' reverts to default state. It can sometimes
be used to force single-spacing when the program is printing double-
spaced. It can also be used together with /A and /L to force a
consistent print format from a variety of programs which use different
Line feeds are not inhibited in graphics '/G+' mode.
DMP 2.03 - page 21.
DMP /F+ and DMP /F- commands:
Inform DMP whether the printer has form-feed capability.
'/F+' (default state) tells DMP to pass form feeds to the printer,
and to use form feeds when needed. '/F-' causes the form feed
function to be simulated by adding line feeds to the end of the
physical page length set by the '/P' option. The program should be
set to match the printer.
Form feed characters are not converted in graphics '/G+' mode.
DMP /Pnn command:
Set physical page length.
'nn'=number of lines per page, 5 to 99.
This command informs DMP of the number of lines (printer line feeds)
on a page. 66 lines corresponds to 6 lines per inch, 11 inch paper.
The program should be correctly informed if the page length is
different. This number is used by the program for the form feed
function and the 'skip perforation' function. See the '/V' command
below. The page length might be changed for graphics mode or an
unusual page layout.
Entering this command with no numbers will cause the program to
display the current setting. Entering this command at any time causes
the program to be set to 'top of form', with nothing sent to the
DMP /Vnn command:
Set text length - number of lines to print per page.
This command is used in conjunction with '/P', above, to tell the
program when to advance to the next page during continuous printing.
In the default state, the printer will not skip lines for the perfor-
ation, since the text length is set longer than the physical page
length. To enable this function, set the text length to one or more
lines less than the page length with this command.
Entering this command with no numbers will cause the program to
display the current setting. Entering this command at any time causes
the program to be set to 'top of form', with nothing sent to the
No perforation skip or automatic form feed functions take place
when the driver is in graphics '/G+' mode, regardless of the settings
for page and text length.
Example: DMP /P84/V85
-Set printer to 84 lines per page (14 inch paper). Disable 'skip
DMP 2.03 - page 22.
DMP /Mx command:
Set left margin. x is a decimal number from 0 to 99.
This command allows a left margin or indent to be added to
printouts. The number of spaces entered as 'x' will be added to each
line. DMP /M0 removes the margin. If any left margin has been
selected it will be shown on the summary display. No left margin is
added in graphics '/G+' mode.
Please do not confuse this command with the "/MX:nn" command for
selecting the internal buffer size. This margin command does not use
the colon, and can be entered at any time. The memory command needs
the colon, and can only be entered when DMP is installed.
DMP /T+ and DMP /T- commands:
Tab expansion function ON/OFF. The defaults are tab stops at every
8 positions, expansion off.
/T+ enables tab expansion, /T- disables it. Any tab characters
received will advance the print position to the next tab stop set.
Refer to the other '/T' commands below for setting tab stops. Tab
expansion should be disabled if the printer includes tab stops and you
want to use this feature. Since DOS and most word processors include
tab expansion, this feature will not usually be needed. It is useful
when copying disk files which include tabs directly to the printer, or
if you want to set your own custom tab stops.
No tab expansion occurs in graphics '/G+' mode.
DMP /TR command:
Reset tab stops to every 8 positions. Removes any tab stops set by
other '/T' commands. Sets a tab stop at every 8 positions.
DMP /TC command:
Clear all tab stops. Useful before setting tabs to a new format.
DMP /Taa+,bb+,... or DMP /Txx-,yy-,... commands:
Add or remove tab stops at column positions.
'aa','bb',...=column numbers to add tab stops.
'xx','yy',...=column numbers to clear tab stops.
The column numbers followed by '+' or '-' may be intermixed to set
up a complete tab format.
(Enter this entire command on one line.)
Resets tabs to every 8 columns, i.e. columns 9,17,25,..., enables
tab expansion, then clears tab stops from columns 41, 57, 65, 73,
81 and adds tab stops at columns 43, 64, 69, 75, 82.
DMP 2.03 - page 23.
CHARACTER STRINGS IN COMMANDS:
The next 4 commands require entry of character strings for output or
conversion. This is shown as:
A character string may be entered on the command line as either a
quoted string, like: "Abc" or a series of decimal numbers like:
65,98,99. If more than one of these is needed, separate them by
commas. 5 examples of valid strings are:
"XYZ" 13,10 27,"W",65,66
Send character or control code string to printer. See the
description of character strings above.
This command jams characters directly to the printer, at the output of
the spooler. It is useful for resetting the printer to a desired
state on startup, or for changing pitch, etc., especially from a batch
file. Refer to your printer manual for codes needed. This command
sends characters to a printer only, not to a disk file.
Example: DMP /C27,"U"
-Send 'Esc,U' to printer.
CHARACTER CONVERSIONS - ESCAPE SEQUENCES
Convert or inhibit an 'escape' sequence. Remove conversion or
inhibit for a sequence. See the description of character strings
These commands allow conversion of control sequences beginning with
the 'Escape' character (ASCII 27, Hex 1B). If a number of these
conversions are set up, the control sequences for one printer can be
substituted for another.
The first syntax causes the sequence on the left of the '=' to be
replaced by the one on the right of the '=' before being sent to the
printer. The '-' (minus) option inhibits the escape sequence from
being sent to the printer. The '+' (plus) option removes previous
conversions or inhibits for this sequence.
The limitations are as follows: A total of 64 sequences may be
converted or inhibited at one time. Each sequence may consist of up
to 20 characters for both the input and output strings. (40
characters total.) The total number of characters in all conversion
sequences is limited to 512. Sequence conversion is not recursive.
The converted sequences are sent directly to the printer without
passing through the converter again.
The escape character is implied in the command. Do not include it
DMP 2.03 - page 24.
after the '/E'. The escape character is NOT implied in the 'to'
sequence. Escape sequences may be replaced by any other sequence.
No escape sequence conversions take place in graphics '/G+' mode.
Example: DMP /E"W"=27,"E" /E"&"=27,"F"
Convert the sequences 'EscW' and 'Esc&' to 'EscE' and 'EscF'. This
would convert the Diablo 630 bold on/off functions to the cor-
responding Epson functions.
CONTROL AND HI-BIT CHARACTERS
DMP /Xnn=- or DMP /Xnn=+ commands:
Convert or inhibit a control character. Remove inhibit from a
'nn'=decimal code for the character to be converted. See the
description of character strings above.
'nn=-' inhibits this character from being sent to the printer.
'nn=+' removes previous conversion or inhibit for this character.
Control characters can be converted or blocked from being sent to
the printer with these commands. Valid control characters for this
command are ASCII codes 0 thru 31, except Tab(09), CR(13), LF(10),
FF(12), and Escape(27).
The single control character is replaced by the string before being
sent to the printer, or it is blocked from being sent.
This function can be used for a limited amount of conversion of
commands for one printer to commands for another, or to block printer
commands from a word processor or other program that refuses to
Any conversions remain in effect when printer output is redirected
between serial and parallel printers. No conversions or character
inhibits take place in graphics '/G+' mode.
DMP /X15="x" Convert ^O to lower case 'X'.
DMP /X23=- Prevent ^U from being sent to the printer.
Convert a Hi-bit Ascii character or group of characters by entering
data in the conversion table. 'nnn'=decimal code for a hi-bit
character. See the description of character strings above.
The character string of one or more characters is entered in the
conversion table starting at the specified character 'nn'.
Hi-bit ASCII characters are those with codes greater than 127. For
these characters, each one is replaced by one character from a
conversion table before being printed. The startup state of the table
maps each character to itself, so no conversions take place unless you
enter them. A group of conversion table entries is entered with this
DMP 2.03 - page 25.
command by specifying the starting character, 'nnn' in the above
syntax, then entering the character string.
Although the syntax is the same for control characters (above) and
hi-bit characters, the commands are interpreted differently. Each
control character can be converted to a sequence of characters, while
each hi-bit character can be converted to one other character. The
sequence in the command for a hi-bit character conversion makes a
group of entries in the table for converting a group of hi-bit
The hi-bit conversions can be used to make your printer display the
IBM box-drawing characters, math symbols, etc. as they show on your
monitor, if the printer uses a different set of characters.
If you enter any hi-bit conversions into the table with this
command, it is a very good idea to save the configuration with the
"/WCF" command so you won't have to enter them again.
No hi-bit character conversions will take place in graphics '/G+'
DMP /LIS command:
Display all control character and escape sequence conversions in
Causes the driver to display a table of all conversions in effect.
The table is displayed when any conversion commands are entered. This
command permits checking the table without changing any entries.
A typical display is as follows:
Escape sequence conversions:
The numbers on the left show the characters for which conversions are
in effect. Those on the right show the outputs, or inhibited status.
DMP 2.03 - page 26.
The following commands give you precise control over the spooling
functions in DMP. They are especially useful for error recovery
DMP /SK Command:
Cancel printing. Flush buffered printer data.
Deletes any spool files from disk. Empties any memory buffers.
Printing stops, but spooler operation continues normally after reset.
Any data spooled for printing is lost. Useful for paper jam, printer
malfunction, wrong setup, etc. This command has no effect during
If printer output has been set to a disk file, this command does
not delete the disk file or stop the output.
This function is also performed by DMP when the "/UN" un-install
command is entered. You do not have to cancel printing before un-
DMP /S- command:
Stop spooler output to printer.
Turns off output to printer. Spooler continues to function,
generating printer output data to memory and/or disk if needed.
Output can be re-enabled from the point where it was stopped with the
'/S+' command. Useful for spooling output for printing later,
changing printer paper, etc. This command has no effect during
If printer output has been redirected to a disk file, this command
affects only data which is still spooled for the printer, if any.
Output continues to go to the disk file.
-Spooler output is turned off temporarily.
DMP /S+ command:
Restart spooler output after '/S-' or '/SB'. Turns on output to
printer after it has been turned off with '/S-', or bypassed with
No effect if the output is already on.
DMP 2.03 - page 27.
DMP /SB Command:
Bypass spooler function.
This command bypasses spooler and driver operation for all subsequent
printing. All printer output is sent thru BIOS. The program is re-
enabled by the '/S+' command. If printer output was directed to a
disk file, it will stop going to the file until re-enabled by the
'/S+' command. Any data spooled for a printer will continue to print
after this command has been entered. This command has no effect
DMP /ST+ Command:
Use true printer status for status requests.
If a program requests the status of the printer from DMP the default
operation is to return a "ready" status if the spooler is able to
accept more data. Entering this command causes the true hardware
status from the printer to be returned. This command also causes DMP
to return an error if the printer is not ready when a program tries to
print, as soon as the internal buffer fills (about 4k bytes). The
spooler will stop accepting data until the printer is ready to print,
regardless of how much memory or disk space is available. This
command is for special situations, and is rarely needed.
DMP /ST- Command:
Use spooler status for status requests.
Reset status request handling to the default operation - return
spooler status. More detail on the printer status operation is found
in the technical section near the end of the manual.
DMP /NV command:
Suppress all messages when commands are executed.
DMP displays normal messages through DOS to "standard output", error
messages to "standard error". This command turns off all message
output (except copyright notice when installing). It suppresses both
normal and error messages.
If you want to suppress only normal messages and still display
errors, you can run DMP as DMP/options... >NUL. This causes DOS
standard output to be redirected to "nul" - not displayed.
This command can be used when another program calls DMP via the DOS
'exec' function. DMP will return error level 0 if no errors occur,
error level 2 otherwise. This command does not turn messages off
permanently. It must be entered on the command line any time messages
are to be inhibited.
DMP 2.03 - page 28.
USING THE ENVIRONMENT VARIABLE
DMP will read memory spooling commands from a DOS environment var-
iable when it is being installed, if desired. The variable should be
entered with the 'SET' command as:
SET DMP = /options.
'options' can be memory commands "/MXP", "/MXT..", "/MXALL.." for
selecting expanded or extended memory or both for spooling. DMP will
look for the "DMP=" environment variable when installing only.
The use of the environment variable is optional, and the program will
execute command line selections whether the environment variable is
used or not.
USING THE CONFIGURATION FILE
The configuration file was mentioned under "Saving Your
Configuration", above. It is a very convenient way to set up a
complex set of options without having to remember a lot of commands,
and without needing a batch file.
When DMP is installed, it looks for a file named DMP.CFG which
holds the selections for most of the options. If this file is not
found, all the default parameters are used. The command to save the
file is DMP /WCF. It stands for "Write Configuration File".
Once you have stored the configuration, you do not need to re-enter
your options every time you use DMP. The basic options saved include
the type of memory and/or disk spooling selected, all the character
conversion and page formatting options, and the printer output port
You can change option settings and re-write the new options with
another /WCF command at any time. It is a good idea to do this as you
'fine tune' the settings for a printer/computer combination.
You can go back to the last saved option settings by entering DMP
/RCF after installing DMP. This is useful if you have changed the
options and then decide you liked them better the way they were.
The DMP.COM file may be renamed if desired. Under DOS 3.0 or
later, DMP looks for a configuration file with it's own name and the
extension changed to ".CFG". Under all versions of DOS 2, it uses
file "DMP.CFG" in the current directory. This is only important if
you rename the DMP.COM file or if you install DMP from different
directories each time under DOS 2.
There are two options not saved with the configuration file:
1. Printing to a disk file.
2. Program in graphics/binary mode or bypassed with the "/G+" or
DMP 2.03 - page 29.
DMP WITH MORE THAN ONE PRINTER
- Still more examples.
The output port selection commands allow a thoretical maximum of
five (!) printers to be controlled by DMP, one at a time. This
includes the three standard parallel and two serial ports that can be
installed on a PC or compatible system.
DMP is designed with features making it particularly suited to a
two-printer system. If one printer is serial and the other parallel,
on any of the standard ports, changing back and forth can be done with
only DMP /LPT for parallel and DMP /COM for serial, once the
configurations are set.
Two printer example:
Two parallel printers are being used. The first is on port 1 and
does not need any character conversions, the second is on port 2
and requires tab expansion and a line feed added after each
carriage return. Only one installation command is needed:
DMP /LPT2 /MXT 0 384 /DC: /T+ /L+ /WCF
Extended memory and hard disk C: are used for spooling. DMP now
starts up with the second printer selected.
Switch to the first printer with: DMP /LPT1 /G+.
Switch to the second printer with: DMP /LPT2 /G-.
DMP AND WORD PROCESSORS
DMP works well with all types of word processors. This section
gives you a few tips for getting the most from your word processor and
DMP at the same time.
If your word processor does not support your printer, you can use
some of the escape sequence and character control functions in DMP to
get page formatting on your printer to match one your word processor
does support. This can be a tedious process, but it may still be
better than buying a new printer!
If your word processor supports your printer and drives it normally
- thru the system BIOS or DOS - you get maximum benefits from both
programs. DMP should usually be put in "/G+" mode while using the
If you have a serial port printer, set up DMP with the "/COM"
command and the proper settings for your serial port. Do not use the
DOS "MODE" command. It is sometimes necessary to tell your word
processor to print to "PRN" or "LPT1" to get it to spool through DMP.
Experimenting with a single page printout should tell you if the
settings are correct.
If your word processor supports your printer and drives the PC's
hardware directly, you may not know it. Try printing a page or two
DMP 2.03 - page 30.
with DMP installed, and see if the system is returned to you right
away while the printer is printing. If so, the spooler is working.
If not, the word processor is driving the printer directly. A number
of "high-end" word processors and desktop publishing programs will do
this. For this type of program, you should set DMP to match your
hardware, and of course do not try to print from DMP and the word pro-
cessor at the same time. You still get the features of DMP for
printing from other programs, printing disk files, etc. You should
also get all the features of your word processor with no conflicts.
This section provides some detailed information on how the DMP
program works. Read it if you are interested, or if you are having
problems getting started. The commands are described in detail in the
HOW COMMANDS ARE INTERPRETED.
When DMP is installed, it reads the configuration file before any
commands you enter at the DOS prompt. This means you can override any
of the settings in the file with commands if you want to.
The commands for selection of spool buffers, output port, and all
character conversions may be entered in any order. The program reads
them in the order desired, and ignores conflicting commands.
DETAILS OF PROGRAM OPERATION.
DMP is a "generic" printer driver, not configured for any specific
make or model of printer. Use of the character and escape sequence
conversions, serial port redirection and several other options will
almost certainly require a thorough understanding of the printer
manual for the printer to be used. Referring to that document at the
same time as the command options given here should allow the program
and printer to work together harmoniously, though the process may take
DMP only works with the 'primary' printer on a system, designated
'PRN' by DOS. It can work with more than one printer on a system, one
at a time, as explained above.
DMP functions by intercepting the BIOS software printer interrupt
(17hex), converting characters as needed, and sending the resulting
output to the spooler. The spooler saves the data as it is received,
then sends it to the printer by driving the parallel or serial port
directly, or sending printer output to a disk file.
Calls to INT 17H for a printer other than the primary one are
'chained' to the previous vector. The spooler also intercepts the
timer interrupt, calls the previous owner of the timer, then checks
for any printer functions needed. If the printer is redirected to a
DMP 2.03 - page 31.
COM port, the hardware interrupt for that port is also used, and the
use of the timer interrupt is reduced.
The timer interrupt is also used to time out the print-to-file
function after a few seconds of no activity.
DMP also uses DOS software interrupts 21H and 28H to get access to
DOS for disk read and write functions.
The character and escape sequence conversion functions use internal
conversion tables. The hi-bit characters are converted from a simple
128 byte lookup, which is initialized to all the same characters. The
escape sequence conversions use a separate 512 byte buffer for the
conversion strings. The strings are sorted when they are entered, and
compared using a binary search when being received. This puts as much
of the complexity as possible in the non-resident portion of the
A large amount of the code in DMP is for error handling. The basic
approach if the spool buffers fill, but the printer is still printing,
is to wait about 90 seconds for the output buffer to empty. If it
doesn't empty, return an error to the program that is printing.
Contention for access to the disk presents a more complex problem.
DMP will sense a "deadlock" condition if one arises, and again return
an error to the caller. The use of expanded or extended memory for
spooling helps avoid such problems.
DMP checks the printer hardware status every few seconds when no
printing is going on, and continuously when printing. If the spool
buffers fill and the printer is not ready (or the output is off) an
error will be returned to any program trying to print. DMP will sense
a "not ready" status from a printer after about a 5 second delay. It
will sense a serial port stopped by either hardware or software
control, as well as the parallel port status. Note the error
condition only applies if there is no more memory or disk space for
If the true printer status is selected with the "/ST+" command, the
true printer status is returned to any program that requests status
before printing. This can be useful if you want to make sure the
printer is ready before starting a large print job. This can have the
drawback of causing occasional errors if a printer has its own buffer
and becomes "not ready" for longer periods while printing.
The "Print-to-disk" option uses the input data buffer. The buffer
is written to the disk file when it reaches half of the input buffer
size, as soon as DOS is available for the disk write function. If the
buffer fills up and DOS is not ready, the information for the file
will be written to memory buffers if any are available. If there is
nowhere else to go, an error return is given to the program that is
printing. DMP will not "throw away" data if the disk is not
available. The buffer will also be written to the disk after an 8
second (approx.) timeout if nothing has been output to the printer.
DMP 2.03 - page 32.
PARALLEL PORT INFORMATION
When the computer is turned on, the BIOS finds the parallel printer
by sending signals to each of 3 possible port addresses, in a specific
order. The first port responding becomes "LPT1" or "PRN" for DOS. If
a second port responds, it becomes "LPT2". Thus the BIOS designations
don't correspond to a specific hardware setup. DMP will use the one
BIOS finds if you don't specify otherwise in a "/LPT" command, but
doesn't necessarily use the same naming convention.
If you set the parallel port output with a "/Bn" command instead of
"/LPTn", DMP will send printer output to a specific set of hardware
addresses. Note the "/B" command uses numbers from 0-2, instead of 1-
3 like the "/LPT" command.
The ports for the "/B" command are defined as:
Port #0 - I/O addresses 378-37F hex - The one on the motherboard or
on the 1st multi-function board (often).
Port #1 - I/O addresses 3B8-3BF hex - The one on a display adaptor.
The one on a multi-function board (sometimes).
Port #2 - I/O addresses 278-27F hex - The 2nd one on a multi-
function or other option board.
When sending data to a parallel port, DMP will try to determine the
optimum speed to drive the printer while still allowing the computer
to run other programs. It does this by sending characters in groups
to the printer, until the group gets too large for one time slice.
This optimization takes place any time there is something being sent
to the printer. You can adjust the maximum group size with the
"/LPTx:nn" command, where x is the port number and nn is a speed index
from 0 to 99. Note 0 does not mean no data will be sent. The default
value for this speed index is 75, corresponding to a maximum rate of
about 900 characters per second. While this is much faster than most
dot-matrix printers will accept data, a laser printer will frequently
accept even higher rates for short bursts.
If your printer is not printing as fast as it can, and your
computer is fast enough, you can experiment with raising the maximum
rate to trade off computer time for printing speed. If your computer
is running other programs too slowly while printing with DMP, you can
try lowering the maximum rate to get more time for your other
programs. Your printer will slow down, of course.
One other parameter effects the output speed: Selection of the
"/G0" graphics option causes the printer output to pause briefly after
sending a carriage return. This will also slow the overall output
down, and is intended for older dot-matrix or daisy-wheel printers
that can not accept data at high speed or have timing constraints on
how fast one line can follow another.
DMP 2.03 - page 33.
EXTENDED MEMORY USE GUIDELINES
This section gives some information on various methods for using
extended memory on 80286 or later processors. It is intended for use
by those who are just setting up a new system, or considering changing
their setup to accomodate the DMP spooler. If your system is already
set up with programs using extended memory, and you don't want to
change it, one of the methods explained in the sections on memory
spooling should allow you to find a "slot" for DMP to spool.
There is not a widely accepted standard for allocating extended
memory, as there is for expanded. Several informal methods exist, as
well as the XMS standard. The XMS is the only method DMP will use to
allocate and de-allocate extended memory, but you can spool to
extended memory without using an XMS driver program. To do this, you
need to directly control which portions of extended memory are to be
used by the different programs using it. DMP allows such control, as
explained in the section on extended memory spooling.
If you have a 80386 or later cpu there are more options available.
Recommended uses, in order of preference, are:
-Use one of the drivers made for 80386's, dividing up your memory as
desired. Some of these programs also allow you to run multiple DOS
sessions, load TSR programs above DOS, etc. Allocate your memory to
fit your other applications, leaving as much as you need for
spooling. The amount left for DMP can be either set to extended
(XMS) or expanded (EMS). Just command DMP to use the one you want.
-Use your extended memory for a ramdisk, but leave some unused so DMP
can spool to it. Allow spooling to both the extended memory and the
ramdisk. The ramdisk will be used only when the extended memory
With a 80386 cpu you would not normally use the XMM driver supplied
with DMP, as other drivers can make better use of the extended memory.
If you have a 80286 cpu, the choices are a little different:
-The XMM driver is the preferred method for controlling extended
memory, if it is practical for you. The list of applications that
can use Himem.Sys is growing, and includes some very popular ones.
If you want to use the HMA for spooling, load DMP before other appli-
cations using the HMA, or command your other TSRs to avoid using it.
In any case, extended memory will be allocated dynamically by DMP and
any other programs if you use the XMM driver.
-Reasons for NOT using the XMM driver include incompatibility with a
ramdisk or other program needing extended memory, or incompatibility
with your specific hardware. If you do not use the driver, leave as
much extended memory unused by your ramdisk as you feel you can
afford to use for spooling, and assign DMP to the proper address
range to use it. Using extended directly avoids possible contention
with other programs for access to DOS. If you allow DMP to use the
ramdisk as well as the memory, the ramdisk will be used only when the
memory fills up.
DMP 2.03 - page 34.
There are also some driver programs available that simulate
extended memory with expanded memory. A reason for doing this would
be to put the memory in one larger piece for use by a ramdisk or other
program. DMP is compatible with such programs, since DMP uses the
system Bios or the XMM driver to access extended memory. The sim-
ulator program goes "below" DMP and the XMM driver.
When you install DMP for spooling in extended memory, and the XMM
driver is present, DMP will request the HMA for 32k bytes, as a TSR.
This is in accordance with the standard. If you want to use the XMM
driver on your system, but do not want DMP to use the HMA, there are
two basic methods for doing this. You can load your other programs
using the HMA first, or you can tell the XMM driver not to allow DMP
to use the HMA.
If your other program using the HMA is a resident program, it is
easiest to load the other program first, or load the other program
before giving DMP access to XMM memory with the "/MXT" or "/MXAll"
command. If you want to use the HMA from an application program, you
need to tell the driver to deny requests for the HMA when the amount
requested is 32k bytes or less. If your driver conforms to the
standard, this can be done with the following line in your Config.Sys
"DEVICE = HIMEM.SYS /HMAMIN=33".
This represents an unusual situation, i.e. using extended memory for
spooling, with the XMM driver, but no use of the HMA, and DMP loaded
before the program that needs the HMA. It is provided to keep
compatibility with the standard.
SYSTEM MEMORY USE AND THE UN-INSTALL FUNCTION
Of the system memory used for DMP, about 9K bytes is program code
and internal data. Seperate buffers are used for input and output
with 6K bytes total in the default configuration. An internal stack
is used when needed during timer ticks.
If expanded memory is used for spooling, it is allocated in 32k
byte portions as needed, and released when done. This also applies to
extended memory if the XMM driver is used. Extended memory without
the XMM driver does not have a means to allocate and deallocate, so
DMP just uses whatever portion it has been selected for. If HMA
memory is used, it is allocated just once, and will not be de-
allocated unless a "/MXNONE" command is issued and the spool buffers
empty, or DMP is un-installed.
When the "/UN" command is issued, DMP will replace all of the
interrupt vectors it was using to their previous status, and de-
allocate the DOS memory it has reserved. DMP will try to remove
itself from memory even when it is not the last program installed. If
another program is using some of the same interrupts DMP needs, DMP
will not be able to un-install itself. In this case an error message
is displayed. Removing programs in the reverse order of installation
should solve this problem, if you encounter it.
DMP 2.03 - page 35.
There are some free utility programs available that can remove
programs like DMP from memory. These programs may be a good
alternative to the "/UN" command, especially if you want to add and
remove programs in groups. Some precautions should be observed when
using these programs, though. If you have set up DMP to use HMA
memory, as explained in the section on spooling, this area will not be
released back to the pool of available memory unless you use the "DMP
/UN" command. The same precaution applies to the use of expanded
memory, and to extended memory allocated by a driver. Also, any spool
files on a disk will remain if you remove DMP with a memory utility
program. These last two precautions only apply if you have data
spooled for printing.
DMP 2.03 - page 36.
DMP COMMAND SUMMARY CHART
Function Default Select(DMP/..)
Set printer output to parallel port #n. BIOS
Max output speed xx. 75 LPTn:xx
Set default parallel port Bios port LPT
Printer output to serial port x, bit Parallel COMxRyy
rate yy, Data, Parity, Stops 8N1 DPS
Wait for abc (CTS,DSR,DCD) CTS Wabc
Printer output to filename: Parallel PFfilename
-Append to file if it exists AFfilename
-Overwrite file if it exists OFfilename
Set internal buffer size to nn Kbytes 6K MX:nn
Use expanded memory for spooling None MXP
Use extended memory for spooling, None MXT xxx yyy
use xxxK bytes, start at yyyK over 1MB
Use expanded and extended memory, None MXALL xxx yyy
use xxxK bytes, start yyyK over 1MB
Turn off expanded/extended memory usage MXNONE
Spool to disk drive X. None DX:
Turn off disk spooling DNONE
Spool output OFF (temp) ON S-
Spool output ON, after /S-. ON S+
Cancel printing. Flush buffers/files. SK
Bypass spooler. Pass chars to BIOS. SB
Graphics/binary mode printing ON,OFF. OFF G+,G-
Send,No send LF to printer after CR. *No send L+,L-
Printer does/doesn't auto LF on CR. Doesn't A+,A-
Allow,Suppress LF after CR from user. *Allow U+,U-
Printer does/doesn't have form feed. *Does F+,F-
Set physical page length (paper length) *66 lines Pnn
Set text length for auto FF (skip perf) *70 lines Vnn
Set left margin. nn=0 to 99 *No margin Mnn
Tab expansion ON,OFF *OFF T+,T-
Reset tabs to every 8 positions Reset TR
Clear all tab stops 8 spaces TC
Add tab stops at columns aa,bb,... 8 spaces Taa+,bb+,
Remove tab stops at aa,bb,... " " Taa-,bb-,
Send char. string to printer C
Convert control char nn to string
up to 5 chars., 0 to 31, not Tab,CR,LF,FF,esc.* Xnn=
Inhibit sending control char. nn * Xnn=-
Remove inhibits/converts for char. nn * Xnn=+
Enter conversion chars in hi-bit table * Xnnn=
Convert escape sequence
-remove conversions * E
-inhibit sequence * E
Display all conversions in effect * LIS
Remove program from memory UN
Non-verbose mode (no messages) msgs on NV
Save configuration file WCF
Read configuration file RCF
*DMP makes no conversions for these options with graphics mode ON.*
DMP 2.03 - page 37.
REGISTRATION AND ORDERING
The order form below is for 1-5 copies of DMP. The seperate
file "REGINFO.DOC" contains another copy of the form, plus additional
information on registration, site licenses, distribution of DMP by
disk vendors and user groups, info on how to order by credit card,
and information about LaserZ.
User support is available from the author on CompuServe via PPN
73210,2531. Your questions will be answered within 48 hours, usually
much quicker. If you do not have access to CompuServe, please write
to DMP software at the address on the order form below with questions
or comments about the programs.
DMP ORDER FORM
The registration fee for one copy of DMP is $29 (U.S. and Canada).
If you register prior to April 15, 1991 it is still $18 for one copy.
There is a $5 shipping & handling charge for overseas orders.
For California mailing address please add sales tax for your county.
The space for company name is optional. Please do not staple your
check to this form. Mail this completed form to:
204 East 2nd Ave., Suite 610
San Mateo, CA 94401
You will receive the latest version of the program on 5.25" disk.
Please indicate clearly here____ if you prefer 3.5" 720k disk.
Number of copies___ x $29 $_____.___
Sales tax (CA) _____.___
Total enclosed: $_____.___