COMPILATION LISTING OF SEGMENT plio2_gvd_ Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1414.0 mst Mon Options: optimize map 1 2 /* ****************************************************** 3* * * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* * * 9* ****************************************************** */ 10 11 plio2_gvd_: 12 gvd_:gvd: 13 get_value_data_:proc(pspp) options(support); 14 15 16 /* updated 9-13-72 */ 17 /* 9-13-72: conforming to AG94 */ 18 19 20 21 dcl ( erno init(999), ignore,tsub,num_sw,sign, 22 bnc,blc,oi,ns_len,vs_len,first_non_space) fixed bin(15); 23 dcl ( pspp,psp,bp) ptr; 24 25 dcl 1 ldi aligned, 26 2 l fixed bin(15), 27 2 chars char(256) aligned, 28 2( name_l,isub,sub(128)) fixed bin(15); 29 30 dcl condition_name char(5); 31 dcl value_saved char(256) aligned; 32 dcl name_saved char(256) aligned; /* needed since ldi.chars is 33* overwritten in the call to 34* get_field_list. */ 35 36 37 38 dcl based_int fixed bin (35) based; 39 dcl 1 fakeint aligned based(addr(xint)), 40 2 aaa char(3) unaligned, 41 2 xchar char(1) unaligned; 42 dcl xint init(0) fixed bin(15); 43 dcl x char(1) aligned; 44 dcl (iaction,istate,itype,iactstate,strlen) fixed bin(15); 45 dcl fake_arg bit(1) unaligned based; 46 47 48 dcl plio2_gdt_$get_data_temp_ ext entry(ptr); 49 dcl plio2_get_util_$get_field_data_ ext entry(ptr); 50 dcl plio2_get_util_$get_field_list_ ext entry(ptr); 51 dcl plio2_get_util_$get_prep_ ext entry(ptr); 52 dcl plio2_get_util_$get_terminate_ ext entry(ptr); 53 dcl plio2_ldi_ ext entry(ptr); 54 dcl plio2_signal_$s_l_ ext entry(ptr,char(*),char(*),fixed bin(15),char(*),fixed bin(15),fixed bin(15),fixed bin(15)); 55 dcl plio2_signal_$s_ ext entry(ptr,char(*),char(*),fixed bin(15)); 56 dcl plio2_signal_$s_r_ ext entry(ptr,char(*),char(*),fixed bin(15)); 57 58 dcl ( addr,divide,min,mod,null,substr ) builtin; 59 1 1 /* BEGIN INCLUDE FILE ... plio2_ps.incl.pl1 */ 1 2 /* Stream I/O data block used by PL/I I/O runtime routines. 1 3* 1 4* Modified: 31 January 1978 by RAB to change plio2_data_$fsb_thread to plio2_data_fsb_thread_ 1 5**/ 1 6 /* format: style3,idind30 */ 1 7 1 8 /* based */ 1 9 1 10 declare 1 ps aligned based (psp),/* items set NORMALLY by compiled procedures */ 1 11 2 stack_frame_p ptr, /* items set in block prologue */ 1 12 2 ST_top_p ptr, 1 13 2 ST_block_p ptr, 1 14 2 format_area_p ptr, 1 15 2 ss_list_p ptr, 1 16 2 ab_return, /* items set in prep call */ 1 17 3 abret (3) ptr, 1 18 2 source_p ptr, /* addr(fakefsb) for string option, 1 19* addr(file) for explicit file option */ 1 20 2 special_list_p ptr, /* addr(OKlist) for get data, addr(format_list) for edit */ 1 21 2 copy_file_p ptr, 1 22 2 job aligned, 1 23 3 explicit_file bit (1) unal, 1 24 3 string bit (1) unal, 1 25 3 varying_string bit (1) unal, 1 26 3 data bit (1) unal, 1 27 3 edit bit (1) unal, 1 28 3 list bit (1) unal, 1 29 3 get bit (1) unal, 1 30 3 put bit (1) unal, 1 31 3 page bit (1) unal, 1 32 3 line bit (1) unal, 1 33 3 skip bit (1) unal, 1 34 3 copy bit (1) unal, 1 35 3 p1p2 bit (1) unal, 1 36 3 bit_string bit (1) unal, /* for environment(stringvalue) */ 1 37 3 char_string bit (1) unal, 1 38 3 read bit (1) unal, 1 39 3 write bit (1) unal, 1 40 3 rewrite bit (1) unal, 1 41 3 delete bit (1) unal, 1 42 3 locate bit (1) unal, 1 43 3 key bit (1) unal, 1 44 3 keyto bit (1) unal, 1 45 3 keyfrom bit (1) unal, 1 46 3 set bit (1) unal, 1 47 3 into bit (1) unal, 1 48 3 ignore bit (1) unal, 1 49 3 from bit (1) unal, 1 50 3 version bit (6) unal, 1 51 3 not_byte_buffer bit (1) unal, 1 52 3 pad1 bit (1) unal, 1 53 3 packed_ptr bit (1) unal, 1 54 2 number fixed bin (15), 1 55 2 value_p ptr, /* items set NORMALLY by compiled procedures per transmission */ 1 56 2 descriptor bit (36) aligned, 1 57 2 length fixed bin (15), /* may be swallowed into descriptor */ 1 58 2 top_half bit (18) unal, 1 59 2 offset bit (18) unal, 1 60 2 prep fixed bin (15), /* items treated ABNORMALLY, written by user and PLIO */ 1 61 2 new_format fixed bin (15), 1 62 2 switch aligned, /* items used by PLIO and not touched by compiled procedures */ 1 63 3 first_field bit (1) unal, 1 64 3 file bit (1) unal, 1 65 3 transmit_error bit (1) unal, 1 66 3 semi_sep bit (1) unal, 1 67 3 pad2 bit (32) unal, 1 68 2 file_p ptr, 1 69 2 fsbp ptr, 1 70 2 auxp ptr, /* used as addr(ldidata) for GETs */ 1 71 2 fabp ptr, 1 72 2 fab2p ptr, 1 73 2 vp ptr, 1 74 2 descr bit (36) aligned, 1 75 2 start_copy fixed bin (15), 1 76 2 quick_stream_storage, 1 77 3 a_stored fixed bin (35), 1 78 3 q_stored fixed bin (35); 1 79 1 80 /* external static */ 1 81 1 82 declare ( 1 83 plio2_data_$pspstat, 1 84 plio2_data_$fsbpstat, 1 85 plio2_data_$badfsbp, 1 86 plio2_data_$fabpstat, 1 87 plio2_data_$fab2pstat, 1 88 plio2_data_$pliostringfsbp 1 89 ) ptr external static; 1 90 1 91 dcl plio2_data_fsb_thread_ ptr ext static initial (null); 1 92 /* *system var */ 1 93 1 94 declare ( 1 95 plio2_data_$badjob bit (36) aligned, 1 96 plio2_data_$undef_file_sw bit (1) aligned 1 97 ) external static; 1 98 1 99 /* END INCLUDE FILE ... plio2_ps.incl.pl1 */ 60 61 62 63 64 65 66 67 /* CODE STARTS */ 68 69 psp=pspp; 70 ps.auxp=addr(ldi); 71 /* there is no need to call GET_PREP 72* for GVD is called from GET_PREP after prep work is done */ 73 ps.switch.semi_sep="0"b; 74 loop: 75 if ps.switch.semi_sep then go to exit; 76 call plio2_get_util_$get_field_data_(psp); 77 if ldi.l>256 then goto err143; 78 name_saved=ldi.chars; 79 ns_len=ldi.l; 80 81 if substr(ldi.chars,ldi.l,1)=";" then goto exit; 82 if ldi.l=0 then goto loop; 83 84 get_datum: 85 call plio2_get_util_$get_field_list_(psp); 86 if ldi.l=0 then goto loop; 87 value_saved=ldi.chars; 88 vs_len=ldi.l; 89 first_non_space=ldi.name_l; 90 if substr(value_saved,first_non_space,1)=";" then goto exit; 91 92 93 ldi.chars=name_saved; 94 ldi.l=ns_len; 95 96 goto id_parse; 97 OK: 98 call plio2_gdt_$get_data_temp_(psp); 99 if ps.vp=null then 100 do; 101 addr(erno)->based_int=addr(ps.descr)->based_int; 102 erno=erno+63; /* yields 135-140: see plio2_gdt_ */ 103 go to NG_1; 104 end; 105 106 107 ldi.l,vs_len=vs_len+1-first_non_space; 108 ldi.chars=substr(value_saved,first_non_space,vs_len); 109 110 call plio2_ldi_(psp); 111 go to loop; 112 113 /* */ 114 NG: 115 erno=istate+125; 116 /* (...) appears illegally in datum identifier: 117* 118* 126:misc 127:numeric 128:sign 119* 129:comma 130:equal 131:parens 120* 132:dollar-or-_ 133:dot 134:alphabetic 121* */ 122 NG_1: 123 vs_len=min(vs_len,256-ns_len); 124 name_saved=substr(name_saved,1,ns_len) 125 ||substr(value_saved,1,vs_len); 126 ns_len=ns_len+vs_len; 127 if ps.job.string then condition_name="ERROR"; 128 else condition_name="NAME"; 129 call plio2_signal_$s_l_(psp,condition_name,"get_data",erno, 130 substr(name_saved,1,ns_len),1,ns_len,0); 131 132 do; 133 ps.switch.transmit_error="0"b; 134 goto loop; 135 end; 136 137 goto loop; 138 139 err123: 140 /* problem in scan of datum identifier */ 141 erno=123; 142 goto sandr; 143 144 err124: 145 erno=124; 146 goto sandr; /* more than 128 subscripts */ 147 148 err143: 149 /* identifier longer than 256 */ 150 erno=143; 151 goto sandr; 152 153 154 sandr: 155 call plio2_signal_$s_r_(psp,"ERROR","get_data",erno); 156 157 158 159 exit: 160 /* there is no need to call GET_TERMINATE for 161* GVD is called from GET_PREP from GET_TERMINATE itself ! ! */ 162 return; 163 /* */ 164 dcl data_char_class(0:127) fixed bin(9) internal static init( 165 (9)10, /* 000...010 */ 166 (2)11, /* TAB,NL */ 167 (3)11, /* VTAB, NPAGE, CRETURN */ 168 (18)10, /* 016 ... 037 */ 169 11, /* BLANK */ 170 10, /* 041 */ 171 10, /* QUOTE */ 172 10, /* 043 */ 173 1, /* DOLLAR */ 174 (3)10, /* 045 ... 047 */ 175 6,7, /* OPEN_PAR, CLOSE_PAR */ 176 10, /* 052 */ 177 4,5,4,9, /* PLUS, COMMA, MINUS, DOT */ 178 10, /* 057 */ 179 (2)3, /* ZERO, ONE */ 180 (8)3, /* TWO, THREE, . . . NINE */ 181 10, /* 072 */ 182 10, /* SEMI */ 183 10, /* 074 */ 184 8, /* EQUAL */ 185 (3)10, /* 076 ... 080 */ 186 (26)2, /* CAPS */ 187 (4)10, /* 133 ... 136 */ 188 1, /* UNDERSCORE */ 189 10, /* 140 */ 190 (26)2, /* LOWER CASE */ 191 (5)10 /* 173 ... 177 */ 192 ); 193 194 /* dollar,underscore 1 195* letters 2 196* numerals 3 197* plus/minus 4 198* comma 5 199* open paren 6 200* close paren 7 201* equal sign 8 202* dot 9 203* junk 10 204* ignorable 11 */ 205 206 207 /* field has NOT had leading and intervening blank, tab, newpage, and newline 208* characters removed by get_util_$get_field_data_. 209* field terminates with the first equalsign or semicolon after the first character */ 210 211 212 213 dcl data_mat(5,10) fixed bin(9) static internal init( 214 /* STATE $_ ALPH NUM SIGN CMMA OPEN CLOZ EQU DOT JUNK*/ 215 /* 1-prep */ 37, 12, 32, 33, 34, 36, 36, 35, 38, 31, 216 /* 2-name */ 12, 12, 12, 33, 34, 23, 36, 00, 11, 31, 217 /* 3- presubscr */ 37, 39, 64, 64, 34, 36, 36, 35, 38, 31, 218 /* 4-subscr */ 37, 39, 74, 33, 83, 36, 85, 35, 38, 31, 219 /* 5- endlist */ 37, 39, 32, 33, 34, 36, 36, 00, 11, 31); 220 221 /* 222* ( ACTION , new STATE ) 223* 224* 225* actions: 226* 227* 228* 0 OK 229* 1 move 230* 2 get 231* 3 NG 232* 6 set sign for ss 233* 7 set ss digit 234* 8 store ss 235**/ 236 /* */ 237 id_parse: 238 istate=1; 239 bnc=1; 240 blc=ldi.l; 241 ldi.isub=0; 242 243 oi=0; 244 go to action(2); 245 246 action(0): 247 ldi.name_l=oi; /* index of last character of name */ 248 go to OK; 249 250 action(1): 251 /* ldi.chars already contains the identifier ("as.you.like.it(1,2,-3)=") 252* left adjusted. */ 253 254 oi=oi+1; 255 substr(ldi.chars,oi,1)=x; 256 257 258 action(2): 259 GET: 260 if bnc>blc then goto err123; 261 x=substr(ldi.chars,bnc,1); 262 bnc=bnc+1; 263 xchar=x; 264 if xint>127 then 265 do; 266 itype=10; 267 go to re_act; 268 end; 269 itype=data_char_class(xint); 270 if itype=11 then goto GET; /* ignore blanks and so on. */ 271 re_act: 272 iactstate=data_mat(istate,itype); 273 istate=mod(iactstate,10); 274 iaction=divide(iactstate,10,15,0); 275 transfer: 276 go to action(iaction); 277 278 action(3): 279 go to NG; 280 281 action(6): 282 if x="-" then sign=1; 283 else sign=0; 284 285 tsub=0; 286 if itype=4 then 287 do; /* sign */ 288 num_sw=0; 289 goto GET; 290 end; 291 num_sw=1; /* a number has appeared in the current subscript */ 292 293 action(7): 294 num_sw=1; 295 tsub=10*tsub+xint -48; 296 go to GET; 297 298 action(8): 299 if num_sw=0 then 300 do; /* bad subscript consisting of a sign only */ 301 istate=itype-1; 302 goto NG; 303 end; 304 if sign=1 then tsub=-tsub; 305 isub=isub+1; 306 if isub>128 then goto err124; 307 ldi.sub(ldi.isub)=tsub; 308 go to GET; 309 310 311 end plio2_gvd_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1005.4 plio2_gvd_.pl1 >spec>on>pl128d>plio2_gvd_.pl1 60 1 08/13/81 2043.5 plio2_ps.incl.pl1 >ldd>include>plio2_ps.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. addr builtin function dcl 58 ref 70 101 101 263 auxp 44 based pointer level 2 dcl 1-10 set ref 70* based_int based fixed bin(35,0) dcl 38 set ref 101* 101 blc 000105 automatic fixed bin(15,0) dcl 21 set ref 240* 258 bnc 000104 automatic fixed bin(15,0) dcl 21 set ref 239* 258 261 262* 262 chars 1 000114 automatic char(256) level 2 dcl 25 set ref 78 81 87 93* 108* 255* 261 condition_name 000420 automatic char(5) unaligned dcl 30 set ref 127* 128* 129* data_char_class 000073 constant fixed bin(9,0) initial array dcl 164 ref 269 data_mat 000011 constant fixed bin(9,0) initial array dcl 213 ref 271 descr 54 based bit(36) level 2 dcl 1-10 set ref 101 divide builtin function dcl 58 ref 274 erno 000100 automatic fixed bin(15,0) initial dcl 21 set ref 21* 101 102* 102 114* 129* 139* 144* 148* 154* fakeint based structure level 1 dcl 39 first_non_space 000111 automatic fixed bin(15,0) dcl 21 set ref 89* 90 107 108 iaction 000624 automatic fixed bin(15,0) dcl 44 set ref 274* 275 iactstate 000627 automatic fixed bin(15,0) dcl 44 set ref 271* 273 274 istate 000625 automatic fixed bin(15,0) dcl 44 set ref 114 237* 271 273* 301* isub 102 000114 automatic fixed bin(15,0) level 2 dcl 25 set ref 241* 305* 305 306 307 itype 000626 automatic fixed bin(15,0) dcl 44 set ref 266* 269* 270 271 286 301 job 26 based structure level 2 dcl 1-10 l 000114 automatic fixed bin(15,0) level 2 dcl 25 set ref 77 79 81 82 86 88 94* 107* 240 ldi 000114 automatic structure level 1 dcl 25 set ref 70 min builtin function dcl 58 ref 122 mod builtin function dcl 58 ref 273 name_l 101 000114 automatic fixed bin(15,0) level 2 dcl 25 set ref 89 246* name_saved 000522 automatic char(256) dcl 32 set ref 78* 93 124* 124 129 129 ns_len 000107 automatic fixed bin(15,0) dcl 21 set ref 79* 94 122 124 126* 126 129 129 129* null builtin function dcl 58 ref 99 num_sw 000102 automatic fixed bin(15,0) dcl 21 set ref 288* 291* 293* 298 oi 000106 automatic fixed bin(15,0) dcl 21 set ref 243* 246 250* 250 255 plio2_gdt_$get_data_temp_ 000010 constant entry external dcl 48 ref 97 plio2_get_util_$get_field_data_ 000012 constant entry external dcl 49 ref 76 plio2_get_util_$get_field_list_ 000014 constant entry external dcl 50 ref 84 plio2_ldi_ 000016 constant entry external dcl 53 ref 110 plio2_signal_$s_l_ 000020 constant entry external dcl 54 ref 129 plio2_signal_$s_r_ 000022 constant entry external dcl 56 ref 154 ps based structure level 1 dcl 1-10 psp 000112 automatic pointer dcl 23 set ref 69* 70 73 74 76* 84* 97* 99 101 110* 127 129* 133 154* pspp parameter pointer dcl 23 ref 11 11 11 11 69 semi_sep 37(03) based bit(1) level 3 packed unaligned dcl 1-10 set ref 73* 74 sign 000103 automatic fixed bin(15,0) dcl 21 set ref 281* 283* 304 string 26(01) based bit(1) level 3 packed unaligned dcl 1-10 ref 127 sub 103 000114 automatic fixed bin(15,0) array level 2 dcl 25 set ref 307* substr builtin function dcl 58 set ref 81 90 108 124 124 129 129 255* 261 switch 37 based structure level 2 dcl 1-10 transmit_error 37(02) based bit(1) level 3 packed unaligned dcl 1-10 set ref 133* tsub 000101 automatic fixed bin(15,0) dcl 21 set ref 285* 295* 295 304* 304 307 value_saved 000422 automatic char(256) dcl 31 set ref 87* 90 108 124 vp 52 based pointer level 2 dcl 1-10 ref 99 vs_len 000110 automatic fixed bin(15,0) dcl 21 set ref 88* 107 107* 108 122* 122 124 126 x 000623 automatic char(1) dcl 43 set ref 255 261* 263 281 xchar 0(27) based char(1) level 2 packed unaligned dcl 39 set ref 263* xint 000622 automatic fixed bin(15,0) initial dcl 42 set ref 42* 263 264 269 295 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. bp automatic pointer dcl 23 fake_arg based bit(1) unaligned dcl 45 ignore automatic fixed bin(15,0) dcl 21 plio2_data_$badfsbp external static pointer dcl 1-82 plio2_data_$badjob external static bit(36) dcl 1-94 plio2_data_$fab2pstat external static pointer dcl 1-82 plio2_data_$fabpstat external static pointer dcl 1-82 plio2_data_$fsbpstat external static pointer dcl 1-82 plio2_data_$pliostringfsbp external static pointer dcl 1-82 plio2_data_$pspstat external static pointer dcl 1-82 plio2_data_$undef_file_sw external static bit(1) dcl 1-94 plio2_data_fsb_thread_ external static pointer initial dcl 1-91 plio2_get_util_$get_prep_ 000000 constant entry external dcl 51 plio2_get_util_$get_terminate_ 000000 constant entry external dcl 52 plio2_signal_$s_ 000000 constant entry external dcl 55 strlen automatic fixed bin(15,0) dcl 44 NAMES DECLARED BY EXPLICIT CONTEXT. GET 000734 constant label dcl 258 ref 270 289 296 308 NG 000523 constant label dcl 114 ref 278 302 NG_1 000526 constant label dcl 122 ref 103 OK 000461 constant label dcl 97 ref 248 action 000000 constant label array(0:8) dcl 246 ref 244 275 err123 000651 constant label dcl 139 ref 258 err124 000654 constant label dcl 144 ref 306 err143 000657 constant label dcl 148 ref 77 exit 000713 constant label dcl 159 ref 74 81 90 get_datum 000430 constant label dcl 84 get_value_data_ 000323 constant entry external dcl 11 gvd 000335 constant entry external dcl 11 gvd_ 000347 constant entry external dcl 11 id_parse 000714 constant label dcl 237 ref 96 loop 000400 constant label dcl 74 ref 82 86 111 134 137 plio2_gvd_ 000361 constant entry external dcl 11 re_act 000761 constant label dcl 271 ref 267 sandr 000662 constant label dcl 154 ref 142 146 151 transfer 000774 constant label dcl 275 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1204 1230 1057 1214 Length 1424 1057 24 160 124 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME get_value_data_ 454 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME get_value_data_ 000100 erno get_value_data_ 000101 tsub get_value_data_ 000102 num_sw get_value_data_ 000103 sign get_value_data_ 000104 bnc get_value_data_ 000105 blc get_value_data_ 000106 oi get_value_data_ 000107 ns_len get_value_data_ 000110 vs_len get_value_data_ 000111 first_non_space get_value_data_ 000112 psp get_value_data_ 000114 ldi get_value_data_ 000420 condition_name get_value_data_ 000422 value_saved get_value_data_ 000522 name_saved get_value_data_ 000622 xint get_value_data_ 000623 x get_value_data_ 000624 iaction get_value_data_ 000625 istate get_value_data_ 000626 itype get_value_data_ 000627 iactstate get_value_data_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out return mod_fx1 shorten_stack ext_entry set_support THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. plio2_gdt_$get_data_temp_ plio2_get_util_$get_field_data_ plio2_get_util_$get_field_list_ plio2_ldi_ plio2_signal_$s_l_ plio2_signal_$s_r_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 21 000313 42 000315 11 000320 69 000370 70 000374 73 000376 74 000400 76 000404 77 000413 78 000416 79 000421 81 000422 82 000426 84 000430 86 000437 87 000441 88 000444 89 000445 90 000447 93 000453 94 000456 96 000460 97 000461 99 000470 101 000475 102 000477 103 000501 107 000502 108 000507 110 000513 111 000522 114 000523 122 000526 124 000534 126 000551 127 000554 128 000563 129 000566 132 000644 133 000645 134 000650 139 000651 142 000653 144 000654 146 000656 148 000657 151 000661 154 000662 159 000713 237 000714 239 000716 240 000717 241 000721 243 000722 244 000723 246 000724 248 000726 250 000727 255 000730 258 000734 261 000737 262 000743 263 000744 264 000747 266 000752 267 000754 269 000755 270 000757 271 000761 273 000766 274 000771 275 000774 278 000775 281 000776 283 001004 285 001005 286 001006 288 001011 289 001012 291 001013 293 001015 295 001017 296 001024 298 001025 301 001027 302 001032 304 001033 305 001040 306 001041 307 001044 308 001047 ----------------------------------------------------------- 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