COMPILATION LISTING OF SEGMENT display_component_name Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/04/82 1804.0 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* Modified 5/28/75 by M. Weaver to convert to v2pl1 and remove search of non-text sections */ 12 /* Modified 761227 by PG to remove ibm entry & call expand_pathname_ */ 13 /* Modified October 1979 by Larry Johnson to take octal segment numbers */ 14 15 display_component_name: dcn: 16 procedure options (variable); 17 18 /* entries */ 19 20 declare com_err_ external entry options (variable); 21 declare cu_$arg_count external entry () returns (fixed bin); 22 declare cu_$arg_ptr external entry (fixed bin, pointer, fixed bin, fixed bin (35)); 23 declare get_bound_seg_info_ ext entry (pointer, fixed bin (24), pointer, pointer, pointer, fixed bin (35)); 24 declare expand_pathname_ entry (char (*), char (*), char (*), fixed bin (35)); 25 declare cv_oct_check_ external entry (char (*), fixed bin (35)) returns (fixed bin); 26 declare hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), 27 fixed bin, pointer, fixed bin (35)); 28 declare hcs_$terminate_noname ext entry (pointer, fixed bin (35)); 29 declare ioa_ external entry options (variable); 30 declare hcs_$status_mins entry (ptr, fixed bin (2), fixed bin (24), fixed bin (35)); 31 dcl hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), fixed bin (35)); 32 33 /* external static */ 34 35 dcl error_table_$dirseg ext fixed bin (35); 36 dcl error_table_$bad_segment ext fixed bin (35); 37 dcl error_table_$not_bound ext fixed bin (35); 38 39 /* automatic */ 40 41 declare (i, j, nargs, nopts, arg_lng) fixed bin; 42 declare (k, l, value, lng) fixed bin (18); 43 dcl wordcount fixed bin (18); 44 declare bitcount fixed bin (24); 45 declare code fixed bin (35); 46 declare (p, argp, objp, bmp, sblkp) pointer; 47 declare dirname char (168); 48 declare objname char (32); 49 dcl segno_given bit (1); 50 dcl segno fixed bin; 51 dcl seg_type fixed bin (2); 52 dcl argno fixed bin; 53 dcl msg char (16) var; 54 55 declare 1 oi aligned like object_info; 56 57 declare 1 comp (16) aligned, 58 2 c_offset fixed bin, 59 2 found fixed bin; 60 61 /* builtins */ 62 63 declare (addr, addrel, binary, divide, null) builtin; 64 65 /* internal static */ 66 67 declare errname char (22) internal static options (constant) initial ("display_component_name"); 68 69 /* based */ 70 71 declare var_string char (lng) based (p); 72 declare argname char (arg_lng) unaligned based (argp); 73 74 /* include files */ 75 1 1 /* BEGIN INCLUDE SEGMENT ... bind_map.incl.pl1 Michael J. Spier, 4/29/71 */ 1 2 /* last modified April, 1972 by M. Weaver */ 1 3 1 4 declare 1 bindmap aligned based(bmp), 1 5 1 6 2 dcl_version fixed bin, /* version number of this structure = 1 */ 1 7 2 n_components fixed bin, /* number of entries in this array */ 1 8 2 component(0 refer(bindmap.n_components)) aligned, 1 9 3 name, /* objectname of component object */ 1 10 4 name_ptr bit(18) unaligned, /* pointer to name string */ 1 11 4 name_lng bit(18) unaligned, /* length of name string */ 1 12 3 comp_name char(8) aligned, /* name of component's compiler */ 1 13 3 text_start bit(18) unaligned, /* text section relocation counter */ 1 14 3 text_lng bit(18) unaligned, /* length of text section */ 1 15 3 stat_start bit(18) unaligned, /* internal static relocation counter */ 1 16 3 stat_lng bit(18) unaligned, /* length of internal static */ 1 17 3 symb_start bit(18) unaligned, /* symbol section relocation counter */ 1 18 3 symb_lng bit(18) unaligned, /* length of symbol section */ 1 19 3 defblock_ptr bit(18) unaligned, /* pointer to components definition block */ 1 20 3 n_blocks bit(18) unaligned, /* number of symbol blocks the component has */ 1 21 2 bf_name aligned, /* name of bindfile */ 1 22 3 bf_name_ptr bit(18) unaligned, /* pointer to name string */ 1 23 3 bf_name_lng bit(18) unaligned, /* length of name string */ 1 24 2 bf_date_up char(24), /* date updated in archive */ 1 25 2 bf_date_mod char(24); /* date last modified */ 1 26 1 27 /* END INCLUDE SEGMENT ... bind_map.incl.pl1 */ 76 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 perprocess_static bit (1) unaligned, /* on if static is not to be per run unit */ 2 30 3 pad bit(27) unaligned, 2 31 2 entry_bound fixed bin, /* entry bound if segment is a gate */ 2 32 2 textlinkp pointer, /* ptr to first link in text */ 2 33 2 34 /* LIMIT OF BRIEF STRUCTURE */ 2 35 2 36 2 compiler char(8) aligned, /* name of processor which generated segment */ 2 37 2 compile_time fixed bin(71), /* clock reading of date/time object was generated */ 2 38 2 userid char(32) aligned, /* standard Multics id of creator of object segment */ 2 39 2 cvers aligned, /* generator version name in printable char string form */ 2 40 3 offset bit(18) unaligned, /* offset of name in words relative to base of symbol section */ 2 41 3 length bit(18) unaligned, /* length of name in characters */ 2 42 2 comment aligned, /* printable comment concerning generator or generation of segment */ 2 43 3 offset bit(18) unaligned, /* offset of comment in words relative to base of symbol section */ 2 44 3 length bit(18) unaligned, /* length of comment in characters */ 2 45 2 source_map fixed bin, /* offset, relative to base of symbol section, of source map structure */ 2 46 2 47 /* LIMIT OF DISPLAY STRUCTURE */ 2 48 2 49 2 rel_text pointer, /* pointer to text section relocation info */ 2 50 2 rel_def pointer, /* pointer to definition section relocation info */ 2 51 2 rel_link pointer, /* pointer to linkage section relocation info */ 2 52 2 rel_static pointer, /* pointer to static section relocation info */ 2 53 2 rel_symbol pointer, /* pointer to symbol section relocation info */ 2 54 2 text_boundary fixed bin, /* specifies mod of text section base boundary */ 2 55 2 static_boundary fixed bin, /* specifies mod of internal static base boundary */ 2 56 /* currently not used by system */ 2 57 2 default_truncate fixed bin, /* offset rel to symbp for binder to automatically trunc. symb sect. */ 2 58 2 optional_truncate fixed bin; /* offset rel to symbp for binder to optionally trunc. symb sect. */ 2 59 2 60 declare object_info_version_2 fixed bin int static init(2); 2 61 2 62 /* END INCLUDE FILE ... object_info.incl.pl1 */ 77 78 79 /* program */ 80 81 nopts = 0; 82 nargs = cu_$arg_count (); 83 segno_given = "0"b; 84 argno = 1; 85 86 call cu_$arg_ptr (argno, argp, arg_lng, code); 87 if code ^= 0 then do; 88 usage: call com_err_ (code, errname, "Usage: ^a path offset1 ..... offset16", errname); 89 return; 90 end; 91 segno = cv_oct_check_ (argname, code); /* check for octal segment number */ 92 if code = 0 then segno_given = "1"b; 93 else if argname = "-name" | argname = "-nm" then do; 94 argno = argno + 1; 95 call cu_$arg_ptr (argno, argp, arg_lng, code); 96 if code ^= 0 then go to usage; 97 else go to path; 98 end; 99 else do; 100 path: call expand_pathname_ (argname, dirname, objname, code); 101 if code ^= 0 then do; 102 call com_err_ (code, errname, "^a", argname); 103 return; 104 end; 105 end; 106 107 argno = argno + 1; 108 if argno > nargs then go to usage; 109 110 do while (argno <= nargs); 111 call cu_$arg_ptr (argno, argp, arg_lng, code); 112 nopts = nopts + 1; 113 if nopts > hbound (comp, 1) then do; 114 call com_err_ (0, errname, "Too many offsets specified."); 115 return; 116 end; 117 comp (nopts).c_offset = cv_oct_check_ (argname, code); 118 if code ^= 0 then do; 119 call com_err_ (0, errname, "Invalid octal number: ^a", argname); 120 return; 121 end; 122 comp (nopts).found = 0; 123 argno = argno + 1; 124 end; 125 126 if segno_given then do; 127 objp = baseptr (segno); 128 call hcs_$fs_get_path_name (objp, dirname, (0), objname, code); 129 if code ^= 0 then do; 130 call com_err_ (code, errname, "Unable to get pathname for segment ^o.", segno); 131 return; 132 end; 133 call hcs_$status_mins (objp, seg_type, bitcount, code); 134 if code ^= 0 then do; 135 segerr: call com_err_ (code, errname, "^a^[>^]^a", dirname, (dirname ^= ">"), objname); 136 return; 137 end; 138 if seg_type = 2 then do; 139 code = error_table_$dirseg; 140 go to segerr; 141 end; 142 end; 143 else do; 144 call hcs_$initiate_count (dirname, objname, "", bitcount, 0, objp, code); 145 if objp = null () then do; 146 call com_err_ (code, errname, "^a^[>^]^a", dirname, (dirname ^= ">"), objname); 147 return; 148 end; 149 end; 150 151 wordcount = divide (bitcount + 35, 36, 18, 0); 152 oi.version_number = object_info_version_2; 153 call get_bound_seg_info_ (objp, bitcount, addr (oi), bmp, sblkp, code); 154 /* get ptrs to bindmap and symbol section */ 155 if code ^= 0 then do; /* can't find bindmap */ 156 if code = error_table_$bad_segment then do; 157 msg = "non object"; 158 go to special_scan; 159 end; 160 if code = error_table_$not_bound then do; 161 msg = "not bound"; 162 go to special_scan; 163 end; 164 call com_err_ (code, errname, "^a>^a", dirname, objname); 165 goto return_noline; 166 end; 167 168 do i = 1 to nopts; 169 value = comp (i).c_offset; /* get desired offset */ 170 do j = 1 to n_components; 171 k = binary (component (j).text_start, 18); 172 l = binary (component (j).text_lng, 18); 173 if value >= k & value < k+l then do; 174 p = addrel (sblkp, component (j).name_ptr); 175 lng = binary (component (j).name_lng, 18); 176 call ioa_ ("^6o^-^a|^o", value, var_string, value-k); 177 comp (i).found = 1; 178 goto next; 179 end; 180 end; 181 if value < wordcount then do; 182 call ioa_ ("^6o^-^a|^o (not in text)", value, objname, value); 183 comp (i).found = 1; 184 end; 185 next: 186 end; 187 188 check_errors: 189 do i = 1 to nopts; /* rescan option table */ 190 if comp (i).found = 0 then do; 191 if comp (i).c_offset <= wordcount 192 then call com_err_ (0, errname, "Offset ^o not in text section^[ of ^a^[>^]^a^;^3s^]", comp (i).c_offset, 193 segno_given, dirname, (dirname ^= ">"), objname); 194 else call com_err_ (0, errname, "Offset ^o out of bounds^[ in ^a^[>^]^a^;^3s^]", comp (i).c_offset, 195 segno_given, dirname, (dirname ^= ">"), objname); 196 end; 197 end; 198 return_noline: 199 if objp ^= null then if ^segno_given then call hcs_$terminate_noname (objp, code); 200 return; 201 202 special_scan: 203 do i = 1 to nopts; 204 if comp (i).c_offset < wordcount then do; 205 call ioa_ ("^6o^-^a|^o (^a)", comp (i).c_offset, objname, comp (i).c_offset, msg); 206 comp (i).found = 1; 207 end; 208 end; 209 go to check_errors; 210 211 end display_component_name; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/04/82 1625.4 display_component_name.pl1 >dumps>old>recomp>display_component_name.pl1 76 1 09/18/74 1700.9 bind_map.incl.pl1 >ldd>include>bind_map.incl.pl1 77 2 08/05/77 1022.5 object_info.incl.pl1 >ldd>include>object_info.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. addr builtin function dcl 63 ref 153 153 addrel builtin function dcl 63 ref 174 arg_lng 000104 automatic fixed bin(17,0) dcl 41 set ref 86* 91 91 93 93 95* 100 100 102 102 111* 117 117 119 119 argname based char unaligned dcl 72 set ref 91* 93 93 100* 102* 117* 119* argno 000213 automatic fixed bin(17,0) dcl 52 set ref 84* 86* 94* 94 95* 107* 107 108 110 111* 123* 123 argp 000116 automatic pointer dcl 46 set ref 86* 91 93 93 95* 100 102 111* 117 119 binary builtin function dcl 63 ref 171 172 175 bindmap based structure level 1 dcl 1-4 bitcount 000112 automatic fixed bin(24,0) dcl 44 set ref 133* 144* 151 153* bmp 000122 automatic pointer dcl 46 set ref 153* 170 171 172 174 175 c_offset 000310 automatic fixed bin(17,0) array level 2 dcl 57 set ref 117* 169 191 191* 194* 204 205* 205* code 000113 automatic fixed bin(35,0) dcl 45 set ref 86* 87 88* 91* 92 95* 96 100* 101 102* 111* 117* 118 128* 129 130* 133* 134 135* 139* 144* 146* 153* 155 156 160 164* 198* com_err_ 000010 constant entry external dcl 20 ref 88 102 114 119 130 135 146 164 191 194 comp 000310 automatic structure array level 1 dcl 57 set ref 113 component 2 based structure array level 2 dcl 1-4 cu_$arg_count 000012 constant entry external dcl 21 ref 82 cu_$arg_ptr 000014 constant entry external dcl 22 ref 86 95 111 cv_oct_check_ 000022 constant entry external dcl 25 ref 91 117 dirname 000126 automatic char(168) unaligned dcl 47 set ref 100* 128* 135* 135 144* 146* 146 164* 191* 191 194* 194 divide builtin function dcl 63 ref 151 errname 000000 constant char(22) initial unaligned dcl 67 set ref 88* 88* 102* 114* 119* 130* 135* 146* 164* 191* 194* error_table_$bad_segment 000040 external static fixed bin(35,0) dcl 36 ref 156 error_table_$dirseg 000036 external static fixed bin(35,0) dcl 35 ref 139 error_table_$not_bound 000042 external static fixed bin(35,0) dcl 37 ref 160 expand_pathname_ 000020 constant entry external dcl 24 ref 100 found 1 000310 automatic fixed bin(17,0) array level 2 dcl 57 set ref 122* 177* 183* 190 206* get_bound_seg_info_ 000016 constant entry external dcl 23 ref 153 hcs_$fs_get_path_name 000034 constant entry external dcl 31 ref 128 hcs_$initiate_count 000024 constant entry external dcl 26 ref 144 hcs_$status_mins 000032 constant entry external dcl 30 ref 133 hcs_$terminate_noname 000026 constant entry external dcl 28 ref 198 i 000100 automatic fixed bin(17,0) dcl 41 set ref 168* 169 177 183* 188* 190 191 191 194* 202* 204 205 205 206* ioa_ 000030 constant entry external dcl 29 ref 176 182 205 j 000101 automatic fixed bin(17,0) dcl 41 set ref 170* 171 172 174 175* k 000105 automatic fixed bin(18,0) dcl 42 set ref 171* 173 173 176 l 000106 automatic fixed bin(18,0) dcl 42 set ref 172* 173 lng 000110 automatic fixed bin(18,0) dcl 42 set ref 175* 176 176 msg 000214 automatic varying char(16) dcl 53 set ref 157* 161* 205* n_components 1 based fixed bin(17,0) level 2 dcl 1-4 ref 170 name 2 based structure array level 3 dcl 1-4 name_lng 2(18) based bit(18) array level 4 packed unaligned dcl 1-4 ref 175 name_ptr 2 based bit(18) array level 4 packed unaligned dcl 1-4 ref 174 nargs 000102 automatic fixed bin(17,0) dcl 41 set ref 82* 108 110 nopts 000103 automatic fixed bin(17,0) dcl 41 set ref 81* 112* 112 113 117 122 168 188 202 null builtin function dcl 63 ref 145 198 object_info based structure level 1 dcl 2-6 object_info_version_2 constant fixed bin(17,0) initial dcl 2-60 ref 152 objname 000200 automatic char(32) unaligned dcl 48 set ref 100* 128* 135* 144* 146* 164* 182* 191* 194* 205* objp 000120 automatic pointer dcl 46 set ref 127* 128* 133* 144* 145 153* 198 198* oi 000222 automatic structure level 1 dcl 55 set ref 153 153 p 000114 automatic pointer dcl 46 set ref 174* 176 sblkp 000124 automatic pointer dcl 46 set ref 153* 174 seg_type 000212 automatic fixed bin(2,0) dcl 51 set ref 133* 138 segno 000211 automatic fixed bin(17,0) dcl 50 set ref 91* 127 130* segno_given 000210 automatic bit(1) unaligned dcl 49 set ref 83* 92* 126 191* 194* 198 text_lng 5(18) based bit(18) array level 3 packed unaligned dcl 1-4 ref 172 text_start 5 based bit(18) array level 3 packed unaligned dcl 1-4 ref 171 value 000107 automatic fixed bin(18,0) dcl 42 set ref 169* 173 173 176* 176 181 182* 182* var_string based char unaligned dcl 71 set ref 176* version_number 000222 automatic fixed bin(17,0) level 2 dcl 55 set ref 152* wordcount 000111 automatic fixed bin(18,0) dcl 43 set ref 151* 181 191 204 NAMES DECLARED BY EXPLICIT CONTEXT. check_errors 001417 constant label dcl 188 ref 209 dcn 000171 constant entry external dcl 15 display_component_name 000200 constant entry external dcl 15 next 001415 constant label dcl 185 ref 178 path 000352 constant label dcl 100 ref 97 return_noline 001575 constant label dcl 198 ref 165 segerr 000725 constant label dcl 135 ref 140 special_scan 001616 constant label dcl 202 ref 158 162 usage 000236 constant label dcl 88 ref 96 108 NAMES DECLARED BY CONTEXT OR IMPLICATION. baseptr builtin function ref 127 hbound builtin function ref 113 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2074 2140 1676 2104 Length 2374 1676 44 220 175 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dcn 386 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dcn 000100 i dcn 000101 j dcn 000102 nargs dcn 000103 nopts dcn 000104 arg_lng dcn 000105 k dcn 000106 l dcn 000107 value dcn 000110 lng dcn 000111 wordcount dcn 000112 bitcount dcn 000113 code dcn 000114 p dcn 000116 argp dcn 000120 objp dcn 000122 bmp dcn 000124 sblkp dcn 000126 dirname dcn 000200 objname dcn 000210 segno_given dcn 000211 segno dcn 000212 seg_type dcn 000213 argno dcn 000214 msg dcn 000222 oi dcn 000310 comp dcn THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr cv_oct_check_ expand_pathname_ get_bound_seg_info_ hcs_$fs_get_path_name hcs_$initiate_count hcs_$status_mins hcs_$terminate_noname ioa_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_segment error_table_$dirseg error_table_$not_bound LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 15 000170 81 000205 82 000206 83 000214 84 000215 86 000217 87 000234 88 000236 89 000265 91 000266 92 000312 93 000317 94 000331 95 000332 96 000347 97 000351 100 000352 101 000402 102 000404 103 000436 107 000437 108 000440 110 000443 111 000446 112 000463 113 000464 114 000467 115 000514 117 000515 118 000544 119 000546 120 000605 122 000606 123 000610 124 000611 126 000612 127 000615 128 000621 129 000653 130 000655 131 000705 133 000706 134 000723 135 000725 136 000774 138 000775 139 001000 140 001003 142 001004 144 001005 145 001047 146 001053 147 001122 151 001123 152 001127 153 001131 155 001154 156 001156 157 001161 158 001166 160 001167 161 001171 162 001176 164 001177 165 001231 168 001232 169 001241 170 001244 171 001254 172 001262 173 001265 174 001275 175 001302 176 001305 177 001343 178 001350 180 001351 181 001353 182 001356 183 001410 185 001415 188 001417 190 001426 191 001432 194 001515 197 001573 198 001575 200 001615 202 001616 204 001625 205 001632 206 001667 208 001672 209 001674 ----------------------------------------------------------- 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