COMPILATION LISTING OF SEGMENT tape_ioi_error_retry 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 1007.8 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) Error recovery changed to rewind on error at first label instead of a 15* backspace and erase. 16* B) Added SET_DENSITY routine. 17* C) Changed dcw commands to use descriptive variables. 18* END HISTORY COMMENTS */ 19 20 21 /* This is where all the tape error recovery is done. */ 22 23 /* Written Aug 1982 by Sherman D. Sprague. */ 24 /* Modified October 1983 by Chris Jones to add eof entry. */ 25 26 /* format: style4,delnl,insnl,indattr,ifthen,dclind9 */ 27 tape_ioi_error_retry: 28 proc (arg_wksp_ptr, arg_buf_ptr, arg_status_ptr, arg_code); 29 30 /* Parameters */ 31 32 dcl arg_buf_ptr ptr parameter; /* (I/O) pointer to the data to be or just processed */ 33 dcl arg_code fixed bin (35) parameter; /* (O) system status code */ 34 dcl arg_lost_status_cnt fixed bin parameter; /* (I) count of number of statuses lost */ 35 dcl arg_wksp_ptr ptr parameter; /* (O) pointer to the workspace */ 36 dcl arg_status_ptr ptr parameter; 37 38 /* Automatic variables */ 39 40 dcl backspace_cnt fixed bin; 41 dcl block_count fixed bin; 42 dcl code fixed bin (35); 43 dcl deadline fixed bin (71); 44 dcl status_present bit (1) aligned init ("0"b); 45 dcl status_special bit (36) aligned; 46 dcl tries fixed bin; 47 dcl write_sw bit (1) aligned; 48 49 /* Entries */ 50 51 dcl ioi_$connect entry (fixed bin, fixed bin (18), fixed bin (35)); 52 dcl ioi_$get_special_status 53 entry (fixed bin, bit (1) aligned, bit (36) aligned, fixed bin (35)); 54 dcl ipc_$block entry (ptr, ptr, fixed bin (35)); 55 dcl tape_ioi_utils$get_status 56 entry (ptr) returns (ptr); 57 58 dcl timer_manager_$alarm_wakeup 59 entry (fixed bin (71), bit (2), fixed bin (71)); 60 dcl timer_manager_$reset_alarm_wakeup 61 entry (fixed bin (71)); /* External static variables */ 62 63 dcl error_table_$bad_density 64 fixed bin (35) ext static; 65 dcl error_table_$device_active 66 fixed bin (35) ext static; 67 dcl error_table_$device_parity 68 fixed bin (35) ext static; 69 70 /* Builtins */ 71 72 dcl (addr, addrel, bin, bit, clock, rel, substr, unspec) 73 builtin; 74 75 76 77 wksp = arg_wksp_ptr; 78 if tai.density_command = ""b then do; 79 arg_code = error_table_$bad_density; 80 return; 81 end; 82 dcwp = addr (tai.order_data); /* use the order data area as a scratch area */ 83 idcwp = addr (arg_buf_ptr -> tbi.idcw_word); /* set up the current idcw */ 84 write_sw = substr (idcw.command, 3, 1); /* are we writing ? */ 85 if write_sw then do; 86 if tai.at_bot then do; 87 call REWIND (dcwp); /* rewind to bot */ 88 call SET_DENSITY (dcwp); /* and reset device density */ 89 call TDCW (dcwp, idcwp); /* build idcw to bridge lists */ 90 end; 91 else do; 92 call BACKSPACE (1, dcwp); /* go backspace */ 93 call ERASE (dcwp); 94 call TDCW (dcwp, idcwp); /* build idcw to bridge our lists */ 95 end; 96 call CONNECT (addr (tai.order_data)); /* send him on his way... */ 97 end; 98 99 else do; 100 if idcw.chan_cmd = MAX_READ_OPT then do; /* have we tried all options yet */ 101 arg_code = error_table_$device_parity; /* if so return code */ 102 return; 103 end; 104 idcw.chan_cmd = bit (bin (bin (idcw.chan_cmd) + 1, 6), 6); 105 /* add one to the channel command */ 106 call BACKSPACE (1, dcwp); /* go backspace */ 107 call TDCW (dcwp, idcwp); 108 call CONNECT (addr (tai.order_data)); /* send him on his way */ 109 end; 110 return; 111 112 backspace: 113 entry (arg_wksp_ptr, arg_buf_ptr, arg_status_ptr, arg_lost_status_cnt, arg_code); 114 115 wksp = arg_wksp_ptr; /* setup the workspace pointer */ 116 statp = addr (arg_status_ptr -> istat.iom_stat); 117 dcwp = addr (tai.order_data); 118 idcwp = addr (arg_buf_ptr -> tbi.idcw_word); /* get the current idcw */ 119 120 if status.initiate then 121 backspace_cnt = arg_lost_status_cnt; 122 else backspace_cnt = arg_lost_status_cnt + 1; 123 call BACKSPACE (backspace_cnt, dcwp); /* go backspace */ 124 call TDCW (dcwp, idcwp); 125 call CONNECT (addr (tai.order_data)); /* send him on his way.... */ 126 return; 127 128 eof: 129 entry (arg_wksp_ptr, arg_code); 130 131 wksp = arg_wksp_ptr; 132 idcwp = addr (tai.order_data (1)); 133 dcwp = addr (tai.order_idcw); 134 call BACKSPACE (1, dcwp); 135 call ERASE (dcwp); 136 call CONNECT (addr (tai.order_idcw)); 137 return; 138 139 140 /* This procedure will backspace the tape */ 141 142 BACKSPACE: 143 proc (rec_bk, dcwp); 144 dcl rec_bk fixed bin parameter; /* records to be backspaced */ 145 dcl dcwp ptr parameter; /* pointer into IDCW list */ 146 147 dcwp -> idcw = idcw; 148 dcwp -> idcw.command = BACKSPACE_ONE_RECORD; 149 dcwp -> idcw.control = CONTINUE_NO_MARKER; 150 dcwp -> idcw.chan_cmd = NONDATA_TRANSFER; 151 dcwp -> idcw.count = bit (bin (rec_bk, 6), 6); 152 dcwp = addrel (dcwp, 1); 153 154 end BACKSPACE; 155 156 BLOCK: 157 proc; 158 159 160 dcl 1 auto_event_wait_info aligned like event_wait_info; 161 162 event_wait_channel.channel_id = tai.event_id; 163 if tai.special_status_expected then 164 call timer_manager_$alarm_wakeup (TWO_MINUTES, RELATIVE_SECONDS, tai.event_id); 165 call ipc_$block (addr (event_wait_channel), addr (auto_event_wait_info), (0)); 166 if tai.special_status_expected then 167 call timer_manager_$reset_alarm_wakeup (tai.event_id); 168 /* remove the extra event */ 169 170 end BLOCK; 171 172 CONNECT: 173 proc (idcwp); 174 175 dcl idcwp ptr parameter; /* pointer to start of dcw list */ 176 177 deadline = clock () + TEN_SECONDS; 178 do while ("1"b); 179 do tries = 1 to 10; 180 call ioi_$connect (tai.ioi_index, bin (rel (idcwp)), arg_code); 181 if arg_code ^= error_table_$device_active then 182 return; 183 end; 184 if clock () > deadline then 185 return; 186 end; 187 188 end CONNECT; 189 190 /* This procedure will erase one record on the tape */ 191 192 ERASE: 193 proc (dcwp); 194 dcl dcwp ptr parameter; /* pointer into IDCW list */ 195 196 dcwp -> idcw = idcw; 197 dcwp -> idcw.command = ERASE_COMMAND; 198 dcwp -> idcw.control = CONTINUE_NO_MARKER; 199 dcwp -> idcw.chan_cmd = NONDATA_TRANSFER; 200 dcwp -> idcw.count = ONE_COUNT; 201 dcwp = addrel (dcwp, 1); 202 203 end ERASE; 204 205 /* This procedure will rewind the tape */ 206 207 REWIND: 208 proc (dcwp); 209 210 dcl dcwp ptr parameter; /* pointer into IDCW list */ 211 212 dcwp -> idcw = idcw; 213 dcwp -> idcw.command = REWIND_COMMAND; 214 dcwp -> idcw.control = NO_CONTINUE_NO_MARKER; 215 dcwp -> idcw.chan_cmd = NONDATA_TRANSFER; 216 dcwp -> idcw.count = ONE_COUNT; 217 218 call ioi_$get_special_status (tai.ioi_index, status_present, status_special, code); 219 /* First call flushes residue status */ 220 call CONNECT (dcwp); 221 status_present = "0"b; 222 call ioi_$get_special_status (tai.ioi_index, status_present, status_special, code); 223 224 tai.special_status_expected = "1"b; 225 do block_count = 1 to 2; /* Allows up to four minutes to rewind. */ 226 if ^status_present then do; 227 call BLOCK; 228 call ioi_$get_special_status (tai.ioi_index, status_present, status_special, code); 229 end; 230 end; 231 tai.special_status_expected = "0"b; 232 233 isp = tape_ioi_utils$get_status (wksp); /* call to get_status sets indexes correctly */ 234 return; 235 236 end REWIND; 237 238 /* This procedure will set the device density to the stored value */ 239 240 SET_DENSITY: 241 proc (dcwp); 242 dcl dcwp ptr parameter; /* pointer into IDCW list */ 243 244 dcwp -> idcw = idcw; 245 dcwp -> idcw.command = tai.density_command; 246 dcwp -> idcw.control = CONTINUE_NO_MARKER; 247 dcwp -> idcw.chan_cmd = NONDATA_TRANSFER; 248 dcwp -> idcw.count = ONE_COUNT; 249 dcwp = addrel (dcwp, 1); 250 251 end SET_DENSITY; 252 253 /* This procedure will build a TDCW to join two idcw lists */ 254 255 TDCW: 256 proc (dcwp, dest_idcwp); 257 dcl dcwp ptr parameter; /* pointer into IDCW list */ 258 dcl dest_idcwp ptr parameter; /* pointer to the rest of the list */ 259 260 tdcwp = dcwp; /* point as to a tdcw */ 261 unspec (tdcw) = ""b; 262 tdcw.address = rel (dest_idcwp); 263 tdcw.type = TDCW_TYPE; 264 tdcw.rel = RELATIVE_MODE; 265 266 end TDCW; 267 268 1 1 /* BEGIN INCLUDE FILE ... event_wait_channel.incl.pl1 */ 1 2 1 3 /* ipc_$block wait list with one channel 1 4* 1 5* Written 9-May-79 by M. N. Davidoff. 1 6**/ 1 7 1 8 declare 1 event_wait_channel aligned, 1 9 2 n_channels fixed bin initial (1), /* number of channels */ 1 10 2 pad bit (36), 1 11 2 channel_id (1) fixed bin (71); /* event channel to wait on */ 1 12 1 13 /* END INCLUDE FILE ... event_wait_channel.incl.pl1 */ 269 270 2 1 /* BEGIN INCLUDE FILE event_wait_info.incl.pl1 */ 2 2 2 3 /* T. Casey, May 1978 */ 2 4 2 5 dcl event_wait_info_ptr ptr; 2 6 2 7 dcl 1 event_wait_info aligned based (event_wait_info_ptr), /* argument structure filled in on return from ipc_$block */ 2 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 2 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 2 10 2 sender bit (36), /* process id of sender */ 2 11 2 origin, 2 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 2 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 2 14 2 channel_index fixed bin; /* index of this channel in the event wait list */ 2 15 2 16 /* END INCLUDE FILE event_wait_info.incl.pl1 */ 271 272 3 1 /* START OF: tape_ioi_workspace.incl.pl1 * * * * * * * * * * * * * * * * */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(87-07-06,Hartogs), approve(87-07-06,MCR7726), 3 7* audit(87-08-27,GWMay), install(87-08-27,MR12.1-1094): 3 8* A) Added variable at_bot to structure tai. 3 9* B) Added density_command to tai structure for use by error_retry. 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 /* 3 14* * This include file describes the workspace maintained by tape_ioi_. 3 15* * No programs other than tape_ioi_ programs should need to use this include file. 3 16* * 3 17* * This workspace is the ioi_ workspace. 3 18**/ 3 19 /* Written 8/78 by R.J.C. Kissel. */ 3 20 /* Modified April-May 1982 by Chris Jones for installation. */ 3 21 /* Modified 2/4/83 by Chris Jones to add last_terminate_time */ 3 22 3 23 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 3 24 3 25 dcl wksp ptr; 3 26 3 27 dcl 1 tai based (wksp) aligned, /* Activation info and order buffer. */ 3 28 2 ioi_index fixed bin, /* For communication with ioi. */ 3 29 2 tioi_id unal, /* 36 bit activation identifier. */ 3 30 3 segno bit (18), /* Segment number of the workspace. */ 3 31 3 actid fixed bin (18) unsigned, /* Per process, per activation number. */ 3 32 2 event_id fixed bin (71), /* All ipc done on this channel. */ 3 33 2 max_timeout fixed bin (71), /* maximum timeout value */ 3 34 2 cur_timeout fixed bin (71), /* current timeout value */ 3 35 2 last_terminate_time 3 36 fixed bin (71), /* when the last terminate interrupt was received */ 3 37 ( 3 38 2 workspace_max fixed bin (18) unsigned, /* max_len-1 to fit in 18 bits. */ 3 39 2 workspace_len fixed bin (18) unsigned, /* len-1 to fit in 18 bits. */ 3 40 2 buffer_list_offset fixed bin (18) unsigned, /* to list of all buffers */ 3 41 2 free_list_offset fixed bin (18) unsigned, /* to list of free buffers */ 3 42 2 queue_list_offset fixed bin (18) unsigned, /* to list of buffers which are queued */ 3 43 2 susp_list_offset fixed bin (18) unsigned, /* to list of suspended buffers */ 3 44 2 retry_count fixed bin (9) unsigned, /* number of times we've retried this operation */ 3 45 2 buffer_count fixed bin (9) unsigned, /* Number of I/O buffers allocated. */ 3 46 2 status_entry_count fixed bin (9) unsigned, /* Number of status queue entries. */ 3 47 2 status_entry_idx fixed bin (9) unsigned, /* index of next status entry to be used */ 3 48 2 status_queue_offset 3 49 fixed bin (18) unsigned, /* Status queue offset. */ 3 50 2 pad1 bit (12), 3 51 2 density_command bit (6), /* density of data on storage */ 3 52 2 workarea_len fixed bin (18) unsigned, /* len-1 to fit in 18 bits. */ 3 53 2 workarea_offset fixed bin (18) unsigned /* Workarea offset. */ 3 54 ) unal, 3 55 2 modes unal, /* tape_ioi_ modes settings. */ 3 56 3 data_code bit (6), /* Encoded representation of data mode. */ 3 57 3 cif_code bit (6), /* CIF field for channel instructions. */ 3 58 3 align bit (1), /* "0"b--left aligned, "1"b--right aligned. */ 3 59 3 length bit (1), /* "0"b--normal, "1"b--special. */ 3 60 3 recovery bit (1), /* "0"b--no error recovery, "1"b--error recovery. */ 3 61 3 wait bit (1), /* "0"b--simplex, "1"b--multiplex. */ 3 62 3 req_len bit (1), /* "0"b--don't need to know record length, "1"b--do need it */ 3 63 2 flags unal, /* Used internally by tape_ioi_. */ 3 64 3 order_queued bit (1), /* "0"b--no order queued, "1"b--order queued. */ 3 65 3 read_queued bit (1), /* "0"b--no read queued, "1"b--read queued. */ 3 66 3 write_queued bit (1), /* "0"b--no write queued, "1"b--write queued. */ 3 67 3 order_done bit (1), /* "1"b--the queue_order entry finished the order */ 3 68 3 workarea_last bit (1), /* "1"b--user workarea at end of workspace */ 3 69 3 special_status_expected 3 70 bit (1), /* set if we're waiting for a special interrupt */ 3 71 3 retry_in_progress 3 72 bit (1), 3 73 3 suspect_short_record bit (1), /* "1"b--got invalid DCW on list service last */ 3 74 3 at_bot bit (1), /* "1"b-- tape is positioned to BOT. */ 3 75 2 pad2 bit (1) unal, 3 76 2 order_idx fixed bin (9) unsigned unaligned, 3 77 /* encoding of last order queued */ 3 78 2 counts aligned, /* error and operation counts */ 3 79 3 total_reads fixed bin (35), 3 80 3 read_errors fixed bin (35), 3 81 3 total_writes fixed bin (35), 3 82 3 write_errors fixed bin (35), 3 83 3 total_orders fixed bin (35), 3 84 3 order_errors fixed bin (35), 3 85 3 times_status_lost 3 86 fixed bin (35), 3 87 3 extra_statuses fixed bin (35), 3 88 3 times_tape_stopped 3 89 fixed bin (35), 3 90 3 recovery_succeeded 3 91 (7) fixed bin (35), /* meters which kind of recovery worked */ 3 92 2 order_count_requested 3 93 fixed bin (18) unsigned unaligned, 3 94 2 order_count_done fixed bin (18) unsigned unaligned, 3 95 2 saved_special_status 3 96 bit (36), 3 97 2 order_data_ptr ptr, 3 98 2 order_idcw bit (36) aligned, 3 99 2 order_dcw bit (36) aligned, 3 100 2 order_data (1:8) bit (36) aligned; 3 101 /**** The buffers go here, followed by the status queue entries. There are min (1, tai.nbufs) status queue entries. */ 3 102 /**** It is considered a good idea to have the length of the previous structure b an even number of words long. This 3 103* is accomplished by the aligned pointer "order_data_ptr" being followed by an even number of words. */ 3 104 3 105 /* Tape buffer overlay. Each tape buffer consists of a variable length header followed by the data area. 3 106* Whenever a buffer pointer is returned to a caller of tape_ioi_, it points to the data area. */ 3 107 3 108 dcl 1 tbi based aligned, /* I/O buffer overlay. */ 3 109 ( 2 data_offset fixed bin (18) unsigned, /* to the data portion of the buffer */ 3 110 2 next_buf_offset fixed bin (18) unsigned, /* to the next buffer in list of all buffers */ 3 111 2 next_state_offset fixed bin (18) unsigned, /* to the next buffer in the same state */ 3 112 2 state fixed bin (9) unsigned, /* buffer state */ 3 113 2 ndcws fixed bin (9) unsigned /* number of DCWs necessary to fill buffer */ 3 114 ) unal, 3 115 2 modes unal like tai.modes, /* mode settings when buffer was queued */ 3 116 2 reserved bit (1) unal, /* "1"b=>won't be used for reads unless explicitly asked */ 3 117 2 buffer_len fixed bin (21), /* length of buffer in 9-bit bytes */ 3 118 2 data_len fixed bin (21), /* length of data in buffer in 9-bit bytes */ 3 119 2 bit_len fixed bin (24), /* length of data in buffer in bits */ 3 120 2 idcw_word bit (36), /* holds IDCW */ 3 121 2 dcw_words (1 refer (tbi.ndcws)) bit (36), 3 122 /* data DCWs */ 3 123 2 tdcw_word bit (36); /* transfer to the next buffer */ 3 124 /* This header is followed by the actual buffer area. */ 3 125 3 126 /* 3 127* * N__o_t_e_s 3 128* * 3 129* * Both structures are carefully packed into words, so care should be 3 130* * taken when modifying them. 3 131* * 3 132* * The workspace_max, workspace_len, and workarea_len must be at least one long. 3 133* * This allows us to store the value-1 and thus fit into 18 bits. 3 134* * 3 135* * None of the offsets (first_buf_off, statq_off, etc.) can be zero since the first 3 136* * word in the workspace contains the ioi_index. This allows a zero offset 3 137* * to be used as a null offset indication. 3 138* * 3 139* * The data_code, cif_code, and tbi.state are encoded as follows: 3 140* * 3 141* * data mode | buffer | 3 142* * setting | data_code cif_code | Meaning state | Meaning 3 143* * __________|__________ _________|_______________________ _______|________ 3 144* * bin | 05 20 | no retry, high 1 | ready 3 145* * bcd | 04 21 | no retry, low 2 | busy 3 146* * tap9 | 03 22 | no retry, high, deskew 3 | suspended 3 147* * asc | 27 23 | no retry, low, deskew 3 148* * ebc | 24 30 | retry, high 3 149* * a/e | 25 31 | retry, low 3 150* * 32 | retry, high, deskew 3 151* * 33 | retry, low, deskew 3 152* * 3 153* * 3 154* * Before data_code can be used for the command field in the IDCW the fourth 3 155* * bit (from the right) must be set to "0"b for read commands and to "1"b for write commands. 3 156* * 3 157* * The general layout of the workspace maintained by tape_ioi_ is as follows: 3 158* * 3 159* * _________________________ 3 160* * | | 3 161* * | General Information | 3 162* * | (see tai) | 3 163* * |_______________________| 3 164* * |______O____r__d__e__r_I_D_C_W________| 3 165* * |______O____r__d__e__r_D_C_W_________| 3 166* * | | 3 167* * | Order data buffer | 3 168* * | (8 words) | 3 169* * |_______________________| 3 170* * | | 3 171* * | Optional workarea | 3 172* * | (unlimited) | 3 173* * |_______________________| 3 174* * |________I__O___I_D_C_W_________| 3 175* * | | 3 176* * | IO DCW list | 3 177* * |_______________________| 3 178* * |________I__O___T_D_C_W_________| 3 179* * | | 3 180* * | IO buffer | 3 181* * | (user specified) | 3 182* * |_______________________| 3 183* * . 3 184* * . 3 185* * . 3 186* * _________________________ 3 187* * |________I__O___I_D_C_W_________| 3 188* * | | 3 189* * | IO DCW list | 3 190* * |_______________________| 3 191* * |__________z_e_r_o_s_________| 3 192* * | | 3 193* * | IO buffer | 3 194* * | (user specified) | 3 195* * |_______________________| 3 196* * | | 3 197* * | Status queue | 3 198* * | (at least one entry) | 3 199* * |_______________________| 3 200* * | | 3 201* * | Optional workarea | 3 202* * | (limited) | 3 203* * |_______________________| 3 204**/ 3 205 3 206 /* END OF: tape_ioi_workspace.incl.pl1 * * * * * * * * * * * * * * * * */ 273 274 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 275 276 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 277 278 6 1 6 2 /* Begin include file ...... iom_stat.incl.pl1 */ 6 3 /* Last modified on 10/31/74 by Noel I. Morris */ 6 4 6 5 dcl statp ptr; /* pointer to status */ 6 6 6 7 dcl 1 status based (statp) aligned, /* IOM status information */ 6 8 (2 t bit (1), /* set to "1"b by IOM */ 6 9 2 power bit (1), /* non-zero if peripheral absent or power off */ 6 10 2 major bit (4), /* major status */ 6 11 2 sub bit (6), /* substatus */ 6 12 2 eo bit (1), /* even/odd bit */ 6 13 2 marker bit (1), /* non-zero if marker status */ 6 14 2 soft bit (2), /* software status */ 6 15 2 initiate bit (1), /* initiate bit */ 6 16 2 abort bit (1), /* software abort bit */ 6 17 2 channel_stat bit (3), /* IOM channel status */ 6 18 2 central_stat bit (3), /* IOM central status */ 6 19 2 mbz bit (6), 6 20 2 rcount bit (6), /* record count residue */ 6 21 2 address bit (18), /* DCW address residue */ 6 22 2 char_pos bit (3), /* character position residue */ 6 23 2 r bit (1), /* non-zero if reading */ 6 24 2 type bit (2), /* type of last DCW */ 6 25 2 tally bit (12)) unal; /* DCW tally residue */ 6 26 6 27 dcl 1 faultword based (statp) aligned, /* system fault word */ 6 28 (2 mbz1 bit (9), 6 29 2 channel bit (9), /* channel number */ 6 30 2 serv_req bit (5), /* service request */ 6 31 2 mbz2 bit (3), 6 32 2 controller_fault bit (4), /* system controller fault code */ 6 33 2 io_fault bit (6)) unal; /* I/O fault code */ 6 34 6 35 dcl 1 special_status based (statp) aligned, /* special status from PSIA */ 6 36 (2 t bit (1), /* entry present bit */ 6 37 2 channel bit (8), /* channel number */ 6 38 2 pad1 bit (3), 6 39 2 device bit (6), /* device address */ 6 40 2 pad2 bit (1), 6 41 2 byte2 bit (8), /* device dependent information */ 6 42 2 pad3 bit (1), 6 43 2 byte3 bit (8)) unal; /* device dependent information */ 6 44 6 45 /* End of include file iom_stat.incl.pl1 */ 6 46 279 280 7 1 7 2 /* Begin include file ...... ioi_stat.incl.pl1 */ 7 3 /* Last modified 3/24/75 by Noel I. Morris */ 7 4 7 5 dcl isp ptr; /* pointer to status structure */ 7 6 7 7 dcl 1 istat based (isp) aligned, /* I/O Interfacer status structure */ 7 8 2 completion, /* completion flags */ 7 9 (3 st bit (1), /* "1"b if status returned */ 7 10 3 er bit (1), /* "1"b if status indicates error condition */ 7 11 3 run bit (1), /* "1"b if channel still running */ 7 12 3 time_out bit (1)) unal, /* "1"b if time-out occurred */ 7 13 2 level fixed bin (3), /* IOM interrupt level */ 7 14 2 offset fixed bin (18), /* DCW list offset */ 7 15 2 absaddr fixed bin (24), /* absolute address of workspace */ 7 16 2 iom_stat bit (72), /* IOM status */ 7 17 2 lpw bit (72); /* LPW residue */ 7 18 7 19 dcl imp ptr; /* pointer to message structure */ 7 20 7 21 dcl 1 imess based (imp) aligned, /* I/O Interfacer event message structure */ 7 22 (2 completion like istat.completion, /* completion flags */ 7 23 2 pad bit (11), 7 24 2 level bit (3), /* interrupt level */ 7 25 2 offset bit (18), /* DCW list offset */ 7 26 2 status bit (36)) unal; /* first 36 bits of status */ 7 27 7 28 /* End of include file ...... ioi_stat.incl.pl1 */ 7 29 281 282 8 1 /* Begin include file io_status_word.incl.pl1 */ 8 2 /* Made from iom_stat.incl.pl1 by C. Hornig */ 8 3 8 4 dcl io_status_word_ptr ptr; 8 5 dcl 1 io_status_word based (io_status_word_ptr) aligned, /* I/O status information */ 8 6 ( 8 7 2 t bit (1), /* set to "1"b by IOM */ 8 8 2 power bit (1), /* non-zero if peripheral absent or power off */ 8 9 2 major bit (4), /* major status */ 8 10 2 sub bit (6), /* substatus */ 8 11 2 eo bit (1), /* even/odd bit */ 8 12 2 marker bit (1), /* non-zero if marker status */ 8 13 2 soft bit (2), /* software status */ 8 14 2 initiate bit (1), /* initiate bit */ 8 15 2 abort bit (1), /* software abort bit */ 8 16 2 channel_stat bit (3), /* IOM channel status */ 8 17 2 central_stat bit (3), /* IOM central status */ 8 18 2 mbz bit (6), 8 19 2 rcount bit (6) 8 20 ) unaligned; /* record count residue */ 8 21 8 22 /* End include file io_status_word.incl.pl1 */ 283 284 9 1 /* START OF: interrupt_levels.incl.pl1 * * * * * * * * * * * * * * * * */ 9 2 9 3 /* Written 14 June 1982 by Chris Jones */ 9 4 9 5 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 9 6 dcl IO_SYSTEM_FAULT_INTERRUPT_LEVEL 9 7 fixed bin internal static options (constant) init (1); 9 8 dcl IO_TERMINATE_INTERRUPT_LEVEL 9 9 fixed bin internal static options (constant) init (3); 9 10 dcl IO_MARKER_INTERRUPT_LEVEL 9 11 fixed bin internal static options (constant) init (5); 9 12 dcl IO_SPECIAL_INTERRUPT_LEVEL 9 13 fixed bin internal static options (constant) init (7); 9 14 9 15 /* END OF: interrupt_levels.incl.pl1 * * * * * * * * * * * * * * * * */ 285 286 10 1 /* START OF: tape_ioi_result_indexes.incl.pl1 * * * * * * * * * * * * * * * * */ 10 2 10 3 /* Result indexes for tape_ioi_. */ 10 4 /* Written 11 May 1982 by Chris Jones */ 10 5 10 6 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 10 7 dcl TAPE_IO_BLOCK fixed bin static options (constant) init (-1); 10 8 dcl TAPE_IO_SUCCESS fixed bin static options (constant) init (0); 10 9 dcl TAPE_IO_USER_PROGRAM_ERROR 10 10 fixed bin static options (constant) init (1); 10 11 dcl TAPE_IO_UNRECOVERABLE_IO_ERROR 10 12 fixed bin static options (constant) init (2); 10 13 dcl TAPE_IO_RECOVERABLE_IO_ERROR 10 14 fixed bin static options (constant) init (3); 10 15 dcl TAPE_IO_EOF fixed bin static options (constant) init (4); 10 16 dcl TAPE_IO_EOT fixed bin static options (constant) init (5); 10 17 dcl TAPE_IO_BOT fixed bin static options (constant) init (6); 10 18 dcl TAPE_IO_RECOVERABLE_IO_ERROR_AND_EOT 10 19 fixed bin static options (constant) init (7); 10 20 dcl TAPE_IO_CODE_ALERT fixed bin static options (constant) init (8); 10 21 10 22 /* END OF: tape_ioi_result_indexes.incl.pl1 * * * * * * * * * * * * * * * * */ 287 288 11 1 /* Begin include file ..... tape_ioi_buffer_status.incl.pl1 */ 11 2 11 3 /* This structure defines the data returned by tape_ioi_$buffer_status */ 11 4 /* Modified April 1982 by Chris Jones */ 11 5 /* Modified 2 February 1983 by Chris Jones to add support for reserved buffers. */ 11 6 /* format: style4,delnl,insnl,indattr,ifthen,declareind10,dclind10 */ 11 7 dcl tbs_ptr ptr; 11 8 11 9 dcl 1 tbs aligned based (tbs_ptr), 11 10 2 version fixed bin, 11 11 2 state fixed bin, 11 12 2 buffer_len fixed bin (21), 11 13 2 data_len fixed bin (21), 11 14 2 bit_count fixed bin (24), 11 15 2 channel_inst bit (6), 11 16 2 data_mode char (4), 11 17 ( 11 18 2 align_mode bit (1), 11 19 2 length_mode bit (1), 11 20 2 recovery_mode bit (1), 11 21 2 reserved bit (1), 11 22 2 pad bit (32) 11 23 ) unal; 11 24 11 25 dcl TBS_VERSION_1 fixed bin internal static init (1) options (constant); 11 26 11 27 dcl TBS_VERSION fixed bin internal static init (1) options (constant); 11 28 11 29 dcl READY_STATE fixed bin internal static options (constant) init (1); 11 30 dcl QUEUED_STATE fixed bin internal static options (constant) init (2); 11 31 dcl SUSPENDED_STATE fixed bin internal static options (constant) init (3); 11 32 dcl READY_AND_RESERVED_STATE fixed bin internal static options (constant) init (4); 11 33 11 34 /* End include file ..... tape_ioi_buffer_status.incl.pl1 */ 289 290 12 1 /* BEGIN INCLUDE FILE tape_ioi_constants.incl.pl1 */ 12 2 12 3 12 4 /****^ HISTORY COMMENTS: 12 5* 1) change(87-08-18,Hartogs), approve(87-08-18,MCR7726), 12 6* audit(87-08-27,GWMay), install(87-08-27,MR12.1-1094): 12 7* Initial coding. 12 8* END HISTORY COMMENTS */ 12 9 12 10 /* This include file contains the mnemonic command names for the dcw commands used 12 11* by tape_ioi_. */ 12 12 12 13 dcl BACKSPACE_ONE_RECORD bit (6) static options (constant) init ("46"b3); 12 14 dcl CONTINUE_NO_MARKER bit (2) static options (constant) init ("10"b); 12 15 dcl ERASE_COMMAND bit (6) static options (constant) init ("54"b3); 12 16 dcl MAX_READ_OPT bit (6) static options (constant) init ("37"b3); 12 17 dcl NO_CONTINUE_NO_MARKER bit (2) static options (constant) init ("00"b); 12 18 dcl NONDATA_TRANSFER bit (6) static options (constant) init ("02"b3); 12 19 dcl ONE_COUNT bit (6) static options (constant) init ("01"b3); 12 20 dcl RELATIVE_MODE bit (1) static options (constant) init ("1"b); 12 21 dcl RELATIVE_SECONDS bit (2) static options (constant) init ("11"b); 12 22 dcl REWIND_COMMAND bit (6) static options (constant) init ("70"b3); 12 23 dcl TDCW_TYPE bit (2) static options (constant) init ("10"b); 12 24 dcl TEN_SECONDS fixed bin (71) static options (constant) init (10000000); 12 25 dcl TWO_MINUTES fixed bin (71) static options (constant) init (120); 12 26 12 27 /* END INCLUDE FILE tape_ioi_constants.incl.pl1 */ 291 292 293 end tape_ioi_error_retry; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0806.8 tape_ioi_error_retry.pl1 >spec>install>1112>tape_ioi_error_retry.pl1 269 1 06/29/79 1728.0 event_wait_channel.incl.pl1 >ldd>include>event_wait_channel.incl.pl1 271 2 06/29/79 1727.8 event_wait_info.incl.pl1 >ldd>include>event_wait_info.incl.pl1 273 3 08/27/87 1445.9 tape_ioi_workspace.incl.pl1 >ldd>include>tape_ioi_workspace.incl.pl1 275 4 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 277 5 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 279 6 01/10/75 1343.6 iom_stat.incl.pl1 >ldd>include>iom_stat.incl.pl1 281 7 08/17/79 2215.0 ioi_stat.incl.pl1 >ldd>include>ioi_stat.incl.pl1 283 8 03/27/82 0430.3 io_status_word.incl.pl1 >ldd>include>io_status_word.incl.pl1 285 9 12/01/82 1039.8 interrupt_levels.incl.pl1 >ldd>include>interrupt_levels.incl.pl1 287 10 12/01/82 1039.8 tape_ioi_result_indexes.incl.pl1 >ldd>include>tape_ioi_result_indexes.incl.pl1 289 11 09/16/83 1110.4 tape_ioi_buffer_status.incl.pl1 >ldd>include>tape_ioi_buffer_status.incl.pl1 291 12 08/27/87 1445.9 tape_ioi_constants.incl.pl1 >ldd>include>tape_ioi_constants.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. BACKSPACE_ONE_RECORD constant bit(6) initial packed unaligned dcl 12-13 ref 148 CONTINUE_NO_MARKER constant bit(2) initial packed unaligned dcl 12-14 ref 149 198 246 ERASE_COMMAND constant bit(6) initial packed unaligned dcl 12-15 ref 197 MAX_READ_OPT constant bit(6) initial packed unaligned dcl 12-16 ref 100 NONDATA_TRANSFER constant bit(6) initial packed unaligned dcl 12-18 ref 150 199 215 247 NO_CONTINUE_NO_MARKER constant bit(2) initial packed unaligned dcl 12-17 ref 214 ONE_COUNT constant bit(6) initial packed unaligned dcl 12-19 ref 200 216 248 RELATIVE_MODE constant bit(1) initial packed unaligned dcl 12-20 ref 264 RELATIVE_SECONDS 000004 constant bit(2) initial packed unaligned dcl 12-21 set ref 163* REWIND_COMMAND constant bit(6) initial packed unaligned dcl 12-22 ref 213 TDCW_TYPE constant bit(2) initial packed unaligned dcl 12-23 ref 263 TEN_SECONDS 000002 constant fixed bin(71,0) initial dcl 12-24 ref 177 TWO_MINUTES 000000 constant fixed bin(71,0) initial dcl 12-25 set ref 163* addr builtin function dcl 72 ref 82 83 96 96 108 108 116 117 118 125 125 132 133 136 136 165 165 165 165 addrel builtin function dcl 72 ref 152 201 249 address based bit(18) level 2 packed packed unaligned dcl 5-14 set ref 262* arg_buf_ptr parameter pointer dcl 32 ref 27 83 112 118 arg_code parameter fixed bin(35,0) dcl 33 set ref 27 79* 101* 112 128 180* 181 arg_lost_status_cnt parameter fixed bin(17,0) dcl 34 ref 112 120 122 arg_status_ptr parameter pointer dcl 36 ref 27 112 116 arg_wksp_ptr parameter pointer dcl 35 ref 27 77 112 115 128 131 at_bot 20(25) based bit(1) level 3 packed packed unaligned dcl 3-27 ref 86 auto_event_wait_info 000150 automatic structure level 1 dcl 160 set ref 165 165 backspace_cnt 000100 automatic fixed bin(17,0) dcl 40 set ref 120* 122* 123* bin builtin function dcl 72 ref 104 104 151 180 180 bit builtin function dcl 72 ref 104 151 block_count 000101 automatic fixed bin(17,0) dcl 41 set ref 225* chan_cmd 0(24) based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 100 104* 104 150* 199* 215* 247* channel_id 2 000112 automatic fixed bin(71,0) array level 2 dcl 1-8 set ref 162* clock builtin function dcl 72 ref 177 184 code 000102 automatic fixed bin(35,0) dcl 42 set ref 218* 222* 228* command based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 84 148* 197* 213* 245* completion based structure level 2 dcl 7-7 control 0(22) based bit(2) level 2 packed packed unaligned dcl 4-21 set ref 149* 198* 214* 246* count 0(30) based bit(6) level 2 packed packed unaligned dcl 4-21 set ref 151* 200* 216* 248* dcwp parameter pointer dcl 257 in procedure "TDCW" ref 255 260 dcwp 000122 automatic pointer dcl 5-4 in procedure "tape_ioi_error_retry" set ref 82* 87* 88* 89* 92* 93* 94* 106* 107* 117* 123* 124* 133* 134* 135* dcwp parameter pointer dcl 242 in procedure "SET_DENSITY" set ref 240 244 245 246 247 248 249* 249 dcwp parameter pointer dcl 210 in procedure "REWIND" set ref 207 212 213 214 215 216 220* dcwp parameter pointer dcl 194 in procedure "ERASE" set ref 192 196 197 198 199 200 201* 201 dcwp parameter pointer dcl 145 in procedure "BACKSPACE" set ref 142 147 148 149 150 151 152* 152 deadline 000104 automatic fixed bin(71,0) dcl 43 set ref 177* 184 density_command 16(30) based bit(6) level 2 packed packed unaligned dcl 3-27 ref 78 245 dest_idcwp parameter pointer dcl 258 ref 255 262 error_table_$bad_density 000024 external static fixed bin(35,0) dcl 63 ref 79 error_table_$device_active 000026 external static fixed bin(35,0) dcl 65 ref 181 error_table_$device_parity 000030 external static fixed bin(35,0) dcl 67 ref 101 event_id 2 based fixed bin(71,0) level 2 dcl 3-27 set ref 162 163* 166* event_wait_channel 000112 automatic structure level 1 dcl 1-8 set ref 165 165 event_wait_info based structure level 1 dcl 2-7 flags 20(17) based structure level 2 packed packed unaligned dcl 3-27 idcw based structure level 1 dcl 4-21 set ref 147* 147 196* 196 212* 212 244* 244 idcw_word 6 based bit(36) level 2 dcl 3-108 set ref 83 118 idcwp parameter pointer dcl 175 in procedure "CONNECT" ref 172 180 180 idcwp 000120 automatic pointer dcl 4-19 in procedure "tape_ioi_error_retry" set ref 83* 84 89* 94* 100 104 104 107* 118* 124* 132* 147 196 212 244 initiate 0(16) based bit(1) level 2 packed packed unaligned dcl 6-7 ref 120 ioi_$connect 000010 constant entry external dcl 51 ref 180 ioi_$get_special_status 000012 constant entry external dcl 52 ref 218 222 228 ioi_index based fixed bin(17,0) level 2 dcl 3-27 set ref 180* 218* 222* 228* iom_stat 4 based bit(72) level 2 dcl 7-7 set ref 116 ipc_$block 000014 constant entry external dcl 54 ref 165 isp 000130 automatic pointer dcl 7-5 set ref 233* istat based structure level 1 dcl 7-7 modes 20 based structure level 2 packed packed unaligned dcl 3-27 n_channels 000112 automatic fixed bin(17,0) initial level 2 dcl 1-8 set ref 1-8* order_data 50 based bit(36) array level 2 dcl 3-27 set ref 82 96 96 108 108 117 125 125 132 order_idcw 46 based bit(36) level 2 dcl 3-27 set ref 133 136 136 rec_bk parameter fixed bin(17,0) dcl 144 ref 142 151 rel 0(35) based bit(1) level 2 in structure "tdcw" packed packed unaligned dcl 5-14 in procedure "tape_ioi_error_retry" set ref 264* rel builtin function dcl 72 in procedure "tape_ioi_error_retry" ref 180 180 262 special_status_expected 20(22) based bit(1) level 3 packed packed unaligned dcl 3-27 set ref 163 166 224* 231* statp 000126 automatic pointer dcl 6-5 set ref 116* 120 status based structure level 1 dcl 6-7 status_present 000106 automatic bit(1) initial dcl 44 set ref 44* 218* 221* 222* 226 228* status_special 000107 automatic bit(36) dcl 45 set ref 218* 222* 228* substr builtin function dcl 72 ref 84 tai based structure level 1 dcl 3-27 tape_ioi_utils$get_status 000016 constant entry external dcl 55 ref 233 tbi based structure level 1 dcl 3-108 tdcw based structure level 1 dcl 5-14 set ref 261* tdcwp 000124 automatic pointer dcl 5-4 set ref 260* 261 262 263 264 timer_manager_$alarm_wakeup 000020 constant entry external dcl 58 ref 163 timer_manager_$reset_alarm_wakeup 000022 constant entry external dcl 60 ref 166 tries 000110 automatic fixed bin(17,0) dcl 46 set ref 179* type 0(22) based bit(2) level 2 packed packed unaligned dcl 5-14 set ref 263* unspec builtin function dcl 72 set ref 261* wksp 000116 automatic pointer dcl 3-25 set ref 77* 78 82 86 96 96 108 108 115* 117 125 125 131* 132 133 136 136 162 163 163 166 166 180 218 222 224 228 231 233* 245 write_sw 000111 automatic bit(1) dcl 47 set ref 84* 85 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. IO_MARKER_INTERRUPT_LEVEL internal static fixed bin(17,0) initial dcl 9-10 IO_SPECIAL_INTERRUPT_LEVEL internal static fixed bin(17,0) initial dcl 9-12 IO_SYSTEM_FAULT_INTERRUPT_LEVEL internal static fixed bin(17,0) initial dcl 9-6 IO_TERMINATE_INTERRUPT_LEVEL internal static fixed bin(17,0) initial dcl 9-8 QUEUED_STATE internal static fixed bin(17,0) initial dcl 11-30 READY_AND_RESERVED_STATE internal static fixed bin(17,0) initial dcl 11-32 READY_STATE internal static fixed bin(17,0) initial dcl 11-29 SUSPENDED_STATE internal static fixed bin(17,0) initial dcl 11-31 TAPE_IO_BLOCK internal static fixed bin(17,0) initial dcl 10-7 TAPE_IO_BOT internal static fixed bin(17,0) initial dcl 10-17 TAPE_IO_CODE_ALERT internal static fixed bin(17,0) initial dcl 10-20 TAPE_IO_EOF internal static fixed bin(17,0) initial dcl 10-15 TAPE_IO_EOT internal static fixed bin(17,0) initial dcl 10-16 TAPE_IO_RECOVERABLE_IO_ERROR internal static fixed bin(17,0) initial dcl 10-13 TAPE_IO_RECOVERABLE_IO_ERROR_AND_EOT internal static fixed bin(17,0) initial dcl 10-18 TAPE_IO_SUCCESS internal static fixed bin(17,0) initial dcl 10-8 TAPE_IO_UNRECOVERABLE_IO_ERROR internal static fixed bin(17,0) initial dcl 10-11 TAPE_IO_USER_PROGRAM_ERROR internal static fixed bin(17,0) initial dcl 10-9 TBS_VERSION internal static fixed bin(17,0) initial dcl 11-27 TBS_VERSION_1 internal static fixed bin(17,0) initial dcl 11-25 dcw based structure level 1 dcl 5-7 event_wait_info_ptr automatic pointer dcl 2-5 faultword based structure level 1 dcl 6-27 imess based structure level 1 dcl 7-21 imp automatic pointer dcl 7-19 io_status_word based structure level 1 dcl 8-5 io_status_word_ptr automatic pointer dcl 8-4 pcw based structure level 1 dcl 4-6 pcwp automatic pointer dcl 4-4 special_status based structure level 1 dcl 6-35 tbs based structure level 1 dcl 11-9 tbs_ptr automatic pointer dcl 11-7 NAMES DECLARED BY EXPLICIT CONTEXT. BACKSPACE 000271 constant entry internal dcl 142 ref 92 106 123 134 BLOCK 000322 constant entry internal dcl 156 ref 227 CONNECT 000414 constant entry internal dcl 172 ref 96 108 125 136 220 ERASE 000465 constant entry internal dcl 192 ref 93 135 REWIND 000513 constant entry internal dcl 207 ref 87 SET_DENSITY 000645 constant entry internal dcl 240 ref 88 TDCW 000675 constant entry internal dcl 255 ref 89 94 107 124 backspace 000156 constant entry external dcl 112 eof 000234 constant entry external dcl 128 tape_ioi_error_retry 000023 constant entry external dcl 27 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1126 1160 752 1136 Length 1612 752 32 416 154 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tape_ioi_error_retry 180 external procedure is an external procedure. BACKSPACE internal procedure shares stack frame of external procedure tape_ioi_error_retry. BLOCK internal procedure shares stack frame of external procedure tape_ioi_error_retry. CONNECT internal procedure shares stack frame of external procedure tape_ioi_error_retry. ERASE internal procedure shares stack frame of external procedure tape_ioi_error_retry. REWIND internal procedure shares stack frame of external procedure tape_ioi_error_retry. SET_DENSITY internal procedure shares stack frame of external procedure tape_ioi_error_retry. TDCW internal procedure shares stack frame of external procedure tape_ioi_error_retry. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tape_ioi_error_retry 000100 backspace_cnt tape_ioi_error_retry 000101 block_count tape_ioi_error_retry 000102 code tape_ioi_error_retry 000104 deadline tape_ioi_error_retry 000106 status_present tape_ioi_error_retry 000107 status_special tape_ioi_error_retry 000110 tries tape_ioi_error_retry 000111 write_sw tape_ioi_error_retry 000112 event_wait_channel tape_ioi_error_retry 000116 wksp tape_ioi_error_retry 000120 idcwp tape_ioi_error_retry 000122 dcwp tape_ioi_error_retry 000124 tdcwp tape_ioi_error_retry 000126 statp tape_ioi_error_retry 000130 isp tape_ioi_error_retry 000150 auto_event_wait_info BLOCK THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. ioi_$connect ioi_$get_special_status ipc_$block tape_ioi_utils$get_status timer_manager_$alarm_wakeup timer_manager_$reset_alarm_wakeup THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_density error_table_$device_active error_table_$device_parity LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 44 000011 1 8 000012 27 000016 77 000034 78 000040 79 000043 80 000046 82 000047 83 000051 84 000055 85 000061 86 000062 87 000066 88 000070 89 000072 90 000074 92 000075 93 000101 94 000103 96 000105 97 000112 100 000113 101 000121 102 000124 104 000125 106 000135 107 000141 108 000143 110 000150 112 000151 115 000167 116 000173 117 000177 118 000201 120 000205 122 000213 123 000216 124 000220 125 000222 126 000227 128 000230 131 000245 132 000251 133 000253 134 000255 135 000261 136 000263 137 000270 142 000271 147 000273 148 000276 149 000301 150 000305 151 000310 152 000316 154 000321 156 000322 162 000323 163 000341 165 000360 166 000400 170 000413 172 000414 177 000416 178 000421 179 000422 180 000427 181 000450 183 000455 184 000457 186 000463 188 000464 192 000465 196 000467 197 000472 198 000475 199 000501 200 000504 201 000507 203 000512 207 000513 212 000515 213 000520 214 000523 215 000525 216 000530 218 000533 220 000550 221 000557 222 000560 224 000575 225 000600 226 000605 227 000610 228 000611 230 000626 231 000630 233 000633 234 000644 240 000645 244 000647 245 000652 246 000657 247 000663 248 000666 249 000671 251 000674 255 000675 260 000677 261 000702 262 000703 263 000707 264 000713 266 000715 ----------------------------------------------------------- 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