Maybe it would be best to break these up into more explicit, separate
types. Replace LineData and LinePrinter with something like this:
carriage-control-asa
A subset of carriage-control-ansi. The print control character (first
character in record or line) defines the action to be taken before
printing the current print line. Only these four characters are
supported:
Space Outputs the rest of the line without change.
0 Outputs a newline character before printing line.
1 Outputs a formfeed (start a new page) sequence before printing
line.
+ Outputs a carriage return sequence so that line is output over
the previous line. If + starts the first line, it's treated as a space.
carriage-control-ansi; charset=us-ascii
carriage-control-ansi; charset=ibm1047 (EBCDIC)
The print control character (first character in record or line) defines
the action to be taken before printing the current print line.
|---------+--------------------------|
| Characte| Action |
| r | |
|---------+--------------------------|
| blank | Advance one line |
|---------+--------------------------|
| 0 | Advance two lines |
|---------+--------------------------|
| - | Advance three lines |
|---------+--------------------------|
| + | Don't advance - used for |
| | overprinting |
|---------+--------------------------|
| 1 | Skip to channel 1 - |
| | normally top of form |
|---------+--------------------------|
| 2-9 | Skip to channel 2 - 9 |
|---------+--------------------------|
| A-C | Skip to channel 10 - 12 |
|---------+--------------------------|
carriage-control-machine
Spacing can occur before or after printing the current line. The print
control character (first character in record or line) moves to a
predefined position on the page that is associated with a value of 1
through 12, known as the channel code.
|-----+-------------------------|
| Valu| Action |
| e | |
|-----+-------------------------|
| X'09| Advance one line - after|
| ' | |
|-----+-------------------------|
| X'0B| Advance one line - |
| ' | before |
|-----+-------------------------|
| X'11| Advance two lines - |
| ' | after |
|-----+-------------------------|
| X'13| Advance two lines - |
| ' | before |
|-----+-------------------------|
| X'19| Advance three lines - |
| ' | after |
|-----+-------------------------|
| X'1B| Advance three lines - |
| ' | before |
|-----+-------------------------|
| X'01| Don't advance - used for|
| ' | overprinting |
|-----+-------------------------|
| X'0B| Space one line - before |
| ' | |
|-----+-------------------------|
| X'89| Skip to channel 1 - |
| ' | after |
|-----+-------------------------|
| X'8B| Skip to channel 1 - |
| ' | before |
|-----+-------------------------|
| X'91| Skip to channel 2 - |
| ' | after |
|-----+-------------------------|
| X'93| Skip to channel 2 - |
| ' | before |
|-----+-------------------------|
| X'99| Skip to channel 3 - |
| ' | after |
|-----+-------------------------|
| X'9B| Skip to channel 3 - |
| ' | before |
|-----+-------------------------|
| X'A1| Skip to channel 4 - |
| ' | after |
|-----+-------------------------|
| X'A3| Skip to channel 4 - |
| ' | before |
|-----+-------------------------|
| X'A9| Skip to channel 5 - |
| ' | after |
|-----+-------------------------|
| X'AB| Skip to channel 5 - |
| ' | before |
|-----+-------------------------|
| X'B1| Skip to channel 6 - |
| ' | after |
|-----+-------------------------|
| X'B3| Skip to channel 6 - |
| ' | before |
|-----+-------------------------|
| X'B9| Skip to channel 7 - |
| ' | after |
|-----+-------------------------|
| X'BB| Skip to channel 7 - |
| ' | before |
|-----+-------------------------|
| X'C1| Skip to channel 8 - |
| ' | after |
|-----+-------------------------|
| X'C3| Skip to channel 8 - |
| ' | before |
|-----+-------------------------|
| X'C9| Skip to channel 9 - |
| ' | after |
|-----+-------------------------|
| X'CB| Skip to channel 9 - |
| ' | before |
|-----+-------------------------|
| X'D1| Skip to channel 10 - |
| ' | after |
|-----+-------------------------|
| X'D3| Skip to channel 10 - |
| ' | before |
|-----+-------------------------|
| X'D9| Skip to channel 11 - |
| ' | after |
|-----+-------------------------|
| X'DB| Skip to channel 11 - |
| ' | before |
|-----+-------------------------|
| X'E1| Skip to channel 12 - |
| ' | after |
|-----+-------------------------|
| X'E3| Skip to channel 12 - |
| ' | before |
|-----+-------------------------|
carriage-control-evfu
The print control character (first character in record or line) defines
the action to be taken before printing the current print line.
1 advances to the first print line on the next page
0 skip a line, i.e., double-space
+ over-print the preceeding line
- skip 2 lines, i.e., triple-space
(space) print on the next line, single-space
---------------------- Forwarded by Carl Kugler/Boulder/IBM on 03/09/2001
03:11 PM ---------------------------
Carl Kugler
03/09/2001 01:26 PM
To: don at lexmark.com
cc: ipp at pwg.org, Harry Lewis/Boulder/IBM at IBMUS
From: Carl Kugler/Boulder/IBM at IBMUS
Subject: Re: IPP> H. Registering Print Document Formats (PDLs) as MIME
media types (Document link: Carl Kugler)
No:
LineData: Line-data - Lines of data as separate
ASCII or EBCDIC records and
containing no control functions (no CR,
LF, HT, FF, etc.) For use with traditional
line printers. May use CR and/or LF to
delimit lines, instead of records.
ISO 10175 Document Printing
Application (DPA)
LinePrinter: A simple-text character stream which
supports the control codes LF, VT, FF,
and plus Centronics or Dataproducts
Vertical Format Unit (VFU) language is
commonly used on many older model
line and matrix printers.
Then there's the one and only true "line data": ours:
Title: Advanced Function Presentation: Programming Guide and Line Data
Reference
Authors: Author: Reinhard H. Hohensee
Document Number: S544-3884-01
http://www.s390.ibm.com/bookmgr-cgi/bookmgr.cmd/BOOKS/HA3L1M00/COVER?SHELF=EZ239413
Clearly, none of these matches ASA, which is also described in RFC 740,
Appendix C.
- Carl
don at lexmark.com on 03/09/2001 10:38:19 AM
To: Carl Kugler/Boulder/IBM at IBMUS
cc: ipp at pwg.org, Harry Lewis/Boulder/IBM at IBMUS
Subject: Re: IPP> H. Registering Print Document Formats (PDLs) as MIME
media types
I thought this was either "LineData" or "LinePrinter" in the current
document?????
**********************************************
* Don Wright don at lexmark.com *
* Chair, Printer Working Group *
* Chair, IEEE MSC *
* *
* Director, Strategic & Technical Alliances *
* Lexmark International *
* 740 New Circle Rd *
* Lexington, Ky 40550 *
* 859-232-4808 (phone) 859-232-6740 (fax) *
**********************************************
"Carl Kugler" <kugler%us.ibm.com at interlock.lexmark.com> on 03/09/2001
11:58:14
AM
To: ipp%pwg.org at interlock.lexmark.com
cc: "Harry Lewis" <harryl%us.ibm.com at interlock.lexmark.com> (bcc: Don
Wright/Lex/Lexmark)
Subject: IPP> H. Registering Print Document Formats (PDLs) as MIME media
types
>ftp://ftp.pwg.org/pub/pwg/ipp/new_MIME/Print-MIME-tab-010302-rev.pdf
Another type: ASA carriage control. On most Unix systems: "man asa".
-Carl
asa -- Interpret ASA/FORTRAN carriage control
Format
asa [file ...]
Description
Historically, printouts created by programs use the first character of
each line to control the spacing between that line and the previous one.
For example, if the first character is a space, the rest of that line
immediately follows the previous line; if it is a 1, that line should
begin on a new page, and so on.
asa reads input in this format and writes it out in a normal text format,
using newlines, formfeeds, and carriage returns to achieve the same
effects as the carriage control characters.
If you specify files on the command line, asa reads input from these
files; otherwise, it reads the standard input (stdin). asa writes output
to the standard output (stdout).
It does not copy newline characters in the input to the output. Instead,
it uses the first character of each line to determine how to print the
rest of the line. asa interprets the first character as follows:
Space Outputs the rest of the line without change.
0 Outputs a newline character before printing line.
1 Outputs a formfeed (start a new page) sequence before printing
line.
+ Outputs a carriage return sequence so that line is output over
the
previous line. If + starts the first line, it's treated as a
space.
Localization
asa uses the following localization environment variables:
LANG
LC_ALL
LC_CTYPE
LC_MESSAGES
NLSPATH
See Appendix E, "Localization" in topic D.0 for more information.
Exit Values
0 Successful completion
1 Failure due to any of the following:
Write error on stdout
Inability to open the input file
2 Unknown command-line option
Portability
POSIX.2, X/Open Portability Guide, UNIX System V.