COMPILATION LISTING OF SEGMENT hp_delete_vtoce Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/15/82 1734.4 mst Mon 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 hp_delete_vtoce: proc (); 12 13 /* * This procedure is simply an interface used to delete a specified 14* * VTOCE, either causing a forward connection failure or curing a 15* * reverse connection failure. It checks before causing a forward 16* * failure, unless asked not to. 17* * 18* * Written sometime in 1979, W. Olin Sibert 19* * Cleaned up and installed, 06/21/81, WOS 20* */ 21 22 dcl arg char (al) based (ap); 23 dcl al fixed bin (21); 24 dcl ap pointer; 25 dcl code fixed bin (35); 26 dcl (argno, nargs) fixed bin; 27 dcl vtoce_argno fixed bin; 28 29 dcl pvname char (32); 30 dcl pvid bit (36) aligned; 31 dcl pvtx fixed bin; 32 dcl vtocx fixed bin (18); 33 dcl force_sw bit (1) aligned; 34 dcl check_sw bit (1) aligned; 35 dcl query_sw bit (1) aligned; 36 dcl brief_sw bit (1) aligned; 37 dcl clear_sw bit (1) aligned; 38 39 dcl com_err_ entry options (variable); 40 dcl command_query_$yes_no entry options (variable); 41 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 42 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 43 dcl cv_oct_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 44 dcl hphcs_$clear_vtoce entry (bit (36) aligned, fixed bin (18), fixed bin (35)); 45 dcl hphcs_$delete_vtoce entry (bit (36) aligned, bit (36) aligned, fixed bin (18), fixed bin (35)); 46 dcl ioa_ entry options (variable); 47 dcl phcs_$get_vtoce entry (fixed bin, fixed bin (18), ptr, fixed bin (35)); 48 dcl pvname_to_pvtx_ entry (char (*), fixed bin, bit (36) aligned, fixed bin (35)); 49 dcl vpn_cv_uid_path_$ent entry (ptr, char (*), bit (36) aligned, fixed bin (35)); 50 51 dcl error_table_$bad_conversion fixed bin (35) external static; 52 dcl error_table_$badopt fixed bin (35) external static; 53 dcl error_table_$inconsistent fixed bin (35) external static; 54 dcl error_table_$moderr fixed bin (35) external static; 55 dcl error_table_$no_dir fixed bin (35) external static; 56 dcl error_table_$noarg fixed bin (35) external static; 57 dcl error_table_$noentry fixed bin (35) external static; 58 59 dcl WHOAMI char (32) internal static options (constant) init ("hp_delete_vtoce"); 60 61 dcl linkage_error condition; 62 63 dcl (addr, char) builtin; 64 65 /* */ 66 67 vtocx = -1; /* some initializations */ 68 pvtx = -1; 69 vtoce_argno = -1; 70 force_sw = "0"b; /* If on, forces lack of questions */ 71 brief_sw = "0"b; /* If on, suppresses informative message */ 72 query_sw = "0"b; /* If on, forces a query (opposite of -force, sort of) */ 73 check_sw = "1"b; /* Causes checking for connectedness */ 74 clear_sw = "0"b; /* Just delete by default */ 75 76 call cu_$arg_count (nargs, code); 77 if code ^= 0 then do; 78 call com_err_ (code, WHOAMI); 79 MAIN_RETURN: return; 80 end; 81 82 do argno = 1 to nargs; 83 call cu_$arg_ptr (argno, ap, al, (0)); 84 if (arg = "-force") | (arg = "-fc") then force_sw = "1"b; 85 else if (arg = "-brief") | (arg = "-bf") then brief_sw = "1"b; 86 else if (arg = "-no_check") | (arg = "-nck") then check_sw = "0"b; 87 else if (arg = "-check") | (arg = "-ck") then check_sw = "1"b; 88 else if (arg = "-query") | (arg = "-qy") then query_sw = "1"b; 89 else if (arg = "-clear") then clear_sw = "1"b; 90 else if (arg = "-delete") then clear_sw = "0"b; 91 else if char (arg, 1) = "-" then do; 92 code = error_table_$badopt; 93 BAD_ARGUMENT: call com_err_ (code, WHOAMI, "^a", arg); 94 goto MAIN_RETURN; 95 end; 96 97 else if pvtx < 0 then do; /* first non control arg is PV name */ 98 pvname = arg; /* otherwise, remember its name */ 99 call pvname_to_pvtx_ (pvname, pvtx, pvid, code); /* Get pvtx and pvid */ 100 if code ^= 0 then goto BAD_ARGUMENT; 101 end; 102 103 else do; /* second through last are VTOCE indices */ 104 vtocx = cv_oct_check_ (arg, code); 105 if code ^= 0 then do; 106 code = error_table_$bad_conversion; 107 BAD_VTOCE_INDEX: call com_err_ (code, WHOAMI, 108 "VTOCE index must be a positive octal number, not ""^a"".", arg); 109 goto MAIN_RETURN; 110 end; 111 112 if vtocx < 0 then goto BAD_VTOCE_INDEX; 113 if vtoce_argno < 0 then vtoce_argno = argno; /* Remember where to start */ 114 end; 115 end; /* of argument processing */ 116 117 /* */ 118 119 if force_sw & query_sw then do; 120 call com_err_ (error_table_$inconsistent, WHOAMI, "-force and -query"); 121 goto MAIN_RETURN; 122 end; 123 124 if vtoce_argno < 0 then do; /* not enough args */ 125 126 call com_err_ (error_table_$noarg, WHOAMI, 127 "^/Usage:^-^a pvname vtocx(octal) {-query} {-force} {-brief} {-no_check}", WHOAMI); 128 goto MAIN_RETURN; 129 end; 130 131 on linkage_error begin; /* not enough access, sorry. */ 132 call com_err_ (error_table_$moderr, WHOAMI, 133 "This operation requires access to phcs_ and hphcs_"); 134 goto MAIN_RETURN; 135 end; 136 137 do argno = vtoce_argno to nargs; /* Loop through VTOCE indices */ 138 call cu_$arg_ptr (argno, ap, al, (0)); 139 if char (arg, 1) ^= "-" then do; /* Not a leftover control argument */ 140 vtocx = cv_oct_check_ (arg, (0)); /* Conversion is guaranteed to work */ 141 142 call expunge (); /* Do it */ 143 end; 144 end; /* of loop through vtoces */ 145 146 return; 147 148 /* */ 149 150 expunge: proc (); 151 152 /* This procedure does the actual deletion. It inherits the flag switches, as well as 153* pvname, pvid, pvtx and vtocx. */ 154 155 dcl pathname char (168); 156 dcl answer bit (1) aligned; 157 dcl vtoce_uid bit (36) aligned; 158 dcl connected bit (1) aligned; 159 dcl asked bit (1) aligned; 160 161 dcl 1 local_vtoce aligned like vtoce; 162 163 164 vtocep = addr (local_vtoce); 165 166 call phcs_$get_vtoce (pvtx, vtocx, vtocep, code); /* take a look at it first */ 167 if code ^= 0 then do; 168 call com_err_ (code, WHOAMI, "Reading VTOCE ^o from ^a.", vtocx, pvname); 169 return; 170 end; 171 172 vtoce_uid = vtoce.uid; /* find out who we are */ 173 174 if vtoce_uid = ""b then do; /* sorry, wrong number */ 175 call com_err_ (0, WHOAMI, "VTOCE ^o on ^a is free.", vtocx, pvname); 176 return; /* nothing to do this time */ 177 end; 178 179 /* * Note that this ought to get replaced by a more useful call to hardcore which resolves 180* * the UID path deterministically and correctly; unfortunately, hc_backup_$decode_uidpath 181* * just can't hack it, since it's only in the business of finding directories. */ 182 183 if check_sw then do; /* find out if we're connected */ 184 call vpn_cv_uid_path_$ent (addr (vtoce.uid_path), pathname, vtoce_uid, code); 185 if code = error_table_$noentry then connected = "0"b; 186 else if code = error_table_$no_dir then connected = "0"b; 187 else connected = "1"b; /* either is, or might be */ 188 end; 189 else connected = "0"b; /* Can't check */ 190 191 asked = "0"b; /* Used to suppress informative message */ 192 193 if check_sw & ^query_sw & ^connected then; /* If of no interest, just delete it */ 194 195 else if (check_sw | query_sw) & connected then do; /* Ask the question about a connected VTOCE */ 196 call command_query_$yes_no (answer, 0, WHOAMI, "", 197 "VTOCE ^o on ^a is ^a.^/Do you wish to ^[clear^;delete^] it anyway?", 198 vtocx, pvname, pathname, clear_sw); 199 if answer = "0"b then return; /* Don't bother */ 200 asked = "1"b; 201 end; /* of case to check for connection */ 202 203 else if ^force_sw then do; /* if it is (or might be) connected, ask user */ 204 call command_query_$yes_no (answer, 0, WHOAMI, "", 205 "Do you really want to ^[clear^;delete^] VTOCE ^o (""^a"") on ^a ??", 206 clear_sw, vtocx, vtoce.primary_name, pvname); 207 if answer = "0"b then return; /* chickened out! */ 208 asked = "1"b; 209 end; 210 211 if ^clear_sw then 212 call hphcs_$delete_vtoce (vtoce_uid, pvid, vtocx, code); 213 else call hphcs_$clear_vtoce (pvid, vtocx, code); 214 215 if (code = 0) & (^brief_sw) & (^asked) then do; /* successful. Tell user? */ 216 call ioa_ ("^a: ^[Cleared^;Deleted^] ^[unconnected ^]VTOCE ^o (""^a"") on ^a.", 217 WHOAMI, clear_sw, (check_sw & ^connected), vtocx, vtoce.primary_name, pvname); 218 end; 219 220 else if code ^= 0 then call com_err_ (code, WHOAMI, /* otherwise, complain since some unknown lossage occurred */ 221 "Unable to ^[clear^;delete^] VTOCE ^o (""^a"") on ^a.", clear_sw, vtocx, vtoce.primary_name, pvname); 222 223 return; /* all done */ 224 end expunge; 225 226 /* BEGIN INCLUDE FILE ...vtoce.incl.pl1 ... last modified March 1982 */ 1 2 1 3 /* Template for a VTOC entry. Length = 192 words. (3 * 64). */ 1 4 1 5 dcl vtocep ptr; 1 6 1 7 dcl 1 vtoce based (vtocep) aligned, 1 8 1 9 1 10 (2 pad_free_vtoce_chain bit (36), /* Used to be pointer to next free VTOCE */ 1 11 1 12 2 uid bit (36), /* segment's uid - zero if vtoce is free */ 1 13 1 14 2 msl bit (9), /* maximum segment length in 1024 word units */ 1 15 2 csl bit (9), /* current segment length - in 1024 word units */ 1 16 2 records bit (9), /* number of records used by the seg in second storage */ 1 17 2 pad2 bit (9), 1 18 1 19 2 dtu bit (36), /* date and time segment was last used */ 1 20 1 21 2 dtm bit (36), /* date and time segment was last modified */ 1 22 1 23 2 nqsw bit (1), /* no quota switch - no checking for pages of this seg */ 1 24 2 deciduous bit (1), /* true if hc_sdw */ 1 25 2 nid bit (1), /* no incremental dump switch */ 1 26 2 dnzp bit (1), /* Dont null zero pages */ 1 27 2 gtpd bit (1), /* Global transparent paging device */ 1 28 2 per_process bit (1), /* Per process segment (deleted every bootload) */ 1 29 2 damaged bit (1), /* TRUE if contents damaged */ 1 30 2 pad3 bit (11), 1 31 2 dirsw bit (1), /* directory switch */ 1 32 2 master_dir bit (1), /* master directory - a root for the logical volume */ 1 33 2 pad4 bit (16), /* not used */ 1 34 1 35 2 fm_checksum bit (36), /* Checksum of used portion of file map */ 1 36 1 37 2 quota (0:1) fixed bin (18) unsigned, /* sec storage quota - (0) for non dir pages */ 1 38 1 39 2 used (0:1) fixed bin (18) unsigned, /* sec storage used - (0) for non dir pages */ 1 40 1 41 2 received (0:1) fixed bin (18) unsigned, /* total amount of storage this dir has received */ 1 42 1 43 2 trp (0:1) fixed bin (71), /* time record product - (0) for non dir pages */ 1 44 1 45 2 trp_time (0:1) bit (36), /* time time_record_product was last calculated */ 1 46 1 47 1 48 1 49 1 50 1 51 2 fm (0:255) bit (18), /* file map - 256 entries - 18 bits per entry */ 1 52 1 53 2 pad6 (10) bit (36), /* not used */ 1 54 1 55 2 ncd bit (1), /* no complete dump switch */ 1 56 2 pad7 bit (17), 1 57 2 pad8 bit (18), 1 58 1 59 2 dtd bit (36), /* date-time-dumped */ 1 60 1 61 2 volid (3) bit (36), /* volume ids of last incremental, consolidated, and complete dumps */ 1 62 1 63 2 master_dir_uid bit (36), /* superior master directory uid */ 1 64 1 65 1 66 1 67 1 68 2 uid_path (0:15) bit (36), /* uid pathname of all parents starting after the root */ 1 69 1 70 2 primary_name char (32), /* primary name of the segment */ 1 71 1 72 2 time_created bit (36), /* time the segment was created */ 1 73 1 74 2 par_pvid bit (36), /* physical volume id of the parent */ 1 75 1 76 2 par_vtocx fixed bin (17), /* vtoc entry index of the parent */ 1 77 2 branch_rp bit (18)) unaligned, /* rel pointer of the branch of this segment */ 1 78 1 79 2 cn_salv_time bit (36), /* time branch - vtoce connection checked */ 1 80 1 81 2 access_class bit (72), /* access class in branch */ 1 82 2 perm_flags aligned, 1 83 3 per_bootload bit (1) unal, /* ON => deleted each bootload */ 1 84 3 pad9 bit (35) unal, 1 85 2 owner bit (36); /* pvid of this volume */ 1 86 1 87 dcl vtoce_parts (3) bit (36 * 64) aligned based (vtocep); 1 88 1 89 dcl 1 seg_vtoce based (vtocep) aligned, /* Overlay for vtoce of segments, which don't have quota */ 1 90 2 pad1 bit (7*36), 1 91 2 usage fixed bin (35), /* page fault count: overlays quota */ 1 92 2 pad2 bit (184*36); 1 93 1 94 /* END INCLUDE FILE vtoce.incl.pl1 */ 226 227 228 end hp_delete_vtoce; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/15/82 1520.0 hp_delete_vtoce.pl1 >dumps>old>recomp>hp_delete_vtoce.pl1 226 1 06/21/82 1202.4 vtoce.incl.pl1 >ldd>include>vtoce.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. WHOAMI 000000 constant char(32) initial unaligned dcl 59 set ref 78* 93* 107* 120* 126* 126* 132* 168* 175* 196* 204* 216* 220* addr builtin function dcl 63 ref 164 184 184 al 000100 automatic fixed bin(21,0) dcl 23 set ref 83* 84 84 85 85 86 86 87 87 88 88 89 90 91 93 93 98 104 104 107 107 138* 139 140 140 answer 000222 automatic bit(1) dcl 156 set ref 196* 199 204* 207 ap 000102 automatic pointer dcl 24 set ref 83* 84 84 85 85 86 86 87 87 88 88 89 90 91 93 98 104 107 138* 139 140 arg based char unaligned dcl 22 set ref 84 84 85 85 86 86 87 87 88 88 89 90 91 93* 98 104* 107* 139 140* argno 000105 automatic fixed bin(17,0) dcl 26 set ref 82* 83* 113* 137* 138* asked 000225 automatic bit(1) dcl 159 set ref 191* 200* 208* 215 brief_sw 000126 automatic bit(1) dcl 36 set ref 71* 85* 215 char builtin function dcl 63 ref 91 139 check_sw 000124 automatic bit(1) dcl 34 set ref 73* 86* 87* 183 193 195 216 clear_sw 000127 automatic bit(1) dcl 37 set ref 74* 89* 90* 196* 204* 211 216* 220* code 000104 automatic fixed bin(35,0) dcl 25 set ref 76* 77 78* 92* 93* 99* 100 104* 105 106* 107* 166* 167 168* 184* 185 186 211* 213* 215 220 220* com_err_ 000010 constant entry external dcl 39 ref 78 93 107 120 126 132 168 175 220 command_query_$yes_no 000012 constant entry external dcl 40 ref 196 204 connected 000224 automatic bit(1) dcl 158 set ref 185* 186* 187* 189* 193 195 216 cu_$arg_count 000014 constant entry external dcl 41 ref 76 cu_$arg_ptr 000016 constant entry external dcl 42 ref 83 138 cv_oct_check_ 000020 constant entry external dcl 43 ref 104 140 error_table_$bad_conversion 000036 external static fixed bin(35,0) dcl 51 ref 106 error_table_$badopt 000040 external static fixed bin(35,0) dcl 52 ref 92 error_table_$inconsistent 000042 external static fixed bin(35,0) dcl 53 set ref 120* error_table_$moderr 000044 external static fixed bin(35,0) dcl 54 set ref 132* error_table_$no_dir 000046 external static fixed bin(35,0) dcl 55 ref 186 error_table_$noarg 000050 external static fixed bin(35,0) dcl 56 set ref 126* error_table_$noentry 000052 external static fixed bin(35,0) dcl 57 ref 185 force_sw 000123 automatic bit(1) dcl 33 set ref 70* 84* 119 203 hphcs_$clear_vtoce 000022 constant entry external dcl 44 ref 213 hphcs_$delete_vtoce 000024 constant entry external dcl 45 ref 211 ioa_ 000026 constant entry external dcl 46 ref 216 linkage_error 000130 stack reference condition dcl 61 ref 131 local_vtoce 000226 automatic structure level 1 dcl 161 set ref 164 nargs 000106 automatic fixed bin(17,0) dcl 26 set ref 76* 82 137 pathname 000150 automatic char(168) unaligned dcl 155 set ref 184* 196* phcs_$get_vtoce 000030 constant entry external dcl 47 ref 166 primary_name 260 based char(32) level 2 packed unaligned dcl 1-7 set ref 204* 216* 220* pvid 000120 automatic bit(36) dcl 30 set ref 99* 211* 213* pvname 000110 automatic char(32) unaligned dcl 29 set ref 98* 99* 168* 175* 196* 204* 216* 220* pvname_to_pvtx_ 000032 constant entry external dcl 48 ref 99 pvtx 000121 automatic fixed bin(17,0) dcl 31 set ref 68* 97 99* 166* query_sw 000125 automatic bit(1) dcl 35 set ref 72* 88* 119 193 195 uid 1 based bit(36) level 2 packed unaligned dcl 1-7 ref 172 uid_path 240 based bit(36) array level 2 packed unaligned dcl 1-7 set ref 184 184 vpn_cv_uid_path_$ent 000034 constant entry external dcl 49 ref 184 vtoce based structure level 1 dcl 1-7 vtoce_argno 000107 automatic fixed bin(17,0) dcl 27 set ref 69* 113 113* 124 137 vtoce_uid 000223 automatic bit(36) dcl 157 set ref 172* 174 184* 211* vtocep 000136 automatic pointer dcl 1-5 set ref 164* 166* 172 184 184 204 216 220 vtocx 000122 automatic fixed bin(18,0) dcl 32 set ref 67* 104* 112 140* 166* 168* 175* 196* 204* 211* 213* 216* 220* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. seg_vtoce based structure level 1 dcl 1-89 vtoce_parts based bit(2304) array dcl 1-87 NAMES DECLARED BY EXPLICIT CONTEXT. BAD_ARGUMENT 000477 constant label dcl 93 ref 100 BAD_VTOCE_INDEX 000622 constant label dcl 107 ref 112 MAIN_RETURN 000332 constant label dcl 79 ref 94 109 121 128 134 expunge 001103 constant entry internal dcl 150 ref 142 hp_delete_vtoce 000263 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2064 2140 1637 2074 Length 2360 1637 54 203 225 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME hp_delete_vtoce 472 external procedure is an external procedure. on unit on line 131 92 on unit expunge internal procedure shares stack frame of external procedure hp_delete_vtoce. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME hp_delete_vtoce 000100 al hp_delete_vtoce 000102 ap hp_delete_vtoce 000104 code hp_delete_vtoce 000105 argno hp_delete_vtoce 000106 nargs hp_delete_vtoce 000107 vtoce_argno hp_delete_vtoce 000110 pvname hp_delete_vtoce 000120 pvid hp_delete_vtoce 000121 pvtx hp_delete_vtoce 000122 vtocx hp_delete_vtoce 000123 force_sw hp_delete_vtoce 000124 check_sw hp_delete_vtoce 000125 query_sw hp_delete_vtoce 000126 brief_sw hp_delete_vtoce 000127 clear_sw hp_delete_vtoce 000136 vtocep hp_delete_vtoce 000150 pathname expunge 000222 answer expunge 000223 vtoce_uid expunge 000224 connected expunge 000225 asked expunge 000226 local_vtoce expunge THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return tra_ext enable ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ command_query_$yes_no cu_$arg_count cu_$arg_ptr cv_oct_check_ hphcs_$clear_vtoce hphcs_$delete_vtoce ioa_ phcs_$get_vtoce pvname_to_pvtx_ vpn_cv_uid_path_$ent THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$inconsistent error_table_$moderr error_table_$no_dir error_table_$noarg error_table_$noentry LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000262 67 000270 68 000272 69 000274 70 000275 71 000276 72 000277 73 000300 74 000302 76 000303 77 000313 78 000315 79 000332 82 000333 83 000342 84 000360 85 000375 86 000410 87 000422 88 000435 89 000450 90 000457 91 000465 92 000474 93 000477 94 000531 97 000532 98 000534 99 000540 100 000565 101 000567 104 000570 105 000615 106 000617 107 000622 109 000655 112 000656 113 000660 115 000664 119 000666 120 000672 121 000716 124 000717 126 000721 128 000750 131 000751 132 000765 134 001010 137 001013 138 001022 139 001040 140 001051 142 001077 144 001100 146 001102 150 001103 164 001104 166 001106 167 001123 168 001125 169 001160 172 001161 174 001164 175 001165 176 001224 183 001225 184 001227 185 001256 186 001264 187 001270 188 001272 189 001273 191 001274 193 001275 195 001306 196 001314 199 001367 200 001373 201 001375 203 001376 204 001400 207 001453 208 001457 211 001461 213 001502 215 001515 216 001523 218 001570 220 001571 223 001636 ----------------------------------------------------------- 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