08/22/83 bisync_ Syntax for Attach Description: bisync_ device {-control_args} Function: The bisync_ I/O module performs stream I/O over a binary synchronous communications channel. Entry points in this module are not called directly by users; rather, the module is accessed through the I/O system. Arguments: device is the name of the communications channel to be used for communications. Control arguments: -ascii uses the ASCII bisync protocol. This is the default. -bid_limit N sets to N the number of times a line bid is retried. The default is 30 times. -breot causes the get_chars operation to return any block of data ending with an end-of-transmission (EOT) character (see "Get Chars Operation" below). -bretb causes the get_chars operation to return any block of data ending with an end-of-text block (ETB) character. The default is to return only blocks ending with an end-of-text control character (ETX) or an intermediate text block (ITB) control character (see the discussion of the get_chars operation below). -ebcdic uses the EBCDIC bisync protocol. -hangup causes an automatic hangup when the switch is detached. -multi_record {N} specifies that blocking of logical records is done by the I/O module. If specified, N is the maximum number of records per block. If N is not given, the number of records per block is as many as fit. -nontransparent uses the nontransparent bisync protocol. -size N sets to N the number of characters to be transmitted in each bisync block. The default is 256 characters. -transparent uses the transparent bisync protocol. This is the default. -ttd_limit N sets to N the maximum number of TTDs that are sent before sending an EOT. The default is 30 TTDs. -ttd_time N sets to N the number of seconds of temporary text delay (TTD) transmissions if output is delayed. The default is two seconds. Open Operation: The bisync_ I/O module supports the stream_input, stream_output, and stream_input_output opening modes. Put Chars Operation: The put_chars entry splits the data to be written into blocks according to the -size control argument in the attach description. The appropriate bisync control characters are added to the beginning and end of each block. Each block except the last is transmitted with an ETB control character at the end. The last block is transmitted with an ETX control character at the end. Get Chars Operation: The get_chars entry reads and decodes bisync blocks, removes the control characters, and returns the message text to the caller's buffer. Characters are returned up to the next logical bisync break character. Normally this is ETX. If -bretb is specified in the attach description, ETB is also considered to be a break character. If -multi_record is given, the interrecord ITB characters are also considered to be break characters. In addition, if -breot is specified, error_table_$end_of_info is returned when an EOT is read. Get Line Operation: The get_line entry reads and decodes bisync blocks, removes the control characters, and returns the message text to the caller's buffer. Characters are returned until either a newline character is placed in the buffer or the buffer is filled. The get_line entry does not distinguish between blocks ending in ETB or ITB and blocks ending in ETX. List of Control Operations: Several of the control operations supported by the bisync_ I/O module are identical to those supported by the tty_ I/O module and are documented there. They include: abort event_info hangup read_status resetread resetwrite write_status The following control operations are also supported by bisync. end_write_mode causes the I/0 module to block until all outstanding output has been written. get_bid_limit where info_ptr points to a fixed binary bid limit that is set either to the value specified at attach or in the last set_bid_limit order. get_bsc_modes returns the structure described under set_bsc_modes. get_chars performs a get_chars operation and returns additional information about the input. The info_ptr points to a structure of the following form: dcl 1 get_chars_info, 2 buf_ptr ptr, 2 buf_len fixed bin(21), 2 data_len fixed bin(21), 2 hbuf_ptr ptr, 2 hbuf_len fixed bin(21), 2 header_len fixed bin(21), 2 flags, 3 etx bit(1) unal, 3 etb bit(1) unal, 3 soh bit(1) unal, 3 eot bit(1) unal, 3 pad bit(32) unal; where-- buf_ptr, buf_len define an input buffer for the text of the message. (Input) data_len is set to the number of characters of text read. (Output) hbuf_ptr, hbuf_len define an input buffer for the header of the message. (Input) header_len is set to the header's length in characters. (Output) etx indicates that text is terminated with an ETX character. (Output) etb indicates that text is terminated with an ETB character. (Output) soh indicates that the data includes a header. (Output) eot indicates that an EOT is received. (Output) pad is unused space in this structure. (Output) get_multi_record_mode where info_ptr points to a fixed binary record count. This order returns the multirecord record count. A 1 indicates single-record mode. get_size where info_ptr points to a fixed binary buffer size and returns the current size. hangup_proc sets up a procedure to be called if the communications channel hangs up. The hangup_proc input structure has the following form: dcl 1 hangup_proc aligned, 2 entry entry variable, 2 datap ptr, 2 prior fixed bin; where-- entry is the entry to call when a hangup is detected. datap is a pointer to data for the hangup procedure. prior is the ipc_ event call priority to be associated with hangup notification. runout has meaning only in multirecord mode and writes the current partially filled block. send_nontransparent_msg writes the data specified in nontransparent bisync mode, regardless of the current transparency mode. This order is used to send short nontransparent control sequences while in transparent mode. The info_ptr points to a structure of the following form: dcl 1 order_msg, 2 data_len fixed bin, 2 data char (order_msg.data_len); set_bid_limit where info_ptr points to a fixed binary bid limit to replace the bid_limit specified in the attach description. set_bsc_modes where info_ptr points to a structure of the following form: dcl 1 bsc_modes, 2 transparent bit(1) unal, 2 ebcdic bit(1) unal, 2 mbz bit (34) unal; The setting of the transparent and ebcdic bits then replaces the values specified in the attach description. set_multi_record_mode where info_ptr points to a fixed binary record count. If the count is 1, the I/O module enters single-record mode; otherwise, multirecord mode is entered, and the count specifies the maximum number of records per block. Zero (or a null info_ptr) specifies no fixed limit; i.e., as many records as fit are blocked. set_size where info_ptr points to a fixed binary buffer size. This new size replaces the size specified in the attach description. It cannot be larger than the size originally 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