COMPILATION LISTING OF SEGMENT mca_attach_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 04/26/87 1535.4 mst Sun Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 8 /****^ HISTORY COMMENTS: 9* 1) change(86-03-18,Fawcett), approve(86-03-18,MCR7374), 10* audit(86-09-05,Lippard), install(86-09-16,MR12.0-1159): 11* Created to control the MCA for online use. This is mainly used by online 12* T&D. 13* 2) change(86-10-21,Fawcett), approve(86-10-21,PBF7374), 14* audit(86-10-23,Farley), install(86-10-30,MR12.0-1203): 15* Change entry mca_attach_$finish_detach to only set the mcad.state to 16* MCA_FREE if the state is greater than MCA_FREE. 17* 3) change(87-03-31,Fawcett), approve(87-04-23,MCR7667), 18* audit(87-04-23,Farley), install(87-04-26,MR12.1-1025): 19* Changed to set the error code returned to 0 if the IPC attached is not 20* in the Multics config deck. 21* END HISTORY COMMENTS */ 22 23 /* format: style4 */ 24 /* Created Nov 1984 by R. A. Fawcett */ 25 /* Modified Oct 1985 by Paul Farley for multiple attachments per IPC and 26* to check for the correct version in the mca_data_seg. */ 27 28 mca_attach_: 29 proc; 30 dcl a_force bit (1); 31 dcl a_name char (*); /* name of the MCA to be attached */ 32 dcl a_ev_chn fixed bin (71); /* event channel for the attachement */ 33 dcl a_ioi_idx fixed bin; /* the ioi_index for this MCA */ 34 dcl a_code fixed bin (35); /* is returned to indicate success */ 35 dcl a_ipc_id char (*); 36 dcl a_ipc_operational bit (1); /* used during ipc detachment */ 37 dcl a_ipc_num fixed bin; 38 dcl a_mca_status bit (72) parm; 39 dcl bc fixed bin (24); 40 dcl channel_number fixed bin (17); 41 dcl code fixed bin (35); 42 dcl dev_name char (3); 43 dcl dev_type char (32); 44 dcl ev_chan fixed bin (71); 45 46 dcl (dev_00_sw, fips_sw) bit (1); 47 dcl (force_detach_entry, force_reset_entry) bit (1); 48 dcl group_index fixed bin (17); 49 dcl ioi_max_ws fixed bin (19); 50 dcl ipc_id char (5) var; 51 dcl ipc_index fixed bin; 52 dcl ipc_num fixed bin (17); 53 dcl ipc_operational bit (1); 54 dcl loc_async bit (1); 55 dcl loc_ev_chn fixed bin (71); 56 dcl loc_ioi_idx fixed bin; 57 dcl loc_rcp_id bit (36) aligned; 58 dcl max_time fixed bin (71); 59 dcl mca_index fixed bin (3); 60 dcl multiple_prph_on_ipc bit (1); 61 dcl name char (4); 62 dcl need_to_del_evchn bit (1); 63 dcl prph_index fixed bin; 64 dcl rcp_msg char (132); 65 dcl rcp_state fixed bin; 66 dcl save_code fixed bin (35); 67 dcl 1 sk_dev_info like device_info; 68 dcl 1 sk_printer_info like printer_info; 69 dcl status_from_reset bit (72); 70 dcl user_level fixed bin; 71 72 dcl p99 pic "99" based; 73 74 /* Entries */ 75 dcl admin_gate_$syserr entry options (variable); 76 dcl config_$find entry (char (4) aligned, ptr); 77 dcl convert_ipc_code_ entry (fixed bin (35)); 78 dcl cu_$level_get entry (fixed bin); 79 dcl cu_$level_set entry (fixed bin); 80 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 81 dcl get_group_id_ entry () returns (char (32)); 82 dcl get_ring_ entry () returns (fixed bin (3)); 83 dcl get_process_id_ entry () returns (bit (36)); 84 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 85 dcl ioi_$set_channel_required 86 entry (fixed bin, fixed bin (3), fixed bin (7), fixed bin (35)); 87 dcl ioi_$set_status entry (fixed bin, fixed bin, fixed bin, fixed bin (35)); 88 dcl ioi_$timeout entry (fixed bin, fixed bin (71), fixed bin (35)); 89 dcl ioi_$release_devices entry (fixed bin, fixed bin (35)); 90 dcl ioi_$suspend_devices entry (fixed bin, fixed bin (35)); 91 dcl ioi_$workspace entry (fixed bin, ptr, fixed bin (18), fixed bin (35)); 92 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 93 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 94 dcl mca_util_$reset entry (fixed bin, bit (72), fixed bin (35)); 95 dcl mca_util_$force_reset entry (fixed bin, bit (72), fixed bin (35)); 96 dcl mca_util_$mca_ptr entry (fixed bin, fixed bin (35)) returns (ptr); 97 dcl mca_util_$force_mca_ptr entry (fixed bin, fixed bin (35)) returns (ptr); 98 dcl rcp_$check_attach entry (bit (36) aligned, ptr, char (*), fixed bin, fixed bin (19), fixed bin (71), 99 fixed bin, fixed bin (35)); 100 dcl rcp_$detach entry (bit (36) aligned, bit (*), fixed bin, char (*), fixed bin (35)); 101 dcl rcp_priv_$attach entry (char (*), ptr, fixed bin (71), char (*), bit (36) aligned, fixed bin (35)); 102 103 /* Error codes */ 104 105 dcl error_table_$bad_channel fixed bin (35) ext static; 106 dcl error_table_$io_not_configured fixed bin (35) ext static; 107 dcl error_table_$name_not_found fixed bin (35) ext static; 108 dcl error_table_$not_attached fixed bin (35) ext static; 109 dcl error_table_$resource_not_free fixed bin (35) ext static; 110 dcl error_table_$unimplemented_version fixed bin (35) ext static; 111 112 /* Constant */ 113 114 dcl FIFTEEN_SEC fixed bin (71) init (15000000) static options (constant); 115 dcl MCA_CHAN fixed bin (7) init (3) static options (constant); 116 dcl MCA_NAME (1:4) char (4) static options (constant) 117 init ("mcaa", "mcab", "mcac", "mcad"); 118 dcl lower char (7) static options (constant) 119 init ("abcdimp"); 120 dcl UPPER char (7) static options (constant) 121 init ("ABCDIMP"); 122 123 dcl sys_info$page_size fixed bin (17) ext static; 124 125 dcl (addr, clock, convert, fixed, hbound, lbound, null, rel, substr, translate, unspec) builtin; 126 127 dcl cleanup condition; 128 129 130 131 132 mca_attach_$mca_attach: 133 entry (a_name, a_ev_chn, a_ioi_idx, a_code); 134 135 /* This entry will attach a MCA. It is called via the mca_$attach_mca gate */ 136 137 /* The MCA is attached via rcp_, it may be attached for sync_io or async_io 138* depending on the value of a_ev_chn. After rcp_ has attached the MCA the 139* configuration data stored in the MCA must be read into the mca_data_seg 140* for this MCA. The sequence of events for sync_io and async_io must be done 141* in the same order and attempt has been made to use the same procedures for 142* both sync_io and async_io. 143* 144* 1) check to see if MCA is CONFIGURED and FREE. 145* 146* 2) attach via rcp 147* 148* 3) setup mcad entry 149* 150* 4) call mca_util_$reset, 151* This step causes a reset status command, 152* and then read config command to be issued. 153* If the IO is async then the user must call via gates to invoke 154* the process io routines. 155* If sync IO then wait routine invokes the process io routines upon io 156* completion. 157* Most of the above actions are in mca_util. 158**/ 159 160 force_reset_entry = "0"b; 161 162 goto ATTACH_COMMON; 163 164 mca_attach_$force_reset_mca: 165 entry (a_name, a_mca_status, a_code); 166 167 /* This entry will reset and mask a MCA. It is called via the 168* mca_priv_$force_reset gate. */ 169 170 171 force_reset_entry = "1"b; 172 173 ATTACH_COMMON: 174 175 code = 0; 176 name = translate (a_name, lower, UPPER); 177 if ^force_reset_entry then loc_ev_chn = a_ev_chn; 178 else loc_ev_chn = 0; 179 call cu_$level_get (user_level); 180 need_to_del_evchn, force_detach_entry = "0"b; 181 mcad_ptr = null (); 182 183 on cleanup begin; 184 call clean_up_attach; 185 call set_back_level; 186 end; 187 188 call cu_$level_set (get_ring_ ()); 189 if mca_data_seg_ptr = null () then do; 190 call initiate_file_ (SYSTEM_DIR, DATA_SEG, "0"b, 191 mca_data_seg_ptr, bc, code); 192 if mca_data_seg_ptr = null () then 193 194 /* Trouble in River City */ 195 196 goto ATTACH_ENDS; 197 end; 198 199 if mca_data_seg.version ^= MCA_data_version_1 then do; /* Bad News */ 200 code = error_table_$unimplemented_version; 201 goto ATTACH_ENDS; 202 end; 203 204 do mca_index = lbound (MCA_NAME, 1) to hbound (MCA_NAME, 1) while (name ^= MCA_NAME (mca_index)); 205 end; 206 if mca_index > hbound (MCA_NAME, 1) then do; 207 code = error_table_$name_not_found; 208 goto ATTACH_ENDS; 209 end; 210 211 mcad_ptr = addr (mca_data_seg.array (mca_index)); 212 213 if mcad.state ^= MCA_FREE then do; 214 if mcad.state = MCA_NOT_CONFIGURED then 215 code = error_table_$io_not_configured; 216 else code = error_table_$resource_not_free; 217 goto ATTACH_ENDS; 218 end; 219 220 221 device_info_ptr = addr (sk_dev_info); 222 device_info.version_num = DEVICE_INFO_VERSION_1; 223 device_info.wait_time = 0; 224 device_info.system_flag = "1"b; 225 device_info.device_name = MCA_NAME (mca_index); 226 device_info.model = 0; 227 device_info.qualifiers (*) = 0; 228 dev_type = DEVICE_TYPE (MCA_DTYPEX); 229 230 /* check to see if the user wants async_io, or no event channel passed. */ 231 if loc_ev_chn = 0 | loc_ev_chn = 1 then do; 232 loc_async = "0"b; 233 234 /* if not async_io then set up a ring1_ event channel */ 235 call ipc_$create_ev_chn (ev_chan, code); 236 if code ^= 0 then do; 237 call convert_ipc_code_ (code); 238 goto ATTACH_ENDS; 239 end; 240 need_to_del_evchn = "1"b; 241 end; 242 else do; 243 loc_async = "1"b; 244 ev_chan = loc_ev_chn; 245 end; 246 247 /* try to attach the MCA */ 248 249 loc_rcp_id = "0"b; 250 call rcp_priv_$attach (dev_type, device_info_ptr, ev_chan, "", 251 loc_rcp_id, code); 252 253 if code ^= 0 then goto ATTACH_ENDS; 254 255 mcad.event_chn = ev_chan; 256 mcad.async_io = loc_async; 257 mcad.rcp_id = loc_rcp_id; 258 259 call rcp_$check_attach (mcad.rcp_id, device_info_ptr, rcp_msg, 260 loc_ioi_idx, ioi_max_ws, max_time, rcp_state, code); 261 if rcp_state ^= 0 then do; 262 if code = 0 then code = rcp_state; 263 goto ATTACH_ENDS; 264 end; 265 266 /* Not really attached until reset & read config I/O is completed */ 267 268 mcad.state = MCA_ATTACHING; 269 mcad.config_data_requested = "0"b; 270 mcad.attach_time = clock (); 271 mcad.attach_pid = get_process_id_ (); 272 mcad.last_status = ""b; 273 mcad.current_ws_size = 0; 274 mcad.ioi_idx = loc_ioi_idx; 275 mcad.max_time_out = max_time; 276 mcad.max_ws_size = ioi_max_ws; 277 278 call ioi_$set_channel_required 279 (mcad.ioi_idx, mca_index, MCA_CHAN, code); 280 if code ^= 0 then goto ATTACH_ENDS; 281 282 mcad.current_ws_size = sys_info$page_size; 283 call ioi_$workspace (mcad.ioi_idx, mcad.ioi_wks_ptr, 284 (mcad.current_ws_size), code); 285 if code ^= 0 then goto ATTACH_ENDS; 286 287 mca_work_space_ptr = mcad.ioi_wks_ptr; 288 289 mcad.status_offset = fixed (rel (addr (mca_work_space.status_area)), 17); 290 call ioi_$set_status (mcad.ioi_idx, mcad.status_offset, 1, code); 291 if code ^= 0 then goto ATTACH_ENDS; 292 293 call ioi_$timeout (mcad.ioi_idx, FIFTEEN_SEC, code); 294 if code ^= 0 then goto ATTACH_ENDS; 295 if force_reset_entry then do; 296 call mca_util_$force_reset (mcad.ioi_idx, status_from_reset, code); 297 a_mca_status = status_from_reset; 298 end; 299 else do; 300 call mca_util_$reset (mcad.ioi_idx, status_from_reset, code); 301 if code ^= 0 then goto ATTACH_ENDS; 302 else a_ioi_idx = mcad.ioi_idx; 303 end; 304 305 goto MAIN_EXIT; 306 307 ATTACH_ENDS: 308 call clean_up_attach; 309 goto MAIN_EXIT; 310 311 /* end mca_attach */ 312 313 mca_attach_$mca_detach: 314 entry (a_ioi_idx, a_code); 315 316 /* This entry will detach the MCA. It will first check to see if any of 317* the IPCs are attached if so it will detach them. This is called via 318* the mca_$detach_mca gate. */ 319 320 loc_ioi_idx = a_ioi_idx; 321 code = 0; 322 force_detach_entry = "0"b; 323 call cu_$level_get (user_level); 324 325 on cleanup begin; 326 call set_back_level; 327 end; 328 329 call cu_$level_set (get_ring_ ()); 330 mcad_ptr = mca_util_$mca_ptr (loc_ioi_idx, code); 331 if code ^= 0 then do; 332 if code ^= error_table_$not_attached then goto MAIN_EXIT; 333 if mcad_ptr = null () then goto MAIN_EXIT; 334 if mcad.state <= MCA_FREE then goto MAIN_EXIT; 335 end; 336 337 if mcad.state = MCA_FREE then do; 338 code = error_table_$not_attached; 339 goto MAIN_EXIT; 340 end; 341 342 call rcp_$detach (mcad.rcp_id, "0"b, 0, "", code);/* RCP will call mca_attach_$finish_detach */ 343 if code ^= 0 then goto MAIN_EXIT; 344 goto MAIN_EXIT; 345 346 /* end mca_detach */ 347 348 mca_attach_$ipc_attach: 349 entry (a_ipc_id, a_ioi_idx, a_ipc_num, a_code); 350 351 352 /* This entry will attach an IPC. The MCA must be attached to the process. 353* This is called via mca_$attach_mca gate. */ 354 355 loc_ioi_idx = a_ioi_idx; 356 ipc_id = translate (a_ipc_id, lower, UPPER); 357 call cu_$level_get (user_level); 358 on cleanup begin; 359 call set_back_level; 360 end; 361 call cu_$level_set (get_ring_ ()); 362 call set_up_ipc; 363 if code ^= 0 then goto MAIN_EXIT; 364 force_detach_entry = "0"b; 365 ipc_operational = "1"b; /* in case we have to detach */ 366 ipcd.ipc_name = "ipc" || convert (p99, ipc_num); 367 ipcd.prph_attachments = 0; 368 unspec (ipcd.attach_data) = ""b; 369 multiple_prph_on_ipc = "1"b; 370 do prph_index = 1 to ipcd.nchan while (multiple_prph_on_ipc); 371 channel_number = ipcd.channel + prph_index - 1; 372 ipcd.attach_data (prph_index).attached_thru_rcp = "0"b; 373 ipcd.attach_data (prph_index).io_suspended = "0"b; 374 ipcd.attach_data (prph_index).prph_name = ""; 375 call dev_info; 376 if code ^= 0 then do; 377 378 /* if the ipc channel is not known to Multics then it is OK to let the user 379* think it is attached */ 380 381 if code = error_table_$io_not_configured then do; 382 code = 0; 383 goto not_known_ok; 384 end; 385 goto ERROR_DT_IPC; 386 end; 387 call rcp_priv_$attach (dev_type, device_info_ptr, mcad.event_chn, 388 "", ipcd.attach_data (prph_index).ipc_rcp_id, code); 389 if code ^= 0 then goto ERROR_DT_IPC; 390 ipcd.attach_data (prph_index).attached_thru_rcp = "1"b; 391 call rcp_$check_attach (ipcd.attach_data (prph_index).ipc_rcp_id, device_info_ptr, rcp_msg, 392 ipcd.attach_data (prph_index).ipc_ioi_idx, ioi_max_ws, max_time, rcp_state, code); 393 if rcp_state ^= 0 then do; 394 if code = 0 then code = rcp_state; 395 goto ERROR_DT_IPC; 396 end; 397 call ioi_$set_channel_required 398 (ipcd.attach_data (prph_index).ipc_ioi_idx, (mcad.imu_number), (channel_number), code); 399 if code ^= 0 then goto ERROR_DT_IPC; 400 401 if dev_type = "special" & dev_name ^= "fnp" then do; 402 call ioi_$suspend_devices (ipcd.attach_data (prph_index).ipc_ioi_idx, code); 403 if code ^= 0 then do; 404 405 ERROR_DT_IPC: 406 save_code = code; 407 call detach_this_ipc; 408 code = save_code; 409 goto MAIN_EXIT; 410 end; 411 ipcd.attach_data (prph_index).io_suspended = "1"b; 412 call admin_gate_$syserr (LOG, "MCA: IO suspended on ^a (^a in IMU-^a) for ^a.", 413 ipcd.attach_data (prph_index).prph_name, ipcd.ipc_name, 414 translate (mcad.name, UPPER, lower), get_group_id_ ()); 415 end; 416 417 not_known_ok: 418 419 ipcd.attach_data (prph_index).attach_time = clock (); 420 ipcd.prph_attachments = prph_index; 421 end; 422 ipcd.state = IPC_ATTACHED; 423 a_ipc_num = ipc_num; 424 goto MAIN_EXIT; 425 426 /* end ipc_attach */ 427 428 mca_attach_$ipc_detach: 429 entry (a_ipc_id, a_ioi_idx, a_ipc_operational, a_code); 430 431 /* called via the mca_$detach_ipc gate to detach an ipc */ 432 force_detach_entry = "0"b; 433 loc_ioi_idx = a_ioi_idx; 434 ipc_id = translate (a_ipc_id, lower, UPPER); 435 call cu_$level_get (user_level); 436 on cleanup begin; 437 call set_back_level; 438 end; 439 call cu_$level_set (get_ring_ ()); 440 call set_up_ipc; 441 if code ^= 0 then goto MAIN_EXIT; 442 ipc_operational = a_ipc_operational; 443 call detach_this_ipc; 444 goto MAIN_EXIT; 445 446 /* end ipc_detach */ 447 448 449 450 MAIN_EXIT: 451 452 /* Things seem ok */ 453 454 a_code = code; 455 call cu_$level_set (user_level); 456 return; 457 458 mca_attach_$finish_detach: 459 entry (a_ioi_idx, a_force, a_code); 460 461 /* This entry is called by rcp_detach_ to clear out the mca_data_seg, and 462* is not a ring_1 gate target it is only callable in ring_1 */ 463 464 loc_ioi_idx = a_ioi_idx; 465 force_detach_entry = a_force; 466 ipc_operational = "1"b; /* force the flag */ 467 mcad_ptr = mca_util_$force_mca_ptr (loc_ioi_idx, code); 468 if mcad_ptr = null () then do; 469 a_code = code; 470 return; 471 end; 472 473 /* Are there any IPC'S attached ?? */ 474 475 check_ipc_attached: 476 do ipc_index = lbound (mcad.ipcd_array, 1) to hbound (mcad.ipcd_array, 1); 477 ipcd_ptr = addr (mcad.ipcd_array (ipc_index)); 478 if ipcd.state >= IPC_ATTACHED then do; 479 480 /* OK detach this IPC */ 481 call detach_this_ipc; 482 if code ^= 0 & ^force_detach_entry then goto MAIN_EXIT; 483 end; 484 end; 485 if ^mcad.async_io then 486 /* delete the ring_1 event channel */ 487 call ipc_$delete_ev_chn (mcad.event_chn, code); 488 unspec (mcad.flags) = "0"b; 489 mcad.rcp_id = "0"b; 490 if mcad.state > MCA_FREE then mcad.state = MCA_FREE; 491 mcad.attach_pid = "0"b; 492 if force_detach_entry then mcad.lock = "0"b; 493 code = 0; 494 return; 495 496 clean_up_attach: 497 proc; 498 save_code = code; 499 if mca_data_seg_ptr = null () then return; /* Never got started */ 500 if mcad_ptr = null () then return; /* Never got MCA attached */ 501 if need_to_del_evchn then call ipc_$delete_ev_chn (ev_chan, code); 502 if loc_rcp_id ^= "0"b then do; 503 mcad.state = MCA_FREE; 504 call rcp_$detach (loc_rcp_id, "0"b, 0, "", code); 505 /* RCP will call mca_attach_$finish_detach */ 506 end; 507 code = save_code; 508 end clean_up_attach; 509 510 set_back_level: 511 proc; 512 call cu_$level_set (user_level); 513 end set_back_level; 514 515 detach_this_ipc: 516 proc; 517 518 /* This proc will detach the IPC as per the ipcd_ptr */ 519 520 do prph_index = hbound (ipcd.attach_data, 1) to lbound (ipcd.attach_data, 1) by -1; 521 if ipcd.attach_data (prph_index).attached_thru_rcp then do; 522 if ipcd.attach_data (prph_index).io_suspended then do; 523 if ipc_operational then do; 524 call ioi_$release_devices (ipcd.attach_data (prph_index).ipc_ioi_idx, code); 525 if code ^= 0 then 526 call admin_gate_$syserr (ANNOUNCE, "MCA: IO not released on ^a (^a in IMU-^a), ^a.", 527 ipcd.attach_data (prph_index).prph_name, ipcd.ipc_name, 528 translate (mcad.name, UPPER, lower), get_group_id_ ()); 529 else do; 530 ipcd.attach_data (prph_index).io_suspended = "0"b; 531 call admin_gate_$syserr (LOG, "MCA: IO released on ^a (^a in IMU-^a), ^a.", 532 ipcd.attach_data (prph_index).prph_name, ipcd.ipc_name, 533 translate (mcad.name, UPPER, lower), get_group_id_ ()); 534 end; 535 end; 536 else call admin_gate_$syserr (LOG, "MCA: IO not released on ^a (^a in IMU-^a), ^a.", 537 ipcd.attach_data (prph_index).prph_name, ipcd.ipc_name, 538 translate (mcad.name, UPPER, lower), get_group_id_ ()); 539 end; 540 call rcp_$detach (ipcd.attach_data (prph_index).ipc_rcp_id, "0"b, 0, "", code); 541 ipcd.attach_data (prph_index).attached_thru_rcp = "0"b; 542 ipcd.attach_data (prph_index).ipc_ioi_idx = 0; 543 end; 544 end; 545 ipcd.prph_attachments = 0; 546 ipcd.state = IPC_FREE; 547 end detach_this_ipc; 548 549 dev_info: 550 proc; 551 552 /* This entry will build the dev info structure for the PRPH */ 553 554 dev_00_sw, fips_sw = "0"b; 555 if ipcd.type_index = PSIA_2_TRIP | 556 ipcd.type_index = PSIA_4_TRIP then do; 557 dev_00_sw = "1"b; 558 end; 559 else if ipcd.type_index = IPC_TAPE_FIPS | 560 ipcd.type_index = IPC_DISK_FIPS then do; 561 fips_sw = "1"b; 562 end; 563 chnl_cardp, prph_cardp = null (); 564 call config_$find (PRPH_CARD_WORD, prph_cardp); 565 do while (prph_cardp ^= null ()); 566 if prph_card.iom = mcad.imu_number then do; 567 if prph_card.chan = channel_number then do; 568 dev_name = substr (prph_card.name, 1, 3); 569 ipcd.attach_data (prph_index).prph_name = prph_card.name; 570 goto found_dev; 571 end; 572 end; 573 call config_$find (PRPH_CARD_WORD, prph_cardp); 574 end; 575 call config_$find (CHNL_CARD_WORD, chnl_cardp); 576 do while (chnl_cardp ^= null ()); 577 do group_index = lbound (chnl_card.group, 1) to hbound (chnl_card.group, 1) while 578 (chnl_card.group (group_index).iom ^= -1); 579 if chnl_card.group (group_index).iom = mcad.imu_number then do; 580 if chnl_card.group (group_index).chan = channel_number then do; 581 dev_name = substr (chnl_card.name, 1, 3); 582 ipcd.attach_data (prph_index).prph_name = chnl_card.name; 583 prph_cardp = chnl_cardp; 584 goto found_dev; 585 end; 586 end; 587 end; 588 call config_$find (CHNL_CARD_WORD, chnl_cardp); 589 end; 590 dev_name = ""; 591 code = error_table_$io_not_configured; 592 return; 593 found_dev: 594 if dev_name = "prt" then do; 595 dev_type = "printer"; 596 printer_info_ptr = addr (sk_printer_info); 597 printer_info.version_num = PRINTER_INFO_VERSION_1; 598 printer_info.wait_time = 0; 599 printer_info.system_flag = "1"b; 600 printer_info.device_name = prph_card.name; 601 printer_info.print_train = 0; 602 printer_info.line_length = -1; 603 printer_info.model = 0; 604 device_info_ptr = printer_info_ptr; 605 multiple_prph_on_ipc = "1"b; 606 return; 607 end; 608 multiple_prph_on_ipc = "0"b; /* normally only one device per IPC */ 609 device_info_ptr = addr (sk_dev_info); 610 device_info.version_num = DEVICE_INFO_VERSION_1; 611 device_info.wait_time = 0; 612 device_info.system_flag = "1"b; 613 device_info.model = 0; 614 device_info.qualifiers (*) = 0; 615 if dev_name = "rdr" then do; 616 dev_type = "reader"; 617 device_info.device_name = prph_card.name; 618 multiple_prph_on_ipc = "1"b; 619 end; 620 else if dev_name = "pun" then do; 621 dev_type = "punch"; 622 device_info.device_name = prph_card.name; 623 multiple_prph_on_ipc = "1"b; 624 end; 625 else if dev_name = "opc" then do; 626 dev_type = "console"; 627 device_info.device_name = prph_card.name; 628 end; 629 else do; 630 dev_type = "special"; 631 if dev_00_sw then 632 device_info.device_name = prph_card.name || "_00"; 633 else device_info.device_name = prph_card.name; 634 end; 635 end dev_info; 636 637 set_up_ipc: 638 proc; 639 dcl chan_number fixed bin; 640 641 code = 0; 642 mcad_ptr = mca_util_$mca_ptr (loc_ioi_idx, code); 643 if code ^= 0 then goto MAIN_EXIT; 644 if mcad.state < MCA_ATTACHED then do; 645 code = error_table_$not_attached; 646 return; 647 end; 648 649 if substr (ipc_id, 1, 3) = "ipc" then do; 650 ipc_num = cv_dec_check_ (substr (ipc_id, 4), code); 651 if code ^= 0 then do; 652 code = error_table_$bad_channel; 653 return; 654 end; 655 if ipc_num < lbound (mcad.ipcd_array, 1) | ipc_num > hbound (mcad.ipcd_array, 1) then do; 656 code = error_table_$bad_channel; 657 return; 658 end; 659 ipcd_ptr = addr (mcad.ipcd_array (ipc_num)); 660 goto ipc_found; 661 end; 662 else do; 663 if substr (ipc_id, 1, 1) ^= mcad.name then do; 664 code = error_table_$bad_channel; 665 return; 666 end; 667 chan_number = cv_dec_check_ (substr (ipc_id, 2, 2), code); 668 if code ^= 0 then do; 669 code = error_table_$bad_channel; 670 return; 671 end; 672 do ipc_index = lbound (mcad.ipcd_array, 1) to hbound (mcad.ipcd_array, 1); 673 ipcd_ptr = addr (mcad.ipcd_array (ipc_index)); 674 if ipcd.state > IPC_NOT_CONFIGURED then do; 675 if (ipcd.channel <= chan_number) & 676 (chan_number < (ipcd.channel + ipcd.nchan)) then do; 677 ipc_num = ipc_index; 678 goto ipc_found; 679 end; 680 end; 681 end; 682 code = error_table_$io_not_configured; 683 return; 684 end; 685 ipc_found: 686 return; 687 end set_up_ipc; 688 689 1 1 /* BEGIN INCLUDE FILE ... config_chnl_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 1 2 1 3 dcl chnl_cardp ptr; /* Pointer to a CHNL card. */ 1 4 1 5 dcl 1 chnl_card based (chnl_cardp) aligned, /* CHNL card declaration */ 1 6 2 word char (4), /* "chnl" */ 1 7 2 name char (4), /* subsystem name */ 1 8 2 group (3), /* Channel groups for this subsystem -- 9 fields total */ 1 9 3 iom fixed bin (3), /* IOM number */ 1 10 3 chan fixed bin (8), /* channel number */ 1 11 3 nchan fixed bin, /* number of channels */ 1 12 1 13 2 pad (4) bit (36) aligned, /* pad to 15 fields */ 1 14 1 15 2 type_word aligned, 1 16 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 1 17 3 pad1 bit (4) unaligned, 1 18 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 1 19 1 20 dcl 1 chnl_card_array aligned based (chnl_cardp), /* Overlay for channel group array */ 1 21 2 pad1 (2) bit (36) aligned, 1 22 2 group (min (3, divide (max (0, (chnl_card.n_fields - 1)), 3, 17, 0))), 1 23 3 iom fixed bin (3), /* IOM number */ 1 24 3 chan fixed bin (8), /* Channel number. */ 1 25 3 nchan fixed bin; /* Number of logical channels on this channel. */ 1 26 1 27 dcl CHNL_CARD_WORD char (4) aligned internal static options (constant) init ("chnl"); 1 28 1 29 /* END INCLUDE FILE ... config_chnl_card.incl.pl1 */ 690 691 2 1 /* BEGIN INCLUDE FILE ... config_prph_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 2 2 2 3 dcl prph_cardp ptr; /* Pointer to a PRPH card. */ 2 4 2 5 dcl 1 prph_card based (prph_cardp) aligned, /* PRPH card declaration */ 2 6 2 word char (4), /* "prph" */ 2 7 2 name char (4), /* subsystem name */ 2 8 2 iom fixed bin (3), /* IOM number */ 2 9 2 chan fixed bin (8), /* channel number */ 2 10 2 model fixed bin, /* model number */ 2 11 2 state char (4), /* ON/OFF state */ 2 12 2 pad (9) bit (36) aligned, /* pad to 15 fields */ 2 13 2 14 2 type_word aligned, 2 15 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 2 16 3 pad1 bit (4) unaligned, 2 17 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 2 18 2 19 dcl PRPH_CARD_WORD char (4) aligned internal static options (constant) init ("prph"); 2 20 2 21 /* END INCLUDE FILE ... config_prph_card.incl.pl1 */ 692 693 3 1 /* Begin mca_constants.incl.pl1 */ 3 2 3 3 3 4 3 5 3 6 /****^ HISTORY COMMENTS: 3 7* 1) change(86-03-19,Fawcett), approve(86-03-19,MCR7374), 3 8* audit(86-04-28,Lippard), install(86-09-16,MR12.0-1159): 3 9* Constants used for values returned from MCA. 3 10* END HISTORY COMMENTS */ 3 11 3 12 dcl NO_CONFIG_PRESENT fixed bin init (0) static options (constant); 3 13 dcl NOT_CONFIGED fixed bin init (1) static options (constant); 3 14 dcl PH_NOT_PRESENT fixed bin init (2) static options (constant); 3 15 dcl BASIC_ROM_FAILED fixed bin init (3) static options (constant); 3 16 dcl JAM_FAILED fixed bin init (4) static options (constant); 3 17 dcl SELF_FAILED fixed bin init (5) static options (constant); 3 18 dcl HW_ID_NO_MATCH fixed bin init (6) static options (constant); 3 19 dcl CON_SET_UP_FAILED fixed bin init (7) static options (constant); 3 20 dcl RSO_FAILED fixed bin init (8) static options (constant); 3 21 dcl FW_NOT_FOUND fixed bin init (9) static options (constant); 3 22 dcl FW_LOAD_FAILED fixed bin init (10) static options (constant); 3 23 dcl ALTER_NOT_FOUND fixed bin init (11) static options (constant); 3 24 dcl ALTER_LOAD_FAILED fixed bin init (12) static options (constant); 3 25 dcl FW_EXEC_FAILED fixed bin init (13) static options (constant); 3 26 dcl OPERATIONAL fixed bin init (14) static options (constant); 3 27 dcl STOP_ON_COND fixed bin init (15) static options (constant); 3 28 3 29 dcl PSIA_2_TRIP fixed bin init (1) static options (constant); 3 30 dcl IPC_PDSI fixed bin init (2) static options (constant); 3 31 dcl IPC_CONS_2 fixed bin init (3) static options (constant); 3 32 dcl IPC_DAI fixed bin init (4) static options (constant); 3 33 dcl IPC_IDI fixed bin init (5) static options (constant); 3 34 dcl IPC_TAPE_FIPS fixed bin init (6) static options (constant); 3 35 dcl IPC_DISK_FIPS fixed bin init (7) static options (constant); 3 36 dcl NDIC fixed bin init (9) static options (constant); 3 37 dcl PSIA_4_TRIP fixed bin init (15) static options (constant); 3 38 3 39 dcl TYPE (0:15) char (9) init ("N/A","psia_2","ur-pdsi","cons_2","ur-dai", 3 40 "idi","fips","fips","N/A","ndic", 3 41 "N/A","N/A","N/A","N/A","N/A","psia_4"); 3 42 3 43 3 44 /* End mca_constants.incl.pl1 */ 695 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 */ 696 697 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 698 699 9 1 /* Begin include file rcp_device_info.incl.pl1 9 2** 9 3** Created on 01/08/75 by Bill Silver. 9 4** This include file defines the RCP device info structure for a general device. 9 5**/ 9 6 9 7 9 8 /****^ HISTORY COMMENTS: 9 9* 1) change(86-06-04,Hartogs), approve(86-06-04,MCR7383), 9 10* audit(86-06-05,Coppola), install(86-07-18,MR12.0-1098): 9 11* Added DEVICE_INFO_VERSION_1 constant. 9 12* END HISTORY COMMENTS */ 9 13 9 14 9 15 dcl device_info_ptr ptr; /* Pointer to general device info structure. */ 9 16 9 17 dcl 1 device_info based(device_info_ptr) aligned, /* RCP device info structure for any device. */ 9 18 2 version_num fixed bin, /* Version number of this structure. */ 9 19 2 usage_time fixed bin, /* Number of minutes device will/may be used. */ 9 20 2 wait_time fixed bin, /* Number of minutes user will/must wait. */ 9 21 2 system_flag bit(1), /* ON => user wants to be a system process. */ 9 22 2 device_name char(8), /* Device name. */ 9 23 2 model fixed bin, /* Device model number. */ 9 24 2 qualifiers(4) fixed bin(35); /* Qualifying characteristics. */ 9 25 9 26 dcl DEVICE_INFO_VERSION_1 fixed bin int static options (constant) init (1); 9 27 9 28 /* End of include file ... rcp_device_info.incl.pl1 */ 700 701 10 1 /* Begin include file rcp_printer_info.incl.pl1 10 2** 10 3** Created on 01/08/75 by Bill Silver. 10 4** This include file defines the RCP device info structure for printers. 10 5**/ 10 6 10 7 10 8 /****^ HISTORY COMMENTS: 10 9* 1) change(86-06-04,Hartogs), approve(86-06-04,MCR7383), 10 10* audit(86-06-05,Coppola), install(86-07-18,MR12.0-1098): 10 11* Added version constant PRINTER_INFO_VERSION_1. 10 12* END HISTORY COMMENTS */ 10 13 10 14 10 15 dcl printer_info_ptr ptr; /* Pointer to printer device info structure. */ 10 16 10 17 dcl 1 printer_info based(printer_info_ptr) aligned, /* RCP device info structure for printers. */ 10 18 2 version_num fixed bin, /* Version number of this structure. */ 10 19 2 usage_time fixed bin, /* Number of minutes printer will/may be used. */ 10 20 2 wait_time fixed bin, /* Number of minutes user will/must wait. */ 10 21 2 system_flag bit(1), /* ON => user wants to be a system process. */ 10 22 2 device_name char(8), /* Printer name. */ 10 23 2 model fixed bin, /* Printer model number. */ 10 24 2 print_train fixed bin, /* Print train type. */ 10 25 2 line_length fixed bin; /* Printer line length. -1 => not specified. */ 10 26 10 27 dcl PRINTER_INFO_VERSION_1 fixed bin int static options (constant) init (1); 10 28 10 29 /* End of include file ... rcp_printer_info.incl.pl1 */ 702 703 11 1 /* Begin include file ... rcp_resource_types.incl.pl1 11 2* * 11 3* * Created 3/79 by Michael R. Jordan for MR7.0R 11 4* * 11 5* * This include file defines the official RCP resource types. 11 6* * The array of names is indexed by the corresponding device type. 11 7* * MOD by RAF for MCA 11 8**/ 11 9 11 10 11 11 11 12 /****^ HISTORY COMMENTS: 11 13* 1) change(85-09-09,Fawcett), approve(85-09-09,MCR6979), 11 14* audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033): 11 15* Support of MCA. 11 16* END HISTORY COMMENTS */ 11 17 11 18 dcl DEVICE_TYPE (8) char (32) 11 19 internal static options (constant) 11 20 init ("tape_drive", "disk_drive", "console", "printer", "punch", "reader", "special", "mca"); 11 21 11 22 dcl NUM_QUALIFIERS (8) fixed bin /* Number of qualifiers for each device type. */ 11 23 internal static init (3, 0, 0, 2, 0, 0, 0, 0); 11 24 11 25 dcl VOLUME_TYPE (8) char (32) 11 26 internal static options (constant) 11 27 init ("tape_vol", "disk_vol", "", "", "", "", "", ""); 11 28 11 29 dcl TAPE_DRIVE_DTYPEX fixed bin static internal options (constant) init (1); 11 30 dcl DISK_DRIVE_DTYPEX fixed bin static internal options (constant) init (2); 11 31 dcl CONSOLE_DTYPEX fixed bin static internal options (constant) init (3); 11 32 dcl PRINTER_DTYPEX fixed bin static internal options (constant) init (4); 11 33 dcl PUNCH_DTYPEX fixed bin static internal options (constant) init (5); 11 34 dcl READER_DTYPEX fixed bin static internal options (constant) init (6); 11 35 dcl SPECIAL_DTYPEX fixed bin static internal options (constant) init (7); 11 36 dcl MCA_DTYPEX fixed bin static internal options (constant) init (8); 11 37 dcl TAPE_VOL_VTYPEX fixed bin static internal options (constant) init (1); 11 38 dcl DISK_VOL_VTYPEX fixed bin static internal options (constant) init (2); 11 39 11 40 11 41 /* End include file ... rcp_resource_types.incl.pl1 */ 704 705 12 1 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 12 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 12 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 12 4 12 5 /* This include file has an ALM version. Keep 'em in sync! */ 12 6 12 7 dcl ( 12 8 12 9 /* The following constants define the message action codes. This indicates 12 10*how a message is to be handled. */ 12 11 12 12 SYSERR_CRASH_SYSTEM init (1), 12 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 12 14 12 15 SYSERR_TERMINATE_PROCESS init (2), 12 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 12 17 12 18 SYSERR_PRINT_WITH_ALARM init (3), 12 19 BEEP init (3), /* Beep and print the message on the console. */ 12 20 12 21 SYSERR_PRINT_ON_CONSOLE init (0), 12 22 ANNOUNCE init (0), /* Just print the message on the console. */ 12 23 12 24 SYSERR_LOG_OR_PRINT init (4), 12 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 12 26 12 27 SYSERR_LOG_OR_DISCARD init (5), 12 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 12 29 12 30 12 31 /* The following constants are added to the normal severities to indicate 12 32*different sorting classes of messages. */ 12 33 12 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 12 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 12 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 12 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 12 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 12 39 ) fixed bin internal static options (constant); 12 40 12 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 706 707 708 /* BEGIN MESSAGE DOCUMENTATION 709* 710* Message: 711* MCA: IO suspended on DEVICE (ipcNN in IMU-X) for PERSON.PROJ.T. 712* 713* S: $log 714* 715* T: $run 716* 717* M: This message is stating that the normal flow of I/O for 718* this device is being suspended. This allows the user to stop 719* or alter/reload an IPC without affecting the system. 720* 721* A: $ignore 722* 723* Message: 724* MCA: IO released on DEVICE (ipcNN in IMU-X), PERSON.PROJ.T. 725* 726* S: $log 727* 728* T: $run 729* 730* M: This message is stating that the normal flow of I/O for 731* this device is being resumed. 732* 733* A: $ignore 734* 735* Message: 736* MCA: IO not released on DEVICE (ipcNN in IMU-X), PERSON.PROJ.T. 737* 738* S: $warn 739* 740* T: $run 741* 742* M: The user is detaching the IPC, but does not want the IO to be 743* resumed. 744* 745* A: This is normally because the IPC is defective or no longer capable 746* of handling normal I/O. 747* 748* END MESSAGE DOCUMENTATION */ 749 750 end mca_attach_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/26/87 1530.0 mca_attach_.pl1 >spec>install>MR12.1-1025>mca_attach_.pl1 690 1 05/08/81 1853.6 config_chnl_card.incl.pl1 >ldd>include>config_chnl_card.incl.pl1 692 2 10/31/84 1315.5 config_prph_card.incl.pl1 >ldd>include>config_prph_card.incl.pl1 694 3 09/18/86 1317.5 mca_constants.incl.pl1 >ldd>include>mca_constants.incl.pl1 696 4 09/18/86 1317.5 mca_data.incl.pl1 >ldd>include>mca_data.incl.pl1 698 5 09/18/86 1317.5 mca_data_area.incl.pl1 >ldd>include>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 700 9 07/24/86 2051.8 rcp_device_info.incl.pl1 >ldd>include>rcp_device_info.incl.pl1 702 10 07/24/86 2051.8 rcp_printer_info.incl.pl1 >ldd>include>rcp_printer_info.incl.pl1 704 11 03/27/86 1120.0 rcp_resource_types.incl.pl1 >ldd>include>rcp_resource_types.incl.pl1 706 12 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_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. ANNOUNCE 000124 constant fixed bin(17,0) initial dcl 12-7 set ref 525* CHNL_CARD_WORD 000113 constant char(4) initial dcl 1-27 set ref 575* 588* DATA_SEG 000100 constant char(12) initial unaligned dcl 4-85 set ref 190* DEVICE_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 9-26 ref 222 610 DEVICE_TYPE 000000 constant char(32) initial array unaligned dcl 11-18 ref 228 FIFTEEN_SEC 000124 constant fixed bin(71,0) initial dcl 114 set ref 293* IPC_ATTACHED constant fixed bin(17,0) initial dcl 4-94 ref 422 478 IPC_DISK_FIPS constant fixed bin(17,0) initial dcl 3-35 ref 559 IPC_FREE constant fixed bin(17,0) initial dcl 4-94 ref 546 IPC_NOT_CONFIGURED constant fixed bin(17,0) initial dcl 4-94 ref 674 IPC_TAPE_FIPS constant fixed bin(17,0) initial dcl 3-34 ref 559 LOG 000162 constant fixed bin(17,0) initial dcl 12-7 set ref 412* 531* 536* MCA_ATTACHED constant fixed bin(17,0) initial dcl 4-88 ref 644 MCA_ATTACHING constant fixed bin(17,0) initial dcl 4-88 ref 268 MCA_CHAN 000170 constant fixed bin(7,0) initial dcl 115 set ref 278* MCA_DTYPEX constant fixed bin(17,0) initial dcl 11-36 ref 228 MCA_FREE constant fixed bin(17,0) initial dcl 4-88 ref 213 334 337 490 490 503 MCA_NAME 000120 constant char(4) initial array unaligned dcl 116 ref 204 204 204 206 225 MCA_NOT_CONFIGURED constant fixed bin(17,0) initial dcl 4-88 ref 214 MCA_data_version_1 000110 constant char(8) initial unaligned dcl 4-17 ref 199 PRINTER_INFO_VERSION_1 constant fixed bin(17,0) initial dcl 10-27 ref 597 PRPH_CARD_WORD 000112 constant char(4) initial dcl 2-19 set ref 564* 573* PSIA_2_TRIP constant fixed bin(17,0) initial dcl 3-29 ref 555 PSIA_4_TRIP constant fixed bin(17,0) initial dcl 3-37 ref 555 SYSTEM_DIR 000103 constant char(17) initial unaligned dcl 4-84 set ref 190* TYPE 000254 automatic char(9) initial array unaligned dcl 3-39 set ref 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* 3-39* UPPER 000114 constant char(7) initial unaligned dcl 120 ref 176 356 412 412 434 525 525 531 531 536 536 a_code parameter fixed bin(35,0) dcl 34 set ref 132 164 313 348 428 450* 458 469* a_ev_chn parameter fixed bin(71,0) dcl 32 ref 132 177 a_force parameter bit(1) unaligned dcl 30 ref 458 465 a_ioi_idx parameter fixed bin(17,0) dcl 33 set ref 132 302* 313 320 348 355 428 433 458 464 a_ipc_id parameter char unaligned dcl 35 ref 348 356 428 434 a_ipc_num parameter fixed bin(17,0) dcl 37 set ref 348 423* a_ipc_operational parameter bit(1) unaligned dcl 36 ref 428 442 a_mca_status parameter bit(72) unaligned dcl 38 set ref 164 297* a_name parameter char unaligned dcl 31 ref 132 164 176 addr builtin function dcl 125 ref 211 221 289 477 596 609 659 673 admin_gate_$syserr 000012 constant entry external dcl 75 ref 412 525 531 536 array 2 based structure array level 2 unaligned dcl 4-26 set ref 211 async_io 33 based bit(1) level 3 packed unaligned dcl 4-31 set ref 256* 485 attach_data 10 based structure array level 2 dcl 4-61 set ref 368* 520 520 attach_pid 4 based bit(36) level 2 dcl 4-31 set ref 271* 491* attach_time 12 based fixed bin(71,0) array level 3 in structure "ipcd" dcl 4-61 in procedure "mca_attach_" set ref 417* attach_time 2 based fixed bin(71,0) level 2 in structure "mcad" dcl 4-31 in procedure "mca_attach_" set ref 270* attached_thru_rcp 11 based bit(1) array level 4 packed unaligned dcl 4-61 set ref 372* 390* 521 541* bc 000100 automatic fixed bin(24,0) dcl 39 set ref 190* chan 3 based fixed bin(8,0) level 2 in structure "prph_card" dcl 2-5 in procedure "mca_attach_" ref 567 chan 3 based fixed bin(8,0) array level 3 in structure "chnl_card" dcl 1-5 in procedure "mca_attach_" ref 580 chan_number 000410 automatic fixed bin(17,0) dcl 639 set ref 667* 675 675 channel 2 based fixed bin(17,0) level 2 packed unaligned dcl 4-61 ref 371 675 675 channel_number 000101 automatic fixed bin(17,0) dcl 40 set ref 371* 397 567 580 chnl_card based structure level 1 dcl 1-5 chnl_cardp 000250 automatic pointer dcl 1-3 set ref 563* 575* 576 577 577 577 579 580 581 582 583 588* cleanup 000242 stack reference condition dcl 127 ref 183 325 358 436 clock builtin function dcl 125 ref 270 417 code 000102 automatic fixed bin(35,0) dcl 41 set ref 173* 190* 200* 207* 214* 216* 235* 236 237* 250* 253 259* 262 262* 278* 280 283* 285 290* 291 293* 294 296* 300* 301 321* 330* 331 332 338* 342* 343 363 376 381 382* 387* 389 391* 394 394* 397* 399 402* 403 405 408* 441 450 467* 469 482 485* 493* 498 501* 504* 507* 524* 525 540* 591* 641* 642* 643 645* 650* 651 652* 656* 664* 667* 668 669* 682* completion 4 based structure level 3 in structure "mca_work_space" packed unaligned dcl 5-25 in procedure "mca_attach_" completion based structure level 2 in structure "istat" dcl 8-7 in procedure "mca_attach_" config_$find 000014 constant entry external dcl 76 ref 564 573 575 588 config_data_requested 33(01) based bit(1) level 3 packed unaligned dcl 4-31 set ref 269* convert builtin function dcl 125 ref 366 convert_ipc_code_ 000016 constant entry external dcl 77 ref 237 cu_$level_get 000020 constant entry external dcl 78 ref 179 323 357 435 cu_$level_set 000022 constant entry external dcl 79 ref 188 329 361 439 455 512 current_ws_size 31 based fixed bin(18,0) level 2 dcl 4-31 set ref 273* 282* 283 cv_dec_check_ 000024 constant entry external dcl 80 ref 650 667 data_header based structure level 1 dcl 5-35 data_size_1 000324 automatic fixed bin(21,0) initial dcl 5-17 set ref 5-17* data_size_2 000325 automatic fixed bin(21,0) initial dcl 5-17 set ref 5-17* dcw based structure level 1 dcl 6-7 dev_00_sw 000116 automatic bit(1) unaligned dcl 46 set ref 554* 557* 631 dev_name 000103 automatic char(3) unaligned dcl 42 set ref 401 568* 581* 590* 593 615 620 625 dev_type 000104 automatic char(32) unaligned dcl 43 set ref 228* 250* 387* 401 595* 616* 621* 626* 630* device_info based structure level 1 dcl 9-17 device_info_ptr 000330 automatic pointer dcl 9-15 set ref 221* 222 223 224 225 226 227 250* 259* 387* 391* 604* 609* 610 611 612 613 614 617 622 627 631 633 device_name 4 based char(8) level 2 in structure "device_info" dcl 9-17 in procedure "mca_attach_" set ref 225* 617* 622* 627* 631* 633* device_name 4 based char(8) level 2 in structure "printer_info" dcl 10-17 in procedure "mca_attach_" set ref 600* error_table_$bad_channel 000074 external static fixed bin(35,0) dcl 105 ref 652 656 664 669 error_table_$io_not_configured 000076 external static fixed bin(35,0) dcl 106 ref 214 381 591 682 error_table_$name_not_found 000100 external static fixed bin(35,0) dcl 107 ref 207 error_table_$not_attached 000102 external static fixed bin(35,0) dcl 108 ref 332 338 645 error_table_$resource_not_free 000104 external static fixed bin(35,0) dcl 109 ref 216 error_table_$unimplemented_version 000106 external static fixed bin(35,0) dcl 110 ref 200 ev_chan 000114 automatic fixed bin(71,0) dcl 44 set ref 235* 244* 250* 255 501* event_chn 10 based fixed bin(71,0) level 2 dcl 4-31 set ref 255* 387* 485* fips_sw 000117 automatic bit(1) unaligned dcl 46 set ref 554* 561* fixed builtin function dcl 125 ref 289 flags 33 based structure level 2 in structure "mcad" packed unaligned dcl 4-31 in procedure "mca_attach_" set ref 488* flags 11 based structure array level 3 in structure "ipcd" packed unaligned dcl 4-61 in procedure "mca_attach_" force_detach_entry 000120 automatic bit(1) unaligned dcl 47 set ref 180* 322* 364* 432* 465* 482 492 force_reset_entry 000121 automatic bit(1) unaligned dcl 47 set ref 160* 171* 177 295 get_group_id_ 000026 constant entry external dcl 81 ref 412 412 525 525 531 531 536 536 get_process_id_ 000032 constant entry external dcl 83 ref 271 get_ring_ 000030 constant entry external dcl 82 ref 188 188 329 329 361 361 439 439 group 2 based structure array level 2 dcl 1-5 ref 577 577 group_index 000122 automatic fixed bin(17,0) dcl 48 set ref 577* 577* 579 580* hbound builtin function dcl 125 ref 204 206 475 520 577 655 672 idcw based structure level 1 dcl 7-21 imu_number 6 based fixed bin(17,0) level 2 dcl 4-31 ref 397 566 579 initiate_file_ 000034 constant entry external dcl 84 ref 190 io_parameter_block based structure level 1 packed unaligned dcl 5-50 io_suspended 11(01) based bit(1) array level 4 packed unaligned dcl 4-61 set ref 373* 411* 522 530* ioi_$release_devices 000044 constant entry external dcl 89 ref 524 ioi_$set_channel_required 000036 constant entry external dcl 85 ref 278 397 ioi_$set_status 000040 constant entry external dcl 87 ref 290 ioi_$suspend_devices 000046 constant entry external dcl 90 ref 402 ioi_$timeout 000042 constant entry external dcl 88 ref 293 ioi_$workspace 000050 constant entry external dcl 91 ref 283 ioi_idx 7 based fixed bin(17,0) level 2 dcl 4-31 set ref 274* 278* 283* 290* 293* 296* 300* 302 ioi_max_ws 000123 automatic fixed bin(19,0) dcl 49 set ref 259* 276 391* ioi_wks_ptr 12 based pointer level 2 dcl 4-31 set ref 283* 287 iom 2 based fixed bin(3,0) array level 3 in structure "chnl_card" dcl 1-5 in procedure "mca_attach_" ref 577 579 iom 2 based fixed bin(3,0) level 2 in structure "prph_card" dcl 2-5 in procedure "mca_attach_" ref 566 ipc_$create_ev_chn 000052 constant entry external dcl 92 ref 235 ipc_$delete_ev_chn 000054 constant entry external dcl 93 ref 485 501 ipc_id 000124 automatic varying char(5) dcl 50 set ref 356* 434* 649 650 650 663 667 667 ipc_index 000127 automatic fixed bin(17,0) dcl 51 set ref 475* 477* 672* 673 677* ipc_ioi_idx 15 based fixed bin(17,0) array level 3 dcl 4-61 set ref 391* 397* 402* 524* 542* ipc_name based char(8) level 2 dcl 4-61 set ref 366* 412* 525* 531* 536* ipc_num 000130 automatic fixed bin(17,0) dcl 52 set ref 366 423 650* 655 655 659 677* ipc_operational 000131 automatic bit(1) unaligned dcl 53 set ref 365* 442* 466* 523 ipc_rcp_id 14 based bit(36) array level 3 dcl 4-61 set ref 387* 391* 540* ipcd based structure level 1 dcl 4-61 ipcd_array 40 based structure array level 2 dcl 4-31 set ref 475 475 477 655 655 659 672 672 673 ipcd_ptr 000322 automatic pointer dcl 4-24 set ref 366 367 368 370 371 372 373 374 387 390 391 391 397 402 411 412 412 417 420 422 477* 478 520 520 521 522 524 525 525 530 531 531 536 536 540 541 542 545 546 555 555 559 559 569 582 659* 673* 674 675 675 675 istat based structure level 1 dcl 8-7 last_status 36 based bit(71) level 2 dcl 4-31 set ref 272* lbound builtin function dcl 125 ref 204 475 520 577 655 672 line_length 10 based fixed bin(17,0) level 2 dcl 10-17 set ref 602* loc_async 000132 automatic bit(1) unaligned dcl 54 set ref 232* 243* 256 loc_ev_chn 000134 automatic fixed bin(71,0) dcl 55 set ref 177* 178* 231 231 244 loc_ioi_idx 000136 automatic fixed bin(17,0) dcl 56 set ref 259* 274 320* 330* 355* 433* 464* 467* 642* loc_rcp_id 000137 automatic bit(36) dcl 57 set ref 249* 250* 257 502 504* lock based bit(36) level 2 dcl 4-31 set ref 492* lower 000116 constant char(7) initial unaligned dcl 118 ref 176 356 412 412 434 525 525 531 531 536 536 max_time 000140 automatic fixed bin(71,0) dcl 58 set ref 259* 275 391* max_time_out 34 based fixed bin(71,0) level 2 dcl 4-31 set ref 275* max_ws_size 14 based fixed bin(19,0) level 2 dcl 4-31 set ref 276* mca_data_seg based structure level 1 unaligned dcl 4-26 mca_data_seg_ptr 000010 internal static pointer initial dcl 4-20 set ref 189 190* 192 199 211 499 mca_dcw_list based structure level 1 packed unaligned dcl 5-81 mca_index 000142 automatic fixed bin(3,0) dcl 59 set ref 204* 204* 206 211 225 278* mca_util_$force_mca_ptr 000064 constant entry external dcl 97 ref 467 mca_util_$force_reset 000060 constant entry external dcl 95 ref 296 mca_util_$mca_ptr 000062 constant entry external dcl 96 ref 330 642 mca_util_$reset 000056 constant entry external dcl 94 ref 300 mca_work_space based structure level 1 unaligned dcl 5-25 mca_work_space_ptr 000326 automatic pointer dcl 5-23 set ref 287* 289 mcad based structure level 1 dcl 4-31 mcad_ptr 000320 automatic pointer dcl 4-22 set ref 181* 211* 213 214 255 256 257 259 268 269 270 271 272 273 274 275 276 278 282 283 283 283 287 289 290 290 293 296 300 302 330* 333 334 337 342 387 397 412 412 467* 468 475 475 477 485 485 488 489 490 490 491 492 500 503 525 525 531 531 536 536 566 579 642* 644 655 655 659 663 672 672 673 model 6 based fixed bin(17,0) level 2 in structure "printer_info" dcl 10-17 in procedure "mca_attach_" set ref 603* model 6 based fixed bin(17,0) level 2 in structure "device_info" dcl 9-17 in procedure "mca_attach_" set ref 226* 613* multiple_prph_on_ipc 000143 automatic bit(1) unaligned dcl 60 set ref 369* 370 605* 608* 618* 623* name 1 based char(4) level 2 in structure "prph_card" dcl 2-5 in procedure "mca_attach_" ref 568 569 600 617 622 627 631 633 name 000144 automatic char(4) unaligned dcl 61 in procedure "mca_attach_" set ref 176* 204 name 1 based char(4) level 2 in structure "chnl_card" dcl 1-5 in procedure "mca_attach_" ref 581 582 name 5 based char(1) level 2 in structure "mcad" dcl 4-31 in procedure "mca_attach_" ref 412 412 525 525 531 531 536 536 663 nchan 2(18) based fixed bin(17,0) level 2 packed unaligned dcl 4-61 ref 370 675 need_to_del_evchn 000145 automatic bit(1) unaligned dcl 62 set ref 180* 240* 501 null builtin function dcl 125 ref 181 189 192 333 468 499 500 563 565 576 p99 based picture(2) unaligned dcl 72 ref 366 print_train 7 based fixed bin(17,0) level 2 dcl 10-17 set ref 601* printer_info based structure level 1 dcl 10-17 printer_info_ptr 000332 automatic pointer dcl 10-15 set ref 596* 597 598 599 600 601 602 603 604 prph_attachments 6 based fixed bin(17,0) level 2 dcl 4-61 set ref 367* 420* 545* prph_card based structure level 1 dcl 2-5 prph_cardp 000252 automatic pointer dcl 2-3 set ref 563* 564* 565 566 567 568 569 573* 583* 600 617 622 627 631 633 prph_index 000146 automatic fixed bin(17,0) dcl 63 set ref 370* 371 372 373 374 387 390 391 391 397 402 411 412 417 420* 520* 521 522 524 525 530 531 536 540 541 542* 569 582 prph_name 10 based char(4) array level 3 dcl 4-61 set ref 374* 412* 525* 531* 536* 569* 582* qualifiers 7 based fixed bin(35,0) array level 2 dcl 9-17 set ref 227* 614* rcp_$check_attach 000066 constant entry external dcl 98 ref 259 391 rcp_$detach 000070 constant entry external dcl 100 ref 342 504 540 rcp_id 32 based bit(36) level 2 dcl 4-31 set ref 257* 259* 342* 489* rcp_msg 000147 automatic char(132) unaligned dcl 64 set ref 259* 391* rcp_priv_$attach 000072 constant entry external dcl 101 ref 250 387 rcp_state 000210 automatic fixed bin(17,0) dcl 65 set ref 259* 261 262 391* 393 394 rel builtin function dcl 125 ref 289 save_code 000211 automatic fixed bin(35,0) dcl 66 set ref 405* 408 498* 507 sk_dev_info 000212 automatic structure level 1 unaligned dcl 67 set ref 221 609 sk_printer_info 000225 automatic structure level 1 unaligned dcl 68 set ref 596 state 4 based fixed bin(17,0) level 2 in structure "ipcd" packed unaligned dcl 4-61 in procedure "mca_attach_" set ref 422* 478 546* 674 state 1 based fixed bin(17,0) level 2 in structure "mcad" dcl 4-31 in procedure "mca_attach_" set ref 213 214 268* 334 337 490 490* 503* 644 status_area 4 based structure level 2 unaligned dcl 5-25 set ref 289 status_from_reset 000236 automatic bit(72) unaligned dcl 69 set ref 296* 297 300* status_offset 30 based fixed bin(17,0) level 2 dcl 4-31 set ref 289* 290* substr builtin function dcl 125 ref 568 581 649 650 650 663 667 667 sys_info$page_size 000110 external static fixed bin(17,0) dcl 123 ref 282 system_flag 3 based bit(1) level 2 in structure "printer_info" dcl 10-17 in procedure "mca_attach_" set ref 599* system_flag 3 based bit(1) level 2 in structure "device_info" dcl 9-17 in procedure "mca_attach_" set ref 224* 612* translate builtin function dcl 125 ref 176 356 412 412 434 525 525 531 531 536 536 type_index 3(09) based fixed bin(8,0) level 3 packed unaligned dcl 4-61 ref 555 555 559 559 type_info 3 based structure level 2 dcl 4-61 unspec builtin function dcl 125 set ref 368* 488* user_level 000240 automatic fixed bin(17,0) dcl 70 set ref 179* 323* 357* 435* 455* 512* version based char(8) level 2 packed unaligned dcl 4-26 ref 199 version_num based fixed bin(17,0) level 2 in structure "printer_info" dcl 10-17 in procedure "mca_attach_" set ref 597* version_num based fixed bin(17,0) level 2 in structure "device_info" dcl 9-17 in procedure "mca_attach_" set ref 222* 610* wait_time 2 based fixed bin(17,0) level 2 in structure "device_info" dcl 9-17 in procedure "mca_attach_" set ref 223* 611* wait_time 2 based fixed bin(17,0) level 2 in structure "printer_info" dcl 10-17 in procedure "mca_attach_" set ref 598* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABORT_SES_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 5-114 ALTER_LOAD_FAILED internal static fixed bin(17,0) initial dcl 3-24 ALTER_NOT_FOUND internal static fixed bin(17,0) initial dcl 3-23 BASIC_ROM_FAILED internal static fixed bin(17,0) initial dcl 3-15 BEEP internal static fixed bin(17,0) initial dcl 12-7 BIN_DATA_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 5-112 CONSOLE_DTYPEX internal static fixed bin(17,0) initial dcl 11-31 CON_DATA_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 5-110 CON_SET_UP_FAILED internal static fixed bin(17,0) initial dcl 3-19 CRASH internal static fixed bin(17,0) initial dcl 12-7 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 DISK_DRIVE_DTYPEX internal static fixed bin(17,0) initial dcl 11-30 DISK_VOL_VTYPEX internal static fixed bin(17,0) initial dcl 11-38 FW_EXEC_FAILED internal static fixed bin(17,0) initial dcl 3-25 FW_LOAD_FAILED internal static fixed bin(17,0) initial dcl 3-22 FW_NOT_FOUND internal static fixed bin(17,0) initial dcl 3-21 HW_ID_NO_MATCH internal static fixed bin(17,0) initial dcl 3-18 IPC_CONS_2 internal static fixed bin(17,0) initial dcl 3-31 IPC_DAI internal static fixed bin(17,0) initial dcl 3-32 IPC_IDI internal static fixed bin(17,0) initial dcl 3-33 IPC_PDSI internal static fixed bin(17,0) initial dcl 3-30 JAM_FAILED internal static fixed bin(17,0) initial dcl 3-16 JUST_LOG internal static fixed bin(17,0) initial dcl 12-7 MAINT_SESSION internal static fixed bin(17,0) initial dcl 4-88 NDIC internal static fixed bin(17,0) initial dcl 3-36 NOT_CONFIGED internal static fixed bin(17,0) initial dcl 3-13 NO_CONFIG_PRESENT internal static fixed bin(17,0) initial dcl 3-12 NUM_QUALIFIERS internal static fixed bin(17,0) initial array dcl 11-22 OPERATIONAL internal static fixed bin(17,0) initial dcl 3-26 PH_NOT_PRESENT internal static fixed bin(17,0) initial dcl 3-14 PRINTER_DTYPEX internal static fixed bin(17,0) initial dcl 11-32 PUNCH_DTYPEX internal static fixed bin(17,0) initial dcl 11-33 READER_DTYPEX internal static fixed bin(17,0) initial dcl 11-34 REQ_DATA_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 5-104 RSO_FAILED internal static fixed bin(17,0) initial dcl 3-20 SEEK internal static fixed bin(9,0) initial unsigned dcl 5-108 SELF_FAILED internal static fixed bin(17,0) initial dcl 3-17 SPECIAL_DTYPEX internal static fixed bin(17,0) initial dcl 11-35 STATUS_FROM_MCA internal static fixed bin(9,0) initial unsigned dcl 5-106 STOP_ON_COND internal static fixed bin(17,0) initial dcl 3-27 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 12-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 12-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 12-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 12-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 12-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 12-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 12-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 12-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 12-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 12-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 12-7 TAPE_DRIVE_DTYPEX internal static fixed bin(17,0) initial dcl 11-29 TAPE_VOL_VTYPEX internal static fixed bin(17,0) initial dcl 11-37 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 12-7 VOLUME_TYPE internal static char(32) initial array unaligned dcl 11-25 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 chnl_card_array based structure level 1 dcl 1-20 data_header_ptr automatic pointer dcl 5-15 dcwp automatic pointer dcl 6-4 idcwp automatic pointer dcl 7-19 imess based structure level 1 dcl 8-21 imp automatic pointer dcl 8-19 io_param_blk_ptr automatic pointer dcl 5-19 isp automatic pointer dcl 8-5 mca_dcw_list_ptr automatic pointer dcl 5-21 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. ATTACH_COMMON 000527 constant label dcl 173 ref 162 ATTACH_ENDS 001413 constant label dcl 307 ref 192 201 208 217 238 253 263 280 285 291 294 301 ERROR_DT_IPC 002232 constant label dcl 405 ref 385 389 395 399 MAIN_EXIT 002503 constant label dcl 450 set ref 305 309 332 333 334 339 343 344 363 409 424 441 444 482 643 check_ipc_attached 002570 constant label dcl 475 clean_up_attach 002650 constant entry internal dcl 496 ref 184 307 detach_this_ipc 002766 constant entry internal dcl 515 ref 407 443 481 dev_info 003330 constant entry internal dcl 549 ref 375 found_dev 003524 constant label dcl 593 ref 570 584 ipc_found 004112 constant label dcl 685 ref 660 678 mca_attach_ 000443 constant entry external dcl 28 mca_attach_$finish_detach 002521 constant entry external dcl 458 mca_attach_$force_reset_mca 000506 constant entry external dcl 164 mca_attach_$ipc_attach 001620 constant entry external dcl 348 mca_attach_$ipc_detach 002353 constant entry external dcl 428 mca_attach_$mca_attach 000457 constant entry external dcl 132 mca_attach_$mca_detach 001424 constant entry external dcl 313 not_known_ok 002325 constant label dcl 417 ref 383 set_back_level 002751 constant entry internal dcl 510 ref 185 326 359 437 set_up_ipc 003675 constant entry internal dcl 637 ref 362 440 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 5322 5434 4517 5332 Length 6202 4517 112 531 602 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mca_attach_ 458 external procedure is an external procedure. on unit on line 183 64 on unit on unit on line 325 64 on unit on unit on line 358 64 on unit on unit on line 436 64 on unit clean_up_attach 96 internal procedure is called by several nonquick procedures. set_back_level 68 internal procedure is called by several nonquick procedures. detach_this_ipc internal procedure shares stack frame of external procedure mca_attach_. dev_info internal procedure shares stack frame of external procedure mca_attach_. set_up_ipc internal procedure shares stack frame of external procedure mca_attach_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 mca_data_seg_ptr mca_attach_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mca_attach_ 000100 bc mca_attach_ 000101 channel_number mca_attach_ 000102 code mca_attach_ 000103 dev_name mca_attach_ 000104 dev_type mca_attach_ 000114 ev_chan mca_attach_ 000116 dev_00_sw mca_attach_ 000117 fips_sw mca_attach_ 000120 force_detach_entry mca_attach_ 000121 force_reset_entry mca_attach_ 000122 group_index mca_attach_ 000123 ioi_max_ws mca_attach_ 000124 ipc_id mca_attach_ 000127 ipc_index mca_attach_ 000130 ipc_num mca_attach_ 000131 ipc_operational mca_attach_ 000132 loc_async mca_attach_ 000134 loc_ev_chn mca_attach_ 000136 loc_ioi_idx mca_attach_ 000137 loc_rcp_id mca_attach_ 000140 max_time mca_attach_ 000142 mca_index mca_attach_ 000143 multiple_prph_on_ipc mca_attach_ 000144 name mca_attach_ 000145 need_to_del_evchn mca_attach_ 000146 prph_index mca_attach_ 000147 rcp_msg mca_attach_ 000210 rcp_state mca_attach_ 000211 save_code mca_attach_ 000212 sk_dev_info mca_attach_ 000225 sk_printer_info mca_attach_ 000236 status_from_reset mca_attach_ 000240 user_level mca_attach_ 000250 chnl_cardp mca_attach_ 000252 prph_cardp mca_attach_ 000254 TYPE mca_attach_ 000320 mcad_ptr mca_attach_ 000322 ipcd_ptr mca_attach_ 000324 data_size_1 mca_attach_ 000325 data_size_2 mca_attach_ 000326 mca_work_space_ptr mca_attach_ 000330 device_info_ptr mca_attach_ 000332 printer_info_ptr mca_attach_ 000410 chan_number set_up_ipc THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry ext_entry_desc int_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. admin_gate_$syserr config_$find convert_ipc_code_ cu_$level_get cu_$level_set cv_dec_check_ get_group_id_ get_process_id_ get_ring_ initiate_file_ ioi_$release_devices ioi_$set_channel_required ioi_$set_status ioi_$suspend_devices ioi_$timeout ioi_$workspace ipc_$create_ev_chn ipc_$delete_ev_chn mca_util_$force_mca_ptr mca_util_$force_reset mca_util_$mca_ptr mca_util_$reset rcp_$check_attach rcp_$detach rcp_priv_$attach THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_channel error_table_$io_not_configured error_table_$name_not_found error_table_$not_attached error_table_$resource_not_free error_table_$unimplemented_version sys_info$page_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 3 39 000274 5 17 000436 28 000442 132 000451 160 000500 162 000501 164 000502 171 000525 173 000527 176 000530 177 000543 178 000551 179 000553 180 000562 181 000564 183 000566 184 000602 185 000607 186 000614 188 000615 189 000635 190 000642 192 000700 199 000705 200 000712 201 000714 204 000715 205 000726 206 000730 207 000732 208 000735 211 000736 213 000743 214 000746 216 000753 217 000755 221 000756 222 000760 223 000762 224 000763 225 000765 226 000773 227 000774 228 001005 231 001012 232 001020 235 001021 236 001032 237 001034 238 001043 240 001044 241 001046 243 001047 244 001051 249 001053 250 001054 253 001111 255 001113 256 001116 257 001122 259 001124 261 001170 262 001172 263 001176 268 001177 269 001202 270 001204 271 001207 272 001221 273 001224 274 001225 275 001227 276 001231 278 001233 280 001250 282 001252 283 001256 285 001273 287 001275 289 001300 290 001305 291 001325 293 001327 294 001343 295 001345 296 001347 297 001363 298 001370 300 001371 301 001405 302 001407 305 001412 307 001413 309 001417 313 001420 320 001437 321 001441 322 001442 323 001443 325 001452 326 001466 327 001473 329 001474 330 001514 331 001527 332 001531 333 001534 334 001540 337 001544 338 001550 339 001553 342 001554 343 001610 344 001612 348 001613 355 001641 356 001643 357 001662 358 001672 359 001706 360 001713 361 001714 362 001734 363 001735 364 001737 365 001740 366 001742 367 001762 368 001763 369 001766 370 001770 371 002003 372 002011 373 002015 374 002017 375 002021 376 002022 381 002024 382 002027 383 002030 385 002031 387 002032 389 002073 390 002075 391 002102 393 002146 394 002150 395 002154 397 002155 399 002203 401 002205 402 002214 403 002230 405 002232 407 002234 408 002235 409 002237 411 002240 412 002245 417 002325 420 002333 421 002335 422 002337 423 002342 424 002345 428 002346 432 002374 433 002375 434 002377 435 002416 436 002426 437 002442 438 002447 439 002450 440 002470 441 002471 442 002473 443 002501 444 002502 450 002503 455 002505 456 002514 458 002515 464 002534 465 002536 466 002544 467 002546 468 002561 469 002565 470 002567 475 002570 477 002575 478 002601 481 002605 482 002606 484 002612 485 002614 488 002631 489 002633 490 002634 491 002641 492 002642 493 002645 494 002646 496 002647 498 002655 499 002660 500 002664 501 002670 502 002702 503 002705 504 002710 507 002744 508 002747 510 002750 512 002756 513 002765 515 002766 520 002767 521 002775 522 003002 523 003005 524 003010 525 003021 530 003106 531 003113 535 003173 536 003174 540 003253 541 003312 542 003317 544 003320 545 003323 546 003325 547 003327 549 003330 554 003331 555 003333 557 003344 558 003346 559 003347 561 003353 563 003355 564 003360 565 003371 566 003376 567 003403 568 003406 569 003411 570 003416 573 003417 574 003430 575 003431 576 003442 577 003446 579 003461 580 003464 581 003470 582 003473 583 003500 584 003501 587 003502 588 003504 589 003515 590 003516 591 003520 592 003523 593 003524 595 003527 596 003532 597 003534 598 003536 599 003537 600 003541 601 003547 602 003550 603 003552 604 003553 605 003554 606 003556 608 003557 609 003560 610 003562 611 003564 612 003565 613 003567 614 003570 615 003601 616 003604 617 003607 618 003615 619 003617 620 003620 621 003622 622 003625 623 003633 624 003635 625 003636 626 003640 627 003643 628 003651 630 003652 631 003655 633 003666 635 003674 637 003675 641 003676 642 003677 643 003712 644 003714 645 003720 646 003723 649 003724 650 003730 651 003763 652 003766 653 003771 655 003772 656 003776 657 004001 659 004002 660 004006 663 004007 664 004013 665 004016 667 004017 668 004045 669 004047 670 004052 672 004053 673 004057 674 004063 675 004066 677 004101 678 004103 681 004104 682 004106 683 004111 685 004112 ----------------------------------------------------------- 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