03/31/83 remote_printer_ Function: The remote_printer_ I/O module presents a stream I/O interface to the caller and performs record output to a printer, which is assumed to be part of a remote I/O device, such as a Honeywell Level 6 remote batch facility (G115 type), an IBM 2780, or an IBM 3780. Except for hardware restrictions, this module performs all the necessary code conversion and control in such a way that remote and local printing are the same. Entry points in this module are not called directly by users; rather, the module is accessed through the I/O system. This module in turn constructs an attach description for the module specified in the -terminal control argument, passing the attach information for horizontal tabbing, physical line length, and all other attach information specified by the caller. Syntax and Attach Description: remote_printer_ -control_args Control arguments: The following control arguments are optional, with the exception of -terminal: -horizontal_tab, -htab printer has a horizontal tab feature. The default is no tab control. -physical_line_length N, -pll N printer has a maximum line width of N characters. The default is 132 characters. -physical_page_length N, -ppl N printer has a maximum line count per page of N. The default is 66 lines. -terminal STR uses the terminal I/O module specified by STR. This control argument is required. Open Operation: The remote printer I/O module supports the stream_output opening mode. Put Chars Operation: The put_chars entry converts a character string delimited by a newline character to an image suitable for printing and transmits this image to the terminal I/O module. This operation is repeated until all the characters specified by the caller have been transmitted. List of Control Operations: This I/O module supports all the control operations supported by the terminal I/O module specified in the attach description. In addition, it supports the following control orders: channel_stops sets the channel stop data used for slew to channel control sequences during a put_chars operation. The info pointer defines the channel_stops input array as found in the prt_order_info include file. Array element N defines the stops for line number N. Bit M of an array element defines a stop for channel M. The initial value is no stops defined. Once defined, the stops remain in effect until the next channel_stops control operation. end_of_page advances the paper to the bottom of the current page, one line below the point where page labels are printed. If page labels are set the label is printed. The info pointer is not used and may be null. get_count returns accounting information. The info pointer defines the counts output structure as found in the prt_order_info include file. The page and line counts are reset by the reset control operation. get_error_count returns the error count since the output module was attached. The info pointer defines the output variable ret_error_count as found in the prt_order_info include file. get_position returns the position data defined by the position_data structure in the prt_order_info include file. The data resembles that of the get_count control operation, but the structure adds the total characters printed since the last reset to allow the caller to start the next put_chars operation at the following character when the module returns due to 1pg or stopN mode. The data structure is also used for the set_position operation (see below). inside_page advances the paper to the formfeed position of the next inside page. An inside page is a top page when the listing is folded correctly. Separator bars for the head sheet are printed over the perforations at the bottom of an inside page. The info pointer is not used and may be null. outside_page advances the paper to the formfeed position of the next outside page. An outside page is a bottom page when the listing is folded correctly. The info pointer is not used and may be null. page_labels sets the top and bottom page labels to be printed for each logical page. The info pointer may be null to reset page labels to blank. Otherwise, the info pointer defines the page_labels input structure as found in the prt_order_info include file. paper_info sets the physical characteristics of the paper in the printer. The info pointer defines the paper_info input structure as found in the prt_order_info include file. Once set, the paper_info remains in effect until the next paper_info control operation. If the printer has a software loadable VFC image, a new image is loaded and the printer placed out of synchronization for the operator to align the paper. Otherwise, the code error_table_$no_operation is returned so the caller can request the operator to load the appropriate VFU tape and set the required lines per inch switch to complete the operation. The defaults are: page length, 66; line length, 136; lines per inch, 6. reset resets the output module to its default state: default modes, no page labels, line count = 0, page count = 1, and total chars = 0. The info pointer is not used and may be null. resetwrite cancels any data buffered for output. It is used to clear the output module after an error so the paper can be resynchronized. The info pointer is not used and may be null. runout causes all buffered data to be output before returning to the caller. It is used to synchronize the program with the actual device. The info pointer is not used and may be null. set_position sets the internal counters in the output module. The info pointer defines the position_data input structure as found in the prt_order_info include file. This is the reverse of the get_position control operation. It is used to start the accounting data at the correct point when restarting an I/O daemon request in the middle. List of Modes Operations: This I/O module supports all the modes supported by the terminal I/O module specified in the attach description. In addition, it supports the following modes: 1pg, ^1pg causes the output module to return to the caller when the end of the current page is reached (i.e., at the formfeed position for the next logical page). If there are unprocessed characters at this point, the code error_table_$request_pending is returned. The default is ^1pg. ctl_char, ^ctl_char causes the output module to pass nonprinting characters to the device as is. Carriage movement characters (newline, formfeed, carriage return, backspace, and horizontal and vertical tab) are interpreted normally. The ASCII escape character (octal 033) is also transmitted directly, unless esc mode is enabled. If ctl_char mode is disabled, the treatment of nonprinting characters is determined by the setting of non_edited mode. The default is ^ctl_char. esc, ^esc enables searching for escape sequences in the input string, which enables slew to channel orders. The default is ^esc. non_edited, ^non_edited causes the output module to print the applicable octal ASCII code preceded by a backslash (\) for nonprinting characters, and to use the nonedited output conversion table in the specified TTT for the remote device. The ^non_edited value causes any such characters to be omitted from the output. The setting of this mode is ignored when ctl_char is in effect. The default is ^non_edited. noskip, ^noskip suppresses the automatic insertion of blank lines at the end of a logical page (i.e., it allows the printer to print over the perforations). It has the side effect of setting the logical page length to its default value. The default is ^noskip. print, ^print specifies that processed characters from the input string are to be printed. The ^print value allows a string to be processed for output, sets page and line counts, and honors the 1pg and stopN modes, but without actually printing the processed characters. The default is print. single, ^single specifies that any formfeed or vertical tab characters from the input string are to be converted to newline characters (i.e., it suppresses runaway paper feeding). The default is ^single. truncate, ^truncate truncates the output if the line exceeds the line length. The ^truncate value allows the line to be wrapped onto the next line if it is too long. The default is ^truncate. plN sets the logical page length to N lines. At the end of a logical page, the printer skips to the next formfeed position (unless noskip mode is set). The value of N must be greater than one, and can be greater than a physical page. The default value is physical page length minus lines per inch. llN sets the logical line length to N characters. The value of N must be greater than the indentation (see below) and must not be greater than the physical line length of the device. The default value is the physical line length. inN sets the indentation to N characters. The value of N must be 0 or a positive integer which is less than the logical line length. The default value is 0. stopN sets the output module to return to the caller every N pages even though the processing of the input string has not been completed. If there is unprocessed input remaining, a code of error_table_$request_pending is returned. A value of 0 means do not return until all input is processed. The counter of how many pages to process before returning is reset when a new value is given. The default value is 0. default causes all of the above modes to be reset to their default values. This mode is also passed to the terminal I/O module for processing. Position Operation: This I/O module supports all the position operations supported by the terminal I/O module specified in the attach description. ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved