COMPILATION LISTING OF SEGMENT amu_search_seg_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 07/28/87 0928.8 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(86-12-02,Farley), approve(87-07-09,MCR7746), 13* audit(87-07-16,Fawcett), install(87-07-28,MR12.1-1049): 14* Corrected problem with array bounds of part1 & part2. Was going 1 over.. 15* END HISTORY COMMENTS */ 16 17 18 /* Modified 02/19/86 by Paul Leatherman to set header when seg not found */ 19 20 amu_search_seg_: 21 proc (P_amu_info_ptr, P_af, af_len, P_segno, P_offset, P_range, P_string, P_code); 22 23 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend,ifthendo,ifthen,^thendo */ 24 25 dcl P_amu_info_ptr ptr, 26 P_af ptr, 27 P_segno fixed bin, 28 P_offset fixed bin (18), 29 P_range fixed bin (18), 30 P_string char (12), 31 af_len fixed bin(21), 32 P_code fixed bin (25); 33 34 dcl return_af char(af_len) var based(P_af); 35 dcl af_sw bit(1); 36 dcl segno fixed bin; 37 dcl (offset, word_idx, range, part1_end, part2_end, part1_start, part2_start) fixed bin (18); 38 dcl char_idx fixed bin; 39 dcl code fixed bin (35); 40 dcl string char (12); 41 dcl one_found bit (1); 42 dcl header char (80); 43 dcl header_printed bit (1); 44 dcl foo_len fixed bin (21); 45 dcl ignore fixed bin; 46 47 dcl 1 trans_space like translation; 48 dcl part1_word (part1_start:part1_end) bit (36) aligned based (translation.part1.ptr); 49 dcl part2_word (part2_start:part2_end) bit (36) aligned based (translation.part2.ptr); 50 dcl (search_data, search_mask) char (12) aligned; 51 dcl mask bit (36) aligned; 52 dcl data bit (36) aligned; 53 dcl old_proc_idx fixed bin; 54 dcl out_str char(256) var; 55 dcl bit_string (12) bit (3) unal based; 56 dcl 1 char_bits (12) based, 57 2 two bit (6) unal, 58 2 last bit (3) unal; 59 60 dcl amu_et_$no_translation fixed bin (35) ext static; 61 dcl amu_et_$seg_not_dumped fixed bin (35) ext static; 62 63 64 dcl amu_$translate_get entry (ptr, fixed bin, ptr, fixed bin (35)), 65 amu_$translate_add entry (ptr, ptr, fixed bin, fixed bin (35)), 66 amu_$fdump_translate_get_translation entry (ptr, ptr, ptr, fixed bin (35)), 67 amu_$get_name_no_comp entry (ptr, ptr) returns(char(*)), 68 amu_$return_val_per_process entry (ptr, fixed bin) returns (bit (1)), 69 amu_$fdump_mpt_change_idx entry (ptr, fixed bin), 70 ( 71 ioa_, 72 ioa_$rsnnl 73 ) entry () options (variable); 74 75 dcl (addr, baseptr, min, null, translate) builtin; 76 77 amu_info_ptr = P_amu_info_ptr; 78 string = P_string; 79 offset = P_offset; 80 range = P_range; 81 segno = P_segno; 82 one_found = "0"b; 83 if P_af ^= null() then do; 84 af_sw = "1"b; 85 return_af = ""; 86 end; 87 else af_sw = "0"b; 88 89 old_proc_idx = -1; 90 if ^amu_$return_val_per_process (amu_info_ptr, segno) then do; 91 old_proc_idx = amu_info.process_idx; 92 call amu_$fdump_mpt_change_idx (amu_info_ptr, 0); 93 end; 94 95 call amu_$translate_get (amu_info_ptr, segno, translation_ptr, code); 96 if code ^= 0 then do; 97 if code = amu_et_$no_translation then do; 98 if amu_info.type = SAVED_PROC_TYPE then do; 99 P_code = code; 100 return; 101 end; 102 translation_ptr = addr (trans_space); 103 104 call amu_$fdump_translate_get_translation (amu_info_ptr, baseptr (segno), translation_ptr, code); 105 if code = amu_et_$seg_not_dumped then do; 106 P_code = code; 107 return; 108 end; 109 if code ^= 0 then goto ERROR; 110 call amu_$translate_add (amu_info_ptr, translation_ptr, segno, code); 111 if code ^= 0 then goto ERROR; 112 end; 113 else goto ERROR; 114 end; 115 116 search_mask = translate (string, "077777777", "-01234567"); 117 search_data = translate (string, "001234567", "-01234567"); 118 part1_start = 0; 119 part1_end = translation.part1.lth - 1; 120 part2_start = translation.part1.lth; 121 part2_end = translation.part1.lth + translation.part2.lth - 1; 122 do char_idx = 1 to 12; 123 addr (data) -> bit_string (char_idx) = addr (search_data) -> char_bits (char_idx).last; 124 addr (mask) -> bit_string (char_idx) = addr (search_mask) -> char_bits (char_idx).last; 125 end; 126 if range ^= 0 then range = range + offset; 127 if (range > (translation.part1.lth + translation.part2.lth)) | (range = 0) then 128 range = translation.part1.lth + translation.part2.lth - 1; 129 130 131 call ioa_$rsnnl (" ^o ^a ^/^2xfrom ^o to ^o",header,foo_len, 132 segno,amu_$get_name_no_comp (amu_info_ptr,(baseptr(segno))), 133 offset,range); 134 135 header_printed = "0"b; 136 137 do word_idx = offset to min (translation.part1.lth, range) - 1; 138 139 if (part1_word (word_idx) & mask) = data then do; 140 if ^header_printed then do; 141 if ^af_sw then call ioa_ ("Segment ^a",header); 142 header_printed = "1"b; 143 end; 144 if af_sw then do; 145 call ioa_$rsnnl ("^o|^o ", out_str, ignore,segno, word_idx); 146 return_af = return_af || out_str; 147 end; 148 else call ioa_ ("^o|^o = ^12.3b", segno, word_idx, part1_word (word_idx)); 149 one_found = "1"b; 150 end; 151 end; 152 153 do word_idx = word_idx to range - 1; 154 if part2_word (word_idx) & mask = data then do; 155 if ^header_printed then do; 156 if ^af_sw then call ioa_ ("Segment ^a",header); 157 header_printed = "1"b; 158 end; 159 if af_sw then do; 160 call ioa_$rsnnl ("^o|^o ", out_str, ignore,segno, word_idx); 161 return_af = return_af || out_str; 162 end; 163 else call ioa_ ("^o|^o = ^12.3b", segno, word_idx, part2_word (word_idx)); 164 one_found = "1"b; 165 end; 166 end; 167 168 code = 0; 169 ERROR: 170 171 if ^one_found then 172 call ioa_ ("^/^13x No match in ^o ^a", segno,amu_$get_name_no_comp (amu_info_ptr,(baseptr(segno)))); 173 if old_proc_idx >= 0 then call amu_$fdump_mpt_change_idx (amu_info_ptr, old_proc_idx); 174 P_code = code; 175 return; 176 1 1 /* BEGIN INCLUDE FILE amu_info.incl.pl1 */ 1 2 1 3 dcl 1 amu_info aligned based (amu_info_ptr), 1 4 2 version char (8) aligned, /* AMU_INFO_VERSION */ 1 5 2 flags aligned, 1 6 3 early_dump bit(1) unal, 1 7 3 pad bit(35) unal, 1 8 2 type fixed bin unal, /* One of the types below */ 1 9 2 time_created fixed bin (71) aligned, /* time created -- for debugging purposes */ 1 10 2 chain, /* a chain of all the amu_info's which exist */ 1 11 3 prev pointer unaligned, 1 12 3 next pointer unaligned, 1 13 1 14 2 area_ptr pointer, /* pointer to area used for allocating things */ 1 15 1 16 2 translation_table_ptr pointer, /* pointer to address map -- always present */ 1 17 /* SEE: amu_translation.incl.pl1 */ 1 18 2 fdump_info_ptr pointer, 1 19 /* pointer to FDUMP info, present if looking at an FDUMP */ 1 20 /* SEE: amu_fdump_info.incl.pl1 */ 1 21 /* old_uid_table pointer if looking at a SAVED PROC. */ 1 22 /* See: amu_old_uid_table */ 1 23 1 24 1 25 2 hardcore_info_ptr pointer, /* pointer to hardcore information -- always present */ 1 26 /* SEE: amu_hardcore_info.incl.pl1 */ 1 27 2 copy_chain pointer, /* pointer to info about segment copies */ 1 28 /* SEE: amu_copy_info.incl.pl1 */ 1 29 2 process_info_ptr pointer, /* pointer to process info for this translation */ 1 30 /* SEE: amu_process_info.incl.pl1 */ 1 31 2 process_idx fixed bin, /* index of process in translation-specifc process table */ 1 32 1 33 2 proc_idx_hold fixed bin, /* a place to keep the index when a changing to another proc */ 1 34 1 35 2 error_info, /* various info about how amu_error_ is to behave */ 1 36 3 error_flags aligned, 1 37 4 handler_exists bit (1) unaligned, /* set to indicate existence of an amu_error handler */ 1 38 4 in_subsystem bit (1) unaligned, /* This amu_info belongs to an ssu_ maintained subsystem */ 1 39 4 pad bit (34) unaligned, 1 40 3 sci_ptr pointer, /* sci_ptr for subsystem, if in_subsystem = "1"b */ 1 41 2 definitions_info_ptr ptr; 1 42 1 43 dcl amu_area area based (amu_info.area_ptr); 1 44 1 45 dcl amu_info_ptr pointer; 1 46 1 47 dcl (FDUMP_TYPE init (1037), /* the various legitimate types of amu_info's */ 1 48 FDUMP_PROCESS_TYPE init (1038), 1 49 ONLINE_TYPE init (1039), 1 50 ONLINE_PROCESS_TYPE init (1040), 1 51 NETWORK_FDUMP_TYPE init (1041), 1 52 NETWORK_ONLINE_TYPE init (1042), 1 53 SAVED_PROC_TYPE init (1043), 1 54 INDIRECT_TYPE init (1044)) fixed bin internal static options (constant); 1 55 1 56 dcl AMU_INFO_VERSION_1 char (8) internal static options (constant) init ("amu_v1"); 1 57 dcl AMU_INFO_VERSION char (8) internal static options (constant) init ("amu_v1"); 1 58 dcl AMU_INFO_VERSION_2 char (8) internal static options (constant) init ("amu_v2"); 1 59 1 60 dcl PDIR_SUFFIX char(4) init("pdir") int static options(constant); 1 61 1 62 /* END INCLUDE FILE amu_info.incl.pl1 */ 177 178 2 1 /* BEGIN INCLUDE FILE amu_translation.incl.pl1 */ 2 2 2 3 2 4 2 5 /****^ HISTORY COMMENTS: 2 6* 1) change(87-01-16,Parisek), approve(87-07-16,MCR7746), 2 7* audit(87-07-16,Fawcett), install(87-07-28,MR12.1-1049): 2 8* Added the "replaced" field to record whether a segment was replaced by 2 9* another segment via the "replace" request. 2 10* END HISTORY COMMENTS */ 2 11 2 12 2 13 dcl 1 translation_table aligned based (amu_info.translation_table_ptr), 2 14 2 n_entries fixed bin, 2 15 2 max_entries fixed bin, 2 16 2 17 2 valid_array aligned, /* one bit for each valid segno */ 2 18 3 valid (0 : 4095) bit (1) unaligned, 2 19 2 used_array aligned, /* one bit for each existing translation */ 2 20 3 used (0 : 4095) bit (1) unaligned, 2 21 2 22 2 array (alloc_translation_table_max_entries refer (translation_table.max_entries)) like translation; 2 23 2 24 dcl 1 translation aligned based (translation_ptr), /* a single translation */ 2 25 2 segno fixed bin (18) unsigned unaligned, /* foreign segno for this translation */ 2 26 2 flags unaligned, 2 27 3 two_part bit (1) unaligned, /* segment is in two pieces -- from an FDUMP */ 2 28 3 in_dump bit (1) unaligned, /* segment is part of an FDUMP image */ 2 29 3 in_temp_seg bit (1) unaligned, /* segment is a copy at the base of a temp segment */ 2 30 3 in_perm_seg bit (1) unaligned, /* segment is in the file system */ 2 31 3 in_dp_dir bit (1) unaligned, 2 32 3 replaced bit (1) unaligned, 2 33 3 pad bit (12) unaligned, 2 34 2 part1, /* pointer to first (possibly only) part of segment */ 2 35 3 ptr pointer unaligned, 2 36 3 lth fixed bin (19), 2 37 2 part2 like translation.part1; 2 38 2 39 dcl alloc_translation_table_max_entries fixed bin; 2 40 dcl translation_ptr pointer; 2 41 2 42 /* END INCLUDE FILE amu_translation.incl.pl1 */ 179 180 181 182 end amu_search_seg_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/28/87 0924.4 amu_search_seg_.pl1 >spec>install>MR12.1-1049>amu_search_seg_.pl1 177 1 11/20/84 0856.1 amu_info.incl.pl1 >ldd>include>amu_info.incl.pl1 179 2 07/28/87 0927.3 amu_translation.incl.pl1 >spec>install>MR12.1-1049>amu_translation.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. P_af parameter pointer dcl 25 ref 20 83 85 146 146 161 161 P_amu_info_ptr parameter pointer dcl 25 ref 20 77 P_code parameter fixed bin(25,0) dcl 25 set ref 20 99* 106* 174* P_offset parameter fixed bin(18,0) dcl 25 ref 20 79 P_range parameter fixed bin(18,0) dcl 25 ref 20 80 P_segno parameter fixed bin(17,0) dcl 25 ref 20 81 P_string parameter char(12) unaligned dcl 25 ref 20 78 SAVED_PROC_TYPE constant fixed bin(17,0) initial dcl 1-47 ref 98 addr builtin function dcl 75 ref 102 123 123 124 124 af_len parameter fixed bin(21,0) dcl 25 ref 20 85 146 161 af_sw 000100 automatic bit(1) unaligned dcl 35 set ref 84* 87* 141 144 156 159 amu_$fdump_mpt_change_idx 000026 constant entry external dcl 64 ref 92 173 amu_$fdump_translate_get_translation 000020 constant entry external dcl 64 ref 104 amu_$get_name_no_comp 000022 constant entry external dcl 64 ref 131 169 amu_$return_val_per_process 000024 constant entry external dcl 64 ref 90 amu_$translate_add 000016 constant entry external dcl 64 ref 110 amu_$translate_get 000014 constant entry external dcl 64 ref 95 amu_et_$no_translation 000010 external static fixed bin(35,0) dcl 60 ref 97 amu_et_$seg_not_dumped 000012 external static fixed bin(35,0) dcl 61 ref 105 amu_info based structure level 1 dcl 1-3 amu_info_ptr 000266 automatic pointer dcl 1-45 set ref 77* 90* 91 92* 95* 98 104* 110* 131* 169* 173* baseptr builtin function dcl 75 ref 104 104 131 169 bit_string based bit(3) array unaligned dcl 55 set ref 123* 124* char_bits based structure array level 1 packed unaligned dcl 56 char_idx 000111 automatic fixed bin(17,0) dcl 38 set ref 122* 123 123 124 124* code 000112 automatic fixed bin(35,0) dcl 39 set ref 95* 96 97 99 104* 105 106 109 110* 111 168* 174 data 000162 automatic bit(36) dcl 52 set ref 123 139 154 foo_len 000144 automatic fixed bin(21,0) dcl 44 set ref 131* header 000117 automatic char(80) unaligned dcl 42 set ref 131* 141* 156* header_printed 000143 automatic bit(1) unaligned dcl 43 set ref 135* 140 142* 155 157* ignore 000145 automatic fixed bin(17,0) dcl 45 set ref 145* 160* ioa_ 000030 constant entry external dcl 64 ref 141 148 156 163 169 ioa_$rsnnl 000032 constant entry external dcl 64 ref 131 145 160 last 0(06) based bit(3) array level 2 packed unaligned dcl 56 ref 123 124 lth 4 based fixed bin(19,0) level 3 in structure "translation" dcl 2-24 in procedure "amu_search_seg_" ref 121 127 127 lth 2 based fixed bin(19,0) level 3 in structure "translation" dcl 2-24 in procedure "amu_search_seg_" ref 119 120 121 127 127 137 mask 000161 automatic bit(36) dcl 51 set ref 124 139 154 min builtin function dcl 75 ref 137 null builtin function dcl 75 ref 83 offset 000102 automatic fixed bin(18,0) dcl 37 set ref 79* 126 131* 137 old_proc_idx 000163 automatic fixed bin(17,0) dcl 53 set ref 89* 91* 173 173* one_found 000116 automatic bit(1) unaligned dcl 41 set ref 82* 149* 164* 169 out_str 000164 automatic varying char(256) dcl 54 set ref 145* 146 160* 161 part1 347 based structure array level 3 in structure "translation_table" dcl 2-13 in procedure "amu_search_seg_" part1 1 000146 automatic structure level 2 in structure "trans_space" unaligned dcl 47 in procedure "amu_search_seg_" part1 1 based structure level 2 in structure "translation" dcl 2-24 in procedure "amu_search_seg_" part1_end 000105 automatic fixed bin(18,0) dcl 37 set ref 119* part1_start 000107 automatic fixed bin(18,0) dcl 37 set ref 118* 139 148 part1_word based bit(36) array dcl 48 set ref 139 148* part2 3 based structure level 2 dcl 2-24 part2_end 000106 automatic fixed bin(18,0) dcl 37 set ref 121* part2_start 000110 automatic fixed bin(18,0) dcl 37 set ref 120* 154 163 part2_word based bit(36) array dcl 49 set ref 154 163* process_idx 24 based fixed bin(17,0) level 2 dcl 1-3 ref 91 ptr 1 based pointer level 3 in structure "translation" packed unaligned dcl 2-24 in procedure "amu_search_seg_" ref 139 148 ptr 3 based pointer level 3 in structure "translation" packed unaligned dcl 2-24 in procedure "amu_search_seg_" ref 154 163 range 000104 automatic fixed bin(18,0) dcl 37 set ref 80* 126 126* 126 127 127 127* 131* 137 153 return_af based varying char dcl 34 set ref 85* 146* 146 161* 161 search_data 000153 automatic char(12) dcl 50 set ref 117* 123 search_mask 000156 automatic char(12) dcl 50 set ref 116* 124 segno 000101 automatic fixed bin(17,0) dcl 36 set ref 81* 90* 95* 104 104 110* 131* 131 145* 148* 160* 163* 169* 169 string 000113 automatic char(12) unaligned dcl 40 set ref 78* 116 117 trans_space 000146 automatic structure level 1 unaligned dcl 47 set ref 102 translate builtin function dcl 75 ref 116 117 translation based structure level 1 dcl 2-24 translation_ptr 000270 automatic pointer dcl 2-40 set ref 95* 102* 104* 110* 119 120 121 121 127 127 127 127 137 139 148 154 163 type 3 based fixed bin(17,0) level 2 packed unaligned dcl 1-3 ref 98 word_idx 000103 automatic fixed bin(18,0) dcl 37 set ref 137* 139 145* 148* 148* 153* 153* 154 160* 163* 163* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AMU_INFO_VERSION internal static char(8) initial unaligned dcl 1-57 AMU_INFO_VERSION_1 internal static char(8) initial unaligned dcl 1-56 AMU_INFO_VERSION_2 internal static char(8) initial unaligned dcl 1-58 FDUMP_PROCESS_TYPE internal static fixed bin(17,0) initial dcl 1-47 FDUMP_TYPE internal static fixed bin(17,0) initial dcl 1-47 INDIRECT_TYPE internal static fixed bin(17,0) initial dcl 1-47 NETWORK_FDUMP_TYPE internal static fixed bin(17,0) initial dcl 1-47 NETWORK_ONLINE_TYPE internal static fixed bin(17,0) initial dcl 1-47 ONLINE_PROCESS_TYPE internal static fixed bin(17,0) initial dcl 1-47 ONLINE_TYPE internal static fixed bin(17,0) initial dcl 1-47 PDIR_SUFFIX internal static char(4) initial unaligned dcl 1-60 alloc_translation_table_max_entries automatic fixed bin(17,0) dcl 2-39 amu_area based area(1024) dcl 1-43 translation_table based structure level 1 dcl 2-13 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR 001016 constant label dcl 169 ref 97 109 111 amu_search_seg_ 000070 constant entry external dcl 20 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1660 1714 1513 1670 Length 2142 1513 34 211 144 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME amu_search_seg_ 256 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME amu_search_seg_ 000100 af_sw amu_search_seg_ 000101 segno amu_search_seg_ 000102 offset amu_search_seg_ 000103 word_idx amu_search_seg_ 000104 range amu_search_seg_ 000105 part1_end amu_search_seg_ 000106 part2_end amu_search_seg_ 000107 part1_start amu_search_seg_ 000110 part2_start amu_search_seg_ 000111 char_idx amu_search_seg_ 000112 code amu_search_seg_ 000113 string amu_search_seg_ 000116 one_found amu_search_seg_ 000117 header amu_search_seg_ 000143 header_printed amu_search_seg_ 000144 foo_len amu_search_seg_ 000145 ignore amu_search_seg_ 000146 trans_space amu_search_seg_ 000153 search_data amu_search_seg_ 000156 search_mask amu_search_seg_ 000161 mask amu_search_seg_ 000162 data amu_search_seg_ 000163 old_proc_idx amu_search_seg_ 000164 out_str amu_search_seg_ 000266 amu_info_ptr amu_search_seg_ 000270 translation_ptr amu_search_seg_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. amu_$fdump_mpt_change_idx amu_$fdump_translate_get_translation amu_$get_name_no_comp amu_$return_val_per_process amu_$translate_add amu_$translate_get ioa_ ioa_$rsnnl THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. amu_et_$no_translation amu_et_$seg_not_dumped LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000061 77 000075 78 000101 79 000105 80 000107 81 000111 82 000113 83 000114 84 000120 85 000122 86 000124 87 000125 89 000126 90 000130 91 000145 92 000150 95 000162 96 000177 97 000201 98 000204 99 000211 100 000214 102 000215 104 000217 105 000237 106 000243 107 000245 109 000246 110 000250 111 000264 116 000266 117 000272 118 000276 119 000277 120 000303 121 000305 122 000310 123 000315 124 000324 125 000327 126 000331 127 000335 131 000350 135 000437 137 000441 139 000455 140 000464 141 000467 142 000512 144 000514 145 000516 146 000550 147 000565 148 000566 149 000624 151 000626 153 000630 154 000641 155 000651 156 000654 157 000677 159 000701 160 000703 161 000735 162 000752 163 000753 164 001011 166 001013 168 001015 169 001016 173 001073 174 001107 175 001112 ----------------------------------------------------------- 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