COMPILATION LISTING OF SEGMENT hc_load_mpc Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1022.4 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 6* * * 7* *********************************************************** */ 8 9 /* format: style4,indattr,ifthenstmt,ifthen,idind35,^indcomtxt */ 10 11 hc_load_mpc: procedure (MPC_chanid, FW_seg_ptr, FW_seg_length, Reason, Code); 12 13 /* HC_LOAD_MPC -- given a chanid and firmware segment, */ 14 /* use io_manager or IOI to boot an mpc */ 15 /* Modified for urc support, Keith Loepere 1/84 */ 16 /* Modified for test_controller, Keith Loepere 3/84 */ 17 /* Modified for IMU power off retries, Paul Farley 7/84 */ 18 /* Modified to not hang when supplied a non-existant MPC, Keith Loepere, 3/85 */ 19 20 /****^ HISTORY COMMENTS: 21* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 22* audit(86-02-25,Coppola), install(86-03-21,MR12.0-1033): 23* extend POF retries to 20 seconds, (add POF to test_controller entry). 24* 2) change(86-03-27,Farley), approve(86-07-18,MCR7471), 25* audit(86-08-18,Fawcett), install(86-10-20,MR12.0-1189): 26* Convert to use IOI when necessary, now that it is at BCE. 27* 3) change(86-07-07,Farley), approve(86-07-18,MCR7471), 28* audit(86-08-18,Fawcett), install(86-10-20,MR12.0-1189): 29* Changed to check DAU after firmware load to see if really operational. DAU 30* continues to do initialization after good FW load terminate, so OPI may 31* not be up yet. 32* 4) change(86-08-14,Farley), approve(86-10-24,MCR7529), 33* audit(86-10-28,Fawcett), install(86-10-28,MR12.0-1200): 34* Extended post firmware load status test to ALL DISK MPCs, as it has been 35* found that they all have the timing window, but very small. 36* 5) change(87-05-06,Farley), approve(87-07-07,MCR7725), 37* audit(87-07-09,Rauschelbach), install(87-07-15,MR12.1-1041): 38* Corrected the placement of port_mask in the io_buffer. Was getting 13/03 39* (check sum errors) from the URP MPCs. Also changed the "Data" structure in 40* BOOT_SECTION to be zero based, since "fw_seg" is zero based. 41* 6) change(87-05-29,Farley), approve(87-07-07,MCR7725), 42* audit(87-07-09,Rauschelbach), install(87-07-15,MR12.1-1041): 43* Changed to only use io_buffer (removed all references to dcw_list). Now 44* have IO_buf_data_wds variable to define the size of the io_buffer. 45* 7) change(88-02-23,Farley), approve(88-02-23,MCR7793), 46* audit(88-02-24,Fawcett), install(88-03-01,MR12.2-1029): 47* Changed the DISK_MPC procedure to return TRUE if no MPC card is found, 48* when the initialization state is 1 (in BCE @ collection 1). This is 49* because very early in the boot cycle there is no MPC card, but a wait is 50* still needed for the disk mpc. 51* END HISTORY COMMENTS */ 52 53 dcl Code fixed bin (35) parameter; 54 dcl FW_seg_length fixed bin (18) parameter; 55 dcl FW_seg_lengths (*) fixed bin (18) parameter; 56 dcl FW_seg_ptr pointer parameter; 57 dcl FW_seg_ptrs (*) ptr parameter; 58 dcl MPC_chanid char (8) aligned parameter; 59 dcl Reason character (*) parameter; 60 61 dcl EIGHT_PAGES fixed bin init (8192) static options (constant); 62 dcl FIVE_SECOND fixed bin (71) init (5000000) static options (constant); 63 dcl HALF_SECOND fixed bin (71) init (500000) static options (constant); 64 dcl MPCW character (4) aligned init ("MPCw") internal static options (constant); 65 dcl ONE_SECOND fixed bin (71) init (1000000) static options (constant); 66 dcl PRIV bit (1) aligned init ("1"b) static options (constant); 67 dcl TEST_CONTROLLER_EVENT char (4) init ("tsdc") static options (constant); 68 dcl TWENTY_SECOND fixed bin (71) init (20000000) static options (constant); 69 dcl ZERO_PAGES fixed bin init (0) static options (constant); 70 71 dcl FWID character (8); 72 dcl FWOVERLAY character (8); 73 dcl FWREV character (8); 74 dcl IOI_attached bit (1); 75 dcl IOI_chnl fixed bin (7); 76 dcl IOI_event fixed bin (71); 77 dcl IOI_index fixed bin; 78 dcl IOI_iom fixed bin (3); 79 dcl IOI_pcw bit (36) aligned; 80 dcl IO_buf_data_wds fixed bin; 81 dcl IO_buf_wired bit (1); 82 dcl MPC_name char (8) aligned; 83 dcl astep pointer; 84 dcl control_store_length fixed bin (18); 85 dcl control_store_ptr pointer; 86 dcl event fixed bin (35); 87 dcl finish fixed bin (71); 88 dcl fw_overlay fixed bin; 89 dcl fw_seg_count fixed bin; 90 dcl fw_seg_length fixed bin (18); 91 dcl fw_seg_lengths_ptr ptr; 92 dcl fw_seg_num fixed bin; 93 dcl fw_seg_ptr ptr; 94 dcl fw_seg_ptrs_ptr ptr; 95 dcl groupx fixed bin; 96 dcl 1 ima aligned like io_manager_arg; 97 dcl io_buffer_ptr pointer; 98 dcl max_wait fixed bin (71); 99 dcl needs_booting (2:17) bit (1); /* overlay for this la hasn't been booted (org of 2 since "la" 1 is main firmware) */ 100 dcl portx fixed bin; /* mpc card port index */ 101 dcl read_write bit (1) aligned; 102 dcl read_write_length fixed bin (18); 103 dcl read_write_ptr pointer; 104 dcl time fixed bin (71); 105 106 dcl fw_seg (0:fw_seg_length) bit (36) based (fw_seg_ptr); 107 dcl fw_seg_lengths (fw_seg_count) fixed bin (18) based (fw_seg_lengths_ptr); 108 dcl fw_seg_ptrs (fw_seg_count) ptr based (fw_seg_ptrs_ptr); 109 dcl 1 io_buffer aligned based (io_buffer_ptr), 110 /* The ioi workspace */ 111 2 idcw bit (36), 112 2 dcw (2) bit (36), 113 2 pad (5) bit (36), 114 2 status like istat, /* mod-8 */ 115 2 port_mask bit (36), /* Urmpc port mask for device firmware */ 116 /* NOTE: port_mask must be just prior to data */ 117 2 data (IO_buf_data_wds) bit (36); 118 119 dcl absadr entry (ptr, fixed bin (35)) returns (fixed bin (26)); 120 dcl bcd_to_ascii_ entry (bit (*), character (*)); 121 dcl config_$find entry (char (4) aligned, ptr); 122 dcl get_ptrs_$given_segno entry (fixed bin (15), pointer); 123 dcl io_chnl_util$name_to_iom 124 entry (char (8) aligned, fixed bin (3), fixed bin (7), fixed bin (35)); 125 dcl ioa_ entry options (variable); 126 dcl ioa_$rsnnl entry options (variable); 127 dcl ioi_assignment$assign 128 entry (fixed bin, char (*) aligned, fixed bin (71), bit (1) aligned, fixed bin (35)); 129 dcl ioi_assignment$unassign 130 entry (fixed bin, fixed bin (35)); 131 dcl ioi_connect entry (fixed bin, fixed bin (18), fixed bin (35)); 132 dcl ioi_connect$ioi_connect_pcw entry (fixed bin, fixed bin (18), bit (36) aligned, fixed bin (35)); 133 dcl ioi_set$channel_required 134 entry (fixed bin, fixed bin (3), fixed bin (7), fixed bin (35)); 135 dcl ioi_set$max_workspace 136 entry (fixed bin, fixed bin (18), fixed bin (35)); 137 dcl ioi_set$status entry (fixed bin, fixed bin (18), fixed bin (8), fixed bin (35)); 138 dcl ioi_set$workspace entry (fixed bin, ptr, fixed bin (18), fixed bin (35)); 139 dcl pc_abs$unwire_abs entry (ptr, fixed bin (9), fixed bin (35)); 140 dcl pc_abs$wire_abs_contig entry (ptr, fixed bin (9), fixed bin (9), fixed bin (35)); 141 dcl pxss$addevent entry (fixed bin (35)); 142 dcl pxss$notify entry; 143 dcl pxss$wait entry; 144 dcl syserr entry options (variable); 145 146 dcl cleanup condition; 147 148 dcl error_table_$bad_arg fixed bin (35) external static; 149 dcl error_table_$bad_channel fixed bin (35) external static; 150 dcl error_table_$device_not_active fixed bin (35) external static; 151 dcl error_table_$io_no_permission fixed bin (35) ext static; 152 dcl error_table_$seg_not_found fixed bin (35) ext static; 153 dcl error_table_$timeout fixed bin (35) external static; 154 dcl sys_info$initialization_state fixed bin external static; 155 156 dcl (addr, addrel, baseno, binary, bin, bit, clock, dimension, divide, lbound, 157 hbound, max, min, null, rel, size, string, substr, unspec) builtin; 158 159 fw_seg_count = 1; 160 fw_seg_ptrs_ptr = addr (FW_seg_ptr); 161 fw_seg_lengths_ptr = addr (FW_seg_length); 162 go to join; 163 164 urc: entry (MPC_chanid, FW_seg_ptrs, FW_seg_lengths, Reason, Code); 165 166 fw_seg_count = dimension (FW_seg_ptrs, 1); 167 fw_seg_ptrs_ptr = addr (FW_seg_ptrs); 168 fw_seg_lengths_ptr = addr (FW_seg_lengths); 169 170 join: 171 Code = 0; 172 Reason = ""; 173 needs_booting (*) = "1"b; 174 175 /***** ATTACH THE MPC ******/ 176 177 unspec (ima) = ""b; 178 unspec (event) = unspec (MPCW); 179 ima.ptp, ima.dcw_pair_ptr = null; 180 io_buffer_ptr = null; 181 IOI_attached = "0"b; 182 IOI_pcw = ""b; 183 IO_buf_wired = ""b; 184 IO_buf_data_wds = EIGHT_PAGES; /* Most that can be loaded with 2 DCW's */ 185 on cleanup call CLEANUP; 186 187 call io_manager$assign (ima.chx, MPC_chanid, pxss$notify, event, io_status_word_ptr, Code); 188 if Code ^= 0 then 189 if Code = error_table_$io_no_permission then do; /* iom_data.per_device.in_use = "1"b */ 190 call IOI_ATTACH; 191 if Code ^= 0 then return; 192 IOI_attached = "1"b; 193 end; 194 else return; 195 196 if IOI_attached then pcwp = addr (IOI_pcw); 197 else pcwp = addr (ima.pcw); 198 pcw.code = "7"b3; 199 pcw.mask = "1"b; 200 pcw.control = "11"b; 201 202 if ^IOI_attached then do; 203 allocate io_buffer set (io_buffer_ptr); 204 if sys_info$initialization_state > 1 /* guaranteed A-W-C in collection 1 */ then do; 205 call get_ptrs_$given_segno (binary (baseno (io_buffer_ptr), 15), astep); 206 call pc_abs$wire_abs_contig (astep, divide (bin (rel (io_buffer_ptr), 18), 1024, 9, 0), 207 divide (1023 + size (io_buffer), 1024, 9, 0), Code); 208 if Code ^= 0 then call syserr (CRASH, "hc_load_mpc: Could not abs_wire buffer."); 209 IO_buf_wired = "1"b; 210 end; 211 end; 212 213 unspec (io_buffer) = ""b; 214 215 idcwp = addr (io_buffer.idcw); 216 idcw.code = "7"b3; 217 idcw.chan_cmd = "02"b3; 218 219 if IOI_attached then call IOI_DC_RESET; 220 else do; 221 ima.listp = addr (io_buffer.idcw); 222 223 call CONNECT_NO_WAIT; /* we get no status back */ 224 end; 225 226 /* Now we need to spin for a second. How long is that ? */ 227 228 finish = clock () + ONE_SECOND; /* set 1 sec timer */ 229 max_wait = clock () + TWENTY_SECOND; /* set 20 second timer */ 230 231 do while (clock () < finish); /* TickTock */ 232 end; 233 234 /**** So much for the DC_RESET/BTLT phase */ 235 236 do fw_seg_num = 1 to fw_seg_count; 237 fw_seg_ptr = fw_seg_ptrs (fw_seg_num); 238 fw_seg_length = fw_seg_lengths (fw_seg_num); 239 if fw_seg_ptr = null then go to next_overlay; 240 241 if fw_seg (fw_seg_length) ^= MPCBOT /* small gullibility check */ then do; 242 Code = error_table_$bad_arg; /* ?? */ 243 go to RETURN; 244 end; 245 246 /**** the - 1, in the following line, is there since we are starting 247* at the last word of the structure, not the word afterwards */ 248 249 trailer_ptr = addrel (addr (fw_seg (fw_seg_length)), -(size (fw_trailer) - 1)); 250 251 unspec (io_buffer) = ""b; 252 253 control_store_ptr = fw_seg_ptr; 254 if fw_seg_num > 1 then do; /* urc overlays */ 255 if ^needs_booting (fw_seg_num) then go to next_overlay; 256 io_buffer.port_mask = "0"b; 257 do fw_overlay = fw_seg_num to fw_seg_count; 258 if needs_booting (fw_overlay) & (fw_seg_ptr = fw_seg_ptrs (fw_overlay)) then do; 259 substr (io_buffer.port_mask, fw_overlay, 1) = "1"b; /* this la uses this overlay */ 260 needs_booting (fw_overlay) = "0"b; 261 end; 262 end; 263 control_store_length = fw_seg_length - 9; 264 read_write_ptr = null; 265 read_write = "0"b; 266 end; 267 else if fw_trailer.rw_start = 0 then do; 268 control_store_length = fw_seg_length - 9; 269 read_write_ptr = null; 270 read_write = "0"b; 271 end; 272 else do; 273 read_write = "1"b; 274 control_store_length = fw_trailer.rw_start; 275 read_write_ptr = addr (fw_seg (fw_trailer.rw_start)); 276 read_write_length = fw_seg_length - fw_trailer.rw_start - 9; /* -10 + 1, actually */ 277 end; 278 279 /* We will assume correct checksum in this implementation. */ 280 281 call bcd_to_ascii_ (fw_trailer.id_name, FWID); 282 call bcd_to_ascii_ (fw_trailer.rev_level, FWREV); 283 call bcd_to_ascii_ (fw_trailer.overlay, FWOVERLAY); 284 285 if sys_info$initialization_state <= 1 then 286 call ioa_ ("hc_load_mpc: Booting channel ^a with ^a Revision ^a^[ Overlay ^a^;^s^].", MPC_chanid, 287 FWID, substr (FWREV, 5, 2), fw_seg_num ^= 1, substr (FWOVERLAY, 1, 4)); 288 else call syserr (ANNOUNCE, "hc_load_mpc: Booting channel ^a with ^a Revision ^a^[ Overlay ^a^;^s^].", 289 MPC_chanid, FWID, substr (FWREV, 5, 2), fw_seg_num ^= 1, substr (FWOVERLAY, 1, 4)); 290 291 /**** Time to do the actual load */ 292 293 idcwp = addr (io_buffer.idcw); 294 idcw.code = "7"b3; 295 296 if fw_seg_num = 1 then do; 297 idcw.command = "10"b3; 298 end; 299 else do; /* urc overlay */ 300 idcw.command = "36"b3; 301 idcw.device = "01"b3; 302 idcw.chan_cmd = "40"b3; 303 end; 304 call BOOT_SECTION ("Control Store", control_store_ptr, control_store_length, fw_seg_num ^= 1); 305 306 if read_write then do; 307 unspec (io_buffer) = ""b; 308 idcwp = addr (io_buffer.idcw); 309 idcw.code = "7"b3; 310 idcw.command = "11"b3; 311 call BOOT_SECTION ("Read Write", read_write_ptr, read_write_length, "0"b); 312 end; 313 next_overlay: 314 end; 315 316 if DISK_MPC () /* special test for disk mpcs */ 317 then call TEST_MPC (TWENTY_SECOND); 318 319 RETURN: 320 call CLEANUP; 321 return; 322 323 BOOT_SECTION: procedure (Name, Data_ptr, Data_length, Urc); 324 325 dcl Data_length fixed bin (18) parameter; 326 dcl Data_ptr ptr parameter; 327 dcl Name char (*) parameter; 328 dcl Urc bit (1) aligned parameter; 329 330 dcl Data (0:Data_length) bit (36) based; 331 332 dcl data_absadr fixed bin (26); 333 dcl tally_length fixed bin (12); 334 dcl to_do fixed bin; 335 336 string (ima.pcw) = ""b; 337 338 addr (io_buffer.data) -> Data = Data_ptr -> Data; /* Copy to low 256 K */ 339 340 dcwp = addr (io_buffer.dcw (1)); 341 342 if Urc then do; 343 to_do = Data_length + 1; 344 data_absadr = absadr (addr (io_buffer.port_mask), (0)); 345 end; 346 else do; 347 to_do = Data_length; 348 data_absadr = absadr (addr (io_buffer.data), (0)); 349 end; 350 if data_absadr + to_do > 1024 * 256 then call syserr (CRASH, "hc_load_mpc: data buffer not in low 256K"); 351 if IOI_attached then data_absadr = data_absadr - absadr (addr (io_buffer), (0)); 352 /* relatize for IOI */ 353 do while (to_do > 0); 354 string (dcw) = ""b; 355 dcw.address = bit (bin (data_absadr, 18), 18); 356 tally_length = min (to_do, 4096); 357 to_do = to_do - tally_length; 358 data_absadr = data_absadr + tally_length; 359 if tally_length = 4096 then tally_length = 0; 360 dcw.tally = bit (tally_length, 12); 361 dcw.type = "01"b; /* IOTP */ 362 if to_do > 0 then dcwp = addr (io_buffer.dcw (2)); 363 end; 364 dcw.type = "00"b; /* IOTD */ 365 366 /***** The buffer is set up */ 367 368 retry_the_connect: 369 ima.listp = addr (io_buffer.idcw); 370 371 unspec (io_status_word) = ""b; 372 if IOI_attached then call IOI_CONNECT; 373 else call CONNECT; 374 375 if ^io_status_word.t then do; 376 Code = error_table_$timeout; 377 Reason = Name; 378 go to RETURN; 379 end; 380 if io_status_word.power then do; 381 if clock () < max_wait then do; /* retry power offs for awhile */ 382 finish = clock () + HALF_SECOND; /* 1/2 second pause */ 383 do while (clock () < finish); /* TickTock */ 384 end; 385 goto retry_the_connect; 386 end; 387 Code = -1; 388 Reason = "Power off status booting " || Name; 389 go to RETURN; 390 end; 391 392 if (io_status_word.major ^= ""b) | (io_status_word.sub ^= ""b) | (io_status_word.channel_stat ^= ""b) 393 | (io_status_word.central_stat ^= ""b) then do; 394 call ioa_$rsnnl ("IOM status ^.3b booting ^a.", Reason, (0), string (io_status_word), Name); 395 Code = -2; 396 go to RETURN; 397 end; 398 399 return; 400 end BOOT_SECTION; 401 402 CONNECT: procedure; 403 404 dcl wait_flag bit (1) aligned; 405 406 wait_flag = "1"b; 407 go to COMMON; 408 409 CONNECT_NO_WAIT: entry; 410 411 wait_flag = "0"b; 412 413 COMMON: 414 unspec (io_status_word) = ""b; 415 416 call io_manager$connect_abs (ima); 417 418 if ^wait_flag then return; 419 420 do while (^io_status_word.t); /* Noel swears something will come back */ 421 call pxss$addevent (event); 422 call pxss$wait; 423 end; 424 return; 425 end CONNECT; 426 427 CLEANUP: 428 procedure; 429 430 if IOI_attached then call IOI_DETACH; 431 else do; 432 if ima.chx ^= 0 then call io_manager$unassign (ima.chx, (0)); 433 if io_buffer_ptr ^= null then do; 434 if IO_buf_wired then call pc_abs$unwire_abs (astep, divide (bin (rel (io_buffer_ptr), 18), 1024, 9, 0), 435 divide (1023 + size (io_buffer), 1024, 9, 0)); 436 free io_buffer; 437 end; 438 end; 439 return; 440 end CLEANUP; 441 442 /**** Procedure to locate the "mpc" card that has a BASE iom/channel equal 443* to the one being loaded. Once found, if the name = "mspX" TRUE is 444* returned. Else if the system is in an early state then TRUE is 445* returned, else FALSE. */ 446 447 DISK_MPC: 448 procedure returns (bit (1)); 449 450 if ^IOI_attached then call io_chnl_util$name_to_iom (MPC_chanid, IOI_iom, IOI_chnl, Code); 451 /* break down chanid if not already done */ 452 mpc_cardp = null; 453 call config_$find (MPC_CARD_WORD, mpc_cardp); 454 do while (mpc_cardp ^= null); 455 do portx = 1 to hbound (mpc_card.port, 1) while (mpc_card.iom (portx) ^= -1); 456 if mpc_card.iom (portx) = IOI_iom & mpc_card.chan (portx) <= IOI_chnl 457 & mpc_card.chan (portx) + mpc_card.nchan (portx) > IOI_chnl then do; 458 if substr (mpc_card.name, 1, 3) = "msp" then return ("1"b); 459 else return (""b); 460 end; 461 end; 462 call config_$find (MPC_CARD_WORD, mpc_cardp); 463 end; 464 if sys_info$initialization_state <= 1 then return ("1"b); 465 else return (""b); 466 end DISK_MPC; 467 468 test_controller: entry (MPC_chanid, Code); 469 470 unspec (ima) = ""b; 471 IOI_attached = ""b; 472 IO_buf_wired = ""b; /* won't use data area, so don't need to wire */ 473 IO_buf_data_wds = ZERO_PAGES; /* no data required */ 474 unspec (event) = unspec (TEST_CONTROLLER_EVENT); 475 call io_manager$assign (ima.chx, MPC_chanid, pxss$notify, event, io_status_word_ptr, Code); 476 if Code ^= 0 then 477 if Code = error_table_$io_no_permission then do; /* iom_data.per_device.in_use = "1"b */ 478 call IOI_ATTACH; 479 if Code ^= 0 then return; 480 IOI_attached = "1"b; 481 end; 482 else return; 483 484 io_buffer_ptr = null (); 485 486 on cleanup call CLEANUP; 487 488 if ^IOI_attached then allocate io_buffer set (io_buffer_ptr); 489 490 call TEST_MPC (FIVE_SECOND); 491 492 call CLEANUP; 493 return; 494 495 /**** Procedure to issue request status connects to an MPC to check to 496* see if it is operational. It will retry power-off statuses for upto 497* P_pof_retry_time micro seconds. */ 498 499 TEST_MPC: 500 procedure (P_pof_retry_time); 501 dcl P_pof_retry_time fixed bin (71) parameter; 502 503 max_wait = clock () + P_pof_retry_time; /* set POF timer */ 504 505 try_test_connect: 506 unspec (io_buffer) = ""b; 507 idcwp = addr (io_buffer.idcw); 508 idcw.command = "40"b3; /* request status */ 509 idcw.code = "7"b3; 510 idcw.chan_cmd = "02"b3; /* nondata */ 511 512 ima.ptp, ima.dcw_pair_ptr = null (); 513 ima.listp = addr (io_buffer.idcw); 514 515 unspec (io_status_word) = ""b; 516 517 if IOI_attached then call IOI_CONNECT; 518 else do; 519 call io_manager$connect_abs (ima); 520 521 time = clock (); 522 do while (^io_status_word.t & (clock () < (time + ONE_SECOND))); 523 end; /* a second should be enough to wait for status */ 524 end; 525 526 if io_status_word.t & io_status_word.power & (clock () < max_wait) then goto try_test_connect; /* retry POFs */ 527 528 Code = error_table_$device_not_active; /* assume for now */ 529 if io_status_word.t then 530 if io_status_word.power = "0"b & io_status_word.major = "0"b4 & io_status_word.sub = "00"b3 531 & io_status_word.central_stat = "0"b3 & io_status_word.channel_stat = "0"b3 then Code = 0; 532 return; 533 end TEST_MPC; 534 535 /**** Procedure to attach the MPC though IOI. This is required after 536* ioi_init has assigned all the IOM channels to IOI. */ 537 538 IOI_ATTACH: 539 procedure; 540 541 call SETUP_IOI_POSTING; 542 if Code ^= 0 then return; 543 544 unspec (IOI_event) = ""b; 545 substr (unspec (IOI_event), 37, 36) = unspec (event); 546 call io_chnl_util$name_to_iom (MPC_chanid, IOI_iom, IOI_chnl, Code); 547 /* break down channel ID */ 548 if Code ^= 0 then return; 549 MPC_name = FIND_MPC_NAME (); /* find subsystem name for this channel */ 550 if MPC_name = "" then do; /* oops, none found */ 551 Code = error_table_$bad_channel; 552 return; 553 end; 554 call ioi_assignment$assign (IOI_index, MPC_name, IOI_event, PRIV, Code); 555 if Code ^= 0 then return; 556 557 call ioi_set$max_workspace (IOI_index, size (io_buffer), Code); 558 if Code ^= 0 then goto error_detach; 559 560 call ioi_set$workspace (IOI_index, io_buffer_ptr, size (io_buffer), Code); 561 /* create the workspace */ 562 if Code ^= 0 then goto error_detach; 563 564 call ioi_set$channel_required (IOI_index, IOI_iom, IOI_chnl, Code); 565 if Code ^= 0 then goto error_detach; 566 567 call ioi_set$status (IOI_index, bin (rel (addr (io_buffer.status)), 18), 1, Code); 568 if Code ^= 0 then goto error_detach; 569 570 io_status_word_ptr = addr (io_buffer.status.iom_stat); 571 return; 572 573 /**** Entry to detach the MPC. */ 574 575 IOI_DETACH: 576 entry; 577 578 error_detach: 579 call ioi_assignment$unassign (IOI_index, (0)); /* don't worry about error code */ 580 ioi_post_area.number = 0; /* reset IOI posting */ 581 return; 582 end IOI_ATTACH; 583 584 /* Procedure to issue the firmware load connect via IOI. */ 585 586 IOI_CONNECT: 587 procedure; 588 dcl send_pcw_to_IOI bit (1); 589 590 send_pcw_to_IOI = ""b; 591 goto connect_common; 592 593 /**** Entry to issue the mask/reset (pcw) connect. */ 594 595 IOI_DC_RESET: 596 entry; 597 send_pcw_to_IOI = "1"b; 598 599 connect_common: 600 call SETUP_POST_BUF; 601 if send_pcw_to_IOI 602 then call ioi_connect$ioi_connect_pcw (IOI_index, bin (rel (addr (io_buffer.idcw)), 18), IOI_pcw, Code); 603 /* Do mask/reset connect */ 604 else call ioi_connect (IOI_index, bin (rel (addr (io_buffer.idcw)), 18), Code); /* Do normal connect */ 605 if Code ^= 0 then return; 606 call WAIT_FOR_STATUS; 607 return; 608 end IOI_CONNECT; 609 610 /**** Procedure to locate either the "prph" or "chnl" card that has a 611* BASE iom/channel equal to the one desired. Once found the subsystem 612* name concatinated with "_00" is returned. */ 613 614 FIND_MPC_NAME: 615 procedure returns (char (8)); 616 617 prph_cardp = null; 618 call config_$find (PRPH_CARD_WORD, prph_cardp); 619 do while (prph_cardp ^= null); 620 if prph_card.iom = IOI_iom & prph_card.chan = IOI_chnl then do; 621 /* base chnl on this mpc */ 622 return (prph_card.name || "_00"); 623 end; 624 call config_$find (PRPH_CARD_WORD, prph_cardp); 625 end; 626 627 chnl_cardp = null; 628 call config_$find (CHNL_CARD_WORD, chnl_cardp); 629 do while (chnl_cardp ^= null); 630 do groupx = lbound (chnl_card_array.group, 1) to hbound (chnl_card_array.group, 1); 631 if chnl_card.group (groupx).iom = IOI_iom & chnl_card.group (groupx).chan = IOI_chnl then do; 632 /* base chnl on this mpc */ 633 return (chnl_card.name || "_00"); 634 end; 635 end; 636 call config_$find (CHNL_CARD_WORD, chnl_cardp); 637 end; 638 639 return (""); /* Not found.. */ 640 end FIND_MPC_NAME; 641 642 /**** Procedure to locate the IOI posting segment and get it setup for 643* handling the firmware load interrupts. */ 644 645 SETUP_IOI_POSTING: 646 procedure; 647 648 ioi_post_area_ptr = addr (bce_ioi_post_seg$); 649 if ioi_post_area_ptr = null () then do; 650 Code = error_table_$seg_not_found; 651 return; 652 end; 653 unspec (ioi_post_area) = ""b; 654 ioi_post_area.number = 1; 655 Code = 0; 656 return; 657 end SETUP_IOI_POSTING; 658 659 /**** Procedure to setup a posting buffer for an IO that is going to 660* be issued. */ 661 662 SETUP_POST_BUF: 663 procedure; 664 665 666 io_post_buffer_ptr = addr (ioi_post_area.buffer (1)); 667 unspec (io_post_buffer) = ""b; 668 io_post_buffer.ev_chn = IOI_event; 669 io_post_buffer.state = IO_OUTSTANDING; 670 return; 671 end SETUP_POST_BUF; 672 673 /**** Procedure to wait for a terminate interrupt from an I/O connect. */ 674 675 WAIT_FOR_STATUS: 676 procedure; 677 678 io_post_buffer_ptr = addr (ioi_post_area.buffer (1)); 679 do while (io_post_buffer.state ^= IO_COMPLETE); 680 end; 681 return; 682 end WAIT_FOR_STATUS; 683 /* BEGIN include file bce_ioi_post_area.incl.pl1 */ 1 2 1 3 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 1 4 1 5 /****^ HISTORY COMMENTS: 1 6* 1) change(86-07-18,Farley), approve(86-07-18,MCR7439), 1 7* audit(86-08-18,Fawcett), install(86-10-20,MR12.0-1189): 1 8* Area used for posting completion of peripheral i/o for IOI while at BCE. 1 9* END HISTORY COMMENTS */ 1 10 1 11 dcl bce_ioi_post_seg$ aligned external; 1 12 1 13 dcl 1 ioi_post_area aligned based (ioi_post_area_ptr), 1 14 2 number fixed bin, /* buffers currently active */ 1 15 2 pad (7) bit (36), 1 16 2 buffer (0 refer (ioi_post_area.number)) like io_post_buffer; 1 17 1 18 dcl 1 io_post_buffer aligned based (io_post_buffer_ptr), 1 19 2 ev_chn fixed bin (71), /* from dte.ev_chn */ 1 20 2 message fixed bin (71), /* like imess */ 1 21 2 state fixed bin, /* current buffer state */ 1 22 2 pad bit (36); /* pad to even word boundary */ 1 23 1 24 dcl io_post_buffer_ptr ptr; 1 25 dcl ioi_post_area_ptr ptr; 1 26 1 27 /* Buffer State Constants */ 1 28 1 29 dcl IO_OUTSTANDING fixed bin static options (constant) init (1); 1 30 dcl IO_COMPLETE fixed bin static options (constant) init (2); 1 31 dcl WAITING_SPECIAL fixed bin static options (constant) init (3); 1 32 dcl SPECIAL_ARRIVED fixed bin static options (constant) init (4); 1 33 1 34 /* END include file bce_ioi_post_area.incl.pl1 */ 683 684 /* BEGIN INCLUDE FILE ... config_chnl_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 2 2 2 3 dcl chnl_cardp ptr; /* Pointer to a CHNL card. */ 2 4 2 5 dcl 1 chnl_card based (chnl_cardp) aligned, /* CHNL card declaration */ 2 6 2 word char (4), /* "chnl" */ 2 7 2 name char (4), /* subsystem name */ 2 8 2 group (3), /* Channel groups for this subsystem -- 9 fields total */ 2 9 3 iom fixed bin (3), /* IOM number */ 2 10 3 chan fixed bin (8), /* channel number */ 2 11 3 nchan fixed bin, /* number of channels */ 2 12 2 13 2 pad (4) bit (36) aligned, /* pad to 15 fields */ 2 14 2 15 2 type_word aligned, 2 16 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 2 17 3 pad1 bit (4) unaligned, 2 18 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 2 19 2 20 dcl 1 chnl_card_array aligned based (chnl_cardp), /* Overlay for channel group array */ 2 21 2 pad1 (2) bit (36) aligned, 2 22 2 group (min (3, divide (max (0, (chnl_card.n_fields - 1)), 3, 17, 0))), 2 23 3 iom fixed bin (3), /* IOM number */ 2 24 3 chan fixed bin (8), /* Channel number. */ 2 25 3 nchan fixed bin; /* Number of logical channels on this channel. */ 2 26 2 27 dcl CHNL_CARD_WORD char (4) aligned internal static options (constant) init ("chnl"); 2 28 2 29 /* END INCLUDE FILE ... config_chnl_card.incl.pl1 */ 684 685 /* BEGIN INCLUDE FILE ... config_mpc_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 3 2 3 3 dcl mpc_cardp ptr; /* Pointer to an MPC card. */ 3 4 3 5 dcl 1 mpc_card aligned based (mpc_cardp), 3 6 2 word char (4), /* "mpc" */ 3 7 2 name char (4), /* Name of this MPC - e.g., "mspa" */ 3 8 2 model fixed bin, /* Model of this MPC - e.g., 601. */ 3 9 2 port (4), /* Per port information. 12 fields total */ 3 10 3 iom fixed bin (3), /* IOM number */ 3 11 3 chan fixed bin (8), /* Channel number. */ 3 12 3 nchan fixed bin, /* Number of logical channels on this channel. */ 3 13 3 14 2 type_word aligned, 3 15 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 3 16 3 pad1 bit (4) unaligned, 3 17 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 3 18 3 19 dcl 1 mpc_card_array aligned based (mpc_cardp), /* Overlay for MPC port array */ 3 20 2 pad1 (3) bit (36) aligned, 3 21 2 port (divide (max (0, (mpc_card.n_fields - 2)), 3, 17, 0)), 3 22 3 iom fixed bin (3), /* IOM number */ 3 23 3 chan fixed bin (8), /* Channel number. */ 3 24 3 nchan fixed bin; /* Number of logical channels on this channel. */ 3 25 3 26 dcl MPC_CARD_WORD char (4) aligned internal static options (constant) init ("mpc"); 3 27 3 28 /* END INCLUDE FILE ... config_mpc_card.incl.pl1 */ 685 686 /* BEGIN INCLUDE FILE ... config_prph_card.incl.pl1 ... 11/27/80 W. Olin Sibert */ 4 2 4 3 dcl prph_cardp ptr; /* Pointer to a PRPH card. */ 4 4 4 5 dcl 1 prph_card based (prph_cardp) aligned, /* PRPH card declaration */ 4 6 2 word char (4), /* "prph" */ 4 7 2 name char (4), /* subsystem name */ 4 8 2 iom fixed bin (3), /* IOM number */ 4 9 2 chan fixed bin (8), /* channel number */ 4 10 2 model fixed bin, /* model number */ 4 11 2 state char (4), /* ON/OFF state */ 4 12 2 pad (9) bit (36) aligned, /* pad to 15 fields */ 4 13 4 14 2 type_word aligned, 4 15 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 4 16 3 pad1 bit (4) unaligned, 4 17 3 n_fields fixed bin (4) unsigned unaligned; /* number of fields used on card */ 4 18 4 19 dcl PRPH_CARD_WORD char (4) aligned internal static options (constant) init ("prph"); 4 20 4 21 /* END INCLUDE FILE ... config_prph_card.incl.pl1 */ 686 687 /* Begin include file firmware_trailer.incl.pl1 BIM 8/30 */ 5 2 /* Modified 1/84 Keith Loepere for firmware overlay name */ 5 3 /* Interesting data at the end of the firmware file */ 5 4 /* format: style3 */ 5 5 5 6 dcl trailer_ptr ptr; 5 7 dcl 1 fw_trailer based (trailer_ptr) aligned, /* template for an mpc deck id block */ 5 8 ( 2 id_name bit (36), /* BCD id name */ 5 9 2 rev_level bit (36), /* BCD revision */ 5 10 2 dk_purpose bit (36), /* BCD deck purpose */ 5 11 2 overlay bit (36), /* BCD overlay name (first 4 chars) */ 5 12 2 rw_start fixed bin (18) unsigned unaligned, 5 13 /* offset of read/write overlay */ 5 14 2 pad2 bit (18) unaligned, 5 15 2 hx_cs_st fixed bin (18) unsigned unaligned, 5 16 /* rel. start of control store in hex words */ 5 17 2 hx_rw_st fixed bin (18) unsigned unaligned, 5 18 /* rel. start of read/write overlay in hex words */ 5 19 2 pad3 (3) bit (36), 5 20 2 mpcbot bit (36) 5 21 ) unaligned; /* = "MPCBOT" in BCD */ 5 22 5 23 dcl MPCBOT bit (36) int static options (constant) init ("444723224663"b3); /* BCD for "MPCBOT" */ 5 24 5 25 /* End include file firmware_trailer.incl.pl1 */ 687 688 /* Begin include file io_manager_dcls.incl.pl1 */ 6 2 6 3 /* Written by Charles Hornig, late 1980 and early 1981 */ 6 4 /* Modified for MR10 interface, February 1982 */ 6 5 /* Channel reconfiguration entries added by Chris Jones, January 1984 */ 6 6 6 7 /* These entries are callable on unwired stacks. */ 6 8 6 9 /* call io_manager$assign (Chx, Channel, Handler, Index, Statusp, Code); */ 6 10 dcl io_manager$assign 6 11 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 6 12 fixed bin (35), ptr, fixed bin (35)); 6 13 6 14 /* call io_manager$assign_add (Chx, Channel, Handler, Index, Statusp, Code); */ 6 15 dcl io_manager$assign_add 6 16 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 6 17 fixed bin (35), ptr, fixed bin (35)); 6 18 6 19 /* call io_manager$unassign (Chx, Code); */ 6 20 dcl io_manager$unassign entry (fixed bin (35), fixed bin (35)); 6 21 6 22 /* call io_manager$unassign_delete (Chx, Code); */ 6 23 dcl io_manager$unassign_delete entry (fixed bin (35), fixed bin (35)); 6 24 6 25 /* call io_manager$connect (Io_manager_arg); */ 6 26 dcl io_manager$connect entry (1 aligned like io_manager_arg); 6 27 6 28 /* call io_manager$connect_abs (Io_manager_arg); */ 6 29 dcl io_manager$connect_abs entry (1 aligned like io_manager_arg); 6 30 6 31 /* call io_manager$connect_direct (Io_manager_arg); */ 6 32 dcl io_manager$connect_direct entry (1 aligned like io_manager_arg); 6 33 6 34 /* call io_manager$get_status (Chx, Io_status_entry_ptr); */ 6 35 dcl io_manager$get_status entry (fixed bin (35), ptr); 6 36 6 37 /* call io_manager$mask (Chx); */ 6 38 dcl io_manager$mask entry (fixed bin (35)); 6 39 6 40 /* call io_manager$ignore_interrupt (); */ 6 41 dcl io_manager$ignore_interrupt entry (fixed bin (35), fixed bin (3), bit (36) aligned); 6 42 6 43 /* call io_manager$data_tdcw (Io_manager_arg); 6 44* dcl io_manager$data_tdcw entry (1 aligned like io_manager_arg); 6 45* 6 46* /* call io_manager$workspace_tdcw (Io_manager_arg); */ 6 47 dcl io_manager$workspace_tdcw entry (1 aligned like io_manager_arg); 6 48 6 49 dcl io_manager_arg_ptr ptr; 6 50 dcl 1 io_manager_arg aligned based (io_manager_arg_ptr), 6 51 2 chx fixed bin (35), /* channel index from io_manager$assign */ 6 52 2 bound fixed bin (19), /* workspace size */ 6 53 2 pcw bit (36) aligned, /* or IDCW */ 6 54 2 listx fixed bin (18), /* DCW list offset */ 6 55 2 ptp ptr, /* page table pointer */ 6 56 2 listp ptr, /* DCW list pointer */ 6 57 2 dcw_pair_ptr ptr; /* DCW pair pointer */ 6 58 6 59 /* End include file io_manager_dcls.incl.pl1 */ 688 689 /* Begin include file io_status_word.incl.pl1 */ 7 2 /* Made from iom_stat.incl.pl1 by C. Hornig */ 7 3 7 4 dcl io_status_word_ptr ptr; 7 5 dcl 1 io_status_word based (io_status_word_ptr) aligned, /* I/O status information */ 7 6 ( 7 7 2 t bit (1), /* set to "1"b by IOM */ 7 8 2 power bit (1), /* non-zero if peripheral absent or power off */ 7 9 2 major bit (4), /* major status */ 7 10 2 sub bit (6), /* substatus */ 7 11 2 eo bit (1), /* even/odd bit */ 7 12 2 marker bit (1), /* non-zero if marker status */ 7 13 2 soft bit (2), /* software status */ 7 14 2 initiate bit (1), /* initiate bit */ 7 15 2 abort bit (1), /* software abort bit */ 7 16 2 channel_stat bit (3), /* IOM channel status */ 7 17 2 central_stat bit (3), /* IOM central status */ 7 18 2 mbz bit (6), 7 19 2 rcount bit (6) 7 20 ) unaligned; /* record count residue */ 7 21 7 22 /* End include file io_status_word.incl.pl1 */ 689 690 8 2 /* Begin include file ...... ioi_stat.incl.pl1 */ 8 3 /* Last modified 3/24/75 by Noel I. Morris */ 8 4 8 5 dcl isp ptr; /* pointer to status structure */ 8 6 8 7 dcl 1 istat based (isp) aligned, /* I/O Interfacer status structure */ 8 8 2 completion, /* completion flags */ 8 9 (3 st bit (1), /* "1"b if status returned */ 8 10 3 er bit (1), /* "1"b if status indicates error condition */ 8 11 3 run bit (1), /* "1"b if channel still running */ 8 12 3 time_out bit (1)) unal, /* "1"b if time-out occurred */ 8 13 2 level fixed bin (3), /* IOM interrupt level */ 8 14 2 offset fixed bin (18), /* DCW list offset */ 8 15 2 absaddr fixed bin (24), /* absolute address of workspace */ 8 16 2 iom_stat bit (72), /* IOM status */ 8 17 2 lpw bit (72); /* LPW residue */ 8 18 8 19 dcl imp ptr; /* pointer to message structure */ 8 20 8 21 dcl 1 imess based (imp) aligned, /* I/O Interfacer event message structure */ 8 22 (2 completion like istat.completion, /* completion flags */ 8 23 2 pad bit (11), 8 24 2 level bit (3), /* interrupt level */ 8 25 2 offset bit (18), /* DCW list offset */ 8 26 2 status bit (36)) unal; /* first 36 bits of status */ 8 27 8 28 /* End of include file ...... ioi_stat.incl.pl1 */ 8 29 690 691 9 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 9 3 9 4 dcl dcwp ptr, /* pointer to DCW */ 9 5 tdcwp ptr; /* pointer to TDCW */ 9 6 9 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 9 8 (2 address bit (18), /* address for data transfer */ 9 9 2 char_pos bit (3), /* character position */ 9 10 2 m64 bit (1), /* non-zero for mod 64 address */ 9 11 2 type bit (2), /* DCW type */ 9 12 2 tally bit (12)) unal; /* tally for data transfer */ 9 13 9 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 9 15 (2 address bit (18), /* address to transfer to */ 9 16 2 mbz1 bit (4), 9 17 2 type bit (2), /* should be "10"b for TDCW */ 9 18 2 mbz2 bit (9), 9 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 9 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 9 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 9 22 9 23 /* End of include file ...... iom_dcw.incl.pl1 */ 9 24 691 692 10 2 /* Begin include file ...... iom_pcw.incl.pl1 */ 10 3 10 4 dcl pcwp ptr; /* pointer to PCW */ 10 5 10 6 dcl 1 pcw based (pcwp) aligned, /* Peripheral Control Word */ 10 7 (2 command bit (6), /* device command */ 10 8 2 device bit (6), /* device code */ 10 9 2 ext bit (6), /* address extension */ 10 10 2 code bit (3), /* should be "111"b for PCW */ 10 11 2 mask bit (1), /* channel mask bit */ 10 12 2 control bit (2), /* terminate/proceed and marker control bits */ 10 13 2 chan_cmd bit (6), /* type of I/O operation */ 10 14 2 count bit (6), /* record count or control character */ 10 15 2 mbz1 bit (3), 10 16 2 channel bit (6), /* channel number */ 10 17 2 mbz2 bit (27)) unal; 10 18 10 19 dcl idcwp ptr; /* pointer to IDCW */ 10 20 10 21 dcl 1 idcw based (idcwp) aligned, /* Instruction DCW */ 10 22 (2 command bit (6), /* device command */ 10 23 2 device bit (6), /* device code */ 10 24 2 ext bit (6), /* address extension */ 10 25 2 code bit (3), /* should be "111"b for PCW */ 10 26 2 ext_ctl bit (1), /* "1"b if address extension to be used */ 10 27 2 control bit (2), /* terminate/proceed and marker control bits */ 10 28 2 chan_cmd bit (6), /* type of I/O operation */ 10 29 2 count bit (6)) unal; /* record count or control character */ 10 30 10 31 /* End include file ...... iom_pcw.incl.pl1 */ 10 32 692 693 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 11 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 11 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 11 4 11 5 /* This include file has an ALM version. Keep 'em in sync! */ 11 6 11 7 dcl ( 11 8 11 9 /* The following constants define the message action codes. This indicates 11 10*how a message is to be handled. */ 11 11 11 12 SYSERR_CRASH_SYSTEM init (1), 11 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 11 14 11 15 SYSERR_TERMINATE_PROCESS init (2), 11 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 11 17 11 18 SYSERR_PRINT_WITH_ALARM init (3), 11 19 BEEP init (3), /* Beep and print the message on the console. */ 11 20 11 21 SYSERR_PRINT_ON_CONSOLE init (0), 11 22 ANNOUNCE init (0), /* Just print the message on the console. */ 11 23 11 24 SYSERR_LOG_OR_PRINT init (4), 11 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 11 26 11 27 SYSERR_LOG_OR_DISCARD init (5), 11 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 11 29 11 30 11 31 /* The following constants are added to the normal severities to indicate 11 32*different sorting classes of messages. */ 11 33 11 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 11 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 11 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 11 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 11 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 11 39 ) fixed bin internal static options (constant); 11 40 11 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 693 694 695 /* BEGIN MESSAGE DOCUMENTATION 696* 697*Message: 698*hc_load_mpc: Could not abs_wire buffer. 699* 700*S: $crash 701* 702*T: $init 703* 704*M: $err 705* 706*A: $contact 707* 708*Message: 709*hc_load_mpc: Booting channel CHNL with FWID Revision REV 710*hc_load_mpc: Booting channel CHNL with FWID Revision REV Overlay FWOVERLAY 711* 712*S: $info 713* 714*T: $init 715* 716*M: $ignore 717* 718*A: $config 719* 720*Message: 721*hc_load_mpc: data buffer not in low 256K 722* 723*S: $crash 724* 725*T: $init 726* 727*M: $err 728* 729*A: $contact 730* 731* END MESSAGE DOCUMENTATION */ 732 733 end hc_load_mpc; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0800.0 hc_load_mpc.pl1 >spec>install>1110>hc_load_mpc.pl1 683 1 10/21/86 1251.6 bce_ioi_post_area.incl.pl1 >ldd>include>bce_ioi_post_area.incl.pl1 684 2 05/08/81 1853.6 config_chnl_card.incl.pl1 >ldd>include>config_chnl_card.incl.pl1 685 3 05/08/81 1853.6 config_mpc_card.incl.pl1 >ldd>include>config_mpc_card.incl.pl1 686 4 10/31/84 1315.5 config_prph_card.incl.pl1 >ldd>include>config_prph_card.incl.pl1 687 5 07/11/84 0937.3 firmware_trailer.incl.pl1 >ldd>include>firmware_trailer.incl.pl1 688 6 07/11/84 0937.3 io_manager_dcls.incl.pl1 >ldd>include>io_manager_dcls.incl.pl1 689 7 03/27/82 0430.3 io_status_word.incl.pl1 >ldd>include>io_status_word.incl.pl1 690 8 08/17/79 2215.0 ioi_stat.incl.pl1 >ldd>include>ioi_stat.incl.pl1 691 9 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 692 10 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 693 11 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ANNOUNCE 000004 constant fixed bin(17,0) initial dcl 11-7 set ref 288* CHNL_CARD_WORD 000003 constant char(4) initial dcl 2-27 set ref 628* 636* CRASH 000051 constant fixed bin(17,0) initial dcl 11-7 set ref 208* 350* Code parameter fixed bin(35,0) dcl 53 set ref 11 164 170* 187* 188 188 191 206* 208 242* 376* 387* 395* 450* 468 475* 476 476 479 528* 529* 542 546* 548 551* 554* 555 557* 558 560* 562 564* 565 567* 568 601* 604* 605 650* 655* Data based bit(36) array packed unaligned dcl 330 set ref 338* 338 Data_length parameter fixed bin(18,0) dcl 325 ref 323 338 338 338 343 347 Data_ptr parameter pointer dcl 326 ref 323 338 EIGHT_PAGES constant fixed bin(17,0) initial dcl 61 ref 184 FIVE_SECOND 000016 constant fixed bin(71,0) initial dcl 62 set ref 490* FWID 000100 automatic char(8) packed unaligned dcl 71 set ref 281* 285* 288* FWOVERLAY 000102 automatic char(8) packed unaligned dcl 72 set ref 283* 285 285 288 288 FWREV 000104 automatic char(8) packed unaligned dcl 73 set ref 282* 285 285 288 288 FW_seg_length parameter fixed bin(18,0) dcl 54 set ref 11 161 FW_seg_lengths parameter fixed bin(18,0) array dcl 55 set ref 164 168 FW_seg_ptr parameter pointer dcl 56 set ref 11 160 FW_seg_ptrs parameter pointer array dcl 57 set ref 164 166 167 HALF_SECOND 000014 constant fixed bin(71,0) initial dcl 63 ref 382 IOI_attached 000106 automatic bit(1) packed unaligned dcl 74 set ref 181* 192* 196 202 219 351 372 430 450 471* 480* 488 517 IOI_chnl 000107 automatic fixed bin(7,0) dcl 75 set ref 450* 456 456 546* 564* 620 631 IOI_event 000110 automatic fixed bin(71,0) dcl 76 set ref 544* 545 554* 668 IOI_index 000112 automatic fixed bin(17,0) dcl 77 set ref 554* 557* 560* 564* 567* 578* 601* 604* IOI_iom 000113 automatic fixed bin(3,0) dcl 78 set ref 450* 456 546* 564* 620 631 IOI_pcw 000114 automatic bit(36) dcl 79 set ref 182* 196 601* IO_COMPLETE constant fixed bin(17,0) initial dcl 1-30 ref 679 IO_OUTSTANDING constant fixed bin(17,0) initial dcl 1-29 ref 669 IO_buf_data_wds 000115 automatic fixed bin(17,0) dcl 80 set ref 184* 203 206 206 213 251 307 434 434 436 473* 488 505 557 557 560 560 IO_buf_wired 000116 automatic bit(1) packed unaligned dcl 81 set ref 183* 209* 434 472* MPCBOT 000000 constant bit(36) initial packed unaligned dcl 5-23 ref 241 MPCW 000012 constant char(4) initial dcl 64 ref 178 MPC_CARD_WORD 000002 constant char(4) initial dcl 3-26 set ref 453* 462* MPC_chanid parameter char(8) dcl 58 set ref 11 164 187* 285* 288* 450* 468 475* 546* MPC_name 000120 automatic char(8) dcl 82 set ref 549* 550 554* Name parameter char packed unaligned dcl 327 set ref 323 377 388 394* ONE_SECOND 000010 constant fixed bin(71,0) initial dcl 65 ref 228 522 PRIV 000040 constant bit(1) initial dcl 66 set ref 554* PRPH_CARD_WORD 000001 constant char(4) initial dcl 4-19 set ref 618* 624* P_pof_retry_time parameter fixed bin(71,0) dcl 501 ref 499 503 Reason parameter char packed unaligned dcl 59 set ref 11 164 172* 377* 388* 394* TEST_CONTROLLER_EVENT 000006 constant char(4) initial packed unaligned dcl 67 ref 474 TWENTY_SECOND 000004 constant fixed bin(71,0) initial dcl 68 set ref 229 316* Urc parameter bit(1) dcl 328 ref 323 342 ZERO_PAGES constant fixed bin(17,0) initial dcl 69 ref 473 absadr 000010 constant entry external dcl 119 ref 344 348 351 addr builtin function dcl 156 ref 160 161 167 168 196 197 215 221 249 275 293 308 338 340 344 344 348 348 351 351 362 368 507 513 567 567 570 601 601 604 604 648 666 678 addrel builtin function dcl 156 ref 249 address based bit(18) level 2 packed packed unaligned dcl 9-7 set ref 355* astep 000122 automatic pointer dcl 83 set ref 205* 206* 434* baseno builtin function dcl 156 ref 205 205 bcd_to_ascii_ 000012 constant entry external dcl 120 ref 281 282 283 bce_ioi_post_seg$ 000100 external static fixed bin(17,0) dcl 1-11 set ref 648 bin builtin function dcl 156 ref 206 206 355 434 434 567 567 601 601 604 604 binary builtin function dcl 156 ref 205 205 bit builtin function dcl 156 ref 355 360 buffer 10 based structure array level 2 dcl 1-13 set ref 666 678 central_stat 0(21) based bit(3) level 2 packed packed unaligned dcl 7-5 set ref 392 529 chan 4 based fixed bin(8,0) array level 3 in structure "mpc_card" dcl 3-5 in procedure "hc_load_mpc" ref 456 456 chan 3 based fixed bin(8,0) level 2 in structure "prph_card" dcl 4-5 in procedure "hc_load_mpc" ref 620 chan 3 based fixed bin(8,0) array level 3 in structure "chnl_card" dcl 2-5 in procedure "hc_load_mpc" ref 631 chan_cmd 0(24) based bit(6) level 2 packed packed unaligned dcl 10-21 set ref 217* 302* 510* channel_stat 0(18) based bit(3) level 2 packed packed unaligned dcl 7-5 set ref 392 529 chnl_card based structure level 1 dcl 2-5 chnl_card_array based structure level 1 dcl 2-20 chnl_cardp 000212 automatic pointer dcl 2-3 set ref 627* 628* 629 630 630 630 631 631 633 636* chx 000152 automatic fixed bin(35,0) level 2 dcl 96 set ref 187* 432 432* 475* cleanup 000200 stack reference condition dcl 146 ref 185 486 clock builtin function dcl 156 ref 228 229 231 381 382 383 503 521 522 526 code 0(18) based bit(3) level 2 in structure "idcw" packed packed unaligned dcl 10-21 in procedure "hc_load_mpc" set ref 216* 294* 309* 509* code 0(18) based bit(3) level 2 in structure "pcw" packed packed unaligned dcl 10-6 in procedure "hc_load_mpc" set ref 198* command based bit(6) level 2 packed packed unaligned dcl 10-21 set ref 297* 300* 310* 508* completion 10 based structure level 3 in structure "io_buffer" dcl 109 in procedure "hc_load_mpc" completion based structure level 2 in structure "istat" dcl 8-7 in procedure "hc_load_mpc" config_$find 000014 constant entry external dcl 121 ref 453 462 618 624 628 636 control 0(22) based bit(2) level 2 packed packed unaligned dcl 10-6 set ref 200* control_store_length 000124 automatic fixed bin(18,0) dcl 84 set ref 263* 268* 274* 304* control_store_ptr 000126 automatic pointer dcl 85 set ref 253* 304* data 21 based bit(36) array level 2 dcl 109 set ref 338 348 348 data_absadr 000246 automatic fixed bin(26,0) dcl 332 set ref 344* 348* 350 351* 351 355 358* 358 dcw based structure level 1 dcl 9-7 in procedure "hc_load_mpc" set ref 354* dcw 1 based bit(36) array level 2 in structure "io_buffer" dcl 109 in procedure "hc_load_mpc" set ref 340 362 dcw_pair_ptr 10 000152 automatic pointer level 2 dcl 96 set ref 179* 512* dcwp 000224 automatic pointer dcl 9-4 set ref 340* 354 355 360 361 362* 364 device 0(06) based bit(6) level 2 packed packed unaligned dcl 10-21 set ref 301* dimension builtin function dcl 156 ref 166 divide builtin function dcl 156 ref 206 206 206 206 434 434 434 434 630 error_table_$bad_arg 000062 external static fixed bin(35,0) dcl 148 ref 242 error_table_$bad_channel 000064 external static fixed bin(35,0) dcl 149 ref 551 error_table_$device_not_active 000066 external static fixed bin(35,0) dcl 150 ref 528 error_table_$io_no_permission 000070 external static fixed bin(35,0) dcl 151 ref 188 476 error_table_$seg_not_found 000072 external static fixed bin(35,0) dcl 152 ref 650 error_table_$timeout 000074 external static fixed bin(35,0) dcl 153 ref 376 ev_chn based fixed bin(71,0) level 2 dcl 1-18 set ref 668* event 000130 automatic fixed bin(35,0) dcl 86 set ref 178* 187* 421* 474* 475* 545 finish 000132 automatic fixed bin(71,0) dcl 87 set ref 228* 231 382* 383 fw_overlay 000134 automatic fixed bin(17,0) dcl 88 set ref 257* 258 258 259 260* fw_seg based bit(36) array packed unaligned dcl 106 set ref 241 249 275 fw_seg_count 000135 automatic fixed bin(17,0) dcl 89 set ref 159* 166* 236 257 fw_seg_length 000136 automatic fixed bin(18,0) dcl 90 set ref 238* 241 249 263 268 276 fw_seg_lengths based fixed bin(18,0) array dcl 107 ref 238 fw_seg_lengths_ptr 000140 automatic pointer dcl 91 set ref 161* 168* 238 fw_seg_num 000142 automatic fixed bin(17,0) dcl 92 set ref 236* 237 238 254 255 257 285 288 296 304* fw_seg_ptr 000144 automatic pointer dcl 93 set ref 237* 239 241 249 253 258 275 fw_seg_ptrs based pointer array dcl 108 ref 237 258 fw_seg_ptrs_ptr 000146 automatic pointer dcl 94 set ref 160* 167* 237 258 fw_trailer based structure level 1 dcl 5-7 set ref 249 get_ptrs_$given_segno 000016 constant entry external dcl 122 ref 205 group 2 based structure array level 2 in structure "chnl_card_array" dcl 2-20 in procedure "hc_load_mpc" ref 630 630 group 2 based structure array level 2 in structure "chnl_card" dcl 2-5 in procedure "hc_load_mpc" groupx 000150 automatic fixed bin(17,0) dcl 95 set ref 630* 631 631* hbound builtin function dcl 156 ref 455 630 id_name based bit(36) level 2 packed packed unaligned dcl 5-7 set ref 281* idcw based structure level 1 dcl 10-21 in procedure "hc_load_mpc" idcw based bit(36) level 2 in structure "io_buffer" dcl 109 in procedure "hc_load_mpc" set ref 215 221 293 308 368 507 513 601 601 604 604 idcwp 000230 automatic pointer dcl 10-19 set ref 215* 216 217 293* 294 297 300 301 302 308* 309 310 507* 508 509 510 ima 000152 automatic structure level 1 dcl 96 set ref 177* 416* 470* 519* io_buffer based structure level 1 dcl 109 set ref 203 206 206 213* 251* 307* 351 351 434 434 436 488 505* 557 557 560 560 io_buffer_ptr 000164 automatic pointer dcl 97 set ref 180* 203* 205 205 206 206 206 206 213 215 221 251 256 259 293 307 308 338 340 344 344 348 348 351 351 362 368 433 434 434 434 434 436 484* 488* 505 507 513 557 557 560* 560 560 567 567 570 601 601 604 604 io_chnl_util$name_to_iom 000020 constant entry external dcl 123 ref 450 546 io_manager$assign 000102 constant entry external dcl 6-10 ref 187 475 io_manager$connect_abs 000106 constant entry external dcl 6-29 ref 416 519 io_manager$unassign 000104 constant entry external dcl 6-20 ref 432 io_manager_arg based structure level 1 dcl 6-50 io_post_buffer based structure level 1 dcl 1-18 set ref 667* io_post_buffer_ptr 000206 automatic pointer dcl 1-24 set ref 666* 667 668 669 678* 679 io_status_word based structure level 1 dcl 7-5 set ref 371* 394 394 413* 515* io_status_word_ptr 000222 automatic pointer dcl 7-4 set ref 187* 371 375 380 392 392 392 392 394 394 413 420 475* 515 522 526 526 529 529 529 529 529 529 570* ioa_ 000022 constant entry external dcl 125 ref 285 ioa_$rsnnl 000024 constant entry external dcl 126 ref 394 ioi_assignment$assign 000026 constant entry external dcl 127 ref 554 ioi_assignment$unassign 000030 constant entry external dcl 129 ref 578 ioi_connect 000032 constant entry external dcl 131 ref 604 ioi_connect$ioi_connect_pcw 000034 constant entry external dcl 132 ref 601 ioi_post_area based structure level 1 dcl 1-13 set ref 653* ioi_post_area_ptr 000210 automatic pointer dcl 1-25 set ref 580 648* 649 653 654 666 678 ioi_set$channel_required 000036 constant entry external dcl 133 ref 564 ioi_set$max_workspace 000040 constant entry external dcl 135 ref 557 ioi_set$status 000042 constant entry external dcl 137 ref 567 ioi_set$workspace 000044 constant entry external dcl 138 ref 560 iom 2 based fixed bin(3,0) level 2 in structure "prph_card" dcl 4-5 in procedure "hc_load_mpc" ref 620 iom 2 based fixed bin(3,0) array level 3 in structure "chnl_card" dcl 2-5 in procedure "hc_load_mpc" ref 631 iom 3 based fixed bin(3,0) array level 3 in structure "mpc_card" dcl 3-5 in procedure "hc_load_mpc" ref 455 456 iom_stat 14 based bit(72) level 3 dcl 109 set ref 570 istat based structure level 1 dcl 8-7 lbound builtin function dcl 156 ref 630 listp 6 000152 automatic pointer level 2 dcl 96 set ref 221* 368* 513* major 0(02) based bit(4) level 2 packed packed unaligned dcl 7-5 set ref 392 529 mask 0(21) based bit(1) level 2 packed packed unaligned dcl 10-6 set ref 199* max builtin function dcl 156 ref 630 max_wait 000166 automatic fixed bin(71,0) dcl 98 set ref 229* 381 503* 526 min builtin function dcl 156 ref 356 630 mpc_card based structure level 1 dcl 3-5 mpc_cardp 000214 automatic pointer dcl 3-3 set ref 452* 453* 454 455 455 456 456 456 456 458 462* n_fields 17(32) based fixed bin(4,0) level 3 packed packed unsigned unaligned dcl 2-5 ref 630 name 1 based char(4) level 2 in structure "mpc_card" dcl 3-5 in procedure "hc_load_mpc" ref 458 name 1 based char(4) level 2 in structure "chnl_card" dcl 2-5 in procedure "hc_load_mpc" ref 633 name 1 based char(4) level 2 in structure "prph_card" dcl 4-5 in procedure "hc_load_mpc" ref 622 nchan 5 based fixed bin(17,0) array level 3 dcl 3-5 ref 456 needs_booting 000170 automatic bit(1) array packed unaligned dcl 99 set ref 173* 255 258 260* null builtin function dcl 156 ref 179 180 239 264 269 433 452 454 484 512 617 619 627 629 649 number based fixed bin(17,0) level 2 dcl 1-13 set ref 580* 653 654* overlay 3 based bit(36) level 2 packed packed unaligned dcl 5-7 set ref 283* pc_abs$unwire_abs 000046 constant entry external dcl 139 ref 434 pc_abs$wire_abs_contig 000050 constant entry external dcl 140 ref 206 pcw 2 000152 automatic bit(36) level 2 in structure "ima" dcl 96 in procedure "hc_load_mpc" set ref 197 336* pcw based structure level 1 dcl 10-6 in procedure "hc_load_mpc" pcwp 000226 automatic pointer dcl 10-4 set ref 196* 197* 198 199 200 port 3 based structure array level 2 dcl 3-5 ref 455 port_mask 20 based bit(36) level 2 dcl 109 set ref 256* 259* 344 344 portx 000171 automatic fixed bin(17,0) dcl 100 set ref 455* 455* 456 456 456 456* power 0(01) based bit(1) level 2 packed packed unaligned dcl 7-5 set ref 380 526 529 prph_card based structure level 1 dcl 4-5 prph_cardp 000216 automatic pointer dcl 4-3 set ref 617* 618* 619 620 620 622 624* ptp 4 000152 automatic pointer level 2 dcl 96 set ref 179* 512* pxss$addevent 000052 constant entry external dcl 141 ref 421 pxss$notify 000054 constant entry external dcl 142 ref 187 187 475 475 pxss$wait 000056 constant entry external dcl 143 ref 422 read_write 000172 automatic bit(1) dcl 101 set ref 265* 270* 273* 306 read_write_length 000173 automatic fixed bin(18,0) dcl 102 set ref 276* 311* read_write_ptr 000174 automatic pointer dcl 103 set ref 264* 269* 275* 311* rel builtin function dcl 156 ref 206 206 434 434 567 567 601 601 604 604 rev_level 1 based bit(36) level 2 packed packed unaligned dcl 5-7 set ref 282* rw_start 4 based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 5-7 ref 267 274 275 276 send_pcw_to_IOI 000304 automatic bit(1) packed unaligned dcl 588 set ref 590* 597* 601 size builtin function dcl 156 ref 206 206 249 434 434 557 557 560 560 state 4 based fixed bin(17,0) level 2 dcl 1-18 set ref 669* 679 status 10 based structure level 2 dcl 109 set ref 567 567 string builtin function dcl 156 set ref 336* 354* 394 394 sub 0(06) based bit(6) level 2 packed packed unaligned dcl 7-5 set ref 392 529 substr builtin function dcl 156 set ref 259* 285 285 285 285 288 288 288 288 458 545* sys_info$initialization_state 000076 external static fixed bin(17,0) dcl 154 ref 204 285 464 syserr 000060 constant entry external dcl 144 ref 208 288 350 t based bit(1) level 2 packed packed unaligned dcl 7-5 set ref 375 420 522 526 529 tally 0(24) based bit(12) level 2 packed packed unaligned dcl 9-7 set ref 360* tally_length 000247 automatic fixed bin(12,0) dcl 333 set ref 356* 357 358 359 359* 360 time 000176 automatic fixed bin(71,0) dcl 104 set ref 521* 522 to_do 000250 automatic fixed bin(17,0) dcl 334 set ref 343* 347* 350 353 356 357* 357 362 trailer_ptr 000220 automatic pointer dcl 5-6 set ref 249* 249 267 274 275 276 281 282 283 type 0(22) based bit(2) level 2 packed packed unaligned dcl 9-7 set ref 361* 364* type_word 17 based structure level 2 dcl 2-5 unspec builtin function dcl 156 set ref 177* 178* 178 213* 251* 307* 371* 413* 470* 474* 474 505* 515* 544* 545 545 653* 667* wait_flag 000260 automatic bit(1) dcl 404 set ref 406* 411* 418 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BEEP internal static fixed bin(17,0) initial dcl 11-7 JUST_LOG internal static fixed bin(17,0) initial dcl 11-7 LOG internal static fixed bin(17,0) initial dcl 11-7 SPECIAL_ARRIVED internal static fixed bin(17,0) initial dcl 1-32 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 11-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 11-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 11-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 11-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 11-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 11-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 11-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 11-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 11-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 11-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 11-7 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 11-7 WAITING_SPECIAL internal static fixed bin(17,0) initial dcl 1-31 imess based structure level 1 dcl 8-21 imp automatic pointer dcl 8-19 io_manager$assign_add 000000 constant entry external dcl 6-15 io_manager$connect 000000 constant entry external dcl 6-26 io_manager$connect_direct 000000 constant entry external dcl 6-32 io_manager$get_status 000000 constant entry external dcl 6-35 io_manager$ignore_interrupt 000000 constant entry external dcl 6-41 io_manager$mask 000000 constant entry external dcl 6-38 io_manager$unassign_delete 000000 constant entry external dcl 6-23 io_manager$workspace_tdcw 000000 constant entry external dcl 6-47 io_manager_arg_ptr automatic pointer dcl 6-49 isp automatic pointer dcl 8-5 mpc_card_array based structure level 1 dcl 3-19 tdcw based structure level 1 dcl 9-14 tdcwp automatic pointer dcl 9-4 NAMES DECLARED BY EXPLICIT CONTEXT. BOOT_SECTION 001411 constant entry internal dcl 323 ref 304 311 CLEANUP 002062 constant entry internal dcl 427 ref 185 319 486 492 COMMON 002024 constant label dcl 413 ref 407 CONNECT 002016 constant entry internal dcl 402 ref 373 CONNECT_NO_WAIT 002022 constant entry internal dcl 409 ref 223 DISK_MPC 002153 constant entry internal dcl 447 ref 316 FIND_MPC_NAME 003003 constant entry internal dcl 614 ref 549 IOI_ATTACH 002447 constant entry internal dcl 538 ref 190 478 IOI_CONNECT 002722 constant entry internal dcl 586 ref 372 517 IOI_DC_RESET 002725 constant entry internal dcl 595 ref 219 IOI_DETACH 002677 constant entry internal dcl 575 ref 430 RETURN 001250 constant label dcl 319 ref 243 378 389 396 SETUP_IOI_POSTING 003171 constant entry internal dcl 645 ref 541 SETUP_POST_BUF 003222 constant entry internal dcl 662 ref 599 TEST_MPC 002314 constant entry internal dcl 499 ref 316 490 WAIT_FOR_STATUS 003236 constant entry internal dcl 675 ref 606 connect_common 002730 constant label dcl 599 ref 591 error_detach 002704 constant label dcl 578 ref 558 562 565 568 hc_load_mpc 000172 constant entry external dcl 11 join 000257 constant label dcl 170 ref 162 next_overlay 001237 constant label dcl 313 ref 239 255 retry_the_connect 001636 constant label dcl 368 ref 385 test_controller 001261 constant entry external dcl 468 try_test_connect 002321 constant label dcl 505 ref 526 urc 000224 constant entry external dcl 164 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3772 4102 3341 4002 Length 4600 3341 110 461 430 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME hc_load_mpc 414 external procedure is an external procedure. on unit on line 185 64 on unit BOOT_SECTION internal procedure shares stack frame of external procedure hc_load_mpc. CONNECT internal procedure shares stack frame of external procedure hc_load_mpc. CLEANUP 80 internal procedure is called by several nonquick procedures. DISK_MPC internal procedure shares stack frame of external procedure hc_load_mpc. on unit on line 486 64 on unit TEST_MPC internal procedure shares stack frame of external procedure hc_load_mpc. IOI_ATTACH 123 internal procedure is called by several nonquick procedures. IOI_CONNECT internal procedure shares stack frame of external procedure hc_load_mpc. FIND_MPC_NAME internal procedure shares stack frame of internal procedure IOI_ATTACH. SETUP_IOI_POSTING internal procedure shares stack frame of internal procedure IOI_ATTACH. SETUP_POST_BUF internal procedure shares stack frame of external procedure hc_load_mpc. WAIT_FOR_STATUS internal procedure shares stack frame of external procedure hc_load_mpc. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME hc_load_mpc 000100 FWID hc_load_mpc 000102 FWOVERLAY hc_load_mpc 000104 FWREV hc_load_mpc 000106 IOI_attached hc_load_mpc 000107 IOI_chnl hc_load_mpc 000110 IOI_event hc_load_mpc 000112 IOI_index hc_load_mpc 000113 IOI_iom hc_load_mpc 000114 IOI_pcw hc_load_mpc 000115 IO_buf_data_wds hc_load_mpc 000116 IO_buf_wired hc_load_mpc 000120 MPC_name hc_load_mpc 000122 astep hc_load_mpc 000124 control_store_length hc_load_mpc 000126 control_store_ptr hc_load_mpc 000130 event hc_load_mpc 000132 finish hc_load_mpc 000134 fw_overlay hc_load_mpc 000135 fw_seg_count hc_load_mpc 000136 fw_seg_length hc_load_mpc 000140 fw_seg_lengths_ptr hc_load_mpc 000142 fw_seg_num hc_load_mpc 000144 fw_seg_ptr hc_load_mpc 000146 fw_seg_ptrs_ptr hc_load_mpc 000150 groupx hc_load_mpc 000152 ima hc_load_mpc 000164 io_buffer_ptr hc_load_mpc 000166 max_wait hc_load_mpc 000170 needs_booting hc_load_mpc 000171 portx hc_load_mpc 000172 read_write hc_load_mpc 000173 read_write_length hc_load_mpc 000174 read_write_ptr hc_load_mpc 000176 time hc_load_mpc 000206 io_post_buffer_ptr hc_load_mpc 000210 ioi_post_area_ptr hc_load_mpc 000212 chnl_cardp hc_load_mpc 000214 mpc_cardp hc_load_mpc 000216 prph_cardp hc_load_mpc 000220 trailer_ptr hc_load_mpc 000222 io_status_word_ptr hc_load_mpc 000224 dcwp hc_load_mpc 000226 pcwp hc_load_mpc 000230 idcwp hc_load_mpc 000246 data_absadr BOOT_SECTION 000247 tally_length BOOT_SECTION 000250 to_do BOOT_SECTION 000260 wait_flag CONNECT 000304 send_pcw_to_IOI IOI_CONNECT THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_ne_as alloc_char_temp alloc_temp call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry ext_entry_desc int_entry alloc_storage op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absadr bcd_to_ascii_ config_$find get_ptrs_$given_segno io_chnl_util$name_to_iom io_manager$assign io_manager$connect_abs io_manager$unassign ioa_ ioa_$rsnnl ioi_assignment$assign ioi_assignment$unassign ioi_connect ioi_connect$ioi_connect_pcw ioi_set$channel_required ioi_set$max_workspace ioi_set$status ioi_set$workspace pc_abs$unwire_abs pc_abs$wire_abs_contig pxss$addevent pxss$notify pxss$wait syserr THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. bce_ioi_post_seg$ error_table_$bad_arg error_table_$bad_channel error_table_$device_not_active error_table_$io_no_permission error_table_$seg_not_found error_table_$timeout sys_info$initialization_state LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000165 159 000210 160 000212 161 000214 162 000216 164 000217 166 000242 167 000252 168 000255 170 000257 172 000260 173 000266 177 000300 178 000303 179 000305 180 000310 181 000312 182 000313 183 000314 184 000315 185 000317 187 000341 188 000367 190 000374 191 000400 192 000402 193 000404 194 000405 196 000406 197 000413 198 000415 199 000417 200 000421 202 000423 203 000425 204 000432 205 000436 206 000452 208 000477 209 000521 213 000523 215 000534 216 000536 217 000540 219 000542 221 000546 223 000550 228 000551 229 000554 231 000557 232 000563 236 000564 237 000573 238 000577 239 000603 241 000607 242 000615 243 000620 249 000621 251 000630 253 000641 254 000642 255 000646 256 000652 257 000653 258 000663 259 000676 260 000703 262 000706 263 000710 264 000713 265 000715 266 000716 267 000717 268 000723 269 000726 270 000730 271 000731 273 000732 274 000734 275 000735 276 000740 281 000744 282 000761 283 000777 285 001015 288 001073 293 001150 294 001152 296 001154 297 001157 298 001161 300 001162 301 001164 302 001166 304 001170 306 001205 307 001207 308 001220 309 001222 310 001224 311 001226 313 001237 316 001241 319 001250 321 001254 468 001255 470 001271 471 001274 472 001275 473 001276 474 001300 475 001302 476 001330 478 001335 479 001341 480 001343 481 001345 482 001346 484 001347 486 001351 488 001373 490 001402 492 001404 493 001410 323 001411 336 001422 338 001423 340 001445 342 001451 343 001455 344 001460 345 001477 347 001500 348 001502 350 001521 351 001545 353 001567 354 001572 355 001573 356 001601 357 001605 358 001607 359 001611 360 001614 361 001622 362 001626 363 001633 364 001634 368 001636 371 001640 372 001641 373 001645 375 001646 376 001651 377 001654 378 001665 380 001666 381 001671 382 001674 383 001677 384 001703 385 001704 387 001705 388 001707 389 001731 392 001733 394 001747 395 002012 396 002014 399 002015 402 002016 406 002017 407 002021 409 002022 411 002023 413 002024 416 002025 418 002034 420 002037 421 002043 422 002052 423 002057 424 002060 427 002061 430 002067 432 002100 433 002113 434 002120 436 002145 439 002152 447 002153 450 002155 452 002175 453 002177 454 002210 455 002214 456 002226 458 002240 459 002252 461 002260 462 002262 463 002273 464 002274 465 002306 499 002314 503 002316 505 002321 507 002332 508 002334 509 002336 510 002340 512 002342 513 002345 515 002347 517 002350 519 002354 521 002363 522 002365 523 002402 526 002403 528 002421 529 002424 532 002445 538 002446 541 002454 542 002455 544 002460 545 002462 546 002464 548 002502 549 002505 550 002512 551 002516 552 002521 554 002522 555 002553 557 002556 558 002574 560 002577 562 002617 564 002622 565 002637 567 002642 568 002667 570 002672 571 002675 575 002676 578 002704 580 002717 581 002721 586 002722 590 002723 591 002724 595 002725 597 002726 599 002730 601 002731 604 002756 605 002776 606 003001 607 003002 614 003003 617 003005 618 003010 619 003021 620 003027 622 003036 624 003047 625 003060 627 003061 628 003063 629 003074 630 003101 631 003124 633 003136 635 003147 636 003151 637 003162 639 003163 645 003171 648 003172 649 003176 650 003202 651 003204 653 003205 654 003216 655 003220 656 003221 662 003222 666 003223 667 003226 668 003231 669 003233 670 003235 675 003236 678 003237 679 003242 680 003246 681 003247 ----------------------------------------------------------- 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