COMPILATION LISTING OF SEGMENT make_bound_object_map_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 07/16/86 0853.6 mst Wed 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 12 /****^ HISTORY COMMENTS: 13* 1) change(85-09-24,Elhard), approve(85-09-24,MCR7198), 14* audit(86-06-30,Weaver), install(86-07-16,MR12.0-1094): 15* Improved documentation and removed obsolete nonstandard object support. 16* END HISTORY COMMENTS */ 17 18 19 /* format: style3,^indnoniterdo */ 20 make_bound_object_map_: 21 proc (code); 22 23 /**********************************************************************/ 24 /* */ 25 /* Name: make_bound_object_map_ */ 26 /* Input: none */ 27 /* Function: builds the bound segment's object map, sets the */ 28 /* object map relp at the end of the object segment, */ 29 /* and calculates the bit count for the new bound */ 30 /* object segment. */ 31 /* Output: error_code */ 32 /* */ 33 /**********************************************************************/ 34 35 /* modified 75.06.20 by M. Weaver to create version 2 map */ 36 /* modified 77/08/16 by M. Weaver to add perprocess_static switch */ 37 38 declare maprel fixed bin (18); 39 declare max_length fixed bin (19); 40 declare code fixed bin (35); 41 declare error_table_$boundviol 42 fixed bin (35) external; 43 44 declare hcs_$get_max_length_seg 45 entry (ptr, fixed bin (19), fixed bin (35)); 46 declare (addrel, bin, bit, ptr, multiply, rel, size) 47 builtin; 48 49 declare (obj_mapp, seg_ptr) pointer; 50 51 declare 01 obj_map aligned like object_map based (obj_mapp); 52 1 1 /**** START OF: bindext.incl.pl1 * * * * * */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-06-14,Elhard), approve(86-06-14,MCR7198), 1 6* audit(86-06-30,Weaver): 1 7* Added declarations for bx_$caller and bx_$temp_bsegp. 1 8* END HISTORY COMMENTS */ 1 9 1 10 /* DECLARATION OF BINDER'S MAIN DATABASE */ 1 11 1 12 /* include file bindext.incl.pl1 */ 1 13 1 14 /* Modified Sept 1978 by David Spector for using "get_temp_segment_" in temp_mgr_ */ 1 15 /* Modified Dec 1978 by David Spector for making repatch table automatically extensible */ 1 16 /* Modified 01/15/81 W. Olin Sibert for new options */ 1 17 1 18 declare bx_$vers_name char (168) aligned external; /* ASCII version name, in ACC form */ 1 19 declare bx_$vers_number fixed bin external; /* integer part of version number */ 1 20 declare bx_$size fixed bin external; /* size of main data base, for resetting */ 1 21 declare bx_$snt_limit fixed bin external; /* preset limit for segname table */ 1 22 declare bx_$oddname_limit fixed bin external; /* preset limit for oddname table */ 1 23 declare bx_$stringmap_limit fixed bin external; /* preset limit for stringmap table */ 1 24 declare bx_$addname_limit fixed bin external; /* preset limit for addname table */ 1 25 declare bx_$area_begin fixed bin (18) external; /* beginning of main data base */ 1 26 declare bx_$ctp pointer external; /* pointer to component table */ 1 27 declare bx_$freep pointer external; /* pointer to beginning of free area */ 1 28 declare bx_$isp pointer external; /* pointer to first insym table */ 1 29 declare bx_$inpp pointer external; /* pointer to binder's input structure */ 1 30 declare bx_$bsegp pointer external; /* pointer to base of new object segment */ 1 31 declare bx_$temp pointer external; /* pointer to threaded list of temp segments */ 1 32 declare bx_$optp pointer external; /* pointer to options table */ 1 33 declare bx_$odnp pointer external; /* pointer to oddname table */ 1 34 declare bx_$first_rptp pointer external; /* pointer to first chunk of repatch table */ 1 35 declare bx_$last_rptp pointer external; /* pointer to current chunk of threaded repatch table */ 1 36 declare bx_$adnp pointer external; /* pointer to addname table */ 1 37 declare bx_$bindmap_def pointer external; /* pointer to new object's "bind_map" definition */ 1 38 declare bx_$bdefp pointer external; /* pointer to new object's definition section */ 1 39 declare bx_$bstatp pointer external; /* pointer to new object's static section */ 1 40 declare bx_$blnkp pointer external; /* pointer to new object's linkage section */ 1 41 declare bx_$bsymp pointer external; /* pointer to new object's symbol section */ 1 42 declare bx_$sntp pointer external; /* pointer to segname table */ 1 43 declare bx_$tdefp pointer external; /* pointer to temporary new definition section */ 1 44 declare bx_$tintp pointer external; /* pointer to temporary new internal static */ 1 45 declare bx_$tlinkp pointer external; /* pointer to temporary new linkage section */ 1 46 declare bx_$strmp pointer external; /* pointer to stringmap table */ 1 47 declare bx_$n_firstrefs fixed bin external; /* count of components with firstref traps */ 1 48 declare bx_$bound_segname char (32) aligned external; /* name of new bound object */ 1 49 declare bx_$fatal_error fixed bin external; /* 1 -> fatal error was detected */ 1 50 declare bx_$bseg_acinfop pointer external; /* new object's acinfop for "tssi_" */ 1 51 declare bx_$bseg_bitcount fixed bin (24) external; /* new object's bitcount */ 1 52 declare bx_$o_lng fixed bin (19) external; /* length of new bound object */ 1 53 declare bx_$t_lng fixed bin (18) external; /* length of new text section */ 1 54 declare bx_$d_lng fixed bin (18) external; /* length of new definition section */ 1 55 declare bx_$i_lng fixed bin external; /* length of new static section */ 1 56 declare bx_$l_lng fixed bin external; /* length of new linkage section */ 1 57 declare bx_$s_lng fixed bin (18) external; /* length of new symbol section */ 1 58 declare bx_$addname fixed bin external; /* 1 -> addname option specified */ 1 59 declare bx_$debug fixed bin external; /* 1 -> debug option was specified */ 1 60 declare bx_$brief fixed bin external; /* 1 -> brief option was specified */ 1 61 declare bx_$force_order fixed bin external; /* 1 -> -force_order specified on command line */ 1 62 declare bx_$has_sep_stat fixed bin external; /* 1 -> a comp has nonzero sep static */ 1 63 declare bx_$has_comb_stat fixed bin external; /* 1 -> a comp has nonzero combined static */ 1 64 declare bx_$bound_sep_stat fixed bin external; /* 1 -> bound segment has separate static */ 1 65 declare bx_$perprocess_static fixed bin external; /* 1 -> bound segment has perprocess static switch on */ 1 66 declare bx_$standard fixed bin external; /* 1 -> bound seg is in standard format */ 1 67 declare bx_$bproc fixed bin external; /* 1 -> at least one component is a procedure */ 1 68 declare bx_$textlng fixed bin (18) external; /* length of new pure text portion */ 1 69 declare bx_$curdeflng fixed bin (18) external; /* current length of new definition section */ 1 70 declare bx_$tintlng fixed bin external; /* current length of new internal static */ 1 71 declare bx_$maxlinklng fixed bin external; /* maximum size linkage section may attain */ 1 72 declare bx_$maxdeflng fixed bin (18) external; /* maximum size definition section may attain */ 1 73 declare bx_$tlinklng fixed bin external; /* current size of linkage section */ 1 74 declare bx_$ncomp fixed bin external; /* number of component objects to be bound */ 1 75 declare bx_$v_lng fixed bin external; /* length of version name string */ 1 76 declare bx_$n_lng fixed bin external; /* length of bound segment name string */ 1 77 declare bx_$nsymdefs fixed bin external; /* count of non-null symbol definitions */ 1 78 declare bx_$nsegdefs fixed bin external; /* count of non-null segment name definitions */ 1 79 declare bx_$temp_bsegp ptr external; /* pointer to the temporary bound seg in the process dir */ 1 80 declare bx_$caller char (32) aligned external; /* name of the caller of bind_ for error messages */ 1 81 1 82 /**** END OF: bindext.incl.pl1 * * * * * */ 53 54 55 /* */ 56 2 1 /* BEGIN INCLUDE FILE ... object_map.incl.pl1 */ 2 2 /* coded February 8, 1972 by Michael J. Spier */ 2 3 /* Last modified on 05/20/72 at 13:29:38 by R F Mabee. */ 2 4 /* Made to agree with Spier's document on 20 May 1972 by R F Mabee. */ 2 5 /* modified on 6 May 1972 by R F Mabee to add map_ptr at end of object map. */ 2 6 /* modified May, 1972 by M. Weaver */ 2 7 /* modified 5/75 by E. Wiatrowski and 6/75 by M. Weaver */ 2 8 /* modified 5/77 by M. Weaver to add perprocess_static bit */ 2 9 2 10 declare 1 object_map aligned based, /* Structure describing standard object map */ 2 11 2 12 2 decl_vers fixed bin, /* Version number of current structure format */ 2 13 2 identifier char (8) aligned, /* Must be the constant "obj_map" */ 2 14 2 text_offset bit (18) unaligned, /* Offset relative to base of object segment of base of text section */ 2 15 2 text_length bit (18) unaligned, /* Length in words of text section */ 2 16 2 definition_offset bit (18) unaligned, /* Offset relative to base of object seg of base of definition section */ 2 17 2 definition_length bit (18) unaligned, /* Length in words of definition section */ 2 18 2 linkage_offset bit (18) unaligned, /* Offset relative to base of object seg of base of linkage section */ 2 19 2 linkage_length bit (18) unaligned, /* Length in words of linkage section */ 2 20 2 static_offset bit (18) unaligned, /* Offset relative to base of obj seg of static section */ 2 21 2 static_length bit (18) unaligned, /* Length in words of static section */ 2 22 2 symbol_offset bit (18) unaligned, /* Offset relative to base of object seg of base of symbol section */ 2 23 2 symbol_length bit (18) unaligned, /* Length in words of symbol section */ 2 24 2 break_map_offset bit (18) unaligned, /* Offset relative to base of object seg of base of break map */ 2 25 2 break_map_length bit (18) unaligned, /* Length in words of break map */ 2 26 2 entry_bound bit (18) unaligned, /* Offset in text of last gate entry */ 2 27 2 text_link_offset bit (18) unaligned, /* Offset of first text-embedded link */ 2 28 2 format aligned, /* Word containing bit flags about object type */ 2 29 3 bound bit (1) unaligned, /* On if segment is bound */ 2 30 3 relocatable bit (1) unaligned, /* On if segment has relocation info in its first symbol block */ 2 31 3 procedure bit (1) unaligned, /* On if segment is an executable object program */ 2 32 3 standard bit (1) unaligned, /* On if segment is in standard format (more than just standard map) */ 2 33 3 separate_static bit(1) unaligned, /* On if static is a separate section from linkage */ 2 34 3 links_in_text bit (1) unaligned, /* On if there are text-embedded links */ 2 35 3 perprocess_static bit (1) unaligned, /* On if static is not to be per run unit */ 2 36 3 unused bit (29) unaligned; /* Reserved */ 2 37 2 38 declare map_ptr bit(18) aligned based; /* Last word of the segment. It points to the base of the object map. */ 2 39 2 40 declare object_map_version_2 fixed bin static init(2); 2 41 2 42 /* END INCLUDE FILE ... object_map.incl.pl1 */ 57 58 59 /* */ 60 61 62 seg_ptr = bx_$temp_bsegp; /* Get pointer to base of object segment. */ 63 64 call hcs_$get_max_length_seg (seg_ptr, max_length, code); 65 if code ^= 0 66 then return; /* Get maximum number of words object segment may grow. */ 67 /* get current object length */ 68 maprel = bin (rel (bx_$bsymp), 18) + bx_$s_lng; 69 if (maprel + size (object_map) + 1) > max_length 70 then do; 71 code = error_table_$boundviol; /* no room for map */ 72 return; 73 end; 74 75 obj_mapp = ptr (seg_ptr, maprel); /* make ptr to map */ 76 77 obj_map.decl_vers = object_map_version_2; 78 obj_map.identifier = "obj_map"; 79 obj_map.text_offset = "0"b; 80 obj_map.text_length = bit (bin (bx_$textlng, 18), 18); 81 obj_map.definition_offset = rel (bx_$bdefp); 82 obj_map.definition_length = bit (bin (bx_$d_lng, 18), 18); 83 obj_map.linkage_offset = rel (bx_$blnkp); 84 obj_map.linkage_length = bit (bin (bx_$l_lng, 18), 18); 85 obj_map.static_offset = rel (bx_$bstatp); 86 obj_map.static_length = bit (bin (bx_$i_lng, 18), 18); 87 obj_map.symbol_offset = rel (bx_$bsymp); 88 obj_map.symbol_length = bit (bin (bx_$s_lng, 18), 18); 89 obj_map.break_map_offset, obj_map.break_map_length = "0"b; 90 obj_map.format.bound, obj_map.format.standard = "1"b; 91 if bx_$bproc = 1 92 then obj_map.format.procedure = "1"b; 93 94 if bx_$bound_sep_stat = 1 95 then obj_map.format.separate_static = "1"b; 96 if bx_$perprocess_static = 1 97 then obj_map.format.perprocess_static = "1"b; 98 99 addrel (obj_mapp, size (object_map)) -> map_ptr = bit (bin (maprel, 18), 18); 100 /* fill in rel ptr to beg of obj map */ 101 bx_$bseg_bitcount = multiply ((maprel + size (object_map) + 1), 36, 24, 0); 102 103 code = 0; 104 return; 105 106 end make_bound_object_map_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/16/86 0846.6 make_bound_object_map_.pl1 >spec>install>1094>make_bound_object_map_.pl1 53 1 07/16/86 0841.5 bindext.incl.pl1 >spec>install>1094>bindext.incl.pl1 57 2 08/05/77 1022.5 object_map.incl.pl1 >ldd>include>object_map.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. addrel builtin function dcl 46 ref 99 bin builtin function dcl 46 ref 68 80 82 84 86 88 99 bit builtin function dcl 46 ref 80 82 84 86 88 99 bound 12 based bit(1) level 3 packed unaligned dcl 51 set ref 90* break_map_length 10(18) based bit(18) level 2 packed unaligned dcl 51 set ref 89* break_map_offset 10 based bit(18) level 2 packed unaligned dcl 51 set ref 89* bx_$bdefp 000014 external static pointer dcl 1-38 ref 81 bx_$blnkp 000020 external static pointer dcl 1-40 ref 83 bx_$bound_sep_stat 000036 external static fixed bin(17,0) dcl 1-64 ref 94 bx_$bproc 000042 external static fixed bin(17,0) dcl 1-67 ref 91 bx_$bseg_bitcount 000024 external static fixed bin(24,0) dcl 1-51 set ref 101* bx_$bstatp 000016 external static pointer dcl 1-39 ref 85 bx_$bsymp 000022 external static pointer dcl 1-41 ref 68 87 bx_$d_lng 000026 external static fixed bin(18,0) dcl 1-54 ref 82 bx_$i_lng 000030 external static fixed bin(17,0) dcl 1-55 ref 86 bx_$l_lng 000032 external static fixed bin(17,0) dcl 1-56 ref 84 bx_$perprocess_static 000040 external static fixed bin(17,0) dcl 1-65 ref 96 bx_$s_lng 000034 external static fixed bin(18,0) dcl 1-57 ref 68 88 bx_$temp_bsegp 000046 external static pointer dcl 1-79 ref 62 bx_$textlng 000044 external static fixed bin(18,0) dcl 1-68 ref 80 code parameter fixed bin(35,0) dcl 40 set ref 20 64* 65 71* 103* decl_vers based fixed bin(17,0) level 2 dcl 51 set ref 77* definition_length 4(18) based bit(18) level 2 packed unaligned dcl 51 set ref 82* definition_offset 4 based bit(18) level 2 packed unaligned dcl 51 set ref 81* error_table_$boundviol 000010 external static fixed bin(35,0) dcl 41 ref 71 format 12 based structure level 2 dcl 51 hcs_$get_max_length_seg 000012 constant entry external dcl 44 ref 64 identifier 1 based char(8) level 2 dcl 51 set ref 78* linkage_length 5(18) based bit(18) level 2 packed unaligned dcl 51 set ref 84* linkage_offset 5 based bit(18) level 2 packed unaligned dcl 51 set ref 83* map_ptr based bit(18) dcl 2-38 set ref 99* maprel 000100 automatic fixed bin(18,0) dcl 38 set ref 68* 69 75 99 101 max_length 000101 automatic fixed bin(19,0) dcl 39 set ref 64* 69 multiply builtin function dcl 46 ref 101 obj_map based structure level 1 dcl 51 obj_mapp 000102 automatic pointer dcl 49 set ref 75* 77 78 79 80 81 82 83 84 85 86 87 88 89 89 90 90 91 94 96 99 object_map based structure level 1 dcl 2-10 ref 69 99 101 object_map_version_2 constant fixed bin(17,0) initial dcl 2-40 ref 77 perprocess_static 12(06) based bit(1) level 3 packed unaligned dcl 51 set ref 96* procedure 12(02) based bit(1) level 3 packed unaligned dcl 51 set ref 91* ptr builtin function dcl 46 ref 75 rel builtin function dcl 46 ref 68 81 83 85 87 seg_ptr 000104 automatic pointer dcl 49 set ref 62* 64* 75 separate_static 12(04) based bit(1) level 3 packed unaligned dcl 51 set ref 94* size builtin function dcl 46 ref 69 99 101 standard 12(03) based bit(1) level 3 packed unaligned dcl 51 set ref 90* static_length 6(18) based bit(18) level 2 packed unaligned dcl 51 set ref 86* static_offset 6 based bit(18) level 2 packed unaligned dcl 51 set ref 85* symbol_length 7(18) based bit(18) level 2 packed unaligned dcl 51 set ref 88* symbol_offset 7 based bit(18) level 2 packed unaligned dcl 51 set ref 87* text_length 3(18) based bit(18) level 2 packed unaligned dcl 51 set ref 80* text_offset 3 based bit(18) level 2 packed unaligned dcl 51 set ref 79* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. bx_$addname external static fixed bin(17,0) dcl 1-58 bx_$addname_limit external static fixed bin(17,0) dcl 1-24 bx_$adnp external static pointer dcl 1-36 bx_$area_begin external static fixed bin(18,0) dcl 1-25 bx_$bindmap_def external static pointer dcl 1-37 bx_$bound_segname external static char(32) dcl 1-48 bx_$brief external static fixed bin(17,0) dcl 1-60 bx_$bseg_acinfop external static pointer dcl 1-50 bx_$bsegp external static pointer dcl 1-30 bx_$caller external static char(32) dcl 1-80 bx_$ctp external static pointer dcl 1-26 bx_$curdeflng external static fixed bin(18,0) dcl 1-69 bx_$debug external static fixed bin(17,0) dcl 1-59 bx_$fatal_error external static fixed bin(17,0) dcl 1-49 bx_$first_rptp external static pointer dcl 1-34 bx_$force_order external static fixed bin(17,0) dcl 1-61 bx_$freep external static pointer dcl 1-27 bx_$has_comb_stat external static fixed bin(17,0) dcl 1-63 bx_$has_sep_stat external static fixed bin(17,0) dcl 1-62 bx_$inpp external static pointer dcl 1-29 bx_$isp external static pointer dcl 1-28 bx_$last_rptp external static pointer dcl 1-35 bx_$maxdeflng external static fixed bin(18,0) dcl 1-72 bx_$maxlinklng external static fixed bin(17,0) dcl 1-71 bx_$n_firstrefs external static fixed bin(17,0) dcl 1-47 bx_$n_lng external static fixed bin(17,0) dcl 1-76 bx_$ncomp external static fixed bin(17,0) dcl 1-74 bx_$nsegdefs external static fixed bin(17,0) dcl 1-78 bx_$nsymdefs external static fixed bin(17,0) dcl 1-77 bx_$o_lng external static fixed bin(19,0) dcl 1-52 bx_$oddname_limit external static fixed bin(17,0) dcl 1-22 bx_$odnp external static pointer dcl 1-33 bx_$optp external static pointer dcl 1-32 bx_$size external static fixed bin(17,0) dcl 1-20 bx_$snt_limit external static fixed bin(17,0) dcl 1-21 bx_$sntp external static pointer dcl 1-42 bx_$standard external static fixed bin(17,0) dcl 1-66 bx_$stringmap_limit external static fixed bin(17,0) dcl 1-23 bx_$strmp external static pointer dcl 1-46 bx_$t_lng external static fixed bin(18,0) dcl 1-53 bx_$tdefp external static pointer dcl 1-43 bx_$temp external static pointer dcl 1-31 bx_$tintlng external static fixed bin(17,0) dcl 1-70 bx_$tintp external static pointer dcl 1-44 bx_$tlinklng external static fixed bin(17,0) dcl 1-73 bx_$tlinkp external static pointer dcl 1-45 bx_$v_lng external static fixed bin(17,0) dcl 1-75 bx_$vers_name external static char(168) dcl 1-18 bx_$vers_number external static fixed bin(17,0) dcl 1-19 NAME DECLARED BY EXPLICIT CONTEXT. make_bound_object_map_ 000007 constant entry external dcl 20 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 374 444 201 404 Length 672 201 50 211 172 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME make_bound_object_map_ 79 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME make_bound_object_map_ 000100 maprel make_bound_object_map_ 000101 max_length make_bound_object_map_ 000102 obj_mapp make_bound_object_map_ 000104 seg_ptr make_bound_object_map_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. hcs_$get_max_length_seg THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bx_$bdefp bx_$blnkp bx_$bound_sep_stat bx_$bproc bx_$bseg_bitcount bx_$bstatp bx_$bsymp bx_$d_lng bx_$i_lng bx_$l_lng bx_$perprocess_static bx_$s_lng bx_$temp_bsegp bx_$textlng error_table_$boundviol LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000004 62 000014 64 000017 65 000032 68 000035 69 000044 71 000050 72 000052 75 000053 77 000057 78 000061 79 000064 80 000066 81 000073 82 000077 83 000104 84 000110 85 000115 86 000121 87 000126 88 000132 89 000137 90 000143 91 000147 94 000154 96 000161 99 000166 101 000174 103 000177 104 000200 ----------------------------------------------------------- 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