COMPILATION LISTING OF SEGMENT tape_ioi_activate 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 1008.4 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 9 10 11 /****^ HISTORY COMMENTS: 12* 1) change(87-07-06,Hartogs), approve(87-07-06,MCR7726), 13* audit(87-08-27,GWMay), install(87-08-27,MR12.1-1094): 14* A) Set initial value for tai.at_bot to "1"b. 15* B) Set initial value of tai.density_command to ""b. 16* END HISTORY COMMENTS */ 17 18 19 /* Written by Chris Jones */ 20 /* Modified July 1983 by Chris Jones to zero "recovery_succeeded" array on a reset_statistics call, 21* and to accept a null error count pointer on a deactivate call. */ 22 23 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 24 tape_ioi_activate: 25 activate: 26 proc (p_rsc_ptr, p_tioi_info_ptr, p_tioi_id, p_code); 27 28 dcl p_code fixed bin (35) parameter; /* (O) system status code */ 29 dcl p_error_ptr ptr parameter; /* (I) pointer to structure for error counts */ 30 dcl p_rsc_ptr ptr parameter; /* (I) pointer to resource information */ 31 dcl p_tioi_id bit (36) aligned parameter;/* (O) tape_ioi_ assigned index */ 32 dcl p_tioi_info_ptr ptr parameter; /* (I) pointer to the tape_ioi_info structure */ 33 34 /* 35* DESCRIPTION 36* 37* This procedure sets up and initializes the ioi workspace which is 38* used by the rest of the tape_ioi_ procedures for internal communication 39* and interfacing with ioi_. It also builds the order command buffer and 40* the first entry in the status queue. 41* The assumption is made that the tai structure starts at offset 42* zero in the workspace. Other notes and restrictions are given in the 43* tape_ioi_workspace include file, and in comments throughout the procedure. 44**/ 45 /* JOURNALIZATION */ 46 /* Written April to May 1982 by Chris Jones from version of 8/78 by R.J.C. Kissel */ 47 48 /* Automatic Variables */ 49 50 dcl code fixed bin (35); /* error code */ 51 dcl device_number bit (6); 52 dcl ioi_index fixed bin (17); 53 dcl stq_length fixed bin (8); /* Units of status queue entries. */ 54 dcl stq_offset fixed bin (18); /* status queue offset in workspace (in words) */ 55 dcl wks_length fixed bin (19); /* current length of workspace */ 56 57 58 dcl 1 tape_ioi_id unal like tai.tioi_id; /* Built for this activation. */ 59 60 /* Static Variables */ 61 62 dcl next_tioi_actid fixed bin (18) unsigned unaligned internal static init (1); 63 /* Incremented for each activation in this process. */ 64 65 /* External Entries */ 66 67 dcl ioi_$set_event entry (fixed bin, fixed bin (71), fixed bin (35)); 68 dcl ioi_$set_status entry (fixed bin, fixed bin (18), fixed bin (8), fixed bin (35)); 69 dcl ioi_$timeout entry (fixed bin, fixed bin (71), fixed bin (35)); 70 dcl ioi_$workspace entry (fixed bin, ptr, fixed bin (19), fixed bin (35)); 71 dcl tape_ioi_utils$get_workspace_ptr 72 entry (bit (36) aligned, ptr); 73 dcl tape_ioi_utils$io_in_progress 74 entry (ptr) returns (bit (1) aligned); 75 76 dcl error_table_$bad_arg fixed bin (35) ext static; 77 dcl error_table_$device_active 78 fixed bin (35) ext static; 79 dcl error_table_$unimplemented_version 80 fixed bin (35) ext static; 81 82 /* Builtin Functions and Conditions */ 83 84 dcl (addr, after, baseno, bin, bit, mod, null, ptr, rel, size, string, unspec) 85 builtin; 86 87 /* Copy the input parameters. */ 88 89 p_tioi_id = ""b; /* just for starters */ 90 tioi_info_ptr = p_tioi_info_ptr; 91 if tioi_info.version ^= tioi_info_version then 92 call quit (error_table_$unimplemented_version); 93 94 ioi_index = tioi_info.ioi_index; 95 tape_info_ptr = p_rsc_ptr; 96 97 /* Initialize various lengths, offsets, and other values. */ 98 99 wksp = null; 100 101 wks_length = size (tai) + size (istat); /* (General info + order buffer) + one status entry. */ 102 103 stq_offset = size (tai) + mod (size (tai), 2); /* Status queue starts right after tai. */ 104 stq_length = 1; /* Units of status queue entries. */ 105 106 device_number = bit (bin (after (tape_info.device_name, "_"), 6), 6); 107 108 /* Set things up with ioi_. */ 109 110 call ioi_$workspace (ioi_index, wksp, wks_length, code); 111 call quit_if_error; 112 call ioi_$set_status (ioi_index, stq_offset, stq_length, code); 113 /* This _m_u_s_t follow the call to ioi_$workspace. */ 114 call quit_if_error; 115 call ioi_$set_event (ioi_index, tioi_info.event_id, code); 116 call quit_if_error; 117 call ioi_$timeout (ioi_index, tioi_info.timeout_max, code); 118 call quit_if_error; 119 120 /* Build the identifier for this tape_ioi_ activation. */ 121 122 tape_ioi_id.segno = baseno (wksp); 123 tape_ioi_id.actid = next_tioi_actid; 124 next_tioi_actid = next_tioi_actid + 1; /* Increment for the next activation. */ 125 126 /* Initialize the general information in the workspace maintained by tape_ioi_. */ 127 128 tai.ioi_index = ioi_index; 129 tai.tioi_id = tape_ioi_id; 130 tai.event_id = tioi_info.event_id; 131 tai.cur_timeout, tai.max_timeout = tioi_info.timeout_max; 132 tai.workspace_max = tioi_info.workspace_max - 1; 133 tai.workspace_len = wks_length - 1; 134 tai.buffer_list_offset = 0; 135 tai.free_list_offset = 0; 136 tai.queue_list_offset = 0; 137 tai.susp_list_offset = 0; 138 tai.buffer_count = 0; 139 tai.status_entry_count = stq_length; 140 tai.status_queue_offset = stq_offset; 141 tai.status_entry_idx = 0; 142 tai.workarea_len = 0; 143 tai.workarea_offset = 0; 144 145 /* Initialize the mode settings for tape_ioi_. */ 146 147 tai.modes.data_code = "05"b3; /* See the encoding in tape_ioi_workspace.incl.pl1 */ 148 tai.modes.cif_code = "20"b3; /* See the encoding in tape_ioi_workspace.incl.pl1 */ 149 tai.modes.align = (tape_info.model = 500); /* right alignment for model 500 tape drives only */ 150 tai.modes.length = "0"b; /* normal length processing */ 151 tai.modes.recovery = "1"b; /* we'll do the recovery by default */ 152 tai.modes.wait = "1"b; /* we'll do the blocking by default */ 153 tai.modes.req_len = "1"b; /* default is to always know the length of a record */ 154 155 /* Initialize the flags for tape_ioi_ operation. */ 156 157 string (tai.flags) = ""b; 158 159 tai.pad1, tai.pad2 = ""b; /* At activate time, rcp_ has positioned to BOT */ 160 tai.at_bot = "1"b; 161 tai.density_command = ""b; /* Will be set by tape_ioi_io */ 162 163 /* Initialize counts of operations and errors */ 164 165 tai.total_reads, tai.total_writes, tai.total_orders = 0; 166 tai.read_errors, tai.write_errors, tai.order_errors = 0; 167 tai.times_tape_stopped, tai.times_status_lost, tai.extra_statuses = 0; 168 tai.recovery_succeeded (*) = 0; 169 tai.retry_count = 0; 170 171 /* Initialize the order buffer IDCW. */ 172 173 idcwp = addr (tai.order_idcw); 174 idcw.command = "0"b; /* Set later with the actual order. */ 175 idcw.device = device_number; /* Set the device number. */ 176 idcw.ext = "0"b; /* Address extension. */ 177 idcw.code = "111"b; /* Must be set to this. */ 178 idcw.ext_ctl = "0"b; /* Do not reset address extension. */ 179 idcw.control = "00"b; /* A list of orders is not allowed. */ 180 idcw.chan_cmd = "02"b3; /* Non-data transfer command. */ 181 idcw.count = "0"b; /* Set later with the actual count. */ 182 183 /* Initialize the order buffer DCW, this is only used by a few order commands 184* that return data. In setting up the data address we use the fact that the 185* tai structure starts at a zero offset in the workspace to eliminate a subtraction. */ 186 187 dcwp = addr (tai.order_dcw); 188 dcw.address = rel (addr (tai.order_data)); 189 dcw.char_pos = "0"b; /* Start at the zeroth character. */ 190 dcw.m64 = "1"b; /* Character tally. */ 191 dcw.type = "00"b; /* Transmit and disconnect. */ 192 dcw.tally = "0"b; /* Set later with the actual tally. */ 193 194 /* Clear the order data buffer. */ 195 196 tai.order_data (*) = "0"b; 197 198 /* Clear the status queue. */ 199 200 isp = ptr (wksp, stq_offset); 201 unspec (isp -> istat) = "0"b; 202 203 /* Everything is done. Set the output parameters and return. */ 204 205 p_tioi_id = unspec (tape_ioi_id); /* Copy the structure into a 36 bit word. */ 206 p_code = 0; /* No errors. */ 207 return; 208 209 /* entry to deactivate tioi_ */ 210 deactivate: 211 entry (p_tioi_id, p_error_ptr, p_code); 212 213 if p_error_ptr ^= null () then 214 call get_statistics_proc; 215 if tape_ioi_utils$io_in_progress (wksp) then 216 call quit (error_table_$device_active); 217 218 /* Shrink the workspace and invalidate the ioi_index in it */ 219 220 ioi_index = tai.ioi_index; 221 call ioi_$set_status (ioi_index, 0, 1, (0)); 222 call ioi_$workspace (ioi_index, wksp, size (istat), (0)); 223 tai.ioi_index = 0; 224 unspec (tai.tioi_id) = ""b; 225 p_code = 0; 226 return; 227 228 /* entry to get the statistics without deactivating tape_ioi_ */ 229 get_statistics: 230 entry (p_tioi_id, p_error_ptr, p_code); 231 232 call get_statistics_proc; 233 return; 234 235 /* entry to reset the statistics */ 236 237 reset_statistics: 238 entry (p_tioi_id, p_code); 239 240 call setup; 241 if tape_ioi_utils$io_in_progress (wksp) then 242 call quit (error_table_$device_active); 243 tai.total_reads, tai.total_writes, tai.total_orders = 0; 244 tai.read_errors, tai.write_errors, tai.order_errors = 0; 245 tai.recovery_succeeded (*) = 0; 246 return; 247 248 /* Error handling code. */ 249 250 quit_if_error: 251 proc; 252 253 if code ^= 0 then 254 call quit (code); 255 256 end quit_if_error; 257 quit: 258 proc (code); 259 260 dcl code fixed bin (35); 261 262 p_code = code; 263 goto ERROR_RETURN; 264 265 end quit; 266 267 ERROR_RETURN: 268 return; 269 270 setup: 271 proc; 272 273 call tape_ioi_utils$get_workspace_ptr (p_tioi_id, wksp); 274 if wksp = null () then 275 call quit (error_table_$bad_arg); 276 277 end setup; 278 279 get_statistics_proc: 280 proc; 281 282 call setup; 283 tape_ioi_error_counts_ptr = p_error_ptr; 284 if tec.version ^= TEC_VERSION then 285 call quit (error_table_$unimplemented_version); 286 tec.reads.total = tai.total_reads; 287 tec.reads.errors = tai.read_errors; 288 tec.writes.total = tai.total_writes; 289 tec.writes.errors = tai.write_errors; 290 tec.orders.total = tai.total_orders; 291 tec.orders.errors = tai.order_errors; 292 tec.successful_retry_strategy = tai.recovery_succeeded; 293 294 end get_statistics_proc; 295 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 * * * * * * * * * * * * * * * * */ 296 297 2 1 /* Begin include file ..... tape_ioi_info.incl.pl1 */ 2 2 2 3 /* This structure defines data necessary as parameters to call tape_ioi_$activate */ 2 4 /* Prepared July 1976 by Larry Johnson */ 2 5 /* Modified the tenth anniversary of the Watergate breakin by Chris Jones */ 2 6 2 7 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 2 8 dcl tioi_info_ptr ptr; 2 9 2 10 dcl (tioi_info_version, tioi_info_version_1) 2 11 fixed bin static options (constant) init (1); 2 12 2 13 dcl 1 tioi_info aligned based (tioi_info_ptr), 2 14 2 version fixed bin, 2 15 2 ioi_index fixed bin, 2 16 2 timeout_max fixed bin (71), 2 17 2 event_id fixed bin (71), 2 18 2 workspace_max fixed bin (19); 2 19 2 20 /* End include file ..... tape_ioi_info.incl.pl1 */ 298 299 3 1 3 2 /* Begin include file ...... ioi_stat.incl.pl1 */ 3 3 /* Last modified 3/24/75 by Noel I. Morris */ 3 4 3 5 dcl isp ptr; /* pointer to status structure */ 3 6 3 7 dcl 1 istat based (isp) aligned, /* I/O Interfacer status structure */ 3 8 2 completion, /* completion flags */ 3 9 (3 st bit (1), /* "1"b if status returned */ 3 10 3 er bit (1), /* "1"b if status indicates error condition */ 3 11 3 run bit (1), /* "1"b if channel still running */ 3 12 3 time_out bit (1)) unal, /* "1"b if time-out occurred */ 3 13 2 level fixed bin (3), /* IOM interrupt level */ 3 14 2 offset fixed bin (18), /* DCW list offset */ 3 15 2 absaddr fixed bin (24), /* absolute address of workspace */ 3 16 2 iom_stat bit (72), /* IOM status */ 3 17 2 lpw bit (72); /* LPW residue */ 3 18 3 19 dcl imp ptr; /* pointer to message structure */ 3 20 3 21 dcl 1 imess based (imp) aligned, /* I/O Interfacer event message structure */ 3 22 (2 completion like istat.completion, /* completion flags */ 3 23 2 pad bit (11), 3 24 2 level bit (3), /* interrupt level */ 3 25 2 offset bit (18), /* DCW list offset */ 3 26 2 status bit (36)) unal; /* first 36 bits of status */ 3 27 3 28 /* End of include file ...... ioi_stat.incl.pl1 */ 3 29 300 301 4 1 4 2 /* Begin include file ...... iom_pcw.incl.pl1 */ 4 3 4 4 dcl pcwp ptr; /* pointer to PCW */ 4 5 4 6 dcl 1 pcw based (pcwp) aligned, /* Peripheral Control Word */ 4 7 (2 command bit (6), /* device command */ 4 8 2 device bit (6), /* device code */ 4 9 2 ext bit (6), /* address extension */ 4 10 2 code bit (3), /* should be "111"b for PCW */ 4 11 2 mask bit (1), /* channel mask bit */ 4 12 2 control bit (2), /* terminate/proceed and marker control bits */ 4 13 2 chan_cmd bit (6), /* type of I/O operation */ 4 14 2 count bit (6), /* record count or control character */ 4 15 2 mbz1 bit (3), 4 16 2 channel bit (6), /* channel number */ 4 17 2 mbz2 bit (27)) unal; 4 18 4 19 dcl idcwp ptr; /* pointer to IDCW */ 4 20 4 21 dcl 1 idcw based (idcwp) aligned, /* Instruction DCW */ 4 22 (2 command bit (6), /* device command */ 4 23 2 device bit (6), /* device code */ 4 24 2 ext bit (6), /* address extension */ 4 25 2 code bit (3), /* should be "111"b for PCW */ 4 26 2 ext_ctl bit (1), /* "1"b if address extension to be used */ 4 27 2 control bit (2), /* terminate/proceed and marker control bits */ 4 28 2 chan_cmd bit (6), /* type of I/O operation */ 4 29 2 count bit (6)) unal; /* record count or control character */ 4 30 4 31 /* End include file ...... iom_pcw.incl.pl1 */ 4 32 302 5 1 5 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 5 3 5 4 dcl dcwp ptr, /* pointer to DCW */ 5 5 tdcwp ptr; /* pointer to TDCW */ 5 6 5 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 5 8 (2 address bit (18), /* address for data transfer */ 5 9 2 char_pos bit (3), /* character position */ 5 10 2 m64 bit (1), /* non-zero for mod 64 address */ 5 11 2 type bit (2), /* DCW type */ 5 12 2 tally bit (12)) unal; /* tally for data transfer */ 5 13 5 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 5 15 (2 address bit (18), /* address to transfer to */ 5 16 2 mbz1 bit (4), 5 17 2 type bit (2), /* should be "10"b for TDCW */ 5 18 2 mbz2 bit (9), 5 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 5 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 5 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 5 22 5 23 /* End of include file ...... iom_dcw.incl.pl1 */ 5 24 303 304 6 1 /* Begin include file rcp_tape_info.incl.pl1 6 2* * 6 3* * Created on 12/16/74 by Bill Silver. 6 4* * Modified on 11/17/78 by Michael R. Jordan to add speed qualifier. 6 5* * Modified on 09/30/82 by J. A. Bush for version 3 structure info 6 6* * This include file defines the RCP device info structure for tapes. 6 7**/ 6 8 /* format: style4 */ 6 9 6 10 dcl tape_info_ptr ptr; /* Pointer to tape device info structure. */ 6 11 6 12 dcl tape_info_version_2 fixed bin internal static options (constant) init (2); 6 13 dcl tape_info_version_3 fixed bin internal static options (constant) init (3); 6 14 6 15 dcl 1 tape_info based (tape_info_ptr) aligned, /* RCP device info structure for tapes. */ 6 16 2 version_num fixed bin, /* Version number of this structure. */ 6 17 2 usage_time fixed bin, /* Number of minutes drive will/may be used. */ 6 18 2 wait_time fixed bin, /* Number of minutes user will/must wait. */ 6 19 2 system_flag bit (1), /* ON => user wants to be a system process. */ 6 20 2 device_name char (8), /* Tape drive name. */ 6 21 2 model fixed bin, /* Tape drive model number. */ 6 22 2 tracks fixed bin, /* Track type, 7 or 9. */ 6 23 2 density bit (36), /* Density capability: 200, 556, 800, 1600, 6250. */ 6 24 2 speed bit (36), /* Speed: 75, 125, 200. */ 6 25 2 unused_qualifier bit (36), /* Unused qualifier (must be "0"b). */ 6 26 2 volume_name char (32), /* Tape reel name. */ 6 27 2 write_flag bit (1), /* ON => writing on tape reel. */ 6 28 2 position_index fixed bin (35), /* Counter used to determine tape reel position. */ 6 29 6 30 /* Limit of version 2 structure, info below returned if version 3 or greater */ 6 31 6 32 2 volume_type fixed bin, /* Use rcp_volume_formats.incl.pl1 for decodes */ 6 33 2 volume_density fixed bin, /* 1 - 5 = 200, 556, 800, 1600, or 6250 BPI */ 6 34 2 opr_auth bit (1); /* "1"b => Operator Authentication was required */ 6 35 6 36 /* End of include file ... rcp_tape_info.incl.pl1 */ 305 306 7 1 /* START OF: tape_ioi_error_counts.incl.pl1 * * * * * * * * * * * * * * * * */ 7 2 /* Written 22 April 1982 by Chris Jones */ 7 3 7 4 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 7 5 dcl tape_ioi_error_counts_ptr 7 6 ptr; 7 7 7 8 dcl 1 tec based (tape_ioi_error_counts_ptr) aligned, 7 9 2 version char (8), 7 10 2 reads like tec_entry, 7 11 2 successful_retry_strategy 7 12 (7) fixed bin (35), 7 13 2 writes like tec_entry, 7 14 2 orders like tec_entry; 7 15 7 16 dcl 1 tec_entry based aligned, 7 17 2 total fixed bin (35), 7 18 2 errors fixed bin (35); 7 19 7 20 dcl TEC_VERSION_1 char (8) aligned internal static options (constant) init ("TECV001"); 7 21 7 22 dcl TEC_VERSION char (8) aligned internal static options (constant) init ("TECV001"); 7 23 7 24 /* END OF: tape_ioi_error_counts.incl.pl1 * * * * * * * * * * * * * * * * */ 307 308 309 end tape_ioi_activate; 310 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0811.3 tape_ioi_activate.pl1 >spec>install>1112>tape_ioi_activate.pl1 296 1 08/27/87 1445.9 tape_ioi_workspace.incl.pl1 >ldd>include>tape_ioi_workspace.incl.pl1 298 2 12/01/82 1039.8 tape_ioi_info.incl.pl1 >ldd>include>tape_ioi_info.incl.pl1 300 3 08/17/79 2215.0 ioi_stat.incl.pl1 >ldd>include>ioi_stat.incl.pl1 302 4 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 303 5 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 305 6 04/05/83 0853.0 rcp_tape_info.incl.pl1 >ldd>include>rcp_tape_info.incl.pl1 307 7 12/01/82 1039.8 tape_ioi_error_counts.incl.pl1 >ldd>include>tape_ioi_error_counts.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. TEC_VERSION 000000 constant char(8) initial dcl 7-22 ref 284 actid 0(18) 000106 automatic fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 58 set ref 123* addr builtin function dcl 84 ref 173 187 188 address based bit(18) level 2 packed packed unaligned dcl 5-7 set ref 188* after builtin function dcl 84 ref 106 align 20(12) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 149* at_bot 20(25) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 160* baseno builtin function dcl 84 ref 122 bin builtin function dcl 84 ref 106 bit builtin function dcl 84 ref 106 buffer_count 15(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 138* buffer_list_offset 13 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 134* chan_cmd 0(24) based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 180* char_pos 0(18) based bit(3) level 2 packed packed unaligned dcl 5-7 set ref 189* cif_code 20(06) based bit(6) level 3 packed packed unaligned dcl 1-27 set ref 148* code 0(18) based bit(3) level 2 in structure "idcw" packed packed unaligned dcl 4-21 in procedure "activate" set ref 177* code parameter fixed bin(35,0) dcl 260 in procedure "quit" ref 257 262 code 000100 automatic fixed bin(35,0) dcl 50 in procedure "activate" set ref 110* 112* 115* 117* 253 253* command based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 174* completion based structure level 2 dcl 3-7 control 0(22) based bit(2) level 2 packed packed unaligned dcl 4-21 set ref 179* count 0(30) based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 181* counts 21 based structure level 2 dcl 1-27 cur_timeout 6 based fixed bin(71,0) level 2 dcl 1-27 set ref 131* data_code 20 based bit(6) level 3 packed packed unaligned dcl 1-27 set ref 147* dcw based structure level 1 dcl 5-7 dcwp 000120 automatic pointer dcl 5-4 set ref 187* 188 189 190 191 192 density_command 16(30) based bit(6) level 2 packed packed unaligned dcl 1-27 set ref 161* device 0(06) based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 175* device_name 4 based char(8) level 2 dcl 6-15 ref 106 device_number 000101 automatic bit(6) packed unaligned dcl 51 set ref 106* 175 error_table_$bad_arg 000026 external static fixed bin(35,0) dcl 76 set ref 274* error_table_$device_active 000030 external static fixed bin(35,0) dcl 77 set ref 215* 241* error_table_$unimplemented_version 000032 external static fixed bin(35,0) dcl 79 set ref 91* 284* errors 16 based fixed bin(35,0) level 3 in structure "tec" dcl 7-8 in procedure "activate" set ref 291* errors 3 based fixed bin(35,0) level 3 in structure "tec" dcl 7-8 in procedure "activate" set ref 287* errors 14 based fixed bin(35,0) level 3 in structure "tec" dcl 7-8 in procedure "activate" set ref 289* event_id 4 based fixed bin(71,0) level 2 in structure "tioi_info" dcl 2-13 in procedure "activate" set ref 115* 130 event_id 2 based fixed bin(71,0) level 2 in structure "tai" dcl 1-27 in procedure "activate" set ref 130* ext 0(12) based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 176* ext_ctl 0(21) based bit(1) level 2 packed packed unaligned dcl 4-21 set ref 178* extra_statuses 30 based fixed bin(35,0) level 3 dcl 1-27 set ref 167* flags 20(17) based structure level 2 packed packed unaligned dcl 1-27 set ref 157* free_list_offset 13(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 135* idcw based structure level 1 dcl 4-21 idcwp 000116 automatic pointer dcl 4-19 set ref 173* 174 175 176 177 178 179 180 181 ioi_$set_event 000012 constant entry external dcl 67 ref 115 ioi_$set_status 000014 constant entry external dcl 68 ref 112 221 ioi_$timeout 000016 constant entry external dcl 69 ref 117 ioi_$workspace 000020 constant entry external dcl 70 ref 110 222 ioi_index 000102 automatic fixed bin(17,0) dcl 52 in procedure "activate" set ref 94* 110* 112* 115* 117* 128 220* 221* 222* ioi_index based fixed bin(17,0) level 2 in structure "tai" dcl 1-27 in procedure "activate" set ref 128* 220 223* ioi_index 1 based fixed bin(17,0) level 2 in structure "tioi_info" dcl 2-13 in procedure "activate" ref 94 isp 000114 automatic pointer dcl 3-5 set ref 101 200* 201 222 222 istat based structure level 1 dcl 3-7 set ref 101 201* 222 222 length 20(13) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 150* m64 0(21) based bit(1) level 2 packed packed unaligned dcl 5-7 set ref 190* max_timeout 4 based fixed bin(71,0) level 2 dcl 1-27 set ref 131* mod builtin function dcl 84 ref 103 model 6 based fixed bin(17,0) level 2 dcl 6-15 ref 149 modes 20 based structure level 2 packed packed unaligned dcl 1-27 next_tioi_actid 000010 internal static fixed bin(18,0) initial packed unsigned unaligned dcl 62 set ref 123 124* 124 null builtin function dcl 84 ref 99 213 274 order_data 50 based bit(36) array level 2 dcl 1-27 set ref 188 196* order_dcw 47 based bit(36) level 2 dcl 1-27 set ref 187 order_errors 26 based fixed bin(35,0) level 3 dcl 1-27 set ref 166* 244* 291 order_idcw 46 based bit(36) level 2 dcl 1-27 set ref 173 orders 15 based structure level 2 dcl 7-8 p_code parameter fixed bin(35,0) dcl 28 set ref 24 24 206* 210 225* 229 237 262* p_error_ptr parameter pointer dcl 29 ref 210 213 229 283 p_rsc_ptr parameter pointer dcl 30 ref 24 24 95 p_tioi_id parameter bit(36) dcl 31 set ref 24 24 89* 205* 210 229 237 273* p_tioi_info_ptr parameter pointer dcl 32 ref 24 24 90 pad1 16(18) based bit(12) level 2 packed packed unaligned dcl 1-27 set ref 159* pad2 20(26) based bit(1) level 2 packed packed unaligned dcl 1-27 set ref 159* ptr builtin function dcl 84 ref 200 queue_list_offset 14 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 136* read_errors 22 based fixed bin(35,0) level 3 dcl 1-27 set ref 166* 244* 287 reads 2 based structure level 2 dcl 7-8 recovery 20(14) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 151* recovery_succeeded 32 based fixed bin(35,0) array level 3 dcl 1-27 set ref 168* 245* 292 rel builtin function dcl 84 ref 188 req_len 20(16) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 153* retry_count 15 based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 169* segno 000106 automatic bit(18) level 2 packed packed unaligned dcl 58 set ref 122* size builtin function dcl 84 ref 101 101 103 103 222 222 status_entry_count 15(18) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 139* status_entry_idx 15(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 141* status_queue_offset 16 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 140* stq_length 000103 automatic fixed bin(8,0) dcl 53 set ref 104* 112* 139 stq_offset 000104 automatic fixed bin(18,0) dcl 54 set ref 103* 112* 140 200 string builtin function dcl 84 set ref 157* successful_retry_strategy 4 based fixed bin(35,0) array level 2 dcl 7-8 set ref 292* susp_list_offset 14(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 137* tai based structure level 1 dcl 1-27 set ref 101 103 103 tally 0(24) based bit(12) level 2 packed packed unaligned dcl 5-7 set ref 192* tape_info based structure level 1 dcl 6-15 tape_info_ptr 000122 automatic pointer dcl 6-10 set ref 95* 106 149 tape_ioi_error_counts_ptr 000124 automatic pointer dcl 7-5 set ref 283* 284 286 287 288 289 290 291 292 tape_ioi_id 000106 automatic structure level 1 packed packed unaligned dcl 58 set ref 129 205 tape_ioi_utils$get_workspace_ptr 000022 constant entry external dcl 71 ref 273 tape_ioi_utils$io_in_progress 000024 constant entry external dcl 73 ref 215 241 tec based structure level 1 dcl 7-8 tec_entry based structure level 1 dcl 7-16 timeout_max 2 based fixed bin(71,0) level 2 dcl 2-13 set ref 117* 131 times_status_lost 27 based fixed bin(35,0) level 3 dcl 1-27 set ref 167* times_tape_stopped 31 based fixed bin(35,0) level 3 dcl 1-27 set ref 167* tioi_id 1 based structure level 2 packed packed unaligned dcl 1-27 set ref 129* 224* tioi_info based structure level 1 dcl 2-13 tioi_info_ptr 000112 automatic pointer dcl 2-8 set ref 90* 91 94 115 117 130 131 132 tioi_info_version constant fixed bin(17,0) initial dcl 2-10 ref 91 total 13 based fixed bin(35,0) level 3 in structure "tec" dcl 7-8 in procedure "activate" set ref 288* total 2 based fixed bin(35,0) level 3 in structure "tec" dcl 7-8 in procedure "activate" set ref 286* total 15 based fixed bin(35,0) level 3 in structure "tec" dcl 7-8 in procedure "activate" set ref 290* total_orders 25 based fixed bin(35,0) level 3 dcl 1-27 set ref 165* 243* 290 total_reads 21 based fixed bin(35,0) level 3 dcl 1-27 set ref 165* 243* 286 total_writes 23 based fixed bin(35,0) level 3 dcl 1-27 set ref 165* 243* 288 type 0(22) based bit(2) level 2 packed packed unaligned dcl 5-7 set ref 191* unspec builtin function dcl 84 set ref 201* 205 224* version based char(8) level 2 in structure "tec" dcl 7-8 in procedure "activate" ref 284 version based fixed bin(17,0) level 2 in structure "tioi_info" dcl 2-13 in procedure "activate" ref 91 wait 20(15) based bit(1) level 3 packed packed unaligned dcl 1-27 set ref 152* wks_length 000105 automatic fixed bin(19,0) dcl 55 set ref 101* 110* 133 wksp 000110 automatic pointer dcl 1-25 set ref 99* 101 103 103 110* 122 128 129 130 131 131 132 133 134 135 136 137 138 139 140 141 142 143 147 148 149 150 151 152 153 157 159 159 160 161 165 165 165 166 166 166 167 167 167 168 169 173 187 188 196 200 215* 220 222* 223 224 241* 243 243 243 244 244 244 245 273* 274 286 287 288 289 290 291 292 workarea_len 17 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 142* workarea_offset 17(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 143* workspace_len 12(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 1-27 set ref 133* workspace_max 12 based fixed bin(18,0) level 2 in structure "tai" packed packed unsigned unaligned dcl 1-27 in procedure "activate" set ref 132* workspace_max 6 based fixed bin(19,0) level 2 in structure "tioi_info" dcl 2-13 in procedure "activate" ref 132 write_errors 24 based fixed bin(35,0) level 3 dcl 1-27 set ref 166* 244* 289 writes 13 based structure level 2 dcl 7-8 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. TEC_VERSION_1 internal static char(8) initial dcl 7-20 imess based structure level 1 dcl 3-21 imp automatic pointer dcl 3-19 pcw based structure level 1 dcl 4-6 pcwp automatic pointer dcl 4-4 tape_info_version_2 internal static fixed bin(17,0) initial dcl 6-12 tape_info_version_3 internal static fixed bin(17,0) initial dcl 6-13 tbi based structure level 1 dcl 1-108 tdcw based structure level 1 dcl 5-14 tdcwp automatic pointer dcl 5-4 tioi_info_version_1 internal static fixed bin(17,0) initial dcl 2-10 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_RETURN 000676 constant label dcl 267 ref 263 activate 000015 constant entry external dcl 24 deactivate 000462 constant entry external dcl 210 get_statistics 000577 constant entry external dcl 229 get_statistics_proc 000740 constant entry internal dcl 279 ref 213 232 quit 000705 constant entry internal dcl 257 ref 91 215 241 253 274 284 quit_if_error 000677 constant entry internal dcl 250 ref 111 114 116 118 reset_statistics 000617 constant entry external dcl 237 setup 000712 constant entry internal dcl 270 ref 240 282 tape_ioi_activate 000032 constant entry external dcl 24 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1212 1246 1024 1222 Length 1576 1024 34 313 166 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME activate 298 external procedure is an external procedure. quit_if_error internal procedure shares stack frame of external procedure activate. quit internal procedure shares stack frame of external procedure activate. setup internal procedure shares stack frame of external procedure activate. get_statistics_proc internal procedure shares stack frame of external procedure activate. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 next_tioi_actid activate STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME activate 000100 code activate 000101 device_number activate 000102 ioi_index activate 000103 stq_length activate 000104 stq_offset activate 000105 wks_length activate 000106 tape_ioi_id activate 000110 wksp activate 000112 tioi_info_ptr activate 000114 isp activate 000116 idcwp activate 000120 dcwp activate 000122 tape_info_ptr activate 000124 tape_ioi_error_counts_ptr activate THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out return_mac mdfx1 ext_entry any_to_any_truncate_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioi_$set_event ioi_$set_status ioi_$timeout ioi_$workspace tape_ioi_utils$get_workspace_ptr tape_ioi_utils$io_in_progress THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_arg error_table_$device_active error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 24 000010 89 000044 90 000045 91 000050 94 000061 95 000064 99 000070 101 000072 103 000074 104 000101 106 000103 110 000134 111 000151 112 000152 114 000167 115 000170 116 000204 117 000205 118 000221 122 000222 123 000225 124 000231 128 000236 129 000240 130 000243 131 000246 132 000251 133 000255 134 000260 135 000262 136 000264 137 000266 138 000270 139 000272 140 000275 141 000300 142 000302 143 000304 147 000306 148 000310 149 000312 150 000322 151 000324 152 000326 153 000330 157 000332 159 000334 160 000340 161 000342 165 000344 166 000347 167 000352 168 000355 169 000367 173 000371 174 000373 175 000375 176 000400 177 000402 178 000404 179 000406 180 000410 181 000412 187 000414 188 000416 189 000421 190 000423 191 000425 192 000427 196 000431 200 000443 201 000447 205 000452 206 000454 207 000455 210 000456 213 000474 215 000502 220 000525 221 000527 222 000550 223 000570 224 000571 225 000573 226 000574 229 000575 232 000611 233 000612 237 000613 240 000631 241 000632 243 000655 244 000661 245 000664 246 000675 267 000676 250 000677 253 000700 256 000704 257 000705 262 000707 263 000711 270 000712 273 000713 274 000724 277 000737 279 000740 282 000741 283 000742 284 000746 286 000761 287 000765 288 000767 289 000771 290 000773 291 000775 292 000777 294 001002 ----------------------------------------------------------- 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