Here’s the problem: inexpensive printers are as brain-dead as are their compatriot win-modems. I mean to say, these win-printers rely on the printer drivers to render the hardcopy. The drivers (simply speaking) drive the inkjet nozzles directly instead of sending character codes and escape sequences – a printer control language like Epson’s ESC/P2 command set.

And that’s a problem for those who still use DOS-based applications. Windows applications use a process that involves things called GDI and WMF (sometimes RAW). These things are beyond the scope of this article but suffice it to say that in Windows 2000 and XP, DOS-based applications are not afforded the GDI process. In many cases, the application’s output is run through the second half of the system but is unceremoniously ignored and as a result, nothing happens.
The solution, as best as one gets until a specific printer driver exists that makes the following process seamless, is to convince the DOS-based application to send its output to a file. Or, if that cannot be done, then redirect the LPT’s output to a file. Or, if that cannot be done, capture the output destined for the port to a file. Once the application’s output (from now on, called the "text stream") has been written to a file, another program can take that file and process it just as if you were using Notepad to load and print that text stream.
DOSprn is one such utility that does this. It is constantly looking for the presence of a specific file in a specific folder and, once it shows up, the utility interprets the embedded font control commands, translating that into the GDI process, and then sending the document to the win-printer. As mentioned before, DOSprn is one of several utilities that solve this problem – DOSprn was evaluated because it seemed to do what I needed it to do (and nothing more) and was the least expensive of the bunch. (And was perceived to be the simplest in its operation, perceived to be the least obnoxious in its evaluation mode, and/or perceived to be the least pernicious when uninstalling.)
During my evaluation, I had cause to discuss with the author my concerns on several aspects of this utility. Alex Goldberg (one of two authors mentioned in the utility’s help file) promptly replied with acknowledgements and suggestions about the state of affairs with this version. During my testing, he sent me a beta of v1.72 which added several missing features and fixed a few bugs. For this beta of version 1.72, there are still a few bugs to be worked out and a few others that are promised to be fixed in the v1.73 release.
This utility interprets the text stream using any of several included or custom built "Escape-Sequence" tables. Most of the typical font special effects are available and the Esc-Sequence table is used to pair the printer’s command set to the special effects. For example, ESC-E ([#27,#69] or [$1B,$45]) sets an Epson printer to Bold font. If when scanning the text stream DOSprn sees this combination of bytes, all following characters will be printed in bold until DOSprn sees the ‘bold off’ sequence.
A somewhat complete collection of printing special effects include: bold, underline, italics, strikeout, double width, pica, elite, condensed, superscript and subscript, double height, various line spacings, horizontal and vertical tabs, and color. V1.72 adds a few more special effects. Because these effects are rendered through the established Windows printing sub-system, it matters not what the actual printer is nor how it is connected to the computer – networked, USB, LPT, or even FAX.
The Epson command set is one of three included Esc-Sequence tables: none, Epson’s ESC/P (and /P2), and HP’s PCL. The user can create an entirely new Esc-Sequence table to accommodate whatever printer the application is coded to use. However, should this user wish to share the efforts of having created a custom table, or want to copy and tweak an existing table, then a trip through the registry using REGEDIT is required.
The critical missing component is graphics capability. Should your application print pictures, DOSprn v1.71 does not have the capability to capture the graphics bytes and assemble them into an image. (A few other programs of this type have that ability.) The beta of v1.72 hints that this capability is forthcoming.
The DOSprn web site does not make any mention of what, if any, restrictions or additions the program has in its evaluation state versus its registered state. Here’s what happens: Print jobs acquire an ever increasingly darkening watermark. The program’s evaluation period is not time-based. It is based on the job count. After about the tenth print, a very light "Unregistered" is watermarked on the hardcopy and gets a shade darker for every print after that. I’ve been told that the program will not print after the 100th document. Not being told up front what to expect in the evalution version’s behavior is a serious dark mark against the authors.
In my evaluation, here is a summary of the problems I found:
There is the ability to print condensed characters. Sending Epson’s condensed print command sequence had no effect on the output. Alex says it works but that didn’t happen in my experiments.
There is the ability to print double-width characters. The Epson control language includes a command to engage double-wide printing until a ‘new line’ sequence is encountered. This control code is not interpreted correctly. Currently, if the command SO (#14, 0x0E) is sent, double-width printing is never automatically cancelled. Version 1.72 is promised to have ‘current line only’ and ‘switch on/off’ printing special effects.
There is the ability to add control sequences to an Ignore line. That is, any sequence of bytes encountered as listed here are absorbed and does not effect the hardcopy. Unfortunately, it doesn’t work with variables. That is, a sequence of ESC-N-# where # is a variable parameter is not absorbed by DOSprn. This means that, although you intend to have this Epson command sequence absorbed (Set skip-over perforation), the hardcopy will have "N" erroneously appear. Again, this promised to be fixed in the next release.
I asked Alex how one could easily create another set of escape sequences, say a set slightly modified from the current Epson Matrix set. The sets are stored in the registry. Renaming a registry key to Epson Matrix 2, for example, will cause DOSprn to automatically recreate the original Epson Matrix. The user can then tweak the Epson Matrix 2 set to correct for some particular problems. By exporting a custom sequence set’s registry key, you can make that set available to other users.
On a personal note, the fonts used in the User Interface is the standard MS Sans Serif 8pt. I wish for this font were made illegal, as well as any other font that can confuse lowercase ‘i’ and ‘j’, and uppercase ‘I’, lowercase ‘el’, and the digit ‘1’. I’ve expressed to the authors my desire to see the User Interface use the font I specify in the Windows Display Properties sheet.
Overall, I really think this utility is (or very soon will be) the best utility for the price available to solve the problems of those who will not or cannot move away from DOS-based applications.
DOSprn v1.71
Ivan Ignatenko and Alex Goldberg
Single license: $12.95
Multi-license rates available.
dosprn.netfirms.com