COMPILATION LISTING OF SEGMENT metering_util_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/24/88 1433.2 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 metering_util_$define_regions: 12 proc; 13 14 15 /* metering utility 16* 17* This is a utility subroutine for hardcore metering commands. 18* It allows definition of "regions", which are arbitrary 19* sections of ring-0 segments containing information of interest 20* to the invoker. These regions are grouped by means of 21* a unique index, which allows multiple use of this subroutine 22* within the same process. This subroutine maintains for each 23* region two buffers in static storage -- one for the "current" 24* copy of the region and one for the "previous" copy; pointers 25* to these buffers are returned following definition. 26* 27* The following entries are provided: 28* 29* metering_util_$define_regions - define hardcore regions, allocate static 30* buffer space 31* 32* metering_util_$fill_buffers - copy all regions associated with a 33* given unique index into the "current" buffers, and return 34* pointers 35* 36* metering_util_$reset - copy all "current" buffers associated with 37* a given unique index into the "previous" buffers 38* 39* 40* 41* Written December 1980 by J. Bongiovanni 42* Modified May 1982 by J. Bongiovanni to handle area condition 43**/ 44 45 /* Parameter */ 46 47 dcl current_ptrs (*) ptr; /* pointers to current static buffers */ 48 dcl formatted_time char (*); /* metering time in hhhh:mm:ss */ 49 dcl meter_time fixed bin (71); /* metering time in microseconds */ 50 dcl previous_ptrs (*) ptr; /* pointers to previous static buffers */ 51 dcl rcode fixed bin (35); /* error return code */ 52 dcl unique fixed bin; /* instance identifier */ 53 54 /* Automatic */ 55 56 dcl acode fixed bin (35); 57 dcl areap ptr; 58 dcl arg_list_ptr ptr; 59 dcl arg_numeric fixed bin (18); 60 dcl arg_ptr ptr; 61 dcl arg_size fixed bin; 62 dcl arg_size_1 fixed bin (21); 63 dcl arg_type fixed bin; 64 dcl begin_offset fixed bin (18); 65 dcl codep ptr; 66 dcl end_offset fixed bin (18); 67 dcl HR pic "zzz9"; 68 dcl MIN pic "99"; 69 dcl min fixed bin; 70 dcl nargs fixed bin; 71 dcl prev_region_ptr ptr; 72 dcl region_ptr ptr; 73 dcl region_no fixed bin; 74 dcl r0_ptr ptr; 75 dcl SEC pic "99"; 76 dcl sec fixed bin; 77 dcl sub_arg_no fixed bin; 78 dcl time_val fixed bin (71); 79 dcl type fixed bin; 80 dcl unique_index_arg_ptr ptr; 81 dcl why char (50); 82 83 /* Static */ 84 85 dcl our_name char (14) init ("metering_util_") int static options (constant); 86 dcl next_unique fixed bin int static init (1); /* next instance number */ 87 dcl unique_region_ptr (40) ptr unal int static init ((40) null ()); /* ptrs to linked list of region */ 88 dcl (begin_end_mess char (32) init ("Region must have positive length"), 89 fixed_char_mess char (37) init ("Argument must be type numeric or char"), 90 ptr_char_mess char (33) init ("Argument must be type ptr or char"), 91 std_err_mess char (12) init ("Invalid call")) 92 int static options (constant); 93 1 1 /* BEGIN INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-09-05,JMAthane), approve(86-09-05,MCR7525), 1 6* audit(86-09-11,Martinson), install(86-11-12,MR12.0-1208): 1 7* Added pascal_string_type_dtype descriptor type. Its number is 87. 1 8* Objects of this type are PASCAL string types. 1 9* 2) change(88-09-20,WAAnderson), approve(88-09-20,MCR7952), 1 10* audit(88-09-30,JRGray), install(88-10-24,MR12.2-1184): 1 11* Added the new C types. 1 12* END HISTORY COMMENTS */ 1 13 1 14 /* This include file defines mnemonic names for the Multics 1 15* standard descriptor types, using both pl1 and cobol terminology. 1 16* PG 780613 1 17* JRD 790530 1 18* JRD 791016 1 19* MBW 810731 1 20* TGO 830614 Add hex types. 1 21* Modified June 83 JMAthane to add PASCAL data types 1 22* TGO 840120 Add float dec extended and generic, float binary generic 1 23**/ 1 24 1 25 dcl (real_fix_bin_1_dtype init (1), 1 26 real_fix_bin_2_dtype init (2), 1 27 real_flt_bin_1_dtype init (3), 1 28 real_flt_bin_2_dtype init (4), 1 29 cplx_fix_bin_1_dtype init (5), 1 30 cplx_fix_bin_2_dtype init (6), 1 31 cplx_flt_bin_1_dtype init (7), 1 32 cplx_flt_bin_2_dtype init (8), 1 33 real_fix_dec_9bit_ls_dtype init (9), 1 34 real_flt_dec_9bit_dtype init (10), 1 35 cplx_fix_dec_9bit_ls_dtype init (11), 1 36 cplx_flt_dec_9bit_dtype init (12), 1 37 pointer_dtype init (13), 1 38 offset_dtype init (14), 1 39 label_dtype init (15), 1 40 entry_dtype init (16), 1 41 structure_dtype init (17), 1 42 area_dtype init (18), 1 43 bit_dtype init (19), 1 44 varying_bit_dtype init (20), 1 45 char_dtype init (21), 1 46 varying_char_dtype init (22), 1 47 file_dtype init (23), 1 48 real_fix_dec_9bit_ls_overp_dtype init (29), 1 49 real_fix_dec_9bit_ts_overp_dtype init (30), 1 50 real_fix_bin_1_uns_dtype init (33), 1 51 real_fix_bin_2_uns_dtype init (34), 1 52 real_fix_dec_9bit_uns_dtype init (35), 1 53 real_fix_dec_9bit_ts_dtype init (36), 1 54 real_fix_dec_4bit_uns_dtype init (38), /* digit-aligned */ 1 55 real_fix_dec_4bit_ts_dtype init (39), /* byte-aligned */ 1 56 real_fix_dec_4bit_bytealigned_uns_dtype init (40), /* COBOL */ 1 57 real_fix_dec_4bit_ls_dtype init (41), /* digit-aligned */ 1 58 real_flt_dec_4bit_dtype init (42), /* digit-aligned */ 1 59 real_fix_dec_4bit_bytealigned_ls_dtype init (43), 1 60 real_flt_dec_4bit_bytealigned_dtype init (44), 1 61 cplx_fix_dec_4bit_bytealigned_ls_dtype init (45), 1 62 cplx_flt_dec_4bit_bytealigned_dtype init (46), 1 63 real_flt_hex_1_dtype init (47), 1 64 real_flt_hex_2_dtype init (48), 1 65 cplx_flt_hex_1_dtype init (49), 1 66 cplx_flt_hex_2_dtype init (50), 1 67 c_typeref_dtype init (54), 1 68 c_enum_dtype init (55), 1 69 c_enum_const_dtype init (56), 1 70 c_union_dtype init (57), 1 71 algol68_straight_dtype init (59), 1 72 algol68_format_dtype init (60), 1 73 algol68_array_descriptor_dtype init (61), 1 74 algol68_union_dtype init (62), 1 75 1 76 cobol_comp_6_dtype init (1), 1 77 cobol_comp_7_dtype init (1), 1 78 cobol_display_ls_dtype init (9), 1 79 cobol_structure_dtype init (17), 1 80 cobol_char_string_dtype init (21), 1 81 cobol_display_ls_overp_dtype init (29), 1 82 cobol_display_ts_overp_dtype init (30), 1 83 cobol_display_uns_dtype init (35), 1 84 cobol_display_ts_dtype init (36), 1 85 cobol_comp_8_uns_dtype init (38), /* digit aligned */ 1 86 cobol_comp_5_ts_dtype init (39), /* byte aligned */ 1 87 cobol_comp_5_uns_dtype init (40), 1 88 cobol_comp_8_ls_dtype init (41), /* digit aligned */ 1 89 real_flt_dec_extended_dtype init (81), /* 9-bit exponent */ 1 90 cplx_flt_dec_extended_dtype init (82), /* 9-bit exponent */ 1 91 real_flt_dec_generic_dtype init (83), /* generic float decimal */ 1 92 cplx_flt_dec_generic_dtype init (84), 1 93 real_flt_bin_generic_dtype init (85), /* generic float binary */ 1 94 cplx_flt_bin_generic_dtype init (86)) fixed bin internal static options (constant); 1 95 1 96 dcl (ft_integer_dtype init (1), 1 97 ft_real_dtype init (3), 1 98 ft_double_dtype init (4), 1 99 ft_complex_dtype init (7), 1 100 ft_complex_double_dtype init (8), 1 101 ft_external_dtype init (16), 1 102 ft_logical_dtype init (19), 1 103 ft_char_dtype init (21), 1 104 ft_hex_real_dtype init (47), 1 105 ft_hex_double_dtype init (48), 1 106 ft_hex_complex_dtype init (49), 1 107 ft_hex_complex_double_dtype init (50) 1 108 ) fixed bin internal static options (constant); 1 109 1 110 dcl (algol68_short_int_dtype init (1), 1 111 algol68_int_dtype init (1), 1 112 algol68_long_int_dtype init (2), 1 113 algol68_real_dtype init (3), 1 114 algol68_long_real_dtype init (4), 1 115 algol68_compl_dtype init (7), 1 116 algol68_long_compl_dtype init (8), 1 117 algol68_bits_dtype init (19), 1 118 algol68_bool_dtype init (19), 1 119 algol68_char_dtype init (21), 1 120 algol68_byte_dtype init (21), 1 121 algol68_struct_struct_char_dtype init (22), 1 122 algol68_struct_struct_bool_dtype init (20) 1 123 ) fixed bin internal static options (constant); 1 124 1 125 dcl (label_constant_runtime_dtype init (24), 1 126 int_entry_runtime_dtype init (25), 1 127 ext_entry_runtime_dtype init (26), 1 128 ext_procedure_runtime_dtype init (27), 1 129 picture_runtime_dtype init (63) 1 130 ) fixed bin internal static options (constant); 1 131 1 132 dcl (pascal_integer_dtype init (1), 1 133 pascal_real_dtype init (4), 1 134 pascal_label_dtype init (24), 1 135 pascal_internal_procedure_dtype init (25), 1 136 pascal_exportable_procedure_dtype init (26), 1 137 pascal_imported_procedure_dtype init (27), 1 138 pascal_typed_pointer_type_dtype init (64), 1 139 pascal_char_dtype init (65), 1 140 pascal_boolean_dtype init (66), 1 141 pascal_record_file_type_dtype init (67), 1 142 pascal_record_type_dtype init (68), 1 143 pascal_set_dtype init (69), 1 144 pascal_enumerated_type_dtype init (70), 1 145 pascal_enumerated_type_element_dtype init (71), 1 146 pascal_enumerated_type_instance_dtype init (72), 1 147 pascal_user_defined_type_dtype init (73), 1 148 pascal_user_defined_type_instance_dtype init (74), 1 149 pascal_text_file_dtype init (75), 1 150 pascal_procedure_type_dtype init (76), 1 151 pascal_variable_formal_parameter_dtype init (77), 1 152 pascal_value_formal_parameter_dtype init (78), 1 153 pascal_entry_formal_parameter_dtype init (79), 1 154 pascal_parameter_procedure_dtype init (80), 1 155 pascal_string_type_dtype init (87)) fixed bin int static options (constant); 1 156 1 157 1 158 /* END INCLUDE FILE ... std_descriptor_types.incl.pl1 */ 94 95 96 /* Based */ 97 98 dcl arg_name char (arg_size) based (arg_ptr); 99 dcl code fixed bin (35) based (codep); 100 dcl fixed_bin_based fixed bin (18) aligned based (arg_ptr); 101 dcl ptr_ptr ptr based; 102 dcl unique_index_arg fixed bin based (unique_index_arg_ptr); 103 104 dcl 1 region aligned based (region_ptr), /* structure in static for each region to snap */ 105 2 next_region ptr, /* next region this instance */ 106 2 ring0_ptr ptr, /* begin of snap region in ring-0 */ 107 2 current_time fixed bin (71), /* time of current snap */ 108 2 previous_time fixed bin (71), /* time of previous snap */ 109 2 nwords fixed bin (19), /* number of words to snap */ 110 2 nwords_alloc fixed bin (19), /* number of words in array (mod 2) */ 111 2 current_snap (end_offset - begin_offset + mod (end_offset - begin_offset, 2) refer (region.nwords_alloc)), 112 2 previous_snap (end_offset - begin_offset + mod (end_offset - begin_offset, 2) refer (region.nwords_alloc)); 113 114 /* Area */ 115 116 dcl static_area area based (areap); 117 118 119 /* External */ 120 121 dcl error_table_$area_too_small fixed bin (35) external; 122 dcl error_table_$bad_arg fixed bin (35) external; 123 dcl error_table_$bad_index fixed bin (35) external; 124 dcl error_table_$invalid_array_size fixed bin (35) external; 125 dcl error_table_$wrong_no_of_args fixed bin (35) external; 126 dcl sys_info$time_of_bootload fixed bin (71) external; 127 128 /* Entry */ 129 130 dcl assign_ entry (ptr, fixed bin, fixed bin (35), ptr, fixed bin, fixed bin (35)); 131 dcl cu_$arg_count entry (fixed bin); 132 dcl cu_$arg_list_ptr entry (ptr); 133 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 134 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr); 135 dcl decode_descriptor_ entry (ptr, fixed bin, fixed bin, bit (1) aligned, fixed bin, fixed bin, fixed bin); 136 dcl get_system_free_area_ entry () returns (ptr); 137 dcl ring0_get_$definition entry (ptr, char (*), char (*), fixed bin (18), fixed bin, fixed bin (35)); 138 dcl ring0_get_$segptr entry (char (*), char (*), ptr, fixed bin (35)); 139 dcl ring_zero_peek_ entry (ptr, ptr, fixed bin (19), fixed bin (35)); 140 dcl sub_err_ entry options (variable); 141 142 /* Builtin */ 143 144 dcl (addr, clock, divide, hbound, lbound, mod, null, ptr, unspec) builtin; 145 146 /* Condition */ 147 148 dcl area condition; 149 dcl cleanup condition; 150 151 /* */ 152 153 /* Do preliminary check of arguments. The number of arguments passed 154* must be 2+3*N, where N is the number of hardcore regions (>0) */ 155 156 call cu_$arg_count (nargs); 157 if nargs <= 2 then do; 158 call_suberr: 159 call sub_err_ (error_table_$wrong_no_of_args, our_name, "s", 160 null (), (0), std_err_mess); 161 return; 162 end; 163 164 call cu_$arg_list_ptr (arg_list_ptr); 165 call cu_$arg_ptr (1, unique_index_arg_ptr, arg_size_1, acode); 166 call cu_$arg_ptr (2, codep, arg_size_1, acode); 167 168 code = 0; 169 170 if mod (nargs - 2, 3) ^= 0 then goto call_suberr; 171 172 173 174 175 /* Make sure we havent run out of instances */ 176 177 if next_unique > hbound (unique_region_ptr, 1) then do; 178 code = error_table_$bad_index; 179 return; 180 end; 181 182 /* go through each region defined, validate it, and allocate 183* sufficient static storage to hold 2 snapshots plus control 184* information. If an error is encountered, deallocate all 185* static storage allocated this call */ 186 187 188 areap = get_system_free_area_ (); 189 region_no = 1; 190 prev_region_ptr = null (); 191 192 on area begin; 193 code = error_table_$area_too_small; 194 why = "area condition signalled"; 195 goto other_error; 196 end; 197 198 on cleanup call cleanup_regions; 199 200 201 do while (3 * region_no + 2 <= nargs); 202 sub_arg_no = 1; 203 why = ptr_char_mess; 204 call arg_val (3 * region_no); /* ring-0 segment name or pointer */ 205 if arg_type = pointer_dtype then r0_ptr = arg_ptr -> ptr_ptr; 206 else if arg_type = char_dtype then do; 207 call ring0_get_$segptr ("", arg_name, r0_ptr, code); 208 if code ^= 0 then do; 209 why = arg_name; 210 goto other_error; 211 end; 212 end; 213 else goto bad_arg; 214 215 sub_arg_no = 2; 216 why = fixed_char_mess; 217 call arg_val (3 * region_no + 1); /* begin offset or symbol name */ 218 if arg_type = real_fix_bin_1_dtype then begin_offset = fixed_bin_based; 219 else if arg_type = char_dtype then do; 220 call ring0_get_$definition (r0_ptr, "", arg_name, begin_offset, type, code); 221 if code ^= 0 then do; 222 why = arg_name; 223 goto other_error; 224 end; 225 end; 226 else goto bad_arg; 227 228 sub_arg_no = 3; 229 why = fixed_char_mess; 230 call arg_val (3 * region_no + 2); /* length or name 1-word beyond end */ 231 if arg_type = real_fix_bin_1_dtype then end_offset = fixed_bin_based + begin_offset; 232 else if arg_type = char_dtype then do; 233 call ring0_get_$definition (r0_ptr, "", arg_name, end_offset, type, code); 234 if code ^= 0 then do; 235 why = arg_name; 236 goto other_error; 237 end; 238 end; 239 else goto bad_arg; 240 241 why = begin_end_mess; 242 if end_offset - begin_offset <= 0 then goto bad_arg; 243 244 allocate region in (static_area); 245 region.next_region = null (); 246 region.ring0_ptr = ptr (r0_ptr, begin_offset); 247 region.current_time, region.previous_time = sys_info$time_of_bootload; 248 region.nwords = end_offset - begin_offset; 249 unspec (region.current_snap) = ""b; 250 unspec (region.previous_snap) = ""b; 251 252 if prev_region_ptr = null () /* 1st region this instance */ 253 then unique_region_ptr (next_unique) = region_ptr; 254 else prev_region_ptr -> region.next_region = region_ptr; 255 256 prev_region_ptr = region_ptr; 257 region_no = region_no + 1; 258 end; 259 260 /* Return unique index to be used in future calls */ 261 262 unique_index_arg = next_unique; 263 next_unique = next_unique + 1; 264 265 return; 266 267 268 269 270 bad_arg: 271 code = error_table_$bad_arg; 272 273 /* Error encountered after scan of hardcore regions. 274* Deallocate all static storage allocated this call */ 275 276 other_error: 277 278 call cleanup_regions; 279 280 call sub_err_ (code, our_name, "s", null (), (0), "^a. ^a. hardcore region ^d subarg no. ^d", 281 std_err_mess, why, region_no, sub_arg_no); 282 283 284 return; 285 286 287 288 /* */ 289 fill_buffers: 290 entry (unique, meter_time, formatted_time, current_ptrs, previous_ptrs, rcode); 291 292 293 /* validate parameters */ 294 295 if unique < lbound (unique_region_ptr, 1) | unique > hbound (unique_region_ptr, 1) then do; 296 fill_buffers_arg_error: 297 rcode = error_table_$bad_arg; 298 return; 299 end; 300 301 if unique_region_ptr (unique) = null () 302 then goto fill_buffers_arg_error; 303 304 region_no = 0; 305 region_ptr = unique_region_ptr (unique); 306 do while (region_ptr ^= null ()); 307 region_no = region_no + 1; 308 region_ptr = region.next_region; 309 end; 310 if hbound (current_ptrs, 1) ^= region_no | hbound (previous_ptrs, 1) ^= region_no then do; 311 rcode = error_table_$invalid_array_size; 312 return; 313 end; 314 315 /* snap each hardcore region into the current buffer for same. 316* also pick up and return pointers to current and previous buffer */ 317 318 time_val = clock (); 319 region_ptr = unique_region_ptr (unique); 320 region_no = 1; 321 meter_time = time_val - region.previous_time; 322 323 do while (region_ptr ^= null ()); 324 call ring_zero_peek_ (region.ring0_ptr, addr (region.current_snap), 325 region.nwords, rcode); 326 if rcode ^= 0 then return; /* heavy Oops! */ 327 region.current_time = time_val; 328 current_ptrs (region_no) = addr (region.current_snap); 329 previous_ptrs (region_no) = addr (region.previous_snap); 330 region_ptr = region.next_region; 331 region_no = region_no + 1; 332 end; 333 334 sec = divide (meter_time, 1000000, 17); 335 SEC = mod (sec, 60); 336 min = divide (sec, 60, 17); 337 MIN = mod (min, 60); 338 HR = divide (min, 60, 17); 339 formatted_time = HR || ":" || MIN || ":" || SEC; 340 341 342 return; 343 344 /* */ 345 reset: 346 entry (unique, rcode); 347 348 /* validate unique index */ 349 350 if unique < lbound (unique_region_ptr, 1) | unique > hbound (unique_region_ptr, 1) then goto fill_buffers_arg_error; 351 if unique_region_ptr (unique) = null () 352 then goto fill_buffers_arg_error; 353 354 rcode = 0; 355 356 357 /* reset each region for this unique index by copying each current buffer 358* into the corresponding previous buffer */ 359 360 region_ptr = unique_region_ptr (unique); 361 do while (region_ptr ^= null ()); 362 region.previous_snap = region.current_snap; 363 region.previous_time = region.current_time; 364 region_ptr = region.next_region; 365 end; 366 367 368 return; 369 370 371 372 373 374 375 376 377 378 /* 379* Internal subroutine to examine arguments and do preliminary screening. 380* 381* Assumed on input: 382* arg_list_ptr points to argument list for main program 383* 384* Set on output: 385* arg_type - argument type 386* arg_size - argument size 387* arg_ptr - pointer to argument 388* 389* If the argument is numeric, it is converted to fixed bin (18) aligned, 390* and the values above set to the converted argument 391**/ 392 393 arg_val: proc (n); 394 395 396 dcl n fixed bin; /* argument number */ 397 398 dcl av_code fixed bin (35); 399 dcl len fixed bin (21); 400 dcl ndims fixed bin; 401 dcl packed bit (1) aligned; 402 dcl scale fixed bin; 403 404 call decode_descriptor_ (arg_list_ptr, n, arg_type, packed, ndims, arg_size, scale); 405 if (packed & arg_type ^= char_dtype) | arg_type = -1 | ndims ^= 0 | scale ^= 0 406 then goto bad_arg; 407 call cu_$arg_ptr_rel (n, arg_ptr, len, av_code, arg_list_ptr); 408 if (arg_type <= cplx_flt_dec_9bit_dtype) 409 | (arg_type >= real_fix_bin_1_uns_dtype & arg_type <= real_fix_bin_2_uns_dtype) 410 | (arg_type >= real_fix_dec_4bit_ls_dtype & arg_type <= real_flt_dec_4bit_bytealigned_dtype) 411 then do; 412 call assign_ (addr (arg_numeric), 2 * real_fix_bin_1_dtype, 18, arg_ptr, 413 2 * arg_type, bin (arg_size, 35)); 414 arg_ptr = addr (arg_numeric); 415 arg_size = 18; 416 arg_type = real_fix_bin_1_dtype; 417 end; 418 419 420 end arg_val; 421 /* 422* Internal procedure to clean up any space we may have allocated 423**/ 424 425 cleanup_regions: 426 proc; 427 428 429 prev_region_ptr = unique_region_ptr (next_unique); 430 do while (prev_region_ptr ^= null ()); 431 region_ptr = prev_region_ptr; 432 prev_region_ptr = region.next_region; 433 free region in (static_area); 434 end; 435 436 unique_region_ptr (next_unique) = null (); 437 438 end cleanup_regions; 439 440 end metering_util_$define_regions; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/24/88 1401.3 metering_util_.pl1 >special_ldd>install>MR12.2-1184>metering_util_.pl1 94 1 10/24/88 1336.9 std_descriptor_types.incl.pl1 >special_ldd>install>MR12.2-1184>std_descriptor_types.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. HR 000121 automatic picture(4) packed unaligned dcl 67 set ref 338* 339 MIN 000122 automatic picture(2) packed unaligned dcl 68 set ref 337* 339 SEC 000136 automatic picture(2) packed unaligned dcl 75 set ref 335* 339 acode 000100 automatic fixed bin(35,0) dcl 56 set ref 165* 166* addr builtin function dcl 144 ref 324 324 328 329 412 412 414 area 000166 stack reference condition dcl 148 ref 192 areap 000102 automatic pointer dcl 57 set ref 188* 244 433 arg_list_ptr 000104 automatic pointer dcl 58 set ref 164* 404* 407* arg_name based char packed unaligned dcl 98 set ref 207* 209 220* 222 233* 235 arg_numeric 000106 automatic fixed bin(18,0) dcl 59 set ref 412 412 414 arg_ptr 000110 automatic pointer dcl 60 set ref 205 207 209 218 220 222 231 233 235 407* 412* 414* arg_size 000112 automatic fixed bin(17,0) dcl 61 set ref 207 207 209 220 220 222 233 233 235 404* 412 412 415* arg_size_1 000113 automatic fixed bin(21,0) dcl 62 set ref 165* 166* arg_type 000114 automatic fixed bin(17,0) dcl 63 set ref 205 206 218 219 231 232 404* 405 405 408 408 408 408 408 412 416* assign_ 000076 constant entry external dcl 130 ref 412 av_code 000212 automatic fixed bin(35,0) dcl 398 set ref 407* begin_end_mess 000026 constant char(32) initial packed unaligned dcl 88 ref 241 begin_offset 000115 automatic fixed bin(18,0) dcl 64 set ref 218* 220* 231 242 244 244 244 244 244 244 246 248 char_dtype constant fixed bin(17,0) initial dcl 1-25 ref 206 219 232 405 cleanup 000174 stack reference condition dcl 149 ref 198 clock builtin function dcl 144 ref 318 code based fixed bin(35,0) dcl 99 set ref 168* 178* 193* 207* 208 220* 221 233* 234 270* 280* codep 000116 automatic pointer dcl 65 set ref 166* 168 178 193 207 208 220 221 233 234 270 280 cplx_flt_dec_9bit_dtype constant fixed bin(17,0) initial dcl 1-25 ref 408 cu_$arg_count 000100 constant entry external dcl 131 ref 156 cu_$arg_list_ptr 000102 constant entry external dcl 132 ref 164 cu_$arg_ptr 000104 constant entry external dcl 133 ref 165 166 cu_$arg_ptr_rel 000106 constant entry external dcl 134 ref 407 current_ptrs parameter pointer array dcl 47 set ref 289 310 328* current_snap 12 based fixed bin(17,0) array level 2 dcl 104 set ref 249* 324 324 328 362 current_time 4 based fixed bin(71,0) level 2 dcl 104 set ref 247* 327* 363 decode_descriptor_ 000110 constant entry external dcl 135 ref 404 divide builtin function dcl 144 ref 334 336 338 end_offset 000120 automatic fixed bin(18,0) dcl 66 set ref 231* 233* 242 244 244 244 244 244 244 248 error_table_$area_too_small 000062 external static fixed bin(35,0) dcl 121 ref 193 error_table_$bad_arg 000064 external static fixed bin(35,0) dcl 122 ref 270 296 error_table_$bad_index 000066 external static fixed bin(35,0) dcl 123 ref 178 error_table_$invalid_array_size 000070 external static fixed bin(35,0) dcl 124 ref 311 error_table_$wrong_no_of_args 000072 external static fixed bin(35,0) dcl 125 set ref 158* fixed_bin_based based fixed bin(18,0) dcl 100 ref 218 231 fixed_char_mess 000014 constant char(37) initial packed unaligned dcl 88 ref 216 229 formatted_time parameter char packed unaligned dcl 48 set ref 289 339* get_system_free_area_ 000112 constant entry external dcl 136 ref 188 hbound builtin function dcl 144 ref 177 295 310 310 350 lbound builtin function dcl 144 ref 295 350 len 000213 automatic fixed bin(21,0) dcl 399 set ref 407* meter_time parameter fixed bin(71,0) dcl 49 set ref 289 321* 334 min 000123 automatic fixed bin(17,0) dcl 69 set ref 336* 337 338 mod builtin function dcl 144 ref 170 244 244 244 335 337 n parameter fixed bin(17,0) dcl 396 set ref 393 404* 407* nargs 000124 automatic fixed bin(17,0) dcl 70 set ref 156* 157 170 201 ndims 000214 automatic fixed bin(17,0) dcl 400 set ref 404* 405 next_region based pointer level 2 dcl 104 set ref 245* 254* 308 330 364 432 next_unique 000010 internal static fixed bin(17,0) initial dcl 86 set ref 177 252 262 263* 263 429 436 null builtin function dcl 144 ref 158 158 190 245 252 280 280 301 306 323 351 361 430 436 nwords 10 based fixed bin(19,0) level 2 dcl 104 set ref 248* 324* nwords_alloc 11 based fixed bin(19,0) level 2 dcl 104 set ref 244* 249 250 250 329 362 362 433 433 our_name 000036 constant char(14) initial packed unaligned dcl 85 set ref 158* 280* packed 000215 automatic bit(1) dcl 401 set ref 404* 405 pointer_dtype constant fixed bin(17,0) initial dcl 1-25 ref 205 prev_region_ptr 000126 automatic pointer dcl 71 set ref 190* 252 254 256* 429* 430 431 432* previous_ptrs parameter pointer array dcl 50 set ref 289 310 329* previous_snap based fixed bin(17,0) array level 2 dcl 104 set ref 250* 329 362* previous_time 6 based fixed bin(71,0) level 2 dcl 104 set ref 247* 321 363* ptr builtin function dcl 144 ref 246 ptr_char_mess 000003 constant char(33) initial packed unaligned dcl 88 ref 203 ptr_ptr based pointer dcl 101 ref 205 r0_ptr 000134 automatic pointer dcl 74 set ref 205* 207* 220* 233* 246 rcode parameter fixed bin(35,0) dcl 51 set ref 289 296* 311* 324* 326 345 354* real_fix_bin_1_dtype constant fixed bin(17,0) initial dcl 1-25 ref 218 231 412 416 real_fix_bin_1_uns_dtype constant fixed bin(17,0) initial dcl 1-25 ref 408 real_fix_bin_2_uns_dtype constant fixed bin(17,0) initial dcl 1-25 ref 408 real_fix_dec_4bit_ls_dtype constant fixed bin(17,0) initial dcl 1-25 ref 408 real_flt_dec_4bit_bytealigned_dtype constant fixed bin(17,0) initial dcl 1-25 ref 408 region based structure level 1 dcl 104 set ref 244 433 region_no 000132 automatic fixed bin(17,0) dcl 73 set ref 189* 201 204 217 230 257* 257 280* 304* 307* 307 310 310 320* 328 329 331* 331 region_ptr 000130 automatic pointer dcl 72 set ref 244* 245 246 247 247 248 249 250 252 254 256 305* 306 308* 308 319* 321 323 324 324 324 324 327 328 329 330* 330 360* 361 362 362 363 363 364* 364 431* 432 433 ring0_get_$definition 000114 constant entry external dcl 137 ref 220 233 ring0_get_$segptr 000116 constant entry external dcl 138 ref 207 ring0_ptr 2 based pointer level 2 dcl 104 set ref 246* 324* ring_zero_peek_ 000120 constant entry external dcl 139 ref 324 scale 000216 automatic fixed bin(17,0) dcl 402 set ref 404* 405 sec 000137 automatic fixed bin(17,0) dcl 76 set ref 334* 335 336 static_area based area(1024) dcl 116 ref 244 433 std_err_mess 000000 constant char(12) initial packed unaligned dcl 88 set ref 158* 280* sub_arg_no 000140 automatic fixed bin(17,0) dcl 77 set ref 202* 215* 228* 280* sub_err_ 000122 constant entry external dcl 140 ref 158 280 sys_info$time_of_bootload 000074 external static fixed bin(71,0) dcl 126 ref 247 time_val 000142 automatic fixed bin(71,0) dcl 78 set ref 318* 321 327 type 000144 automatic fixed bin(17,0) dcl 79 set ref 220* 233* unique parameter fixed bin(17,0) dcl 52 ref 289 295 295 301 305 319 345 350 350 351 360 unique_index_arg based fixed bin(17,0) dcl 102 set ref 262* unique_index_arg_ptr 000146 automatic pointer dcl 80 set ref 165* 262 unique_region_ptr 000011 internal static pointer initial array packed unaligned dcl 87 set ref 177 252* 295 295 301 305 319 350 350 351 360 429 436* unspec builtin function dcl 144 set ref 249* 250* why 000150 automatic char(50) packed unaligned dcl 81 set ref 194* 203* 209* 216* 222* 229* 235* 241* 280* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. algol68_array_descriptor_dtype internal static fixed bin(17,0) initial dcl 1-25 algol68_bits_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_bool_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_byte_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_char_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_compl_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_format_dtype internal static fixed bin(17,0) initial dcl 1-25 algol68_int_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_long_compl_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_long_int_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_long_real_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_real_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_short_int_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_straight_dtype internal static fixed bin(17,0) initial dcl 1-25 algol68_struct_struct_bool_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_struct_struct_char_dtype internal static fixed bin(17,0) initial dcl 1-110 algol68_union_dtype internal static fixed bin(17,0) initial dcl 1-25 area_dtype internal static fixed bin(17,0) initial dcl 1-25 bit_dtype internal static fixed bin(17,0) initial dcl 1-25 c_enum_const_dtype internal static fixed bin(17,0) initial dcl 1-25 c_enum_dtype internal static fixed bin(17,0) initial dcl 1-25 c_typeref_dtype internal static fixed bin(17,0) initial dcl 1-25 c_union_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_char_string_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_comp_5_ts_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_comp_5_uns_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_comp_6_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_comp_7_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_comp_8_ls_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_comp_8_uns_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_display_ls_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_display_ls_overp_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_display_ts_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_display_ts_overp_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_display_uns_dtype internal static fixed bin(17,0) initial dcl 1-25 cobol_structure_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_fix_bin_1_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_flt_dec_4bit_bytealigned_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 1-25 cplx_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 1-25 entry_dtype internal static fixed bin(17,0) initial dcl 1-25 ext_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 1-125 ext_procedure_runtime_dtype internal static fixed bin(17,0) initial dcl 1-125 file_dtype internal static fixed bin(17,0) initial dcl 1-25 ft_char_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_complex_double_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_complex_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_double_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_external_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_hex_complex_double_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_hex_complex_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_hex_double_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_hex_real_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_integer_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_logical_dtype internal static fixed bin(17,0) initial dcl 1-96 ft_real_dtype internal static fixed bin(17,0) initial dcl 1-96 int_entry_runtime_dtype internal static fixed bin(17,0) initial dcl 1-125 label_constant_runtime_dtype internal static fixed bin(17,0) initial dcl 1-125 label_dtype internal static fixed bin(17,0) initial dcl 1-25 offset_dtype internal static fixed bin(17,0) initial dcl 1-25 pascal_boolean_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_char_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_entry_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_enumerated_type_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_enumerated_type_element_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_enumerated_type_instance_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_exportable_procedure_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_imported_procedure_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_integer_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_internal_procedure_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_label_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_parameter_procedure_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_procedure_type_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_real_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_record_file_type_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_record_type_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_set_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_string_type_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_text_file_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_typed_pointer_type_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_user_defined_type_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_user_defined_type_instance_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_value_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 1-132 pascal_variable_formal_parameter_dtype internal static fixed bin(17,0) initial dcl 1-132 picture_runtime_dtype internal static fixed bin(17,0) initial dcl 1-125 real_fix_bin_2_dtype internal static fixed bin(17,0) initial dcl 1-25 real_fix_dec_4bit_bytealigned_ls_dtype internal static fixed bin(17,0) initial dcl 1-25 real_fix_dec_4bit_bytealigned_uns_dtype internal static fixed bin(17,0) initial dcl 1-25 real_fix_dec_4bit_ts_dtype internal static fixed bin(17,0) initial dcl 1-25 real_fix_dec_4bit_uns_dtype internal static fixed bin(17,0) initial dcl 1-25 real_fix_dec_9bit_ls_dtype internal static fixed bin(17,0) initial dcl 1-25 real_fix_dec_9bit_ls_overp_dtype internal static fixed bin(17,0) initial dcl 1-25 real_fix_dec_9bit_ts_dtype internal static fixed bin(17,0) initial dcl 1-25 real_fix_dec_9bit_ts_overp_dtype internal static fixed bin(17,0) initial dcl 1-25 real_fix_dec_9bit_uns_dtype internal static fixed bin(17,0) initial dcl 1-25 real_flt_bin_1_dtype internal static fixed bin(17,0) initial dcl 1-25 real_flt_bin_2_dtype internal static fixed bin(17,0) initial dcl 1-25 real_flt_bin_generic_dtype internal static fixed bin(17,0) initial dcl 1-25 real_flt_dec_4bit_dtype internal static fixed bin(17,0) initial dcl 1-25 real_flt_dec_9bit_dtype internal static fixed bin(17,0) initial dcl 1-25 real_flt_dec_extended_dtype internal static fixed bin(17,0) initial dcl 1-25 real_flt_dec_generic_dtype internal static fixed bin(17,0) initial dcl 1-25 real_flt_hex_1_dtype internal static fixed bin(17,0) initial dcl 1-25 real_flt_hex_2_dtype internal static fixed bin(17,0) initial dcl 1-25 structure_dtype internal static fixed bin(17,0) initial dcl 1-25 varying_bit_dtype internal static fixed bin(17,0) initial dcl 1-25 varying_char_dtype internal static fixed bin(17,0) initial dcl 1-25 NAMES DECLARED BY EXPLICIT CONTEXT. arg_val 001406 constant entry internal dcl 393 ref 204 217 230 bad_arg 000733 constant label dcl 270 set ref 206 219 232 242 405 call_suberr 000131 constant label dcl 158 ref 170 cleanup_regions 001550 constant entry internal dcl 425 ref 198 276 fill_buffers 001035 constant entry external dcl 289 fill_buffers_arg_error 001061 constant label dcl 296 ref 301 350 351 metering_util_$define_regions 000113 constant entry external dcl 11 other_error 000736 constant label dcl 276 ref 195 210 223 236 reset 001335 constant entry external dcl 345 NAME DECLARED BY CONTEXT OR IMPLICATION. bin builtin function ref 412 412 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2122 2246 1624 2132 Length 2514 1624 124 231 275 52 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME metering_util_$define_regions 243 external procedure is an external procedure. on unit on line 192 64 on unit on unit on line 198 64 on unit arg_val internal procedure shares stack frame of external procedure metering_util_$define_regions cleanup_regions 64 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 next_unique metering_util_$define_regions 000011 unique_region_ptr metering_util_$define_regions STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME metering_util_$define_regions 000100 acode metering_util_$define_regions 000102 areap metering_util_$define_regions 000104 arg_list_ptr metering_util_$define_regions 000106 arg_numeric metering_util_$define_regions 000110 arg_ptr metering_util_$define_regions 000112 arg_size metering_util_$define_regions 000113 arg_size_1 metering_util_$define_regions 000114 arg_type metering_util_$define_regions 000115 begin_offset metering_util_$define_regions 000116 codep metering_util_$define_regions 000120 end_offset metering_util_$define_regions 000121 HR metering_util_$define_regions 000122 MIN metering_util_$define_regions 000123 min metering_util_$define_regions 000124 nargs metering_util_$define_regions 000126 prev_region_ptr metering_util_$define_regions 000130 region_ptr metering_util_$define_regions 000132 region_no metering_util_$define_regions 000134 r0_ptr metering_util_$define_regions 000136 SEC metering_util_$define_regions 000137 sec metering_util_$define_regions 000140 sub_arg_no metering_util_$define_regions 000142 time_val metering_util_$define_regions 000144 type metering_util_$define_regions 000146 unique_index_arg_ptr metering_util_$define_regions 000150 why metering_util_$define_regions 000212 av_code arg_val 000213 len arg_val 000214 ndims arg_val 000215 packed arg_val 000216 scale arg_val THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 mdfx1 enable_op shorten_stack ext_entry ext_entry_desc int_entry divide_fx3 op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. assign_ cu_$arg_count cu_$arg_list_ptr cu_$arg_ptr cu_$arg_ptr_rel decode_descriptor_ get_system_free_area_ ring0_get_$definition ring0_get_$segptr ring_zero_peek_ sub_err_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$area_too_small error_table_$bad_arg error_table_$bad_index error_table_$invalid_array_size error_table_$wrong_no_of_args sys_info$time_of_bootload LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000112 156 000120 157 000126 158 000131 161 000173 164 000174 165 000203 166 000222 168 000241 170 000242 177 000247 178 000253 179 000255 188 000256 189 000264 190 000266 192 000270 193 000304 194 000307 195 000312 198 000315 201 000337 202 000346 203 000350 204 000353 205 000357 206 000366 207 000370 208 000420 209 000422 210 000427 215 000430 216 000432 217 000435 218 000443 219 000451 220 000453 221 000513 222 000515 223 000522 228 000523 229 000525 230 000530 231 000536 232 000545 233 000547 234 000607 235 000611 236 000616 241 000617 242 000622 244 000625 245 000656 246 000660 247 000664 248 000670 249 000673 250 000703 252 000713 254 000722 256 000723 257 000724 258 000725 262 000726 263 000731 265 000732 270 000733 276 000736 280 000742 284 001026 289 001027 295 001053 296 001061 298 001064 301 001065 304 001071 305 001072 306 001075 307 001102 308 001103 309 001106 310 001107 311 001120 312 001123 318 001124 319 001126 320 001133 321 001135 323 001141 324 001146 326 001167 327 001171 328 001174 329 001207 330 001221 331 001223 332 001224 334 001225 335 001233 336 001246 337 001251 338 001263 339 001275 342 001327 345 001331 350 001345 351 001353 354 001357 360 001360 361 001363 362 001370 363 001400 364 001402 365 001404 368 001405 393 001406 404 001410 405 001434 407 001451 408 001471 412 001504 414 001540 415 001542 416 001544 420 001546 425 001547 429 001555 430 001561 431 001567 432 001571 433 001574 434 001602 436 001603 438 001607 ----------------------------------------------------------- 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