10/31/90  AG93 (Multics Subroutines and I/O Modules)
          Errata Information for MR12.4


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.


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" entrypoint.                 |
                                                                  |
     Replace the paragraph that begins "This entrypoint, given a  |
     pointer to an object segment definition..."  with the        |
     following.                                                   |
                                                                  |
       This entrypoint returns the decoded information of an      |
       object segment definition in a structure similar to that   |
       used by the "decode_definition_" entrypoint, but with a    |
       pointer to the symbol name, instead of to the name itself. |
       This entrypoint 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 entrypoint 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 entrypoint 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           |
     entrypoint "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 entrypoint will skip over it and     |
       return the first definition in the definition section.     |


pg 2-213:  for the "decode_definition_$init" entrypoint, replace  |
     the paragraph that begins "This entrypoint is used for       |
     initialization and is especially..."  with the following.    |
                                                                  |
       This entrypoint 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           |
       entrypoint affects only the main entrypoint,               |
       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"
     entrypoint, 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-490:  add the following documentation for the                |
     "hcs_$truncate_seg" subroutine after the documentation for   |
     "hcs_$truncate_file".                                        |
                                                                  |
     Name:  hcs_$truncate_seg                                     |
                                                                  |
     This entrypoint, 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  |
     entrypoint.  If desired, the bit count may be set by using   |
     the hcs_$set_bc_seg entrypoint.                              |
                                                                  |
     The hcs_$truncate_file entrypoint performs the same function |
     when given the pathname of the segment instead of the        |
     pointer.                                                     |


pg 2-546: for the "iox_$open_file" entrypoint, 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"
     entrypoint, remove the following line.

     Although there is an argument called component_name, this
     entrypoint does not currently handle archive components.


pg 2-888.1:  for the "translator_info_$component_get_source_info"
     entrypoint, 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".                                                 |
