COMPILATION LISTING OF SEGMENT mca_util_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Multics Op. - System M Compiled on: 10/30/86 1143.3 mst Thu 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* 2) change(86-09-23,Fawcett), approve(86-09-23,PBF7374), 13* audit(86-10-23,Farley), install(86-10-30,MR12.0-1203): 14* Changed to check the mcad_ptr for null after a call to idx_to_ptr 15* instead of the code being non-zero. 16* END HISTORY COMMENTS */ 17 18 /* format: style4 */ 19 /* Created Nov 1984 by R. A. Fawcett */ 20 mca_util_: 21 proc; 22 return; 23 24 dcl a_code fixed bin (35); 25 dcl a_dsk_num fixed bin; 26 dcl a_ev_info_ptr ptr; 27 dcl a_ioi_idx fixed bin; 28 dcl a_ipc_num fixed bin; 29 dcl a_mca_area_ptr ptr; 30 dcl a_mca_status bit (72); 31 dcl a_mcad_ptr ptr; 32 dcl a_on bit (1); 33 dcl a_options bit (3); 34 dcl a_ret_len fixed bin (21); 35 dcl a_ret_size fixed bin (21); 36 dcl a_trace_state char (40); 37 dcl a_read_type char (*); 38 dcl a_user_ptr ptr; 39 dcl bc fixed bin (24); 40 dcl code fixed bin (35); 41 dcl dsk_num fixed bin; 42 dcl 1 event_info based (ev_info_ptr), /* Structure returned by ipc */ 43 2 channel_id fixed bin (71), 44 2 message fixed bin (71), 45 2 sender bit (36), 46 2 origin, 47 3 dev_signal bit (18) unaligned, 48 3 ring bit (18) unaligned, 49 2 channel_index fixed bin; 50 51 dcl ev_info_ptr ptr; 52 dcl 1 event_info_area like event_info; 53 54 dcl 1 event_list, /* A list of ipc events */ 55 2 ev_count fixed bin, 56 2 ev_chan fixed bin (71); 57 58 59 dcl 1 pcw_auto aligned, 60 2 pcwa bit (36), 61 2 pcwb bit (36); 62 63 dcl expected_chars fixed bin (21); 64 dcl file_ptr ptr; 65 dcl force_entry bit (1); 66 dcl foo_len fixed bin (21); 67 dcl index_of_chan fixed bin; 68 dcl ioi_ws_size fixed bin (18); 69 dcl io_event_entry bit (1); 70 dcl ipc_num fixed bin; 71 dcl ipc_pic pic "99"; 72 dcl loc_ioi_idx fixed bin; 73 dcl mca_command char (80); 74 dcl mca_index fixed bin; 75 dcl read_type char (80); 76 dcl ret_len_bits bit (16); 77 dcl ret_data char (ret_data_len) based; 78 dcl ret_data_len fixed bin (21); 79 dcl 1 sk_mca_area like mca_area; 80 dcl tally_num fixed bin; 81 dcl trace_on bit (1); 82 dcl trace_types bit (3); 83 dcl trace_what char (20); 84 dcl user_level fixed bin; 85 86 /* Entries */ 87 dcl cu_$level_get entry (fixed bin); 88 dcl cu_$level_set entry (fixed bin); 89 dcl convert_ipc_code_ entry options (variable); 90 dcl get_process_id_ entry () returns (bit (36)); 91 dcl get_ring_ entry () returns (fixed bin (3)); 92 dcl initiate_file_ entry (char (*), char (*), bit (*), ptr, fixed bin (24), fixed bin (35)); 93 dcl ioa_$rsnnl entry () options (variable); 94 dcl ioi_$connect entry (fixed bin, fixed bin (18), fixed bin (35)); 95 dcl ioi_$connect_pcw entry (fixed bin, fixed bin, bit (36) aligned, fixed bin (35)); 96 dcl ioi_$timeout entry (fixed bin, fixed bin (71), fixed bin (35)); 97 dcl ioi_$workspace entry (fixed bin, ptr, fixed bin (18), fixed bin (35)); 98 dcl rcp_$detach entry (bit (36) aligned, bit (*), fixed bin, char (*), fixed bin (35)); 99 dcl ipc_$block entry (ptr, ptr, fixed bin (35)); 100 101 102 /* Builtin */ 103 104 dcl (addr, addrel, bin, divide, fixed, hbound, lbound, length, min, mod, 105 null, rel, rtrim, search, size, substr, unspec) builtin; 106 107 dcl cleanup condition; 108 109 110 /* ERROR TABLE */ 111 112 dcl error_table_$action_not_performed fixed bin (35) ext static; 113 dcl error_table_$area_too_small fixed bin (35) ext static; 114 dcl error_table_$bad_arg fixed bin (35) ext static; 115 dcl error_table_$not_attached fixed bin (35) ext static; 116 dcl error_table_$timeout fixed bin (35) ext static; 117 118 /* Constants */ 119 120 dcl CHARS_PER_WORD fixed bin (17) init (4) static options (constant); 121 dcl COMPLETE bit (6) unal init ("02"b3) static options (constant); 122 dcl CONT_MARKER bit (2) init ("11"b) static options (constant); 123 dcl CONT_NO_MARKER bit (2) init ("10"b) static options (constant); 124 dcl IDCW_ID bit (3) init ("7"b3) static options (constant); 125 dcl IOTD bit (2) init ("00"b) static options (constant); 126 dcl MAX_TALLY fixed bin (17) init (4096) static options (constant); 127 dcl NOT_COMPLETE bit (6) unal init ("40"b3) static options (constant); 128 dcl ONE_K fixed bin (17) init (1024) static options (constant); 129 dcl READ_TYPE bit (6) init ("03"b3) static options (constant); 130 dcl READY bit (4) unal init ("0"b) static options (constant); 131 dcl RESET_STATUS bit (6) init ("40"b3) static options (constant); 132 dcl STATUS_MASK bit (72) init ("370000770000000000000000"b3) static options (constant); 133 dcl TEXT_TYPE bit (6) init ("13"b3) static options (constant); 134 dcl TRACE_FAULT bit (3) init ("4"b3) static options (constant); 135 dcl TRACE_BOOT bit (3) init ("2"b3) static options (constant); 136 dcl TRACE_DEBUG bit (3) init ("1"b3) static options (constant); 137 138 mca_util_$display: 139 entry (a_user_ptr, a_ret_size, a_ret_len, a_code); 140 141 /* This entry returns the contents of the mca_data_seg, and is called via 142* the mca_$display gate. */ 143 144 code = 0; 145 file_ptr = a_user_ptr; 146 mcad_ptr = null (); 147 call cu_$level_get (user_level); 148 on cleanup begin; 149 call cu_$level_set (user_level); 150 end; 151 call cu_$level_set (get_ring_ ()); 152 if mca_data_seg_ptr = null () then do; 153 call initiate_file_ (SYSTEM_DIR, DATA_SEG, "0"b, 154 mca_data_seg_ptr, bc, code); 155 if mca_data_seg_ptr = null () then do; 156 a_ret_len = 0; 157 goto NORMAL_EXIT; 158 end; 159 end; 160 ret_data_len = a_ret_size; 161 if ret_data_len > size (mca_data_seg) * CHARS_PER_WORD then ret_data_len = size (mca_data_seg) * CHARS_PER_WORD; 162 file_ptr -> ret_data = mca_data_seg_ptr -> ret_data; 163 a_ret_len = ret_data_len; 164 goto NORMAL_EXIT; 165 166 167 mca_util_$io_event: 168 entry (a_ioi_idx, a_ev_info_ptr, a_mca_area_ptr, a_code); 169 170 /* This entry is called via the mca_$process_io_event gate when the 171* user has attached the MCA indicating the async_io mode */ 172 173 loc_ioi_idx = a_ioi_idx; 174 ev_info_ptr = a_ev_info_ptr; 175 mca_area_ptr = a_mca_area_ptr; 176 io_event_entry = "1"b; 177 force_entry = "0"b; 178 code = 0; 179 call cu_$level_get (user_level); 180 on cleanup begin; 181 call cu_$level_set (user_level); 182 end; 183 call cu_$level_set (get_ring_ ()); 184 185 call idx_to_ptr; 186 if (mcad_ptr = null ()) then do; 187 unspec (a_mca_area_ptr -> mca_area) = ""b; 188 goto ERROR_EXIT; 189 end; 190 code = 0; 191 call common_io_event; 192 if code ^= 0 then goto ERROR_EXIT; 193 goto NORMAL_EXIT; 194 195 196 mca_util_$load_ipc: 197 entry (a_ioi_idx, a_ipc_num, a_mca_status, a_code); 198 199 /* Request the MCA to load the FW of the selected ipc */ 200 201 code = 0; 202 loc_ioi_idx = a_ioi_idx; 203 ipc_num = a_ipc_num; 204 call cu_$level_get (user_level); 205 on cleanup begin; 206 call cu_$level_set (user_level); 207 end; 208 call cu_$level_set (get_ring_ ()); 209 if ipc_num < lbound (mcad.ipcd_array, 1) | ipc_num > hbound (mcad.ipcd_array, 1) then do; 210 code = error_table_$bad_arg; 211 a_mca_status = ""b; 212 goto ERROR_EXIT; 213 end; 214 ipc_pic = ipc_num; 215 mca_command = "LOAD IPC " || ipc_pic; 216 goto load_reset_common; 217 218 mca_util_$reset_ipc: 219 entry (a_ioi_idx, a_ipc_num, a_mca_status, a_code); 220 221 /* This entry will reset the selected ipc (a_ipc_num) it is called via the 222* mca_ gate */ 223 224 code = 0; 225 loc_ioi_idx = a_ioi_idx; 226 ipc_num = a_ipc_num; 227 call cu_$level_get (user_level); 228 on cleanup begin; 229 call cu_$level_set (user_level); 230 end; 231 call cu_$level_set (get_ring_ ()); 232 if ipc_num < lbound (mcad.ipcd_array, 1) | ipc_num > hbound (mcad.ipcd_array, 1) then do; 233 code = error_table_$bad_arg; 234 a_mca_status = "0"b; 235 goto ERROR_EXIT; 236 end; 237 ipc_pic = ipc_num; 238 mca_command = "RESET IPC " || ipc_pic; 239 goto load_reset_common; 240 241 load_reset_common: 242 243 /* The load and reset a requested IPC entries come here after setting 244* the acsii MCA command in mca_command */ 245 246 io_event_entry = "0"b; 247 force_entry = "0"b; 248 call idx_to_ptr; 249 if mcad_ptr = null () then goto ERROR_EXIT; 250 ipcd_ptr = addr (mcad.ipcd_array (ipc_num)); 251 if ipcd.state < IPC_ATTACHED then do; 252 code = error_table_$not_attached; 253 goto ERROR_EXIT; 254 end; 255 expected_chars = CHARS_PER_WORD; 256 call set_ws_connect; 257 if code ^= 0 then goto ERROR_EXIT; 258 mcad.entry_to_return_data = mca_util_$ret_load_reset_ipc; 259 if ^mcad.async_io then do; 260 call wait; 261 a_mca_status = mca_area.mca_status; 262 if code ^= 0 then goto ERROR_EXIT; 263 end; 264 else a_mca_status = "0"b; 265 goto NORMAL_EXIT; 266 267 /* end load_ipc reset_ipc */ 268 269 mca_util_$load_all_ipcs: 270 entry (a_ioi_idx, a_mca_status, a_code); 271 272 /* Entry called via mca_priv_ gate to request the MCA to load FW 273* in all the IPCs */ 274 275 mca_command = "LOAD IPCS"; 276 goto common_all_ipcs; 277 278 mca_util_$reset_all_ipcs: 279 entry (a_ioi_idx, a_mca_status, a_code); 280 281 /* Entry called via mca_priv_ gate to request the MCA to reset all the IPCs */ 282 283 mca_command = "RESET IPCS"; 284 goto common_all_ipcs; 285 286 common_all_ipcs: 287 288 /* load and reset "all ipcs" entries come here after setting the 289* ascii MCA command in mca_command */ 290 291 loc_ioi_idx = a_ioi_idx; 292 code = 0; 293 io_event_entry = "0"b; 294 force_entry = "0"b; 295 call cu_$level_get (user_level); 296 on cleanup begin; 297 call cu_$level_set (user_level); 298 end; 299 call cu_$level_set (get_ring_ ()); 300 call idx_to_ptr; 301 if mcad_ptr = null () then goto ERROR_EXIT; 302 303 /* Make sure the user has requested and mca_attach_ has granted the attach 304* of all the IPCs */ 305 306 do ipc_num = lbound (mcad.ipcd_array, 1) to hbound (mcad.ipcd_array, 1); 307 if mcad.ipcd_array (ipc_num).state < IPC_ATTACHED then do; 308 /* NO CAN DO */ 309 code = error_table_$not_attached; 310 goto ERROR_EXIT; 311 end; 312 end; 313 call set_ws_connect; 314 if code ^= 0 then goto ERROR_EXIT; 315 mcad.entry_to_return_data = mca_util_$ret_load_reset_ipc; 316 if ^mcad.async_io then do; 317 call wait; 318 a_mca_status = mca_area.mca_status; 319 if code ^= 0 then goto ERROR_EXIT; 320 end; 321 goto NORMAL_EXIT; 322 323 mca_util_$diskette_read: 324 entry (a_ioi_idx, a_read_type, a_dsk_num, a_user_ptr, a_ret_size, 325 a_ret_len, a_mca_status, a_code); 326 327 /* This entry is to read one of the MCA diskettes it is called via the 328* mca_$diskette_read gate */ 329 330 loc_ioi_idx = a_ioi_idx; 331 io_event_entry = "0"b; 332 force_entry = "0"b; 333 call cu_$level_get (user_level); 334 on cleanup begin; 335 call cu_$level_set (user_level); 336 end; 337 call cu_$level_set (get_ring_ ()); 338 call idx_to_ptr; 339 if mcad_ptr = null () then goto ERROR_EXIT; 340 dsk_num = a_dsk_num; 341 read_type = a_read_type; 342 343 if read_type = "DIRECTORY" then goto format_with_num; 344 else if read_type = "HDR" then goto format_with_num; 345 else if substr (read_type, 1, 2) = "P=" then goto format_with_num; 346 else if search (read_type, "/") ^= 0 then do; 347 call ioa_$rsnnl ("READ^x^a", mca_command, foo_len, 348 rtrim (read_type)); 349 goto have_format; 350 end; 351 else do; 352 code = error_table_$bad_arg; 353 goto ERROR_EXIT; 354 end; 355 format_with_num: 356 if dsk_num < 0 | dsk_num > 1 then do; 357 code = error_table_$bad_arg; 358 goto ERROR_EXIT; 359 end; 360 call ioa_$rsnnl ("READ^x^a,^d", mca_command, 361 foo_len, rtrim (read_type), dsk_num); 362 have_format: 363 expected_chars = min (16128, a_ret_size); 364 goto common_read; 365 366 mca_util_$read_config: 367 entry (a_ioi_idx, a_user_ptr, a_ret_size, 368 a_ret_len, a_mca_status, a_code); 369 370 /* This entry is called via the mca_$config gate to read the MCA configuration file */ 371 loc_ioi_idx = a_ioi_idx; 372 a_mca_status = "0"b; 373 io_event_entry = "0"b; 374 force_entry = "0"b; 375 call cu_$level_get (user_level); 376 on cleanup begin; 377 call cu_$level_set (user_level); 378 end; 379 call cu_$level_set (get_ring_ ()); 380 call idx_to_ptr; 381 if mcad_ptr = null () then goto ERROR_EXIT; 382 expected_chars = (size (mca_config_file) * CHARS_PER_WORD); 383 if a_ret_size < expected_chars then do; 384 code = error_table_$area_too_small; 385 goto ERROR_EXIT; 386 end; 387 mca_command = "READ CONFIG"; 388 goto common_read; 389 390 391 mca_util_$read_data: 392 entry (a_ioi_idx, a_user_ptr, a_ret_size, 393 a_ret_len, a_mca_status, a_code); 394 395 /* This entry is to read data from the MCA called via mca_$read_data gate */ 396 397 loc_ioi_idx = a_ioi_idx; 398 io_event_entry = "0"b; 399 force_entry = "0"b; 400 call cu_$level_get (user_level); 401 on cleanup begin; 402 call cu_$level_set (user_level); 403 end; 404 call cu_$level_set (get_ring_ ()); 405 call idx_to_ptr; 406 if mcad_ptr = null () then goto ERROR_EXIT; 407 408 expected_chars = min (16128, a_ret_size); 409 mca_command = ""; /* This will indicate that there is no ascii */ 410 /* command to the MCA */ 411 common_read: 412 413 /* diskette_read, read_config and read_data come here after setting the ascii 414* MCA command in mca_command */ 415 416 call set_ws_connect; 417 if code ^= 0 then do; 418 a_mca_status = ""b; 419 a_ret_len = 0; 420 goto ERROR_EXIT; 421 end; 422 mcad.user_ptr = a_user_ptr; 423 mcad.return_data_ptr = file_ptr; 424 mcad.entry_to_return_data = mca_util_$return_data; 425 if ^mcad.async_io then do; 426 call wait; 427 a_mca_status = mca_area.mca_status; 428 a_ret_len = mca_area.ret_len; 429 if code ^= 0 then goto ERROR_EXIT; 430 end; 431 else do; 432 a_mca_status = "0"b; 433 a_ret_len = 0; 434 end; 435 goto NORMAL_EXIT; 436 437 438 /* end read_config, read_data, and diskette_read */ 439 440 mca_util_$trace_sw: 441 entry (a_ioi_idx, a_options, a_on, a_trace_state, a_mca_status, a_code); 442 443 /* Entry called via mca_priv_ gate to change the tracing */ 444 445 loc_ioi_idx = a_ioi_idx; 446 trace_types = a_options; 447 io_event_entry = "0"b; 448 call cu_$level_get (user_level); 449 on cleanup begin; 450 call cu_$level_set (user_level); 451 end; 452 call cu_$level_set (get_ring_ ()); 453 code = 0; 454 trace_what = " "; 455 trace_on = a_on; 456 if trace_types = "0"b then do; 457 a_mca_status = "0"b; 458 code = error_table_$bad_arg; 459 goto ERROR_EXIT; 460 end; 461 force_entry = "0"b; 462 call idx_to_ptr; 463 if mcad_ptr = null () then do; 464 a_mca_status = "0"b; 465 goto ERROR_EXIT; 466 end; 467 call ioa_$rsnnl 468 ("TRACE^x^[ON^;OFF^]^[^xFAULT^]^[^xBOOT^]^[^xDEBUG^]", 469 mca_command, foo_len, trace_on, 470 (trace_types & TRACE_FAULT), 471 (trace_types & TRACE_BOOT), 472 (trace_types & TRACE_DEBUG)); 473 expected_chars = 32; 474 call set_ws_connect; 475 if code ^= 0 then do; 476 a_mca_status = "0"b; 477 goto ERROR_EXIT; 478 end; 479 mcad.user_ptr = addr (a_trace_state); 480 mcad.return_data_ptr = addr (mca_work_space.data_2); 481 mcad.entry_to_return_data = mca_util_$ret_trace_state; 482 if ^mcad.async_io then do; 483 call wait; 484 a_mca_status = mca_area.mca_status; 485 if code ^= 0 then goto ERROR_EXIT; 486 end; 487 goto NORMAL_EXIT; 488 489 mca_util_$reset: 490 entry (a_ioi_idx, a_mca_status, a_code); 491 492 /* This entry is called via mca_$reset gate, and in ring_1 by mca_attach_ 493* to reset the mca and read the config data from the MCA. */ 494 495 loc_ioi_idx = a_ioi_idx; 496 code = 0; 497 io_event_entry = "1"b; 498 force_entry = "0"b; 499 call cu_$level_get (user_level); 500 501 on cleanup begin; 502 call cu_$level_set (user_level); 503 end; 504 505 call cu_$level_set (get_ring_ ()); 506 507 call idx_to_ptr; 508 509 if mcad_ptr = null () then do; 510 a_mca_status = "0"b; 511 goto ERROR_EXIT; 512 end; 513 call reset_status; 514 mcad.entry_to_return_data = mca_util_$no_data; 515 if mcad.async_io then do; 516 a_mca_status = "0"b; 517 goto NORMAL_EXIT; 518 end; 519 520 call wait; 521 a_mca_status = mca_area.mca_status; 522 if code ^= 0 & mcad.state ^= MCA_ATTACHING then goto ERROR_EXIT; 523 if mcad.state = MCA_ATTACHING & ^mcad.config_data_requested then do; 524 call mca_util_$attach_config (mcad_ptr, code); 525 if code ^= 0 then do; 526 goto ERROR_EXIT; 527 end; 528 mcad.config_data_requested = "1"b; 529 end; 530 goto NORMAL_EXIT; 531 532 533 534 NORMAL_EXIT: 535 536 /* All seems to be well */ 537 538 a_code = code; 539 call cu_$level_set (user_level); 540 return; 541 542 ERROR_EXIT: 543 544 /* Something is wrong */ 545 546 a_code = code; 547 if mcad_ptr ^= null () then 548 if mcad.state = MCA_ATTACHING then do; 549 if mcad.rcp_id ^= "0"b then do; 550 call rcp_$detach (mcad.rcp_id, "0"b, 0, "", code); 551 end; 552 end; 553 else ; 554 call cu_$level_set (user_level); 555 return; 556 557 558 /* Start non-gate entries */ 559 560 mca_util_$force_mca_ptr: 561 entry (a_ioi_idx, a_code) returns (ptr); 562 force_entry = "1"b; 563 goto mca_ptr_common; 564 565 mca_util_$mca_ptr: 566 entry (a_ioi_idx, a_code) returns (ptr); 567 568 /* This entry will return a pointer to the mca_data for the MCA 569* indicated by a_ioi_idx. If the ioi_idx is not found or the MCA is not 570* attached to this process, the pointer will be null and an error code 571* of error_table_$not_attached will be returned. */ 572 573 force_entry = "0"b; 574 mca_ptr_common: 575 576 loc_ioi_idx = a_ioi_idx; 577 mcad_ptr = null (); 578 code = 0; 579 io_event_entry = "0"b; 580 call idx_to_ptr; 581 a_code = code; 582 return (mcad_ptr); 583 584 /* end mca_ptr entry */ 585 586 mca_util_$attach_config: 587 entry (a_mcad_ptr, a_code); 588 589 /* called by ring1 mca_attach after the rcp attachment to issue the connect to 590* read in the config data from the MCA. Some parts of the config data are 591* placed into the mca_data_seg for this MCA entry on completion of the IO. 592* This is done by mca_util_$fill_config_data */ 593 594 mca_command = "READ CONFIG"; 595 expected_chars = (size (mca_config_file) * CHARS_PER_WORD); 596 mcad_ptr = a_mcad_ptr; 597 call set_ws_connect; 598 if code ^= 0 then do; 599 a_code = code; 600 return; 601 end; 602 mcad.return_data_ptr = file_ptr; 603 mcad.user_ptr = null (); 604 mcad.entry_to_return_data = mca_util_$fill_config_data; 605 if ^mcad.async_io then do; 606 sync_io_loop: 607 call wait; 608 if code ^= 0 then do; 609 a_code = code; 610 return; 611 end; 612 statp = addr (mca_area.mca_status); 613 if status.sub ^= "02"b3 then do; 614 mca_command = ""; 615 expected_chars = MAX_TALLY; 616 call set_ws_connect; 617 if code ^= 0 then return; 618 mcad.return_data_ptr = file_ptr; 619 mcad.entry_to_return_data = mca_util_$no_data; 620 goto sync_io_loop; 621 end; 622 else do; 623 call ioi_$timeout (mcad.ioi_idx, mcad.max_time_out, code); 624 if code ^= 0 then do; 625 a_code = code; 626 return; 627 end; 628 mcad.state = MCA_ATTACHED; 629 end; 630 end; 631 a_code = code; 632 return; 633 634 mca_util_$connect: entry (a_mcad_ptr, a_code); 635 636 /* This entry will always assume that the dcw_list starts at the base 637* of the work space. It can only be called by ring1_ procs */ 638 639 mcad_ptr = a_mcad_ptr; 640 code = 0; 641 call do_connect; 642 a_code = code; 643 return; 644 645 /* end connect entry */ 646 647 mca_util_$force_reset: 648 entry (a_ioi_idx, a_mca_status, a_code); 649 650 /* This is only called in ring_1 */ 651 652 loc_ioi_idx = a_ioi_idx; 653 force_entry = "1"b; 654 code = 0; 655 call idx_to_ptr; 656 if mcad_ptr = null () then do; 657 a_code = code; 658 a_mca_status = "0"b; 659 return; 660 end; 661 pcw_auto = "0"b; 662 pcwp = addr (pcw_auto); 663 pcw.code = IDCW_ID; 664 pcw.mask = "1"b; 665 pcw.control = CONT_MARKER; 666 mca_work_space_ptr = mcad.ioi_wks_ptr; 667 idcwp = addr (mca_work_space.list_of_dcw); 668 unspec (idcw) = "0"b; 669 idcw.code = IDCW_ID; 670 call ioi_$connect_pcw (mcad.ioi_idx, 0, pcw_auto.pcwa, code); 671 if code ^= 0 then do; 672 a_code = code; 673 return; 674 end; 675 mcad.entry_to_return_data = mca_util_$no_data; 676 if mcad.async_io then do; 677 a_mca_status = "0"b; 678 a_code = code; 679 return; 680 end; 681 call wait; 682 a_mca_status = mca_area.mca_status; 683 if imess.time_out then code = 0; /* This is what is expected */ 684 a_code = code; 685 return; 686 687 mca_util_$io_event_mca: 688 entry (a_mcad_ptr, a_ev_info_ptr, a_mca_area_ptr, a_code); 689 690 /* This entry is called by ring1 mca_ modules when in sync_io mode after the 691* IO event has happened */ 692 693 mcad_ptr = a_mcad_ptr; 694 ev_info_ptr = a_ev_info_ptr; 695 mca_area_ptr = a_mca_area_ptr; 696 code = 0; 697 call common_io_event; 698 a_code = code; 699 return; 700 701 702 /* The next entries are used to return the data back to the user at the 703* completion of the IO. These are called by the io_event entries. 704* 705* The call is: 706* call mcad.entry_to_return_data (mcad_ptr,ret_len,code); 707* 708* the entry var, mcad.entry_to_return_data is set by the code that requests 709* the IO be started. The same code will set the mcad.user_ptr, if the 710* user changes his mind it is too bad for him. The mcad.io_param_blk_ptr 711* is set before the connect is requested. This is a pointer to the io_param 712* filled in by the MCA for the data it returns. 713* 714* It is done this way for ASYNC_IO and SYNC_IO to keep 715* the code simple (???). The load and reset commands do not return data, 716* however due to the constant way the MCA manager should work an entry is 717* here. */ 718 719 mca_util_$ret_load_reset_ipc: 720 mca_util_$no_data: 721 722 entry (a_mcad_ptr, a_ret_len, a_code); 723 724 /* There is no data returned so don't return any but say so */ 725 726 a_code = 0; 727 a_ret_len = 0; 728 return; 729 730 /* end ret_load_ipc */ 731 732 mca_util_$ret_trace_state: 733 entry (a_mcad_ptr, a_ret_len, a_code); 734 735 /* This entry returns the ascii data from the MCA data called form ring_1 */ 736 737 mcad_ptr = a_mcad_ptr; 738 io_param_blk_ptr = mcad.io_param_ptr; 739 ret_len_bits = (io_parameter_block.source_len_msb || io_parameter_block.source_len_lsb); 740 741 /* if the data returned by MCA is greater that the area for the user (40) 742* then only return the first 40 chars (the length of a_trace_state) */ 743 744 ret_data_len = min (fixed (ret_len_bits, 21), length (a_trace_state)); 745 mcad.user_ptr -> ret_data = mcad.return_data_ptr -> ret_data; 746 a_ret_len = ret_data_len; 747 a_code = 0; 748 return; 749 750 mca_util_$return_data: 751 entry (a_mcad_ptr, a_ret_len, a_code); 752 753 /* this is called by io_events to return data from read configuration and 754* read diskette entries. This is called only from ring_1 */ 755 code = 0; 756 mcad_ptr = a_mcad_ptr; 757 mca_work_space_ptr = mcad.ioi_wks_ptr; 758 mca_dcw_list_ptr = addr (mca_work_space.list_of_dcw); 759 idcwp = addr (mca_dcw_list.idcw1); 760 if idcw.control = READ_TYPE /* read data */ 761 then dcwp = addr (mca_dcw_list.dcw1); /* use first dcw */ 762 else dcwp = addr (mca_dcw_list.dcw2); /* read conf/diskette, use second */ 763 io_param_blk_ptr = mcad.io_param_ptr; 764 765 /* calculate the data size returned by the MCA */ 766 767 ret_len_bits = (io_parameter_block.source_len_msb || io_parameter_block.source_len_lsb); 768 ret_data_len = fixed (ret_len_bits, 21); 769 770 /* calculate the amount of data requested from the MCA */ 771 772 tally_num = bin (dcw.tally, 17); 773 if tally_num = 0 then tally_num = MAX_TALLY; 774 tally_num = (tally_num - size (data_header)) * CHARS_PER_WORD; 775 ret_data_len = min (ret_data_len, tally_num); /* use smallest value */ 776 777 mcad.user_ptr -> ret_data = mcad.return_data_ptr -> ret_data; 778 a_ret_len = ret_data_len; 779 a_code = code; 780 return; 781 782 mca_util_$fill_config_data: 783 entry (a_mcad_ptr, a_ret_len, a_code); 784 785 /* this will fill in the config data of the mcad from the mca config file . 786* It will change the state for this MCA from ATTACHING to ATTACHED. It is only callable in ring_1 */ 787 788 mcad_ptr = a_mcad_ptr; 789 mca_config_file_ptr = mcad.return_data_ptr; 790 do index_of_chan = lbound (mca_config_file.channel_data, 1) to hbound (mca_config_file.channel_data, 1); 791 ipcd_ptr = addr (mcad.ipcd_array (index_of_chan)); 792 unspec (ipcd) = "0"b; 793 ipcd.channel = 794 mca_config_file.channel_data (index_of_chan).prim_ch_num; 795 ipcd.nchan = 796 mca_config_file.channel_data (index_of_chan).num_of_log_ch; 797 ipcd.no_level_2_info = 798 mca_config_file.channel_data (index_of_chan).no_lev_2; 799 ipcd.is_micro_cont = 800 mca_config_file.channel_data (index_of_chan).micro_ctl; 801 ipcd.fbus_disable_latch = 802 mca_config_file.channel_data (index_of_chan).fbus_latch; 803 ipcd.type_index = 804 mca_config_file.channel_data (index_of_chan).lvl_1_id_type; 805 ipcd.level_1_state = 806 mca_config_file.channel_data (index_of_chan).lvl_1_state; 807 if ipcd.level_1_state <= 808 PH_NOT_PRESENT then ipcd.state = IPC_NOT_CONFIGURED; 809 else ipcd.state = IPC_FREE; 810 end; 811 a_code = 0; 812 return; 813 814 815 /* Start of internal procedures */ 816 common_io_event: proc; 817 818 /* Only one version now. In future we may want to check this to see 819* if it is correct */ 820 821 call process_io_event; 822 if code ^= 0 then return; 823 if mcad.state = MCA_ATTACHING & ^mcad.config_data_requested then do; 824 call mca_util_$attach_config (mcad_ptr, code); 825 if code ^= 0 then return; 826 mcad.config_data_requested = "1"b; 827 if mcad.async_io then goto NORMAL_EXIT; /* wait for IO to finish */ 828 end; 829 if mcad.state = MCA_ATTACHING & mcad.async_io then do; 830 statp = addr (mca_area.mca_status); 831 if status.major = READY then do; 832 if status.sub = COMPLETE then do; 833 call ioi_$timeout (mcad.ioi_idx, mcad.max_time_out, code); 834 if code ^= 0 then return; 835 mcad.state = MCA_ATTACHED; 836 end; 837 else if status.sub = NOT_COMPLETE then do; 838 mca_command = ""; 839 expected_chars = ONE_K; 840 call set_ws_connect; 841 if code ^= 0 then return; 842 end; 843 end; 844 end; 845 mca_area.mca_attach_state = mcad.state; 846 847 end common_io_event; 848 849 do_connect: 850 proc; 851 code = 0; 852 call ioi_$connect (mcad.ioi_idx, 0, code); 853 854 end do_connect; 855 856 idx_to_ptr: 857 proc; 858 859 /* this proc sets the mcad_ptr to the mca_data_seg array that contains the 860* requested ioi_idx (loc_ioi_idx) */ 861 862 mcad_ptr = null (); 863 code = 0; 864 865 if mca_data_seg_ptr = null () then do; 866 call initiate_file_ (SYSTEM_DIR, DATA_SEG, "0"b, 867 mca_data_seg_ptr, bc, code); 868 if mca_data_seg_ptr = null () then 869 /* Trouble in River City */ 870 return; 871 end; 872 873 do mca_index = lbound (mca_data_seg.array, 1) to hbound (mca_data_seg.array, 1) 874 while (mca_data_seg.array (mca_index).ioi_idx ^= loc_ioi_idx); 875 end; 876 877 if mca_index > hbound (mca_data_seg.array, 1) then do; 878 879 /* none of the array entries has the ioi_idx */ 880 881 code = error_table_$not_attached; 882 return; 883 end; 884 885 /* This array entry is the one we want */ 886 887 mcad_ptr = addr (mca_data_seg.array (mca_index)); 888 889 if force_entry then return; /* no need to check attachments */ 890 891 /* Now see if the process we are running in has it attached */ 892 893 if mcad.attach_pid ^= get_process_id_ () then do; 894 895 /* user must have made lucky gess */ 896 897 mcad_ptr = null (); 898 code = error_table_$not_attached; 899 return; 900 end; 901 902 if mcad.state <= MCA_ATTACHING then do; 903 code = error_table_$not_attached; 904 905 /* could be that we where called after the completion of the IO to read 906* the config at attach time and mca_util_$fill_config_data hasn't set the 907* state to ATTACHED yet */ 908 909 if io_event_entry & (mcad.state = MCA_ATTACHING) then return; 910 911 /* OK this is not an IO entry so make it looked non attached */ 912 else mcad_ptr = null (); 913 end; 914 915 end idx_to_ptr; 916 917 process_io_event: 918 proc; 919 920 /* this proc will set up the returned mca_area structure and call the entry in 921* mcad.entry_to_return_data to return the data to the user (clever name) */ 922 923 unspec (mca_area) = ""b; 924 mca_area.version = MCA_area_version_1; 925 mca_area.mca_attach_state = mcad.state; 926 imp = addr (event_info.message); 927 if imess.completion.time_out then do; 928 code = error_table_$timeout; 929 return; 930 end; 931 if ^imess.completion.st then do; 932 code = error_table_$action_not_performed; 933 return; 934 end; 935 isp = addrel (mcad.ioi_wks_ptr, mcad.status_offset); 936 statp = addr (istat.iom_stat); 937 mcad.last_status = substr (istat.iom_stat, 1, length (mcad.last_status)); 938 mca_area.mca_status = mcad.last_status; 939 940 if unspec (status) & STATUS_MASK then do; 941 unspec (code) = substr (mcad.last_status, 1, 36); 942 mca_area.io_outstanding = "0"b; 943 if substr (status.sub, 1, 1) = "1"b then 944 call mcad.entry_to_return_data 945 (mcad_ptr, mca_area.ret_len, code); 946 else mca_area.ret_len = 0; 947 return; 948 end; 949 else do; 950 if substr (status.sub, 5, 1) = "1"b then /* The MCA is all done */ 951 mca_area.io_outstanding = "0"b; 952 else mca_area.io_outstanding = "1"b; 953 if substr (status.sub, 1, 1) = "1"b then /* The MCA has sent data */ 954 call mcad.entry_to_return_data 955 (mcad_ptr, mca_area.ret_len, code); 956 else mca_area.ret_len = 0; 957 return; 958 end; 959 end process_io_event; 960 961 reset_status: 962 proc; 963 mca_work_space_ptr = mcad.ioi_wks_ptr; 964 mca_dcw_list_ptr = addr (mca_work_space.list_of_dcw); 965 isp = addr (mca_work_space.status_area); 966 unspec (mca_dcw_list) = ""b; 967 idcwp = addr (mca_dcw_list.idcw1); 968 idcw.command = RESET_STATUS; 969 idcw.code = IDCW_ID; 970 call do_connect; 971 end reset_status; 972 973 set_ws_connect: 974 proc; 975 976 /* this proc sets up the work space for all the mca_util_$ entries that send 977* command to the MCA. It will build the data headers and io_param_blocks 978* based on the mca_command and the expected_chars setup by the caller. The 979* dcw list is set up based on the two data headers */ 980 981 mca_work_space_ptr = mcad.ioi_wks_ptr; 982 data_size_1 = length (rtrim (mca_command)); 983 data_size_2 = expected_chars; 984 ioi_ws_size = size (mca_work_space); 985 if ioi_ws_size > mcad.current_ws_size then do; 986 call ioi_$workspace (mcad.ioi_idx, mcad.ioi_wks_ptr, 987 ioi_ws_size, code); 988 if code ^= 0 then return; 989 mca_work_space_ptr = mcad.ioi_wks_ptr; 990 mcad.current_ws_size = ioi_ws_size; 991 end; 992 mca_dcw_list_ptr = addr (mca_work_space.list_of_dcw); 993 isp = addr (mca_work_space.status_area); 994 data_header_ptr = addr (mca_work_space.data_header_1); 995 unspec (data_header) = ""b; 996 unspec (mca_dcw_list) = ""b; 997 idcwp = addr (mca_dcw_list.idcw1); 998 dcwp = addr (mca_dcw_list.dcw1); 999 if mca_command = "" then ; 1000 else do; 1001 data_header.file_name = ""; 1002 data_header.definer = CON_DATA_FROM_HOST; 1003 data_header.rd_flpy = 1; 1004 data_header.dest_len.dest_len_msb 1005 = substr (unspec (data_size_1), 21, 8); 1006 data_header.dest_len.dest_len_lsb = 1007 substr (unspec (data_size_1), 29, 8); 1008 data_1 = substr (mca_command, 1, data_size_1); 1009 idcw.command = TEXT_TYPE; 1010 idcw.code = IDCW_ID; 1011 idcw.control = CONT_NO_MARKER; 1012 dcw.address = rel (data_header_ptr); 1013 dcw.type = IOTD; 1014 1015 /* Tally in words (next highest) */ 1016 tally_num = size (data_header) + divide (data_size_1, CHARS_PER_WORD, 17); 1017 if mod (data_size_1, CHARS_PER_WORD) ^= 0 then tally_num = tally_num + 1; 1018 dcw.tally = substr (unspec (tally_num), 25, 12); 1019 idcwp = addr (mca_dcw_list.idcw2); 1020 dcwp = addr (mca_dcw_list.dcw2); 1021 end; 1022 1023 /* now set up the second data block for the returned data */ 1024 1025 READ_PART: 1026 1027 data_header_ptr = addr (mca_work_space.data_header_2); 1028 unspec (data_header) = ""b; 1029 1030 mcad.io_param_ptr = addr (data_header_2.io_param_blk); 1031 file_ptr = addr (mca_work_space.data_2); 1032 idcw.command = READ_TYPE; 1033 idcw.code = IDCW_ID; 1034 dcw.address = rel (data_header_ptr); 1035 dcw.type = IOTD; 1036 1037 /* Tally in words (next highest) */ 1038 tally_num = size (data_header) + (divide (data_size_2, CHARS_PER_WORD, 17) + 1); 1039 1040 dcw.tally = substr (unspec (tally_num), 25, 12); 1041 1042 1043 /* Requests the IO */ 1044 1045 call do_connect; 1046 return; 1047 end set_ws_connect; 1048 1049 wait: 1050 proc; 1051 1052 /* At attach time the user indicated that the IO mode would be sync */ 1053 1054 mca_area_ptr = addr (sk_mca_area); 1055 event_list.ev_count = 1; /* only one */ 1056 event_list.ev_chan = mcad.event_chn; /* This is it */ 1057 ev_info_ptr = addr (event_info_area); 1058 call ipc_$block (addr (event_list), ev_info_ptr, code); 1059 if code ^= 0 then do; 1060 call convert_ipc_code_ (code); 1061 return; 1062 end; 1063 call process_io_event; 1064 end wait; 1065 1066 1 1 1 2 /* Begin include file ...... iom_stat.incl.pl1 */ 1 3 /* Last modified on 10/31/74 by Noel I. Morris */ 1 4 1 5 dcl statp ptr; /* pointer to status */ 1 6 1 7 dcl 1 status based (statp) aligned, /* IOM status information */ 1 8 (2 t bit (1), /* set to "1"b by IOM */ 1 9 2 power bit (1), /* non-zero if peripheral absent or power off */ 1 10 2 major bit (4), /* major status */ 1 11 2 sub bit (6), /* substatus */ 1 12 2 eo bit (1), /* even/odd bit */ 1 13 2 marker bit (1), /* non-zero if marker status */ 1 14 2 soft bit (2), /* software status */ 1 15 2 initiate bit (1), /* initiate bit */ 1 16 2 abort bit (1), /* software abort bit */ 1 17 2 channel_stat bit (3), /* IOM channel status */ 1 18 2 central_stat bit (3), /* IOM central status */ 1 19 2 mbz bit (6), 1 20 2 rcount bit (6), /* record count residue */ 1 21 2 address bit (18), /* DCW address residue */ 1 22 2 char_pos bit (3), /* character position residue */ 1 23 2 r bit (1), /* non-zero if reading */ 1 24 2 type bit (2), /* type of last DCW */ 1 25 2 tally bit (12)) unal; /* DCW tally residue */ 1 26 1 27 dcl 1 faultword based (statp) aligned, /* system fault word */ 1 28 (2 mbz1 bit (9), 1 29 2 channel bit (9), /* channel number */ 1 30 2 serv_req bit (5), /* service request */ 1 31 2 mbz2 bit (3), 1 32 2 controller_fault bit (4), /* system controller fault code */ 1 33 2 io_fault bit (6)) unal; /* I/O fault code */ 1 34 1 35 dcl 1 special_status based (statp) aligned, /* special status from PSIA */ 1 36 (2 t bit (1), /* entry present bit */ 1 37 2 channel bit (8), /* channel number */ 1 38 2 pad1 bit (3), 1 39 2 device bit (6), /* device address */ 1 40 2 pad2 bit (1), 1 41 2 byte2 bit (8), /* device dependent information */ 1 42 2 pad3 bit (1), 1 43 2 byte3 bit (8)) unal; /* device dependent information */ 1 44 1 45 /* End of include file iom_stat.incl.pl1 */ 1 46 1067 1068 2 1 /* Begin mca_area.incl.pl1 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-03-19,Fawcett), approve(86-03-19,MCR7374), 2 6* audit(86-04-28,Lippard), install(86-09-16,MR12.0-1159): 2 7* This is the structure returned to the user after IO completion. 2 8* END HISTORY COMMENTS */ 2 9 2 10 dcl 1 mca_area aligned based (mca_area_ptr), 2 11 2 version char (8), /* version of structure */ 2 12 2 io_outstanding bit (1) aligned, /* true if section is not complete */ 2 13 2 mca_attach_state fixed bin (17), /* State of the attachment process, refer to mca_data.incl.pl1 */ 2 14 2 mca_status bit (72), /* status from io */ 2 15 2 ret_len fixed bin (21); /* length in characters of data returned */ 2 16 2 17 dcl mca_area_ptr ptr; 2 18 2 19 dcl MCA_area_version_1 char (8) int static options 2 20 (constant) init ("MCA00001"); /* current version */ 2 21 2 22 2 23 /* End mca_area.incl.pl1 */ 1070 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 */ 1072 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 */ 1073 1074 5 1 /* Begin mca_config_file.incl.pl1 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(86-03-19,Fawcett), approve(86-03-19,MCR7374), 5 6* audit(86-04-28,Lippard), install(86-09-16,MR12.0-1159): 5 7* This is used to view the configuration file obtained from the MCA. 5 8* END HISTORY COMMENTS */ 5 9 5 10 /* Created by R. A. Fawcett Sept 1984 based on data obtained from 5 11* "EPS-1 Dipper Firmware Loading" Rev B (July 05x 1983) 5 12* section 3.5.1 starting on sheet 25 */ 5 13 5 14 dcl mca_config_file_ptr ptr; 5 15 5 16 dcl 1 mca_config_file based (mca_config_file_ptr), 5 17 2 diskette_data, /* total of 20 chars (bytes) */ 5 18 3 unique_id char (8), /* User ID assiged to diskette from which FW was loaded */ 5 19 3 date_created char (6), /* MMDDYY */ 5 20 3 date_late_changed char (6), /* MMDDYY */ 5 21 2 iioc_data, /* total of 31 chars (bytes) */ 5 22 3 iioc_config char (8), /* mca path_name of file used to load from */ 5 23 3 iioc_state_control, 5 24 4 will_be_zero_1 bit (1), /* zero because of 8 bit-byte to 9 bit-byte */ 5 25 4 state_counter fixed bin (5) unsigned unal, /* values are not defined */ 5 26 /* control bits ??? */ 5 27 4 RFU_1 bit (1), 5 28 4 RFU_2 bit (1), 5 29 4 write_protect_ptw_sw bit (1), 5 30 3 operating_system fixed bin (9) unal unsigned, /* better be a value equal to Multics */ 5 31 3 iioc_num fixed bin (9) unal unsigned, /* the number of the imu */ 5 32 3 iioc_disk_tab fixed bin (9) unal unsigned, 5 33 /* The value of the TAB number of the Diskette_Product_Set 5 34* containing the proper revision of diagnostics for IIOC */ 5 35 3 p_s_disk_tab fixed bin (9) unal unsigned, 5 36 /* same as iioc_disk_tab only for the Port Select */ 5 37 3 port_select_state fixed bin (9) unal unsigned, 5 38 /* State counter values will exists which uniquely define: 5 39* o P. S. not loaded 5 40* o Single port 5 41* o Load failed 5 42* o Read failed 5 43* o Verify failed 5 44* o P. S. loaded */ 5 45 3 config_valid char (1), /* ascii number of drive this config was read from. if value = "000"b3 drive door has been opened. */ 5 46 3 iioc_rfu char (2), 5 47 2 bootstrap_data, /* total of 15 chars (bytes) */ 5 48 3 control fixed bin (9) unal unsigned, 5 49 /* 0 = bootstrap not configured 5 50* 1 = bootstrap allowed 5 51* 2 = auto boot at power up */ 5 52 3 imu_port_at_scu fixed bin (9) unal unsigned, /* port number for bootstrap (0 to 7) */ 5 53 3 chan_num fixed bin (9) unal unsigned, /* bootstrap channel number (8 to 63) */ 5 54 3 dev_num fixed bin (9) unal unsigned, /* bootstrap device number (1 to 63) */ 5 55 3 int_base char (4), 5 56 3 mb_base char (4), 5 57 3 boot_src fixed bin (9) unal unsigned, /* bootstrap source 1=card, 2=tape, 3=disk */ 5 58 3 unatt_op fixed bin (9) unal unsigned, /* 1 = unattended operation */ 5 59 3 boot_rfu bit (9), 5 60 2 port_data (0:3), /* total 28 chars (bytes) */ 5 61 3 enable fixed bin (9) unal unsigned, /* 1 = port enable */ 5 62 3 init fixed bin (9) unal unsigned, /* 1 = init allowed */ 5 63 3 ilace char (1), /* no interlace = "000"b3, A,B,C,D = the other port for interlace */ 5 64 3 port_size, 5 65 4 msb_ign1 bit (1), 5 66 4 msb bit (8), 5 67 4 lsb_ign1 bit (1), 5 68 4 lsb bit (8), 5 69 3 disk_tab fixed bin (9) unal unsigned, /* value of TAB number of the 5 70* D_P_S containing the proper revision of diagnostics 5 71* for port adapter. */ 5 72 3 assignment fixed bin (9) unal unsigned, /* (0 - 3) */ 5 73 2 channel_data (0:15), /* total of 160 bytes */ 5 74 3 lvl_1_state fixed bin (9) unal unsigned, /* State counter valuse define: 5 75* = No config present 5 76* = Not configured 5 77* = Phyically not present 5 78* = Basic ROM test failed (mico IPCs only) 5 79* = Jam test failed (mico IPCs only) 5 80* = Self test failed (mico IPCs only) 5 81* = HW ID does not match config ID 5 82* = Console set up failed (console only) 5 83* = RSO failed (PSIA only) 5 84* = FW not found on diskette (FW loadable IPCS only) 5 85* = Alter file not found 5 86* = Alter load failed 5 87* = FW execute failed (FW loadable IPCS only) 5 88* = Operational 5 89* = Stop On condition occured 5 90* */ 5 91 3 lvl_1_ctl_att, 5 92 4 ctl_ign1 bit (1), 5 93 4 ctl1 bit (1), /* if master console true = rmt_maint 5 94* else true = RSO required at init */ 5 95 4 ctl2 bit (1), /* if master console true = master 5 96* else reserved of future use */ 5 97 4 ctl3 bit (1), /* if master console true = active/slave 5 98* else true = 18X */ 5 99 4 ctl_p2 bit (5), 5 100 3 disk_tab fixed bin (9) unal unsigned, 5 101 /* Tab number of the D_P_S containing the proper revision of diagnostics for this adapter */ 5 102 3 fw_id_ign1 bit (1), 5 103 3 fw_id bit (8), /* this will become the 8th char in path_name???? */ 5 104 3 lvl_1_id_ign1 bit (1), 5 105 3 no_lev_2 bit (1), /* true = Do not ask for lvl-2 info. */ 5 106 3 micro_ctl bit (1), /* true = micro-procesor controled */ 5 107 3 fbus_latch bit (1), /* true = F-Bus Disable Latch is true */ 5 108 3 lvl_1_id_type fixed bin (5) unsigned unal, /* unique Lvl-1 type */ 5 109 3 fw_rev char (1), 5 110 3 prim_ch_num fixed bin (9) unal unsigned, /* primary channel number (8 to 63) */ 5 111 3 num_of_log_ch fixed bin (9) unal unsigned, /* number of logical channels */ 5 112 3 num_of_busses fixed bin (9) unal unsigned, /* number of data busses */ 5 113 3 cont_byte_ign1 bit (1), 5 114 3 cont_byte_rfu bit (5), 5 115 3 cont_byte_soc bit (1), /* true = Stop-On-Condition present */ 5 116 3 cont_byte_mpfp bit (1), /* true = maint. panel fuction present */ 5 117 3 cont_byte_mc bit (1), /* true = has been set to Master Console */ 5 118 2 adapter_data (0:15, 0:7), 5 119 3 lvl_2_state fixed bin (9) unal unsigned, 5 120 3 lvl_2_clt_att fixed bin (9) unal unsigned, 5 121 3 disk_tab fixed bin (9) unal unsigned, 5 122 3 fw_idfixed bin (9) unal unsigned, 5 123 3 lvl_2_id fixed bin (9) unal unsigned, 5 124 3 fw_rev_ign1 bit (1), 5 125 3 fw_rev bit (8), 5 126 3 rfu bit (1), 5 127 2 uses_less_data char (200); 5 128 5 129 5 130 /* End mca_config_file.incl.pl1 */ 1075 1076 6 1 /* Begin mca_data_area.incl.pl1 */ 6 2 6 3 /****^ HISTORY COMMENTS: 6 4* 1) change(86-03-19,Fawcett), approve(86-03-19,MCR7374), 6 5* audit(86-04-28,Lippard), install(86-09-16,MR12.0-1159): 6 6* Created for control of the MCA. This is a template for the ioi workspace 6 7* needed for the MCA communications. 6 8* END HISTORY COMMENTS */ 6 9 6 10 /* Created Sept 84 by R. A. Fawcett from information in 6 11* "EPS-1 DIPPER Maintainability" REV A (MAY 3, 1983) */ 6 12 6 13 6 14 6 15 dcl data_header_ptr ptr; 6 16 6 17 dcl (data_size_1, data_size_2) fixed bin (21) init (0); 6 18 6 19 dcl io_param_blk_ptr ptr; 6 20 6 21 dcl mca_dcw_list_ptr ptr; 6 22 6 23 dcl mca_work_space_ptr ptr; 6 24 6 25 dcl 1 mca_work_space based (mca_work_space_ptr), 6 26 2 list_of_dcw like mca_dcw_list, 6 27 2 status_area like istat, 6 28 6 29 2 data_header_1 aligned like data_header, 6 30 2 data_1 char (data_size_1), 6 31 2 data_header_2 aligned like data_header, 6 32 2 data_2 char (data_size_2); 6 33 6 34 6 35 dcl 1 data_header based (data_header_ptr) aligned, 6 36 2 type bit (9) unal, /* must be equal to "000"b3 (MBZ) */ 6 37 2 definer fixed bin (9) unal unsigned, /* defines type of info in header */ 6 38 2 ctl_sw bit (18) unal, /* "currently undfined" mbz = "000000"b3 */ 6 39 6 40 2 host_sts_ign1 bit (1) unal, 6 41 2 host_sts_msb bit (8) unal, 6 42 2 host_sts_ign2 bit (1) unal, 6 43 2 host_sts_lsb bit (8) unal, 6 44 6 45 2 rd_flpy fixed bin (9) unal unsigned, /* 0 = data files from host */ 6 46 /* 1 = data files from flopy */ 6 47 2 io_param_blk like io_parameter_block unal; 6 48 6 49 6 50 dcl 1 io_parameter_block based (io_param_blk_ptr) unal, 6 51 2 open fixed bin (9) unal unsigned, 6 52 2 cmd bit (18), 6 53 2 sts_ptr bit (18), /* Unused */ 6 54 2 file_name char (8), /* file name for this request */ 6 55 2 options bit (18), /* Unused */ 6 56 2 source_ptr bit (18), /* Unused */ 6 57 2 source_len, 6 58 /* data_size = source_len_msb||source_len_lsb MCA to HOST */ 6 59 3 source_len_ign1 bit (1), 6 60 3 source_len_msb bit (8), 6 61 3 source_len_ign2 bit (1), 6 62 3 source_len_lsb bit (8), 6 63 2 dest_ptr bit (18), /* Unused */ 6 64 2 blk_ct, 6 65 /* if MCA to HOST blk_ct_msb||blk_ct_lsb = MAX number of 256 byte BLOCKS */ 6 66 /* else not used */ 6 67 3 blk_ct_ign1 bit (1), 6 68 3 blk_ct_msb bit (8), 6 69 3 blk_ct_ign2 bit (1), 6 70 3 blk_ct_lsb bit (8), 6 71 2 dest_len, 6 72 /* supplied by host as the number of bytes in data_field max value is 16128 */ 6 73 /* dest_len_msb = substr(unspec(data_size),21,8) */ 6 74 /* dest_len_lsb = substr(unspec(data_size),29,8) */ 6 75 3 dest_len_ign1 bit (1), 6 76 3 dest_len_msb bit (8), 6 77 3 dest_len_ign2 bit (1), 6 78 3 dest_len_lsb bit (8); 6 79 6 80 6 81 dcl 1 mca_dcw_list based (mca_dcw_list_ptr), 6 82 2 idcw1 like idcw, 6 83 2 dcw1 like dcw, 6 84 2 idcw2 like idcw, 6 85 2 dcw2 like dcw; 6 86 6 87 7 1 7 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 7 3 7 4 dcl dcwp ptr, /* pointer to DCW */ 7 5 tdcwp ptr; /* pointer to TDCW */ 7 6 7 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 7 8 (2 address bit (18), /* address for data transfer */ 7 9 2 char_pos bit (3), /* character position */ 7 10 2 m64 bit (1), /* non-zero for mod 64 address */ 7 11 2 type bit (2), /* DCW type */ 7 12 2 tally bit (12)) unal; /* tally for data transfer */ 7 13 7 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 7 15 (2 address bit (18), /* address to transfer to */ 7 16 2 mbz1 bit (4), 7 17 2 type bit (2), /* should be "10"b for TDCW */ 7 18 2 mbz2 bit (9), 7 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 7 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 7 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 7 22 7 23 /* End of include file ...... iom_dcw.incl.pl1 */ 7 24 6 88 6 89 8 1 8 2 /* Begin include file ...... iom_pcw.incl.pl1 */ 8 3 8 4 dcl pcwp ptr; /* pointer to PCW */ 8 5 8 6 dcl 1 pcw based (pcwp) aligned, /* Peripheral Control Word */ 8 7 (2 command bit (6), /* device command */ 8 8 2 device bit (6), /* device code */ 8 9 2 ext bit (6), /* address extension */ 8 10 2 code bit (3), /* should be "111"b for PCW */ 8 11 2 mask bit (1), /* channel mask bit */ 8 12 2 control bit (2), /* terminate/proceed and marker control bits */ 8 13 2 chan_cmd bit (6), /* type of I/O operation */ 8 14 2 count bit (6), /* record count or control character */ 8 15 2 mbz1 bit (3), 8 16 2 channel bit (6), /* channel number */ 8 17 2 mbz2 bit (27)) unal; 8 18 8 19 dcl idcwp ptr; /* pointer to IDCW */ 8 20 8 21 dcl 1 idcw based (idcwp) aligned, /* Instruction DCW */ 8 22 (2 command bit (6), /* device command */ 8 23 2 device bit (6), /* device code */ 8 24 2 ext bit (6), /* address extension */ 8 25 2 code bit (3), /* should be "111"b for PCW */ 8 26 2 ext_ctl bit (1), /* "1"b if address extension to be used */ 8 27 2 control bit (2), /* terminate/proceed and marker control bits */ 8 28 2 chan_cmd bit (6), /* type of I/O operation */ 8 29 2 count bit (6)) unal; /* record count or control character */ 8 30 8 31 /* End include file ...... iom_pcw.incl.pl1 */ 8 32 6 90 6 91 9 1 9 2 /* Begin include file ...... ioi_stat.incl.pl1 */ 9 3 /* Last modified 3/24/75 by Noel I. Morris */ 9 4 9 5 dcl isp ptr; /* pointer to status structure */ 9 6 9 7 dcl 1 istat based (isp) aligned, /* I/O Interfacer status structure */ 9 8 2 completion, /* completion flags */ 9 9 (3 st bit (1), /* "1"b if status returned */ 9 10 3 er bit (1), /* "1"b if status indicates error condition */ 9 11 3 run bit (1), /* "1"b if channel still running */ 9 12 3 time_out bit (1)) unal, /* "1"b if time-out occurred */ 9 13 2 level fixed bin (3), /* IOM interrupt level */ 9 14 2 offset fixed bin (18), /* DCW list offset */ 9 15 2 absaddr fixed bin (24), /* absolute address of workspace */ 9 16 2 iom_stat bit (72), /* IOM status */ 9 17 2 lpw bit (72); /* LPW residue */ 9 18 9 19 dcl imp ptr; /* pointer to message structure */ 9 20 9 21 dcl 1 imess based (imp) aligned, /* I/O Interfacer event message structure */ 9 22 (2 completion like istat.completion, /* completion flags */ 9 23 2 pad bit (11), 9 24 2 level bit (3), /* interrupt level */ 9 25 2 offset bit (18), /* DCW list offset */ 9 26 2 status bit (36)) unal; /* first 36 bits of status */ 9 27 9 28 /* End of include file ...... ioi_stat.incl.pl1 */ 9 29 6 92 6 93 6 94 /* Constants used for data_header.definer */ 6 95 6 96 dcl DATA_FROM_HOST 6 97 fixed bin (9) unsigned init (0) static options (constant); 6 98 dcl WRITE_CONSOLE 6 99 fixed bin (9) unsigned init (1) static options (constant); 6 100 dcl WRITE_READ_CONSOLE 6 101 fixed bin (9) unsigned init (2) static options (constant); 6 102 dcl DATA_FROM_MCA 6 103 fixed bin (9) unsigned init (3) static options (constant); 6 104 dcl REQ_DATA_FROM_HOST 6 105 fixed bin (9) unsigned init (4) static options (constant); 6 106 dcl STATUS_FROM_MCA 6 107 fixed bin (9) unsigned init (5) static options (constant); 6 108 dcl SEEK 6 109 fixed bin (9) unsigned init (6) static options (constant); 6 110 dcl CON_DATA_FROM_HOST 6 111 fixed bin (9) unsigned init (7) static options (constant); 6 112 dcl BIN_DATA_FROM_HOST 6 113 fixed bin (9) unsigned init (8) static options (constant); 6 114 dcl ABORT_SES_FROM_HOST 6 115 fixed bin (9) unsigned init (9) static options (constant); 6 116 6 117 6 118 /* End mca_data_area.incl.pl1 */ 6 119 1077 1078 end mca_util_; 1079 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/30/86 1143.3 mca_util_.pl1 >spec>install>1203>mca_util_.pl1 1067 1 01/10/75 1343.6 iom_stat.incl.pl1 >ldd>include>iom_stat.incl.pl1 1069 2 09/18/86 1317.5 mca_area.incl.pl1 >ldd>include>mca_area.incl.pl1 1071 3 09/18/86 1317.5 mca_constants.incl.pl1 >ldd>include>mca_constants.incl.pl1 1073 4 09/18/86 1317.5 mca_data.incl.pl1 >ldd>include>mca_data.incl.pl1 1075 5 09/18/86 1317.5 mca_config_file.incl.pl1 >ldd>include>mca_config_file.incl.pl1 1077 6 09/18/86 1317.5 mca_data_area.incl.pl1 >ldd>include>mca_data_area.incl.pl1 6-88 7 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 6-90 8 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 6-92 9 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 005507 constant fixed bin(17,0) initial dcl 120 ref 161 161 255 382 595 774 1016 1017 1038 COMPLETE constant bit(6) initial unaligned dcl 121 ref 832 CONT_MARKER constant bit(2) initial unaligned dcl 122 ref 665 CONT_NO_MARKER constant bit(2) initial unaligned dcl 123 ref 1011 CON_DATA_FROM_HOST constant fixed bin(9,0) initial unsigned dcl 6-110 ref 1002 DATA_SEG 000000 constant char(12) initial unaligned dcl 4-85 set ref 153* 866* IDCW_ID constant bit(3) initial unaligned dcl 124 ref 663 669 969 1010 1033 IOTD constant bit(2) initial unaligned dcl 125 ref 1013 1035 IPC_ATTACHED constant fixed bin(17,0) initial dcl 4-94 ref 251 307 IPC_FREE constant fixed bin(17,0) initial dcl 4-94 ref 809 IPC_NOT_CONFIGURED constant fixed bin(17,0) initial dcl 4-94 ref 807 MAX_TALLY constant fixed bin(17,0) initial dcl 126 ref 615 773 MCA_ATTACHED constant fixed bin(17,0) initial dcl 4-88 ref 628 835 MCA_ATTACHING constant fixed bin(17,0) initial dcl 4-88 ref 522 523 547 823 829 902 909 MCA_area_version_1 000010 constant char(8) initial unaligned dcl 2-19 ref 924 NOT_COMPLETE constant bit(6) initial unaligned dcl 127 ref 837 ONE_K constant fixed bin(17,0) initial dcl 128 ref 839 PH_NOT_PRESENT constant fixed bin(17,0) initial dcl 3-14 ref 807 READY constant bit(4) initial unaligned dcl 130 ref 831 READ_TYPE constant bit(6) initial unaligned dcl 129 ref 760 1032 RESET_STATUS constant bit(6) initial unaligned dcl 131 ref 968 STATUS_MASK 000012 constant bit(72) initial unaligned dcl 132 ref 940 SYSTEM_DIR 000003 constant char(17) initial unaligned dcl 4-84 set ref 153* 866* TEXT_TYPE constant bit(6) initial unaligned dcl 133 ref 1009 TRACE_BOOT constant bit(3) initial unaligned dcl 135 ref 467 TRACE_DEBUG constant bit(3) initial unaligned dcl 136 ref 467 TRACE_FAULT constant bit(3) initial unaligned dcl 134 ref 467 TYPE 000246 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* a_code parameter fixed bin(35,0) dcl 24 set ref 138 167 196 218 269 278 323 366 391 440 489 534* 542* 560 565 581* 586 599* 609* 625* 631* 634 642* 647 657* 672* 678* 684* 687 698* 719 719 726* 732 747* 750 779* 782 811* a_dsk_num parameter fixed bin(17,0) dcl 25 ref 323 340 a_ev_info_ptr parameter pointer dcl 26 ref 167 174 687 694 a_ioi_idx parameter fixed bin(17,0) dcl 27 ref 167 173 196 202 218 225 269 278 286 323 330 366 371 391 397 440 445 489 495 560 565 574 647 652 a_ipc_num parameter fixed bin(17,0) dcl 28 ref 196 203 218 226 a_mca_area_ptr parameter pointer dcl 29 ref 167 175 187 687 695 a_mca_status parameter bit(72) unaligned dcl 30 set ref 196 211* 218 234* 261* 264* 269 278 318* 323 366 372* 391 418* 427* 432* 440 457* 464* 476* 484* 489 510* 516* 521* 647 658* 677* 682* a_mcad_ptr parameter pointer dcl 31 ref 586 596 634 639 687 693 719 719 732 737 750 756 782 788 a_on parameter bit(1) unaligned dcl 32 ref 440 455 a_options parameter bit(3) unaligned dcl 33 ref 440 446 a_read_type parameter char unaligned dcl 37 ref 323 341 a_ret_len parameter fixed bin(21,0) dcl 34 set ref 138 156* 163* 323 366 391 419* 428* 433* 719 719 727* 732 746* 750 778* 782 a_ret_size parameter fixed bin(21,0) dcl 35 ref 138 160 323 362 366 383 391 408 a_trace_state parameter char(40) unaligned dcl 36 set ref 440 479 744 a_user_ptr parameter pointer dcl 38 ref 138 145 323 366 391 422 addr builtin function dcl 104 ref 250 479 480 612 662 667 758 759 760 762 791 830 887 926 936 964 965 967 992 993 994 997 998 1019 1020 1025 1030 1031 1054 1057 1058 1058 addrel builtin function dcl 104 ref 935 address based bit(18) level 2 packed unaligned dcl 7-7 set ref 1012* 1034* array 2 based structure array level 2 unaligned dcl 4-26 set ref 873 873 877 887 async_io 33 based bit(1) level 3 packed unaligned dcl 4-31 ref 259 316 425 482 515 605 676 827 829 attach_pid 4 based bit(36) level 2 dcl 4-31 ref 893 bc 000100 automatic fixed bin(24,0) dcl 39 set ref 153* 866* bin builtin function dcl 104 ref 772 channel 2 based fixed bin(17,0) level 2 packed unaligned dcl 4-61 set ref 793* channel_data 24 based structure array level 2 packed unaligned dcl 5-16 ref 790 790 cleanup 000234 stack reference condition dcl 107 ref 148 180 205 228 296 334 376 401 449 501 code 000101 automatic fixed bin(35,0) dcl 40 in procedure "mca_util_" set ref 144* 153* 178* 190* 192 201* 210* 224* 233* 252* 257 262 292* 309* 314 319 352* 357* 384* 417 429 453* 458* 475 485 496* 522 524* 525 534 542 550* 578* 581 598 599 608 609 617 623* 624 625 631 640* 642 654* 657 670* 671 672 678 683* 684 696* 698 755* 779 822 824* 825 833* 834 841 851* 852* 863* 866* 881* 898* 903* 928* 932* 941* 943* 953* 986* 988 1058* 1059 1060* code 0(18) based bit(3) level 2 in structure "idcw" packed unaligned dcl 8-21 in procedure "mca_util_" set ref 669* 969* 1010* 1033* code 0(18) based bit(3) level 2 in structure "pcw" packed unaligned dcl 8-6 in procedure "mca_util_" set ref 663* command based bit(6) level 2 packed unaligned dcl 8-21 set ref 968* 1009* 1032* completion based structure level 2 in structure "istat" dcl 9-7 in procedure "mca_util_" completion 4 based structure level 3 in structure "mca_work_space" packed unaligned dcl 6-25 in procedure "mca_util_" completion based structure level 2 in structure "imess" packed unaligned dcl 9-21 in procedure "mca_util_" config_data_requested 33(01) based bit(1) level 3 packed unaligned dcl 4-31 set ref 523 528* 823 826* control 0(22) based bit(2) level 2 in structure "idcw" packed unaligned dcl 8-21 in procedure "mca_util_" set ref 760 1011* control 0(22) based bit(2) level 2 in structure "pcw" packed unaligned dcl 8-6 in procedure "mca_util_" set ref 665* convert_ipc_code_ 000016 constant entry external dcl 89 ref 1060 cu_$level_get 000012 constant entry external dcl 87 ref 147 179 204 227 295 333 375 400 448 499 cu_$level_set 000014 constant entry external dcl 88 ref 149 151 181 183 206 208 229 231 297 299 335 337 377 379 402 404 450 452 502 505 539 554 current_ws_size 31 based fixed bin(18,0) level 2 dcl 4-31 set ref 985 990* data_1 24 based char level 2 packed unaligned dcl 6-25 set ref 1008* data_2 based char level 2 packed unaligned dcl 6-25 set ref 480 1031 data_header based structure level 1 dcl 6-35 set ref 774 995* 1016 1028* 1038 data_header_1 14 based structure level 2 dcl 6-25 set ref 994 data_header_2 based structure level 2 dcl 6-25 set ref 1025 data_header_ptr 000320 automatic pointer dcl 6-15 set ref 774 994* 995 1001 1002 1003 1004 1006 1012 1016 1025* 1028 1034 1038 data_size_1 000322 automatic fixed bin(21,0) initial dcl 6-17 set ref 480 6-17* 982* 984 1004 1006 1008 1008 1016 1017 1025 1030 1031 data_size_2 000323 automatic fixed bin(21,0) initial dcl 6-17 set ref 480 6-17* 983* 984 1031 1038 dcw based structure level 1 dcl 7-7 dcw1 1 based structure level 2 packed unaligned dcl 6-81 set ref 760 998 dcw2 3 based structure level 2 packed unaligned dcl 6-81 set ref 762 1020 dcwp 000332 automatic pointer dcl 7-4 set ref 760* 762* 772 998* 1012 1013 1018 1020* 1034 1035 1040 definer 0(09) based fixed bin(9,0) level 2 packed unsigned unaligned dcl 6-35 set ref 1002* dest_len 7(18) based structure level 3 packed unaligned dcl 6-35 dest_len_lsb 7(28) based bit(8) level 4 packed unaligned dcl 6-35 set ref 1006* dest_len_msb 7(19) based bit(8) level 4 packed unaligned dcl 6-35 set ref 1004* divide builtin function dcl 104 ref 1016 1038 dsk_num 000102 automatic fixed bin(17,0) dcl 41 set ref 340* 355 355 360* entry_to_return_data 24 based entry variable level 2 dcl 4-31 set ref 258* 315* 424* 481* 514* 604* 619* 675* 943 953 error_table_$action_not_performed 000044 external static fixed bin(35,0) dcl 112 ref 932 error_table_$area_too_small 000046 external static fixed bin(35,0) dcl 113 ref 384 error_table_$bad_arg 000050 external static fixed bin(35,0) dcl 114 ref 210 233 352 357 458 error_table_$not_attached 000052 external static fixed bin(35,0) dcl 115 ref 252 309 881 898 903 error_table_$timeout 000054 external static fixed bin(35,0) dcl 116 ref 928 ev_chan 2 000116 automatic fixed bin(71,0) level 2 dcl 54 set ref 1056* ev_count 000116 automatic fixed bin(17,0) level 2 dcl 54 set ref 1055* ev_info_ptr 000104 automatic pointer dcl 51 set ref 174* 694* 926 1057* 1058* event_chn 10 based fixed bin(71,0) level 2 dcl 4-31 ref 1056 event_info based structure level 1 unaligned dcl 42 event_info_area 000106 automatic structure level 1 unaligned dcl 52 set ref 1057 event_list 000116 automatic structure level 1 unaligned dcl 54 set ref 1058 1058 expected_chars 000124 automatic fixed bin(21,0) dcl 63 set ref 255* 362* 382* 383 408* 473* 595* 615* 839* 983 fbus_disable_latch 3(02) based bit(1) level 3 packed unaligned dcl 4-61 set ref 801* fbus_latch 25(03) based bit(1) array level 3 packed unaligned dcl 5-16 ref 801 file_name 3 based char(8) level 3 packed unaligned dcl 6-35 set ref 1001* file_ptr 000126 automatic pointer dcl 64 set ref 145* 162 423 602 618 1031* fixed builtin function dcl 104 ref 744 768 flags 33 based structure level 2 packed unaligned dcl 4-31 foo_len 000131 automatic fixed bin(21,0) dcl 66 set ref 347* 360* 467* force_entry 000130 automatic bit(1) unaligned dcl 65 set ref 177* 247* 294* 332* 374* 399* 461* 498* 562* 573* 653* 889 get_process_id_ 000020 constant entry external dcl 90 ref 893 get_ring_ 000022 constant entry external dcl 91 ref 151 151 183 183 208 208 231 231 299 299 337 337 379 379 404 404 452 452 505 505 hbound builtin function dcl 104 ref 209 232 306 790 873 877 idcw based structure level 1 dcl 8-21 set ref 668* idcw1 based structure level 2 packed unaligned dcl 6-81 set ref 759 967 997 idcw2 2 based structure level 2 packed unaligned dcl 6-81 set ref 1019 idcwp 000336 automatic pointer dcl 8-19 set ref 667* 668 669 759* 760 967* 968 969 997* 1009 1010 1011 1019* 1032 1033 imess based structure level 1 dcl 9-21 imp 000342 automatic pointer dcl 9-19 set ref 683 926* 927 931 index_of_chan 000132 automatic fixed bin(17,0) dcl 67 set ref 790* 791 793 795 797 799 801 803 805* initiate_file_ 000024 constant entry external dcl 92 ref 153 866 io_event_entry 000134 automatic bit(1) unaligned dcl 69 set ref 176* 241* 293* 331* 373* 398* 447* 497* 579* 909 io_outstanding 2 based bit(1) level 2 dcl 2-10 set ref 942* 950* 952* io_param_blk based structure level 3 in structure "mca_work_space" packed unaligned dcl 6-25 in procedure "mca_util_" set ref 1030 io_param_blk 1(27) based structure level 2 in structure "data_header" packed unaligned dcl 6-35 in procedure "mca_util_" io_param_blk_ptr 000324 automatic pointer dcl 6-19 set ref 738* 739 739 763* 767 767 io_param_ptr 22 based pointer level 2 dcl 4-31 set ref 738 763 1030* io_parameter_block based structure level 1 packed unaligned dcl 6-50 ioa_$rsnnl 000026 constant entry external dcl 93 ref 347 360 467 ioi_$connect 000030 constant entry external dcl 94 ref 852 ioi_$connect_pcw 000032 constant entry external dcl 95 ref 670 ioi_$timeout 000034 constant entry external dcl 96 ref 623 833 ioi_$workspace 000036 constant entry external dcl 97 ref 986 ioi_idx 11 based fixed bin(17,0) array level 3 in structure "mca_data_seg" dcl 4-26 in procedure "mca_util_" set ref 873 ioi_idx 7 based fixed bin(17,0) level 2 in structure "mcad" dcl 4-31 in procedure "mca_util_" set ref 623* 670* 833* 852* 986* ioi_wks_ptr 12 based pointer level 2 dcl 4-31 set ref 666 757 935 963 981 986* 989 ioi_ws_size 000133 automatic fixed bin(18,0) dcl 68 set ref 984* 985 986* 990 iom_stat 4 based bit(72) level 2 dcl 9-7 set ref 936 937 ipc_$block 000042 constant entry external dcl 99 ref 1058 ipc_num 000135 automatic fixed bin(17,0) dcl 70 set ref 203* 209 209 214 226* 232 232 237 250 306* 307* ipc_pic 000136 automatic picture(2) unaligned dcl 71 set ref 214* 215 237* 238 ipcd based structure level 1 dcl 4-61 set ref 792* ipcd_array 40 based structure array level 2 dcl 4-31 set ref 209 209 232 232 250 306 306 791 ipcd_ptr 000314 automatic pointer dcl 4-24 set ref 250* 251 791* 792 793 795 797 799 801 803 805 807 807 809 is_micro_cont 3(01) based bit(1) level 3 packed unaligned dcl 4-61 set ref 799* isp 000340 automatic pointer dcl 9-5 set ref 935* 936 937 965* 993* istat based structure level 1 dcl 9-7 last_status 36 based bit(71) level 2 dcl 4-31 set ref 937* 937 938 941 lbound builtin function dcl 104 ref 209 232 306 790 873 length builtin function dcl 104 ref 744 937 982 level_1_state 5 based fixed bin(17,0) level 2 dcl 4-61 set ref 805* 807 list_of_dcw based structure level 2 packed unaligned dcl 6-25 set ref 667 758 964 992 loc_ioi_idx 000137 automatic fixed bin(17,0) dcl 72 set ref 173* 202* 225* 286* 330* 371* 397* 445* 495* 574* 652* 873 lvl_1_id_type 25(04) based fixed bin(5,0) array level 3 packed unsigned unaligned dcl 5-16 ref 803 lvl_1_state 24 based fixed bin(9,0) array level 3 packed unsigned unaligned dcl 5-16 ref 805 major 0(02) based bit(4) level 2 packed unaligned dcl 1-7 ref 831 mask 0(21) based bit(1) level 2 packed unaligned dcl 8-6 set ref 664* max_time_out 34 based fixed bin(71,0) level 2 dcl 4-31 set ref 623* 833* mca_area based structure level 1 dcl 2-10 set ref 187* 923* mca_area_ptr 000244 automatic pointer dcl 2-17 set ref 175* 261 318 427 428 484 521 612 682 695* 830 845 923 924 925 938 942 943 946 950 952 953 956 1054* mca_attach_state 3 based fixed bin(17,0) level 2 dcl 2-10 set ref 845* 925* mca_command 000140 automatic char(80) unaligned dcl 73 set ref 215* 238* 275* 283* 347* 360* 387* 409* 467* 594* 614* 838* 982 999 1008 mca_config_file based structure level 1 packed unaligned dcl 5-16 ref 382 595 mca_config_file_ptr 000316 automatic pointer dcl 5-14 set ref 382 595 789* 790 790 793 795 797 799 801 803 805 mca_data_seg based structure level 1 unaligned dcl 4-26 set ref 161 161 mca_data_seg_ptr 000010 internal static pointer initial dcl 4-20 set ref 152 153* 155 161 161 162 865 866* 868 873 873 873 877 887 mca_dcw_list based structure level 1 packed unaligned dcl 6-81 set ref 966* 996* mca_dcw_list_ptr 000326 automatic pointer dcl 6-21 set ref 758* 759 760 762 964* 966 967 992* 996 997 998 1019 1020 mca_index 000164 automatic fixed bin(17,0) dcl 74 set ref 873* 873* 877 887 mca_status 4 based bit(72) level 2 dcl 2-10 set ref 261 318 427 484 521 612 682 830 938* mca_work_space based structure level 1 unaligned dcl 6-25 set ref 984 mca_work_space_ptr 000330 automatic pointer dcl 6-23 set ref 480 666* 667 757* 758 963* 964 965 981* 984 989* 992 993 994 1008 1025 1030 1031 mcad based structure level 1 dcl 4-31 mcad_ptr 000312 automatic pointer dcl 4-22 set ref 146* 186 209 209 232 232 249 250 258 259 301 306 306 307 315 316 339 381 406 422 423 424 425 463 479 480 481 482 509 514 515 522 523 523 524* 528 547 547 549 550 577* 582 596* 602 603 604 605 618 619 623 623 628 639* 656 666 670 675 676 693* 737* 738 745 745 756* 757 763 777 777 788* 789 791 823 823 824* 826 827 829 829 833 833 835 845 852 862* 887* 893 897* 902 909 912* 925 935 935 937 937 938 941 943 943* 953 953* 963 981 985 986 986 989 990 1030 1056 message 2 based fixed bin(71,0) level 2 dcl 42 set ref 926 micro_ctl 25(02) based bit(1) array level 3 packed unaligned dcl 5-16 ref 799 min builtin function dcl 104 ref 362 408 744 775 mod builtin function dcl 104 ref 1017 nchan 2(18) based fixed bin(17,0) level 2 packed unaligned dcl 4-61 set ref 795* no_lev_2 25(01) based bit(1) array level 3 packed unaligned dcl 5-16 ref 797 no_level_2_info 3 based bit(1) level 3 packed unaligned dcl 4-61 set ref 797* null builtin function dcl 104 ref 146 152 155 186 249 301 339 381 406 463 509 547 577 603 656 862 865 868 897 912 num_of_log_ch 25(27) based fixed bin(9,0) array level 3 packed unsigned unaligned dcl 5-16 ref 795 pcw based structure level 1 dcl 8-6 pcw_auto 000122 automatic structure level 1 dcl 59 set ref 661* 662 pcwa 000122 automatic bit(36) level 2 dcl 59 set ref 670* pcwp 000334 automatic pointer dcl 8-4 set ref 662* 663 664 665 prim_ch_num 25(18) based fixed bin(9,0) array level 3 packed unsigned unaligned dcl 5-16 ref 793 rcp_$detach 000040 constant entry external dcl 98 ref 550 rcp_id 32 based bit(36) level 2 dcl 4-31 set ref 549 550* rd_flpy 1(18) based fixed bin(9,0) level 2 packed unsigned unaligned dcl 6-35 set ref 1003* read_type 000165 automatic char(80) unaligned dcl 75 set ref 341* 343 344 345 346 347 347 360 360 rel builtin function dcl 104 ref 1012 1034 ret_data based char unaligned dcl 77 set ref 162* 162 745* 745 777* 777 ret_data_len 000212 automatic fixed bin(21,0) dcl 78 set ref 160* 161 161* 162 162 163 744* 745 745 746 768* 775* 775 777 777 778 ret_len 6 based fixed bin(21,0) level 2 dcl 2-10 set ref 428 943* 946* 953* 956* ret_len_bits 000211 automatic bit(16) unaligned dcl 76 set ref 739* 744 767* 768 return_data_ptr 20 based pointer level 2 dcl 4-31 set ref 423* 480* 602* 618* 745 777 789 rtrim builtin function dcl 104 ref 347 347 360 360 982 search builtin function dcl 104 ref 346 size builtin function dcl 104 ref 161 161 382 595 774 984 1016 1038 sk_mca_area 000213 automatic structure level 1 unaligned dcl 79 set ref 1054 source_len 4(09) based structure level 2 packed unaligned dcl 6-50 source_len_lsb 4(19) based bit(8) level 3 packed unaligned dcl 6-50 ref 739 767 source_len_msb 4(10) based bit(8) level 3 packed unaligned dcl 6-50 ref 739 767 st based bit(1) level 3 packed unaligned dcl 9-21 ref 931 state 1 based fixed bin(17,0) level 2 in structure "mcad" dcl 4-31 in procedure "mca_util_" set ref 522 523 547 628* 823 829 835* 845 902 909 925 state 44 based fixed bin(17,0) array level 3 in structure "mcad" packed unaligned dcl 4-31 in procedure "mca_util_" set ref 307 state 4 based fixed bin(17,0) level 2 in structure "ipcd" packed unaligned dcl 4-61 in procedure "mca_util_" set ref 251 807* 809* statp 000242 automatic pointer dcl 1-5 set ref 612* 613 830* 831 832 837 936* 940 943 950 953 status based structure level 1 dcl 1-7 ref 940 status_area 4 based structure level 2 unaligned dcl 6-25 set ref 965 993 status_offset 30 based fixed bin(17,0) level 2 dcl 4-31 ref 935 sub 0(06) based bit(6) level 2 packed unaligned dcl 1-7 ref 613 832 837 943 950 953 substr builtin function dcl 104 ref 345 937 941 943 950 953 1004 1006 1008 1018 1040 tally 0(24) based bit(12) level 2 packed unaligned dcl 7-7 set ref 772 1018* 1040* tally_num 000222 automatic fixed bin(17,0) dcl 80 set ref 772* 773 773* 774* 774 775 1016* 1017* 1017 1018 1038* 1040 time_out 0(03) based bit(1) level 3 packed unaligned dcl 9-21 ref 683 927 trace_on 000223 automatic bit(1) unaligned dcl 81 set ref 455* 467* trace_types 000224 automatic bit(3) unaligned dcl 82 set ref 446* 456 467 467 467 trace_what 000225 automatic char(20) unaligned dcl 83 set ref 454* type 0(22) based bit(2) level 2 packed unaligned dcl 7-7 set ref 1013* 1035* type_index 3(09) based fixed bin(8,0) level 3 packed unaligned dcl 4-61 set ref 803* type_info 3 based structure level 2 dcl 4-61 unspec builtin function dcl 104 set ref 187* 668* 792* 923* 940 941* 966* 995* 996* 1004 1006 1018 1028* 1040 user_level 000232 automatic fixed bin(17,0) dcl 84 set ref 147* 149* 179* 181* 204* 206* 227* 229* 295* 297* 333* 335* 375* 377* 400* 402* 448* 450* 499* 502* 539* 554* user_ptr 16 based pointer level 2 dcl 4-31 set ref 422* 479* 603* 745 777 version based char(8) level 2 dcl 2-10 set ref 924* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABORT_SES_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 6-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 BIN_DATA_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 6-112 CON_SET_UP_FAILED internal static fixed bin(17,0) initial dcl 3-19 DATA_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 6-96 DATA_FROM_MCA internal static fixed bin(9,0) initial unsigned dcl 6-102 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_DISK_FIPS internal static fixed bin(17,0) initial dcl 3-35 IPC_IDI internal static fixed bin(17,0) initial dcl 3-33 IPC_PDSI internal static fixed bin(17,0) initial dcl 3-30 IPC_TAPE_FIPS internal static fixed bin(17,0) initial dcl 3-34 JAM_FAILED internal static fixed bin(17,0) initial dcl 3-16 MAINT_SESSION 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_data_version_1 internal static char(8) initial unaligned dcl 4-17 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 OPERATIONAL internal static fixed bin(17,0) initial dcl 3-26 PSIA_2_TRIP internal static fixed bin(17,0) initial dcl 3-29 PSIA_4_TRIP internal static fixed bin(17,0) initial dcl 3-37 REQ_DATA_FROM_HOST internal static fixed bin(9,0) initial unsigned dcl 6-104 RSO_FAILED internal static fixed bin(17,0) initial dcl 3-20 SEEK internal static fixed bin(9,0) initial unsigned dcl 6-108 SELF_FAILED internal static fixed bin(17,0) initial dcl 3-17 STATUS_FROM_MCA internal static fixed bin(9,0) initial unsigned dcl 6-106 STOP_ON_COND internal static fixed bin(17,0) initial dcl 3-27 WRITE_CONSOLE internal static fixed bin(9,0) initial unsigned dcl 6-98 WRITE_READ_CONSOLE internal static fixed bin(9,0) initial unsigned dcl 6-100 faultword based structure level 1 dcl 1-27 special_status based structure level 1 dcl 1-35 tdcw based structure level 1 dcl 7-14 tdcwp automatic pointer dcl 7-4 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR_EXIT 003045 constant label dcl 542 ref 188 192 212 235 249 253 257 262 301 310 314 319 339 353 358 381 385 406 420 429 459 465 477 485 511 522 526 NORMAL_EXIT 003025 constant label dcl 534 ref 157 164 193 265 321 435 487 517 530 827 READ_PART 005172 constant label dcl 1025 common_all_ipcs 001325 constant label dcl 286 ref 276 284 common_io_event 004311 constant entry internal dcl 816 ref 191 697 common_read 002275 constant label dcl 411 ref 364 388 do_connect 004432 constant entry internal dcl 849 ref 641 970 1045 format_with_num 001717 constant label dcl 355 ref 343 344 345 have_format 002005 constant label dcl 362 set ref 349 idx_to_ptr 004452 constant entry internal dcl 856 ref 185 248 300 338 380 405 462 507 580 655 load_reset_common 001176 constant label dcl 241 ref 216 239 mca_ptr_common 003171 constant label dcl 574 ref 563 mca_util_ 000314 constant entry external dcl 20 mca_util_$attach_config 003221 constant entry external dcl 586 ref 524 824 mca_util_$connect 003413 constant entry external dcl 634 mca_util_$diskette_read 001466 constant entry external dcl 323 mca_util_$display 000340 constant entry external dcl 138 mca_util_$fill_config_data 004161 constant entry external dcl 782 ref 604 mca_util_$force_mca_ptr 003137 constant entry external dcl 560 mca_util_$force_reset 003447 constant entry external dcl 647 mca_util_$io_event 000545 constant entry external dcl 167 mca_util_$io_event_mca 003644 constant entry external dcl 687 mca_util_$load_all_ipcs 001261 constant entry external dcl 269 mca_util_$load_ipc 000676 constant entry external dcl 196 mca_util_$mca_ptr 003156 constant entry external dcl 565 mca_util_$no_data 003710 constant entry external dcl 719 ref 514 619 675 mca_util_$read_config 002022 constant entry external dcl 366 mca_util_$read_data 002155 constant entry external dcl 391 mca_util_$reset 002634 constant entry external dcl 489 mca_util_$reset_all_ipcs 001304 constant entry external dcl 278 mca_util_$reset_ipc 001037 constant entry external dcl 218 mca_util_$ret_load_reset_ipc 003730 constant entry external dcl 719 ref 258 315 mca_util_$ret_trace_state 003760 constant entry external dcl 732 ref 481 mca_util_$return_data 004042 constant entry external dcl 750 ref 424 mca_util_$trace_sw 002352 constant entry external dcl 440 process_io_event 004621 constant entry internal dcl 917 ref 821 1063 reset_status 004756 constant entry internal dcl 961 ref 513 set_ws_connect 005001 constant entry internal dcl 973 ref 256 313 411 474 597 616 840 sync_io_loop 003275 constant label dcl 606 ref 620 wait 005235 constant entry internal dcl 1049 ref 260 317 426 483 520 606 681 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6532 6610 5510 6542 Length 7342 5510 56 515 1021 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mca_util_ 440 external procedure is an external procedure. on unit on line 148 68 on unit on unit on line 180 68 on unit on unit on line 205 68 on unit on unit on line 228 68 on unit on unit on line 296 68 on unit on unit on line 334 68 on unit on unit on line 376 68 on unit on unit on line 401 68 on unit on unit on line 449 68 on unit on unit on line 501 68 on unit common_io_event internal procedure shares stack frame of external procedure mca_util_. do_connect internal procedure shares stack frame of external procedure mca_util_. idx_to_ptr internal procedure shares stack frame of external procedure mca_util_. process_io_event internal procedure shares stack frame of external procedure mca_util_. reset_status internal procedure shares stack frame of external procedure mca_util_. set_ws_connect internal procedure shares stack frame of external procedure mca_util_. wait internal procedure shares stack frame of external procedure mca_util_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 mca_data_seg_ptr mca_util_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mca_util_ 000100 bc mca_util_ 000101 code mca_util_ 000102 dsk_num mca_util_ 000104 ev_info_ptr mca_util_ 000106 event_info_area mca_util_ 000116 event_list mca_util_ 000122 pcw_auto mca_util_ 000124 expected_chars mca_util_ 000126 file_ptr mca_util_ 000130 force_entry mca_util_ 000131 foo_len mca_util_ 000132 index_of_chan mca_util_ 000133 ioi_ws_size mca_util_ 000134 io_event_entry mca_util_ 000135 ipc_num mca_util_ 000136 ipc_pic mca_util_ 000137 loc_ioi_idx mca_util_ 000140 mca_command mca_util_ 000164 mca_index mca_util_ 000165 read_type mca_util_ 000211 ret_len_bits mca_util_ 000212 ret_data_len mca_util_ 000213 sk_mca_area mca_util_ 000222 tally_num mca_util_ 000223 trace_on mca_util_ 000224 trace_types mca_util_ 000225 trace_what mca_util_ 000232 user_level mca_util_ 000242 statp mca_util_ 000244 mca_area_ptr mca_util_ 000246 TYPE mca_util_ 000312 mcad_ptr mca_util_ 000314 ipcd_ptr mca_util_ 000316 mca_config_file_ptr mca_util_ 000320 data_header_ptr mca_util_ 000322 data_size_1 mca_util_ 000323 data_size_2 mca_util_ 000324 io_param_blk_ptr mca_util_ 000326 mca_dcw_list_ptr mca_util_ 000330 mca_work_space_ptr mca_util_ 000332 dcwp mca_util_ 000334 pcwp mca_util_ 000336 idcwp mca_util_ 000340 isp mca_util_ 000342 imp mca_util_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ent_var call_ext_in call_ext_out_desc call_ext_out return_mac mdfx1 signal_op enable_op shorten_stack ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_ipc_code_ cu_$level_get cu_$level_set get_process_id_ get_ring_ initiate_file_ ioa_$rsnnl ioi_$connect ioi_$connect_pcw ioi_$timeout ioi_$workspace ipc_$block rcp_$detach THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$area_too_small error_table_$bad_arg error_table_$not_attached error_table_$timeout LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 3 39 000145 6 17 000307 20 000313 22 000324 138 000333 144 000361 145 000362 146 000365 147 000367 148 000376 149 000412 150 000421 151 000422 152 000442 153 000447 155 000505 156 000512 157 000513 160 000514 161 000516 162 000527 163 000535 164 000537 167 000540 173 000560 174 000563 175 000566 176 000571 177 000573 178 000574 179 000575 180 000604 181 000620 182 000627 183 000630 185 000650 186 000651 187 000655 188 000663 190 000664 191 000665 192 000666 193 000670 196 000671 201 000713 202 000714 203 000717 204 000721 205 000730 206 000744 207 000753 208 000754 209 000774 210 001000 211 001003 212 001007 214 001010 215 001020 216 001033 218 001035 224 001054 225 001055 226 001060 227 001062 228 001071 229 001105 230 001114 231 001115 232 001135 233 001141 234 001144 235 001150 237 001151 238 001161 239 001174 241 001176 247 001177 248 001200 249 001201 250 001205 251 001212 252 001216 253 001221 255 001222 256 001224 257 001225 258 001227 259 001234 260 001237 261 001240 262 001245 263 001247 264 001250 265 001254 269 001255 275 001276 276 001301 278 001302 283 001321 284 001324 286 001325 292 001330 293 001331 294 001332 295 001333 296 001342 297 001356 298 001365 299 001366 300 001406 301 001407 306 001413 307 001417 309 001425 310 001430 312 001431 313 001433 314 001434 315 001436 316 001443 317 001446 318 001447 319 001454 321 001456 323 001457 330 001517 331 001522 332 001523 333 001524 334 001533 335 001547 336 001556 337 001557 338 001577 339 001600 340 001604 341 001607 343 001614 344 001620 345 001624 346 001630 347 001642 349 001711 352 001713 353 001716 355 001717 357 001723 358 001726 360 001727 362 002005 364 002013 366 002014 371 002045 372 002050 373 002054 374 002055 375 002056 376 002065 377 002101 378 002110 379 002111 380 002131 381 002132 382 002136 383 002141 384 002143 385 002146 387 002147 388 002152 391 002153 397 002200 398 002203 399 002204 400 002205 401 002214 402 002230 403 002237 404 002240 405 002260 406 002261 408 002265 409 002272 411 002275 417 002276 418 002300 419 002304 420 002305 422 002306 423 002312 424 002314 425 002320 426 002323 427 002324 428 002331 429 002333 430 002335 432 002336 433 002342 435 002343 440 002344 445 002367 446 002372 447 002377 448 002400 449 002407 450 002423 451 002432 452 002433 453 002453 454 002454 455 002457 456 002465 457 002467 458 002473 459 002476 461 002477 462 002500 463 002501 464 002505 465 002511 467 002512 473 002565 474 002567 475 002570 476 002572 477 002576 479 002577 480 002603 481 002612 482 002616 483 002621 484 002622 485 002627 487 002631 489 002632 495 002651 496 002654 497 002655 498 002657 499 002660 501 002667 502 002703 503 002712 505 002713 507 002733 509 002734 510 002740 511 002744 513 002745 514 002746 515 002753 516 002756 517 002762 520 002763 521 002764 522 002771 523 002777 524 003006 525 003016 526 003020 528 003021 530 003024 534 003025 539 003027 540 003036 542 003045 547 003047 549 003057 550 003061 554 003115 555 003124 560 003133 562 003151 563 003153 565 003154 573 003170 574 003171 577 003174 578 003176 579 003177 580 003200 581 003201 582 003203 586 003215 594 003234 595 003237 596 003242 597 003246 598 003247 599 003251 600 003252 602 003261 603 003264 604 003266 605 003272 606 003275 608 003276 609 003300 610 003301 612 003310 613 003313 614 003320 615 003323 616 003325 617 003326 618 003337 619 003342 620 003346 623 003347 624 003363 625 003365 626 003366 628 003375 631 003400 632 003402 634 003411 639 003426 640 003432 641 003433 642 003434 643 003436 647 003445 652 003464 653 003467 654 003471 655 003472 656 003473 657 003477 658 003501 659 003505 661 003514 662 003516 663 003520 664 003522 665 003524 666 003526 667 003531 668 003533 669 003534 670 003536 671 003555 672 003557 673 003560 675 003567 676 003574 677 003577 678 003603 679 003605 681 003614 682 003615 683 003622 684 003626 685 003630 687 003637 693 003657 694 003663 695 003666 696 003671 697 003672 698 003673 699 003675 719 003704 726 003745 727 003746 728 003747 732 003756 737 003775 738 004001 739 004003 744 004015 745 004022 746 004027 747 004030 748 004031 750 004040 755 004057 756 004060 757 004064 758 004066 759 004070 760 004072 762 004102 763 004104 767 004106 768 004120 772 004122 773 004125 774 004131 775 004134 777 004140 778 004145 779 004146 780 004150 782 004157 788 004176 789 004202 790 004204 791 004211 792 004215 793 004220 795 004233 797 004242 799 004245 801 004250 803 004253 805 004262 807 004270 809 004275 810 004277 811 004301 812 004302 816 004311 821 004312 822 004313 823 004316 824 004325 825 004335 826 004340 827 004343 829 004346 830 004354 831 004357 832 004362 833 004370 834 004403 835 004406 836 004411 837 004412 838 004414 839 004417 840 004421 841 004422 845 004425 847 004431 849 004432 851 004433 852 004434 854 004451 856 004452 862 004453 863 004455 865 004456 866 004462 868 004520 873 004526 875 004541 877 004543 881 004546 882 004551 887 004552 889 004557 893 004562 897 004574 898 004576 899 004601 902 004602 903 004605 909 004610 912 004616 915 004620 917 004621 923 004622 924 004626 925 004631 926 004634 927 004637 928 004642 929 004645 931 004646 932 004651 933 004654 935 004655 936 004661 937 004663 938 004670 940 004672 941 004676 942 004700 943 004701 946 004721 947 004722 950 004723 952 004732 953 004734 956 004754 957 004755 961 004756 963 004757 964 004762 965 004764 966 004766 967 004771 968 004773 969 004775 970 004777 971 005000 973 005001 981 005002 982 005005 983 005017 984 005021 985 005033 986 005036 988 005053 989 005056 990 005061 992 005064 993 005066 994 005070 995 005072 996 005075 997 005100 998 005102 999 005104 1001 005111 1002 005114 1003 005116 1004 005120 1006 005125 1008 005131 1009 005135 1010 005140 1011 005142 1012 005146 1013 005150 1016 005152 1017 005156 1018 005163 1019 005166 1020 005170 1025 005172 1028 005200 1030 005203 1031 005210 1032 005212 1033 005215 1034 005217 1035 005222 1038 005224 1040 005230 1045 005233 1046 005234 1049 005235 1054 005236 1055 005240 1056 005242 1057 005245 1058 005247 1059 005264 1060 005266 1061 005277 1063 005300 1064 005301 ----------------------------------------------------------- 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