COMPILATION LISTING OF SEGMENT mca_tandd_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 09/16/86 1107.4 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 /****^ HISTORY COMMENTS: 8* 1) change(86-03-18,Fawcett), approve(86-03-18,MCR7374), 9* audit(86-09-05,Lippard), install(86-09-16,MR12.0-1159): 10* Created to control the MCA for online use. This is mainly used by online 11* T&D. 12* END HISTORY COMMENTS */ 13 14 /* format: style4 */ 15 /* Created Nov 1984 by R. A. Fawcett */ 16 mca_tandd_: 17 proc; 18 return; 19 20 21 dcl a_code fixed bin (35); 22 dcl a_ioi_idx fixed bin (17); 23 dcl a_mca_status bit (36); 24 dcl a_mcad_ptr ptr; 25 dcl a_ret_len fixed bin (21); 26 dcl a_user_ptr ptr; 27 dcl a_user_words fixed bin (17); 28 29 dcl basic_size fixed bin (17); 30 dcl code fixed bin (35); 31 dcl 1 event_info_area like event_wait_info; 32 dcl ev_info_ptr ptr; 33 dcl idcw1_cmd bit (6); 34 dcl ioi_ws_size fixed bin (18); 35 dcl offset_of_data_2 fixed bin; 36 dcl ret_len fixed bin (21); 37 dcl ret_data char (ret_len) based; 38 dcl 1 sk_mca_area like mca_area; 39 dcl sk_ioi_idx fixed bin; 40 dcl tally_num fixed bin (17); 41 dcl temp_bits bit (16); 42 dcl user_iop ptr; 43 dcl user_size fixed bin; 44 dcl user_level fixed bin; 45 46 dcl CHARS_PER_WORD fixed bin init (4) static options (constant); 47 dcl CONT_NO_MARKER bit (2) init ("10"b) static options (constant); 48 dcl DATA_TYPE bit (6) init ("15"b3) static options (constant); 49 dcl ENABLE_CONT_CMD bit (6) init ("40"b3) static options (constant); 50 dcl IDCW_ID bit (3) init ("7"b3) static options (constant); 51 dcl IOTD bit (2) init ("00"b) static options (constant); 52 dcl MAX_DATA_SIZE fixed bin (17) init (16384) static options (constant); 53 dcl MAX_TALLY fixed bin (17) init (4096) static options (constant); 54 dcl READ_TYPE bit (6) init ("03"b3) static options (constant); 55 dcl TEXT_TYPE bit (6) init ("13"b3) static options (constant); 56 57 58 dcl cu_$level_get entry (fixed bin); 59 dcl cu_$level_set entry (fixed bin); 60 dcl get_ring_ entry () returns (fixed bin (3)); 61 dcl convert_ipc_code_ entry options (variable); 62 dcl ioi_$workspace entry (fixed bin, ptr, fixed bin (18), fixed bin (35)); 63 dcl ipc_$block entry (ptr, ptr, fixed bin (35)); 64 dcl mca_parse_ entry (ptr, fixed bin (21), ptr, fixed bin, fixed bin (35)); 65 dcl mca_util_$connect entry (ptr, fixed bin (35)); 66 dcl mca_util_$io_event_mca entry (ptr, ptr, ptr, fixed bin (35)); 67 dcl mca_util_$mca_ptr entry (fixed bin, fixed bin (35)) returns (ptr); 68 69 dcl (addr, bin, divide, fixed, length, low, min, mod, rel, size, substr, unspec) builtin; 70 71 dcl cleanup condition; 72 73 dcl error_table_$area_too_small fixed bin (35) ext static; 74 dcl sys_info$page_size fixed bin ext static; 75 76 mca_tandd_$read_data: 77 entry (a_ioi_idx, a_user_ptr, a_user_words, a_mca_status, a_code); 78 79 /* This entry is to read the remaining data from the MCA if any */ 80 81 idcw1_cmd = READ_TYPE; 82 goto TANDD_COMMON; 83 84 85 mca_tandd_$write_data: 86 entry (a_ioi_idx, a_user_ptr, a_user_words, a_mca_status, a_code); 87 88 /* This entry is used for the HOST MCA dialog */ 89 90 idcw1_cmd = DATA_TYPE; 91 goto TANDD_COMMON; 92 93 mca_tandd_$write_text: 94 entry (a_ioi_idx, a_user_ptr, a_user_words, a_mca_status, a_code); 95 96 /* This entry is used to cause the MCA to affect some IPC */ 97 98 idcw1_cmd = TEXT_TYPE; 99 100 TANDD_COMMON: 101 102 sk_ioi_idx = a_ioi_idx; 103 call cu_$level_get (user_level); 104 on cleanup begin; 105 call cu_$level_set (user_level); 106 end; 107 call cu_$level_set (get_ring_ ()); 108 mcad_ptr = mca_util_$mca_ptr (sk_ioi_idx, code); 109 if code ^= 0 then goto ERROR_EXIT; 110 111 code = 0; 112 113 if idcw1_cmd = READ_TYPE then call build_read_io_blk; 114 else call build_write_io_blk; 115 116 if code ^= 0 then goto ERROR_EXIT; 117 118 /* now get set for the IO completion */ 119 /* don't return the mca_dcw_list, start at the status_area */ 120 121 mcad.entry_to_return_data = mca_tandd_$return_data; 122 mcad.user_ptr = addr (user_iop -> mca_work_space.status_area); 123 mcad.return_data_ptr = addr (mca_work_space.status_area); 124 125 /* requests the connect */ 126 127 call mca_util_$connect (mcad_ptr, code); 128 if code ^= 0 then goto ERROR_EXIT; 129 if ^mcad.async_io then do; 130 131 /* the user has requested in the attachment that we wait 132* for the IO to complete */ 133 134 call wait; 135 136 /* alway tell status */ 137 a_mca_status = substr (mca_area.mca_status, 1, length (a_mca_status)); 138 139 140 if code ^= 0 then goto ERROR_EXIT; 141 end; 142 143 else a_mca_status = "0"b; /* no status yet */ 144 a_code = 0; 145 call cu_$level_set (user_level); 146 return; 147 148 mca_tandd_$return_data: 149 entry (a_mcad_ptr, a_ret_len, a_code); 150 151 /* called by mca_util_$io_event entries for both sync and async IO modes */ 152 153 mcad_ptr = a_mcad_ptr; 154 mca_work_space_ptr = mcad.ioi_wks_ptr; 155 mca_dcw_list_ptr = addr (mca_work_space.list_of_dcw); 156 idcwp = addr (mca_dcw_list.idcw1); 157 if idcw.control = "00"b /* read-data */ 158 then dcwp = addr (mca_dcw_list.dcw1); /* use first dcw */ 159 else dcwp = addr (mca_dcw_list.dcw2); /* write text/data & read-data, use second */ 160 161 /* find the offset of data_2 */ 162 io_param_blk_ptr = mcad.io_param_ptr; 163 offset_of_data_2 = fixed (rel (io_param_blk_ptr), 17) + size (io_parameter_block); 164 165 /* find the size in chars of data_2 */ 166 167 temp_bits = io_parameter_block.source_len_msb || io_parameter_block.source_len_lsb; 168 data_size_2 = fixed (temp_bits, 21); 169 tally_num = bin (dcw.tally, 17); /* find amount requested */ 170 if tally_num = 0 then tally_num = MAX_TALLY; 171 tally_num = (tally_num - size (data_header)) * CHARS_PER_WORD; 172 data_size_2 = min (data_size_2, tally_num); /* use smallest */ 173 174 /* we will return from the status offset to the end of the returned data */ 175 ret_len = (CHARS_PER_WORD * (offset_of_data_2 - mcad.status_offset)) + data_size_2; 176 mcad.user_ptr -> ret_data = mcad.return_data_ptr -> ret_data; 177 a_code = 0; 178 a_ret_len = ret_len; 179 return; 180 181 ERROR_EXIT: 182 a_code = code; 183 call cu_$level_set (user_level); 184 return; 185 186 187 build_read_io_blk: 188 proc; 189 190 /* internal proc to build the ioi_work_space for read entries. 191* This will build the IDCWs and DCWs based on the entry and the 192* way the io_block is built. */ 193 194 user_iop = a_user_ptr; 195 user_size = a_user_words; 196 basic_size = size (mca_dcw_list) + size (istat) + size (data_header); 197 data_size_1 = MAX_DATA_SIZE; /* max the mca can send */ 198 data_size_2 = 0; 199 call get_ws_size; 200 if code ^= 0 then return; 201 202 /* now set up the idcw and dcw */ 203 mca_dcw_list_ptr = addr (mca_work_space.list_of_dcw); 204 unspec (mca_dcw_list) = ""b; 205 isp = addr (mca_work_space.status_area); 206 unspec (mca_work_space.status_area) = ""b; 207 208 /* idcw command based on entry */ 209 idcwp = addr (mca_dcw_list.idcw1); 210 unspec (idcw) = "0"b; 211 dcwp = addr (mca_dcw_list.dcw1); 212 unspec (dcw) = "0"b; 213 214 /* for read the data will always be returned in the second io_blk */ 215 data_header_ptr = addr (mca_work_space.data_header_1); 216 mca_work_space.data_1 = low (data_size_1); 217 218 /* remember where we tell the MCA to return the data */ 219 mcad.io_param_ptr = addr (data_header.io_param_blk); 220 unspec (idcw) = "0"b; 221 idcw.command = READ_TYPE; 222 idcw.code = IDCW_ID; 223 idcw.chan_cmd = ENABLE_CONT_CMD; 224 dcw.address = rel (data_header_ptr); 225 dcw.type = IOTD; 226 227 /* Tally in words */ 228 tally_num = size (data_header) + (divide (data_size_1, CHARS_PER_WORD, 17)); 229 if mod (data_size_1, CHARS_PER_WORD) > 0 then tally_num = tally_num + 1; 230 if tally_num > MAX_TALLY then tally_num = MAX_TALLY; /* trim to 4k */ 231 dcw.tally = substr (unspec (tally_num), 25, 12); 232 233 end build_read_io_blk; 234 235 236 build_write_io_blk: 237 proc; 238 239 /* internal proc to build the ioi_work_space for write entries. 240* This will build the IDCWs and DCWs based on the entry and the 241* way the io_block is built. This proc will call mca_parse_ 242* if the write_text entry was called */ 243 244 user_iop = a_user_ptr; 245 user_size = a_user_words; 246 basic_size = size (mca_dcw_list) + size (istat) 247 + (2 * size (data_header)); 248 io_param_blk_ptr = addr (user_iop -> mca_work_space.data_header_1.io_param_blk); 249 250 /* find out how large the mca command is */ 251 252 temp_bits = io_parameter_block.dest_len_msb || io_parameter_block.dest_len_lsb; 253 data_size_1 = fixed (temp_bits, 21); 254 data_size_2 = MAX_DATA_SIZE; 255 call get_ws_size; 256 if code ^= 0 then return; 257 258 io_param_blk_ptr = addr (mca_work_space.data_header_1.io_param_blk); 259 unspec (mca_work_space.data_header_1) = ""b; 260 unspec (mca_work_space.list_of_dcw) = ""b; 261 unspec (mca_work_space.status_area) = ""b; 262 mca_work_space.data_1 = low (data_size_1); 263 /* copy the first part of the user data_header */ 264 mca_work_space.data_header_1 = user_iop -> mca_work_space.data_header_1; 265 266 /* copy the mca command */ 267 268 mca_work_space.data_1 = user_iop -> mca_work_space.data_1; 269 270 if idcw1_cmd = TEXT_TYPE then do; 271 272 /* if this is a call for the write_text entry check the mca command */ 273 274 call mca_parse_ (addr (mca_work_space.data_1), data_size_1, 275 mcad_ptr, user_level, code); 276 277 /* if parse found some thing wrong get out of here now. */ 278 if code ^= 0 then return; 279 end; 280 281 unspec (mca_work_space.data_header_2) = ""b; 282 /* OK copy over the rest of the user info */ 283 mca_work_space.data_header_2 = user_iop -> mca_work_space.data_header_2; 284 285 /* now set up the idcws and dcws */ 286 mca_dcw_list_ptr = addr (mca_work_space.list_of_dcw); 287 isp = addr (mca_work_space.status_area); 288 idcwp = addr (mca_dcw_list.idcw1); 289 unspec (idcw) = "0"b; 290 291 /* idcw command based on entry */ 292 idcw.command = idcw1_cmd; 293 idcw.code = IDCW_ID; 294 idcw.control = CONT_NO_MARKER; 295 idcw.chan_cmd = ENABLE_CONT_CMD; 296 dcwp = addr (mca_dcw_list.dcw1); 297 unspec (dcw) = "0"b; 298 data_header_ptr = addr (mca_work_space.data_header_1); 299 dcw.address = rel (data_header_ptr); 300 dcw.type = IOTD; 301 302 /* Tally in words + 1 */ 303 tally_num = size (data_header) + divide (data_size_1, CHARS_PER_WORD, 17); 304 if mod (data_size_1, CHARS_PER_WORD) ^= 0 then tally_num = tally_num + 1; 305 if tally_num > MAX_TALLY then tally_num = MAX_TALLY; /* trim to 4k */ 306 dcw.tally = substr (unspec (tally_num), 25, 12); 307 308 /* now set up the second data block for the returned data */ 309 310 data_header_ptr = addr (mca_work_space.data_header_2); 311 312 /* remember where we tell the MCA to return the data */ 313 mcad.io_param_ptr = addr (data_header.io_param_blk); 314 idcwp = addr (mca_dcw_list.idcw2); 315 unspec (idcw) = "0"b; 316 idcw.command = READ_TYPE; 317 idcw.code = IDCW_ID; 318 idcw.chan_cmd = ENABLE_CONT_CMD; 319 dcwp = addr (mca_dcw_list.dcw2); 320 unspec (dcw) = "0"b; 321 dcw.address = rel (data_header_ptr); 322 dcw.type = IOTD; 323 mca_work_space.data_2 = low (data_size_2); 324 /* Tally in words */ 325 tally_num = size (data_header) + (divide (data_size_2, CHARS_PER_WORD, 17) + 1); 326 if tally_num > MAX_TALLY then tally_num = MAX_TALLY; /* trim to 4k */ 327 dcw.tally = substr (unspec (tally_num), 25, 12); 328 end build_write_io_blk; 329 330 get_ws_size: 331 proc; 332 dcl pages fixed bin; 333 mca_work_space_ptr = mcad.ioi_wks_ptr; 334 /* check user space */ 335 if user_size < basic_size + divide (data_size_1, CHARS_PER_WORD, 17) then do; 336 if idcw1_cmd ^= READ_TYPE then do; 337 code = error_table_$area_too_small; 338 return; 339 end; 340 else if user_size < basic_size then do; 341 code = error_table_$area_too_small; 342 return; 343 end; 344 end; 345 346 /* make sure the current ioi_work_space is large enough to get started */ 347 ioi_ws_size = basic_size + divide (data_size_1, CHARS_PER_WORD, 17) + divide (data_size_2, CHARS_PER_WORD, 17); 348 pages = divide (ioi_ws_size, sys_info$page_size, 17); 349 if mod (ioi_ws_size, sys_info$page_size) ^= 0 then pages = pages + 1; 350 ioi_ws_size = pages * sys_info$page_size; /* ioi increments in pages */ 351 if mcad.current_ws_size < ioi_ws_size then do; 352 call ioi_$workspace (mcad.ioi_idx, mcad.ioi_wks_ptr, 353 ioi_ws_size, code); 354 if code ^= 0 then return; 355 mcad.current_ws_size = ioi_ws_size; 356 end; 357 mca_work_space_ptr = mcad.ioi_wks_ptr; 358 359 if user_size < ioi_ws_size then do; 360 if idcw1_cmd ^= READ_TYPE then 361 /* decrease then size of data_2 */ 362 data_size_2 = data_size_2 - (CHARS_PER_WORD * (ioi_ws_size - user_size)); 363 364 else /* must be a read type so decrease then size of data_1 */ 365 data_size_1 = CHARS_PER_WORD * (user_size - basic_size); 366 end; 367 end get_ws_size; 368 369 wait: 370 proc; 371 372 /* the connect is on its way and the IO mode is sync so we will wait here */ 373 ev_info_ptr = addr (event_info_area); 374 mca_area_ptr = addr (sk_mca_area); 375 event_wait_channel.channel_id (1) = mcad.event_chn; 376 call ipc_$block (addr (event_wait_channel), ev_info_ptr, code); 377 if code ^= 0 then do; 378 call convert_ipc_code_ (code); 379 return; 380 end; 381 382 /* Now that something has happened the IO event will be processed, and it 383* is known what MCA this should be for */ 384 385 call mca_util_$io_event_mca 386 (mcad_ptr, ev_info_ptr, mca_area_ptr, code); 387 end wait; 388 1 1 /* BEGIN INCLUDE FILE event_wait_info.incl.pl1 */ 1 2 1 3 /* T. Casey, May 1978 */ 1 4 1 5 dcl event_wait_info_ptr ptr; 1 6 1 7 dcl 1 event_wait_info aligned based (event_wait_info_ptr), /* argument structure filled in on return from ipc_$block */ 1 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 1 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 1 10 2 sender bit (36), /* process id of sender */ 1 11 2 origin, 1 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 1 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 1 14 2 channel_index fixed bin; /* index of this channel in the event wait list */ 1 15 1 16 /* END INCLUDE FILE event_wait_info.incl.pl1 */ 389 390 2 1 /* BEGIN INCLUDE FILE ... event_wait_channel.incl.pl1 */ 2 2 2 3 /* ipc_$block wait list with one channel 2 4* 2 5* Written 9-May-79 by M. N. Davidoff. 2 6**/ 2 7 2 8 declare 1 event_wait_channel aligned, 2 9 2 n_channels fixed bin initial (1), /* number of channels */ 2 10 2 pad bit (36), 2 11 2 channel_id (1) fixed bin (71); /* event channel to wait on */ 2 12 2 13 /* END INCLUDE FILE ... event_wait_channel.incl.pl1 */ 391 392 3 1 /* Begin mca_area.incl.pl1 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(86-03-19,Fawcett), approve(86-03-19,MCR7374), 3 6* audit(86-04-28,Lippard), install(86-09-16,MR12.0-1159): 3 7* This is the structure returned to the user after IO completion. 3 8* END HISTORY COMMENTS */ 3 9 3 10 dcl 1 mca_area aligned based (mca_area_ptr), 3 11 2 version char (8), /* version of structure */ 3 12 2 io_outstanding bit (1) aligned, /* true if section is not complete */ 3 13 2 mca_attach_state fixed bin (17), /* State of the attachment process, refer to mca_data.incl.pl1 */ 3 14 2 mca_status bit (72), /* status from io */ 3 15 2 ret_len fixed bin (21); /* length in characters of data returned */ 3 16 3 17 dcl mca_area_ptr ptr; 3 18 3 19 dcl MCA_area_version_1 char (8) int static options 3 20 (constant) init ("MCA00001"); /* current version */ 3 21 3 22 3 23 /* End mca_area.incl.pl1 */ 394 4 1 /* Begin include file ... mca_data.incl.pl1 4 2* * 4 3* * Created on 09/14/84 by Paul Farley. 4 4* * Modified by R. A. Fawcett 10/25/84 4 5**/ 4 6 4 7 /****^ HISTORY COMMENTS: 4 8* 1) change(85-09-11,Fawcett), approve(85-09-11,MCR6979), 4 9* audit(86-01-17,CLJones), install(86-03-21,MR12.0-1033): 4 10* Created for MCA 4 11* support 4 12* 2) change(86-08-19,Fawcett), approve(86-08-19,MCR7374), 4 13* audit(86-08-26,Lippard), install(86-09-16,MR12.0-1159): 4 14* Fix problems found in audit of the Online manager code. 4 15* END HISTORY COMMENTS */ 4 16 4 17 dcl MCA_data_version_1 char (8) int static options 4 18 (constant) init ("MCA00001"); 4 19 4 20 dcl mca_data_seg_ptr ptr static init (null ()); 4 21 4 22 dcl mcad_ptr ptr; 4 23 4 24 dcl ipcd_ptr ptr; 4 25 4 26 dcl 1 mca_data_seg based (mca_data_seg_ptr), 4 27 2 version char (8), 4 28 2 array (1:4) like mcad; 4 29 4 30 4 31 dcl 1 mcad based (mcad_ptr) aligned, 4 32 2 lock bit (36), /* The mca write lock. */ 4 33 2 state fixed bin, /* Current mca state */ 4 34 2 attach_time fixed bin (71), /* DT/time of attach */ 4 35 2 attach_pid bit (36), /* PID of attaching process */ 4 36 2 name char (1), /* name of this mca (a b c d) */ 4 37 2 imu_number fixed bin (17), /* number of the IMU */ 4 38 2 ioi_idx fixed bin, /* value to use with ioi_ */ 4 39 2 event_chn fixed bin (71), /* ipc channel for IO processing ring_1 */ 4 40 2 ioi_wks_ptr ptr, /* pointer to IOI Workspace */ 4 41 2 max_ws_size fixed bin (19), 4 42 2 pad fixed bin, 4 43 2 user_ptr ptr, /* used for async_io */ 4 44 2 return_data_ptr ptr, /* user for async_io */ 4 45 2 io_param_ptr ptr, /* pointer to the io_parameter_block for mca returned data */ 4 46 2 entry_to_return_data entry (ptr, fixed bin (21), fixed bin (35)), 4 47 /* entry that will return the data to the user for async_io */ 4 48 2 status_offset fixed bin, /* offset into work space for status */ 4 49 2 current_ws_size fixed bin (18), /* current work_space */ 4 50 2 rcp_id bit (36), 4 51 2 flags unaligned, 4 52 3 async_io bit (1), /* 1 = outer ring will catch IO events */ 4 53 /* 0 = ring 1 will go blocked and wait for IO to complete */ 4 54 3 config_data_requested bit (1), /* used during mca attachment */ 4 55 3 pad bit (34), 4 56 2 max_time_out fixed bin (71), /* maximum time for time out */ 4 57 2 last_status bit (71), /* most recent MCA status return */ 4 58 4 59 2 ipcd_array (0:15) like ipcd aligned; 4 60 4 61 dcl 1 ipcd based (ipcd_ptr) aligned, 4 62 2 ipc_name char (8), /* "ipcXX" */ 4 63 2 channel fixed bin (17) unaligned, /* base channel */ 4 64 2 nchan fixed bin (17) unaligned, /* number of channels */ 4 65 2 type_info, /* type of IPC */ 4 66 3 no_level_2_info bit (1) unaligned, 4 67 3 is_micro_cont bit (1) unaligned, 4 68 3 fbus_disable_latch bit (1) unaligned, 4 69 3 pad bit (6) unaligned, 4 70 3 type_index fixed bin (8) unaligned, 4 71 2 state fixed bin (17) unaligned, /* current state */ 4 72 2 level_1_state fixed bin (17), /* LVL-1_STATE */ 4 73 2 prph_attachments fixed bin (17), /* # of RCP attachments */ 4 74 2 attach_data (8), 4 75 3 prph_name char (4), /* Multics prph name */ 4 76 3 flags unaligned, 4 77 4 attached_thru_rcp bit (1), /* must detach when done */ 4 78 4 io_suspended bit (1), /* must resume IO when done */ 4 79 4 pad (34) bit (1), 4 80 3 attach_time fixed bin (71), /* DT/time of attach */ 4 81 3 ipc_rcp_id bit (36), /* rcp id */ 4 82 3 ipc_ioi_idx fixed bin; /* index from rcp */ 4 83 4 84 dcl SYSTEM_DIR char (17) init (">system_library_1") static options (constant); 4 85 dcl DATA_SEG char (12) init ("mca_data_seg") static options (constant); 4 86 4 87 4 88 dcl (MCA_NOT_CONFIGURED init (0), /* possible mcad.state values */ 4 89 MCA_FREE init (1), 4 90 MCA_ATTACHING init (2), 4 91 MCA_ATTACHED init (3), 4 92 MAINT_SESSION init (10)) fixed bin internal static options (constant); 4 93 4 94 dcl (IPC_NOT_CONFIGURED init (0), /* possible ipcd.state values */ 4 95 IPC_FREE init (1), 4 96 IPC_ATTACHED init (2)) fixed bin internal static options (constant); 4 97 4 98 /* End of include file ... mca_data.incl.pl1 */ 395 396 5 1 /* Begin mca_data_area.incl.pl1 */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(86-03-19,Fawcett), approve(86-03-19,MCR7374), 5 5* audit(86-04-28,Lippard), install(86-09-16,MR12.0-1159): 5 6* Created for control of the MCA. This is a template for the ioi workspace 5 7* needed for the MCA communications. 5 8* END HISTORY COMMENTS */ 5 9 5 10 /* Created Sept 84 by R. A. Fawcett from information in 5 11* "EPS-1 DIPPER Maintainability" REV A (MAY 3, 1983) */ 5 12 5 13 5 14 5 15 dcl data_header_ptr ptr; 5 16 5 17 dcl (data_size_1, data_size_2) fixed bin (21) init (0); 5 18 5 19 dcl io_param_blk_ptr ptr; 5 20 5 21 dcl mca_dcw_list_ptr ptr; 5 22 5 23 dcl mca_work_space_ptr ptr; 5 24 5 25 dcl 1 mca_work_space based (mca_work_space_ptr), 5 26 2 list_of_dcw like mca_dcw_list, 5 27 2 status_area like istat, 5 28 5 29 2 data_header_1 aligned like data_header, 5 30 2 data_1 char (data_size_1), 5 31 2 data_header_2 aligned like data_header, 5 32 2 data_2 char (data_size_2); 5 33 5 34 5 35 dcl 1 data_header based (data_header_ptr) aligned, 5 36 2 type bit (9) unal, /* must be equal to "000"b3 (MBZ) */ 5 37 2 definer fixed bin (9) unal unsigned, /* defines type of info in header */ 5 38 2 ctl_sw bit (18) unal, /* "currently undfined" mbz = "000000"b3 */ 5 39 5 40 2 host_sts_ign1 bit (1) unal, 5 41 2 host_sts_msb bit (8) unal, 5 42 2 host_sts_ign2 bit (1) unal, 5 43 2 host_sts_lsb bit (8) unal, 5 44 5 45 2 rd_flpy fixed bin (9) unal unsigned, /* 0 = data files from host */ 5 46 /* 1 = data files from flopy */ 5 47 2 io_param_blk like io_parameter_block unal; 5 48 5 49 5 50 dcl 1 io_parameter_block based (io_param_blk_ptr) unal, 5 51 2 open fixed bin (9) unal unsigned, 5 52 2 cmd bit (18), 5 53 2 sts_ptr bit (18), /* Unused */ 5 54 2 file_name char (8), /* file name for this request */ 5 55 2 options bit (18), /* Unused */ 5 56 2 source_ptr bit (18), /* Unused */ 5 57 2 source_len, 5 58 /* data_size = source_len_msb||source_len_lsb MCA to HOST */ 5 59 3 source_len_ign1 bit (1), 5 60 3 source_len_msb bit (8), 5 61 3 source_len_ign2 bit (1), 5 62 3 source_len_lsb bit (8), 5 63 2 dest_ptr bit (18), /* Unused */ 5 64 2 blk_ct, 5 65 /* if MCA to HOST blk_ct_msb||blk_ct_lsb = MAX number of 256 byte BLOCKS */ 5 66 /* else not used */ 5 67 3 blk_ct_ign1 bit (1), 5 68 3 blk_ct_msb bit (8), 5 69 3 blk_ct_ign2 bit (1), 5 70 3 blk_ct_lsb bit (8), 5 71 2 dest_len, 5 72 /* supplied by host as the number of bytes in data_field max value is 16128 */ 5 73 /* dest_len_msb = substr(unspec(data_size),21,8) */ 5 74 /* dest_len_lsb = substr(unspec(data_size),29,8) */ 5 75 3 dest_len_ign1 bit (1), 5 76 3 dest_len_msb bit (8), 5 77 3 dest_len_ign2 bit (1), 5 78 3 dest_len_lsb bit (8); 5 79 5 80 5 81 dcl 1 mca_dcw_list based (mca_dcw_list_ptr), 5 82 2 idcw1 like idcw, 5 83 2 dcw1 like dcw, 5 84 2 idcw2 like idcw, 5 85 2 dcw2 like dcw; 5 86 5 87 6 1 6 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 6 3 6 4 dcl dcwp ptr, /* pointer to DCW */ 6 5 tdcwp ptr; /* pointer to TDCW */ 6 6 6 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 6 8 (2 address bit (18), /* address for data transfer */ 6 9 2 char_pos bit (3), /* character position */ 6 10 2 m64 bit (1), /* non-zero for mod 64 address */ 6 11 2 type bit (2), /* DCW type */ 6 12 2 tally bit (12)) unal; /* tally for data transfer */ 6 13 6 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 6 15 (2 address bit (18), /* address to transfer to */ 6 16 2 mbz1 bit (4), 6 17 2 type bit (2), /* should be "10"b for TDCW */ 6 18 2 mbz2 bit (9), 6 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 6 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 6 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 6 22 6 23 /* End of include file ...... iom_dcw.incl.pl1 */ 6 24 5 88 5 89 7 1 7 2 /* Begin include file ...... iom_pcw.incl.pl1 */ 7 3 7 4 dcl pcwp ptr; /* pointer to PCW */ 7 5 7 6 dcl 1 pcw based (pcwp) aligned, /* Peripheral Control Word */ 7 7 (2 command bit (6), /* device command */ 7 8 2 device bit (6), /* device code */ 7 9 2 ext bit (6), /* address extension */ 7 10 2 code bit (3), /* should be "111"b for PCW */ 7 11 2 mask bit (1), /* channel mask bit */ 7 12 2 control bit (2), /* terminate/proceed and marker control bits */ 7 13 2 chan_cmd bit (6), /* type of I/O operation */ 7 14 2 count bit (6), /* record count or control character */ 7 15 2 mbz1 bit (3), 7 16 2 channel bit (6), /* channel number */ 7 17 2 mbz2 bit (27)) unal; 7 18 7 19 dcl idcwp ptr; /* pointer to IDCW */ 7 20 7 21 dcl 1 idcw based (idcwp) aligned, /* Instruction DCW */ 7 22 (2 command bit (6), /* device command */ 7 23 2 device bit (6), /* device code */ 7 24 2 ext bit (6), /* address extension */ 7 25 2 code bit (3), /* should be "111"b for PCW */ 7 26 2 ext_ctl bit (1), /* "1"b if address extension to be used */ 7 27 2 control bit (2), /* terminate/proceed and marker control bits */ 7 28 2 chan_cmd bit (6), /* type of I/O operation */ 7 29 2 count bit (6)) unal; /* record count or control character */ 7 30 7 31 /* End include file ...... iom_pcw.incl.pl1 */ 7 32 5 90 5 91 8 1 8 2 /* Begin include file ...... ioi_stat.incl.pl1 */ 8 3 /* Last modified 3/24/75 by Noel I. Morris */ 8 4 8 5 dcl isp ptr; /* pointer to status structure */ 8 6 8 7 dcl 1 istat based (isp) aligned, /* I/O Interfacer status structure */ 8 8 2 completion, /* completion flags */ 8 9 (3 st bit (1), /* "1"b if status returned */ 8 10 3 er bit (1), /* "1"b if status indicates error condition */ 8 11 3 run bit (1), /* "1"b if channel still running */ 8 12 3 time_out bit (1)) unal, /* "1"b if time-out occurred */ 8 13 2 level fixed bin (3), /* IOM interrupt level */ 8 14 2 offset fixed bin (18), /* DCW list offset */ 8 15 2 absaddr fixed bin (24), /* absolute address of workspace */ 8 16 2 iom_stat bit (72), /* IOM status */ 8 17 2 lpw bit (72); /* LPW residue */ 8 18 8 19 dcl imp ptr; /* pointer to message structure */ 8 20 8 21 dcl 1 imess based (imp) aligned, /* I/O Interfacer event message structure */ 8 22 (2 completion like istat.completion, /* completion flags */ 8 23 2 pad bit (11), 8 24 2 level bit (3), /* interrupt level */ 8 25 2 offset bit (18), /* DCW list offset */ 8 26 2 status bit (36)) unal; /* first 36 bits of status */ 8 27 8 28 /* End of include file ...... ioi_stat.incl.pl1 */ 8 29 5 92 5 93 5 94 /* Constants used for data_header.definer */ 5 95 5 96 dcl DATA_FROM_HOST 5 97 fixed bin (9) unsigned init (0) static options (constant); 5 98 dcl WRITE_CONSOLE 5 99 fixed bin (9) unsigned init (1) static options (constant); 5 100 dcl WRITE_READ_CONSOLE 5 101 fixed bin (9) unsigned init (2) static options (constant); 5 102 dcl DATA_FROM_MCA 5 103 fixed bin (9) unsigned init (3) static options (constant); 5 104 dcl REQ_DATA_FROM_HOST 5 105 fixed bin (9) unsigned init (4) static options (constant); 5 106 dcl STATUS_FROM_MCA 5 107 fixed bin (9) unsigned init (5) static options (constant); 5 108 dcl SEEK 5 109 fixed bin (9) unsigned init (6) static options (constant); 5 110 dcl CON_DATA_FROM_HOST 5 111 fixed bin (9) unsigned init (7) static options (constant); 5 112 dcl BIN_DATA_FROM_HOST 5 113 fixed bin (9) unsigned init (8) static options (constant); 5 114 dcl ABORT_SES_FROM_HOST 5 115 fixed bin (9) unsigned init (9) static options (constant); 5 116 5 117 5 118 /* End mca_data_area.incl.pl1 */ 5 119 397 398 end mca_tandd_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/16/86 1107.4 mca_tandd_.pl1 >special_ldd>install>MR12.0-1159>mca_tandd_.pl1 389 1 06/29/79 1727.8 event_wait_info.incl.pl1 >ldd>include>event_wait_info.incl.pl1 391 2 06/29/79 1728.0 event_wait_channel.incl.pl1 >ldd>include>event_wait_channel.incl.pl1 393 3 09/16/86 0946.1 mca_area.incl.pl1 >special_ldd>install>MR12.0-1159>mca_area.incl.pl1 395 4 09/16/86 0946.8 mca_data.incl.pl1 >special_ldd>install>MR12.0-1159>mca_data.incl.pl1 397 5 09/16/86 0945.9 mca_data_area.incl.pl1 >special_ldd>install>MR12.0-1159>mca_data_area.incl.pl1 5-88 6 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 5-90 7 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 5-92 8 08/17/79 2215.0 ioi_stat.incl.pl1 >ldd>include>ioi_stat.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. CHARS_PER_WORD 001220 constant fixed bin(17,0) initial dcl 46 ref 171 175 228 229 303 304 325 335 347 347 360 364 CONT_NO_MARKER constant bit(2) initial unaligned dcl 47 ref 294 DATA_TYPE constant bit(6) initial unaligned dcl 48 ref 90 ENABLE_CONT_CMD constant bit(6) initial unaligned dcl 49 ref 223 295 318 IDCW_ID constant bit(3) initial unaligned dcl 50 ref 222 293 317 IOTD constant bit(2) initial unaligned dcl 51 ref 225 300 322 MAX_DATA_SIZE constant fixed bin(17,0) initial dcl 52 ref 197 254 MAX_TALLY constant fixed bin(17,0) initial dcl 53 ref 170 230 230 305 305 326 326 READ_TYPE constant bit(6) initial unaligned dcl 54 ref 81 113 221 316 336 360 TEXT_TYPE constant bit(6) initial unaligned dcl 55 ref 98 270 a_code parameter fixed bin(35,0) dcl 21 set ref 76 85 93 144* 148 177* 181* a_ioi_idx parameter fixed bin(17,0) dcl 22 ref 76 85 93 100 a_mca_status parameter bit(36) unaligned dcl 23 set ref 76 85 93 137* 137 143* a_mcad_ptr parameter pointer dcl 24 ref 148 153 a_ret_len parameter fixed bin(21,0) dcl 25 set ref 148 178* a_user_ptr parameter pointer dcl 26 ref 76 85 93 194 244 a_user_words parameter fixed bin(17,0) dcl 27 ref 76 85 93 195 245 addr builtin function dcl 69 ref 122 123 155 156 157 159 203 205 209 211 215 219 248 258 274 274 286 287 288 296 298 310 313 314 319 373 374 376 376 address based bit(18) level 2 packed unaligned dcl 6-7 set ref 224* 299* 321* async_io 33 based bit(1) level 3 packed unaligned dcl 4-31 ref 129 basic_size 000100 automatic fixed bin(17,0) dcl 29 set ref 196* 246* 335 340 347 364 bin builtin function dcl 69 ref 169 chan_cmd 0(24) based bit(6) level 2 packed unaligned dcl 7-21 set ref 223* 295* 318* channel_id 2 000144 automatic fixed bin(71,0) array level 2 dcl 2-8 set ref 375* cleanup 000136 stack reference condition dcl 71 ref 104 code 000101 automatic fixed bin(35,0) dcl 30 in procedure "mca_tandd_" set ref 108* 109 111* 116 127* 128 140 181 200 256 274* 278 337* 341* 352* 354 376* 377 378* 385* code 0(18) based bit(3) level 2 in structure "idcw" packed unaligned dcl 7-21 in procedure "mca_tandd_" set ref 222* 293* 317* command based bit(6) level 2 packed unaligned dcl 7-21 set ref 221* 292* 316* completion 4 based structure level 3 in structure "mca_work_space" packed unaligned dcl 5-25 in procedure "mca_tandd_" completion based structure level 2 in structure "istat" dcl 8-7 in procedure "mca_tandd_" control 0(22) based bit(2) level 2 packed unaligned dcl 7-21 set ref 157 294* convert_ipc_code_ 000016 constant entry external dcl 61 ref 378 cu_$level_get 000010 constant entry external dcl 58 ref 103 cu_$level_set 000012 constant entry external dcl 59 ref 105 107 145 183 current_ws_size 31 based fixed bin(18,0) level 2 dcl 4-31 set ref 351 355* data_1 24 based char level 2 packed unaligned dcl 5-25 set ref 216* 262* 268* 268 274 274 data_2 based char level 2 packed unaligned dcl 5-25 set ref 323* data_header based structure level 1 dcl 5-35 set ref 171 196 228 246 303 325 data_header_1 14 based structure level 2 dcl 5-25 set ref 215 259* 264* 264 298 data_header_2 based structure level 2 dcl 5-25 set ref 281* 283* 283 310 data_header_ptr 000154 automatic pointer dcl 5-15 set ref 171 196 215* 219 224 228 246 298* 299 303 310* 313 321 325 data_size_1 000156 automatic fixed bin(21,0) initial dcl 5-17 set ref 5-17* 197* 216 216 228 229 253* 262 262 268 268 274 274 274* 281 283 283 303 304 310 323 335 347 364* data_size_2 000157 automatic fixed bin(21,0) initial dcl 5-17 set ref 168* 172* 172 175 5-17* 198* 254* 323 323 325 347 360* 360 dcw based structure level 1 dcl 6-7 set ref 212* 297* 320* dcw1 1 based structure level 2 packed unaligned dcl 5-81 set ref 157 211 296 dcw2 3 based structure level 2 packed unaligned dcl 5-81 set ref 159 319 dcwp 000166 automatic pointer dcl 6-4 set ref 157* 159* 169 211* 212 224 225 231 296* 297 299 300 306 319* 320 321 322 327 dest_len 5(27) based structure level 2 packed unaligned dcl 5-50 dest_len_lsb 6(01) based bit(8) level 3 packed unaligned dcl 5-50 ref 252 dest_len_msb 5(28) based bit(8) level 3 packed unaligned dcl 5-50 ref 252 divide builtin function dcl 69 ref 228 303 325 335 347 347 348 entry_to_return_data 24 based entry variable level 2 dcl 4-31 set ref 121* error_table_$area_too_small 000034 external static fixed bin(35,0) dcl 73 ref 337 341 ev_info_ptr 000112 automatic pointer dcl 32 set ref 373* 376* 385* event_chn 10 based fixed bin(71,0) level 2 dcl 4-31 ref 375 event_info_area 000102 automatic structure level 1 unaligned dcl 31 set ref 373 event_wait_channel 000144 automatic structure level 1 dcl 2-8 set ref 376 376 event_wait_info based structure level 1 dcl 1-7 fixed builtin function dcl 69 ref 163 168 253 flags 33 based structure level 2 packed unaligned dcl 4-31 get_ring_ 000014 constant entry external dcl 60 ref 107 107 idcw based structure level 1 dcl 7-21 set ref 210* 220* 289* 315* idcw1 based structure level 2 packed unaligned dcl 5-81 set ref 156 209 288 idcw1_cmd 000114 automatic bit(6) unaligned dcl 33 set ref 81* 90* 98* 113 270 292 336 360 idcw2 2 based structure level 2 packed unaligned dcl 5-81 set ref 314 idcwp 000170 automatic pointer dcl 7-19 set ref 156* 157 209* 210 220 221 222 223 288* 289 292 293 294 295 314* 315 316 317 318 io_param_blk 1(27) based structure level 2 in structure "data_header" packed unaligned dcl 5-35 in procedure "mca_tandd_" set ref 219 313 io_param_blk 15(27) based structure level 3 in structure "mca_work_space" packed unaligned dcl 5-25 in procedure "mca_tandd_" set ref 248 258 io_param_blk_ptr 000160 automatic pointer dcl 5-19 set ref 162* 163 163 167 167 248* 252 252 258* io_param_ptr 22 based pointer level 2 dcl 4-31 set ref 162 219* 313* io_parameter_block based structure level 1 packed unaligned dcl 5-50 ref 163 ioi_$workspace 000020 constant entry external dcl 62 ref 352 ioi_idx 7 based fixed bin(17,0) level 2 dcl 4-31 set ref 352* ioi_wks_ptr 12 based pointer level 2 dcl 4-31 set ref 154 333 352* 357 ioi_ws_size 000115 automatic fixed bin(18,0) dcl 34 set ref 347* 348 349 350* 351 352* 355 359 360 ipc_$block 000022 constant entry external dcl 63 ref 376 ipcd based structure level 1 dcl 4-61 isp 000172 automatic pointer dcl 8-5 set ref 196 205* 246 287* istat based structure level 1 dcl 8-7 ref 196 246 length builtin function dcl 69 ref 137 list_of_dcw based structure level 2 packed unaligned dcl 5-25 set ref 155 203 260* 286 low builtin function dcl 69 ref 216 262 323 mca_area based structure level 1 dcl 3-10 mca_area_ptr 000150 automatic pointer dcl 3-17 set ref 137 374* 385* mca_dcw_list based structure level 1 packed unaligned dcl 5-81 set ref 196 204* 246 mca_dcw_list_ptr 000162 automatic pointer dcl 5-21 set ref 155* 156 157 159 196 203* 204 209 211 246 286* 288 296 314 319 mca_parse_ 000024 constant entry external dcl 64 ref 274 mca_status 4 based bit(72) level 2 dcl 3-10 ref 137 mca_util_$connect 000026 constant entry external dcl 65 ref 127 mca_util_$io_event_mca 000030 constant entry external dcl 66 ref 385 mca_util_$mca_ptr 000032 constant entry external dcl 67 ref 108 mca_work_space based structure level 1 unaligned dcl 5-25 mca_work_space_ptr 000164 automatic pointer dcl 5-23 set ref 123 154* 155 203 205 206 215 216 258 259 260 261 262 264 268 274 274 281 283 286 287 298 310 323 333* 357* mcad based structure level 1 dcl 4-31 mcad_ptr 000152 automatic pointer dcl 4-22 set ref 108* 121 122 123 127* 129 153* 154 162 175 176 176 219 274* 313 333 351 352 352 355 357 375 385* min builtin function dcl 69 ref 172 mod builtin function dcl 69 ref 229 304 349 n_channels 000144 automatic fixed bin(17,0) initial level 2 dcl 2-8 set ref 2-8* offset_of_data_2 000116 automatic fixed bin(17,0) dcl 35 set ref 163* 175 pages 000220 automatic fixed bin(17,0) dcl 332 set ref 348* 349* 349 350 rel builtin function dcl 69 ref 163 224 299 321 ret_data based char unaligned dcl 37 set ref 176* 176 ret_len 000117 automatic fixed bin(21,0) dcl 36 set ref 175* 176 176 178 return_data_ptr 20 based pointer level 2 dcl 4-31 set ref 123* 176 size builtin function dcl 69 ref 163 171 196 196 196 228 246 246 246 303 325 sk_ioi_idx 000127 automatic fixed bin(17,0) dcl 39 set ref 100* 108* sk_mca_area 000120 automatic structure level 1 unaligned dcl 38 set ref 374 source_len 4(09) based structure level 2 packed unaligned dcl 5-50 source_len_lsb 4(19) based bit(8) level 3 packed unaligned dcl 5-50 ref 167 source_len_msb 4(10) based bit(8) level 3 packed unaligned dcl 5-50 ref 167 status_area 4 based structure level 2 unaligned dcl 5-25 set ref 122 123 205 206* 261* 287 status_offset 30 based fixed bin(17,0) level 2 dcl 4-31 ref 175 substr builtin function dcl 69 ref 137 231 306 327 sys_info$page_size 000036 external static fixed bin(17,0) dcl 74 ref 348 349 350 tally 0(24) based bit(12) level 2 packed unaligned dcl 6-7 set ref 169 231* 306* 327* tally_num 000130 automatic fixed bin(17,0) dcl 40 set ref 169* 170 170* 171* 171 172 228* 229* 229 230 230* 231 303* 304* 304 305 305* 306 325* 326 326* 327 temp_bits 000131 automatic bit(16) unaligned dcl 41 set ref 167* 168 252* 253 type 0(22) based bit(2) level 2 packed unaligned dcl 6-7 set ref 225* 300* 322* unspec builtin function dcl 69 set ref 204* 206* 210* 212* 220* 231 259* 260* 261* 281* 289* 297* 306 315* 320* 327 user_iop 000132 automatic pointer dcl 42 set ref 122 194* 244* 248 264 268 283 user_level 000135 automatic fixed bin(17,0) dcl 44 set ref 103* 105* 145* 183* 274* user_ptr 16 based pointer level 2 dcl 4-31 set ref 122* 176 user_size 000134 automatic fixed bin(17,0) dcl 43 set ref 195* 245* 335 340 359 360 364 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABORT_SES_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 5-114 BIN_DATA_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 5-112 CON_DATA_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 5-110 DATA_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 5-96 DATA_FROM_MCA internal static fixed bin(9,0) initial unsigned dcl 5-102 DATA_SEG internal static char(12) initial unaligned dcl 4-85 IPC_ATTACHED internal static fixed bin(17,0) initial dcl 4-94 IPC_FREE internal static fixed bin(17,0) initial dcl 4-94 IPC_NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 4-94 MAINT_SESSION internal static fixed bin(17,0) initial dcl 4-88 MCA_ATTACHED internal static fixed bin(17,0) initial dcl 4-88 MCA_ATTACHING internal static fixed bin(17,0) initial dcl 4-88 MCA_FREE internal static fixed bin(17,0) initial dcl 4-88 MCA_NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 4-88 MCA_area_version_1 internal static char(8) initial unaligned dcl 3-19 MCA_data_version_1 internal static char(8) initial unaligned dcl 4-17 REQ_DATA_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 5-104 SEEK internal static fixed bin(9,0) initial unsigned dcl 5-108 STATUS_FROM_MCA internal static fixed bin(9,0) initial unsigned dcl 5-106 SYSTEM_DIR internal static char(17) initial unaligned dcl 4-84 WRITE_CONSOLE internal static fixed bin(9,0) initial unsigned dcl 5-98 WRITE_READ_CONSOLE internal static fixed bin(9,0) initial unsigned dcl 5-100 event_wait_info_ptr automatic pointer dcl 1-5 imess based structure level 1 dcl 8-21 imp automatic pointer dcl 8-19 ipcd_ptr automatic pointer dcl 4-24 mca_data_seg based structure level 1 unaligned dcl 4-26 mca_data_seg_ptr internal static pointer initial dcl 4-20 pcw based structure level 1 dcl 7-6 pcwp automatic pointer dcl 7-4 tdcw based structure level 1 dcl 6-14 tdcwp automatic pointer dcl 6-4 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_EXIT 000405 constant label dcl 181 ref 109 116 128 140 TANDD_COMMON 000103 constant label dcl 100 set ref 82 91 build_read_io_blk 000416 constant entry internal dcl 187 ref 113 build_write_io_blk 000533 constant entry internal dcl 236 ref 114 get_ws_size 001016 constant entry internal dcl 330 ref 199 255 mca_tandd_ 000020 constant entry external dcl 16 mca_tandd_$read_data 000034 constant entry external dcl 76 mca_tandd_$return_data 000275 constant entry external dcl 148 ref 121 mca_tandd_$write_data 000052 constant entry external dcl 85 mca_tandd_$write_text 000070 constant entry external dcl 93 wait 001136 constant entry internal dcl 369 ref 134 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1500 1540 1221 1510 Length 2132 1221 40 355 256 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mca_tandd_ 216 external procedure is an external procedure. on unit on line 104 68 on unit build_read_io_blk internal procedure shares stack frame of external procedure mca_tandd_. build_write_io_blk internal procedure shares stack frame of external procedure mca_tandd_. get_ws_size internal procedure shares stack frame of external procedure mca_tandd_. wait internal procedure shares stack frame of external procedure mca_tandd_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mca_tandd_ 000100 basic_size mca_tandd_ 000101 code mca_tandd_ 000102 event_info_area mca_tandd_ 000112 ev_info_ptr mca_tandd_ 000114 idcw1_cmd mca_tandd_ 000115 ioi_ws_size mca_tandd_ 000116 offset_of_data_2 mca_tandd_ 000117 ret_len mca_tandd_ 000120 sk_mca_area mca_tandd_ 000127 sk_ioi_idx mca_tandd_ 000130 tally_num mca_tandd_ 000131 temp_bits mca_tandd_ 000132 user_iop mca_tandd_ 000134 user_size mca_tandd_ 000135 user_level mca_tandd_ 000144 event_wait_channel mca_tandd_ 000150 mca_area_ptr mca_tandd_ 000152 mcad_ptr mca_tandd_ 000154 data_header_ptr mca_tandd_ 000156 data_size_1 mca_tandd_ 000157 data_size_2 mca_tandd_ 000160 io_param_blk_ptr mca_tandd_ 000162 mca_dcw_list_ptr mca_tandd_ 000164 mca_work_space_ptr mca_tandd_ 000166 dcwp mca_tandd_ 000170 idcwp mca_tandd_ 000172 isp mca_tandd_ 000220 pages get_ws_size THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out return_mac mdfx1 enable_op ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_ipc_code_ cu_$level_get cu_$level_set get_ring_ ioi_$workspace ipc_$block mca_parse_ mca_util_$connect mca_util_$io_event_mca mca_util_$mca_ptr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$area_too_small sys_info$page_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 2 8 000011 5 17 000013 16 000017 18 000026 76 000027 81 000045 82 000047 85 000050 90 000063 91 000065 93 000066 98 000101 100 000103 103 000106 104 000115 105 000131 106 000140 107 000141 108 000161 109 000174 111 000176 113 000177 114 000204 116 000205 121 000207 122 000214 123 000217 127 000222 128 000233 129 000235 134 000241 137 000242 140 000250 141 000252 143 000253 144 000260 145 000261 146 000270 148 000271 153 000306 154 000312 155 000314 156 000316 157 000320 159 000326 162 000330 163 000332 167 000336 168 000350 169 000352 170 000355 171 000361 172 000364 175 000370 176 000375 177 000402 178 000403 179 000404 181 000405 183 000406 184 000415 187 000416 194 000417 195 000423 196 000425 197 000427 198 000431 199 000432 200 000433 203 000436 204 000440 205 000443 206 000446 209 000452 210 000454 211 000455 212 000457 215 000460 216 000462 219 000466 220 000473 221 000474 222 000477 223 000501 224 000504 225 000507 228 000511 229 000515 230 000522 231 000527 233 000532 236 000533 244 000534 245 000540 246 000542 248 000547 252 000553 253 000565 254 000567 255 000571 256 000572 258 000575 259 000602 260 000605 261 000610 262 000613 264 000617 268 000623 270 000626 274 000631 278 000652 281 000655 283 000665 286 000672 287 000674 288 000677 289 000701 292 000702 293 000704 294 000706 295 000712 296 000714 297 000716 298 000717 299 000721 300 000723 303 000725 304 000732 305 000737 306 000744 310 000747 313 000752 314 000757 315 000761 316 000762 317 000764 318 000766 319 000770 320 000772 321 000773 322 000775 323 000777 325 001004 326 001007 327 001013 328 001015 330 001016 333 001017 335 001022 336 001030 337 001033 338 001036 340 001037 341 001042 342 001045 347 001046 348 001052 349 001055 350 001062 351 001065 352 001070 354 001104 355 001107 357 001112 359 001115 360 001120 364 001132 367 001135 369 001136 373 001137 374 001141 375 001143 376 001146 377 001163 378 001165 379 001176 385 001177 387 001214 ----------------------------------------------------------- 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