DOS Printing and Windows Printers
DOS Printing and Windows Printers
So some work is needed to facilitate a DOS application to print to a Windows printer, mainly:
The stream of text and printer control codes sent to a printer port has to be collected, at some moment interpreted
and formatted to Windows GDI pages.
Those pages then have to be redirected to a Windows printer (mostly not parallel/serial).
Printing in vDos.
If you don’t tell vDos (in config.txt) what to do with text sent to a printer, it lets you select the Windows printer to print
to. If the printer output is plain text, with line/form feeds, eventually extra printer codes inserted by your DOS
application as if it was printing to an Epson, IBM Proprinter or PCL compatible printer, this should mostly work just fine.
You may however want to adjust the default settings of how this text is handled by adding LPTx = or COMx = option
lines to config.txt:
LPTx/COMx = options (x = 1-9, though many DOS programs will at most support LPT1-3 and COM1-4):
Left to the equal sign defines what the application expects to print to. The options to the right what vDos is considered
to do with that:
SPOOL
If used, it has to be the very first option. It postpones printing until Win+Ctrl+S is pressed, the title bar of the vDos
window will show spooling is in progress. To solve persistent timeouts issues (see TIO = below), or to accumulate
DOS print jobs.
TIO: seconds
Printer output is collected as print jobs (Windows printers need this concept), considered to be finished when the
application doesn't send further text for some time. The default setting is: If the last print command was a form feed
(eject page), wait for 1, else 5 seconds. If you get broken pages, or want the printer to respond faster; there’re two
options. Specify the amount of time vDos will wait (1 to 99 seconds). Or disable the timeout functionality by TIO: 0.
Applications can address a printer in various ways, this will only work for the “nice” way: Open, send text, and finally
close a DOS LPT/COM device. Mind, applications aren’t always that nice; nothing could get printed with TIO: 0!
NOLINES
Sequences of three or more “-“ or “=” characters are by default replaced by line drawing characters. For instance “---
-” will be printed as “────”. With NOLINES the original characters will be printed.
HORZ: left[,right,chars]
left: The left paper margin in mm’s.
right: The right margin in mm’s.
chars: The number of characters that has to fit between these margins.
* Default: 15,10,80.
VERT: top[,bottom,lines]
top: The top paper margin in mm’s.
bottom: The bottom margin in mm’s.
lines: The number of lines that has to fit between these margins.
* Default: 10,15,lines calculated based on the paper size.
Example:
LPT1 = spool font:"Courier New" horz:20,10,132
Postpones printing, displays a dialog to select the Windows printer (none set), prints in the Courier New font, sized so
132 characters will fit between the set margins.
CLIP
Don’t print, copy the translated Unicode text to the Windows clipboard to paste into another program.
Example: COM4 = CLIP
"Windows device":
Essentially not meant for printing; communicate with the specified device interactively (expect no text to be collected
as a print job). The colon at the end is required.
Basic support for serial devices, the port has to be setup correctly before vDos is started. In the device manager, or by
MODE COM… at the (Windows!) command prompt.
Example: COM1 = "COM1":