COMPILATION LISTING OF SEGMENT fst_get_segment_ Compiled by: Multics PL/I Compiler of December 8, 1975. Compiled on: 03/23/76 1032.5 mst Tue Options: optimize map 1 fst_get_segment_: proc (create_if_not_found, arg_pathname, working_dir, seg_ptr, seg_length, code); 2 3 /* This procedure returns a pointer to the segment specified with arg_pathname. 4 If the segment is found, it must end with a new_line character. 5 If the segment is not found, and the create_if_not_found switch is set, the segment will be created with re access. 6 7 Written 3/76 by S.E. Barr 8 */ 9 /* parameters */ 10 11 dcl create_if_not_found bit (1) unal; 12 dcl arg_pathname char (*) var; 13 dcl working_dir char (*) var; 14 dcl seg_ptr ptr; 15 dcl seg_length fixed bin (21); 16 dcl code fixed bin (35); 17 18 /* automatic */ 19 20 dcl bit_count fixed bin (24); /* length of segment */ 21 dcl i fixed bin (35); 22 dcl directory_name char (168); 23 dcl entry_name char (32); 24 dcl 1 o aligned like object_info; 25 dcl pathname char (256) var; /* complete pathname */ 26 27 dcl seg char (seg_length) based (seg_ptr); 28 29 dcl (addr, divide, index, length, max, null, reverse, substr) builtin; 30 31 /* external */ 32 33 dcl error_table_$noentry fixed bin (35) ext; 34 dcl error_table_$segknown fixed bin (35) ext; 35 dcl hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), fixed bin (12), ptr, fixed bin (35)); 36 dcl hcs_$make_seg entry (char (*), char (*), char (*), fixed bin (5), ptr, fixed bin (35)); 37 dcl object_info_$display entry (ptr, fixed bin (24), ptr, fixed bin (35)); 38 39 /* constants */ 40 41 dcl NEW_LINE char (1) int static options (constant) init (" 42 "); 43 dcl RW_access fixed bin (5) int static init (01010b) options (constant); 44 45 /* */ 1 1 /* BEGIN INCLUDE ... dfast_error_codes.incl.pl1 */ 1 2 1 3 dcl error_alt_empty fixed bin (35) int static init (1)options (constant); 1 4 dcl error_max_size fixed bin (35) int static init (2)options (constant); 1 5 dcl error_cur_empty fixed bin (35) int static init (3)options (constant); 1 6 dcl error_not_saved fixed bin (35) int static init (4)options (constant); 1 7 dcl error_name_dup fixed bin (35) int static init (5)options (constant); 1 8 dcl error_long_rec fixed bin (35) int static init (6)options (constant); 1 9 dcl error_unknown_arg fixed bin (35) int static init (7)options (constant); 1 10 dcl error_no_expl fixed bin (35) int static init (8)options (constant); 1 11 dcl error_bad_name fixed bin (35) int static init (9)options (constant); 1 12 dcl error_bad_req fixed bin (35) int static init (10)options (constant); 1 13 dcl error_syntax_string fixed bin (35) int static init (11)options (constant); 1 14 dcl error_name_miss fixed bin (35) int static init (12)options (constant); 1 15 dcl error_no_comp fixed bin (35) int static init (13)options (constant); 1 16 dcl error_no_main fixed bin (35) int static init (14)options (constant); 1 17 dcl error_block_spec fixed bin (35) int static init (15)options (constant); 1 18 dcl error_obj_nop fixed bin (35) int static init (16)options (constant); 1 19 dcl error_sav_cur fixed bin (35) int static init (17)options (constant); 1 20 dcl error_bad_type fixed bin (35) int static init (18)options (constant); 1 21 dcl error_unkn_sys fixed bin (35) int static init (19)options (constant); 1 22 dcl error_no_suffix fixed bin (35) int static init (20)options (constant); 1 23 dcl error_no_nl fixed bin (35) int static init (21)options (constant); 1 24 dcl error_bad_sort fixed bin (35) int static init (22)options (constant); 1 25 dcl error_no_num fixed bin (35) int static init (23)options (constant); 1 26 dcl error_line_miss fixed bin (35) int static init (24)options (constant); 1 27 dcl error_request_miss fixed bin (35) int static init (25)options (constant); 1 28 dcl error_bad_line fixed bin (35) int static init (26)options (constant); 1 29 dcl error_no_string fixed bin (35) int static init (27)options (constant); 1 30 dcl error_line_order fixed bin (35) int static init (28)options (constant); 1 31 dcl error_max_lines fixed bin (35) int static init (29)options (constant); 1 32 dcl error_bad_pathname fixed bin (35) int static init (30)options (constant); 1 33 dcl error_access_mode fixed bin (35) int static init (31)options (constant); 1 34 dcl error_delimiter_miss fixed bin (35) int static init (32)options (constant); 1 35 dcl error_size_fixed_record fixed bin (35) int static init (33)options (constant); 1 36 dcl error_bad_rec_len fixed bin (35) int static init (34)options (constant); 1 37 dcl error_string_size fixed bin (35) int static init (35)options (constant); 1 38 dcl error_max_line_number fixed bin (35) int static init (36)options (constant); 1 39 dcl error_max_args fixed bin (35) int static init (37)options (constant); 1 40 dcl error_name_sys fixed bin (35) int static init (38)options (constant); 1 41 dcl error_dprint_map fixed bin (35) int static init (39)options (constant); 1 42 dcl error_max_num fixed bin (35) int static options (constant) init (40); 1 43 dcl error_edit_max_num fixed bin (35) int static options (constant) init (41); 1 44 dcl error_un_num_text fixed bin (35) int static options (constant) init (42); 1 45 dcl error_no_new_line fixed bin (35) int static options (constant) init (43); 1 46 1 47 /* END INCLUDE ... dfast_error_codes.incl.pl1 */ 46 2 1 /* BEGIN INCLUDE FILE ... object_info.incl.pl1 2 2 coded February 8, 1972 by Michael J. Spier */ 2 3 /* modified May 26, 1972 by M. Weaver */ 2 4 /* modified 15 April, 1975 by M. Weaver */ 2 5 2 6 declare 1 object_info aligned based, /* structure containing object info based, returned by object_info_ */ 2 7 2 version_number fixed bin, /* version number of current structure format (=2) */ 2 8 2 textp pointer, /* pointer to beginning of text section */ 2 9 2 defp pointer, /* pointer to beginning of definition section */ 2 10 2 linkp pointer, /* pointer to beginning of linkage section */ 2 11 2 statp pointer, /* pointer to beginning of static section */ 2 12 2 symbp pointer, /* pointer to beginning of symbol section */ 2 13 2 bmapp pointer, /* pointer to beginning of break map (may be null) */ 2 14 2 tlng fixed bin, /* length in words of text section */ 2 15 2 dlng fixed bin, /* length in words of definition section */ 2 16 2 llng fixed bin, /* length in words of linkage section */ 2 17 2 ilng fixed bin, /* length in words of static section */ 2 18 2 slng fixed bin, /* length in words of symbol section */ 2 19 2 blng fixed bin, /* length in words of break map */ 2 20 2 format, /* word containing bit flags about object type */ 2 21 3 old_format bit(1) unaligned, /* on if segment isn't in new format, i.e. has old style object map */ 2 22 3 bound bit(1) unaligned, /* on if segment is bound */ 2 23 3 relocatable bit(1) unaligned, /* on if seg has relocation info in its first symbol block */ 2 24 3 procedure bit(1) unaligned, /* on if segment is an executable object program */ 2 25 3 standard bit(1) unaligned, /* on if seg is in standard format (more than just standard map) */ 2 26 3 gate bit(1) unaligned, /* on if segment is a gate */ 2 27 3 separate_static bit(1) unaligned, /* on if static not in linkage */ 2 28 3 links_in_text bit(1) unaligned, /* on if there are threaded links in text */ 2 29 3 pad bit(28) unaligned, 2 30 2 entry_bound fixed bin, /* entry bound if segment is a gate */ 2 31 2 textlinkp pointer, /* ptr to first link in text */ 2 32 2 33 /* LIMIT OF BRIEF STRUCTURE */ 2 34 2 35 2 compiler char(8) aligned, /* name of processor which generated segment */ 2 36 2 compile_time fixed bin(71), /* clock reading of date/time object was generated */ 2 37 2 userid char(32) aligned, /* standard Multics id of creator of object segment */ 2 38 2 cvers aligned, /* generator version name in printable char string form */ 2 39 3 offset bit(18) unaligned, /* offset of name in words relative to base of symbol section */ 2 40 3 length bit(18) unaligned, /* length of name in characters */ 2 41 2 comment aligned, /* printable comment concerning generator or generation of segment */ 2 42 3 offset bit(18) unaligned, /* offset of comment in words relative to base of symbol section */ 2 43 3 length bit(18) unaligned, /* length of comment in characters */ 2 44 2 source_map fixed bin, /* offset, relative to base of symbol section, of source map structure */ 2 45 2 46 /* LIMIT OF DISPLAY STRUCTURE */ 2 47 2 48 2 rel_text pointer, /* pointer to text section relocation info */ 2 49 2 rel_def pointer, /* pointer to definition section relocation info */ 2 50 2 rel_link pointer, /* pointer to linkage section relocation info */ 2 51 2 rel_static pointer, /* pointer to static section relocation info */ 2 52 2 rel_symbol pointer, /* pointer to symbol section relocation info */ 2 53 2 text_boundary fixed bin, /* specifies mod of text section base boundary */ 2 54 2 static_boundary fixed bin, /* specifies mod of internal static base boundary */ 2 55 /* currently not used by system */ 2 56 2 default_truncate fixed bin, /* offset rel to symbp for binder to automatically trunc. symb sect. */ 2 57 2 optional_truncate fixed bin; /* offset rel to symbp for binder to optionally trunc. symb sect. */ 2 58 2 59 declare object_info_version_2 fixed bin int static init(2); 2 60 2 61 /* END INCLUDE FILE ... object_info.incl.pl1 */ 47 48 49 /* */ 50 seg_ptr = null; 51 52 if substr (arg_pathname, 1, 1) = ">" then pathname = arg_pathname; 53 else pathname = working_dir || ">" || arg_pathname; 54 i = length (pathname) - index (reverse (pathname), ">"); 55 directory_name = substr (pathname, 1, max (i,1)); 56 entry_name = substr (pathname, i + 2); 57 58 call hcs_$initiate_count (directory_name, entry_name, "", bit_count, 1, seg_ptr, code); 59 if code = error_table_$segknown then code = 0; 60 if code = 0 then do; 61 seg_length = divide (bit_count + 8, 9, 21, 0); 62 63 /* Do not allow object segments to edited. */ 64 65 if seg_length > 0 then if substr (seg, seg_length, 1) ^= NEW_LINE then do; 66 call object_info_$display (seg_ptr, bit_count, addr (o), code); 67 if code = 0 then code = error_obj_nop; 68 else code = error_no_new_line; 69 end; 70 end; 71 72 else if code = error_table_$noentry then do; 73 if create_if_not_found then do; 74 call hcs_$make_seg (directory_name, entry_name, "", RW_access, seg_ptr, code); 75 if code = 0 then seg_length = 0; 76 end; 77 end; 78 79 return; 80 81 end fst_get_segment_; INCLUDE FILES USED IN THIS COMPILATION. LINE NUMBER NAME PATHNAME 46 1 dfast_error_codes.incl.pl1 >library_dir_dir>include>dfast_error_codes.incl.pl1 47 2 object_info.incl.pl1 >library_dir_dir>include>object_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES NAMES DECLARED BY DECLARE STATEMENT. NEW_LINE 000356 constant char(1) initial unaligned dcl 41 ref 65 RW_access 000000 constant fixed bin(5,0) initial dcl 43 set ref 74 addr builtin function internal dcl 29 ref 66 66 arg_pathname parameter varying char dcl 12 ref 1 52 52 53 bit_count 000100 automatic fixed bin(24,0) dcl 20 set ref 58 61 66 code parameter fixed bin(35,0) dcl 16 set ref 1 58 59 59 60 66 67 67 68 72 74 75 create_if_not_found parameter bit(1) unaligned dcl 11 ref 1 73 directory_name 000102 automatic char(168) unaligned dcl 22 set ref 55 58 74 divide builtin function internal dcl 29 ref 61 entry_name 000154 automatic char(32) unaligned dcl 23 set ref 56 58 74 error_no_new_line constant fixed bin(35,0) initial dcl 1-45 ref 68 error_obj_nop constant fixed bin(35,0) initial dcl 1-18 ref 67 error_table_$noentry 000010 external static fixed bin(35,0) dcl 33 ref 72 error_table_$segknown 000012 external static fixed bin(35,0) dcl 34 ref 59 hcs_$initiate_count 000014 constant entry external dcl 35 ref 58 hcs_$make_seg 000016 constant entry external dcl 36 ref 74 i 000101 automatic fixed bin(35,0) dcl 21 set ref 54 55 56 index builtin function internal dcl 29 ref 54 length builtin function internal dcl 29 ref 54 max builtin function internal dcl 29 ref 55 null builtin function internal dcl 29 ref 50 o 000164 automatic structure level 1 dcl 24 set ref 66 66 object_info_$display 000020 constant entry external dcl 37 ref 66 pathname 000252 automatic varying char(256) dcl 25 set ref 52 53 54 54 55 56 reverse builtin function internal dcl 29 ref 54 seg based char unaligned dcl 27 ref 65 seg_length parameter fixed bin(21,0) dcl 15 set ref 1 61 65 65 65 75 seg_ptr parameter pointer dcl 14 set ref 1 50 58 65 66 74 substr builtin function internal dcl 29 ref 52 55 56 65 working_dir parameter varying char dcl 13 ref 1 53 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. blng 23 000164 automatic fixed bin(17,0) level 2 dcl 24 blng 23 based fixed bin(17,0) level 2 dcl 2-6 bmapp 14 000164 automatic pointer level 2 dcl 24 bmapp 14 based pointer level 2 dcl 2-6 bound 24(01) 000164 automatic bit(1) level 3 packed unaligned dcl 24 bound 24(01) based bit(1) level 3 packed unaligned dcl 2-6 comment 45 000164 automatic structure level 2 dcl 24 comment 45 based structure level 2 dcl 2-6 compile_time 32 000164 automatic fixed bin(71,0) level 2 dcl 24 compile_time 32 based fixed bin(71,0) level 2 dcl 2-6 compiler 30 000164 automatic char(8) level 2 dcl 24 compiler 30 based char(8) level 2 dcl 2-6 cvers 44 000164 automatic structure level 2 dcl 24 cvers 44 based structure level 2 dcl 2-6 default_truncate 64 based fixed bin(17,0) level 2 dcl 2-6 default_truncate 64 000164 automatic fixed bin(17,0) level 2 dcl 24 defp 4 based pointer level 2 dcl 2-6 defp 4 000164 automatic pointer level 2 dcl 24 dlng 17 based fixed bin(17,0) level 2 dcl 2-6 dlng 17 000164 automatic fixed bin(17,0) level 2 dcl 24 entry_bound 25 000164 automatic fixed bin(17,0) level 2 dcl 24 entry_bound 25 based fixed bin(17,0) level 2 dcl 2-6 error_access_mode internal static fixed bin(35,0) initial dcl 1-33 error_alt_empty internal static fixed bin(35,0) initial dcl 1-3 error_bad_line internal static fixed bin(35,0) initial dcl 1-28 error_bad_name internal static fixed bin(35,0) initial dcl 1-11 error_bad_pathname internal static fixed bin(35,0) initial dcl 1-32 error_bad_rec_len internal static fixed bin(35,0) initial dcl 1-36 error_bad_req internal static fixed bin(35,0) initial dcl 1-12 error_bad_sort internal static fixed bin(35,0) initial dcl 1-24 error_bad_type internal static fixed bin(35,0) initial dcl 1-20 error_block_spec internal static fixed bin(35,0) initial dcl 1-17 error_cur_empty internal static fixed bin(35,0) initial dcl 1-5 error_delimiter_miss internal static fixed bin(35,0) initial dcl 1-34 error_dprint_map internal static fixed bin(35,0) initial dcl 1-41 error_edit_max_num internal static fixed bin(35,0) initial dcl 1-43 error_line_miss internal static fixed bin(35,0) initial dcl 1-26 error_line_order internal static fixed bin(35,0) initial dcl 1-30 error_long_rec internal static fixed bin(35,0) initial dcl 1-8 error_max_args internal static fixed bin(35,0) initial dcl 1-39 error_max_line_number internal static fixed bin(35,0) initial dcl 1-38 error_max_lines internal static fixed bin(35,0) initial dcl 1-31 error_max_num internal static fixed bin(35,0) initial dcl 1-42 error_max_size internal static fixed bin(35,0) initial dcl 1-4 error_name_dup internal static fixed bin(35,0) initial dcl 1-7 error_name_miss internal static fixed bin(35,0) initial dcl 1-14 error_name_sys internal static fixed bin(35,0) initial dcl 1-40 error_no_comp internal static fixed bin(35,0) initial dcl 1-15 error_no_expl internal static fixed bin(35,0) initial dcl 1-10 error_no_main internal static fixed bin(35,0) initial dcl 1-16 error_no_nl internal static fixed bin(35,0) initial dcl 1-23 error_no_num internal static fixed bin(35,0) initial dcl 1-25 error_no_string internal static fixed bin(35,0) initial dcl 1-29 error_no_suffix internal static fixed bin(35,0) initial dcl 1-22 error_not_saved internal static fixed bin(35,0) initial dcl 1-6 error_request_miss internal static fixed bin(35,0) initial dcl 1-27 error_sav_cur internal static fixed bin(35,0) initial dcl 1-19 error_size_fixed_record internal static fixed bin(35,0) initial dcl 1-35 error_string_size internal static fixed bin(35,0) initial dcl 1-37 error_syntax_string internal static fixed bin(35,0) initial dcl 1-13 error_un_num_text internal static fixed bin(35,0) initial dcl 1-44 error_unkn_sys internal static fixed bin(35,0) initial dcl 1-21 error_unknown_arg internal static fixed bin(35,0) initial dcl 1-9 format 24 based structure level 2 dcl 2-6 format 24 000164 automatic structure level 2 dcl 24 gate 24(05) based bit(1) level 3 packed unaligned dcl 2-6 gate 24(05) 000164 automatic bit(1) level 3 packed unaligned dcl 24 ilng 21 based fixed bin(17,0) level 2 dcl 2-6 ilng 21 000164 automatic fixed bin(17,0) level 2 dcl 24 length 45(18) based bit(18) level 3 packed unaligned dcl 2-6 length 44(18) 000164 automatic bit(18) level 3 packed unaligned dcl 24 length 44(18) based bit(18) level 3 packed unaligned dcl 2-6 length 45(18) 000164 automatic bit(18) level 3 packed unaligned dcl 24 linkp 6 based pointer level 2 dcl 2-6 linkp 6 000164 automatic pointer level 2 dcl 24 links_in_text 24(07) based bit(1) level 3 packed unaligned dcl 2-6 links_in_text 24(07) 000164 automatic bit(1) level 3 packed unaligned dcl 24 llng 20 based fixed bin(17,0) level 2 dcl 2-6 llng 20 000164 automatic fixed bin(17,0) level 2 dcl 24 object_info based structure level 1 dcl 2-6 object_info_version_2 internal static fixed bin(17,0) initial dcl 2-59 offset 45 000164 automatic bit(18) level 3 packed unaligned dcl 24 offset 45 based bit(18) level 3 packed unaligned dcl 2-6 offset 44 based bit(18) level 3 packed unaligned dcl 2-6 offset 44 000164 automatic bit(18) level 3 packed unaligned dcl 24 old_format 24 000164 automatic bit(1) level 3 packed unaligned dcl 24 old_format 24 based bit(1) level 3 packed unaligned dcl 2-6 optional_truncate 65 based fixed bin(17,0) level 2 dcl 2-6 optional_truncate 65 000164 automatic fixed bin(17,0) level 2 dcl 24 pad 24(08) 000164 automatic bit(28) level 3 packed unaligned dcl 24 pad 24(08) based bit(28) level 3 packed unaligned dcl 2-6 procedure 24(03) 000164 automatic bit(1) level 3 packed unaligned dcl 24 procedure 24(03) based bit(1) level 3 packed unaligned dcl 2-6 rel_def 52 000164 automatic pointer level 2 dcl 24 rel_def 52 based pointer level 2 dcl 2-6 rel_link 54 000164 automatic pointer level 2 dcl 24 rel_link 54 based pointer level 2 dcl 2-6 rel_static 56 000164 automatic pointer level 2 dcl 24 rel_static 56 based pointer level 2 dcl 2-6 rel_symbol 60 based pointer level 2 dcl 2-6 rel_symbol 60 000164 automatic pointer level 2 dcl 24 rel_text 50 based pointer level 2 dcl 2-6 rel_text 50 000164 automatic pointer level 2 dcl 24 relocatable 24(02) based bit(1) level 3 packed unaligned dcl 2-6 relocatable 24(02) 000164 automatic bit(1) level 3 packed unaligned dcl 24 separate_static 24(06) 000164 automatic bit(1) level 3 packed unaligned dcl 24 separate_static 24(06) based bit(1) level 3 packed unaligned dcl 2-6 slng 22 000164 automatic fixed bin(17,0) level 2 dcl 24 slng 22 based fixed bin(17,0) level 2 dcl 2-6 source_map 46 based fixed bin(17,0) level 2 dcl 2-6 source_map 46 000164 automatic fixed bin(17,0) level 2 dcl 24 standard 24(04) based bit(1) level 3 packed unaligned dcl 2-6 standard 24(04) 000164 automatic bit(1) level 3 packed unaligned dcl 24 static_boundary 63 based fixed bin(17,0) level 2 dcl 2-6 static_boundary 63 000164 automatic fixed bin(17,0) level 2 dcl 24 statp 10 based pointer level 2 dcl 2-6 statp 10 000164 automatic pointer level 2 dcl 24 symbp 12 000164 automatic pointer level 2 dcl 24 symbp 12 based pointer level 2 dcl 2-6 text_boundary 62 000164 automatic fixed bin(17,0) level 2 dcl 24 text_boundary 62 based fixed bin(17,0) level 2 dcl 2-6 textlinkp 26 000164 automatic pointer level 2 dcl 24 textlinkp 26 based pointer level 2 dcl 2-6 textp 2 000164 automatic pointer level 2 dcl 24 textp 2 based pointer level 2 dcl 2-6 tlng 16 000164 automatic fixed bin(17,0) level 2 dcl 24 tlng 16 based fixed bin(17,0) level 2 dcl 2-6 userid 34 000164 automatic char(32) level 2 dcl 24 userid 34 based char(32) level 2 dcl 2-6 version_number 000164 automatic fixed bin(17,0) level 2 dcl 24 version_number based fixed bin(17,0) level 2 dcl 2-6 NAME DECLARED BY EXPLICIT CONTEXT. fst_get_segment_ 000024 constant entry external dcl 1 ref 1 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 460 502 360 470 Length 716 360 22 177 77 0 External procedure fst_get_segment_ uses 272 words of automatic storage THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out return shorten_stack ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. hcs_$initiate_count hcs_$make_seg object_info_$display THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$noentry error_table_$segknown LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 000016 50 000044 52 000047 53 000066 54 000126 55 000144 56 000152 58 000170 59 000233 60 000241 61 000243 65 000247 66 000257 67 000275 68 000303 70 000305 72 000306 73 000310 74 000315 75 000351 79 000355 ----------------------------------------------------------- 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