Cannot print from MS-DOS application under Windows
If your MS-DOS application cannot print when running from a shell in Windows, there are a number of possible causes:
USB and other printers are generally not supported by MS-DOS applications, which expect to print to a device such as PRN or LPT1, whereas USB and Infrared/Bluetooth devices exist on non-standard ports that are not accessible to DOS. If the printer also has a parallel port, attach a parallel cable to your computer's printer port.
A technique to print to such a printer is to share the printer, then map LPT1 to the shared printer. This technique requires the local system to have a network card, but if there isn't a physical network card you can install the MS Loopback Adaptor which allows a “dummy” network to be created. Then when the application prints to LPT1, the output is redirected by the Windows print spooler to the printer. (See also Cannot Map LPT1 on Windows XP/Vista.)
Windows GDI or Host-Based Printers
Some inkjet and laser printers do not contain an internal printer emulation and rely on Windows to render the raster image before sending it to the printer. MS-DOS programs cannot print in this way. Use another printer.
ESC/P Raster Printers
Modern Epson inkjet printers use a printer language called ESC/P Raster. This relies on the application to render the dots to form letters and images. It does not contain the ESC/P or ESC/P2 codes to control pitch changes (such as 10 pitch, 12 pitch, condensed etc) that are mostly used by MS-DOS applications. However, the printer will output plain text. If this is not adequate, use another printer.
See also Cadzow Accounting Software for MS-DOS: Printer Specifications.
LPT1 Hijacked By Another Application
If an application has installed a printer device and set it to LPT1, print jobs sent to LPT1 from DOS may go nowhere. Some applications from Intuit have been observed to do this. Check each printer on the system to ensure it is set to an appropriate port.
Parallel Port Settings
Windows NT/2000 and above do not need to use an interrupt for the parallel port (normally LPT1 is IRQ 7, LPT2 is IRQ 5), but this can interfere with legacy applications.
For Windows 2000 and above, this may be disabled as follows:
- Right-click My Computer and choose Properties.
- Click on Hardware, then Device Manager.
- Expand Ports (COM & LPT1), right-click Printer Port (LPT1) and choose Properties.
- Click on Port Settings and set Filter Resource Method to Use any interrupt assigned to the port:
- Click OK and close Device Manager. It may be necessary to reboot before the changes take effect.
Note, enabling an interrupt for the parallel port may prevent other devices working. If you have a removable drive or other device which does not start, and Device Manager shows the following error: This device cannot find enough free resources that it can use. (Code 12), you will need to change the parallel port setting back to Try not to use an interrupt or Never use an interrupt.