COMPILATION LISTING OF SEGMENT dump_mpc Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 04/02/85 1042.4 mst Tue Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend */ 12 13 /* DUMP_MPC: Command to perform dump of MPC read/write memory */ 14 /* Written July 1975 by Larry Johnson */ 15 /* Updated January 1977 for disk mpcs and to add -iom and -channel args */ 16 /* Modified 10/09/79 for new MPC card format by Michael R. Jordan */ 17 /* Modified January 1980 by Larry Johnson to dump MPC's by their name */ 18 /* Modified December 1980 by Rich Coppola to default output to user_io */ 19 /* Modified January 1981 by Rich Coppola to add -mpc arg to display only mpc stats */ 20 /* Modified Apr 1 1982 by Rich Coppola to dump MPCs in ASCII. This is required for 21* the EURC and most likely Dipper "MPCs". */ 22 /* Modified August 1982 by Rich Coppola to correct the output_file ctl_arg 23* recognition. It was missing the "-". 24* Modified June 1984 by Paul Farley to add MSP800(DAU) support. 25* Modified March 1985 by Paul Farley to double DAU config area, for 64 devices (PBF). 26**/ 27 28 dump_mpc: 29 proc; 30 31 dcl code fixed bin (35); /* Standard system status code */ 32 dcl name char (8) init ("dump_mpc"); 33 dcl io_code fixed bin; 34 dcl workp ptr; /* Pointer to IOI buffer segment */ 35 dcl ws_size_needed fixed bin (18); /* IOI workspace size */ 36 dcl (i, j) fixed bin; 37 dcl dev_name char (32) var; /* Name of device to assign */ 38 dcl n_args fixed bin; /* Number of command arguments */ 39 dcl arg_ptr ptr; /* Pointer to a command argument */ 40 dcl arg_len fixed bin; /* Length of a command argument */ 41 dcl arg char (arg_len) based (arg_ptr); /* Command argument described by arg_ptr,arg_len */ 42 dcl path_ptr ptr; /* Pointer to path name of listing */ 43 dcl path_len fixed bin; /* Length of pathname of listing */ 44 dcl path char (path_len) based (path_ptr); /* Hence, this is the pathname */ 45 dcl default_path char (32); /* A default listing segment will be built here */ 46 dcl line_length fixed bin (17); /* value returned by get_line_length */ 47 dcl mpc_list_ptr ptr; /* Pointer to IOCB of mpc_list */ 48 dcl list_attach bit (1) init ("0"b); /* Set if list switch has been attached */ 49 dcl list_open bit (1) init ("0"b); /* Set when list switch has been opened */ 50 dcl of_sw bit (1) init ("0"b); /* Set if an output file is specified */ 51 dcl mpc_only_sw bit (1) init ("0"b); /* Set if only MPC data is wanted (-mpc) */ 52 dcl stat_sw bit (1) init ("0"b); /* Set if -stat used */ 53 dcl trace_sw bit (1) init ("0"b); /* Set if -trace used */ 54 dcl dump_sw bit (1) init ("0"b); /* Set if -dump used */ 55 dcl extend_sw bit (1) init ("0"b); /* To extend old listing segment */ 56 dcl short_sw bit (1) init ("0"b); /* To set display to 80 char line */ 57 dcl eurc_sw bit (1) init ("0"b); /* We have an EURC */ 58 dcl dau_sw bit (1) init ("0"b); /* MSP800 (DAU) */ 59 dcl attach_desc char (256) var; 60 dcl mpc_memory_size fixed bin; /* size of MPC memory */ 61 dcl dau_data_bytes fixed bin; 62 dcl error_message char (256) var; 63 64 dcl 1 my_mpc_data aligned like mpc_data automatic; 65 dcl 1 my_attach_data aligned like attach_mpc_data automatic; 66 dcl 1 my_event_wait_info aligned like event_wait_info; 67 68 dcl 1 wait_list aligned, /* Wait list for ipc_$block */ 69 2 nchan fixed bin init (1), /* Always 1 channel */ 70 2 ev_chan fixed bin (71); /* Which is this */ 71 72 dcl 1 buf aligned based (workp), /* The IOI buffer segment */ 73 2 idcw1 bit (36), /* Will be read controller main memory */ 74 2 dcw1 bit (36), /* Addr=buf.control, tally=1 */ 75 2 idcw2 bit (36), /* Will be initiate read data transfer */ 76 2 dcw2 bit (36), /* Address=buf.mem, tally=rest of segment */ 77 2 control, /* Describes where data is in mpc */ 78 3 addr bit (16) unal, /* Addr in mpc memory */ 79 3 tally bit (16) unal, /* Count in mpc words */ 80 3 fill bit (4) unal, 81 2 mem (0:mpc_memory_size - 1) bit (18) unal; /* This is the mpc memory in ASCII */ 82 83 dcl 1 stat_buf aligned based (workp), /* The IOI buffer segment */ 84 2 idcw1 bit (36), /* Will be read controller main memory */ 85 2 dcw1 bit (36), /* Addr=stat_buf.control, tally=1 */ 86 2 idcw2 bit (36), /* Will be initiate read data transfer */ 87 2 dcw2 bit (36), /* Address=stat_buf.mem, tally=rest of segment */ 88 2 control, /* Describes where data is in mpc */ 89 3 addr bit (16) unal, /* Addr in mpc memory */ 90 3 tally bit (16) unal, /* Count in mpc words */ 91 3 fill bit (4) unal, 92 2 stats (0:83) bit (18) unal; /* EURC statistics in ASCII */ 93 94 dcl 1 trace_buf aligned based (workp), /* The IOI buffer segment */ 95 2 idcw1 bit (36), /* Will be read controller main memory */ 96 2 dcw1 bit (36), /* Addr=trace_buf.control, tally=1 */ 97 2 idcw2 bit (36), /* Will be initiate read data transfer */ 98 2 dcw2 bit (36), /* Address=trace_buf.mem, tally=rest of segment */ 99 2 control, /* Describes where data is in mpc */ 100 3 addr bit (16) unal, /* Addr in mpc memory */ 101 3 tally bit (16) unal, /* Count in mpc words */ 102 3 fill bit (4) unal, 103 2 trace (0:255) bit (9) unal; /* EURC trace in ASCII */ 104 105 dcl 1 eurc_dump_buf aligned based (workp), /* The IOI buffer segment */ 106 2 idcw1 bit (36), /* Will be read controller main memory */ 107 2 dcw1 bit (36), /* Addr=dump_buf.control, tally=1 */ 108 2 idcw2 bit (36), /* Will be initiate read data transfer */ 109 2 dcw2 bit (36), /* Address=dump_buf.mem, tally=rest of segment */ 110 2 control, /* Describes where data is in mpc */ 111 3 addr bit (18) unal, /* Addr in mpc memory */ 112 3 tally bit (18) unal, /* Count in mpc words */ 113 2 eurc_dump (0:3071) bit (18) unal; /* EURC dump in ASCII */ 114 115 dcl 1 dau_buf aligned based (workp), /* The IOI buffer segment */ 116 2 list (20), /* DCW List */ 117 3 idcw bit (36), 118 3 dcw bit (36), 119 2 control (8), /* Read memory info */ 120 3 addr bit (16) unal, 121 3 tally bit (16) unal, 122 3 fill bit (4) unal, 123 2 data (0:dau_data_bytes - 1) bit (18) unal; /* data from DAU in ASCII format */ 124 125 dcl dau_config_idx fixed bin, /* offsets in dau_buf.data */ 126 dau_stat_idx fixed bin, /* statistic offset */ 127 dau_trace_idx fixed bin, /* trace offset */ 128 dau_dump_idx fixed bin; /* dump offset */ 129 130 dcl eurc_mem_bin (0:3071) bit (16) unal; /* eurc mem converted to bin */ 131 dcl mpc_mem_bin (0:4095) bit (16) unal; /* mpc mem converted to binary */ 132 dcl eurc_trace (0:255) bit (8) unal; /* eurc trace data converted to bin */ 133 dcl eurc_stats (0:83) bit (16) unal; /* eurc stats converted to bin */ 134 dcl dau_datap ptr init (null); 135 dcl dau_data (0:dau_data_bytes - 1) bit (16) unal based (dau_datap); 136 137 138 /* Entry variables */ 139 140 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 141 dcl release_temp_segment_ entry (char (*), ptr, fixed bin (35)); 142 dcl ioi_$workspace entry (fixed bin, ptr, fixed bin (18), fixed bin (35)); 143 dcl ioi_$connect entry (fixed bin, fixed bin (18), fixed bin (35)); 144 dcl ipc_$block entry (ptr, ptr, fixed bin (35)); 145 dcl convert_ipc_code_ entry (fixed bin (35)); 146 dcl com_err_ entry options (variable); 147 dcl ioa_ entry options (variable); 148 dcl char_mpc_ entry (ptr, ptr); 149 dcl dump_mpc_ entry (ptr, ptr, ptr, bit (1)); 150 dcl dump_mpc_$dau entry (ptr, ptr, ptr, bit (1)); 151 dcl dump_mpc_$eurc entry (ptr, ptr, ptr, bit (1)); 152 dcl stat_mpc_ entry (ptr, ptr, ptr, bit (1)); 153 dcl stat_mpc_$dau entry (ptr, ptr, ptr, bit (1)); 154 dcl stat_mpc_$eurc entry (ptr, ptr, ptr, bit (1)); 155 dcl stat_mpc_$mpc_stats_ entry (ptr, ptr, ptr, bit (1)); 156 dcl stat_mpc_$dau_stats_ entry (ptr, ptr, ptr, bit (1)); 157 dcl trace_mpc_ entry (ptr, ptr, ptr); 158 dcl trace_mpc_$dau entry (ptr, ptr, ptr); 159 dcl trace_mpc_$eurc entry (ptr, ptr, ptr); 160 dcl cu_$arg_count entry (fixed bin); 161 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 162 dcl get_line_length_$switch entry (ptr, fixed bin (35)) returns (fixed bin); 163 dcl iox_$user_output ptr ext; 164 dcl iox_$attach_ioname entry (char (*), ptr, char (*), fixed bin (35)); 165 dcl iox_$open entry (ptr, fixed bin, bit (1) aligned, fixed bin (35)); 166 dcl iox_$close entry (ptr, fixed bin (35)); 167 dcl iox_$detach_iocb entry (ptr, fixed bin (35)); 168 dcl attach_mpc_ entry (ptr, fixed bin (35)); 169 dcl detach_mpc_ entry (ptr, fixed bin (35)); 170 dcl parse_io_channel_name_ entry (char (*), fixed bin (3), fixed bin (6), fixed bin (35)); 171 dcl analyze_device_stat_$rsnnl entry (char (*) var, ptr, bit (72), bit (18)); 172 173 dcl error_table_$noarg ext fixed bin (35); 174 dcl error_table_$request_not_recognized ext fixed bin (35); 175 dcl error_table_$badopt ext fixed bin (35); 176 177 dcl (length, substr, null, bit, rel, bin, size, addr, rtrim, unspec, hbound, multiply) builtin; 178 179 dcl (cleanup, sus_) condition; 180 181 /* Scan command arguments */ 182 183 code = 0; 184 arg_ptr = null; 185 186 call cu_$arg_count (n_args); /* First, find out how many */ 187 if n_args = 0 then do; /* None is illegal */ 188 no_dev: 189 call com_err_ (error_table_$noarg, name, "MPC name"); 190 go to usage; 191 end; 192 193 attach_mpc_datap = addr (my_attach_data); 194 unspec (attach_mpc_data) = "0"b; 195 attach_mpc_data.version = attach_mpc_data_version_1; 196 attach_mpc_data.mpc_name = ""; 197 event_wait_info_ptr = addr (my_event_wait_info); 198 199 path_ptr = null; /* Listing segment path pointer not known */ 200 mpc_list_ptr = iox_$user_output; /* Set default output */ 201 202 line_length = get_line_length_$switch (null (), code); 203 if line_length < 132 then short_sw = "1"b; 204 if code ^= 0 then short_sw = "0"b; 205 206 207 do i = 1 to n_args; /* Scan all args */ 208 call cu_$arg_ptr (i, arg_ptr, arg_len, code);/* Get argument */ 209 if code ^= 0 then go to err; /* This should not happen */ 210 if substr (arg, 1, 1) = "-" then do; /* If a control argument */ 211 if arg = "-dump" then dump_sw = "1"b; 212 else if arg = "-stat" then stat_sw = "1"b; 213 else if arg = "-trace" then trace_sw = "1"b; 214 else if arg = "-mpc" then mpc_only_sw = "1"b; 215 else if arg = "-extend" then extend_sw = "1"b; 216 else if arg = "-short" then short_sw = "1"b; 217 else if arg = "-long" then short_sw = "0"b; 218 219 else if arg = "-of" | arg = "-output_file" then do; 220 of_sw = "1"b; 221 short_sw = "0"b; /* use long line for fo */ 222 223 j = i + 1; 224 call cu_$arg_ptr (j, arg_ptr, arg_len, code); 225 /* Get pathname */ 226 227 if code ^= 0 then path_ptr = null; /* Set for default file name */ 228 229 else if substr (arg, 1, 1) = "-" then path_ptr = null; 230 /* Set for default file name */ 231 232 else do; 233 path_ptr = arg_ptr; 234 path_len = arg_len; 235 i = i + 1; 236 end; 237 end; 238 239 240 else if arg = "-channel" | arg = "-ch" | arg = "-chn" then do; 241 i = i + 1; 242 call cu_$arg_ptr (i, arg_ptr, arg_len, code); 243 if code ^= 0 then do; 244 call com_err_ (code, name, "After -channel"); 245 go to done; 246 end; 247 call parse_io_channel_name_ (arg, attach_mpc_data.iom, attach_mpc_data.channel, code); 248 if code ^= 0 then do; 249 call com_err_ (code, name, "^a", arg); 250 go to done; 251 end; 252 attach_mpc_data.channel_required = "1"b; 253 end; 254 else do; 255 code = error_table_$badopt; 256 go to arg_err; 257 end; 258 end; 259 else if attach_mpc_data.mpc_name = "" then attach_mpc_data.mpc_name = arg; 260 /* If no device found yet, this is it */ 261 262 263 else do; /* Bad command argument */ 264 code = error_table_$request_not_recognized; 265 go to arg_err; 266 end; 267 end; 268 269 /* Now perform some basic checks on the arguments found */ 270 271 if attach_mpc_data.mpc_name = "" & ^attach_mpc_data.channel_required then go to no_dev; 272 /* Device name should have been specified */ 273 274 if ^(dump_sw | stat_sw | trace_sw | mpc_only_sw) then stat_sw = "1"b; 275 /* If no control args given, assume statistics */ 276 277 /* Attach the mpc */ 278 279 on cleanup call clean_up; 280 on sus_ call clean_up; 281 282 attach_mpc_data.report = "1"b; /* Let it print errors */ 283 attach_mpc_data.caller_name = name; /* Me */ 284 call attach_mpc_ (attach_mpc_datap, code); 285 if code ^= 0 then return; 286 287 /* When an entry is created in ioi_ to check the state of the suspend 288* devices flag for an MPC, the following should be added to skip the 289* MPC if the IO is suspended. This way dump_mpc will not hang! 290* 291* * call ioi_$check_suspend_state (or whatever) 292* * (attach_mpc_data.ioi_index, io_suspended, code); 293* * if io_suspended then do; 294* * call clean_up; 295* * return; 296* * end; 297**/ 298 299 mpc_datap = addr (my_mpc_data); 300 mpc_data.name = attach_mpc_data.mpc_name; 301 mpc_data.model = attach_mpc_data.model; 302 mpc_data.type = attach_mpc_data.type; 303 wait_list.ev_chan = attach_mpc_data.ioi_channel; 304 305 eurc_sw = "0"b; 306 if (substr (mpc_data.name, 1, 3) = "urp") 307 then do i = 1 to hbound (eurc_model_numbers, 1) while (eurc_sw = "0"b); 308 309 if mpc_data.model = eurc_model_numbers (i) then eurc_sw = "1"b; 310 end; 311 312 else if (substr (mpc_data.name, 1, 3) = "msp") & mpc_data.model = 800 then dau_sw = "1"b; 313 314 /* Create IOI workspace segment */ 315 316 if dau_sw then do; 317 call get_temp_segment_ ("dump_mpc", dau_datap, code); 318 if code ^= 0 then do; 319 call com_err_ (code, name, "getting a temporary segment."); 320 goto done; 321 end; 322 dau_data_bytes = 130; /* config data */ 323 if (stat_sw | mpc_only_sw) then dau_data_bytes = dau_data_bytes + 630; 324 if trace_sw then dau_data_bytes = dau_data_bytes + 128; 325 if dump_sw 326 then /* 32K of memory */ 327 /* 16K (16-bit) bytes */ 328 dau_data_bytes = dau_data_bytes + 16384; 329 ws_size_needed = size (dau_buf); 330 end; 331 else do; 332 mpc_memory_size = 4096; 333 ws_size_needed = size (buf); 334 end; 335 if ws_size_needed > attach_mpc_data.max_workspace_size then do; 336 /* Can't create big enough work space */ 337 call com_err_ (0, name, "Required work space of ^d words exceeds maximum of ^d.", ws_size_needed, 338 attach_mpc_data.max_workspace_size); 339 go to done; 340 end; 341 call ioi_$workspace (attach_mpc_data.ioi_index, workp, ws_size_needed, code); 342 if code ^= 0 then go to work_err; 343 344 if eurc_sw then do; /* special case the EURC */ 345 346 if mpc_only_sw then do; 347 call ioa_ ("^a: The -mpc ctl_arg is not applicable to the EURC."); 348 go to done; 349 end; 350 351 if dump_sw then do; 352 call build_eurc_dump_dcw; 353 call do_io (io_code); 354 if io_code ^= 0 then go to do_io_err (io_code); 355 356 do i = 0 to 3071; 357 substr (eurc_mem_bin (i), 1, 8) = substr (eurc_dump_buf.eurc_dump (i), 2, 8); 358 substr (eurc_mem_bin (i), 9, 8) = substr (eurc_dump_buf.eurc_dump (i), 11, 8); 359 end; 360 361 end; 362 363 if stat_sw then do; 364 call build_stat_dcw; 365 call do_io (io_code); 366 if io_code ^= 0 then go to do_io_err (io_code); 367 do i = 0 to 83; /* convert it to binary */ 368 substr (eurc_stats (i), 1, 8) = substr (stat_buf.stats (i), 2, 8); 369 substr (eurc_stats (i), 9, 8) = substr (stat_buf.stats (i), 11, 8); 370 end; 371 end; 372 373 if trace_sw then do; 374 call build_trace_dcw; 375 call do_io (io_code); 376 if io_code ^= 0 then go to do_io_err (io_code); 377 do i = 0 to 255; /* convert it to binary */ 378 substr (eurc_trace (i), 1, 8) = substr (trace_buf.trace (i), 2, 8); 379 end; 380 end; 381 end; 382 383 384 else do; 385 if dau_sw 386 then call build_dau_dcw; /* DAU */ 387 else call build_dump_dcw; /* Normal MPC */ 388 call do_io (io_code); 389 if io_code ^= 0 then go to do_io_err (io_code); 390 end; 391 392 393 /* Prepare a listing segment */ 394 395 if of_sw then do; /* User specified output file */ 396 if path_ptr = null then do; /* If path name not given in command */ 397 default_path = rtrim (attach_mpc_data.mpc_name) || ".list"; 398 path_ptr = addr (default_path); 399 path_len = length (default_path); 400 end; 401 attach_desc = "vfile_ " || rtrim (path); 402 if extend_sw then attach_desc = rtrim (attach_desc) || " -extend"; 403 call iox_$attach_ioname ("mpc_list", mpc_list_ptr, (attach_desc), code); 404 if code ^= 0 then go to iox_err; 405 list_attach = "1"b; /* Remember to detach it */ 406 call iox_$open (mpc_list_ptr, 2, "0"b, code);/* Open for stream_output */ 407 if code ^= 0 then go to iox_err; 408 list_open = "1"b; /* Remember to close it */ 409 end; 410 411 412 /* Now convert data to binary */ 413 414 if dau_sw 415 then /* DAU? */ 416 do i = 0 to dau_data_bytes - 1; 417 substr (dau_data (i), 1, 8) = substr (dau_buf.data (i), 2, 8); 418 substr (dau_data (i), 9, 8) = substr (dau_buf.data (i), 11, 8); 419 end; 420 421 else if ^eurc_sw 422 then /* if old style MPC or URC dump */ 423 do i = 0 to mpc_memory_size - 1; 424 substr (mpc_mem_bin (i), 1, 8) = substr (buf.mem (i), 2, 8); 425 substr (mpc_mem_bin (i), 9, 8) = substr (buf.mem (i), 11, 8); 426 end; 427 428 429 430 /* Don't need MPC any more so detach it */ 431 432 call detach_mpc_ (attach_mpc_datap, code); 433 434 /* Now print out the data */ 435 436 /* Learn about mpc */ 437 if dau_sw 438 then call char_mpc_ (addr (dau_data (dau_config_idx)), mpc_datap); 439 else call char_mpc_ (addr (mpc_mem_bin), mpc_datap); 440 441 if dump_sw then do; 442 if eurc_sw then call dump_mpc_$eurc (addr (eurc_mem_bin), mpc_list_ptr, mpc_datap, short_sw); 443 else if dau_sw then call dump_mpc_$dau (addr (dau_data (dau_dump_idx)), mpc_list_ptr, mpc_datap, short_sw); 444 else call dump_mpc_ (addr (mpc_mem_bin), mpc_list_ptr, mpc_datap, short_sw); 445 end; 446 447 if trace_sw then do; 448 if eurc_sw then call trace_mpc_$eurc (addr (eurc_trace), mpc_list_ptr, mpc_datap); 449 else if dau_sw then call trace_mpc_$dau (addr (dau_data (dau_trace_idx)), mpc_list_ptr, mpc_datap); 450 else call trace_mpc_ (addr (mpc_mem_bin), mpc_list_ptr, mpc_datap); 451 end; 452 453 if stat_sw then do; 454 if eurc_sw then call stat_mpc_$eurc (addr (eurc_stats), mpc_list_ptr, mpc_datap, short_sw); 455 else if dau_sw 456 then call stat_mpc_$dau (addr (dau_data (dau_config_idx)), mpc_list_ptr, mpc_datap, short_sw); 457 else call stat_mpc_ (addr (mpc_mem_bin), mpc_list_ptr, mpc_datap, short_sw); 458 end; 459 460 if (mpc_only_sw & ^eurc_sw) then do; 461 if dau_sw 462 then call stat_mpc_$dau_stats_ (addr (dau_data (dau_config_idx)), mpc_list_ptr, mpc_datap, short_sw); 463 else call stat_mpc_$mpc_stats_ (addr (mpc_mem_bin), mpc_list_ptr, mpc_datap, short_sw); 464 end; 465 466 do_io_err (3): 467 done: 468 call clean_up; 469 return; 470 471 /* Error routines */ 472 do_io_err (2): 473 ipc_err: 474 call convert_ipc_code_ (code); 475 err: 476 call com_err_ (code, name); 477 go to done; 478 479 att_err: 480 call com_err_ (code, name, "Attaching ^a.", dev_name); 481 go to done; 482 483 work_err: 484 call com_err_ (code, name, "Creating buffer of ^d words.", ws_size_needed); 485 go to done; 486 487 do_io_err (1): 488 io_err: 489 call com_err_ (code, name, "Issuing connect."); 490 go to done; 491 492 arg_err: 493 call com_err_ (code, name, "^a", arg); 494 usage: 495 call ioa_ ("^a: Usage is ""dump_mpc MPC_NAME {-control_args}""", name); 496 call ioa_ ("Valid control_args are:^/^25t-dump^/^25t-trace^/^25t-stat"); 497 call ioa_ ("^25t-mpc^/^25t-channel IOM_TAG_CC, -ch IOM_TAG_CC^/^25t-output_file PATH, -of PATH"); 498 call ioa_ ("^25t-extend^/^25t-long^/^25t-short "); 499 return; 500 501 iox_err: 502 call com_err_ (code, name, "I/O switch mpc_list."); 503 go to done; 504 505 /* Cleanup handler */ 506 507 clean_up: 508 proc; 509 510 511 call detach_mpc_ (attach_mpc_datap, code); 512 513 if list_open then do; 514 list_open = "0"b; 515 call iox_$close (mpc_list_ptr, code); 516 end; 517 if list_attach then do; 518 list_attach = "0"b; 519 call iox_$detach_iocb (mpc_list_ptr, code); 520 end; 521 if dau_datap ^= null then call release_temp_segment_ ("dump_mpc", dau_datap, code); 522 523 return; 524 525 end clean_up; 526 527 do_io: 528 proc (err_code); 529 dcl err_code fixed bin; 530 531 532 /* Do the io operation */ 533 534 call ioi_$connect (attach_mpc_data.ioi_index, 0, code); 535 if code ^= 0 then do; 536 err_code = 1; /* io_err */ 537 return; 538 end; 539 540 541 call ipc_$block (addr (wait_list), event_wait_info_ptr, code); 542 /* Wait for completion */ 543 if code ^= 0 then do; /* ipc_err */ 544 err_code = 2; 545 return; 546 end; 547 548 549 imp = addr (event_wait_info.message); /* Status is here */ 550 if imess.er then do; /* Error */ 551 if imess.time_out 552 then error_message = "Timeout."; 553 else call analyze_device_stat_$rsnnl (error_message, attach_mpc_data.status_tablep, (imess.status), ("0"b)) 554 ; 555 call com_err_ (0, name, "I/O error occured: ^a", error_message); 556 err_code = 3; 557 return; 558 end; 559 560 err_code = 0; 561 return; 562 end do_io; 563 564 565 build_dump_dcw: 566 proc; 567 568 569 /* Build dcw list to dump R/W memory */ 570 571 idcwp = addr (buf.idcw1); /* First IDCW */ 572 buf.idcw1 = "0"b; 573 idcw.command = "02"b3; /* Command is read controller main memory (ASCII) */ 574 idcw.code = "111"b; /* This makes it an IDCW */ 575 idcw.control = "10"b; /* Set continue bit */ 576 idcw.chan_cmd = "40"b3; /* Indicate special controller command */ 577 578 dcwp = addr (buf.dcw1); 579 buf.dcw1 = "0"b; 580 dcw.address = rel (addr (buf.control)); /* Get offset to control word */ 581 dcw.tally = "000000000001"b; 582 583 idcwp = addr (buf.idcw2); /* Second IDCW */ 584 buf.idcw2 = "0"b; 585 idcw.command = "06"b3; /* Command is initiate read data transfer */ 586 idcw.code = "111"b; /* Code is 111 to make it an idcw */ 587 idcw.chan_cmd = "40"b3; /* Special controller command */ 588 589 dcwp = addr (buf.dcw2); 590 buf.dcw2 = "0"b; 591 dcw.address = rel (addr (buf.mem)); /* Offset to core image */ 592 dcw.tally = bit (bin (size (buf) - bin (rel (addr (buf.mem)), 18), 12)); 593 /* Rest of seg */ 594 595 596 buf.addr = "0"b; /* Mpc address to start is 0 */ 597 buf.tally = bit (bin (mpc_memory_size, 16), 16); 598 buf.fill = "0"b; 599 return; 600 end build_dump_dcw; 601 602 603 build_eurc_dump_dcw: 604 proc; 605 606 /* Build dcw list to get RW mem dump from EURC MPC */ 607 608 idcwp = addr (eurc_dump_buf.idcw1); /* First IDCW */ 609 eurc_dump_buf.idcw1 = "0"b; 610 idcw.command = "02"b3; /* Command is readmemory ASCII */ 611 idcw.code = "111"b; /* This makes it an IDCW */ 612 idcw.control = "10"b; /* Set continue bit */ 613 idcw.chan_cmd = "40"b3; /* Indicate special controller command */ 614 615 dcwp = addr (eurc_dump_buf.dcw1); 616 eurc_dump_buf.dcw1 = "0"b; 617 dcw.address = rel (addr (eurc_dump_buf.control)); /* Get offset to control word */ 618 dcw.tally = "000000000001"b; 619 620 idcwp = addr (eurc_dump_buf.idcw2); /* Second IDCW */ 621 eurc_dump_buf.idcw2 = "0"b; 622 idcw.command = "06"b3; /* Command is initiate read data transfer */ 623 idcw.code = "111"b; /* Code is 111 to make it an idcw */ 624 idcw.chan_cmd = "40"b3; /* Special controller command */ 625 626 dcwp = addr (eurc_dump_buf.dcw2); 627 eurc_dump_buf.dcw2 = "0"b; 628 dcw.address = rel (addr (eurc_dump_buf.eurc_dump)); 629 /* Offset to core image */ 630 dcw.tally = bit (bin (size (eurc_dump_buf) - bin (rel (addr (eurc_dump_buf.eurc_dump)), 18), 12)); 631 /* Rest of seg */ 632 633 eurc_dump_buf.addr = "200000"b3; /* Mpc address to start is 8000 hex */ 634 eurc_dump_buf.tally = "1800"b4; /* Count is 1800 ascii (9-bit) bytes */ 635 return; 636 end build_eurc_dump_dcw; 637 638 639 build_stat_dcw: 640 proc; 641 642 643 /* Build dcw list to get statistics from EURC MPC */ 644 645 idcwp = addr (stat_buf.idcw1); /* First IDCW */ 646 stat_buf.idcw1 = "0"b; 647 idcw.command = "31"b3; /* Command is read Statistics */ 648 idcw.code = "111"b; /* This makes it an IDCW */ 649 idcw.control = "10"b; /* Set continue bit */ 650 idcw.chan_cmd = "41"b3; /* Indicate special controller command */ 651 idcw.count = "15"b3; 652 653 dcwp = addr (stat_buf.dcw1); 654 stat_buf.dcw1 = "0"b; 655 dcw.address = rel (addr (stat_buf.control)); /* Get offset to control word */ 656 dcw.tally = "000000000010"b; 657 658 idcwp = addr (stat_buf.idcw2); /* Second IDCW */ 659 stat_buf.idcw2 = "0"b; 660 idcw.command = "06"b3; /* Command is initiate read data transfer */ 661 idcw.code = "111"b; /* Code is 111 to make it an idcw */ 662 idcw.chan_cmd = "40"b3; /* Special controller command */ 663 664 dcwp = addr (stat_buf.dcw2); 665 stat_buf.dcw2 = "0"b; 666 dcw.address = rel (addr (stat_buf.stats)); /* Offset to core image */ 667 dcw.tally = "0052"b3; /* It returns 42 words */ 668 return; 669 end build_stat_dcw; 670 671 672 build_trace_dcw: 673 proc; 674 675 676 /* Build dcw list to get trace dump from EURC MPC */ 677 678 idcwp = addr (trace_buf.idcw1); /* First IDCW */ 679 trace_buf.idcw1 = "0"b; 680 idcw.command = "31"b3; /* Command is Diagnostic Mode */ 681 idcw.code = "111"b; /* This makes it an IDCW */ 682 idcw.control = "10"b; /* Set continue bit */ 683 idcw.chan_cmd = "41"b3; /* Indicate special controller command */ 684 idcw.count = "10"b3; 685 dcwp = addr (trace_buf.dcw1); 686 trace_buf.dcw1 = "0"b; 687 dcw.address = rel (addr (trace_buf.control)); /* Get offset to control word */ 688 dcw.tally = "000000000010"b; 689 690 idcwp = addr (trace_buf.idcw2); /* Second IDCW */ 691 trace_buf.idcw2 = "0"b; 692 idcw.command = "06"b3; /* Command is initiate read data transfer */ 693 idcw.code = "111"b; /* Code is 111 to make it an idcw */ 694 idcw.chan_cmd = "40"b3; /* Special controller command */ 695 696 dcwp = addr (trace_buf.dcw2); 697 trace_buf.dcw2 = "0"b; 698 dcw.address = rel (addr (trace_buf.trace)); /* Offset to core image */ 699 dcw.tally = "0100"b3; /* It returns 64 words */ 700 return; 701 end build_trace_dcw; 702 703 704 705 706 build_dau_dcw: 707 proc; 708 709 /* Build dcw list to get all needed data from DAU. */ 710 711 dcl (list_idx, next_idx) fixed bin; 712 713 list_idx = 1; 714 idcwp = addr (dau_buf.list (list_idx).idcw); /* First IDCW */ 715 dau_buf.list (list_idx).idcw = "0"b; 716 idcw.command = "24"b3; /* Read Config */ 717 idcw.code = "111"b; /* IDCW */ 718 idcw.chan_cmd = "30"b3; /* Want list in dev# order */ 719 dcwp = addr (dau_buf.list (list_idx).dcw); 720 dau_buf.list (list_idx).dcw = "0"b; 721 dcw.address = rel (addr (dau_buf.data (0))); 722 dcw.tally = "0101"b3; /* 65 words */ 723 dau_config_idx = 0; 724 next_idx = 130; 725 726 if stat_sw | mpc_only_sw then do; 727 idcw.control = "10"b; /* set continue bit for prev IDCW */ 728 dau_stat_idx = next_idx; 729 list_idx = list_idx + 1; 730 idcwp = addr (dau_buf.list (list_idx).idcw); 731 dau_buf.list (list_idx).idcw = "0"b; 732 idcw.command = "26"b3; /* Read Statistics */ 733 idcw.code = "111"b; /* IDCW */ 734 dcwp = addr (dau_buf.list (list_idx).dcw); 735 dau_buf.list (list_idx).dcw = "0"b; 736 dcw.address = rel (addr (dau_buf.data (next_idx))); 737 dcw.tally = "0473"b3; /* 315 words */ 738 next_idx = next_idx + 630; 739 end; 740 741 if trace_sw then do; 742 idcw.control = "10"b; /* set continue bit for prev IDCW */ 743 dau_trace_idx = next_idx; 744 list_idx = list_idx + 1; 745 idcwp = addr (dau_buf.list (list_idx).idcw); 746 dau_buf.list (list_idx).idcw = "0"b; 747 idcw.command = "03"b3; /* Read Trace table */ 748 idcw.code = "111"b; /* IDCW */ 749 idcw.chan_cmd = "40"b3; /* Controller cmd */ 750 dcwp = addr (dau_buf.list (list_idx).dcw); 751 dau_buf.list (list_idx).dcw = "0"b; 752 dcw.address = rel (addr (dau_buf.data (next_idx))); 753 dcw.tally = "0100"b3; /* 64 words */ 754 next_idx = next_idx + 128; 755 end; 756 757 if dump_sw then do; 758 idcw.control = "10"b; /* set continue bit for prev IDCW */ 759 dau_dump_idx = next_idx; /* remember index */ 760 /* DAU memory size is 32K bytes. It will require eight sets */ 761 /* of IDCW/DCW/IDCW/DCW pairs to extract the data, */ 762 /* because we are limited to 4K bytes per I/O. */ 763 764 do i = 1 to 8; 765 list_idx = list_idx + 1; 766 idcwp = addr (dau_buf.list (list_idx).idcw); 767 dau_buf.list (list_idx).idcw = "0"b; 768 idcw.command = "02"b3; /* Read Memory */ 769 idcw.code = "111"b; /* IDCW */ 770 idcw.control = "10"b; /* set continue bit */ 771 idcw.chan_cmd = "40"b3; /* Controller cmd */ 772 dcwp = addr (dau_buf.list (list_idx).dcw); 773 dau_buf.list (list_idx).dcw = "0"b; 774 dcw.address = rel (addr (dau_buf.control (i))); 775 dcw.tally = "000000000001"b; 776 dau_buf.control (i).addr = bit (multiply ((i - 1), 4096, 16), 16); 777 dau_buf.control (i).tally = "1000"b4; /* 4K bytes */ 778 dau_buf.control (i).fill = "0"b; 779 list_idx = list_idx + 1; 780 idcwp = addr (dau_buf.list (list_idx).idcw); 781 dau_buf.list (list_idx).idcw = "0"b; 782 idcw.command = "06"b3; /* Do the read! */ 783 idcw.code = "111"b; /* IDCW */ 784 idcw.control = "10"b; /* set continue bit */ 785 idcw.chan_cmd = "40"b3; /* Controller cmd */ 786 dcwp = addr (dau_buf.list (list_idx).dcw); 787 dau_buf.list (list_idx).dcw = "0"b; 788 dcw.address = rel (addr (dau_buf.data (next_idx))); 789 dcw.tally = "2000"b3; /* 1024 words */ 790 next_idx = next_idx + 2048; /* 2K double-bytes */ 791 end; 792 idcw.control = "00"b; /* Reset continue bit on last IDCW */ 793 end; 794 return; 795 end build_dau_dcw; 796 797 798 1 1 1 2 /* Begin include file ...... iom_pcw.incl.pl1 */ 1 3 1 4 dcl pcwp ptr; /* pointer to PCW */ 1 5 1 6 dcl 1 pcw based (pcwp) aligned, /* Peripheral Control Word */ 1 7 (2 command bit (6), /* device command */ 1 8 2 device bit (6), /* device code */ 1 9 2 ext bit (6), /* address extension */ 1 10 2 code bit (3), /* should be "111"b for PCW */ 1 11 2 mask bit (1), /* channel mask bit */ 1 12 2 control bit (2), /* terminate/proceed and marker control bits */ 1 13 2 chan_cmd bit (6), /* type of I/O operation */ 1 14 2 count bit (6), /* record count or control character */ 1 15 2 mbz1 bit (3), 1 16 2 channel bit (6), /* channel number */ 1 17 2 mbz2 bit (27)) unal; 1 18 1 19 dcl idcwp ptr; /* pointer to IDCW */ 1 20 1 21 dcl 1 idcw based (idcwp) aligned, /* Instruction DCW */ 1 22 (2 command bit (6), /* device command */ 1 23 2 device bit (6), /* device code */ 1 24 2 ext bit (6), /* address extension */ 1 25 2 code bit (3), /* should be "111"b for PCW */ 1 26 2 ext_ctl bit (1), /* "1"b if address extension to be used */ 1 27 2 control bit (2), /* terminate/proceed and marker control bits */ 1 28 2 chan_cmd bit (6), /* type of I/O operation */ 1 29 2 count bit (6)) unal; /* record count or control character */ 1 30 1 31 /* End include file ...... iom_pcw.incl.pl1 */ 1 32 799 800 2 1 2 2 /* Begin include file ...... iom_dcw.incl.pl1 */ 2 3 2 4 dcl dcwp ptr, /* pointer to DCW */ 2 5 tdcwp ptr; /* pointer to TDCW */ 2 6 2 7 dcl 1 dcw based (dcwp) aligned, /* Data Control Word */ 2 8 (2 address bit (18), /* address for data transfer */ 2 9 2 char_pos bit (3), /* character position */ 2 10 2 m64 bit (1), /* non-zero for mod 64 address */ 2 11 2 type bit (2), /* DCW type */ 2 12 2 tally bit (12)) unal; /* tally for data transfer */ 2 13 2 14 dcl 1 tdcw based (tdcwp) aligned, /* Transfer DCW */ 2 15 (2 address bit (18), /* address to transfer to */ 2 16 2 mbz1 bit (4), 2 17 2 type bit (2), /* should be "10"b for TDCW */ 2 18 2 mbz2 bit (9), 2 19 2 ec bit (1), /* non-zero to set LPW AE bit */ 2 20 2 res bit (1), /* non-zero to restrict further use of IDCW */ 2 21 2 rel bit (1)) unal; /* non-zero to set relative mode after transfer */ 2 22 2 23 /* End of include file ...... iom_dcw.incl.pl1 */ 2 24 801 802 3 1 3 2 /* Begin include file ...... ioi_stat.incl.pl1 */ 3 3 /* Last modified 3/24/75 by Noel I. Morris */ 3 4 3 5 dcl isp ptr; /* pointer to status structure */ 3 6 3 7 dcl 1 istat based (isp) aligned, /* I/O Interfacer status structure */ 3 8 2 completion, /* completion flags */ 3 9 (3 st bit (1), /* "1"b if status returned */ 3 10 3 er bit (1), /* "1"b if status indicates error condition */ 3 11 3 run bit (1), /* "1"b if channel still running */ 3 12 3 time_out bit (1)) unal, /* "1"b if time-out occurred */ 3 13 2 level fixed bin (3), /* IOM interrupt level */ 3 14 2 offset fixed bin (18), /* DCW list offset */ 3 15 2 absaddr fixed bin (24), /* absolute address of workspace */ 3 16 2 iom_stat bit (72), /* IOM status */ 3 17 2 lpw bit (72); /* LPW residue */ 3 18 3 19 dcl imp ptr; /* pointer to message structure */ 3 20 3 21 dcl 1 imess based (imp) aligned, /* I/O Interfacer event message structure */ 3 22 (2 completion like istat.completion, /* completion flags */ 3 23 2 pad bit (11), 3 24 2 level bit (3), /* interrupt level */ 3 25 2 offset bit (18), /* DCW list offset */ 3 26 2 status bit (36)) unal; /* first 36 bits of status */ 3 27 3 28 /* End of include file ...... ioi_stat.incl.pl1 */ 3 29 803 804 4 1 /* BEGIN INCLUDE FILE event_wait_info.incl.pl1 */ 4 2 4 3 /* T. Casey, May 1978 */ 4 4 4 5 dcl event_wait_info_ptr ptr; 4 6 4 7 dcl 1 event_wait_info aligned based (event_wait_info_ptr), /* argument structure filled in on return from ipc_$block */ 4 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 4 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 4 10 2 sender bit (36), /* process id of sender */ 4 11 2 origin, 4 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 4 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 4 14 2 channel_index fixed bin; /* index of this channel in the event wait list */ 4 15 4 16 /* END INCLUDE FILE event_wait_info.incl.pl1 */ 805 806 5 1 /* Begin include file ..... dump_mpc_data.incl.pl1 */ 5 2 5 3 /* Structure of data used by the dump_mpc command */ 5 4 5 5 /* Written March 1977 by Larry Johnson */ 5 6 /* Modified Jan 1981 by Rich Coppola to add additional info about mpc's */ 5 7 /* Modified May 1982 by Rich Coppola to add structure for EURC statistics */ 5 8 /* 5 9* Modified June 1984 by Paul Farley to add MSP800(DAU) support. 5 10**/ 5 11 5 12 dcl mpc_datap ptr; 5 13 5 14 dcl 1 mpc_data aligned based (mpc_datap), 5 15 2 type char (4), /* Type of mpc: tape, disk, or urc */ 5 16 2 name char (32), /* Name of device, suitable for headings */ 5 17 2 model fixed bin, /* Model of device, from rcp_ */ 5 18 2 fw_rev char (2), /* Revision level of current firmware */ 5 19 2 trace_start fixed bin, /* Address of first trace table entry */ 5 20 2 trace_size fixed bin, /* Total number of mpc words in trace table */ 5 21 2 trace_cur fixed bin, /* Address of next available trace entry */ 5 22 2 mpc_stat_addr fixed bin, /* Address of mpc error counters */ 5 23 2 mpc_err_int_ctr_addr fixed bin, /* Address of the err int ctr */ 5 24 2 mpc_err_data_reg_addr fixed bin, /* Address of error data register */ 5 25 2 dev_stat_addr fixed bin, /* Address of device statistics table */ 5 26 2 config_sw bit (16), /* Settings of switches on maintaince panel */ 5 27 2 dau_rev bit (8); /* Revision of DAU hardware */ 5 28 5 29 5 30 /* structure of data collected on mpc statistics */ 5 31 5 32 dcl mpc_stat_infop ptr; 5 33 5 34 dcl 1 mpc_stat_info aligned based (mpc_stat_infop), 5 35 2 mpc_name char (4), 5 36 2 stat_counters (12) fixed bin, 5 37 2 error_data, 5 38 3 pad bit (8), 5 39 3 int_counter fixed bin (8) uns, 5 40 3 register bit (16), 5 41 3 auxar bit (16), 5 42 3 intar bit (16), 5 43 2 eurc_data, 5 44 3 uptime_clock fixed bin (32) uns, 5 45 3 prom_revision, 5 46 4 core bit (8), 5 47 4 iom bit (8), 5 48 4 special_controller bit (8), 5 49 4 link_edit bit (8), 5 50 4 pdsi_application bit (8), 5 51 4 self_test bit (8), 5 52 4 dai_application bit (8), 5 53 2 ndev fixed bin, 5 54 2 dev_info (64) like dev_stat_info; 5 55 5 56 dcl dev_stat_infop ptr; 5 57 5 58 dcl 1 dev_stat_info aligned based (dev_stat_infop), 5 59 2 subsystem char (4), 5 60 2 model char (6), 5 61 2 driveno fixed bin, 5 62 2 opi bit (1), 5 63 2 port fixed bin, 5 64 2 ca fixed bin, 5 65 2 stat (16) fixed bin (16) uns; 5 66 5 67 dcl mpc_stat_analp ptr; 5 68 5 69 dcl 1 mpc_stat_anal based (mpc_stat_analp), 5 70 2 num_interps fixed bin, 5 71 2 interpretation (16), 5 72 3 message char (43) var, 5 73 3 HINT char (21) var, 5 74 2 auxar bit (16), 5 75 2 intar bit (16), 5 76 2 err_ctr fixed bin, 5 77 2 mpc_stat_ctrs, 5 78 3 num_ctr_interps fixed bin, 5 79 3 interp_stat_ctrs (20) char (20) var, 5 80 3 stat_cntr_cnt (20) fixed bin; 5 81 5 82 /* End include file ..... dump_mpc_data.incl.pl1 */ 807 808 6 1 /* Begin include file ..... attach_mpc_data.incl.pl1 */ 6 2 6 3 /* Defines the arguments to the attach_mpc_ subroutine */ 6 4 /* Prepared January 1980 by Larry Johnson */ 6 5 6 6 dcl attach_mpc_datap ptr; 6 7 dcl attach_mpc_data_version_1 fixed bin int static options (constant) init (1); 6 8 6 9 dcl 1 attach_mpc_data aligned based (attach_mpc_datap), 6 10 2 version fixed bin, /* Version of this structure (I) */ 6 11 2 mpc_name char (32), /* Name of mpc to attach (I/O) */ 6 12 2 caller_name char (32), /* Name of caller, for error mesages (I) */ 6 13 2 flags unal, 6 14 3 channel_required bit (1), /* Caller has specified IOM and channel (I) */ 6 15 3 bootload_channel bit (1), /* Caller wants bootload channel (I) */ 6 16 3 report bit (1), /* Allow com_err_ cals (I) */ 6 17 3 mbz bit (33), /* (I) */ 6 18 2 iom fixed bin (3), /* Which IOM to use (I/O) */ 6 19 2 channel fixed bin (6), /* Which channel to use (I/O) */ 6 20 2 ioi_index fixed bin, /* Index for caller to talk to ioi (O) */ 6 21 2 rcp_id bit (36), /* ID for calling RCP (O) */ 6 22 2 ioi_channel fixed bin (71), /* Event channel for ioi wakeups (O) */ 6 23 2 max_time_limit fixed bin (71), /* Longest time to wait for I/O to complete (O) */ 6 24 2 max_workspace_size fixed bin (19), /* Largest workspace to use (O) */ 6 25 2 type char (4), /* MPC type, urp, msp, or mtp (O) */ 6 26 2 model fixed bin, /* MPC model number (O) */ 6 27 2 mpc_cardp ptr, /* Pointer to mpc card of mpc attached (O) */ 6 28 2 prph_cardp ptr, /* Pointer to prph card of device attached (O) */ 6 29 2 status_tablep ptr, /* Address of status table for decoding errors (O) */ 6 30 2 device_name char (32); /* Name of device actually attached (O) */ 6 31 6 32 /* End include file ..... attach_mpc_data.incl.pl1 */ 809 810 7 1 /* BEGIN INCLUDE FILE ... eurc_model_numbers.incl.pl1 ... 11/13/81 E. N. Kittlitz */ 7 2 7 3 dcl eurc_model_numbers (4) fixed bin internal static init (8001, 8002, 8003, 8004); 7 4 7 5 /* END INCLUDE FILE ... eurc_model_numbers.incl.pl1 ... */ 811 812 end dump_mpc; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/02/85 1035.4 dump_mpc.pl1 >spec>on>6953_pbf-04/02/85>dump_mpc.pl1 799 1 05/06/74 1742.1 iom_pcw.incl.pl1 >ldd>include>iom_pcw.incl.pl1 801 2 11/12/74 1550.1 iom_dcw.incl.pl1 >ldd>include>iom_dcw.incl.pl1 803 3 08/17/79 2215.0 ioi_stat.incl.pl1 >ldd>include>ioi_stat.incl.pl1 805 4 06/29/79 1727.8 event_wait_info.incl.pl1 >ldd>include>event_wait_info.incl.pl1 807 5 10/08/84 1326.0 dump_mpc_data.incl.pl1 >ldd>include>dump_mpc_data.incl.pl1 809 6 08/11/80 1844.3 attach_mpc_data.incl.pl1 >ldd>include>attach_mpc_data.incl.pl1 811 7 05/27/82 1525.6 eurc_model_numbers.incl.pl1 >ldd>include>eurc_model_numbers.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. addr 50 based bit(16) array level 3 in structure "dau_buf" packed unaligned dcl 115 in procedure "dump_mpc" set ref 776* addr builtin function dcl 177 in procedure "dump_mpc" ref 193 197 299 398 437 437 439 439 442 442 443 443 444 444 448 448 449 449 450 450 454 454 455 455 457 457 461 461 463 463 541 541 549 571 578 580 583 589 591 592 608 615 617 620 626 628 630 645 653 655 658 664 666 678 685 687 690 696 698 714 719 721 730 734 736 745 750 752 766 772 774 780 786 788 addr 4 based bit(18) level 3 in structure "eurc_dump_buf" packed unaligned dcl 105 in procedure "dump_mpc" set ref 633* addr 4 based bit(16) level 3 in structure "buf" packed unaligned dcl 72 in procedure "dump_mpc" set ref 596* address based bit(18) level 2 packed unaligned dcl 2-7 set ref 580* 591* 617* 628* 655* 666* 687* 698* 721* 736* 752* 774* 788* analyze_device_stat_$rsnnl 000106 constant entry external dcl 171 ref 553 arg based char unaligned dcl 41 set ref 210 211 212 213 214 215 216 217 219 219 229 240 240 240 247* 249* 259 492* arg_len 000130 automatic fixed bin(17,0) dcl 40 set ref 208* 210 211 212 213 214 215 216 217 219 219 224* 229 234 240 240 240 242* 247 247 249 249 259 492 492 arg_ptr 000126 automatic pointer dcl 39 set ref 184* 208* 210 211 212 213 214 215 216 217 219 219 224* 229 233 240 240 240 242* 247 249 259 492 attach_desc 000163 automatic varying char(256) dcl 59 set ref 401* 402* 402 403 attach_mpc_ 000100 constant entry external dcl 168 ref 284 attach_mpc_data based structure level 1 dcl 6-9 set ref 194* attach_mpc_data_version_1 constant fixed bin(17,0) initial dcl 6-7 ref 195 attach_mpc_datap 007062 automatic pointer dcl 6-6 set ref 193* 194 195 196 247 247 252 259 259 271 271 282 283 284* 300 301 302 303 335 337 341 397 432* 511* 534 553 bin builtin function dcl 177 ref 592 592 597 630 630 bit builtin function dcl 177 ref 592 597 630 776 buf based structure level 1 dcl 72 set ref 333 592 caller_name 11 based char(32) level 2 dcl 6-9 set ref 283* chan_cmd 0(24) based bit(6) level 2 packed unaligned dcl 1-21 set ref 576* 587* 613* 624* 650* 662* 683* 694* 718* 749* 771* 785* channel 23 based fixed bin(6,0) level 2 dcl 6-9 set ref 247* channel_required 21 based bit(1) level 3 packed unaligned dcl 6-9 set ref 252* 271 char_mpc_ 000030 constant entry external dcl 148 ref 437 439 cleanup 007034 stack reference condition dcl 179 ref 279 code 000100 automatic fixed bin(35,0) dcl 31 in procedure "dump_mpc" set ref 183* 202* 204 208* 209 224* 227 242* 243 244* 247* 248 249* 255* 264* 284* 285 317* 318 319* 341* 342 403* 404 406* 407 432* 472* 475* 479* 483* 487* 492* 501* 511* 515* 519* 521* 534* 535 541* 543 code 0(18) based bit(3) level 2 in structure "idcw" packed unaligned dcl 1-21 in procedure "dump_mpc" set ref 574* 586* 611* 623* 648* 661* 681* 693* 717* 733* 748* 769* 783* com_err_ 000024 constant entry external dcl 146 ref 188 244 249 319 337 475 479 483 487 492 501 555 command based bit(6) level 2 packed unaligned dcl 1-21 set ref 573* 585* 610* 622* 647* 660* 680* 692* 716* 732* 747* 768* 782* completion based structure level 2 in structure "istat" dcl 3-7 in procedure "dump_mpc" completion based structure level 2 in structure "imess" packed unaligned dcl 3-21 in procedure "dump_mpc" control 4 based structure level 2 in structure "trace_buf" dcl 94 in procedure "dump_mpc" set ref 687 control 4 based structure level 2 in structure "stat_buf" dcl 83 in procedure "dump_mpc" set ref 655 control 0(22) based bit(2) level 2 in structure "idcw" packed unaligned dcl 1-21 in procedure "dump_mpc" set ref 575* 612* 649* 682* 727* 742* 758* 770* 784* 792* control 50 based structure array level 2 in structure "dau_buf" dcl 115 in procedure "dump_mpc" set ref 774 control 4 based structure level 2 in structure "eurc_dump_buf" dcl 105 in procedure "dump_mpc" set ref 617 control 4 based structure level 2 in structure "buf" dcl 72 in procedure "dump_mpc" set ref 580 convert_ipc_code_ 000022 constant entry external dcl 145 ref 472 count 0(30) based bit(6) level 2 packed unaligned dcl 1-21 set ref 651* 684* cu_$arg_count 000060 constant entry external dcl 160 ref 186 cu_$arg_ptr 000062 constant entry external dcl 161 ref 208 224 242 data 60 based bit(18) array level 2 packed unaligned dcl 115 set ref 417 418 721 736 752 788 dau_buf based structure level 1 dcl 115 set ref 329 dau_config_idx 000504 automatic fixed bin(17,0) dcl 125 set ref 437 437 455 455 461 461 723* dau_data based bit(16) array unaligned dcl 135 set ref 417* 418* 437 437 443 443 449 449 455 455 461 461 dau_data_bytes 000265 automatic fixed bin(17,0) dcl 61 set ref 322* 323* 323 324* 324 325* 325 329 414 dau_datap 007032 automatic pointer initial dcl 134 set ref 134* 317* 417 418 437 437 443 443 449 449 455 455 461 461 521 521* dau_dump_idx 000507 automatic fixed bin(17,0) dcl 125 set ref 443 443 759* dau_stat_idx 000505 automatic fixed bin(17,0) dcl 125 set ref 728* dau_sw 000162 automatic bit(1) initial unaligned dcl 58 set ref 58* 312* 316 385 414 437 443 449 455 461 dau_trace_idx 000506 automatic fixed bin(17,0) dcl 125 set ref 449 449 743* dcw based structure level 1 dcl 2-7 in procedure "dump_mpc" dcw 1 based bit(36) array level 3 in structure "dau_buf" dcl 115 in procedure "dump_mpc" set ref 719 720* 734 735* 750 751* 772 773* 786 787* dcw1 1 based bit(36) level 2 in structure "eurc_dump_buf" dcl 105 in procedure "dump_mpc" set ref 615 616* dcw1 1 based bit(36) level 2 in structure "buf" dcl 72 in procedure "dump_mpc" set ref 578 579* dcw1 1 based bit(36) level 2 in structure "stat_buf" dcl 83 in procedure "dump_mpc" set ref 653 654* dcw1 1 based bit(36) level 2 in structure "trace_buf" dcl 94 in procedure "dump_mpc" set ref 685 686* dcw2 3 based bit(36) level 2 in structure "buf" dcl 72 in procedure "dump_mpc" set ref 589 590* dcw2 3 based bit(36) level 2 in structure "stat_buf" dcl 83 in procedure "dump_mpc" set ref 664 665* dcw2 3 based bit(36) level 2 in structure "trace_buf" dcl 94 in procedure "dump_mpc" set ref 696 697* dcw2 3 based bit(36) level 2 in structure "eurc_dump_buf" dcl 105 in procedure "dump_mpc" set ref 626 627* dcwp 007052 automatic pointer dcl 2-4 set ref 578* 580 581 589* 591 592 615* 617 618 626* 628 630 653* 655 656 664* 666 667 685* 687 688 696* 698 699 719* 721 722 734* 736 737 750* 752 753 772* 774 775 786* 788 789 default_path 000135 automatic char(32) unaligned dcl 45 set ref 397* 398 399 detach_mpc_ 000102 constant entry external dcl 169 ref 432 511 dev_name 000113 automatic varying char(32) dcl 37 set ref 479* dev_stat_info based structure level 1 dcl 5-58 dump_mpc_ 000032 constant entry external dcl 149 ref 444 dump_mpc_$dau 000034 constant entry external dcl 150 ref 443 dump_mpc_$eurc 000036 constant entry external dcl 151 ref 442 dump_sw 000156 automatic bit(1) initial unaligned dcl 54 set ref 54* 211* 274 325 351 441 757 er 0(01) based bit(1) level 3 packed unaligned dcl 3-21 ref 550 err_code parameter fixed bin(17,0) dcl 529 set ref 527 536* 544* 556* 560* error_message 000266 automatic varying char(256) dcl 62 set ref 551* 553* 555* error_table_$badopt 000114 external static fixed bin(35,0) dcl 175 ref 255 error_table_$noarg 000110 external static fixed bin(35,0) dcl 173 set ref 188* error_table_$request_not_recognized 000112 external static fixed bin(35,0) dcl 174 ref 264 eurc_dump 5 based bit(18) array level 2 packed unaligned dcl 105 set ref 357 358 628 630 eurc_dump_buf based structure level 1 dcl 105 set ref 630 eurc_mem_bin 000510 automatic bit(16) array unaligned dcl 130 set ref 357* 358* 442 442 eurc_model_numbers 000003 constant fixed bin(17,0) initial array dcl 7-3 ref 306 309 eurc_stats 006764 automatic bit(16) array unaligned dcl 133 set ref 368* 369* 454 454 eurc_sw 000161 automatic bit(1) initial unaligned dcl 57 set ref 57* 305* 306 309* 344 421 442 448 454 460 eurc_trace 006673 automatic bit(8) array unaligned dcl 132 set ref 378* 448 448 ev_chan 2 000500 automatic fixed bin(71,0) level 2 dcl 68 set ref 303* event_wait_info based structure level 1 dcl 4-7 event_wait_info_ptr 007056 automatic pointer dcl 4-5 set ref 197* 541* 549 extend_sw 000157 automatic bit(1) initial unaligned dcl 55 set ref 55* 215* 402 fill 50(32) based bit(4) array level 3 in structure "dau_buf" packed unaligned dcl 115 in procedure "dump_mpc" set ref 778* fill 4(32) based bit(4) level 3 in structure "buf" packed unaligned dcl 72 in procedure "dump_mpc" set ref 598* flags 21 based structure level 2 packed unaligned dcl 6-9 get_line_length_$switch 000064 constant entry external dcl 162 ref 202 get_temp_segment_ 000010 constant entry external dcl 140 ref 317 hbound builtin function dcl 177 ref 306 i 000111 automatic fixed bin(17,0) dcl 36 set ref 207* 208* 223 235* 235 241* 241 242* 306* 309* 356* 357 357 358 358* 367* 368 368 369 369* 377* 378 378* 414* 417 417 418 418* 421* 424 424 425 425* 764* 774 776 776 777 778* idcw based bit(36) array level 3 in structure "dau_buf" dcl 115 in procedure "dump_mpc" set ref 714 715* 730 731* 745 746* 766 767* 780 781* idcw based structure level 1 dcl 1-21 in procedure "dump_mpc" idcw1 based bit(36) level 2 in structure "eurc_dump_buf" dcl 105 in procedure "dump_mpc" set ref 608 609* idcw1 based bit(36) level 2 in structure "trace_buf" dcl 94 in procedure "dump_mpc" set ref 678 679* idcw1 based bit(36) level 2 in structure "stat_buf" dcl 83 in procedure "dump_mpc" set ref 645 646* idcw1 based bit(36) level 2 in structure "buf" dcl 72 in procedure "dump_mpc" set ref 571 572* idcw2 2 based bit(36) level 2 in structure "stat_buf" dcl 83 in procedure "dump_mpc" set ref 658 659* idcw2 2 based bit(36) level 2 in structure "eurc_dump_buf" dcl 105 in procedure "dump_mpc" set ref 620 621* idcw2 2 based bit(36) level 2 in structure "buf" dcl 72 in procedure "dump_mpc" set ref 583 584* idcw2 2 based bit(36) level 2 in structure "trace_buf" dcl 94 in procedure "dump_mpc" set ref 690 691* idcwp 007050 automatic pointer dcl 1-19 set ref 571* 573 574 575 576 583* 585 586 587 608* 610 611 612 613 620* 622 623 624 645* 647 648 649 650 651 658* 660 661 662 678* 680 681 682 683 684 690* 692 693 694 714* 716 717 718 727 730* 732 733 742 745* 747 748 749 758 766* 768 769 770 771 780* 782 783 784 785 792 imess based structure level 1 dcl 3-21 imp 007054 automatic pointer dcl 3-19 set ref 549* 550 551 553 io_code 000104 automatic fixed bin(17,0) dcl 33 set ref 353* 354 354 365* 366 366 375* 376 376 388* 389 389 ioa_ 000026 constant entry external dcl 147 ref 347 494 496 497 498 ioi_$connect 000016 constant entry external dcl 143 ref 534 ioi_$workspace 000014 constant entry external dcl 142 ref 341 ioi_channel 26 based fixed bin(71,0) level 2 dcl 6-9 set ref 303 ioi_index 24 based fixed bin(17,0) level 2 dcl 6-9 set ref 341* 534* iom 22 based fixed bin(3,0) level 2 dcl 6-9 set ref 247* iox_$attach_ioname 000070 constant entry external dcl 164 ref 403 iox_$close 000074 constant entry external dcl 166 ref 515 iox_$detach_iocb 000076 constant entry external dcl 167 ref 519 iox_$open 000072 constant entry external dcl 165 ref 406 iox_$user_output 000066 external static pointer dcl 163 ref 200 ipc_$block 000020 constant entry external dcl 144 ref 541 istat based structure level 1 dcl 3-7 j 000112 automatic fixed bin(17,0) dcl 36 set ref 223* 224* length builtin function dcl 177 ref 399 line_length 000145 automatic fixed bin(17,0) dcl 46 set ref 202* 203 list based structure array level 2 dcl 115 list_attach 000150 automatic bit(1) initial unaligned dcl 48 set ref 48* 405* 517 518* list_idx 007134 automatic fixed bin(17,0) dcl 711 set ref 713* 714 715 719 720 729* 729 730 731 734 735 744* 744 745 746 750 751 765* 765 766 767 772 773 779* 779 780 781 786 787 list_open 000151 automatic bit(1) initial unaligned dcl 49 set ref 49* 408* 513 514* max_workspace_size 32 based fixed bin(19,0) level 2 dcl 6-9 set ref 335 337* mem 5 based bit(18) array level 2 packed unaligned dcl 72 set ref 424 425 591 592 message 2 based fixed bin(71,0) level 2 dcl 4-7 set ref 549 model 34 based fixed bin(17,0) level 2 in structure "attach_mpc_data" dcl 6-9 in procedure "dump_mpc" set ref 301 model 11 based fixed bin(17,0) level 2 in structure "mpc_data" dcl 5-14 in procedure "dump_mpc" set ref 301* 309 312 mpc_data based structure level 1 dcl 5-14 mpc_datap 007060 automatic pointer dcl 5-12 set ref 299* 300 301 302 306 309 312 312 437* 439* 442* 443* 444* 448* 449* 450* 454* 455* 457* 461* 463* mpc_list_ptr 000146 automatic pointer dcl 47 set ref 200* 403* 406* 442* 443* 444* 448* 449* 450* 454* 455* 457* 461* 463* 515* 519* mpc_mem_bin 003236 automatic bit(16) array unaligned dcl 131 set ref 424* 425* 439 439 444 444 450 450 457 457 463 463 mpc_memory_size 000264 automatic fixed bin(17,0) dcl 60 set ref 332* 333 421 592 597 mpc_name 1 based char(32) level 2 dcl 6-9 set ref 196* 259 259* 271 300 397 mpc_only_sw 000153 automatic bit(1) initial unaligned dcl 51 set ref 51* 214* 274 323 346 460 726 multiply builtin function dcl 177 ref 776 my_attach_data 000414 automatic structure level 1 dcl 65 set ref 193 my_event_wait_info 000470 automatic structure level 1 dcl 66 set ref 197 my_mpc_data 000367 automatic structure level 1 dcl 64 set ref 299 n_args 000124 automatic fixed bin(17,0) dcl 38 set ref 186* 187 207 name 000102 automatic char(8) initial unaligned dcl 32 in procedure "dump_mpc" set ref 32* 188* 244* 249* 283 319* 337* 475* 479* 483* 487* 492* 494* 501* 555* name 1 based char(32) level 2 in structure "mpc_data" dcl 5-14 in procedure "dump_mpc" set ref 300* 306 312 nchan 000500 automatic fixed bin(17,0) initial level 2 dcl 68 set ref 68* next_idx 007135 automatic fixed bin(17,0) dcl 711 set ref 724* 728 736 738* 738 743 752 754* 754 759 788 790* 790 null builtin function dcl 177 ref 134 184 199 202 202 227 229 396 521 of_sw 000152 automatic bit(1) initial unaligned dcl 50 set ref 50* 220* 395 parse_io_channel_name_ 000104 constant entry external dcl 170 ref 247 path based char unaligned dcl 44 ref 401 path_len 000134 automatic fixed bin(17,0) dcl 43 set ref 234* 399* 401 path_ptr 000132 automatic pointer dcl 42 set ref 199* 227* 229* 233* 396 398* 401 rel builtin function dcl 177 ref 580 591 592 617 628 630 655 666 687 698 721 736 752 774 788 release_temp_segment_ 000012 constant entry external dcl 141 ref 521 report 21(02) based bit(1) level 3 packed unaligned dcl 6-9 set ref 282* rtrim builtin function dcl 177 ref 397 401 402 short_sw 000160 automatic bit(1) initial unaligned dcl 56 set ref 56* 203* 204* 216* 217* 221* 442* 443* 444* 454* 455* 457* 461* 463* size builtin function dcl 177 ref 329 333 592 630 stat_buf based structure level 1 dcl 83 stat_mpc_ 000040 constant entry external dcl 152 ref 457 stat_mpc_$dau 000042 constant entry external dcl 153 ref 455 stat_mpc_$dau_stats_ 000050 constant entry external dcl 156 ref 461 stat_mpc_$eurc 000044 constant entry external dcl 154 ref 454 stat_mpc_$mpc_stats_ 000046 constant entry external dcl 155 ref 463 stat_sw 000154 automatic bit(1) initial unaligned dcl 52 set ref 52* 212* 274 274* 323 363 453 726 stats 5 based bit(18) array level 2 packed unaligned dcl 83 set ref 368 369 666 status 1 based bit(36) level 2 packed unaligned dcl 3-21 ref 553 status_tablep 42 based pointer level 2 dcl 6-9 set ref 553* substr builtin function dcl 177 set ref 210 229 306 312 357* 357 358* 358 368* 368 369* 369 378* 378 417* 417 418* 418 424* 424 425* 425 sus_ 007042 stack reference condition dcl 179 ref 280 tally 4(18) based bit(18) level 3 in structure "eurc_dump_buf" packed unaligned dcl 105 in procedure "dump_mpc" set ref 634* tally 0(24) based bit(12) level 2 in structure "dcw" packed unaligned dcl 2-7 in procedure "dump_mpc" set ref 581* 592* 618* 630* 656* 667* 688* 699* 722* 737* 753* 775* 789* tally 50(16) based bit(16) array level 3 in structure "dau_buf" packed unaligned dcl 115 in procedure "dump_mpc" set ref 777* tally 4(16) based bit(16) level 3 in structure "buf" packed unaligned dcl 72 in procedure "dump_mpc" set ref 597* time_out 0(03) based bit(1) level 3 packed unaligned dcl 3-21 ref 551 trace 5 based bit(9) array level 2 packed unaligned dcl 94 set ref 378 698 trace_buf based structure level 1 dcl 94 trace_mpc_ 000052 constant entry external dcl 157 ref 450 trace_mpc_$dau 000054 constant entry external dcl 158 ref 449 trace_mpc_$eurc 000056 constant entry external dcl 159 ref 448 trace_sw 000155 automatic bit(1) initial unaligned dcl 53 set ref 53* 213* 274 324 373 447 741 type based char(4) level 2 in structure "mpc_data" dcl 5-14 in procedure "dump_mpc" set ref 302* type 33 based char(4) level 2 in structure "attach_mpc_data" dcl 6-9 in procedure "dump_mpc" set ref 302 unspec builtin function dcl 177 set ref 194* version based fixed bin(17,0) level 2 dcl 6-9 set ref 195* wait_list 000500 automatic structure level 1 dcl 68 set ref 541 541 workp 000106 automatic pointer dcl 34 set ref 329 333 341* 357 358 368 369 378 417 418 424 425 571 572 578 579 580 583 584 589 590 591 592 592 596 597 598 608 609 615 616 617 620 621 626 627 628 630 630 633 634 645 646 653 654 655 658 659 664 665 666 678 679 685 686 687 690 691 696 697 698 714 715 719 720 721 730 731 734 735 736 745 746 750 751 752 766 767 772 773 774 776 777 778 780 781 786 787 788 ws_size_needed 000110 automatic fixed bin(18,0) dcl 35 set ref 329* 333* 335 337* 341* 483* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. dev_stat_infop automatic pointer dcl 5-56 isp automatic pointer dcl 3-5 mpc_stat_anal based structure level 1 unaligned dcl 5-69 mpc_stat_analp automatic pointer dcl 5-67 mpc_stat_info based structure level 1 dcl 5-34 mpc_stat_infop automatic pointer dcl 5-32 pcw based structure level 1 dcl 1-6 pcwp automatic pointer dcl 1-4 tdcw based structure level 1 dcl 2-14 tdcwp automatic pointer dcl 2-4 NAMES DECLARED BY EXPLICIT CONTEXT. arg_err 002663 constant label dcl 492 ref 256 265 att_err 002546 constant label dcl 479 build_dau_dcw 003645 constant entry internal dcl 706 ref 385 build_dump_dcw 003315 constant entry internal dcl 565 ref 387 build_eurc_dump_dcw 003423 constant entry internal dcl 603 ref 352 build_stat_dcw 003515 constant entry internal dcl 639 ref 364 build_trace_dcw 003571 constant entry internal dcl 672 ref 374 clean_up 003027 constant entry internal dcl 507 ref 279 280 466 do_io 003130 constant entry internal dcl 527 ref 353 365 375 388 do_io_err 000000 constant label array(3) dcl 466 ref 354 366 376 389 done 002514 constant label dcl 466 ref 245 250 320 339 348 477 481 485 490 503 dump_mpc 000311 constant entry external dcl 28 err 002530 constant label dcl 475 ref 209 io_err 002633 constant label dcl 487 iox_err 003001 constant label dcl 501 ref 404 407 ipc_err 002521 constant label dcl 472 no_dev 000351 constant label dcl 188 set ref 271 usage 002714 constant label dcl 494 set ref 190 work_err 002602 constant label dcl 483 ref 342 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4554 4672 4152 4564 Length 5276 4152 116 367 402 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dump_mpc 3780 external procedure is an external procedure. on unit on line 279 64 on unit on unit on line 280 64 on unit clean_up 86 internal procedure is called by several nonquick procedures. do_io internal procedure shares stack frame of external procedure dump_mpc. build_dump_dcw internal procedure shares stack frame of external procedure dump_mpc. build_eurc_dump_dcw internal procedure shares stack frame of external procedure dump_mpc. build_stat_dcw internal procedure shares stack frame of external procedure dump_mpc. build_trace_dcw internal procedure shares stack frame of external procedure dump_mpc. build_dau_dcw internal procedure shares stack frame of external procedure dump_mpc. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dump_mpc 000100 code dump_mpc 000102 name dump_mpc 000104 io_code dump_mpc 000106 workp dump_mpc 000110 ws_size_needed dump_mpc 000111 i dump_mpc 000112 j dump_mpc 000113 dev_name dump_mpc 000124 n_args dump_mpc 000126 arg_ptr dump_mpc 000130 arg_len dump_mpc 000132 path_ptr dump_mpc 000134 path_len dump_mpc 000135 default_path dump_mpc 000145 line_length dump_mpc 000146 mpc_list_ptr dump_mpc 000150 list_attach dump_mpc 000151 list_open dump_mpc 000152 of_sw dump_mpc 000153 mpc_only_sw dump_mpc 000154 stat_sw dump_mpc 000155 trace_sw dump_mpc 000156 dump_sw dump_mpc 000157 extend_sw dump_mpc 000160 short_sw dump_mpc 000161 eurc_sw dump_mpc 000162 dau_sw dump_mpc 000163 attach_desc dump_mpc 000264 mpc_memory_size dump_mpc 000265 dau_data_bytes dump_mpc 000266 error_message dump_mpc 000367 my_mpc_data dump_mpc 000414 my_attach_data dump_mpc 000470 my_event_wait_info dump_mpc 000500 wait_list dump_mpc 000504 dau_config_idx dump_mpc 000505 dau_stat_idx dump_mpc 000506 dau_trace_idx dump_mpc 000507 dau_dump_idx dump_mpc 000510 eurc_mem_bin dump_mpc 003236 mpc_mem_bin dump_mpc 006673 eurc_trace dump_mpc 006764 eurc_stats dump_mpc 007032 dau_datap dump_mpc 007050 idcwp dump_mpc 007052 dcwp dump_mpc 007054 imp dump_mpc 007056 event_wait_info_ptr dump_mpc 007060 mpc_datap dump_mpc 007062 attach_mpc_datap dump_mpc 007134 list_idx build_dau_dcw 007135 next_idx build_dau_dcw THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_out_desc call_ext_out call_int_this call_int_other return enable shorten_stack ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. analyze_device_stat_$rsnnl attach_mpc_ char_mpc_ com_err_ convert_ipc_code_ cu_$arg_count cu_$arg_ptr detach_mpc_ dump_mpc_ dump_mpc_$dau dump_mpc_$eurc get_line_length_$switch get_temp_segment_ ioa_ ioi_$connect ioi_$workspace iox_$attach_ioname iox_$close iox_$detach_iocb iox_$open ipc_$block parse_io_channel_name_ release_temp_segment_ stat_mpc_ stat_mpc_$dau stat_mpc_$dau_stats_ stat_mpc_$eurc stat_mpc_$mpc_stats_ trace_mpc_ trace_mpc_$dau trace_mpc_$eurc THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$noarg error_table_$request_not_recognized iox_$user_output LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 28 000310 32 000316 48 000320 49 000321 50 000322 51 000323 52 000324 53 000325 54 000326 55 000327 56 000330 57 000331 58 000332 68 000333 134 000335 183 000337 184 000340 186 000341 187 000347 188 000351 190 000374 193 000375 194 000377 195 000402 196 000404 197 000407 199 000411 200 000413 202 000417 203 000433 204 000440 207 000444 208 000453 209 000470 210 000472 211 000477 212 000507 213 000516 214 000525 215 000534 216 000543 217 000552 219 000561 220 000571 221 000573 223 000575 224 000600 227 000615 229 000622 233 000632 234 000633 235 000635 237 000636 240 000637 241 000653 242 000654 243 000671 244 000673 245 000722 247 000723 248 000754 249 000756 250 001010 252 001011 253 001014 255 001015 256 001020 258 001021 259 001022 264 001034 265 001037 267 001040 271 001042 274 001052 279 001064 280 001106 282 001130 283 001133 284 001136 285 001147 299 001151 300 001153 301 001157 302 001161 303 001163 305 001165 306 001166 309 001203 310 001212 312 001215 316 001224 317 001226 318 001251 319 001253 320 001277 322 001300 323 001302 324 001310 325 001314 329 001320 330 001326 332 001327 333 001331 335 001336 337 001341 339 001376 341 001377 342 001414 344 001416 346 001420 347 001422 348 001436 351 001437 352 001441 353 001442 354 001444 356 001447 357 001453 358 001465 359 001477 363 001501 364 001503 365 001504 366 001506 367 001511 368 001515 369 001527 370 001541 373 001543 374 001545 375 001546 376 001550 377 001553 378 001557 379 001570 381 001572 385 001573 387 001577 388 001600 389 001602 395 001605 396 001607 397 001613 398 001642 399 001645 401 001647 402 001703 403 001741 404 002001 405 002004 406 002006 407 002027 408 002031 414 002033 417 002045 418 002061 419 002072 421 002075 424 002107 425 002121 426 002133 432 002135 437 002146 439 002167 441 002202 442 002204 443 002226 444 002253 447 002272 448 002274 449 002314 450 002337 453 002354 454 002356 455 002400 457 002425 460 002444 461 002450 463 002475 466 002514 469 002520 472 002521 475 002530 477 002545 479 002546 481 002601 483 002602 485 002632 487 002633 490 002662 492 002663 494 002714 496 002734 497 002750 498 002764 499 003000 501 003001 503 003025 507 003026 511 003034 513 003045 514 003050 515 003051 517 003062 518 003065 519 003066 521 003077 523 003127 527 003130 534 003132 535 003147 536 003151 537 003154 541 003155 543 003172 544 003174 545 003177 549 003200 550 003203 551 003206 553 003217 555 003252 556 003306 557 003311 560 003312 561 003314 565 003315 571 003316 572 003320 573 003321 574 003323 575 003325 576 003331 578 003333 579 003336 580 003340 581 003343 583 003345 584 003347 585 003350 586 003352 587 003354 589 003356 590 003360 591 003361 592 003364 596 003405 597 003410 598 003420 599 003422 603 003423 608 003424 609 003426 610 003427 611 003431 612 003433 613 003437 615 003441 616 003444 617 003446 618 003451 620 003453 621 003455 622 003456 623 003460 624 003462 626 003464 627 003466 628 003467 630 003472 633 003507 634 003512 635 003514 639 003515 645 003516 646 003520 647 003521 648 003523 649 003525 650 003531 651 003533 653 003535 654 003540 655 003542 656 003545 658 003547 659 003551 660 003552 661 003554 662 003556 664 003560 665 003562 666 003563 667 003566 668 003570 672 003571 678 003572 679 003574 680 003575 681 003577 682 003601 683 003605 684 003607 685 003611 686 003614 687 003616 688 003621 690 003623 691 003625 692 003626 693 003630 694 003632 696 003634 697 003636 698 003637 699 003642 700 003644 706 003645 713 003646 714 003650 715 003654 716 003656 717 003660 718 003662 719 003664 720 003666 721 003667 722 003672 723 003674 724 003675 726 003677 727 003704 728 003710 729 003711 730 003712 731 003716 732 003717 733 003721 734 003723 735 003725 736 003726 737 003734 738 003736 739 003740 741 003741 742 003743 743 003747 744 003751 745 003752 746 003756 747 003757 748 003761 749 003763 750 003765 751 003767 752 003770 753 003776 754 004000 755 004002 757 004003 758 004005 759 004011 764 004013 765 004021 766 004022 767 004027 768 004031 769 004033 770 004035 771 004041 772 004043 773 004045 774 004046 775 004052 776 004054 777 004067 778 004073 779 004075 780 004076 781 004102 782 004103 783 004105 784 004107 785 004113 786 004115 787 004117 788 004120 789 004126 790 004130 791 004132 792 004134 794 004136 ----------------------------------------------------------- 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