COMPILATION LISTING OF SEGMENT pakbit_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 10/17/88 1006.6 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(86-10-01,JRGray), approve(86-10-01,MCR7507), 17* audit(86-10-27,RWaters), install(86-11-12,MR12.0-1202): 18* Modified to allow blocks to be joined to the definition section. 19* END HISTORY COMMENTS */ 20 21 22 pakbit_: procedure ; 23 24 /* Modified for separate static on 06/15/75 by Eugene E Wiatrowski */ 25 /* Modified on 03/21/72 at 09:45:38 by R F Mabee. 26* by RFM on 21 March 1972 for relocation bits structure version (part of new object format). 27* by RHG on 8 August 1970 to suppress listing of relocation bits 28**/ 29 30 /* This procedure collects and packs the words of relocation bits 31* and then outputs them to the assembler's scratch segment */ 32 1 1 1 2 1 3 1 4 /* include file for CONCOM */ 1 5 1 6 declare 1 eb_data_$concom ext aligned, 1 7 2 (ap, ab, bp, bb, lp, lb, sp, sb, 1 8 clunk, clint, clext, clbas, clstk, clndx, clmlc, fdef, 1 9 fmul, fphs, fset, frel, fabs, fbol, fcom, find, 1 10 flocrf, fequrf, fbolrf, fsetrf, fbasrf, fsegrf, fstkrf, fndxrf, 1 11 fmlcrf, onesev, twosev, thrsev, forsev, fivsev, sixsev, allsev, 1 12 symbas(8),mir, mri, mdu, mdl, mx0, mx1, mpc, 1 13 mpci, mfi, mits, mitb, ixtern, intern, iassgn, iserch, 1 14 ixvrvl, ixvrvp, invrvl, invrvp, ibvrvl, ibvrvp, iaccvl, iacivl, 1 15 mcmpq, mcmpx0, mldaq, mldq, mldx0, mnopdu, mstcd, mtra, 1 16 mtnc, mtnz, meabsp, meapap, meapbp, meaplp, meapsp, mstpap, 1 17 mstpbp, mstplp, mstpsp, i1542, i642, i3333, i66, ibb, 1 18 ibsp, nullf, smxer(2), sentry(2),sretrn(2), dzero(2) ) fixed bin (26) aligned ; 1 19 1 20 /* end of the include file for CONCOM */ 33 2 1 /* Begin include file alm_options.incl.pl1. 2 2* This file defines the external cells used to pass options to the various modules of the assembler. 2 3* Created on 03/17/72 at 01:39:44 by R F Mabee. 2 4* Last modified on 07/23/72 at 22:02:34 by R F Mabee. */ 2 5 2 6 declare 1 eb_data_$alm_options external static aligned, 2 7 2 tnewcall fixed binary, /* Use new call/save/return operators. */ 2 8 2 tnewmachine fixed binary, /* Use followon hardware instruction set. */ 2 9 2 tnewobject fixed binary, /* Use new object segment format. */ 2 10 2 tcheckcompatibility fixed binary, /* Check for instructions changed in followon. */ 2 11 2 tquietsw fixed binary, /* Suppress online printout of error messages. */ 2 12 2 tfirstreftrap fixed binary, /* A first reference trap procedure was given. */ 2 13 2 tnoxref fixed binary; /* Zero if cross reference if to be produced. */ 2 14 2 15 /* End of include file alm_options.incl.pl1 */ 34 3 1 /* Begin include file objnfo.incl.pl1. 3 2* Parameters saved for object map. 3 3* Last modified on 05/12/72 at 01:10:27 by R F Mabee. */ 3 4 3 5 3 6 /****^ HISTORY COMMENTS: 3 7* 1) change(86-10-01,JRGray), approve(86-10-01,MCR7507), 3 8* audit(86-10-27,RWaters), install(86-11-12,MR12.0-1202): 3 9* Modified to add definition count used to join blocks to the definition 3 10* section. 3 11* END HISTORY COMMENTS */ 3 12 3 13 declare 1 eb_data_$objnfo external static aligned, 3 14 2 (itxpc, ilkpc, istpc, idfpc, itxcnt, ilkcnt, istcnt, idfcnt) fixed bin (26) aligned, 3 15 2 (new_text_offset, new_definition_offset, new_link_offset, new_static_offset, new_symbol_offset) fixed bin (26) aligned, 3 16 2 (new_text_length, new_definition_length, new_link_length, new_static_length, new_symbol_length) fixed bin (26) aligned; 3 17 3 18 /* End of include file objnfo.incl.pl1. */ 35 4 1 /* BEGIN INCLUDE FILE segnfo.incl.pl1 for alm (see also segnfo.incl.alm) */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(86-10-01,JRGray), approve(86-10-01,MCR7507), 4 6* audit(86-10-27,RWaters), install(86-11-12,MR12.0-1202): 4 7* Modified to keep a ptr to the list FCB. This is part of the fix that 4 8* removes PAD characters from the listing segment. 4 9* END HISTORY COMMENTS */ 4 10 4 11 declare 1 eb_data_$segnfo ext aligned, 4 12 2 (text, source, list, list_fcb, scrtch) ptr aligned, 4 13 2 (txtlen, srclen, lstlen) fixed bin (26) aligned; 4 14 4 15 /* END INCLUDE FILE segnfo.incl.pl1 */ 36 37 38 dcl (buff, j, nl, n, nr, i, ik, rpc, bits, itemp) fixed bin (26) ; 39 dcl (lbits, rbits) fixed bin (26); 40 41 dcl eb_data_$stat_len ext fixed bin(26); 42 dcl eb_data_$separate_static ext bit(1) aligned; 43 44 dcl pakrtn label local; 45 46 dcl 47 object_$objst ext entry (fixed bin (26), fixed bin (26)), 48 object_$getbtx ext entry ( fixed bin (26), fixed bin (26), fixed bin (26) ), 49 object_$gtblk ext entry ( fixed bin (26), fixed bin (26), fixed bin (26) ), 50 object_$getbdf ext entry ( fixed bin (26), fixed bin (26), fixed bin (26) ), 51 object_$getbst ext entry ( fixed bin (26), fixed bin (26), fixed bin (26) ); 52 53 dcl iword fixed bin(26), 54 01 word aligned based(addr(iword)), 55 02 (left, right) fixed bin(18) unsigned unaligned; 56 57 dcl tx_word(0:262143) fixed bin(26) aligned based(eb_data_$segnfo.text); 58 59 dcl 01 lk_sym_def_overlay (0:32767) based(eb_data_$segnfo.scrtch), 60 02 (lk_rel, lk_word, st_rel, st_word, df_rel, df_word, pad1, pad2) fixed bin(26) aligned; 61 62 dcl (utils_$or, utils_$ls, utils_$rs) external entry ( fixed bin (26), fixed bin (26) ) returns ( fixed bin (26) ); 63 64 declare reloc_vers internal static fixed bin (26) initial (1); 65 66 /* output text count */ 67 rpc = istpc ; 68 if tnewobject ^= 0 then do; 69 call object_$objst (rpc, reloc_vers); 70 rpc = rpc + 1; 71 end; 72 73 call object_$objst( rpc, itxcnt ) ; 74 75 rpc = rpc + 1 ; 76 77 lbits = 0 ; 78 79 rbits = 0 ; 80 81 bits = 0 ; 82 83 j = 0 ; 84 85 buff = 0 ; 86 87 pakrtn = label_975 ; 88 89 itemp = itxpc - 1 ; 90 91 text_loop: 92 do i = 0 to itemp ; 93 call object_$getbtx(i, lbits, rbits ) ; 94 iword = tx_word(i); 95 96 go to label_5000 ; 97 label_975: 98 tx_word(i) = iword; 99 100 end text_loop ; 101 102 103 104 /* output the last word if there is more in the buffer */ 105 106 if j = 0 then go to label_1000 ; 107 108 call object_$objst(rpc,buff ) ; 109 110 rpc = rpc + 1 ; 111 112 113 /* output the linkage bits count */ 114 115 label_1000: 116 117 if tnewobject ^= 0 then do; 118 call object_$objst (rpc, reloc_vers); 119 rpc = rpc + 1; 120 end; 121 122 /* output the linkage bits count */ 123 124 call object_$objst( rpc, ilkcnt ) ; 125 126 rpc = rpc + 1 ; 127 128 lbits = 0 ; 129 130 rbits = 0 ; 131 132 bits = 0 ; 133 134 j = 0 ; 135 136 buff = 0 ; 137 138 pakrtn = label_1075 ; 139 140 141 /* no need to generate relocation bits for separate static section */ 142 143 if eb_data_$separate_static 144 then do; 145 itemp = (eb_data_$stat_len + ilkpc) - 1; 146 ik = eb_data_$stat_len; 147 end; 148 else do; 149 itemp = ilkpc - 1; 150 ik = 0; 151 end; 152 153 link_loop: 154 155 do i = ik to itemp ; 156 157 call object_$gtblk (i, lbits, rbits ) ; 158 iword = lk_word(i); 159 160 go to label_5000 ; 161 162 label_1075: 163 lk_word(i) = iword; 164 165 end link_loop ; 166 167 168 /* output the last word of the linkage buffer */ 169 170 if j = 0 then go to label_1200 ; 171 172 call object_$objst(rpc, buff ) ; 173 174 rpc = rpc + 1 ; 175 176 /* process the definition relocation bits */ 177 178 label_1200: 179 j = 0 ; 180 buff = 0 ; 181 lbits = 0 ; 182 rbits = 0 ; 183 bits = 0 ; 184 185 if tnewobject ^= 0 then do; 186 call object_$objst (rpc, reloc_vers); 187 rpc = rpc + 1; 188 end; 189 190 /* output the definition relocation bits count then the definition bits */ 191 192 call object_$objst(rpc, idfcnt ) ; 193 rpc = rpc + 1 ; 194 195 pakrtn = label_1250; /* process internal definitions */ 196 197 do i = itxpc to itxpc+new_definition_length-1; 198 call object_$getbtx(i, lbits, rbits); 199 iword = tx_word(i); 200 goto label_5000; 201 label_1250: 202 tx_word(i) = iword; 203 end; 204 205 pakrtn = label_1275 ; /* add explicit definition section */ 206 itemp = idfpc - 1 ; 207 208 definition_loop: 209 do i = 0 to itemp ; 210 call object_$getbdf(i, lbits, rbits ) ; 211 iword = df_word(i); 212 go to label_5000 ; 213 label_1275: 214 df_word(i) = iword; 215 end definition_loop ; 216 217 if j = 0 then go to label_1100 ; 218 219 call object_$objst(rpc, buff ) ; 220 221 rpc = rpc + 1 ; 222 223 224 225 /* process the symbol relocation bits */ 226 227 label_1100: 228 229 j = 0 ; 230 231 buff = 0 ; 232 233 lbits = 0 ; 234 235 rbits = 0 ; 236 237 bits = 0 ; 238 239 240 if tnewobject ^= 0 then do; 241 call object_$objst (rpc, reloc_vers); 242 rpc = rpc + 1; 243 end; 244 245 /* output the symbol relocation bits count then the symbol bits */ 246 247 248 call object_$objst(rpc, istcnt ) ; 249 250 rpc = rpc + 1 ; 251 252 pakrtn = label_1175 ; 253 254 itemp = istpc - 1 ; 255 256 symbol_loop: 257 258 do i = 0 to itemp ; 259 260 call object_$getbst(i, lbits, rbits ) ; 261 iword = st_word(i); 262 263 go to label_5000 ; 264 265 label_1175: 266 st_word(i) = iword; 267 268 end symbol_loop ; 269 270 271 272 273 274 istpc = rpc ; 275 if j = 0 then return ; 276 call object_$objst(istpc, buff ) ; 277 istpc = istpc + 1 ; 278 279 return ; /* as all bits have been processed */ 280 281 282 283 284 285 /* internal routine to process relocation bits patterns as retrieved by the GETxxx routines */ 286 /* The patterns are contained in the right halves of full words ( in lbits and rbits ). 287* This internal routine concatenates the relocation bits and outputs them when a full word is filled. */ 288 289 290 291 label_5000: 292 if lbits = 27 /* 33o */ then do; /* relocate definition offsets */ 293 lbits = 21 /* 25o */; /* true defn relocation */ 294 word.left = word.left + new_definition_length; 295 end; 296 if rbits = 27 /* 33o */ then do; /* relocate definition offsets */ 297 rbits = 21 /* 25o */; /* true defn relocation */ 298 word.right = word.right + new_definition_length; 299 end; 300 301 nl = 1 ; 302 303 nr = 1 ; 304 305 if lbits ^= 0 then nl = 5 ; 306 307 if rbits ^= 0 then nr = 5 ; 308 309 n = nl + nr ; 310 311 bits = utils_$or(utils_$ls(lbits,nr), rbits ) ; 312 313 if ( j + n ) > 36 then go to label_5050 ; 314 315 buff = utils_$or(buff,utils_$ls(bits,36-n-j)) ; 316 317 j = j + n ; 318 319 go to label_5080 ; 320 321 label_5050: 322 323 buff = utils_$or(buff,utils_$rs(bits,n-(36-j))) ; 324 325 call object_$objst(rpc,buff) ; 326 327 buff = 0 ; 328 329 rpc = rpc + 1 ; 330 331 j = j + n - 36 ; 332 333 buff = utils_$ls(bits,36-j) ; 334 335 label_5080: 336 337 /* return to the proper main loop */ 338 339 go to pakrtn ; 340 341 end pakbit_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/88 0938.9 pakbit_.pl1 >spec>install>1170>pakbit_.pl1 33 1 10/21/74 1243.0 concom.incl.pl1 >ldd>include>concom.incl.pl1 34 2 05/06/74 1740.2 alm_options.incl.pl1 >ldd>include>alm_options.incl.pl1 35 3 11/12/86 1103.0 objnfo.incl.pl1 >ldd>include>objnfo.incl.pl1 36 4 11/12/86 1103.0 segnfo.incl.pl1 >ldd>include>segnfo.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. bits 000110 automatic fixed bin(26,0) dcl 38 set ref 81* 132* 183* 237* 311* 315* 315* 321* 321* 333* buff 000100 automatic fixed bin(26,0) dcl 38 set ref 85* 108* 136* 172* 180* 219* 231* 276* 315* 315* 321* 321* 325* 327* 333* df_word 5 based fixed bin(26,0) array level 2 dcl 59 set ref 211 213* eb_data_$alm_options 000012 external static structure level 1 dcl 2-6 eb_data_$objnfo 000014 external static structure level 1 dcl 3-13 eb_data_$segnfo 000016 external static structure level 1 dcl 4-11 eb_data_$separate_static 000022 external static bit(1) dcl 42 ref 143 eb_data_$stat_len 000020 external static fixed bin(26,0) dcl 41 ref 145 146 i 000105 automatic fixed bin(26,0) dcl 38 set ref 91* 93* 94 97* 153* 157* 158 162* 197* 198* 199 201* 208* 210* 211 213* 256* 260* 261 265* idfcnt 7 000014 external static fixed bin(26,0) level 2 dcl 3-13 set ref 192* idfpc 3 000014 external static fixed bin(26,0) level 2 dcl 3-13 ref 206 ik 000106 automatic fixed bin(26,0) dcl 38 set ref 146* 150* 153 ilkcnt 5 000014 external static fixed bin(26,0) level 2 dcl 3-13 set ref 124* ilkpc 1 000014 external static fixed bin(26,0) level 2 dcl 3-13 ref 145 149 istcnt 6 000014 external static fixed bin(26,0) level 2 dcl 3-13 set ref 248* istpc 2 000014 external static fixed bin(26,0) level 2 dcl 3-13 set ref 67 254 274* 276* 277* 277 itemp 000111 automatic fixed bin(26,0) dcl 38 set ref 89* 91 145* 149* 153 206* 208 254* 256 itxcnt 4 000014 external static fixed bin(26,0) level 2 dcl 3-13 set ref 73* itxpc 000014 external static fixed bin(26,0) level 2 dcl 3-13 ref 89 197 197 iword 000120 automatic fixed bin(26,0) dcl 53 set ref 94* 97 158* 162 199* 201 211* 213 261* 265 294 294 298 298 j 000101 automatic fixed bin(26,0) dcl 38 set ref 83* 106 134* 170 178* 217 227* 275 313 315 315 317* 317 321 321 331* 331 333 lbits 000112 automatic fixed bin(26,0) dcl 39 set ref 77* 93* 128* 157* 181* 198* 210* 233* 260* 291 293* 305 311* 311* left based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 53 set ref 294* 294 lk_sym_def_overlay based structure array level 1 unaligned dcl 59 lk_word 1 based fixed bin(26,0) array level 2 dcl 59 set ref 158 162* n 000103 automatic fixed bin(26,0) dcl 38 set ref 309* 313 315 315 317 321 321 331 new_definition_length 16 000014 external static fixed bin(26,0) level 2 dcl 3-13 ref 197 294 298 nl 000102 automatic fixed bin(26,0) dcl 38 set ref 301* 305* 309 nr 000104 automatic fixed bin(26,0) dcl 38 set ref 303* 307* 309 311* 311* object_$getbdf 000032 constant entry external dcl 46 ref 210 object_$getbst 000034 constant entry external dcl 46 ref 260 object_$getbtx 000026 constant entry external dcl 46 ref 93 198 object_$gtblk 000030 constant entry external dcl 46 ref 157 object_$objst 000024 constant entry external dcl 46 ref 69 73 108 118 124 172 186 192 219 241 248 276 325 pakrtn 000114 automatic label variable local dcl 44 set ref 87* 138* 195* 205* 252* 335 rbits 000113 automatic fixed bin(26,0) dcl 39 set ref 79* 93* 130* 157* 182* 198* 210* 235* 260* 296 297* 307 311* reloc_vers 000010 internal static fixed bin(26,0) initial dcl 64 set ref 69* 118* 186* 241* right 0(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 53 set ref 298* 298 rpc 000107 automatic fixed bin(26,0) dcl 38 set ref 67* 69* 70* 70 73* 75* 75 108* 110* 110 118* 119* 119 124* 126* 126 172* 174* 174 186* 187* 187 192* 193* 193 219* 221* 221 241* 242* 242 248* 250* 250 274 325* 329* 329 scrtch 10 000016 external static pointer level 2 dcl 4-11 ref 158 162 211 213 261 265 st_word 3 based fixed bin(26,0) array level 2 dcl 59 set ref 261 265* text 000016 external static pointer level 2 dcl 4-11 ref 94 97 199 201 tnewobject 2 000012 external static fixed bin(17,0) level 2 dcl 2-6 ref 68 115 185 240 tx_word based fixed bin(26,0) array dcl 57 set ref 94 97* 199 201* utils_$ls 000040 constant entry external dcl 62 ref 311 311 315 315 333 utils_$or 000036 constant entry external dcl 62 ref 311 315 321 utils_$rs 000042 constant entry external dcl 62 ref 321 321 word based structure level 1 dcl 53 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. eb_data_$concom external static structure level 1 dcl 1-6 NAMES DECLARED BY EXPLICIT CONTEXT. definition_loop 000403 constant label dcl 208 label_1000 000127 constant label dcl 115 ref 106 label_1075 000242 constant label dcl 162 ref 138 label_1100 000462 constant label dcl 227 ref 217 label_1175 000560 constant label dcl 265 ref 252 label_1200 000270 constant label dcl 178 ref 170 label_1250 000364 constant label dcl 201 ref 195 label_1275 000434 constant label dcl 213 ref 205 label_5000 000614 constant label dcl 291 ref 96 160 200 212 263 label_5050 000746 constant label dcl 321 ref 313 label_5080 001036 constant label dcl 335 ref 319 label_975 000104 constant label dcl 97 ref 87 link_loop 000207 constant label dcl 153 pakbit_ 000002 constant entry external dcl 22 symbol_loop 000527 constant label dcl 256 text_loop 000055 constant label dcl 91 NAME DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 294 294 298 298 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1174 1240 1037 1204 Length 1524 1037 44 247 134 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME pakbit_ 103 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 reloc_vers pakbit_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME pakbit_ 000100 buff pakbit_ 000101 j pakbit_ 000102 nl pakbit_ 000103 n pakbit_ 000104 nr pakbit_ 000105 i pakbit_ 000106 ik pakbit_ 000107 rpc pakbit_ 000110 bits pakbit_ 000111 itemp pakbit_ 000112 lbits pakbit_ 000113 rbits pakbit_ 000114 pakrtn pakbit_ 000120 iword pakbit_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. object_$getbdf object_$getbst object_$getbtx object_$gtblk object_$objst utils_$ls utils_$or utils_$rs THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. eb_data_$alm_options eb_data_$objnfo eb_data_$segnfo eb_data_$separate_static eb_data_$stat_len LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 22 000001 67 000007 68 000012 69 000015 70 000025 73 000026 75 000040 77 000041 79 000042 81 000043 83 000044 85 000045 87 000046 89 000051 91 000055 93 000063 94 000076 96 000103 97 000104 100 000111 106 000113 108 000115 110 000126 115 000127 118 000133 119 000143 124 000144 126 000156 128 000157 130 000160 132 000161 134 000162 136 000163 138 000164 143 000167 145 000172 146 000177 147 000201 149 000202 150 000206 153 000207 157 000217 158 000232 160 000241 162 000242 165 000252 170 000254 172 000256 174 000267 178 000270 180 000271 181 000272 182 000273 183 000274 185 000275 186 000301 187 000311 192 000312 193 000324 195 000325 197 000330 198 000343 199 000356 200 000363 201 000364 203 000371 205 000373 206 000376 208 000403 210 000411 211 000424 212 000433 213 000434 215 000444 217 000446 219 000450 221 000461 227 000462 231 000463 233 000464 235 000465 237 000466 240 000467 241 000473 242 000503 248 000504 250 000516 252 000517 254 000522 256 000527 260 000535 261 000550 263 000557 265 000560 268 000570 274 000572 275 000576 276 000600 277 000610 279 000613 291 000614 293 000617 294 000621 296 000627 297 000632 298 000634 301 000641 303 000643 305 000644 307 000650 309 000654 311 000657 313 000704 315 000711 317 000743 319 000745 321 000746 325 001002 327 001013 329 001014 331 001015 333 001020 335 001036 ----------------------------------------------------------- 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