COMPILATION LISTING OF SEGMENT list_pnotice_names Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 02/13/86 1220.8 mst Thu Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 7 8 9 /****^ HISTORY COMMENTS: 10* 1) change(86-02-10,LJAdams), approve(86-02-10,MCR7150), 11* audit(86-02-10,Wallman), install(86-02-13,MR12.0-1017): 12* Recompiled to use modified include file pnotice_paths.incl.pl1 13* END HISTORY COMMENTS */ 14 15 16 list_pnotice_names: 17 18 proc; 19 20 21 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 22 /* */ 23 /* Name: list_pnotice_names */ 24 /* */ 25 /* Function: */ 26 /* A simple command wherein a user of the protection software can obtain a list of */ 27 /* the available protection notice templates. */ 28 /* */ 29 /* STATUS: */ 30 /* */ 31 /* CREATED June 1981 by JM Stansbury */ 32 /* MODIFIED July 17,1981 by JM Stansbury */ 33 /* added clean up handler, changed name from print_pnotice_names to its */ 34 /* current name per MCR Board. */ 35 /* MODIFIED December 1981 by JM Stansbury */ 36 /* implemented the -check and -all control args. These are used as follows: */ 37 /* -check */ 38 /* will cause a list of every template in the search list to be output */ 39 /* and there will be heuristic checks on the contents of each template. */ 40 /* Error messages will be output. */ 41 /* -all */ 42 /* will list every template in the search list. Duplicates will be */ 43 /* flagged with an asterisk (*), and a short explanatory note will follow */ 44 /* */ 45 /* */ 46 /* */ 47 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 48 49 50 51 52 /* A U T O M A T I C */ 53 dcl Iarg fixed bin, 54 Idir fixed bin, /* index for which search dir we are in */ 55 Idx fixed bin, 56 Idx2 fixed bin, 57 Larg fixed bin (21), 58 Nargs fixed bin, 59 Nprocessed fixed bin, 60 Parg ptr, 61 code fixed bin (35), 62 explain_dups bit (1), /* used to control output of short note */ 63 v_ptr ptr, /* for sort */ 64 i_ptr ptr; /* for sort */ 65 dcl 1 flags, /* structure for passing control info to */ 66 /* the pnotice_paths_ routine */ 67 2 check_bit bit (1) unal, 68 2 all_bit bit (1) unal; 69 70 71 /* E X T E R N A L E N T R I E S */ 72 dcl com_err_ entry() options(variable), 73 cu_$arg_count entry (fixed bin, fixed bin(35)), 74 cu_$arg_ptr entry (fixed bin, ptr, fixed bin(21), fixed bin(35)), 75 ioa_ entry() options(variable), 76 pnotice_paths_ entry (char(*), bit(*), ptr, fixed bin(35)), 77 release_temp_segment_ entry (char(*), ptr, fixed bin(35)), 78 sort_items_indirect_$char entry (ptr, ptr, fixed bin(24)), 79 terminate_file_ entry (ptr, fixed bin(24), bit(*), fixed bin(35)); 80 81 82 /* B U I L T I N */ 83 dcl (addr, 84 addrel, 85 before, 86 bin, 87 currentsize, 88 dim, 89 null, 90 string) builtin; 91 92 93 /* E X T E R N A L S T A T I C */ 94 dcl error_table_$badopt fixed bin(35) ext static, 95 error_table_$noentry fixed bin(35) ext static, 96 error_table_$wrong_no_of_args 97 fixed bin(35) ext static; 98 99 100 /* I N T E R N A L S T A T I C */ 101 dcl ME char (19) int static options(constant) init ("list_pnotice_names"), 102 True bit(1) int static options (constant) init ("1"b); 103 104 105 /* C O N D I T I O N S */ 106 dcl cleanup condition; 107 108 /* B A S E D */ 109 dcl argument char(Larg) based (Parg); 110 111 dcl 1 V aligned based (v_ptr), 112 2 N fixed bin (24), 113 2 vector (0 refer (V.N)) ptr unaligned; 114 115 dcl 1 I aligned based (i_ptr), 116 2 N fixed bin (24), 117 2 index (0 refer (I.N)) fixed bin (24); 118 119 120 Ppaths = null; 121 explain_dups = "0"b; 122 flags = "0"b; 123 v_ptr = null; 124 i_ptr = null; 125 on cleanup call clean_up; 126 call cu_$arg_count (Nargs, code); 127 if Nargs > 2 then do; 128 code = error_table_$wrong_no_of_args; 129 Parg = addr(Parg); 130 Larg = 0; 131 goto USAGE; 132 end; 133 else if code ^= 0 then do; 134 Parg = addr(Parg); 135 Larg = 0; 136 goto USAGE; 137 end; 138 else do Iarg = 1 to Nargs; 139 call cu_$arg_ptr (Iarg, Parg, Larg, code); 140 if (argument = "-check" | argument = "-ck") then do; 141 flags.all_bit = True; 142 flags.check_bit = True; 143 end; 144 else if (argument = "-all" | argument = "-a") then 145 flags.all_bit = True; 146 else do; 147 code = error_table_$badopt; 148 go to USAGE; 149 end; 150 end; 151 152 call ioa_ (""); 153 call pnotice_paths_ (ME, string(flags), Ppaths, code); 154 if code ^= 0 then do; /* pnotice_paths_ will complain for us. */ 155 call clean_up; 156 return; 157 end; 158 if pnotice_paths.Ntemplates = 0 then do; /* something is really wrong. */ 159 call com_err_ (error_table_$noentry, ME, " 160 Fatal Error - No templates found using the pnotice search list."); 161 call clean_up; 162 return; 163 end; 164 Nprocessed = 0; /* no templates sorted yet. */ 165 i_ptr = addrel (Ppaths, currentsize(pnotice_paths)); 166 167 do Idir = 1 to pnotice_paths.Ndirs; 168 if pnotice_paths.dirs(Idir).Ifirst_template > pnotice_paths.dirs(Idir).Ilast_template then do; 169 call ioa_ ("No templates in ^a.^/", pnotice_paths.dirs(Idir).dir_path); 170 goto NEXT_DIR; 171 end; 172 I.N = pnotice_paths.dirs(Idir).Ilast_template - pnotice_paths.dirs(Idir).Ifirst_template + 1; 173 do Idx = 1 to I.N; 174 I.index(Idx) = Idx; 175 end; 176 v_ptr = addrel (i_ptr, currentsize(I)); 177 V.N = I.N; 178 Idx2 = 0; 179 do Idx = pnotice_paths.dirs(Idir).Ifirst_template to pnotice_paths.dirs(Idir).Ilast_template; 180 Idx2 = Idx2 + 1; 181 V.vector(Idx2) = addr(pnotice_paths.templates(Idx).primary_name); 182 end; 183 call sort_items_indirect_$char (v_ptr, i_ptr, 32); 184 call ioa_ ("Templates in ^a", pnotice_paths.dirs(Idir).dir_path); 185 do Idx = 1 to I.N; 186 if pnotice_paths.templates(I.index(Idx)+Nprocessed).duplicate 187 & flags.all_bit then 188 /* if ALL and we found dups, a short note is needed. */ 189 explain_dups = True; 190 call ioa_ ("^[*^]^3t^a^[ (default Trade Secret) ^; (default Copyright)^]^[^/^]", 191 pnotice_paths.templates(I.index(Idx)+Nprocessed).duplicate ^= "0"b, 192 before(pnotice_paths.templates(I.index(Idx)+ Nprocessed).primary_name, ".pnotice"), 193 bin(pnotice_paths.templates(I.index(Idx)+ Nprocessed).defaultC 194 || pnotice_paths.templates(I.index(Idx)+ Nprocessed).defaultTS), 195 Idx = I.N); 196 end; 197 Nprocessed = Nprocessed + I.N; /* keep count of how many we have done */ 198 NEXT_DIR: end; 199 if explain_dups then 200 call ioa_ (" 201 The asterisk (*) denotes duplicate templates which will 202 be ignored given present search path order."); 203 call clean_up; 204 return; 205 206 USAGE: call com_err_ (code, ME, "^a 207 Usage: list_pnotice_names {-control_arg(s)} 208 Control Arg: -check, -ck 209 -all, -a", argument); 210 return; 211 212 213 clean_up: proc; 214 if Ppaths ^= null then do; 215 do Idx = 1 to dim(pnotice_paths.templates, 1); 216 call terminate_file_ (pnotice_paths.templates(Idx).Ptemplate, 217 pnotice_paths.templates(Idx).Ltemplate * 9, TERM_FILE_TERM, code); 218 end; 219 call release_temp_segment_ (ME, Ppaths, code); 220 end; 221 end clean_up; 222 223 1 1 /* START OF: pnotice_paths.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-01-28,LJAdams), approve(86-01-28,MCR7150), 1 7* audit(86-02-07,Wallman), install(86-02-13,MR12.0-1017): 1 8* Changed attributes of constants from automatic to internal static options 1 9* constant. Removed all initialization of automatic variables. 1 10* END HISTORY COMMENTS */ 1 11 1 12 1 13 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 14 /* */ 1 15 /* This include file defines the structure that the software protection tools fill in */ 1 16 /* with information on the proper search paths for notice templates, primary names of */ 1 17 /* these templates, their lengths, pointers to each, and whether or not they are the */ 1 18 /* default notice. There are only two defined default notices, one for copyright (named */ 1 19 /* "default.pnotice" as an add_name), and Trade Secret (named */ 1 20 /* "default_trade_secret.pnotice" as an add_name). */ 1 21 /* */ 1 22 /* Created: April 1981 by JM Stansbury */ 1 23 /* Modified: November 1981 by JM Stansbury */ 1 24 /* added Isearch_dir index to allow for >1 search path in search segment. */ 1 25 /* added Ifirst_template and Ilast_template to aid in sort for multiple directories */ 1 26 /* in the search list. */ 1 27 /* Modified: December 10, 1981 by JM Stansbury */ 1 28 /* added duplicate bit to provide list_pnotice_names with capability of flagging */ 1 29 /* and explaining same in its output. */ 1 30 /* Modified: December 7, 1982 by JM Stansbury */ 1 31 /* added type field to indicate whether a notice is copyright, trade secret or */ 1 32 /* public domain. */ 1 33 /* */ 1 34 /* */ 1 35 /* */ 1 36 /* */ 1 37 /* */ 1 38 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 39 1 40 1 41 dcl 1 pnotice_paths aligned based (Ppaths), 1 42 2 Ndirs fixed bin, /* no. of search dirs */ 1 43 2 Ntemplates fixed bin, /* no. of pnotice templates */ 1 44 2 dirs (0 refer (pnotice_paths.Ndirs)), 1 45 3 dir_path char (168) unal, 1 46 3 Ifirst_template fixed bin, /* index of first template in this dir */ 1 47 3 Ilast_template fixed bin, /* index of last template in this dir */ 1 48 2 templates (0 refer (pnotice_paths.Ntemplates)), 1 49 3 primary_name char (32), 1 50 3 Ptemplate ptr, /* ptr to each template */ 1 51 3 Ltemplate fixed bin, /* lgth of each template */ 1 52 3 type fixed bin, /* copyright, trade secret, and */ 1 53 /* public domain */ 1 54 3 Isearch_dir fixed bin, /* index of dir that this template is in */ 1 55 3 defaultC bit (1) unal, /* this bit is ON if the template is a default */ 1 56 /* copyright, i.e. "default.pnotice" */ 1 57 3 defaultTS bit (1) unal, /* this bit is ON if the template is a default */ 1 58 /* trade secret notice, */ 1 59 3 duplicate bit (1) unal, /* this bit is ON if an earlier template in the */ 1 60 /* search list had the same name, and thus */ 1 61 /* would be used instead of this one. */ 1 62 3 pad bit (33) unal; 1 63 1 64 1 65 dcl Ppaths ptr; 1 66 /* types */ 1 67 dcl UNDEFINED fixed bin int static options (constant) init (0); 1 68 dcl COPYRIGHT fixed bin int static options (constant) init (1); 1 69 dcl TRADE_SECRET fixed bin int static options (constant) init (2); 1 70 dcl PUBLIC_DOMAIN fixed bin int static options (constant) init (3); 1 71 1 72 /* END OF: pnotice_paths.incl.pl1 * * * * * * * * * * * * * * * * */ 224 225 2 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 2 2 /* format: style2,^inddcls,idind32 */ 2 3 2 4 declare 1 terminate_file_switches based, 2 5 2 truncate bit (1) unaligned, 2 6 2 set_bc bit (1) unaligned, 2 7 2 terminate bit (1) unaligned, 2 8 2 force_write bit (1) unaligned, 2 9 2 delete bit (1) unaligned; 2 10 2 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 2 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 2 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 2 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 2 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 2 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 2 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 2 18 2 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 226 227 228 end list_pnotice_names; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 02/13/86 1217.2 list_pnotice_names.pl1 >spec>install>1017>list_pnotice_names.pl1 224 1 02/13/86 1218.9 pnotice_paths.incl.pl1 >spec>install>1017>pnotice_paths.incl.pl1 226 2 04/06/83 1239.4 terminate_file.incl.pl1 >ldd>include>terminate_file.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. I based structure level 1 dcl 115 set ref 176 Iarg 000100 automatic fixed bin(17,0) dcl 53 set ref 138* 139* Idir 000101 automatic fixed bin(17,0) dcl 53 set ref 167* 168 168 169 172 172 179 179 184* Idx 000102 automatic fixed bin(17,0) dcl 53 set ref 173* 174 174* 179* 181* 185* 186 190 190 190 190 190 190 190 190* 215* 216 216* Idx2 000103 automatic fixed bin(17,0) dcl 53 set ref 178* 180* 180 181 Ifirst_template 54 based fixed bin(17,0) array level 3 dcl 1-41 ref 168 172 179 Ilast_template 55 based fixed bin(17,0) array level 3 dcl 1-41 ref 168 172 179 Larg 000104 automatic fixed bin(21,0) dcl 53 set ref 130* 135* 139* 140 140 144 144 206 206 Ltemplate based fixed bin(17,0) array level 3 dcl 1-41 ref 216 ME 000001 constant char(19) initial unaligned dcl 101 set ref 153* 159* 206* 219* N based fixed bin(24,0) level 2 in structure "I" dcl 115 in procedure "list_pnotice_names" set ref 172* 173 176 177 185 190 197 N based fixed bin(24,0) level 2 in structure "V" dcl 111 in procedure "list_pnotice_names" set ref 177* Nargs 000105 automatic fixed bin(17,0) dcl 53 set ref 126* 127 138 Ndirs based fixed bin(17,0) level 2 dcl 1-41 ref 165 167 181 186 190 190 190 190 190 190 190 215 216 216 Nprocessed 000106 automatic fixed bin(17,0) dcl 53 set ref 164* 186 190 190 190 190 190 190 190 197* 197 Ntemplates 1 based fixed bin(17,0) level 2 dcl 1-41 ref 158 165 215 Parg 000110 automatic pointer dcl 53 set ref 129* 129 134* 134 139* 140 140 144 144 206 Ppaths 000130 automatic pointer dcl 1-65 set ref 120* 153* 158 165 165 167 168 168 169 172 172 179 179 181 184 186 190 190 190 190 190 190 190 214 215 216 216 219* Ptemplate based pointer array level 3 dcl 1-41 set ref 216* TERM_FILE_TERM 000000 constant bit(3) initial unaligned dcl 2-14 set ref 216* True constant bit(1) initial unaligned dcl 101 ref 141 142 144 186 V based structure level 1 dcl 111 addr builtin function dcl 83 ref 129 134 181 addrel builtin function dcl 83 ref 165 176 all_bit 0(01) 000120 automatic bit(1) level 2 packed unaligned dcl 65 set ref 141* 144* 186 argument based char unaligned dcl 109 set ref 140 140 144 144 206* before builtin function dcl 83 ref 190 190 bin builtin function dcl 83 ref 190 190 check_bit 000120 automatic bit(1) level 2 packed unaligned dcl 65 set ref 142* cleanup 000122 stack reference condition dcl 106 ref 125 code 000112 automatic fixed bin(35,0) dcl 53 set ref 126* 128* 133 139* 147* 153* 154 206* 216* 219* com_err_ 000010 constant entry external dcl 72 ref 159 206 cu_$arg_count 000012 constant entry external dcl 72 ref 126 cu_$arg_ptr 000014 constant entry external dcl 72 ref 139 currentsize builtin function dcl 83 ref 165 176 defaultC based bit(1) array level 3 packed unaligned dcl 1-41 ref 190 190 defaultTS based bit(1) array level 3 packed unaligned dcl 1-41 ref 190 190 dim builtin function dcl 83 ref 215 dir_path 2 based char(168) array level 3 packed unaligned dcl 1-41 set ref 169* 184* dirs 2 based structure array level 2 dcl 1-41 duplicate based bit(1) array level 3 packed unaligned dcl 1-41 ref 186 190 error_table_$badopt 000030 external static fixed bin(35,0) dcl 94 ref 147 error_table_$noentry 000032 external static fixed bin(35,0) dcl 94 set ref 159* error_table_$wrong_no_of_args 000034 external static fixed bin(35,0) dcl 94 ref 128 explain_dups 000113 automatic bit(1) unaligned dcl 53 set ref 121* 186* 199 flags 000120 automatic structure level 1 packed unaligned dcl 65 set ref 122* 153 153 i_ptr 000116 automatic pointer dcl 53 set ref 124* 165* 172 173 174 176 176 177 183* 185 186 190 190 190 190 190 190 190 190 197 index 1 based fixed bin(24,0) array level 2 dcl 115 set ref 174* 186 190 190 190 190 190 190 190 ioa_ 000016 constant entry external dcl 72 ref 152 169 184 190 199 null builtin function dcl 83 ref 120 123 124 214 pnotice_paths based structure level 1 dcl 1-41 set ref 165 pnotice_paths_ 000020 constant entry external dcl 72 ref 153 primary_name based char(32) array level 3 dcl 1-41 set ref 181 190 190 release_temp_segment_ 000022 constant entry external dcl 72 ref 219 sort_items_indirect_$char 000024 constant entry external dcl 72 ref 183 string builtin function dcl 83 ref 153 153 templates based structure array level 2 dcl 1-41 set ref 215 terminate_file_ 000026 constant entry external dcl 72 ref 216 v_ptr 000114 automatic pointer dcl 53 set ref 123* 176* 177 181 183* vector 1 based pointer array level 2 packed unaligned dcl 111 set ref 181* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. COPYRIGHT internal static fixed bin(17,0) initial dcl 1-68 PUBLIC_DOMAIN internal static fixed bin(17,0) initial dcl 1-70 TERM_FILE_BC internal static bit(2) initial unaligned dcl 2-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 2-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 2-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 2-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 2-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 2-15 TRADE_SECRET internal static fixed bin(17,0) initial dcl 1-69 UNDEFINED internal static fixed bin(17,0) initial dcl 1-67 terminate_file_switches based structure level 1 packed unaligned dcl 2-4 NAMES DECLARED BY EXPLICIT CONTEXT. NEXT_DIR 001055 constant label dcl 198 ref 170 USAGE 001102 constant label dcl 206 ref 131 136 148 clean_up 001137 constant entry internal dcl 213 ref 125 155 161 203 list_pnotice_names 000177 constant entry external dcl 16 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1446 1504 1264 1456 Length 1732 1264 36 212 161 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME list_pnotice_names 201 external procedure is an external procedure. on unit on line 125 64 on unit clean_up 88 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME list_pnotice_names 000100 Iarg list_pnotice_names 000101 Idir list_pnotice_names 000102 Idx list_pnotice_names 000103 Idx2 list_pnotice_names 000104 Larg list_pnotice_names 000105 Nargs list_pnotice_names 000106 Nprocessed list_pnotice_names 000110 Parg list_pnotice_names 000112 code list_pnotice_names 000113 explain_dups list_pnotice_names 000114 v_ptr list_pnotice_names 000116 i_ptr list_pnotice_names 000120 flags list_pnotice_names 000130 Ppaths list_pnotice_names THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return enable shorten_stack ext_entry int_entry set_cs_eis index_before_cs THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr ioa_ pnotice_paths_ release_temp_segment_ sort_items_indirect_$char terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$noentry error_table_$wrong_no_of_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 16 000176 120 000204 121 000206 122 000207 123 000213 124 000215 125 000216 126 000240 127 000251 128 000254 129 000257 130 000261 131 000262 133 000263 134 000265 135 000267 136 000270 138 000271 139 000301 140 000316 141 000330 142 000332 143 000334 144 000335 147 000350 148 000353 150 000354 152 000356 153 000367 154 000417 155 000421 156 000425 158 000426 159 000431 161 000455 162 000461 164 000462 165 000463 167 000476 168 000505 169 000514 170 000541 172 000542 173 000546 174 000555 175 000556 176 000560 177 000565 178 000567 179 000570 180 000603 181 000604 182 000620 183 000622 184 000637 185 000665 186 000675 190 000727 196 001050 197 001053 198 001055 199 001057 203 001075 204 001101 206 001102 210 001135 213 001136 214 001144 215 001151 216 001162 218 001234 219 001237 221 001260 ----------------------------------------------------------- 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