Virtual Diablo 630 Printer

This device accepts text and ESC sequences for a Diablo 630 Printer, or one of it's clones, and produces PostScript output to a file. Through the use of "job end" actions, that output may be printer or otherwise handled.

Properties (or parameters) are:

(or "cpi=") The default CPI setting, either 10, 12, or 15.
(or "lpi=") The default (initial) LPI setting, either 6 or 8.
(or "font=") The default (initial) Font to use. Syntax is (or "Name,Style,Size") Where "Name" is a valid string for the host computer's installed fonts. Also accepts Java generic fonts such as "Monospaced". "Style" is things like "PLAIN". "Size" is the point size, typically things like "12" for 10 cpi printing.
(or "paper=") The default (initial) Paper to use. Syntax is (or "Param,...") Where params are some meaningful combination of:

U.S. Letter sized paper, 8.5x11
U.S. Legal sized paper, 8.5x14
Computer forms, 14x11
Portrait orientation
Landscape orientation
(Experimental) Vintage computer green-bar pattern
(or "file=") The initial file to use for output. Especially handy when used as a parameter for multiple printers on a server, to ensure each has a unique and separate output file.
(or "nogui") Do not create/display the printer control console. Useful for CP/Net server applications, especially if multiple printers are being created.
The action to take when a job ends (e.g. ENDLIST.COM is run). Value syntax is:

Throw away output and start next job with empty file. Not terribly useful.
Rename file to a "unique" name. Current built-in filename pattern is "", where the upper-case letters represent the digits of the current date and time. Future: allow specification of pattern.
QUEUE command...
Execute command, presumably to queue the output to a printer. The command is scanned for "%f" which will be replaced with the current output file name. The output will be discarded after the command completes. This command should not produce any stdout or stderr output, and should return promptly (i.e. be well-behaved). Typical command for a Linux system with CUPS, and having a default printer set, might be "lpr %f". The printer queue must be capable of (possibly using special options) processing PostScript. No special shell syntax is allowed, such as redirection, variable substitution, or quoting. The command itself, though, may be a shell script (for example, a wrapper around some more complex command).