COMPILATION LISTING OF SEGMENT inter_multics_aim_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1647.5 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* *********************************************************** */ 6 /* Utilities to aid in the propogation of AIM between Multics systems */ 7 8 /* Created: July 1982 by G. Palter */ 9 10 /* format: style4,delnl,insnl,ifthenstmt,ifthen */ 11 12 13 inter_multics_aim_: 14 procedure (); 15 16 return; /* not an entrypoint */ 17 18 19 /* Common Parameters */ 20 21 dcl P_code fixed binary (35) parameter; 22 23 24 /* get_system_aim_attributes_ Parameters */ 25 26 dcl P_area_ptr pointer parameter; /* -> area where to allocate output structure */ 27 dcl P_version_wanted character (8) unaligned parameter; /* version of aim_attributes structure desired */ 28 dcl P_aim_attributes_ptr pointer parameter; /* set -> aim_attributes structure we create */ 29 30 31 /* compute_common_aim_ceiling_ Parameters */ 32 33 dcl P_aim_attributes_1_ptr pointer parameter; /* -> first system's AIM attributes */ 34 dcl P_common_ceiling_1 bit (72) aligned parameter; /* set to the common ceiling in first system's terms */ 35 dcl P_aim_attributes_2_ptr pointer parameter; /* -> second system's AIM attributes */ 36 dcl P_common_ceiling_2 bit (72) aligned parameter; /* set to the common ceiling in second system's terms */ 37 38 39 /* translate_aim_attributes_ Parameters */ 40 41 dcl P_source_aim_attributes_ptr pointer parameter; /* -> source system's AIM attributes */ 42 dcl P_source_aim_authorization bit (72) aligned parameter; /* the access class/authorization to translate */ 43 dcl P_target_aim_attributes_ptr pointer parameter; /* -> target system's AIM attributes */ 44 dcl P_target_aim_authorization bit (72) aligned parameter; /* set to the translated access class/authorization */ 45 46 47 /* Local copies of parameters */ 48 49 dcl 1 aim_attributes_1 aligned based (aim_attributes_1_ptr) like aim_attributes; 50 dcl 1 aim_attributes_2 aligned based (aim_attributes_2_ptr) like aim_attributes; 51 dcl (aim_attributes_1_ptr, aim_attributes_2_ptr) pointer; 52 53 dcl user_area area based (user_area_ptr); 54 dcl user_area_ptr pointer; 55 56 57 /* Remaining declarations */ 58 59 dcl 1 local_aim_template_1 aligned like aim_template; 60 dcl 1 local_aim_template_2 aligned like aim_template; 61 62 dcl common_max_level fixed binary; /* maximum sensitivity in common between systems */ 63 dcl category_translation (18, 2) fixed binary; /* describes how to translate the categories */ 64 65 dcl ip pointer; /* -> installation_parms */ 66 67 dcl idx fixed binary; 68 69 dcl SYSTEM_CONTROL_DIR character (168) static options (constant) initial (">system_control_dir"); 70 dcl INSTALLATION_PARMS character (32) static options (constant) initial ("installation_parms"); 71 72 /* format: off */ 73 dcl (error_table_$ai_no_common_max, error_table_$ai_outside_common_range, error_table_$noalloc, 74 error_table_$unimplemented_version) 75 fixed binary (35) external; 76 /* format: on */ 77 78 dcl get_system_free_area_ entry () returns (pointer); 79 dcl initiate_file_ entry (character (*), character (*), bit (*), pointer, fixed binary (24), fixed binary (35)); 80 dcl terminate_file_ entry (pointer, fixed binary (24), bit (*), fixed binary (35)); 81 82 dcl (area, cleanup) condition; 83 84 dcl (hbound, lbound, min, null, substr, unspec) builtin; 85 86 /* Returns the AIM attributes defined on this system */ 87 88 get_system_aim_attributes_: 89 entry (P_area_ptr, P_version_wanted, P_aim_attributes_ptr, P_code); 90 91 if P_version_wanted ^= AIM_ATTRIBUTES_VERSION_1 then do; 92 P_code = error_table_$unimplemented_version; 93 return; /* that's the only version we understand */ 94 end; 95 96 if P_area_ptr = null () then /* default to system free area */ 97 user_area_ptr = get_system_free_area_ (); 98 else user_area_ptr = P_area_ptr; 99 100 aim_attributes_ptr, ip = null (); /* for cleanup handler */ 101 102 on condition (cleanup) 103 begin; 104 if aim_attributes_ptr ^= null () then free aim_attributes in (user_area); 105 if ip ^= null () then call terminate_file_ (ip, 0, TERM_FILE_TERM, (0)); 106 aim_attributes_ptr, ip = null (); 107 end; 108 109 call initiate_file_ (SYSTEM_CONTROL_DIR, INSTALLATION_PARMS, R_ACCESS, ip, (0), P_code); 110 if P_code ^= 0 then return; /* couldn't get to it */ 111 112 on condition (area) 113 begin; /* in case caller's area isn't large enough */ 114 P_code = error_table_$noalloc; 115 go to RETURN_FROM_GET_SYSTEM_AIM_ATTRIBUTES_; 116 end; 117 118 allocate aim_attributes in (user_area) set (aim_attributes_ptr); 119 120 revert condition (area); 121 122 aim_attributes.version = AIM_ATTRIBUTES_VERSION_1; 123 124 aim_attributes.access_class_ceiling = installation_parms.access_authorization_ceiling; 125 126 do idx = lbound (aim_attributes.levels, 1) to hbound (aim_attributes.levels, 1); 127 aim_attributes.levels (idx).long_name = installation_parms.level_names (idx); 128 aim_attributes.levels (idx).short_name = installation_parms.short_level_names (idx); 129 end; 130 131 do idx = lbound (aim_attributes.categories, 1) to hbound (aim_attributes.categories, 1); 132 aim_attributes.categories (idx).long_name = installation_parms.category_names (idx); 133 aim_attributes.categories (idx).short_name = installation_parms.short_category_names (idx); 134 end; 135 136 P_aim_attributes_ptr = aim_attributes_ptr; /* completed successfully */ 137 P_code = 0; 138 139 RETURN_FROM_GET_SYSTEM_AIM_ATTRIBUTES_: 140 if ip ^= null () then call terminate_file_ (ip, 0, TERM_FILE_TERM, (0)); 141 142 return; 143 144 /* Compute maximum authorization or access class which is in common between two systems */ 145 146 compute_common_aim_ceiling_: 147 entry (P_aim_attributes_1_ptr, P_common_ceiling_1, P_aim_attributes_2_ptr, P_common_ceiling_2, P_code); 148 149 aim_attributes_1_ptr = P_aim_attributes_1_ptr; 150 aim_attributes_2_ptr = P_aim_attributes_2_ptr; 151 152 if (aim_attributes_1.version ^= AIM_ATTRIBUTES_VERSION_1) 153 | (aim_attributes_2.version ^= AIM_ATTRIBUTES_VERSION_1) then do; 154 P_code = error_table_$unimplemented_version; 155 return; /* one of the structures is not acceptable */ 156 end; 157 158 call compute_translation (); /* computes necessary information to compute common ceiling */ 159 160 if common_max_level = -1 then do; /* no levels in common: no common ceiling */ 161 P_code = error_table_$ai_no_common_max; 162 return; 163 end; 164 165 P_code = 0; /* we will succeed */ 166 167 168 unspec (local_aim_template_1) = ""b; /* build ceiling in terms of first system */ 169 170 local_aim_template_1.level = common_max_level; 171 172 do idx = lbound (category_translation, 1) to hbound (category_translation, 1); 173 if category_translation (idx, 1) ^= 0 then substr (local_aim_template_1.categories, idx, 1) = "1"b; 174 end; 175 176 P_common_ceiling_1 = unspec (local_aim_template_1); 177 178 179 unspec (local_aim_template_2) = ""b; /* build ceiling in terms of second system */ 180 181 local_aim_template_2.level = common_max_level; 182 183 do idx = lbound (category_translation, 1) to hbound (category_translation, 1); 184 if category_translation (idx, 2) ^= 0 then substr (local_aim_template_2.categories, idx, 1) = "1"b; 185 end; 186 187 P_common_ceiling_2 = unspec (local_aim_template_2); 188 189 return; 190 191 /* Translates the AIM attributes in an authorization or access class from one system's definition to another */ 192 193 translate_aim_attributes_: 194 entry (P_source_aim_attributes_ptr, P_source_aim_authorization, P_target_aim_attributes_ptr, 195 P_target_aim_authorization, P_code); 196 197 aim_attributes_1_ptr = P_source_aim_attributes_ptr; 198 aim_attributes_2_ptr = P_target_aim_attributes_ptr; 199 200 if (aim_attributes_1.version ^= AIM_ATTRIBUTES_VERSION_1) 201 | (aim_attributes_2.version ^= AIM_ATTRIBUTES_VERSION_1) then do; 202 P_code = error_table_$unimplemented_version; 203 return; /* one of the structures is not acceptable */ 204 end; 205 206 call compute_translation (); /* computes necessary information to compute common ceiling */ 207 208 if common_max_level = -1 then do; /* no levels in common: can't translate */ 209 P_code = error_table_$ai_no_common_max; 210 return; 211 end; 212 213 unspec (local_aim_template_1) = P_source_aim_authorization; 214 unspec (local_aim_template_2) = ""b; 215 216 if local_aim_template_1.level > common_max_level then do; 217 P_code = error_table_$ai_outside_common_range; 218 return; /* source level too high: can't translate */ 219 end; 220 221 local_aim_template_2.level = local_aim_template_1.level; 222 /* levels stay the same when translating */ 223 224 do idx = lbound (category_translation, 1) to hbound (category_translation, 1); 225 if substr (local_aim_template_1.categories, idx, 1) then 226 if category_translation (idx, 1) ^= 0 then 227 substr (local_aim_template_2.categories, category_translation (idx, 1), 1) = "1"b; 228 else do; /* can't translate this category */ 229 P_code = error_table_$ai_outside_common_range; 230 return; 231 end; 232 end; 233 234 P_target_aim_authorization = unspec (local_aim_template_2); 235 236 P_code = 0; /* can only be here on success */ 237 238 return; 239 240 /* Computes how to translate between two sets of AIM attributes */ 241 242 compute_translation: 243 procedure (); 244 245 dcl highest_possible_level fixed binary; 246 dcl (idx, jdx) fixed binary; 247 248 dcl continue bit (1) aligned; 249 250 251 /* Only sensitivity levels from level-0 up to but no including the first level which does not have the same long and short 252* names on both systems may be translated */ 253 254 unspec (local_aim_template_1) = aim_attributes_1.access_class_ceiling; 255 unspec (local_aim_template_2) = aim_attributes_2.access_class_ceiling; 256 257 common_max_level = -1; 258 259 highest_possible_level = min (local_aim_template_1.level, local_aim_template_2.level); 260 continue = "1"b; 261 262 do while (continue); 263 idx = common_max_level + 1; 264 if idx <= highest_possible_level then 265 if (aim_attributes_1.levels (idx).long_name = aim_attributes_2.levels (idx).long_name) 266 & (aim_attributes_1.levels (idx).short_name = aim_attributes_2.levels (idx).short_name) then 267 common_max_level = idx; /* this level is OK */ 268 else continue = "0"b; /* this level's names differ on the two systems */ 269 else continue = "0"b; /* this level is too high */ 270 end; 271 272 if common_max_level = -1 then return; /* no common levels: can't ever translate */ 273 274 275 /* Setup the access category translations: if a category N on system 1 has the same long and short name as category M on 276* system 2, then category_translation(N,1) will be set to M and cateogry_translation(M,2) will be set to N */ 277 278 category_translation (*, *) = 0; /* assume nothing translates */ 279 280 do idx = lbound (category_translation, 1) to hbound (category_translation, 1); 281 282 if substr (local_aim_template_1.categories, idx, 1) then do; 283 /* only try to translate categories within systems' ceiling */ 284 285 continue = "1"b; 286 287 do jdx = lbound (category_translation, 1) to hbound (category_translation, 1) while (continue); 288 if substr (local_aim_template_2.categories, jdx, 1) then 289 if (aim_attributes_1.categories (idx).long_name 290 = aim_attributes_2.categories (jdx).long_name) 291 & (aim_attributes_1.categories (idx).short_name 292 = aim_attributes_2.categories (jdx).short_name) then do; 293 category_translation (idx, 1) = jdx; 294 category_translation (jdx, 2) = idx; 295 continue = "0"b; /* found it */ 296 end; 297 end; 298 end; 299 end; 300 301 return; 302 end compute_translation; 303 1 1 /* BEGIN INCLUDE FILE ... aim_attributes.incl.pl1 */ 1 2 /* Created: July 1982 by G. Palter */ 1 3 1 4 /* Definition of the AIM attributes on a Multics system */ 1 5 1 6 dcl 1 aim_attributes aligned based (aim_attributes_ptr), 1 7 2 version character (8) unaligned, 1 8 2 access_class_ceiling bit (72), /* maximum access class allowed on the system */ 1 9 2 levels (0 : 7), /* the sensitivity levels */ 1 10 3 long_name character (32) unaligned, 1 11 3 short_name character (8) unaligned, 1 12 2 categories (18), /* the access categories */ 1 13 3 long_name character (32) unaligned, 1 14 3 short_name character (8) unaligned; 1 15 1 16 dcl aim_attributes_ptr pointer; 1 17 1 18 dcl AIM_ATTRIBUTES_VERSION_1 character (8) static options (constant) initial ("aima_001"); 1 19 1 20 /* END INCLUDE FILE ... aim_attributes.incl.pl1 */ 304 305 2 1 /* BEGIN INCLUDE FILE aim_template.incl.pl1 */ 2 2 2 3 /* Created 740723 by PG */ 2 4 /* Modified 06/28/78 by C. D. Tavares to add rcp privilege */ 2 5 /* Modified 83-05-10 by E. N. Kitltitz to add communications privilege */ 2 6 2 7 /* This structure defines the components of both an access 2 8* class and an access authorization as interpreted by the 2 9* Access Isolation Mechanism. */ 2 10 2 11 2 12 dcl 1 aim_template aligned based, /* authorization/access class template */ 2 13 2 categories bit (36), /* access categories */ 2 14 2 level fixed bin (17) unaligned, /* sensitivity level */ 2 15 2 privileges unaligned, /* special access privileges (in authorization only) */ 2 16 (3 ipc, /* interprocess communication privilege */ 2 17 3 dir, /* directory privilege */ 2 18 3 seg, /* segment privilege */ 2 19 3 soos, /* security out-of-service privilege */ 2 20 3 ring1, /* ring 1 access privilege */ 2 21 3 rcp, /* RCP resource access privilege */ 2 22 3 comm) bit (1), /* communications cross-AIM privilege */ 2 23 3 pad bit (11); 2 24 2 25 2 26 /* END INCLUDE FILE aim_template.incl.pl1 */ 306 307 3 1 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 3 2 3 3 /* Modified 740723 by PG to add short AIM access names */ 3 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 3 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 3 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 3 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 3 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 3 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 3 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 3 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 3 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 3 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 3 14* strict_trusted_path. */ 3 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 3 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 3 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 3 18 3 19 3 20 /****^ HISTORY COMMENTS: 3 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 3 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 3 23* added vchn_requires_accept parameter. 3 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 3 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 3 26* Correct formatting problems. 3 27* END HISTORY COMMENTS */ 3 28 3 29 3 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 3 31 3 32 3 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 3 34 2 part_1 like installation_parms_part_1 aligned, 3 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 3 36 3 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 3 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 3 39 3 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 3 41 2 installation_id char (32), /* Name printed at dialup and in who */ 3 42 2 company char (64), /* company name */ 3 43 2 department char (64), /* department */ 3 44 2 companyds char (120), /* company, double spaced */ 3 45 2 departmentds char (120), /* dpeartment double spaced */ 3 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 3 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 3 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 3 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 3 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 3 51 2 ndevices fixed bin, /* number of devices to charge */ 3 52 2 devtab (16), /* Maximum 16 */ 3 53 3 device_id char (8), /* Name of device */ 3 54 3 device_price (0: 7) float bin, /* Price by shift */ 3 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 3 56 2 warning_time fixed bin, /* seconds from warning to logout */ 3 57 2 login_time fixed bin, /* seconds in which to complete login */ 3 58 2 acct_update fixed bin, /* seconds between acct update */ 3 59 2 login_tries fixed bin, /* number of login tries allowed */ 3 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 3 61 2 registration_price float bin, /* fee per month per user */ 3 62 2 dolsign char (1), /* "dollar sign" */ 3 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 3 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 3 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 3 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 3 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 3 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 3 69* Initializer will copy the syserr_log */ 3 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 3 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 3 72 2 fatal_error_loop_count fixed bin (17) unaligned, 3 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 3 74 2 term_real_time_seconds fixed bin (17) unaligned, 3 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 3 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 3 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 3 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 3 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 3 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 3 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 3 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 3 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 3 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 3 85 2 level_names (0:7) char (32), /* Names for security levels. */ 3 86 2 category_names (18) char (32), /* Names for security categories. */ 3 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 3 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 3 89 2 ncon fixed bin, /* Number of config elements. */ 3 90 2 cona (51), /* each entry is 5 words long */ 3 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 3 92 3 shift fixed bin (5) unal, /* Shift number */ 3 93 3 x1 fixed bin (23) unal, 3 94 3 kmem fixed bin (17) unal, /* Memory size */ 3 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 3 96 3 x2 fixed bin (17) unal, 3 97 3 maxa fixed bin (11) unal, /* Max abs users */ 3 98 3 maxq fixed bin (5) unal, /* Max abs q */ 3 99 3 maxu_base fixed bin (17) unal, 3 100 3 response_high fixed bin (17) unal, 3 101 3 response_low fixed bin (17) unal, 3 102 3 x3 fixed bin (17) unal, 3 103 3 104 /* Absentee control parameters. New for MR7.0 */ 3 105 3 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 3 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 3 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 3 109 3 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 3 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 3 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 3 113 3 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 3 115 3 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 3 117 3 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 3 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 3 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 3 121 2 version fixed bin (35), /* must be 2 */ 3 122 2 nrates fixed bin, /* number of rate structures */ 3 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 3 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 3 125 2 require_operator_login bit (1) aligned, /* just what it says */ 3 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 3 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 3 128* mcacs segments for operators */ 3 129 2 password_min_length fixed bin, /* minimum length of passwords */ 3 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 3 131 2 password_change_interval fixed bin, /* number of days until must change */ 3 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 3 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 3 134* "accepted" by operator if personid is not 3 135* signed on system console */ 3 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 3 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 3 138* or someone miscounted when using part of pad2 */ 3 139 3 140 3 141 /* Entries in the following array may be accessed via system_info_$resource_price. 3 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 3 143 3 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 3 145 2 name char (32), 3 146 2 price float bin; 3 147 4 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 4 2 4 3 /* Created on 04/24/78 by Michael R. Jordan */ 4 4 /* Modified 04/10/79 by C. D. Tavares */ 4 5 4 6 dcl rifp ptr; 4 7 4 8 dcl 1 rcp_init_flags based (rifp), 4 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 4 10 2 pad1 bit (2) unaligned, /* obsolete */ 4 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 4 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 4 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 4 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 4 15 4 16 dcl (No_authentication initial (0), 4 17 Nominal_authentication initial (1), 4 18 Automatic_authentication initial (2), 4 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 4 20 4 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 4 22 ("none", "nominal", "automatic", "manual"); 4 23 4 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 3 148 3 149 3 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 308 309 5 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 5 2* 5 3* Values for the "access mode" argument so often used in hardcore 5 4* James R. Davis 26 Jan 81 MCR 4844 5 5* Added constants for SM access 4/28/82 Jay Pattin 5 6* Added text strings 03/19/85 Chris Jones 5 7**/ 5 8 5 9 5 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 5 11 dcl ( 5 12 N_ACCESS init ("000"b), 5 13 R_ACCESS init ("100"b), 5 14 E_ACCESS init ("010"b), 5 15 W_ACCESS init ("001"b), 5 16 RE_ACCESS init ("110"b), 5 17 REW_ACCESS init ("111"b), 5 18 RW_ACCESS init ("101"b), 5 19 S_ACCESS init ("100"b), 5 20 M_ACCESS init ("010"b), 5 21 A_ACCESS init ("001"b), 5 22 SA_ACCESS init ("101"b), 5 23 SM_ACCESS init ("110"b), 5 24 SMA_ACCESS init ("111"b) 5 25 ) bit (3) internal static options (constant); 5 26 5 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 5 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 5 29 5 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 5 31 static options (constant); 5 32 5 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 5 34 static options (constant); 5 35 5 36 dcl ( 5 37 N_ACCESS_BIN init (00000b), 5 38 R_ACCESS_BIN init (01000b), 5 39 E_ACCESS_BIN init (00100b), 5 40 W_ACCESS_BIN init (00010b), 5 41 RW_ACCESS_BIN init (01010b), 5 42 RE_ACCESS_BIN init (01100b), 5 43 REW_ACCESS_BIN init (01110b), 5 44 S_ACCESS_BIN init (01000b), 5 45 M_ACCESS_BIN init (00010b), 5 46 A_ACCESS_BIN init (00001b), 5 47 SA_ACCESS_BIN init (01001b), 5 48 SM_ACCESS_BIN init (01010b), 5 49 SMA_ACCESS_BIN init (01011b) 5 50 ) fixed bin (5) internal static options (constant); 5 51 5 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 310 311 6 1 /* BEGIN INCLUDE FILE ... terminate_file.incl.pl1 */ 6 2 /* format: style2,^inddcls,idind32 */ 6 3 6 4 declare 1 terminate_file_switches based, 6 5 2 truncate bit (1) unaligned, 6 6 2 set_bc bit (1) unaligned, 6 7 2 terminate bit (1) unaligned, 6 8 2 force_write bit (1) unaligned, 6 9 2 delete bit (1) unaligned; 6 10 6 11 declare TERM_FILE_TRUNC bit (1) internal static options (constant) initial ("1"b); 6 12 declare TERM_FILE_BC bit (2) internal static options (constant) initial ("01"b); 6 13 declare TERM_FILE_TRUNC_BC bit (2) internal static options (constant) initial ("11"b); 6 14 declare TERM_FILE_TERM bit (3) internal static options (constant) initial ("001"b); 6 15 declare TERM_FILE_TRUNC_BC_TERM bit (3) internal static options (constant) initial ("111"b); 6 16 declare TERM_FILE_FORCE_WRITE bit (4) internal static options (constant) initial ("0001"b); 6 17 declare TERM_FILE_DELETE bit (5) internal static options (constant) initial ("00001"b); 6 18 6 19 /* END INCLUDE FILE ... terminate_file.incl.pl1 */ 312 313 314 end inter_multics_aim_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1538.7 inter_multics_aim_.pl1 >special_ldd>install>MR12.1-1054>inter_multics_aim_.pl1 304 1 09/03/82 1045.1 aim_attributes.incl.pl1 >ldd>include>aim_attributes.incl.pl1 306 2 09/07/83 1610.6 aim_template.incl.pl1 >ldd>include>aim_template.incl.pl1 308 3 08/04/87 1140.0 installation_parms.incl.pl1 >spec>install>1056>installation_parms.incl.pl1 3-148 4 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 310 5 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 312 6 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. AIM_ATTRIBUTES_VERSION_1 000002 constant char(8) initial unaligned dcl 1-18 ref 91 122 152 152 200 200 INSTALLATION_PARMS 000004 constant char(32) initial unaligned dcl 70 set ref 109* P_aim_attributes_1_ptr parameter pointer dcl 33 ref 146 149 P_aim_attributes_2_ptr parameter pointer dcl 35 ref 146 150 P_aim_attributes_ptr parameter pointer dcl 28 set ref 88 136* P_area_ptr parameter pointer dcl 26 ref 88 96 98 P_code parameter fixed bin(35,0) dcl 21 set ref 88 92* 109* 110 114* 137* 146 154* 161* 165* 193 202* 209* 217* 229* 236* P_common_ceiling_1 parameter bit(72) dcl 34 set ref 146 176* P_common_ceiling_2 parameter bit(72) dcl 36 set ref 146 187* P_source_aim_attributes_ptr parameter pointer dcl 41 ref 193 197 P_source_aim_authorization parameter bit(72) dcl 42 ref 193 213 P_target_aim_attributes_ptr parameter pointer dcl 43 ref 193 198 P_target_aim_authorization parameter bit(72) dcl 44 set ref 193 234* P_version_wanted parameter char(8) unaligned dcl 27 ref 88 91 R_ACCESS 000066 constant bit(3) initial unaligned dcl 5-11 set ref 109* SYSTEM_CONTROL_DIR 000014 constant char(168) initial unaligned dcl 69 set ref 109* TERM_FILE_TERM 000000 constant bit(3) initial unaligned dcl 6-14 set ref 105* 139* access_authorization_ceiling 546 based bit(72) level 3 dcl 3-33 ref 124 access_class_ceiling 2 based bit(72) level 2 in structure "aim_attributes_1" dcl 49 in procedure "inter_multics_aim_" ref 254 access_class_ceiling 2 based bit(72) level 2 in structure "aim_attributes_2" dcl 50 in procedure "inter_multics_aim_" ref 255 access_class_ceiling 2 based bit(72) level 2 in structure "aim_attributes" dcl 1-6 in procedure "inter_multics_aim_" set ref 124* aim_attributes based structure level 1 dcl 1-6 set ref 104 118 aim_attributes_1 based structure level 1 dcl 49 aim_attributes_1_ptr 000100 automatic pointer dcl 51 set ref 149* 152 197* 200 254 264 264 288 288 aim_attributes_2 based structure level 1 dcl 50 aim_attributes_2_ptr 000102 automatic pointer dcl 51 set ref 150* 152 198* 200 255 264 264 288 288 aim_attributes_ptr 000200 automatic pointer dcl 1-16 set ref 100* 104 104 106* 118* 122 124 126 126 127 128 131 131 132 133 136 aim_template based structure level 1 dcl 2-12 area 000164 stack reference condition dcl 82 ref 112 120 categories 124 based structure array level 2 in structure "aim_attributes" dcl 1-6 in procedure "inter_multics_aim_" set ref 131 131 categories 000110 automatic bit(36) level 2 in structure "local_aim_template_2" dcl 60 in procedure "inter_multics_aim_" set ref 184* 225* 288 categories 124 based structure array level 2 in structure "aim_attributes_1" dcl 49 in procedure "inter_multics_aim_" categories 000106 automatic bit(36) level 2 in structure "local_aim_template_1" dcl 59 in procedure "inter_multics_aim_" set ref 173* 225 282 categories 124 based structure array level 2 in structure "aim_attributes_2" dcl 50 in procedure "inter_multics_aim_" category_names 650 based char(32) array level 3 dcl 3-33 ref 132 category_translation 000113 automatic fixed bin(17,0) array dcl 63 set ref 172 172 173 183 183 184 224 224 225 225 278* 280 280 287 287 293* 294* cleanup 000172 stack reference condition dcl 82 ref 102 common_max_level 000112 automatic fixed bin(17,0) dcl 62 set ref 160 170 181 208 216 257* 263 264* 272 continue 000215 automatic bit(1) dcl 248 set ref 260* 262 268* 269* 285* 287 295* error_table_$ai_no_common_max 000010 external static fixed bin(35,0) dcl 73 ref 161 209 error_table_$ai_outside_common_range 000012 external static fixed bin(35,0) dcl 73 ref 217 229 error_table_$noalloc 000014 external static fixed bin(35,0) dcl 73 ref 114 error_table_$unimplemented_version 000016 external static fixed bin(35,0) dcl 73 ref 92 154 202 get_system_free_area_ 000020 constant entry external dcl 78 ref 96 hbound builtin function dcl 84 ref 126 131 172 183 224 280 287 highest_possible_level 000212 automatic fixed bin(17,0) dcl 245 set ref 259* 264 idx 000162 automatic fixed bin(17,0) dcl 67 in procedure "inter_multics_aim_" set ref 126* 127 127 128 128* 131* 132 132 133 133* 172* 173 173* 183* 184 184* 224* 225 225 225* idx 000213 automatic fixed bin(17,0) dcl 246 in procedure "compute_translation" set ref 263* 264 264 264 264 264 264 280* 282 288 288 293 294* initiate_file_ 000022 constant entry external dcl 79 ref 109 installation_parms based structure level 1 dcl 3-33 installation_parms_part_1 based structure level 1 dcl 3-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 3-144 ip 000160 automatic pointer dcl 65 set ref 100* 105 105* 106* 109* 124 127 128 132 133 139 139* jdx 000214 automatic fixed bin(17,0) dcl 246 set ref 287* 288 288 288 293 294* lbound builtin function dcl 84 ref 126 131 172 183 224 280 287 level 1 000106 automatic fixed bin(17,0) level 2 in structure "local_aim_template_1" packed unaligned dcl 59 in procedure "inter_multics_aim_" set ref 170* 216 221 259 level 1 000110 automatic fixed bin(17,0) level 2 in structure "local_aim_template_2" packed unaligned dcl 60 in procedure "inter_multics_aim_" set ref 181* 221* 259 level_names 550 based char(32) array level 3 dcl 3-33 ref 127 levels 4 based structure array level 2 in structure "aim_attributes_1" dcl 49 in procedure "inter_multics_aim_" levels 4 based structure array level 2 in structure "aim_attributes_2" dcl 50 in procedure "inter_multics_aim_" levels 4 based structure array level 2 in structure "aim_attributes" dcl 1-6 in procedure "inter_multics_aim_" set ref 126 126 local_aim_template_1 000106 automatic structure level 1 dcl 59 set ref 168* 176 213* 254* local_aim_template_2 000110 automatic structure level 1 dcl 60 set ref 179* 187 214* 234 255* long_name 124 based char(32) array level 3 in structure "aim_attributes_1" packed unaligned dcl 49 in procedure "inter_multics_aim_" ref 288 long_name 4 based char(32) array level 3 in structure "aim_attributes_1" packed unaligned dcl 49 in procedure "inter_multics_aim_" ref 264 long_name 124 based char(32) array level 3 in structure "aim_attributes" packed unaligned dcl 1-6 in procedure "inter_multics_aim_" set ref 132* long_name 4 based char(32) array level 3 in structure "aim_attributes_2" packed unaligned dcl 50 in procedure "inter_multics_aim_" ref 264 long_name 124 based char(32) array level 3 in structure "aim_attributes_2" packed unaligned dcl 50 in procedure "inter_multics_aim_" ref 288 long_name 4 based char(32) array level 3 in structure "aim_attributes" packed unaligned dcl 1-6 in procedure "inter_multics_aim_" set ref 127* min builtin function dcl 84 ref 259 null builtin function dcl 84 ref 96 100 104 105 106 139 part_1 based structure level 2 dcl 3-33 rcp_init_flags based structure level 1 packed unaligned dcl 4-8 short_category_names 1110 based char(8) array level 3 dcl 3-33 ref 133 short_level_names 1070 based char(8) array level 3 dcl 3-33 ref 128 short_name 134 based char(8) array level 3 in structure "aim_attributes_2" packed unaligned dcl 50 in procedure "inter_multics_aim_" ref 288 short_name 134 based char(8) array level 3 in structure "aim_attributes_1" packed unaligned dcl 49 in procedure "inter_multics_aim_" ref 288 short_name 14 based char(8) array level 3 in structure "aim_attributes" packed unaligned dcl 1-6 in procedure "inter_multics_aim_" set ref 128* short_name 14 based char(8) array level 3 in structure "aim_attributes_1" packed unaligned dcl 49 in procedure "inter_multics_aim_" ref 264 short_name 134 based char(8) array level 3 in structure "aim_attributes" packed unaligned dcl 1-6 in procedure "inter_multics_aim_" set ref 133* short_name 14 based char(8) array level 3 in structure "aim_attributes_2" packed unaligned dcl 50 in procedure "inter_multics_aim_" ref 264 substr builtin function dcl 84 set ref 173* 184* 225 225* 282 288 terminate_file_ 000024 constant entry external dcl 80 ref 105 139 unspec builtin function dcl 84 set ref 168* 176 179* 187 213* 214* 234 254* 255* user_area based area(1024) dcl 53 ref 104 118 user_area_ptr 000104 automatic pointer dcl 54 set ref 96* 98* 104 118 version based char(8) level 2 in structure "aim_attributes" packed unaligned dcl 1-6 in procedure "inter_multics_aim_" set ref 122* version based char(8) level 2 in structure "aim_attributes_1" packed unaligned dcl 49 in procedure "inter_multics_aim_" ref 152 200 version based char(8) level 2 in structure "aim_attributes_2" packed unaligned dcl 50 in procedure "inter_multics_aim_" ref 152 200 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. A_ACCESS internal static bit(3) initial unaligned dcl 5-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 Automatic_authentication internal static fixed bin(17,0) initial dcl 4-16 DIR_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 5-33 E_ACCESS internal static bit(3) initial unaligned dcl 5-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 M_ACCESS internal static bit(3) initial unaligned dcl 5-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 Manual_authentication internal static fixed bin(17,0) initial dcl 4-16 N_ACCESS internal static bit(3) initial unaligned dcl 5-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 No_authentication internal static fixed bin(17,0) initial dcl 4-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 4-16 REW_ACCESS internal static bit(3) initial unaligned dcl 5-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RE_ACCESS internal static bit(3) initial unaligned dcl 5-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 RW_ACCESS internal static bit(3) initial unaligned dcl 5-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SA_ACCESS internal static bit(3) initial unaligned dcl 5-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array unaligned dcl 5-30 SMA_ACCESS internal static bit(3) initial unaligned dcl 5-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 SM_ACCESS internal static bit(3) initial unaligned dcl 5-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 S_ACCESS internal static bit(3) initial unaligned dcl 5-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 TERM_FILE_BC internal static bit(2) initial unaligned dcl 6-12 TERM_FILE_DELETE internal static bit(5) initial unaligned dcl 6-17 TERM_FILE_FORCE_WRITE internal static bit(4) initial unaligned dcl 6-16 TERM_FILE_TRUNC internal static bit(1) initial unaligned dcl 6-11 TERM_FILE_TRUNC_BC internal static bit(2) initial unaligned dcl 6-13 TERM_FILE_TRUNC_BC_TERM internal static bit(3) initial unaligned dcl 6-15 W_ACCESS internal static bit(3) initial unaligned dcl 5-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 5-36 authentication_level_names internal static char(12) initial array unaligned dcl 4-21 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 3-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 3-38 rifp automatic pointer dcl 4-6 terminate_file_switches based structure level 1 packed unaligned dcl 6-4 NAMES DECLARED BY EXPLICIT CONTEXT. RETURN_FROM_GET_SYSTEM_AIM_ATTRIBUTES_ 000442 constant label dcl 139 ref 115 compute_common_aim_ceiling_ 000503 constant entry external dcl 146 compute_translation 000756 constant entry internal dcl 242 ref 158 206 get_system_aim_attributes_ 000122 constant entry external dcl 88 inter_multics_aim_ 000107 constant entry external dcl 13 translate_aim_attributes_ 000632 constant entry external dcl 193 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1360 1406 1167 1370 Length 1726 1167 26 303 171 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME inter_multics_aim_ 180 external procedure is an external procedure. on unit on line 102 86 on unit on unit on line 112 64 on unit compute_translation internal procedure shares stack frame of external procedure inter_multics_aim_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME inter_multics_aim_ 000100 aim_attributes_1_ptr inter_multics_aim_ 000102 aim_attributes_2_ptr inter_multics_aim_ 000104 user_area_ptr inter_multics_aim_ 000106 local_aim_template_1 inter_multics_aim_ 000110 local_aim_template_2 inter_multics_aim_ 000112 common_max_level inter_multics_aim_ 000113 category_translation inter_multics_aim_ 000160 ip inter_multics_aim_ 000162 idx inter_multics_aim_ 000200 aim_attributes_ptr inter_multics_aim_ 000212 highest_possible_level compute_translation 000213 idx compute_translation 000214 jdx compute_translation 000215 continue compute_translation THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac tra_ext_1 enable_op ext_entry int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_system_free_area_ initiate_file_ terminate_file_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$ai_no_common_max error_table_$ai_outside_common_range error_table_$noalloc error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000106 16 000114 88 000115 91 000132 92 000140 93 000143 96 000144 98 000160 100 000163 102 000166 104 000202 105 000211 106 000245 107 000251 109 000252 110 000310 112 000312 114 000326 115 000331 118 000334 120 000341 122 000342 124 000345 126 000352 127 000357 128 000372 129 000402 131 000404 132 000411 133 000424 134 000434 136 000436 137 000441 139 000442 142 000475 146 000476 149 000513 150 000517 152 000522 154 000532 155 000535 158 000536 160 000537 161 000542 162 000545 165 000546 168 000547 170 000551 172 000554 173 000561 174 000570 176 000572 179 000577 181 000601 183 000604 184 000611 185 000620 187 000622 189 000627 193 000630 197 000642 198 000646 200 000651 202 000661 203 000664 206 000665 208 000666 209 000671 210 000674 213 000675 214 000702 216 000704 217 000711 218 000714 221 000715 224 000717 225 000725 229 000741 230 000744 232 000745 234 000747 236 000754 238 000755 242 000756 254 000757 255 000763 257 000767 259 000771 260 001002 262 001004 263 001006 264 001011 268 001041 269 001043 270 001044 272 001045 278 001051 280 001072 282 001077 285 001103 287 001105 288 001115 293 001147 294 001154 295 001160 297 001161 299 001163 301 001165 ----------------------------------------------------------- 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