COMPILATION LISTING OF SEGMENT tape_ioi_modes Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1006.5 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* *********************************************************** */ 8 /* Mode setting and getting routines for tape_ioi_ */ 9 /* Written 7 May 1982 by Chris Jones */ 10 11 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 12 tape_ioi_modes: 13 proc; 14 15 /* Parameters */ 16 17 dcl p_code fixed bin (35) parameter; /* (O) system status code */ 18 dcl p_data_ptr ptr parameter; /* (I) pointer to the data for the mdoe */ 19 dcl p_mode char (*) parameter; /* (I) name of the mode in question */ 20 dcl p_tioi_id bit (36) aligned parameter;/* (I) tape_ioi_ activation ID */ 21 22 /* Automatic variables */ 23 24 dcl code fixed bin (35); 25 dcl mode_idx fixed bin; 26 27 /* Based variables */ 28 29 dcl align_value bit (1) based (p_data_ptr);/* "0"=>left, "1"=>right */ 30 dcl cif_value bit (6) based (p_data_ptr);/* channel instruction (ignored if error recovery on) */ 31 dcl data_value char (4) based (p_data_ptr); 32 /* data encoding (e.g. bcd, ascii) */ 33 dcl event_value fixed bin (71) based (p_data_ptr); 34 /* IPC event channel */ 35 dcl length_value bit (1) based (p_data_ptr);/* "0"b=>normal, "1"b=>special */ 36 dcl recovery_value bit (1) based (p_data_ptr);/* "0"b=>off, "1"b=>on */ 37 dcl req_len_value bit (1) based (p_data_ptr);/* "0"b=>off, "1"b=on */ 38 dcl wait_value bit (1) based (p_data_ptr);/* "0"b=>simplex, "1"b=>multiplex */ 39 40 /* Static storage */ 41 42 dcl MODE_NAMES (8) char (8) static options (constant) 43 init ("align", "cif", "data", "event", "length", "recovery", "wait", "req_len"); 44 45 /* Externals */ 46 47 dcl ioi_$set_event entry (fixed bin, fixed bin (71), fixed bin (35)); 48 dcl tape_ioi_utils$get_workspace_ptr 49 entry (bit (36) aligned, ptr); 50 51 dcl error_table_$bad_arg fixed bin (35) ext static; 52 dcl error_table_$bad_mode_value 53 fixed bin (35) ext static; 54 dcl error_table_$undefined_mode 55 fixed bin (35) ext static; 56 57 /* Builtins */ 58 59 dcl (hbound, null) builtin; 60 61 set_mode: 62 entry (p_tioi_id, p_mode, p_data_ptr, p_code); 63 64 call setup; 65 call get_mode_idx (mode_idx); /* doesn't return if the mode is invalid */ 66 67 goto MODE_SET (mode_idx); 68 69 MODE_SET (1): /* align */ 70 tai.align = align_value; 71 return; 72 73 MODE_SET (2): /* cif */ 74 tai.cif_code = cif_value; 75 return; 76 77 MODE_SET (3): /* data */ 78 if data_value = "bin" then 79 tai.data_code = "05"b3; 80 else if data_value = "bcd" then 81 tai.data_code = "04"b3; 82 else if data_value = "tap9" then 83 tai.data_code = "03"b3; 84 else if data_value = "asc" then 85 tai.data_code = "27"b3; 86 else if data_value = "ebc" then 87 tai.data_code = "24"b3; 88 else if data_value = "a/e" then 89 tai.data_code = "25"b3; 90 else call quit (error_table_$bad_mode_value); 91 return; 92 93 MODE_SET (4): /* event */ 94 call ioi_$set_event (tai.ioi_index, event_value, code); 95 if code ^= 0 then 96 call quit (code); 97 tai.event_id = event_value; 98 return; 99 100 MODE_SET (5): /* length */ 101 tai.modes.length = length_value; 102 return; 103 104 MODE_SET (6): /* recovery */ 105 tai.modes.recovery = recovery_value; 106 return; 107 108 MODE_SET (7): /* wait */ 109 tai.modes.wait = wait_value; 110 return; 111 MODE_SET (8): /* req_len */ 112 tai.modes.req_len = req_len_value; 113 return; 114 115 get_mode: 116 entry (p_tioi_id, p_mode, p_data_ptr, p_code); 117 118 call setup; 119 call get_mode_idx (mode_idx); /* doesn't return if the mode is invalid */ 120 121 goto MODE_GET (mode_idx); 122 123 MODE_GET (1): /* align */ 124 align_value = tai.align; 125 return; 126 127 MODE_GET (2): /* cif */ 128 cif_value = tai.cif_code; 129 return; 130 131 MODE_GET (3): /* data */ 132 if tai.data_code = "05"b3 then 133 data_value = "bin"; 134 else if tai.data_code = "04"b3 then 135 data_value = "bcd"; 136 else if tai.data_code = "03"b3 then 137 data_value = "tap9"; 138 else if tai.data_code = "27"b3 then 139 data_value = "asc"; 140 else if tai.data_code = "24"b3 then 141 data_value = "ebc"; 142 else if tai.data_code = "25"b3 then 143 data_value = "a/e"; 144 else data_value = "****"; /* how did this happen? */ 145 return; 146 147 MODE_GET (4): /* event */ 148 event_value = tai.event_id; 149 return; 150 151 MODE_GET (5): /* length */ 152 length_value = tai.modes.length; 153 return; 154 155 MODE_GET (6): /* recovery */ 156 recovery_value = tai.modes.recovery; 157 return; 158 159 MODE_GET (7): /* wait */ 160 wait_value = tai.modes.wait; 161 return; 162 163 MODE_GET (8): /* req_len */ 164 req_len_value = tai.modes.req_len; 165 return; 166 167 setup: 168 proc; 169 170 call tape_ioi_utils$get_workspace_ptr (p_tioi_id, wksp); 171 if wksp = null () then 172 call quit (error_table_$bad_arg); 173 174 p_code = 0; 175 176 end setup; 177 178 get_mode_idx: 179 proc (mode_idx); 180 181 dcl mode_idx fixed bin; 182 183 dcl mode_name char (8); 184 185 mode_name = p_mode; 186 do mode_idx = 1 to hbound (MODE_NAMES, 1); 187 if MODE_NAMES (mode_idx) = mode_name then 188 return; 189 end; 190 191 call quit (error_table_$undefined_mode); 192 193 end get_mode_idx; 194 195 quit: 196 proc (code); 197 198 dcl code fixed bin (35); 199 200 p_code = code; 201 goto ERROR_RETURN; 202 203 end quit; 204 205 ERROR_RETURN: 206 return; 207 1 1 /* START OF: tape_ioi_workspace.incl.pl1 * * * * * * * * * * * * * * * * */ 1 2 1 3 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(87-07-06,Hartogs), approve(87-07-06,MCR7726), 1 7* audit(87-08-27,GWMay), install(87-08-27,MR12.1-1094): 1 8* A) Added variable at_bot to structure tai. 1 9* B) Added density_command to tai structure for use by error_retry. 1 10* END HISTORY COMMENTS */ 1 11 1 12 1 13 /* 1 14* * This include file describes the workspace maintained by tape_ioi_. 1 15* * No programs other than tape_ioi_ programs should need to use this include file. 1 16* * 1 17* * This workspace is the ioi_ workspace. 1 18**/ 1 19 /* Written 8/78 by R.J.C. Kissel. */ 1 20 /* Modified April-May 1982 by Chris Jones for installation. */ 1 21 /* Modified 2/4/83 by Chris Jones to add last_terminate_time */ 1 22 1 23 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 1 24 1 25 dcl wksp ptr; 1 26 1 27 dcl 1 tai based (wksp) aligned, /* Activation info and order buffer. */ 1 28 2 ioi_index fixed bin, /* For communication with ioi. */ 1 29 2 tioi_id unal, /* 36 bit activation identifier. */ 1 30 3 segno bit (18), /* Segment number of the workspace. */ 1 31 3 actid fixed bin (18) unsigned, /* Per process, per activation number. */ 1 32 2 event_id fixed bin (71), /* All ipc done on this channel. */ 1 33 2 max_timeout fixed bin (71), /* maximum timeout value */ 1 34 2 cur_timeout fixed bin (71), /* current timeout value */ 1 35 2 last_terminate_time 1 36 fixed bin (71), /* when the last terminate interrupt was received */ 1 37 ( 1 38 2 workspace_max fixed bin (18) unsigned, /* max_len-1 to fit in 18 bits. */ 1 39 2 workspace_len fixed bin (18) unsigned, /* len-1 to fit in 18 bits. */ 1 40 2 buffer_list_offset fixed bin (18) unsigned, /* to list of all buffers */ 1 41 2 free_list_offset fixed bin (18) unsigned, /* to list of free buffers */ 1 42 2 queue_list_offset fixed bin (18) unsigned, /* to list of buffers which are queued */ 1 43 2 susp_list_offset fixed bin (18) unsigned, /* to list of suspended buffers */ 1 44 2 retry_count fixed bin (9) unsigned, /* number of times we've retried this operation */ 1 45 2 buffer_count fixed bin (9) unsigned, /* Number of I/O buffers allocated. */ 1 46 2 status_entry_count fixed bin (9) unsigned, /* Number of status queue entries. */ 1 47 2 status_entry_idx fixed bin (9) unsigned, /* index of next status entry to be used */ 1 48 2 status_queue_offset 1 49 fixed bin (18) unsigned, /* Status queue offset. */ 1 50 2 pad1 bit (12), 1 51 2 density_command bit (6), /* density of data on storage */ 1 52 2 workarea_len fixed bin (18) unsigned, /* len-1 to fit in 18 bits. */ 1 53 2 workarea_offset fixed bin (18) unsigned /* Workarea offset. */ 1 54 ) unal, 1 55 2 modes unal, /* tape_ioi_ modes settings. */ 1 56 3 data_code bit (6), /* Encoded representation of data mode. */ 1 57 3 cif_code bit (6), /* CIF field for channel instructions. */ 1 58 3 align bit (1), /* "0"b--left aligned, "1"b--right aligned. */ 1 59 3 length bit (1), /* "0"b--normal, "1"b--special. */ 1 60 3 recovery bit (1), /* "0"b--no error recovery, "1"b--error recovery. */ 1 61 3 wait bit (1), /* "0"b--simplex, "1"b--multiplex. */ 1 62 3 req_len bit (1), /* "0"b--don't need to know record length, "1"b--do need it */ 1 63 2 flags unal, /* Used internally by tape_ioi_. */ 1 64 3 order_queued bit (1), /* "0"b--no order queued, "1"b--order queued. */ 1 65 3 read_queued bit (1), /* "0"b--no read queued, "1"b--read queued. */ 1 66 3 write_queued bit (1), /* "0"b--no write queued, "1"b--write queued. */ 1 67 3 order_done bit (1), /* "1"b--the queue_order entry finished the order */ 1 68 3 workarea_last bit (1), /* "1"b--user workarea at end of workspace */ 1 69 3 special_status_expected 1 70 bit (1), /* set if we're waiting for a special interrupt */ 1 71 3 retry_in_progress 1 72 bit (1), 1 73 3 suspect_short_record bit (1), /* "1"b--got invalid DCW on list service last */ 1 74 3 at_bot bit (1), /* "1"b-- tape is positioned to BOT. */ 1 75 2 pad2 bit (1) unal, 1 76 2 order_idx fixed bin (9) unsigned unaligned, 1 77 /* encoding of last order queued */ 1 78 2 counts aligned, /* error and operation counts */ 1 79 3 total_reads fixed bin (35), 1 80 3 read_errors fixed bin (35), 1 81 3 total_writes fixed bin (35), 1 82 3 write_errors fixed bin (35), 1 83 3 total_orders fixed bin (35), 1 84 3 order_errors fixed bin (35), 1 85 3 times_status_lost 1 86 fixed bin (35), 1 87 3 extra_statuses fixed bin (35), 1 88 3 times_tape_stopped 1 89 fixed bin (35), 1 90 3 recovery_succeeded 1 91 (7) fixed bin (35), /* meters which kind of recovery worked */ 1 92 2 order_count_requested 1 93 fixed bin (18) unsigned unaligned, 1 94 2 order_count_done fixed bin (18) unsigned unaligned, 1 95 2 saved_special_status 1 96 bit (36), 1 97 2 order_data_ptr ptr, 1 98 2 order_idcw bit (36) aligned, 1 99 2 order_dcw bit (36) aligned, 1 100 2 order_data (1:8) bit (36) aligned; 1 101 /**** The buffers go here, followed by the status queue entries. There are min (1, tai.nbufs) status queue entries. */ 1 102 /**** It is considered a good idea to have the length of the previous structure b an even number of words long. This 1 103* is accomplished by the aligned pointer "order_data_ptr" being followed by an even number of words. */ 1 104 1 105 /* Tape buffer overlay. Each tape buffer consists of a variable length header followed by the data area. 1 106* Whenever a buffer pointer is returned to a caller of tape_ioi_, it points to the data area. */ 1 107 1 108 dcl 1 tbi based aligned, /* I/O buffer overlay. */ 1 109 ( 2 data_offset fixed bin (18) unsigned, /* to the data portion of the buffer */ 1 110 2 next_buf_offset fixed bin (18) unsigned, /* to the next buffer in list of all buffers */ 1 111 2 next_state_offset fixed bin (18) unsigned, /* to the next buffer in the same state */ 1 112 2 state fixed bin (9) unsigned, /* buffer state */ 1 113 2 ndcws fixed bin (9) unsigned /* number of DCWs necessary to fill buffer */ 1 114 ) unal, 1 115 2 modes unal like tai.modes, /* mode settings when buffer was queued */ 1 116 2 reserved bit (1) unal, /* "1"b=>won't be used for reads unless explicitly asked */ 1 117 2 buffer_len fixed bin (21), /* length of buffer in 9-bit bytes */ 1 118 2 data_len fixed bin (21), /* length of data in buffer in 9-bit bytes */ 1 119 2 bit_len fixed bin (24), /* length of data in buffer in bits */ 1 120 2 idcw_word bit (36), /* holds IDCW */ 1 121 2 dcw_words (1 refer (tbi.ndcws)) bit (36), 1 122 /* data DCWs */ 1 123 2 tdcw_word bit (36); /* transfer to the next buffer */ 1 124 /* This header is followed by the actual buffer area. */ 1 125 1 126 /* 1 127* * N__o_t_e_s 1 128* * 1 129* * Both structures are carefully packed into words, so care should be 1 130* * taken when modifying them. 1 131* * 1 132* * The workspace_max, workspace_len, and workarea_len must be at least one long. 1 133* * This allows us to store the value-1 and thus fit into 18 bits. 1 134* * 1 135* * None of the offsets (first_buf_off, statq_off, etc.) can be zero since the first 1 136* * word in the workspace contains the ioi_index. This allows a zero offset 1 137* * to be used as a null offset indication. 1 138* * 1 139* * The data_code, cif_code, and tbi.state are encoded as follows: 1 140* * 1 141* * data mode | buffer | 1 142* * setting | data_code cif_code | Meaning state | Meaning 1 143* * __________|__________ _________|_______________________ _______|________ 1 144* * bin | 05 20 | no retry, high 1 | ready 1 145* * bcd | 04 21 | no retry, low 2 | busy 1 146* * tap9 | 03 22 | no retry, high, deskew 3 | suspended 1 147* * asc | 27 23 | no retry, low, deskew 1 148* * ebc | 24 30 | retry, high 1 149* * a/e | 25 31 | retry, low 1 150* * 32 | retry, high, deskew 1 151* * 33 | retry, low, deskew 1 152* * 1 153* * 1 154* * Before data_code can be used for the command field in the IDCW the fourth 1 155* * bit (from the right) must be set to "0"b for read commands and to "1"b for write commands. 1 156* * 1 157* * The general layout of the workspace maintained by tape_ioi_ is as follows: 1 158* * 1 159* * _________________________ 1 160* * | | 1 161* * | General Information | 1 162* * | (see tai) | 1 163* * |_______________________| 1 164* * |______O____r__d__e__r_I_D_C_W________| 1 165* * |______O____r__d__e__r_D_C_W_________| 1 166* * | | 1 167* * | Order data buffer | 1 168* * | (8 words) | 1 169* * |_______________________| 1 170* * | | 1 171* * | Optional workarea | 1 172* * | (unlimited) | 1 173* * |_______________________| 1 174* * |________I__O___I_D_C_W_________| 1 175* * | | 1 176* * | IO DCW list | 1 177* * |_______________________| 1 178* * |________I__O___T_D_C_W_________| 1 179* * | | 1 180* * | IO buffer | 1 181* * | (user specified) | 1 182* * |_______________________| 1 183* * . 1 184* * . 1 185* * . 1 186* * _________________________ 1 187* * |________I__O___I_D_C_W_________| 1 188* * | | 1 189* * | IO DCW list | 1 190* * |_______________________| 1 191* * |__________z_e_r_o_s_________| 1 192* * | | 1 193* * | IO buffer | 1 194* * | (user specified) | 1 195* * |_______________________| 1 196* * | | 1 197* * | Status queue | 1 198* * | (at least one entry) | 1 199* * |_______________________| 1 200* * | | 1 201* * | Optional workarea | 1 202* * | (limited) | 1 203* * |_______________________| 1 204**/ 1 205 1 206 /* END OF: tape_ioi_workspace.incl.pl1 * * * * * * * * * * * * * * * * */ 208 209 210 end tape_ioi_modes; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0812.0 tape_ioi_modes.pl1 >spec>install>1112>tape_ioi_modes.pl1 208 1 08/27/87 1445.9 tape_ioi_workspace.incl.pl1 >ldd>include>tape_ioi_workspace.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. MODE_NAMES 000020 constant char(8) initial array packed unaligned dcl 42 ref 186 187 align 20(12) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 69* 123 align_value based bit(1) packed unaligned dcl 29 set ref 69 123* cif_code 20(06) based bit(6) level 3 packed packed unaligned dcl 1-27 set ref 73* 127 cif_value based bit(6) packed unaligned dcl 30 set ref 73 127* code parameter fixed bin(35,0) dcl 198 in procedure "quit" ref 195 200 code 000100 automatic fixed bin(35,0) dcl 24 in procedure "tape_ioi_modes" set ref 93* 95 95* data_code 20 based bit(6) level 3 packed packed unaligned dcl 1-27 set ref 77* 80* 82* 84* 86* 88* 131 134 136 138 140 142 data_value based char(4) packed unaligned dcl 31 set ref 77 80 82 84 86 88 131* 134* 136* 138* 140* 142* 144* error_table_$bad_arg 000014 external static fixed bin(35,0) dcl 51 set ref 171* error_table_$bad_mode_value 000016 external static fixed bin(35,0) dcl 52 set ref 90* error_table_$undefined_mode 000020 external static fixed bin(35,0) dcl 54 set ref 191* event_id 2 based fixed bin(71,0) level 2 dcl 1-27 set ref 97* 147 event_value based fixed bin(71,0) dcl 33 set ref 93* 97 147* hbound builtin function dcl 59 ref 186 ioi_$set_event 000010 constant entry external dcl 47 ref 93 ioi_index based fixed bin(17,0) level 2 dcl 1-27 set ref 93* length 20(13) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 100* 151 length_value based bit(1) packed unaligned dcl 35 set ref 100 151* mode_idx parameter fixed bin(17,0) dcl 181 in procedure "get_mode_idx" set ref 178 186* 187* mode_idx 000101 automatic fixed bin(17,0) dcl 25 in procedure "tape_ioi_modes" set ref 65* 67 119* 121 mode_name 000120 automatic char(8) packed unaligned dcl 183 set ref 185* 187 modes 20 based structure level 2 packed packed unaligned dcl 1-27 null builtin function dcl 59 ref 171 p_code parameter fixed bin(35,0) dcl 17 set ref 61 115 174* 200* p_data_ptr parameter pointer dcl 18 ref 61 69 73 77 80 82 84 86 88 93 97 100 104 108 111 115 123 127 131 134 136 138 140 142 144 147 151 155 159 163 p_mode parameter char packed unaligned dcl 19 ref 61 115 185 p_tioi_id parameter bit(36) dcl 20 set ref 61 115 170* recovery 20(14) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 104* 155 recovery_value based bit(1) packed unaligned dcl 36 set ref 104 155* req_len 20(16) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 111* 163 req_len_value based bit(1) packed unaligned dcl 37 set ref 111 163* tai based structure level 1 dcl 1-27 tape_ioi_utils$get_workspace_ptr 000012 constant entry external dcl 48 ref 170 wait 20(15) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 108* 159 wait_value based bit(1) packed unaligned dcl 38 set ref 108 159* wksp 000102 automatic pointer dcl 1-25 set ref 69 73 77 80 82 84 86 88 93 97 100 104 108 111 123 127 131 134 136 138 140 142 147 151 155 159 163 170* 171 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. tbi based structure level 1 dcl 1-108 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_RETURN 000542 constant label dcl 205 ref 201 MODE_GET 000010 constant label array(8) dcl 123 ref 121 MODE_SET 000000 constant label array(8) dcl 69 set ref 67 get_mode 000333 constant entry external dcl 115 get_mode_idx 000574 constant entry internal dcl 178 ref 65 119 quit 000633 constant entry internal dcl 195 ref 90 95 171 191 set_mode 000100 constant entry external dcl 61 setup 000543 constant entry internal dcl 167 ref 64 118 tape_ioi_modes 000065 constant entry external dcl 12 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 766 1010 652 776 Length 1206 652 22 161 114 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tape_ioi_modes 118 external procedure is an external procedure. setup internal procedure shares stack frame of external procedure tape_ioi_modes. get_mode_idx internal procedure shares stack frame of external procedure tape_ioi_modes. quit internal procedure shares stack frame of external procedure tape_ioi_modes. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tape_ioi_modes 000100 code tape_ioi_modes 000101 mode_idx tape_ioi_modes 000102 wksp tape_ioi_modes 000120 mode_name get_mode_idx THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioi_$set_event tape_ioi_utils$get_workspace_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$bad_mode_value error_table_$undefined_mode LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 12 000064 61 000072 64 000113 65 000114 67 000116 69 000120 71 000127 73 000130 75 000137 77 000140 80 000157 82 000170 84 000177 86 000210 88 000221 90 000232 91 000241 93 000242 95 000257 97 000263 98 000270 100 000271 102 000300 104 000301 106 000310 108 000311 110 000320 111 000321 113 000330 115 000331 118 000346 119 000347 121 000351 123 000353 125 000362 127 000363 129 000372 131 000373 134 000410 136 000421 138 000432 140 000443 142 000454 144 000465 145 000473 147 000474 149 000501 151 000502 153 000511 155 000512 157 000521 159 000522 161 000531 163 000532 165 000541 205 000542 167 000543 170 000544 171 000556 174 000571 176 000573 178 000574 185 000576 186 000604 187 000612 189 000621 191 000623 193 000632 195 000633 200 000635 201 000640 ----------------------------------------------------------- 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