COMPILATION LISTING OF SEGMENT print_source_line_ Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1713.8 mst Mon Options: optimize map 1 /* ****************************************************** 2* * * 3* * * 4* * Copyright (c) 1972 by Massachusetts Institute of * 5* * Technology and Honeywell Information Systems, Inc. * 6* * * 7* * * 8* ****************************************************** */ 9 10 print_source_line_: 11 proc (strp, stream); 12 13 /* PRINT_SOURCE_LINE_ - attempt to print out the source line for a given location. 14* 15* This is a subroutine of trace_stack_. 16* Its input data has been set up by interpret_ptr_. 17* 18* THVV */ 19 /* Modified 7/76 by S.E. Barr to delete printing of version I operator names and to recognize "PL/I" compiler name */ 20 /* Changed to use interpret_link_info.incl.pl1 05/12/83 S. Herbst */ 21 22 dcl strp ptr, 23 stream char (32) aligned; 24 25 dcl sp ptr, /* ptr to stack frame */ 26 fptr ptr, /* ptr to faulting instruction */ 27 btc fixed bin (24), 28 cip ptr, 29 callp ptr, 30 entry_ptr ptr, 31 link_ptr ptr, 32 lang char (8) aligned, 33 op_seg_name char (32) aligned, 34 segno fixed bin (18), 35 component char (32) aligned, 36 sn char (32) aligned, 37 i fixed bin, 38 insx fixed bin init (1), 39 working_dir_name char (168) aligned, /* name of current wdir, for look for source */ 40 pl1_operator_name char (32) aligned, /* if faulting instr was pl1 op, what? */ 41 line_no char (16), /* line number of source (from symbol table) */ 42 dirname char (168), 43 ename char (32), 44 ec fixed bin (35), /* system errcode */ 45 disassembled_instr char (72) var; /* faulting instruction */ 46 47 dcl source_ptr ptr; 48 dcl source_seg char (1000000) aligned based (source_ptr); 49 dcl (line_offset, line_length) fixed bin (21); 50 51 dcl component_info_$offset entry (ptr, fixed bin, ptr, fixed bin (35)), 52 is_condition_frame_ entry (ptr) returns (bit (1)), 53 find_condition_info_ entry (ptr, ptr, fixed bin (35)), 54 stack_frame_exit_ entry (ptr, ptr, ptr, bit (1), ptr, char (32) aligned, ptr), 55 find_operator_name_ entry (char (*) aligned, ptr, char (32) aligned), 56 get_link_ptr_ entry (ptr, ptr, ptr), 57 get_entry_name_ entry (ptr, char (*) aligned, fixed bin (18), char (8) aligned, fixed bin (35)), 58 interpret_link_ entry (ptr, ptr, fixed bin (35)), 59 disassemble entry (ptr, char (*) var, fixed bin), 60 find_source_line_ entry (ptr, char (*), char (*), char (*), fixed bin (21), fixed bin (21), fixed bin (35)), 61 hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, fixed bin (35)), 62 hcs_$terminate_noname entry (ptr, fixed bin (35)), 63 hcs_$fs_get_brackets entry (ptr, fixed bin (5), (3) fixed bin (6), fixed bin (35)), 64 hcs_$status_mins entry (ptr, fixed bin (2), fixed bin (24), fixed bin (35)), 65 hcs_$high_low_seg_count entry (fixed bin, fixed bin), 66 hcs_$fs_get_path_name entry (ptr, char (*) aligned, fixed bin, char (*) aligned, fixed bin (35)), 67 ioa_$ioa_stream entry options (variable); 68 69 dcl (addr, ptr, fixed, null, substr, binary, baseno, baseptr, bit, rel) builtin; 70 71 dcl 1 situation aligned, 72 2 bad_frame bit (1) unal, 73 2 exists_ppr bit (1) unal, 74 2 ppr_is_owner bit (1) unal, 75 2 ppr_is_ops bit (1) unal, 76 2 caller_is_owner bit (1) unal, 77 2 entry_ptr_invalid bit (1) unal, 78 2 ret_ptr_is_ops bit (1) unal, 79 2 pad bit (29) unal; 80 81 dcl 1 condinfo aligned, /* return struc from find_condition_info_ */ 82 2 mcptr ptr init (null), 83 2 version fixed bin, 84 2 condition_name char (32) var, 85 2 infoptr ptr init (null), 86 2 wcptr ptr init (null), 87 2 loc_ptr ptr init (null), 88 2 flags, 89 3 crawlout bit (1) unal init ("0"b), 90 3 pad1 bit (35) unal, 91 2 user_loc_ptr ptr init (null), 92 2 pad (4) bit (36); 93 1 1 /* BEGIN INCLUDE FILE ... interpret_ptr_struc.incl.pl1 */ 1 2 1 3 dcl 1 struc based (strp) aligned, /* This useful structure is in trace_stack pgms */ 1 4 2 comment char (64), /* name of boundseg, or thing pointed to, or .. */ 1 5 2 segment char (32), /* name of segment, or segment number with # */ 1 6 2 entryn char (33), /* entry name, preceded by $, or blank */ 1 7 2 offset char (6), /* offset in segment, or blank */ 1 8 2 opname char (32), /* may be pl1 operator name */ 1 9 2 ring char (1) unal, /* ring number of ptr */ 1 10 2 std_flag bit (1) unal, /* TRUE if std object. */ 1 11 2 xpad bit (26) unal, 1 12 2 bitoff char (4), /* bit offset */ 1 13 2 modifier char (8), /* ptr modifier, or special code like "noaccess" */ 1 14 2 symbolp ptr, /* ptr to symbol section */ 1 15 2 instruction_counter fixed bin, /* binary instruction counter */ 1 16 2 sourcemap fixed bin, /* source map offset in symbol section */ 1 17 2 compiler char (8), /* name of compiler */ 1 18 2 text_ptr ptr, /* ptr to segment text */ 1 19 2 stack_ptr ptr; /* ptr to stack frame */ 1 20 1 21 dcl 1 strbuf aligned like struc; /* If referenced, will make storage for struc */ 1 22 1 23 /* END INCLUDE FILE ... interpret_ptr_struc.incl.pl1 */ 94 2 1 /* BEGIN INCLUDE FILE interpret_link_info.incl.pl1 */ 2 2 2 3 /* Written 05/12/83 by S. Herbst */ 2 4 2 5 dcl 1 interpret_link_info aligned based (interpret_link_info_ptr), 2 6 2 version char (8), 2 7 2 segment_name char (32) aligned, 2 8 2 entry_point_name char (260) aligned, 2 9 2 expression char (8) aligned, 2 10 2 modifier char (4) aligned, 2 11 2 trap char (48) aligned; 2 12 2 13 dcl INTERPRET_LINK_INFO_VERSION_1 char (8) int static options (constant) init ("ILI 1.0"); 2 14 2 15 dcl interpret_link_info_ptr ptr; 2 16 2 17 /* END INCLUDE FILE interpret_link_info.incl.pl1 */ 95 96 97 dcl 1 auto_interpret_link_info aligned like interpret_link_info; 98 3 1 /* BEGIN INCLUDE SEGMENT ... component_info.incl.pl1 M. Weaver 4/26/72 */ 3 2 3 3 declare 1 ci aligned, 3 4 2 dcl_version fixed bin, /* version number of this structure */ 3 5 2 name char(32) aligned, /* objectname of component segment */ 3 6 2 text_start pointer, /* ptr to component's section of text */ 3 7 2 stat_start pointer, /* pointer to component's section of internal static */ 3 8 2 symb_start pointer, /* pointer to component's first symbol block */ 3 9 2 defblock_ptr pointer, /* ptr to component's definition block */ 3 10 2 text_lng fixed bin, /* length of text section */ 3 11 2 stat_lng fixed bin, /* length of internal static */ 3 12 2 symb_lng fixed bin, /* length of symbol section */ 3 13 2 n_blocks fixed bin, /* number of symbol blocks in component's symbol section */ 3 14 2 standard bit(1) aligned, /* indicates whether component is in standard (new) format */ 3 15 2 compiler char(8) aligned, /* name of component's compiler */ 3 16 2 compile_time fixed bin(71), /* time component was compiled */ 3 17 2 userid char(32) aligned, /* id of creator of component */ 3 18 2 cvers aligned, /* version of component's compiler in printable form */ 3 19 3 offset bit(18) unaligned, /* offset in words relative to symb_start */ 3 20 3 length bit(18) unaligned, /* length of name in characters */ 3 21 2 comment aligned, /* component's comment */ 3 22 3 offset bit(18) unaligned, /* offset in words relative to symb_start */ 3 23 3 length bit(18) unaligned, /* length of comment in characters */ 3 24 2 source_map fixed bin; /* offset, rel to beg of symbol block, of component's source map */ 3 25 3 26 /* END INCLUDE SEGMENT ... component_info.incl.pl1 */ 99 100 101 /* ======================================================= */ 102 103 sp = struc.stack_ptr; /* Copy stack ptr from structure */ 104 fptr = struc.text_ptr; /* ... instruction ptr too. */ 105 if is_condition_frame_ (sp) then do; /* may need machine cond. */ 106 cip = addr (condinfo); 107 call find_condition_info_ (sp, cip, ec); 108 end; 109 call stack_frame_exit_ (sp, condinfo.mcptr, condinfo.wcptr, condinfo.crawlout, callp, op_seg_name, 110 addr (situation)); 111 if situation.bad_frame then return; 112 113 call find_source_line_ (strp, line_no, dirname, ename, line_offset, line_length, ec); 114 if line_no = "" then do; 115 call ioa_$ioa_stream (stream, " Cannot get line number in ^a", struc.segment); 116 end; 117 else do; 118 call hcs_$initiate (dirname, ename, "", 0, 1, source_ptr, ec); 119 if source_ptr = null () 120 then call ioa_$ioa_stream (stream, " ^a ^a: source not found", ename, line_no); 121 else call ioa_$ioa_stream (stream, " ^a ^a: ^a", ename, line_no, 122 substr (source_seg, 1 + line_offset, line_length)); 123 call hcs_$terminate_noname (source_ptr, ec); 124 end; 125 126 if fptr = null then return; /* can't print anything if you won't tell me where */ 127 pl1_operator_name = ""; 128 if op_seg_name = "" 129 then if struc.compiler = "v2pl1" | struc.compiler = "PL/I" | struc.compiler = "alm" 130 then op_seg_name = "pl1_operators_"; 131 else if struc.compiler = "pl1" | struc.compiler = "" then op_seg_name = "pl1_operators"; 132 133 if ^get_access (callp, btc) 134 then pl1_operator_name = "not accessible"; 135 else call find_operator_name_ (op_seg_name, callp, pl1_operator_name); 136 137 if pl1_operator_name = "alm_call" | substr (pl1_operator_name, 1, 4) = "call" then do; 138 call get_link_ptr_ (callp, link_ptr, entry_ptr); 139 /* Who was he trying to call? */ 140 if link_ptr ^= null then do; 141 142 auto_interpret_link_info.version = INTERPRET_LINK_INFO_VERSION_1; 143 call interpret_link_ (addr (auto_interpret_link_info), link_ptr, ec); 144 /* Take link ptr if available. */ 145 if ec = 0 then do; 146 call ioa_$ioa_stream (stream, " ^a to ^a^a", pl1_operator_name, 147 auto_interpret_link_info.segment_name, auto_interpret_link_info.entry_point_name); 148 return; 149 end; 150 end; 151 if entry_ptr ^= null then do; 152 153 /* Have found a snapped link. */ 154 155 call get_entry_name_ (entry_ptr, sn, segno, lang, ec); 156 /* This shd point to entry sequence. */ 157 if ec = 0 then do; 158 call hcs_$fs_get_path_name (baseptr (segno), working_dir_name, i, component, ec); 159 if ec = 0 then do; 160 if segno = fixed (baseno (fptr)) then do; 161 call component_info_$offset (ptr (entry_ptr, 0), binary (rel (entry_ptr)), addr (ci), 162 ec); 163 if ec = 0 then component = ci.name; 164 end; 165 call ioa_$ioa_stream (stream, " ^a to ^a$^a", pl1_operator_name, component, sn); 166 return; 167 end; 168 end; 169 end; 170 end; 171 172 /* Print instruction if no other information is available */ 173 174 call disassemble (fptr, disassembled_instr, insx); 175 call ioa_$ioa_stream (stream, "^a ^a", disassembled_instr, pl1_operator_name); 176 if insx > 1 177 then do i = 2 to insx; 178 call disassemble (fptr, disassembled_instr, i); 179 call ioa_$ioa_stream (stream, "^a", disassembled_instr); 180 end; 181 182 /* This function tests the user's access to the object segment to prevent taking a fault while 183* attempting to provide information. It checks for read access, correct ring brackets, a positive 184* bit count and a plausible segment number. 185**/ 186 187 get_access: 188 proc (txtp, bc) returns (bit (1) unal); 189 190 dcl txtp ptr, 191 bc fixed bin (24), 192 code fixed bin (35); 193 194 dcl rings (3) fixed bin (6); 195 dcl type fixed bin (2); 196 dcl mode fixed bin (5); 197 dcl lev fixed bin (6); 198 dcl (hcsct, highct) fixed bin; 199 200 dcl cu_$level_get entry (fixed bin (6)); 201 202 call hcs_$high_low_seg_count (highct, hcsct); 203 if binary (baseno (txtp)) <= hcsct + highct then do; 204 call hcs_$status_mins (txtp, type, bc, code); 205 if code = 0 & type = 1 then do; /* 1 = segment (ignore directories) */ 206 call cu_$level_get (lev); 207 call hcs_$fs_get_brackets (txtp, mode, rings, code); 208 if code = 0 & rings (2) >= lev then do; 209 if (bit (mode, 5) & "01000"b) = "01000"b 210 then if bc > 0 then return ("1"b); 211 end; 212 end; 213 end; 214 215 return ("0"b); 216 217 end get_access; 218 219 end print_source_line_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1009.5 print_source_line_.pl1 >spec>on>pl128d>print_source_line_.pl1 94 1 06/11/74 0602.3 interpret_ptr_struc.incl.pl1 >ldd>include>interpret_ptr_struc.incl.pl1 95 2 06/06/83 0917.4 interpret_link_info.incl.pl1 >ldd>include>interpret_link_info.incl.pl1 99 3 05/06/74 1741.0 component_info.incl.pl1 >ldd>include>component_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. INTERPRET_LINK_INFO_VERSION_1 000000 constant char(8) initial unaligned dcl 2-13 ref 142 addr builtin function dcl 69 ref 106 109 109 143 143 161 161 auto_interpret_link_info 000410 automatic structure level 1 dcl 97 set ref 143 143 bad_frame 000354 automatic bit(1) level 2 packed unaligned dcl 71 set ref 111 baseno builtin function dcl 69 ref 160 203 baseptr builtin function dcl 69 ref 158 158 bc parameter fixed bin(24,0) dcl 190 set ref 187 204* 209 binary builtin function dcl 69 ref 161 161 203 bit builtin function dcl 69 ref 209 btc 000104 automatic fixed bin(24,0) dcl 25 set ref 133* callp 000110 automatic pointer dcl 25 set ref 109* 133* 135* 138* ci 000542 automatic structure level 1 dcl 3-3 set ref 161 161 cip 000106 automatic pointer dcl 25 set ref 106* 107* code 000620 automatic fixed bin(35,0) dcl 190 set ref 204* 205 207* 208 compiler 64 based char(8) level 2 dcl 1-3 ref 128 128 128 131 131 component 000131 automatic char(32) dcl 25 set ref 158* 163* 165* component_info_$offset 000010 constant entry external dcl 51 ref 161 condinfo 000356 automatic structure level 1 dcl 81 set ref 106 crawlout 22 000356 automatic bit(1) initial level 3 packed unaligned dcl 81 set ref 81* 109* cu_$level_get 000052 constant entry external dcl 200 ref 206 dirname 000241 automatic char(168) unaligned dcl 25 set ref 113* 118* disassemble 000030 constant entry external dcl 51 ref 174 178 disassembled_instr 000324 automatic varying char(72) dcl 25 set ref 174* 175* 178* 179* ec 000323 automatic fixed bin(35,0) dcl 25 set ref 107* 113* 118* 123* 143* 145 155* 157 158* 159 161* 163 ename 000313 automatic char(32) unaligned dcl 25 set ref 113* 118* 119* 121* entry_point_name 12 000410 automatic char(260) level 2 dcl 97 set ref 146* entry_ptr 000112 automatic pointer dcl 25 set ref 138* 151 155* 161 161 161 161 find_condition_info_ 000014 constant entry external dcl 51 ref 107 find_operator_name_ 000020 constant entry external dcl 51 ref 135 find_source_line_ 000032 constant entry external dcl 51 ref 113 fixed builtin function dcl 69 ref 160 flags 22 000356 automatic structure level 2 dcl 81 fptr 000102 automatic pointer dcl 25 set ref 104* 126 160 174* 178* get_entry_name_ 000024 constant entry external dcl 51 ref 155 get_link_ptr_ 000022 constant entry external dcl 51 ref 138 hcs_$fs_get_brackets 000040 constant entry external dcl 51 ref 207 hcs_$fs_get_path_name 000046 constant entry external dcl 51 ref 158 hcs_$high_low_seg_count 000044 constant entry external dcl 51 ref 202 hcs_$initiate 000034 constant entry external dcl 51 ref 118 hcs_$status_mins 000042 constant entry external dcl 51 ref 204 hcs_$terminate_noname 000036 constant entry external dcl 51 ref 123 hcsct 000627 automatic fixed bin(17,0) dcl 198 set ref 202* 203 highct 000630 automatic fixed bin(17,0) dcl 198 set ref 202* 203 i 000151 automatic fixed bin(17,0) dcl 25 set ref 158* 176* 178* infoptr 14 000356 automatic pointer initial level 2 dcl 81 set ref 81* insx 000152 automatic fixed bin(17,0) initial dcl 25 set ref 25* 174* 176 176 interpret_link_ 000026 constant entry external dcl 51 ref 143 interpret_link_info based structure level 1 dcl 2-5 ioa_$ioa_stream 000050 constant entry external dcl 51 ref 115 119 121 146 165 175 179 is_condition_frame_ 000012 constant entry external dcl 51 ref 105 lang 000116 automatic char(8) dcl 25 set ref 155* lev 000626 automatic fixed bin(6,0) dcl 197 set ref 206* 208 line_length 000353 automatic fixed bin(21,0) dcl 49 set ref 113* 121 121 line_no 000235 automatic char(16) unaligned dcl 25 set ref 113* 114 119* 121* line_offset 000352 automatic fixed bin(21,0) dcl 49 set ref 113* 121 121 link_ptr 000114 automatic pointer dcl 25 set ref 138* 140 143* loc_ptr 20 000356 automatic pointer initial level 2 dcl 81 set ref 81* mcptr 000356 automatic pointer initial level 2 dcl 81 set ref 81* 109* mode 000625 automatic fixed bin(5,0) dcl 196 set ref 207* 209 name 1 000542 automatic char(32) level 2 dcl 3-3 set ref 163 null builtin function dcl 69 ref 81 81 81 81 81 119 126 140 151 op_seg_name 000120 automatic char(32) dcl 25 set ref 109* 128 128* 131* 135* pl1_operator_name 000225 automatic char(32) dcl 25 set ref 127* 133* 135* 137 137 146* 165* 175* ptr builtin function dcl 69 ref 161 161 rel builtin function dcl 69 ref 161 161 rings 000621 automatic fixed bin(6,0) array dcl 194 set ref 207* 208 segment 20 based char(32) level 2 dcl 1-3 set ref 115* segment_name 2 000410 automatic char(32) level 2 dcl 97 set ref 146* segno 000130 automatic fixed bin(18,0) dcl 25 set ref 155* 158 158 160 situation 000354 automatic structure level 1 dcl 71 set ref 109 109 sn 000141 automatic char(32) dcl 25 set ref 155* 165* source_ptr 000350 automatic pointer dcl 47 set ref 118* 119 121 121 123* source_seg based char(1000000) dcl 48 ref 121 121 sp 000100 automatic pointer dcl 25 set ref 103* 105* 107* 109* stack_frame_exit_ 000016 constant entry external dcl 51 ref 109 stack_ptr 70 based pointer level 2 dcl 1-3 ref 103 stream parameter char(32) dcl 22 set ref 10 115* 119* 121* 146* 165* 175* 179* strp parameter pointer dcl 22 set ref 10 103 104 113* 115 128 128 128 131 131 struc based structure level 1 dcl 1-3 substr builtin function dcl 69 ref 121 121 137 text_ptr 66 based pointer level 2 dcl 1-3 ref 104 txtp parameter pointer dcl 190 set ref 187 203 204* 207* type 000624 automatic fixed bin(2,0) dcl 195 set ref 204* 205 user_loc_ptr 24 000356 automatic pointer initial level 2 dcl 81 set ref 81* version 000410 automatic char(8) level 2 dcl 97 set ref 142* wcptr 16 000356 automatic pointer initial level 2 dcl 81 set ref 81* 109* working_dir_name 000153 automatic char(168) dcl 25 set ref 158* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. interpret_link_info_ptr automatic pointer dcl 2-15 strbuf automatic structure level 1 dcl 1-21 NAMES DECLARED BY EXPLICIT CONTEXT. get_access 001257 constant entry internal dcl 187 ref 133 print_source_line_ 000121 constant entry external dcl 10 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1660 1734 1421 1670 Length 2216 1421 54 245 237 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME print_source_line_ 494 external procedure is an external procedure. get_access internal procedure shares stack frame of external procedure print_source_line_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME print_source_line_ 000100 sp print_source_line_ 000102 fptr print_source_line_ 000104 btc print_source_line_ 000106 cip print_source_line_ 000110 callp print_source_line_ 000112 entry_ptr print_source_line_ 000114 link_ptr print_source_line_ 000116 lang print_source_line_ 000120 op_seg_name print_source_line_ 000130 segno print_source_line_ 000131 component print_source_line_ 000141 sn print_source_line_ 000151 i print_source_line_ 000152 insx print_source_line_ 000153 working_dir_name print_source_line_ 000225 pl1_operator_name print_source_line_ 000235 line_no print_source_line_ 000241 dirname print_source_line_ 000313 ename print_source_line_ 000323 ec print_source_line_ 000324 disassembled_instr print_source_line_ 000350 source_ptr print_source_line_ 000352 line_offset print_source_line_ 000353 line_length print_source_line_ 000354 situation print_source_line_ 000356 condinfo print_source_line_ 000410 auto_interpret_link_info print_source_line_ 000542 ci print_source_line_ 000620 code get_access 000621 rings get_access 000624 type get_access 000625 mode get_access 000626 lev get_access 000627 hcsct get_access 000630 highct get_access THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out return shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. component_info_$offset cu_$level_get disassemble find_condition_info_ find_operator_name_ find_source_line_ get_entry_name_ get_link_ptr_ hcs_$fs_get_brackets hcs_$fs_get_path_name hcs_$high_low_seg_count hcs_$initiate hcs_$status_mins hcs_$terminate_noname interpret_link_ ioa_$ioa_stream is_condition_frame_ stack_frame_exit_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 10 000115 25 000126 81 000130 103 000140 104 000145 105 000147 106 000162 107 000164 109 000177 111 000224 113 000227 114 000270 115 000274 116 000322 118 000323 119 000367 121 000425 123 000475 126 000507 127 000513 128 000516 131 000555 133 000575 135 000606 137 000626 138 000635 140 000650 142 000654 143 000656 145 000673 146 000675 148 000731 151 000732 155 000736 157 000767 158 000771 159 001026 160 001030 161 001040 163 001064 165 001071 166 001124 174 001125 175 001146 176 001175 178 001207 179 001230 180 001254 219 001256 187 001257 202 001261 203 001272 204 001307 205 001324 206 001331 207 001340 208 001356 209 001363 215 001402 ----------------------------------------------------------- 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