Can I print from DOS to an USB printer ? My DOS program prints to the LPT1: port.
Yes. Printfil allows redirection of DOS and Windows output from LPT1:, LPT2:, LPT3:, up to LPT9: (as well as COM1: ... COM9: serial ports) to an USB printer (or a printer connected to any other Windows port).
Printfil can capture the parallel port either by intercepting the LPT calls at the NT-Kernel level (in the newest Windows systems), or by using the "Printfil" virtual printer, which is automatically installed in the Windows Control Panel (on older Windows systems), but there are other choices.
If your program can print to a file itself (many legacy applications can do it, even DOS), you don't need to capture the LPT output; you simple have to setup Printfil to check for the very same file name.
In any case, once Printfil has captured your print jobs, either by redirecting the parallel port's output, or by directly reading the source file, the print job can be forwarded to any Windows printer, including USB, network printers, fax printers, PDF writers etc.
You do not need to make changes to your DOS or Windows Console program to do this.
If any Windows program can print to that printer (say Ms-Word), then your legacy program can too, through Printfil.