COMPILATION LISTING OF SEGMENT gm_write_boot_program_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 07/16/87 1336.2 mst Thu Options: optimize map 1 /****^ ****************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 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(87-01-19,GDixon), approve(87-04-16,MCR7614), 14* audit(87-05-21,Farley), install(87-07-15,MR12.1-1040): 15* Add support for storing boot program as first segment of MST image stored 16* in a file. 17* END HISTORY COMMENTS */ 18 19 20 gm_write_boot_program_: 21 procedure (P_seg_ptr, P_bc, P_seg_name, P_iocbp, P_file, P_object_error, P_code); 22 23 /* format: off */ 24 25 /* * GM_WRITE_BOOT_PROGRAM_ 26* * 27* * This procedure writes the supplied program to the bootload_program area of the label. 28* * Of course, this only works if a genuine tape is being written. This is taken care of 29* * by generate_mst itself. 30* * 31* * Cribbed from gm_write_first_seg_, 31 July, 1981, W. Olin Sibert 32* */ 33 34 dcl P_seg_ptr pointer parameter; /* pointer to segment */ 35 dcl P_bc fixed bin (24) parameter; /* length of segment */ 36 dcl P_seg_name char (*) parameter; /* Name of program (for label audit trail) */ 37 dcl P_iocbp pointer parameter; /* IOCB for tape writing */ 38 dcl P_file bit(1) aligned parameter; /* -file given */ 39 dcl P_object_error bit (1) aligned parameter; /* Error in object segment flag */ 40 dcl P_code fixed bin (35) parameter; /* error code */ 41 42 dcl code fixed bin (35); 43 dcl iocbp pointer; 44 45 dcl 1 bpi aligned like boot_program_info automatic; 46 dcl 1 control_word aligned, 47 2 type fixed bin (17) unaligned, 48 2 count fixed bin (18) uns unal; 49 dcl (name_len, seg_len) fixed bin (21); 50 dcl 1 oi aligned like object_info automatic; 51 52 dcl iox_$close entry (pointer, fixed bin (35)); 53 dcl iox_$control entry (pointer, char (*), pointer, fixed bin (35)); 54 dcl iox_$put_chars entry (ptr, ptr, fixed bin(21), fixed bin(35)); 55 dcl iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)); 56 dcl object_info_$brief entry (ptr, fixed bin (24), ptr, fixed bin (35)); 57 58 dcl (addr, divide, length, size) builtin; 59 60 dcl BOOTLOAD_PROGRAM fixed bin internal static options (constant) init (-1); 61 /* */ 62 63 iocbp = P_iocbp; 64 65 oi.version_number = object_info_version_2; 66 call object_info_$brief (P_seg_ptr, P_bc, addr (oi), code); 67 /* take text portion only */ 68 if code ^= 0 then do; 69 P_object_error = "1"b; /* so main routine will know */ 70 goto FINISHED; 71 end; 72 else P_object_error = "0"b; 73 74 bpi.version = BOOT_PROGRAM_INFO_VERSION_1; 75 bpi.boot_program_ptr = oi.textp; 76 bpi.boot_program_text_length = oi.tlng; 77 bpi.boot_program_name = P_seg_name; 78 79 if P_file then do; 80 control_word.type = BOOTLOAD_PROGRAM; 81 name_len = divide(length(bpi.boot_program_name), CHARS_PER_WORD, 18, 0); 82 seg_len = bpi.boot_program_text_length; 83 control_word.count = name_len + seg_len; 84 call iox_$put_chars (iocbp, addr(control_word), 85 size(control_word) * CHARS_PER_WORD, code); 86 if code ^= 0 then goto FINISHED; 87 call iox_$put_chars (iocbp, addr(bpi.boot_program_name), 88 name_len * CHARS_PER_WORD, code); 89 if code ^= 0 then goto FINISHED; 90 call iox_$put_chars (iocbp, bpi.boot_program_ptr, 91 seg_len * CHARS_PER_WORD, code); 92 if code ^= 0 then goto FINISHED; 93 end; 94 else do; 95 call iox_$close (iocbp, code); /* First, close it, so it can be opened again with the */ 96 if code ^= 0 then goto FINISHED; /* boot_program in the label */ 97 98 call iox_$control (iocbp, "boot_program", addr (bpi), code); 99 if code ^= 0 then goto FINISHED; /* Put out the boot program */ 100 101 call iox_$open (iocbp, Stream_output, "0"b, code); /* Now, open it again */ 102 if code ^= 0 then goto FINISHED; 103 end; 104 105 FINISHED: P_code = code; 106 return; 107 108 /* Begin include file ..... iox_modes.incl.pl1 */ 1 2 1 3 /* Written by C. D. Tavares, 03/17/75 */ 1 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 1 5 1 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 1 7 ("stream_input", "stream_output", "stream_input_output", 1 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 1 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 1 10 "direct_input", "direct_output", "direct_update"); 1 11 1 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 1 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 1 14 1 15 dcl (Stream_input initial (1), 1 16 Stream_output initial (2), 1 17 Stream_input_output initial (3), 1 18 Sequential_input initial (4), 1 19 Sequential_output initial (5), 1 20 Sequential_input_output initial (6), 1 21 Sequential_update initial (7), 1 22 Keyed_sequential_input initial (8), 1 23 Keyed_sequential_output initial (9), 1 24 Keyed_sequential_update initial (10), 1 25 Direct_input initial (11), 1 26 Direct_output initial (12), 1 27 Direct_update initial (13)) fixed bin int static options (constant); 1 28 1 29 /* End include file ..... iox_modes.incl.pl1 */ 108 109 /* BEGIN INCLUDE FILE ... object_info.incl.pl1 2 2*coded February 8, 1972 by Michael J. Spier */ 2 3 /* modified May 26, 1972 by M. Weaver */ 2 4 /* modified 15 April, 1975 by M. Weaver */ 2 5 2 6 declare 1 object_info aligned based, /* structure containing object info based, returned by object_info_ */ 2 7 2 version_number fixed bin, /* version number of current structure format (=2) */ 2 8 2 textp pointer, /* pointer to beginning of text section */ 2 9 2 defp pointer, /* pointer to beginning of definition section */ 2 10 2 linkp pointer, /* pointer to beginning of linkage section */ 2 11 2 statp pointer, /* pointer to beginning of static section */ 2 12 2 symbp pointer, /* pointer to beginning of symbol section */ 2 13 2 bmapp pointer, /* pointer to beginning of break map (may be null) */ 2 14 2 tlng fixed bin, /* length in words of text section */ 2 15 2 dlng fixed bin, /* length in words of definition section */ 2 16 2 llng fixed bin, /* length in words of linkage section */ 2 17 2 ilng fixed bin, /* length in words of static section */ 2 18 2 slng fixed bin, /* length in words of symbol section */ 2 19 2 blng fixed bin, /* length in words of break map */ 2 20 2 format, /* word containing bit flags about object type */ 2 21 3 old_format bit(1) unaligned, /* on if segment isn't in new format, i.e. has old style object map */ 2 22 3 bound bit(1) unaligned, /* on if segment is bound */ 2 23 3 relocatable bit(1) unaligned, /* on if seg has relocation info in its first symbol block */ 2 24 3 procedure bit(1) unaligned, /* on if segment is an executable object program */ 2 25 3 standard bit(1) unaligned, /* on if seg is in standard format (more than just standard map) */ 2 26 3 gate bit(1) unaligned, /* on if segment is a gate */ 2 27 3 separate_static bit(1) unaligned, /* on if static not in linkage */ 2 28 3 links_in_text bit(1) unaligned, /* on if there are threaded links in text */ 2 29 3 perprocess_static bit (1) unaligned, /* on if static is not to be per run unit */ 2 30 3 pad bit(27) unaligned, 2 31 2 entry_bound fixed bin, /* entry bound if segment is a gate */ 2 32 2 textlinkp pointer, /* ptr to first link in text */ 2 33 2 34 /* LIMIT OF BRIEF STRUCTURE */ 2 35 2 36 2 compiler char(8) aligned, /* name of processor which generated segment */ 2 37 2 compile_time fixed bin(71), /* clock reading of date/time object was generated */ 2 38 2 userid char(32) aligned, /* standard Multics id of creator of object segment */ 2 39 2 cvers aligned, /* generator version name in printable char string form */ 2 40 3 offset bit(18) unaligned, /* offset of name in words relative to base of symbol section */ 2 41 3 length bit(18) unaligned, /* length of name in characters */ 2 42 2 comment aligned, /* printable comment concerning generator or generation of segment */ 2 43 3 offset bit(18) unaligned, /* offset of comment in words relative to base of symbol section */ 2 44 3 length bit(18) unaligned, /* length of comment in characters */ 2 45 2 source_map fixed bin, /* offset, relative to base of symbol section, of source map structure */ 2 46 2 47 /* LIMIT OF DISPLAY STRUCTURE */ 2 48 2 49 2 rel_text pointer, /* pointer to text section relocation info */ 2 50 2 rel_def pointer, /* pointer to definition section relocation info */ 2 51 2 rel_link pointer, /* pointer to linkage section relocation info */ 2 52 2 rel_static pointer, /* pointer to static section relocation info */ 2 53 2 rel_symbol pointer, /* pointer to symbol section relocation info */ 2 54 2 text_boundary fixed bin, /* specifies mod of text section base boundary */ 2 55 2 static_boundary fixed bin, /* specifies mod of internal static base boundary */ 2 56 /* currently not used by system */ 2 57 2 default_truncate fixed bin, /* offset rel to symbp for binder to automatically trunc. symb sect. */ 2 58 2 optional_truncate fixed bin; /* offset rel to symbp for binder to optionally trunc. symb sect. */ 2 59 2 60 declare object_info_version_2 fixed bin int static init(2); 2 61 2 62 /* END INCLUDE FILE ... object_info.incl.pl1 */ 109 110 /* BEGIN INCLUDE FILE ... system_constants.incl.pl1 */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-11-12,GWMay), approve(86-11-12,MCR7445), audit(86-11-19,GDixon), 3 5* install(86-11-21,MR12.0-1223): 3 6* created. 3 7* END HISTORY COMMENTS */ 3 8 3 9 /* format: off */ 3 10 3 11 /* ************************************************************************ */ 3 12 /* */ 3 13 /* Function: Provides constants for commonly used Multics system values. */ 3 14 /* */ 3 15 /* Usage: These values are available for use in place of "magic" numbers */ 3 16 /* (unexplained numbers) in programming applications. */ 3 17 /* */ 3 18 /* Definitions: */ 3 19 /* */ 3 20 /* PER bit character/byte word page segment */ 3 21 /* */ 3 22 /* bits 1 9 36 36864 9400320 */ 3 23 /* characters/bytes 1 4 4096 1044480 */ 3 24 /* words 1 1024 261120 */ 3 25 /* pages 1 255 */ 3 26 /* segments 1 */ 3 27 /* */ 3 28 /* The base values for a bit, char, word and page are determined by the */ 3 29 /* Multics hardware implementation. The other values are calculated from */ 3 30 /* their relation to one another as shown in the matrix above. */ 3 31 /* */ 3 32 /* BITS_PER_CHAR = 9 (defined by the hardware) */ 3 33 /* BITS_PER_WORD = BITS_PER_CHAR * CHARS_PER_WORD */ 3 34 /* = 9 * 4 */ 3 35 /* = 36 */ 3 36 /* BITS_PER_PAGE = BITS_PER_CHAR * CHARS_PER_WORD * CHARS_PER_PAGE */ 3 37 /* = 9 * 4 * 1024 */ 3 38 /* = 36864 */ 3 39 /* BITS_PER_SEGMENT = BITS_PER_CHAR * CHARS_PER_WORD * CHARS_PER_PAGE * */ 3 40 /* PAGES_PER_SEGMENT */ 3 41 /* = 9 * 4 * 1024 * 255 */ 3 42 /* = 9400320 */ 3 43 /* */ 3 44 /* CHARS_PER_WORD = 4 (defined by the hardware) */ 3 45 /* CHARS_PER_PAGE = CHARS_PER_WORD * WORDS_PER_PAGE */ 3 46 /* = 4 * 1024 */ 3 47 /* = 4096 */ 3 48 /* CHARS_PER_SEGMENT = CHARS_PER_WORD * WORDS_PER_PAGE * PAGES_PER_SEGMENT */ 3 49 /* = 4 * 1024 * 255 */ 3 50 /* = 1044480 */ 3 51 /* */ 3 52 /* WORDS_PER_PAGE = 1024 (defined by the hardware) */ 3 53 /* WORDS_PER_SEGMENT = WORDS_PER_PAGE * PAGES_PER_SEGMENT */ 3 54 /* = 1024 * 255 */ 3 55 /* = 261120 */ 3 56 /* */ 3 57 /* PAGES_PER_SEGMENT = 255 (defined by system standard) */ 3 58 /* */ 3 59 /* ************************************************************************ */ 3 60 3 61 declare BITS_PER_CHAR fixed bin (4) internal static 3 62 options (constant) initial (9); 3 63 3 64 declare BITS_PER_WORD fixed bin (6) internal static 3 65 options (constant) initial (36); 3 66 3 67 declare BITS_PER_PAGE fixed bin (16) internal static 3 68 options (constant) initial (36864); 3 69 3 70 declare BITS_PER_SEGMENT fixed bin (24) internal static 3 71 options (constant) initial (9400320); 3 72 3 73 declare CHARS_PER_WORD fixed bin (3) internal static 3 74 options (constant) initial (4); 3 75 3 76 declare CHARS_PER_PAGE fixed bin (13) internal static 3 77 options (constant) initial (4096); 3 78 3 79 declare CHARS_PER_SEGMENT fixed bin (21) internal static 3 80 options (constant) initial (1044480); 3 81 3 82 /* Note: WORDS_PER_PAGE should be equal to sys_info$max_page_size */ 3 83 3 84 declare WORDS_PER_PAGE fixed bin (11) internal static 3 85 options (constant) initial (1024); 3 86 3 87 /* Note: WORDS_PER_SEGMENT should be equal to sys_info$max_seg_size */ 3 88 3 89 declare WORDS_PER_SEGMENT fixed bin (21) internal static 3 90 options (constant) initial (261120); 3 91 3 92 declare PAGES_PER_SEGMENT fixed bin (8) internal static 3 93 options (constant) initial (255); 3 94 3 95 /* END INCLUDE FILE ... system_constants.incl.pl1 */ 3 96 110 111 /* BEGIN INCLUDE FILE tape_mult_boot_info.incl.pl1 */ 4 2 /* Written by J. A. Bush 6/27/81 */ 4 3 4 4 dcl 1 boot_program_info aligned, 4 5 2 version fixed bin, /* Currently 1 */ 4 6 2 boot_program_ptr pointer, /* Pointer to text section of boot program */ 4 7 2 boot_program_text_length fixed bin (21), /* Length of the text section in words */ 4 8 2 boot_program_name char (32) unaligned; /* Name for recording in label */ 4 9 4 10 dcl BOOT_PROGRAM_INFO_VERSION_1 fixed bin internal static options 4 11 (constant) init (1); 4 12 4 13 /* END INCLUDE FILE tape_mult_boot_info.incl.pl1 */ 111 112 113 end gm_write_boot_program_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/15/87 1602.4 gm_write_boot_program_.pl1 >special_ldd>install>MR12.1-1040>gm_write_boot_program_.pl1 108 1 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 109 2 08/05/77 1022.5 object_info.incl.pl1 >ldd>include>object_info.incl.pl1 110 3 11/24/86 1243.9 system_constants.incl.pl1 >ldd>include>system_constants.incl.pl1 111 4 03/27/82 0429.7 tape_mult_boot_info.incl.pl1 >ldd>include>tape_mult_boot_info.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. BOOTLOAD_PROGRAM constant fixed bin(17,0) initial dcl 60 ref 80 BOOT_PROGRAM_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 4-10 ref 74 CHARS_PER_WORD constant fixed bin(3,0) initial dcl 3-73 ref 81 84 87 90 P_bc parameter fixed bin(24,0) dcl 35 set ref 20 66* P_code parameter fixed bin(35,0) dcl 40 set ref 20 105* P_file parameter bit(1) dcl 38 ref 20 79 P_iocbp parameter pointer dcl 37 ref 20 63 P_object_error parameter bit(1) dcl 39 set ref 20 69* 72* P_seg_name parameter char unaligned dcl 36 ref 20 77 P_seg_ptr parameter pointer dcl 34 set ref 20 66* Stream_output 000004 constant fixed bin(17,0) initial dcl 1-15 set ref 101* addr builtin function dcl 58 ref 66 66 84 84 87 87 98 98 boot_program_info 000212 automatic structure level 1 dcl 4-4 boot_program_name 5 000104 automatic char(32) level 2 packed unaligned dcl 45 set ref 77* 81 87 87 boot_program_ptr 2 000104 automatic pointer level 2 dcl 45 set ref 75* 90* boot_program_text_length 4 000104 automatic fixed bin(21,0) level 2 dcl 45 set ref 76* 82 bpi 000104 automatic structure level 1 dcl 45 set ref 98 98 code 000100 automatic fixed bin(35,0) dcl 42 set ref 66* 68 84* 86 87* 89 90* 92 95* 96 98* 99 101* 102 105 control_word 000121 automatic structure level 1 dcl 46 set ref 84 84 84 count 0(18) 000121 automatic fixed bin(18,0) level 2 packed unsigned unaligned dcl 46 set ref 83* divide builtin function dcl 58 ref 81 iocbp 000102 automatic pointer dcl 43 set ref 63* 84* 87* 90* 95* 98* 101* iox_$close 000010 constant entry external dcl 52 ref 95 iox_$control 000012 constant entry external dcl 53 ref 98 iox_$open 000016 constant entry external dcl 55 ref 101 iox_$put_chars 000014 constant entry external dcl 54 ref 84 87 90 length builtin function dcl 58 ref 81 name_len 000122 automatic fixed bin(21,0) dcl 49 set ref 81* 83 87 object_info based structure level 1 dcl 2-6 object_info_$brief 000020 constant entry external dcl 56 ref 66 object_info_version_2 constant fixed bin(17,0) initial dcl 2-60 ref 65 oi 000124 automatic structure level 1 dcl 50 set ref 66 66 seg_len 000123 automatic fixed bin(21,0) dcl 49 set ref 82* 83 90 size builtin function dcl 58 ref 84 textp 2 000124 automatic pointer level 2 dcl 50 set ref 75 tlng 16 000124 automatic fixed bin(17,0) level 2 dcl 50 set ref 76 type 000121 automatic fixed bin(17,0) level 2 packed unaligned dcl 46 set ref 80* version 000104 automatic fixed bin(17,0) level 2 dcl 45 set ref 74* version_number 000124 automatic fixed bin(17,0) level 2 dcl 50 set ref 65* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BITS_PER_CHAR internal static fixed bin(4,0) initial dcl 3-61 BITS_PER_PAGE internal static fixed bin(16,0) initial dcl 3-67 BITS_PER_SEGMENT internal static fixed bin(24,0) initial dcl 3-70 BITS_PER_WORD internal static fixed bin(6,0) initial dcl 3-64 CHARS_PER_PAGE internal static fixed bin(13,0) initial dcl 3-76 CHARS_PER_SEGMENT internal static fixed bin(21,0) initial dcl 3-79 Direct_input internal static fixed bin(17,0) initial dcl 1-15 Direct_output internal static fixed bin(17,0) initial dcl 1-15 Direct_update internal static fixed bin(17,0) initial dcl 1-15 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 1-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 1-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 1-15 PAGES_PER_SEGMENT internal static fixed bin(8,0) initial dcl 3-92 Sequential_input internal static fixed bin(17,0) initial dcl 1-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 1-15 Sequential_output internal static fixed bin(17,0) initial dcl 1-15 Sequential_update internal static fixed bin(17,0) initial dcl 1-15 Stream_input internal static fixed bin(17,0) initial dcl 1-15 Stream_input_output internal static fixed bin(17,0) initial dcl 1-15 WORDS_PER_PAGE internal static fixed bin(11,0) initial dcl 3-84 WORDS_PER_SEGMENT internal static fixed bin(21,0) initial dcl 3-89 iox_modes internal static char(24) initial array dcl 1-6 short_iox_modes internal static char(4) initial array dcl 1-12 NAMES DECLARED BY EXPLICIT CONTEXT. FINISHED 000301 constant label dcl 105 set ref 70 86 89 92 96 99 102 gm_write_boot_program_ 000020 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 416 304 404 Length 666 304 22 234 67 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME gm_write_boot_program_ 184 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME gm_write_boot_program_ 000100 code gm_write_boot_program_ 000102 iocbp gm_write_boot_program_ 000104 bpi gm_write_boot_program_ 000121 control_word gm_write_boot_program_ 000122 name_len gm_write_boot_program_ 000123 seg_len gm_write_boot_program_ 000124 oi gm_write_boot_program_ 000212 boot_program_info gm_write_boot_program_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. iox_$close iox_$control iox_$open iox_$put_chars object_info_$brief NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000012 63 000033 65 000037 66 000041 68 000057 69 000061 70 000064 72 000065 74 000067 75 000071 76 000073 77 000075 79 000102 80 000105 81 000107 82 000112 83 000114 84 000116 86 000137 87 000141 89 000163 90 000165 92 000205 93 000207 95 000210 96 000221 98 000223 99 000256 101 000260 102 000277 105 000301 106 000303 ----------------------------------------------------------- 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