COMPILATION LISTING OF SEGMENT amu_error_ Compiled by: Multics PL/I Compiler, Release 28d, of October 4, 1983 Compiled at: Honeywell Multics Op. - System M Compiled on: 11/19/84 1135.7 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 amu_error_: proc (); 7 8 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend,ifthendo,ifthen,^thendo */ 9 10 /* * This procedure is used to print "internal" error messages for amu_, and 11* * signal amu_error to indicate that an error has occurred, in case there is 12* * some procedure which wishes to handle it. 13* * 14* * Cribbed from ssu_error_, 08/25/80 W. Olin Sibert */ 15 16 dcl arg_count fixed bin; 17 dcl args_needed fixed bin; 18 dcl entry fixed bin; 19 dcl arg_list_ptr pointer; 20 21 dcl error_code fixed bin (35); 22 dcl caller_name char (72) varying; 23 dcl aligned_error_message char (100) aligned; 24 dcl error_message char (100) varying; 25 dcl user_message_buffer char (1500); 26 dcl user_message_lth fixed bin (21); 27 dcl user_message char (user_message_lth) based (addr (user_message_buffer)); 28 29 dcl 1 auto_error_info aligned like amu_error_info automatic; 30 dcl 1 cond_info aligned like condition_info; 31 32 dcl iox_$error_output pointer external static; 33 34 dcl arg_assign_$from_arg entry options (variable); 35 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 36 dcl cu_$arg_count entry (fixed bin); 37 dcl cu_$arg_list_ptr entry (pointer); 38 dcl cu_$cl entry (bit (1) aligned); 39 dcl cu_$caller_ptr entry (pointer); 40 dcl ioa_$general_rs entry (ptr, fixed bin, fixed bin, char (*), fixed bin (21), bit (1) aligned, bit (1) aligned); 41 dcl ioa_$ioa_switch entry options (variable); 42 dcl signal_ entry options (variable); 43 dcl sub_err_ entry options (variable); 44 dcl ( 45 ERROR init (1), 46 ERROR_WITH_INFO init (2), 47 FOR_CALLER init (3) 48 ) fixed bin internal static options (constant); 49 50 dcl (addr, length, null, rtrim, size, string, unspec) builtin; 51 52 53 /* amu_error_: procedure options (variable); primary entry -- no info structure */ 54 entry = ERROR; 55 args_needed = 2; 56 goto COMMON; 57 58 59 amu_error_$info: /* entry which also includes an info_ptr */ 60 entry options (variable); 61 62 entry = ERROR_WITH_INFO; 63 args_needed = 3; /* call amu_error_$info (aip, info_ptr, code, [optional args]) */ 64 goto COMMON; 65 66 67 amu_error_$for_caller: /* Entry for com_err_ like messages with a caller-name */ 68 entry options (variable); 69 70 entry = FOR_CALLER; 71 args_needed = 3; 72 goto COMMON; 73 74 75 COMMON: 76 call cu_$arg_count (arg_count); 77 if arg_count < args_needed then do; 78 INVALID_ERROR_CALL: 79 call sub_err_ (0, "amu_error_", "s", (null ()), 0, 80 "Invalid argument list argument missing or type mismatch. ^d arguments needed.", args_needed); 81 end; 82 83 call cu_$arg_list_ptr (arg_list_ptr); 84 85 call arg_assign_$from_arg (arg_list_ptr, 1, amu_info_ptr); 86 /* first two arguments are always amu_info_ptr, code */ 87 call arg_assign_$from_arg (arg_list_ptr, 2, error_code); 88 89 if entry = FOR_CALLER then 90 call arg_assign_$from_arg (arg_list_ptr, 3, caller_name); 91 else caller_name = ""; 92 caller_name = rtrim (caller_name); /* because assign_$computational_ is too lazy to do it */ 93 94 if entry = ERROR_WITH_INFO then 95 call arg_assign_$from_arg (arg_list_ptr, 3, amu_error_info_ptr); 96 else amu_error_info_ptr = null (); 97 98 if error_code ^= 0 then do; /* get the error message */ 99 call convert_status_code_ (error_code, (""), aligned_error_message); 100 error_message = rtrim (aligned_error_message); 101 error_message = error_message || " "; 102 end; 103 else error_message = ""; 104 105 if arg_count > args_needed then /* pick up optional ioa_ arguments */ 106 call ioa_$general_rs (arg_list_ptr, (args_needed + 1), (args_needed + 2), user_message_buffer, 107 user_message_lth, ("1"b), ("0"b)); 108 109 else user_message_lth = 0; /* otherwise, no user message */ 110 111 if (length (user_message) = 0) & (length (error_message) = 0) then error_message = "Error occurred."; 112 113 if length (caller_name) = 0 then 114 caller_name = "amu_: "; 115 else caller_name = caller_name || ": "; 116 117 if amu_error_info_ptr = null () then do; /* use our automatic copy */ 118 amu_error_info_ptr = addr (auto_error_info); 119 unspec (amu_error_info) = ""b; 120 amu_error_info.mc_ptr = null (); 121 end; 122 123 amu_error_info.length = size (amu_error_info); /* fill in the standard header */ 124 amu_error_info.version = 1; 125 string (amu_error_info.action_flags) = ""b; 126 amu_error_info.action_flags.default_restart = "1"b; 127 /* restart this by default */ 128 amu_error_info.status_code = error_code; 129 amu_error_info.info_string = caller_name; 130 amu_error_info.info_string = amu_error_info.info_string || error_message; 131 amu_error_info.info_string = amu_error_info.info_string || user_message; 132 133 amu_error_info.aip = amu_info_ptr; /* now, fill in some variables */ 134 call cu_$caller_ptr (amu_error_info.caller_ptr); 135 136 if amu_info_ptr = null () then /* don't signal if nothing there, either */ goto PRINT_MESSAGE; 137 138 if ^amu_info.handler_exists then /* don't bother signalling, since there's nobody there */ goto PRINT_MESSAGE; 139 140 unspec (cond_info) = ""b; 141 cond_info.version = 1; /* fill in everything not copied from the error_info */ 142 cond_info.condition_name = AMU_ERROR_NAME; 143 cond_info.info_ptr = amu_error_info_ptr; 144 cond_info.wc_ptr = null (); 145 146 cond_info.mc_ptr = amu_error_info.mc_ptr; 147 cond_info.loc_ptr = amu_error_info.caller_ptr; 148 cond_info.user_loc_ptr = amu_error_info.caller_ptr; 149 150 RESIGNAL_ERROR: 151 call signal_ (AMU_ERROR_NAME, amu_error_info.mc_ptr, addr (cond_info), null ()); 152 153 if amu_error_info.must_restart then return; 154 155 if amu_error_info.cant_restart then goto RESIGNAL_ERROR; 156 157 PRINT_MESSAGE: 158 if ^amu_error_info.dont_print_message then /* default case, where handler did nothing */ 159 call ioa_$ioa_switch (iox_$error_output, "^a", amu_error_info.info_string); 160 161 if entry = FOR_CALLER then /* these messages are always nonfatal */ return; 162 163 if ^amu_error_info.amu_handled then do; /* if not set, wasn't fixed up by amu_ */ 164 call ioa_$ioa_switch (iox_$error_output, "amu_error_: Returning to command level."); 165 call cu_$cl ("0"b); 166 end; 167 168 return; /* all done */ 169 170 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 */ 171 172 2 1 /* BEGIN INCLUDE FILE amu_error_info.incl.pl1 */ 2 2 2 3 dcl 1 amu_error_info aligned based (amu_error_info_ptr), 2 4 2 length fixed bin, /* Standard info structure header. Size in words */ 2 5 2 version fixed bin, 2 6 2 action_flags aligned, 2 7 3 cant_restart bit (1) unaligned, 2 8 3 default_restart bit (1) unaligned, 2 9 3 reserved bit (34) unaligned, 2 10 2 info_string char (256) varying, 2 11 2 status_code fixed bin (35), 2 12 2 13 2 aip pointer, /* amu_info_ptr for instance that generated this error */ 2 14 2 mc_ptr pointer, /* pointer to simulated machine conditions, if any */ 2 15 2 caller_ptr pointer, /* pointer to location in program calling amu_error_ */ 2 16 2 flags aligned, 2 17 3 must_restart bit (1) unaligned, /* this must be restarted when handler is returned to */ 2 18 3 dont_print_message bit (1) unaligned, /* suppress message printing on return */ 2 19 3 amu_handled bit (1) unaligned, /* means error was handled and fixed up; restart automatically */ 2 20 3 pad bit (33) unaligned; 2 21 2 22 dcl amu_error_info_ptr pointer; 2 23 2 24 dcl AMU_ERROR_NAME char (32) internal static options (constant) init ("amu_error"); 2 25 2 26 /* END INCLUDE FILE amu_error_info.incl.pl1 */ 173 174 175 /* %include std_descriptor_types;*/ 176 3 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 3 2 3 3 /* Structure for find_condition_info_. 3 4* 3 5* Written 1-Mar-79 by M. N. Davidoff. 3 6**/ 3 7 3 8 /* automatic */ 3 9 3 10 declare condition_info_ptr pointer; 3 11 3 12 /* based */ 3 13 3 14 declare 1 condition_info aligned based (condition_info_ptr), 3 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 3 16 2 version fixed binary, /* Must be 1 */ 3 17 2 condition_name char (32) varying, /* name of condition */ 3 18 2 info_ptr pointer, /* pointer to the condition data structure */ 3 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 3 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 3 21 2 flags unaligned, 3 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 3 23 3 pad1 bit (35), 3 24 2 pad2 bit (36), 3 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 3 26 2 pad3 (4) bit (36); 3 27 3 28 /* internal static */ 3 29 3 30 declare condition_info_version_1 3 31 fixed binary internal static options (constant) initial (1); 3 32 3 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 177 178 179 end amu_error_; /* external procedure */ SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/84 1445.4 amu_error_.pl1 >special_ldd>online>6897-11/15/84>amu_error_.pl1 171 1 11/15/84 1524.3 amu_info.incl.pl1 >special_ldd>online>6897-11/15/84>amu_info.incl.pl1 173 2 09/22/83 1102.5 amu_error_info.incl.pl1 >ldd>include>amu_error_info.incl.pl1 177 3 06/28/79 1204.8 condition_info.incl.pl1 >ldd>include>condition_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. AMU_ERROR_NAME 000000 constant char(32) initial unaligned dcl 2-24 set ref 142 150* ERROR constant fixed bin(17,0) initial dcl 44 ref 54 ERROR_WITH_INFO constant fixed bin(17,0) initial dcl 44 ref 62 94 FOR_CALLER constant fixed bin(17,0) initial dcl 44 ref 70 89 161 action_flags 2 based structure level 2 dcl 2-3 set ref 125* addr builtin function dcl 50 ref 111 118 131 150 150 aip 106 based pointer level 2 dcl 2-3 set ref 133* aligned_error_message 000132 automatic char(100) dcl 23 set ref 99* 100 amu_error_info based structure level 1 dcl 2-3 set ref 119* 123 amu_error_info_ptr 001160 automatic pointer dcl 2-22 set ref 94* 96* 117 118* 119 120 123 123 124 125 126 128 129 130 130 131 131 133 134 143 146 147 148 150 153 155 157 157 163 amu_handled 114(02) based bit(1) level 3 packed unaligned dcl 2-3 set ref 163 amu_info based structure level 1 dcl 1-3 amu_info_ptr 001156 automatic pointer dcl 1-45 set ref 85* 133 136 138 arg_assign_$from_arg 000012 constant entry external dcl 34 ref 85 87 89 94 arg_count 000100 automatic fixed bin(17,0) dcl 16 set ref 75* 77 105 arg_list_ptr 000104 automatic pointer dcl 19 set ref 83* 85* 87* 89* 94* 105* args_needed 000101 automatic fixed bin(17,0) dcl 17 set ref 55* 63* 71* 77 78* 105 105 105 auto_error_info 001006 automatic structure level 1 dcl 29 set ref 118 caller_name 000107 automatic varying char(72) dcl 22 set ref 89* 91* 92* 92 113 113* 115* 115 129 caller_ptr 112 based pointer level 2 dcl 2-3 set ref 134* 147 148 cant_restart 2 based bit(1) level 3 packed unaligned dcl 2-3 set ref 155 cond_info 001124 automatic structure level 1 dcl 30 set ref 140* 150 150 condition_info based structure level 1 dcl 3-14 condition_name 3 001124 automatic varying char(32) level 2 dcl 30 set ref 142* convert_status_code_ 000014 constant entry external dcl 35 ref 99 cu_$arg_count 000016 constant entry external dcl 36 ref 75 cu_$arg_list_ptr 000020 constant entry external dcl 37 ref 83 cu_$caller_ptr 000024 constant entry external dcl 39 ref 134 cu_$cl 000022 constant entry external dcl 38 ref 165 default_restart 2(01) based bit(1) level 3 packed unaligned dcl 2-3 set ref 126* dont_print_message 114(01) based bit(1) level 3 packed unaligned dcl 2-3 set ref 157 entry 000102 automatic fixed bin(17,0) dcl 18 set ref 54* 62* 70* 89 94 161 error_code 000106 automatic fixed bin(35,0) dcl 21 set ref 87* 98 99* 128 error_flags 26 based structure level 3 dcl 1-3 error_info 26 based structure level 2 dcl 1-3 error_message 000163 automatic varying char(100) dcl 24 set ref 100* 101* 101 103* 111 111* 130 flags 114 based structure level 2 dcl 2-3 handler_exists 26 based bit(1) level 4 packed unaligned dcl 1-3 ref 138 info_ptr 14 001124 automatic pointer level 2 dcl 30 set ref 143* info_string 3 based varying char(256) level 2 dcl 2-3 set ref 129* 130* 130 131* 131 157* ioa_$general_rs 000026 constant entry external dcl 40 ref 105 ioa_$ioa_switch 000030 constant entry external dcl 41 ref 157 164 iox_$error_output 000010 external static pointer dcl 32 set ref 157* 164* length based fixed bin(17,0) level 2 in structure "amu_error_info" dcl 2-3 in procedure "amu_error_" set ref 123* length builtin function dcl 50 in procedure "amu_error_" ref 111 111 113 loc_ptr 20 001124 automatic pointer level 2 dcl 30 set ref 147* mc_ptr 110 based pointer level 2 in structure "amu_error_info" dcl 2-3 in procedure "amu_error_" set ref 120* 146 150* mc_ptr 001124 automatic pointer level 2 in structure "cond_info" dcl 30 in procedure "amu_error_" set ref 146* must_restart 114 based bit(1) level 3 packed unaligned dcl 2-3 set ref 153 null builtin function dcl 50 ref 78 96 117 120 136 144 150 150 rtrim builtin function dcl 50 ref 92 100 signal_ 000032 constant entry external dcl 42 ref 150 size builtin function dcl 50 ref 123 status_code 104 based fixed bin(35,0) level 2 dcl 2-3 set ref 128* string builtin function dcl 50 set ref 125* sub_err_ 000034 constant entry external dcl 43 ref 78 unspec builtin function dcl 50 set ref 119* 140* user_loc_ptr 24 001124 automatic pointer level 2 dcl 30 set ref 148* user_message based char unaligned dcl 27 ref 111 131 user_message_buffer 000215 automatic char(1500) unaligned dcl 25 set ref 105* 111 131 user_message_lth 001004 automatic fixed bin(21,0) dcl 26 set ref 105* 109* 111 131 version 2 001124 automatic fixed bin(17,0) level 2 in structure "cond_info" dcl 30 in procedure "amu_error_" set ref 141* version 1 based fixed bin(17,0) level 2 in structure "amu_error_info" dcl 2-3 in procedure "amu_error_" set ref 124* wc_ptr 16 001124 automatic pointer level 2 dcl 30 set ref 144* 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 SAVED_PROC_TYPE internal static fixed bin(17,0) initial dcl 1-47 amu_area based area(1024) dcl 1-43 condition_info_ptr automatic pointer dcl 3-10 condition_info_version_1 internal static fixed bin(17,0) initial dcl 3-30 NAMES DECLARED BY EXPLICIT CONTEXT. COMMON 000144 constant label dcl 75 ref 56 64 72 INVALID_ERROR_CALL 000156 constant label dcl 78 PRINT_MESSAGE 000747 constant label dcl 157 ref 136 138 RESIGNAL_ERROR 000710 constant label dcl 150 ref 155 amu_error_ 000104 constant entry external dcl 6 amu_error_$for_caller 000132 constant entry external dcl 67 amu_error_$info 000117 constant entry external dcl 59 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1234 1272 1041 1244 Length 1540 1041 36 232 173 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME amu_error_ 688 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME amu_error_ 000100 arg_count amu_error_ 000101 args_needed amu_error_ 000102 entry amu_error_ 000104 arg_list_ptr amu_error_ 000106 error_code amu_error_ 000107 caller_name amu_error_ 000132 aligned_error_message amu_error_ 000163 error_message amu_error_ 000215 user_message_buffer amu_error_ 001004 user_message_lth amu_error_ 001006 auto_error_info amu_error_ 001124 cond_info amu_error_ 001156 amu_info_ptr amu_error_ 001160 amu_error_info_ptr amu_error_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. arg_assign_$from_arg convert_status_code_ cu_$arg_count cu_$arg_list_ptr cu_$caller_ptr cu_$cl ioa_$general_rs ioa_$ioa_switch signal_ sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. iox_$error_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 6 000103 54 000111 55 000113 56 000115 59 000116 62 000124 63 000126 64 000130 67 000131 70 000137 71 000141 72 000143 75 000144 77 000153 78 000156 83 000233 85 000242 87 000264 89 000307 91 000336 92 000337 94 000355 96 000403 98 000405 99 000407 100 000424 101 000444 102 000453 103 000454 105 000455 109 000532 111 000533 113 000544 115 000553 117 000565 118 000571 119 000573 120 000576 123 000600 124 000602 125 000605 126 000606 128 000610 129 000612 130 000617 131 000631 133 000643 134 000645 136 000654 138 000660 140 000664 141 000667 142 000671 143 000676 144 000700 146 000702 147 000704 148 000706 150 000710 153 000740 155 000744 157 000747 161 000776 163 001001 164 001005 165 001025 168 001036 ----------------------------------------------------------- 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