10/31/92 AG93 (Multics Subroutines and I/O Modules) Errata Information for MR12.5 pg 2-40: for the "ask_$ask_cnf" entry point, change the sentence | beginning with "This entry point works like..." with the | following: | | This entry point works like the ask_$ask_cint entry point | except that it returns a value of 'on' or 'off' if a | character string of either 'on' or 'off' is available. | pg 2-40: for the "ask_$ask_cyn" entry point, change the sentence | beginning with "This entry point works like..." with the | following: | | This entry point works like the ask_$ask_cint entry point | except that it returns a value of 'yes' (or 'y') or 'no' (or | 'n') if a character string of either 'on' or 'off' is | available. | pg 2-42: for the "ask_$ask_line" entry point, under the "ctl" | argument, delete the sentence "If a period is typed, zero is | returned." | pg 2-43: for the "ask_$ask_nf" entry point, under the "ctl" | argument, delete the sentence "If a period is typed, zero is | returned." | pg 2-44; for the "ask_$ask_nflo" entry point, add the following | to the description of the "flo" argument: | | If a period is typed, zero is returned. | pg 2-44; for the "ask_$ask_nint" entry point, add the following | to the description of the "flo" argument: | | If a period is typed, zero is returned. | pg 2-123: for the "copy_" subroutine, under NOTES add the following. If copying a non-empty mailbox requires that the max_length characteristic of the source be applied to the target, then the target max_length value will take on the default value that was given to it when created. pg 2-130: for the "copy_dir_" subroutine, under NOTES add the following. If copying a non-empty mailbox requires that the max_length characteristic of the source be applied to the target, then the target max_length value will take on the default value that was given to it when created. pg 2-196: for the 'date_time_$from_clock' entry point, change | the call under USAGE to the following: | | call date_time_$from_clock (clock, zone, addr(time_value), | code); | pg 2-205: for the 'date_time_$set_lang' entrypoint, change the | declaration under USAGE to the following: | | declare date_time_$set_lang entry (char(*), fixed bin(35)); | pg 2-206: for the 'date_time_$to_clock' entrypoint, change the | declaration under USAGE to the following: | | declare date_time_$to_clock entry (ptr, fixed bin(71), | fixed bin(35)); | pg 2-207: for the 'date_time_$valid_format' entrypoint, change | the declaration under USAGE to the following: | | declare date_time_$valid_format entry (char(*), fixed bin, | fixed bin(35)); | pgs 2-208.8 to 2-210: Make the following changes for the "decode_definition_" subroutine. Replace the paragraph that begins "The decode_definition_ subroutine, given a pointer to..." with the following. The decode_definition_ subroutine returns the decoded information of an object segment definition in a directly accessible structure. This subroutine can be used on only one segment at a time because it uses internal static storage for information about the current segment. Under ARGUMENTS, replace the description of "def_ptr" with the following. def_ptr is a pointer to the selected definition, or to the base of the object segment. (Input). If def_ptr points to the base of the object segment, decode_definition_ returns the first acceptable definition in the definition section (see Notes). Otherwise, it is expected to be pointing to a definition. After the STRUCTURE ELEMENTS section (following the description of "symbol") add a NOTES section containing the following. NOTES decode_definition_ might not return the definition pointed to by def_ptr. It checks the "ignore" bit of each definition, and if that bit is "1"b it will continue scanning the list of definitions until it finds one for which the "ignore" bit is not set. To be sure the internal static information about the current segment has been properly initialized, the first call to decode_definition_ should either pass a pointer to the base of the object segment in def_ptr, or it should follow a call to decode_definition_$init. When decode_definition_ is called following a call to decode_definition_$init for the same object segment, it will ignore the value of def_ptr and always return the first definition in the definition section (for which "ignore" is not set). pgs 2-210 to 2-211: Make the following changes for the "decode_definition_$decode_cref" entry point. Replace the paragraph that begins "This entry point, given a pointer to an object segment definition..." with the following. This entry point returns the decoded information of an object segment definition in a structure similar to that used by the "decode_definition_" entry point, but with a pointer to the symbol name, instead of to the name itself. This entry point can be used on only one segment at a time because it uses internal static storage for information about the current segment. It is used only by the cross_reference command. Under ARGUMENTS, replace the description of "def_ptr" with the following. def_ptr must be a pointer to a definition in the definition section. If link_ptr has a value then def_ptr must point to the beginning of the definition section. (Input). Under ARGUMENTS, in the description of "eof", replace "(Input)" with "(Output)". Under ARGUMENTS, replace the description of "link_ptr" with the following. link_ptr must be either a pointer to the base of the linkage section of the object segment, or a null pointer. If link_ptr has a non-null value then def_ptr is assumed to point to the base of the definition section. Under NOTES, in the first paragraph replace "decode_descriptor_str.incl.pl1" with "decode_definition_str.incl.pl1". After the STRUCTURE ELEMENTS section (following the description of "acc_ptr") add a NOTES section containing the following. NOTES The decode_definition_$decode_cref entry point might not return the definition pointed to by def_ptr. It checks the "ignore" bit of each definition, and if that bit is "1"b it will continue scanning the list of definitions until it finds one for which the "ignore" bit is not set. The decode_definition_$decode_cref entry point may be passed pointers to the bases of the definition and linkage sections of the object segment initially. These values will be put in internal static storage. Subsequent calls can pass in def_ptr values for subsequent definitions, with a value of null in link_ptr. pgs 2-211 to 2-213: Make the following changes for the entry point "decode_definition_$full". Under USAGE, delete "returns (bit(1) aligned)". Under ARGUMENTS, replace the description of "def_ptr" with the following. def_ptr is a pointer to the selected definition. (Input). Under STRUCTURE ELEMENTS, in the descriptions of "nargs" and "desc_ptr" replace "descr_sw" with "desc_sw". After the STRUCTURE ELEMENTS section (following the description of "desc_ptr") add a NOTES section containing the following. NOTES decode_definition_$full will return the definition pointed to by def_ptr, whether or not the "ignore" bit is set for that definition. If def_ptr points to the definition header, however, this entry point will skip over it and return the first definition in the definition section. pg 2-213: for the "decode_definition_$init" entry point, replace the paragraph that begins "This entry point is used for initialization and is especially..." with the following. This entry point is used for initialization of the internal static storage used to locate the current segment. It is especially useful when the object segment does not begin at offset 0 (as for an archive component). This entry point affects only the main entry point, decode_definition_. pgs 2-289 to 2-290: for the "find_source_file_" subroutine, replace the documentation for USAGE and ARGUMENTS with the following. USAGE declare find_source_file_ entry (char(*), char(*), char(*), ptr, fixed bin(24), fixed bin(35)); call find_source_file_ (pathname, suffix, source_name, source_ptr, bit_count, code); ARGUMENTS pathname is the pathname of the source program. (Input) suffix is the suffix to be added to the pathname (if one does not already exist). (Input) source_name is the name of the source program. (Output) source_ptr is a pointer to the base of the source program. It is null if the source could not be found. (Output) bit_count is the bit count of the source program. (Output) code is a standard system status code. (Output) pg 2-290 to 2-290.1: for the "find_source_file_$search_path" entry point, replace the documentation for USAGE and ARGUMENTS with the following. USAGE dcl find_source_file_$search_path entry (char(*), char (*), char(*), char(*), ptr, fixed bin(24), fixed bin(35)); call find_source_file_$search_path (pathname, suffix, search_list_name, source_name, source_ptr, bit_count, code); ARGUMENTS pathname is the pathname of the source program. (Input) suffix is the suffix to be added to the pathname (if one does not already exist). (Input) search_list_name is the search list to be used to locate the source file specified by the pathname and suffix input arguments. (See "NOTES" below.) (Input) source_name is the name of the source program. (Output) source_ptr is a pointer to the base of the source program. It is null if the source could not be found. (Output) bit_count is the bit count of the source program. (Output) code is a standard system status code. (Output) pg 2-363: for the 'get_equal_name_' entry point, add a new value | to the 'code' argument: | | 0 | the target name was constructed without error. | pg 2-363: for the 'get_equal_name_' entry point, add the | following to the description of the 'error_table_$longeql' | value under the 'code' argument: | | Only the first 32 characters are returned. | pg 2-363: add a new entry point just before the | 'get_equal_name_$component' entry point. | | Entry: get_equal_name_$check_equal_name | | This entry point checks the validity of the equal name based | on the equal convention. | USAGE | | declare get_equal_name_$check_equal_name entry (char (*), | fixed bin (35)); | | call get_equal_name_$check_equal_name (equalname, code); | ARGUMENTS | | equalname | is the equal string to be checked. (Input) | | code | is a standard system error code. (Output) It can have | the same values described for get_equal_name_. | pg 2-364: for the 'get_equal_name_$component' entry point, | change USAGE to the following: | | declare get_equal_name_$component entry (char(*), char(*), | char(32), char(*), char(32), fixed bin (35)); | | call get_equal_name_$component (entryname, equal_entryname, | equal_component, target_entryname, target_component, | code); | pg 2-490: add the following documentation for the "hcs_$truncate_seg" subroutine after the documentation for "hcs_$truncate_file". Name: hcs_$truncate_seg This entry point, given a pointer, truncates a segment to a specified length. If the segment is already shorter than the specified length, no truncation is done. The effect of truncating a segment is to store zeros in the words beyond the specified length. USAGE declare hcs_$truncate_seg entry (ptr, fixed bin(19), fixed bin(35)); call hcs_$truncate_seg (seg_ptr, length, code); ARGUMENTS seg_ptr is a pointer to the segment to be truncated. (Input) Only the segment number portion of the pointer is used. length is the new length of the segment in words. (Input) code is a storage system status code. (Output) Access required: The user must have write access on the segment in order to truncate it. NOTES A directory cannot be truncated. A segment is truncated as follows: all full pages after the page containing the last word of the new length (as defined by the length argument) segment are discarded. The remainder of the page containing the last word is converted to zeros. Bit count is not automatically set by the hcs_$truncate_seg entry point. If desired, the bit count may be set by using the hcs_$set_bc_seg entry point. The hcs_$truncate_file entry point performs the same function when given the pathname of the segment instead of the pointer. pg 2-546: for the "iox_$open_file" entry point, in the description of the "mode" argument, change "(Output)" to "(Input)" at the end of the first sentence. pg 2-627: add documentation for the new subroutine "null_entry_" after the documentation for "nd_handler_". Name: null_entry_ Performs a return to its caller and does nothing. USAGE declare null_entry_ entry options (variable); call null_entry_(); pg 2-888.1: for the "translator_info_$component_get_source_info" entry point, remove the following line. Although there is an argument called component_name, this entry point does not currently handle archive components. pg 2-888.1: for the "translator_info_$component_get_source_info" entry point, replace the description of the "component_name" argument with the following. component_name is the name of the archive component. If the source segment is not a component of an archive, then this value is null "". (Output) pgs 3-264 to 3-282: for the "window_io_" module, make the following changes: Page 3-264; replace "PUR CHARS OPERATION" with "PUT CHARS OPERATION", and on the last line of the page replace "scrren" with "screen". Page 3-266; under STRUCTURE ELEMENTS replace dcl 1 window_status_info aligned based (window_status_ info_ptr), with dcl 1 window_status aligned, Page 3-267; under NOTES, replace The get_window_status and get_window_status control ... with The get_window_status and set_window_status control ... Page 3-267; under the description of "get_capabilities", replace 3 pad bit(28) unal, with 3 pad bit(31) unal, Page 3-269; under NOTES, replace io_call window_switch get_editing_chars with io_call control window_switch get_editing_chars Page 3-272; on the first line of the page, replace "window_more_handler.incl.pl1" with "window_more_info.incl.pl1". Page 3-272; under STRUCTURE ELEMENTS, in the description of "version", replace "more_handler_info_version_2" with "more_info_version_2". Page 3-273; under NOTES, replace io_call window_switch get_more_handler io_call window_switch set_more_handler more_handler with io_call control window_switch get_more_handler io_call control window_switch set_more_handler more_handler Page 3-273; add the following after the description of "get_break_table" and before the line " dcl 1 break_table_info". The info pointer should point to break_table_info, declared in window_control_info.incl.pl1: Page 3-275; under the description of "get_special" replace dcl 1 get_special_info_struc aligned 2 version char (8) with dcl 1 get_special_info_struc based aligned, 2 version char (8), Page 3-275; under STRUCTURE ELEMENTS, in the description of version replace "SPECIAL_INFO_STRUC_VERSION_1" with "SPECIAL_INFO_STRUCT_VERSION_1". Page 3-275; under the description of "set_special" replace dcl 1 c_chars based aligned, with dcl 1 c_chars based (c_chars_ptr) aligned, Pages 3-275 and 3-276; move the following from page 3-276 to page 3-275. chars are the characters that make up the sequence. Page 3-276; replace the four instances of "(special_chars." with "(special_chars_struc.". Page 3-277; under NOTES replace the five instances of "_seg" with "_seq". Page 3-279; under the description of "get_token_characters" replace 2 token_characters_count fixed bin, with 2 token_character_count fixed bin, Page 3-279; under STRUCTURE ELEMENTS replace "token_characters_count" with "token_character_count". Page 3-279; replace the description of "get_editor_key_bindings" with the following. get_editor_key_bindings returns a pointer to the line_editor_key_binding structure describing the key bindings. io_call support prints out the pathname of each editor routine, listing only the names of builtin requests in capital letters, with the word "builtin" in parentheses. This control order prints or returns current information about the key_bindings. Use the set_editor_key_bindings control order to change the bindings. Page 3-280; under the description of "get_editor_key_bindings" replace (get_editor_key_binding_info_ptr), with (get_editor_key_bindings_info_ptr), and replace "3 mbx" with "3 mbz". Page 3-280; before the description of "key_binding_info_ptr", add the following. mbz reserved for future expansion and must be "0"b. Page 3-281; under the description of "set_editor_key_bindings" replace 3 pad bit (34) unaligned, 2 key_binding_info_ptr; with 3 mbz bit (34) unaligned, 2 key_binding_info_ptr ptr; Page 3-281; before the description of 'key_binding_info_ptr' add the following. mbz reserved for future expansion and must be "0"b. Page 3-282; in the paragraph beginning with "At least one...", replace "set_editor_key_binings" with "set_editor_key_bindings" and replace "control -a" with "control-a". ----------------------------------------------------------- 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