COMPILATION LISTING OF SEGMENT display_psp Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 10/25/89 1049.2 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1989 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 15 /****^ HISTORY COMMENTS: 16* 1) change(88-12-01,Parisek), approve(89-01-03,MCR8037), 17* audit(89-01-16,Farley), install(89-01-19,MR12.3-1006): 18* Ignore the error_table_$undefined_order_request error code when 19* calling the control order "dump_fnp" in fnp_fetch. If the order 20* is undefined for a particular FNP then we simply don't need to 21* display the data produced by the control order. 22* END HISTORY COMMENTS */ 23 24 25 display_psp: 26 proc; 27 28 29 30 31 /* * * * * * * * * * * * * * * * * * * */ 32 /* */ 33 /* The display_psp command will provide a means to */ 34 /* assure that products ordered and installed at a site */ 35 /* is at the correct revison and installed in the */ 36 /* proper location. This tool will provide a quick */ 37 /* means to find the status of a product as to */ 38 /* revision, marketing identifier, copyright and title. */ 39 /* This tool will indicate the correct version of the */ 40 /* software running only if care is taken at the site */ 41 /* to update the STI of installed modified software. */ 42 /* For more information on how to update the STI see */ 43 /* the generate_copyright command. */ 44 /* */ 45 /* 0) Written by R. Holmstedt 07/18/81 */ 46 /* 1) Modified by G. Dixon 10/15/84 - handle missing */ 47 /* source properly. */ 48 /* */ 49 /* * * * * * * * * * * * * * * * * * * */ 50 51 dcl Ccode fixed bin (35); 52 dcl MI_name char (9); 53 dcl NL char (1) int static options (constant) init (" 54 "); 55 dcl 01 Pnotice aligned, 56 02 source_C char (1680) init (""), 57 02 source_STI char (12) init (""), 58 02 object_C char (1680) init (""), 59 02 object_STI char (12) init (""), 60 02 xecute_C char (1680) init (""), 61 02 xecute_STI char (12) init (""); 62 dcl QUOTE char (1) int static options (constant) init (""""); 63 dcl Sptr ptr; 64 dcl no_acc_sw init ("0"b) bit (1); 65 dcl active_fnc_err_ entry options(variable); 66 dcl af_flag init ("0"b) bit (1); 67 dcl all_flag init ("0"b) bit (1); 68 dcl arg char (argl) based (argp); 69 dcl argl fixed bin (21); 70 dcl argp ptr; 71 dcl argno fixed bin; 72 dcl brief_flag init ("0"b) bit (1); 73 dcl code fixed bin (35); 74 dcl com_err_ entry () options (variable); 75 dcl copyw_flag init ("0"b) bit (1); 76 dcl crmod fixed bin int static; 77 dcl cu_$af_return_arg entry (fixed bin, ptr, fixed bin(21), fixed bin(35)); 78 dcl cu_$af_arg_ptr entry (fixed bin, ptr, fixed bin(21), fixed bin(35)); 79 dcl cu_$arg_count entry (fixed bin); 80 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 81 dcl datanet_infop ptr internal static; 82 dcl ddata_sdw fixed bin (71); 83 dcl dn355_datap ptr int static; 84 dcl dn355_data_len fixed bin int static; 85 dcl dsegp ptr; 86 dcl (error_table_$incorrect_access, error_table_$noentry, 87 error_table_$no_dir, error_table_$improper_data_format, 88 error_table_$no_component, error_table_$bad_arg, 89 error_table_$inconsistent, error_table_$segknown, 90 error_table_$moderr, error_table_$no_info, 91 error_table_$noarg, error_table_$wrong_no_of_args, 92 error_table_$undefined_order_request) fixed bin (35) ext static; 93 dcl 01 fnp_infos aligned, /* Data structure to dump fnp */ 94 02 fnp_addr fixed bin, 95 02 fnp_len fixed bin, 96 02 data_ptr ptr, 97 02 prev_data_ptr ptr; 98 dcl fnp fixed bin; 99 dcl fnp_name char (1); 100 dcl 01 fnptab aligned int static, 101 02 per_fnp (0:8), 102 03 init_switches, 103 04 modtab_init bit (1) unal, 104 03 nmodules fixed bin, 105 03 per_module (50), 106 04 name char (6), 107 04 start fixed bin, 108 04 date char (6), 109 04 sti char (12); 110 dcl generic_name char (32) varying; 111 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 112 dcl i fixed bin; 113 dcl ioa_ entry () options (variable); 114 dcl long_flag init ("0"b) bit (1); 115 dcl match_flag init ("0"b) bit (1); 116 dcl name_flag init ("0"b) bit (1); 117 dcl nargs fixed bin; 118 dcl parse_pnotice_info_ entry (ptr, fixed bin (35)); 119 dcl pathname_ entry (char(*), char(*)) returns(char(168)); 120 dcl phcs_$tty_order entry (fixed bin, char (*), ptr, fixed bin, fixed bin (35)); 121 dcl phcs_$tty_control entry (char (*), char (*), ptr, fixed bin (35)); 122 dcl print_prod fixed bin; 123 dcl prog_name char (12) varying; 124 dcl release_temp_segment_ entry (char (*), ptr, fixed bin (35)); 125 dcl ret char (retl) varying based (retp); 126 dcl retl fixed bin(21); 127 dcl retp pointer; 128 dcl ring0_get_$segptr entry (char (*), char (*), ptr, fixed bin (35)); 129 dcl ring_zero_peek_ entry (ptr, ptr, fixed bin (17), fixed bin (35)); 130 dcl true init ("1"b) bit (1) internal static options (constant); 131 dcl warn char (80) varying; 132 dcl xlate (0: 63) char (1) int static options (constant) init ( 133 134 "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "[", "#", "@", ":", ">", "?", 135 136 " ", "A", "B", "C", "D", "E", "F", "G", "H", "I", "&", ".", "]", "(", "<", "^", 137 138 "|", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "-", "$", "*", ")", ";", "'", 139 140 "+", "/", "S", "T", "U", "V", "W", "X", "Y", "Z", "_", ",", "%", "=", """", "!"); 141 142 dcl (addr, baseno, before, bin, convert, divide, hbound, index, length, 143 ltrim, min, null, size, substr, rank, rtrim, translate) builtin; 144 145 146 dcl (linkage_error, cleanup) condition; 147 148 149 /* *********** S T A R T************* */ 150 151 Sptr = null; /* prime pointers incase of error */ 152 datanet_infop = null; 153 dn355_datap = null; 154 prog_name = "display_psp"; 155 on cleanup call janitor; 156 157 call command_args (); 158 call open_files (); 159 call get_info (); 160 call out_info (); 161 goto fini; /* exit */ 162 163 /* \014 */ 164 describe_psp: entry; 165 166 167 /* * * * * * * * * * * * * * * * * * * */ 168 /* */ 169 /* this entry, describe_psp Marketing_Identifier Key */ 170 /* operates as an active function so site and developers */ 171 /* can write tools based on a psp. Information will be */ 172 /* returned based on a key passed in as an argument. */ 173 /* */ 174 /* * * * * * * * * * * * * * * * * * * */ 175 176 dcl message_out char (80) varying; 177 prog_name = "describe_psp"; 178 call cu_$af_return_arg (nargs, retp, retl, code); 179 /* check to see if invoked as an active function*/ 180 if code = 0 then af_flag = true; 181 else call cu_$arg_count (nargs); /* its a command */ 182 183 184 if nargs ^= 2 then do; /* 1st is a marketing identifier and 2nd is a key*/ 185 code = error_table_$wrong_no_of_args; 186 warn = "Usage: describe_psp Marketing_Identifier Key."; 187 goto bummer; 188 end; 189 190 call open_files (); /* get space to work in */ 191 call get_info (); /* read the >t>psp_info_ file */ 192 193 /* get 1st argument */ 194 if af_flag then call cu_$af_arg_ptr (1, argp, argl, code); 195 else call cu_$arg_ptr (1, argp, argl, code); 196 if code ^= 0 then do; 197 code = error_table_$wrong_no_of_args; 198 warn = "Error in parsing the first argument."; 199 goto bummer; 200 end; 201 arg = translate(arg, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"); 202 /* upper, lower case don't matter */ 203 204 do i = 1 to product.prod_number while (arg ^= product.num(i).MI); 205 end; 206 if i > product.prod_number then do; 207 warn = "Illegal or unknown marketing identifier used: "||arg||"."; 208 code = error_table_$bad_arg; 209 goto bummer; 210 end; 211 212 /* get 2nd argument */ 213 if af_flag then call cu_$af_arg_ptr (2, argp, argl, code); 214 else call cu_$arg_ptr (2, argp, argl, code); 215 if code ^= 0 then do; 216 code = error_table_$noarg; 217 warn = "Error in parsing the second argument."; 218 goto bummer; 219 end; 220 221 222 if arg = "title" then message_out = product.num(i).prod_title; 223 else if arg = "name" then message_out = product.num(i).prod_name; 224 else if arg = "sti" then message_out = product.num(i).prod_STI; 225 else if arg = "source" then message_out = rtrim(product.num(i).source_path.dirname)||">"||product.num(i).source_path.entryname; 226 else if arg = "object" then message_out = rtrim(product.num(i).object_path.dirname)||">"||product.num(i).object_path.entryname; 227 else if arg = "executable" then message_out = rtrim(product.num(i).x_path.dirname)||">"||product.num(i).x_path.entryname; 228 else do; 229 warn = "Illegal or unknown key used: "||arg||"."; 230 code = error_table_$bad_arg; 231 goto bummer; 232 end; 233 234 if ^af_flag then call ioa_ ("^a", message_out); 235 else ret = message_out; 236 goto fini; 237 238 239 /* \014 */ 240 command_args: proc (); 241 242 243 /* * * * * * * * * * * * * * * * * * * */ 244 /* */ 245 /* This procedure will define the arguments used for */ 246 /* the command to process. Some checking is done on */ 247 /* arguments passed in as to valid characters */ 248 /* */ 249 /* * * * * * * * * * * * * * * * * * * */ 250 251 252 253 call cu_$arg_count (nargs); 254 255 if nargs = 0 then do; /* no args is ok use defaults */ 256 all_flag = true; 257 brief_flag = true; 258 return; 259 end; 260 261 262 do argno = 1 to nargs; 263 264 265 call cu_$arg_ptr (argno, argp, argl, code); 266 if code ^= 0 then goto bad_arg; 267 268 if substr (arg, 1, 1) = "-" then do; 269 270 if arg = "-name" | arg = "-nm" then do; 271 if name_flag then goto dup_arg; 272 name_flag = true; 273 argno = argno + 1; 274 call cu_$arg_ptr (argno, argp, argl, code); 275 if code ^= 0 then goto bad_arg; 276 if substr (arg, 1, 1) = "-" then goto bad_arg; 277 generic_name = arg; /* i.e. compose, ted */ 278 end; 279 280 else if arg = "-match" then do; 281 if match_flag then go to dup_arg; 282 match_flag = true; 283 argno = argno + 1; 284 call cu_$arg_ptr (argno, argp, argl, code); 285 if code ^= 0 then goto bad_arg; 286 if substr (arg, 1, 1) = "-" then goto bad_arg; 287 if argl ^= 7 then do; 288 warn = "Using incorrect number of characters for Marketing Identifier "||arg||"."; 289 goto bummer; 290 end; 291 MI_name = arg; 292 end; 293 294 else if arg = "-brief" | arg = "-bf" then do; 295 if brief_flag then goto dup_arg; 296 brief_flag = true; 297 end; 298 299 else if arg = "-long" | arg = "-lg" then do; 300 if long_flag then goto dup_arg; 301 long_flag = true; 302 end; 303 304 else if arg = "-copyright" then do; 305 if copyw_flag then go to dup_arg; 306 copyw_flag = true; 307 end; 308 309 else if arg = "-all" | arg = "-a" then do; 310 if all_flag then goto dup_arg; 311 all_flag = true; 312 end; 313 else goto bad_arg; 314 end; 315 else goto bad_arg; 316 end; 317 if brief_flag & long_flag then do; 318 code = error_table_$inconsistent; 319 warn = "-brief and -long cannot be used together."; 320 goto bummer; 321 end; 322 323 if match_flag & all_flag then do; 324 code = error_table_$inconsistent; 325 warn = "-match and -all cannot be used together."; 326 goto bummer; 327 end; 328 329 if name_flag & all_flag then do; 330 code = error_table_$inconsistent; 331 warn = "-name and -all cannot be used together."; 332 goto bummer; 333 end; 334 335 if match_flag & name_flag then do; 336 code = error_table_$inconsistent; 337 warn = "-match and -name cannot be used together."; 338 goto bummer; 339 end; 340 341 342 return; 343 end command_args; 344 /* \014 */ 345 open_files: proc; 346 347 348 /* * * * * * * * * * * * * * * * * * * */ 349 /* */ 350 /* This procedure gets the working storage needed for */ 351 /* the command to operate */ 352 /* */ 353 /* * * * * * * * * * * * * * * * * * * */ 354 355 356 357 call get_temp_segment_ ((prog_name), Sptr, code); 358 if code ^= 0 then do; 359 warn = " Error while getting temporary segment for Sptr."; 360 goto bummer; 361 end; 362 363 SI_ptr = Sptr; /* let the product structure point to the temp.seg */ 364 365 call get_temp_segment_ ((prog_name), datanet_infop, code); 366 if code ^= 0 then do; 367 warn = " Error while getting temporary segment."; 368 goto bummer; 369 end; 370 return; 371 end open_files; 372 /* \014 */ 373 get_info: proc; 374 375 376 377 /* * * * * * * * * * * * * * * * * * * */ 378 /* */ 379 /* This procedure calls a rdc program that will read */ 380 /* the psp_info_ segment and return information */ 381 /* contained in the ascii segment for use by the */ 382 /* program, see software_pnotice_info_.incl.pl1 as to */ 383 /* the structure passed. */ 384 /* */ 385 /* * * * * * * * * * * * * * * * * * * */ 386 387 388 call parse_pnotice_info_ (SI_ptr, code); 389 if code ^= 0 then do; 390 warn = "Error while reading psp_info_ file."; 391 goto bummer; 392 end; 393 394 return; 395 end get_info; 396 397 /* \014 */ 398 find_lib_info: 399 proc (dirname, entryname, prod_name); 400 401 /* * * * * * * * * * * * * * * * * * * */ 402 /* */ 403 /* This procedure will probe into the library segments */ 404 /* and return information contained in them as to the */ 405 /* STI and protection notice. */ 406 /* */ 407 /* * * * * * * * * * * * * * * * * * * */ 408 409 410 411 412 dcl P_ark_ptr ptr; 413 dcl P_ark_bc fixed bin (24); 414 dcl P_comp_seg char (P_comp_length) based (P_comp_ptr); 415 dcl P_comp_length fixed bin; 416 dcl P_comp_ptr ptr; 417 dcl P_comp_bc fixed bin (24); 418 dcl Tpointer fixed bin; 419 dcl archive_$get_component entry (ptr, fixed bin (24), char (*), ptr, 420 fixed bin (24), fixed bin (35)); 421 dcl cl fixed bin; 422 dcl dirname char (168); 423 dcl entryname char (32); 424 dcl get_fnp_name_ entry (fixed bin) returns (char (32)); 425 dcl hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin (24), 426 fixed bin (2), ptr, fixed bin (35)); 427 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 428 dcl i fixed bin; 429 dcl num_of_pnotice fixed bin; 430 dcl prod_name char (24); 431 dcl whitesp char (4) int static options (constant) init (" 432 433 "); 434 dcl xx fixed bin; 435 436 if length (ltrim (rtrim (entryname))) > 7 then do; 437 /* do only if not an FNP module name */ 438 call hcs_$initiate_count (dirname, entryname, "", P_ark_bc, 1, P_ark_ptr, code); 439 if code ^= 0 then do; 440 if code ^= error_table_$segknown then do; 441 /* ok if we already know */ 442 call hcs_$terminate_noname (P_ark_ptr, Ccode); 443 return; /* let the caller know it don't exist */ 444 end; 445 code = 0; /* seg known is ok */ 446 end; 447 end; 448 449 450 if index (entryname, ".s.archive") ^= 0 then do; 451 /* this is the routine to get the source info */ 452 453 call archive_$get_component 454 (P_ark_ptr, P_ark_bc, "PNOTICE_"||rtrim (prod_name)||".alm", P_comp_ptr, P_comp_bc, code); 455 /* get a pointer to the notice component */ 456 if code ^= 0 then return; 457 458 Pnotice.source_C = ""; /* init the copyright */ 459 460 P_comp_length = divide (P_comp_bc, 9, 17, 0); 461 /* get the length to the pnotice seg */ 462 463 464 Tpointer = index (P_comp_seg, "dec"); 465 /* points to the version line */ 466 467 Tpointer = Tpointer + 3 + index ((substr (P_comp_seg, (Tpointer + 3))), "dec"); 468 /* points to the no. of pnotices */ 469 num_of_pnotice = convert (num_of_pnotice, (ltrim (rtrim (before (( 470 substr (P_comp_seg, (Tpointer + 3))), QUOTE), whitesp), whitesp))); 471 /* save it away for later */ 472 473 474 475 /* next comes the words in the copyright */ 476 do i = 1 to num_of_pnotice; 477 Tpointer = Tpointer + 3 + index ((substr (P_comp_seg, Tpointer)), "acc"); 478 Tpointer = Tpointer + index ((substr (P_comp_seg, Tpointer)), QUOTE); 479 /* Tpointer points to the start of the notice */ 480 Pnotice.source_C = rtrim (Pnotice.source_C) || substr 481 (P_comp_seg, Tpointer, (index ((substr (P_comp_seg, Tpointer)), QUOTE) - 1)) 482 || NL; 483 /* stuff the words away for printing */ 484 Tpointer = Tpointer + index ((substr (P_comp_seg, Tpointer)), QUOTE); 485 /* move pointer to end of copyright */ 486 487 488 end; 489 490 /* this is the source STI */ 491 Tpointer = Tpointer + 3 + index ((substr (P_comp_seg, (Tpointer + 3))), "aci"); 492 /* now suck off the STI */ 493 source_STI = substr ((ltrim (substr (P_comp_seg, (Tpointer + 3)), whitesp)), 2, 12); 494 /* always 12 chars */ 495 end; 496 497 498 else if index (entryname, ".archive") ^= 0 then do; 499 /* this is the routine to get the object info */ 500 501 call archive_$get_component 502 (P_ark_ptr, P_ark_bc, "PNOTICE_"||rtrim (prod_name), P_comp_ptr, P_comp_bc, code); 503 /* get a pointer to the notice component */ 504 if code ^= 0 then return; 505 506 Pnotice.object_C = ""; /* init the area */ 507 508 509 P_pnotice_sti = P_comp_ptr; 510 /* make the PNOTICE_ segment look like the include file */ 511 512 Pnotice.object_STI = pnotice_sti.STI (2); 513 514 Tpointer = 1; 515 516 do i = 1 to pnotice_sti.Npnotice; 517 518 cl = rank (substr (pnotice_sti.pnotice, Tpointer, 1)); 519 Pnotice.object_C = 520 rtrim (Pnotice.object_C) || substr (pnotice_sti.pnotice, (Tpointer + 1), cl) || NL; 521 Tpointer = Tpointer + 1 + cl; 522 end; 523 end; 524 525 else do; /* do executable segments then */ 526 /* this is an executable segment */ 527 528 if index (entryname, "bound_") ^= 0 then do; 529 530 531 P_pnotice_sti = P_ark_ptr; 532 /* make the PNOTICE_ segment look like the include file */ 533 Tpointer = 1; 534 if pnotice_sti.Vpnotice_sti_1 ^= 1 then do; 535 /* validate that segment has a copyright that can be probed */ 536 code = error_table_$improper_data_format; 537 return; 538 end; 539 if pnotice_sti.Nsti ^= 3 then do; 540 /* if not 3 better get out */ 541 code = error_table_$improper_data_format; 542 return; 543 end; 544 545 Pnotice.xecute_C = ""; /* initialize the field */ 546 547 do i = 1 to pnotice_sti.Npnotice; 548 cl = rank (substr (pnotice_sti.pnotice, Tpointer, 1)); 549 Pnotice.xecute_C = 550 rtrim (Pnotice.xecute_C) || substr (pnotice_sti.pnotice, (Tpointer + 1), cl) || NL; 551 Tpointer = Tpointer + 1 + cl; 552 end; 553 554 Pnotice.xecute_STI = pnotice_sti.STI (3); 555 end; 556 557 558 /* this is a FNP module then */ 559 560 else if length (ltrim (rtrim (entryname))) <= 6 then do; 561 562 /* need access to the phcs_ */ 563 call ring0_get_$segptr ("", "dseg", dsegp, code); 564 if code ^= 0 then do; 565 warn = "Error getting pointer to dseg."; 566 goto bummer; 567 end; 568 569 call get_sdw ("dn355_data", dn355_datap, addr (ddata_sdw)); 570 if no_acc_sw = true then return; 571 572 573 sdwp = addr (ddata_sdw); 574 dn355_data_len = (bin (sdw.bound, 14) + 1) * 16; 575 576 577 infop = datanet_infop; 578 call ring_zero_peek_ (dn355_datap, infop, dn355_data_len, code); 579 if code ^= 0 then do; 580 warn = "Error getting information from dn355_data (ring 0)."; 581 goto bummer; 582 end; 583 584 585 do fnp = 1 to max_no_355s; /* need to see how many FNPs */ 586 fnpp = addr (datanet_info.per_datanet (fnp)); 587 if fnp_info.running then do; 588 fnp_name = rtrim(get_fnp_name_ (fnp)); 589 590 call setup_module_table (code); 591 if code ^= 0 then do; 592 if code = error_table_$moderr then no_acc_sw = true; 593 return; 594 end; 595 596 do xx = 1 to fnptab.per_fnp (fnp).nmodules 597 while (entryname ^= fnptab.per_fnp (fnp).per_module (xx).name); 598 end; 599 /* find the module we need; */ 600 if xx <= fnptab.per_fnp (fnp).nmodules then 601 602 call ioa_ ("FNP ^a: Module ^a STI ^a", fnp_name, 603 fnptab.per_fnp (fnp).per_module (xx).name, 604 fnptab.per_fnp (fnp).per_module (xx).sti); 605 end; 606 end; 607 code = -1; /* avoid the print_it proc from printing */ 608 609 end; 610 end; 611 612 613 return; 614 end find_lib_info; 615 616 /* \014 */ 617 618 /* Procedure to setup internal static fnp table */ 619 620 setup_module_table: proc (code); 621 622 dcl (i, j) fixed bin; 623 dcl chainloc fixed bin; 624 dcl mod_name char (8); 625 dcl mod_sti char (12); 626 dcl 01 chain aligned, /* Entry in module chain */ 627 02 next bit (18) unal, 628 02 name (6) bit (6) unal, 629 02 start bit (18) unal, 630 02 date (6) bit (6) unal, 631 02 sti (12) bit (6) unal; 632 dcl code fixed bin (35); 633 634 if fnptab.modtab_init (fnp) then return; /* Table all setup */ 635 636 /* need to get start of module chain */ 637 symbol_tablep = addr (db_fnp_symbols_$db_fnp_symbols_); 638 639 do i = 1 to symbol_table.cnt; 640 symp = addr (symbol_table.entry (i)); 641 if ".crmod" = sym.name then do; 642 crmod = sym.value; /* got the starting point */ 643 end; 644 end; 645 646 647 call fnp_fetch (crmod, 1, addr (chain.next), code); 648 /* Get module chain start */ 649 if code ^= 0 then do; 650 if code = error_table_$moderr then 651 call ioa_ ("No access to phcs_ gate; unable to read FNP memory."); 652 return; 653 end; 654 655 chainloc = bin (chain.next); /* First chain is here */ 656 657 658 i = 0; 659 660 do while ((chainloc ^= 0) & (i < hbound (fnptab.per_module, 2))); 661 call fnp_fetch (chainloc, 10, addr (chain), code); 662 663 i = i+1; 664 fnptab.start (fnp, i) = bin (chain.start); 665 666 mod_name = ""; 667 do j = 1 to 6; /* Convert name */ 668 substr (mod_name, j, 1) = xlate (bin (chain.name (j))); 669 end; 670 fnptab.name (fnp, i) = translate (rtrim(mod_name), "abcdefghijklmnopqrstuvwxyz", "ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 671 672 do j = 1 to 6; /* Convert date */ 673 substr (fnptab.date (fnp, i), j, 1) = xlate (bin (chain.date (j))); 674 end; 675 chainloc = bin (chain.next); /* Next pointer */ 676 677 mod_sti = ""; 678 do j = 1 to 12; /* Convert name */ 679 substr (mod_sti, j, 1) = xlate (bin (chain.sti (j))); 680 end; 681 fnptab.sti (fnp, i) = mod_sti; 682 end; 683 684 685 fnptab.nmodules (fnp) = i; 686 fnptab.modtab_init (fnp) = "1"b; 687 return; 688 689 690 end setup_module_table; 691 692 /* \014 */ 693 694 fnp_fetch: proc (fnp_addr, arg_fnp_len, arg_data_ptr, code); 695 696 dcl fnp_mem (fnp_len) bit (18) unal based; 697 dcl fnp_addr fixed bin (17); 698 dcl arg_fnp_len fixed bin (17); 699 dcl arg_data_ptr ptr; 700 dcl fnp_len fixed bin; 701 dcl call_type fixed bin; 702 dcl code fixed bin (35); 703 dcl state fixed bin; 704 705 fnp_len = arg_fnp_len; 706 call_type = 0; 707 fnp_infos.fnp_len = arg_fnp_len; 708 fnp_infos.data_ptr = arg_data_ptr; 709 fnp_infos.fnp_addr = fnp_addr; 710 fnp_infos.prev_data_ptr = null; 711 712 do while (fnp_len > 0); 713 fnp_infos.fnp_len = min (fnp_len, 64); 714 if call_type = 0 then do; 715 on linkage_error go to call_1_failed; 716 call phcs_$tty_order (fnp, "dump_fnp", addr (fnp_infos), state, code); 717 revert linkage_error; /* It worked */ 718 call_type = 1; 719 go to check_fetch_code; 720 call_1_failed: on linkage_error go to call_2_failed; 721 call phcs_$tty_control (fnp_name, "dump_fnp", addr (fnp_infos), code); 722 revert linkage_error; 723 call_type = 2; 724 go to check_fetch_code; 725 call_2_failed: revert linkage_error; 726 code = error_table_$moderr; 727 return; 728 end; 729 else if call_type = 1 then call phcs_$tty_order (fnp, "dump_fnp", addr (fnp_infos), state, code); 730 else call phcs_$tty_control (fnp_name, "dump_fnp", addr (fnp_infos), code); 731 732 check_fetch_code: 733 if code = error_table_$undefined_order_request then do; 734 code = 0; /* dump_fnp order was not defined for the FNP in question */ 735 return; /* don't worry about it. Nothing will get printed */ 736 end; 737 if code ^= 0 then return; 738 739 fnp_infos.fnp_addr = fnp_infos.fnp_addr + fnp_infos.fnp_len; 740 /* Check next address */ 741 fnp_infos.data_ptr = addr (fnp_infos.data_ptr -> fnp_mem (fnp_infos.fnp_len + 1)); 742 fnp_len = fnp_len - fnp_infos.fnp_len; 743 end; 744 745 end fnp_fetch; 746 747 748 /* \014 */ 749 get_sdw: 750 proc (seg_name, ring_zero_ptr, sdw_ptr); 751 752 dcl seg_name char (*); 753 dcl ring_zero_ptr ptr; 754 dcl sdw_ptr ptr; 755 756 757 call ring0_get_$segptr ("", seg_name, ring_zero_ptr, code); 758 /* get pointer to ring 0 seg */ 759 if code ^= 0 then do; 760 warn = "Error trying to read sdw for dn355_data."; 761 no_acc_sw = true; 762 return; 763 end; 764 call ring_zero_peek_ (addr (dsegp -> sdwa (bin (baseno (ring_zero_ptr), 18))), sdw_ptr, size (sdw), code); 765 if code ^= 0 then do; 766 warn = "Error trying to read sdw for dn355_data."; 767 no_acc_sw = true; 768 return; 769 end; 770 return; 771 end get_sdw; 772 773 774 /* \014 */ 775 out_info: proc; 776 777 778 /* * * * * * * * * * * * * * * * * * * */ 779 /* */ 780 /* This procedure will select the information for */ 781 /* output to the user. The arguments -all, -match and */ 782 /* -name will be acted on and the information will be */ 783 /* passed to print_it for final formatting by the other */ 784 /* arguments that can be used. */ 785 /* */ 786 /* * * * * * * * * * * * * * * * * * * */ 787 dcl (ii, j) fixed bin; 788 789 790 if ^long_flag then brief_flag = true; /* need one but not both */ 791 792 if match_flag then do; /* only want one product */ 793 do i = 1 to product.prod_number while (MI_name ^= product.num (i).MI); 794 end; 795 print_prod = i; 796 797 798 if i > product.prod_number then do; /* oops! */ 799 warn = "Illegal or unknown marketing identifier used "|| MI_name||"."; 800 code = error_table_$bad_arg; 801 goto bummer; 802 end; 803 804 /* this product is made up of other products, so use them instead */ 805 806 if product.num (i).prod_use (1) ^= "" then do; 807 do j = 1 to 10 while (product.num (i).prod_use (j) ^= ""); 808 809 do ii = 1 to product.prod_number while (product.num (i).prod_use (j) ^= product.num (ii).MI); 810 end; 811 812 if ii > product.prod_number then do; /* oops! */ 813 warn = "Illegal or unknown marketing identifier from psp_info_ used "|| MI_name||"."; 814 code = error_table_$bad_arg; 815 goto bummer; 816 end; 817 print_prod = ii; 818 call print_it; 819 end; 820 end; 821 822 else /* the product is defined use it */ 823 call print_it; 824 end; 825 826 else if name_flag then do; /* only want one product */ 827 828 do i = 1 to product.prod_number while (generic_name ^= product.num (i).prod_name); 829 end; 830 831 if i > product.prod_number then do; /* oops! */ 832 warn = "Illegal or unknown name used "|| generic_name||"."; 833 code = error_table_$bad_arg; 834 goto bummer; 835 end; 836 837 print_prod = i; 838 839 /* this product is made up of other products, so use them instead */ 840 841 if product.num (i).prod_use (1) ^= "" then do; 842 /* if many products make up this product */ 843 do j = 1 to 10 while (product.num (i).prod_use (j) ^= ""); 844 845 do ii = 1 to product.prod_number while (product.num (i).prod_use (j) ^= product.num (ii).MI); 846 end; /* check if real product in psp_info_ */ 847 848 849 if ii > product.prod_number then do; /* oops! */ 850 warn = "Illegal or unknown marketing identifier from psp_info_ used "|| MI_name||"."; 851 code = error_table_$bad_arg; 852 goto bummer; 853 end; 854 print_prod = ii; 855 call print_it; 856 end; 857 end; 858 859 else /* use this product no other */ 860 call print_it; 861 end; 862 863 else /* all is the default */ 864 865 do i = 1 to product.prod_number; 866 867 868 print_prod = i; /* bump the count of the product */ 869 870 871 /* just be sure this is a real product, not made up of other products */ 872 if product.num (i).prod_use (1) = "" then call print_it; 873 874 end; 875 876 return; 877 878 end out_info; 879 /* \014 */ 880 881 print_it: proc; 882 883 884 /* * * * * * * * * * * * * * * * * * * */ 885 /* */ 886 /* This procedure will output the information in a */ 887 /* format asked for by the user. The options are -long, */ 888 /* -brief or -copyright. */ 889 /* */ 890 /* * * * * * * * * * * * * * * * * * * */ 891 892 893 894 if long_flag then do; /* print all info */ 895 896 897 call ioa_ ("^/^a.", rtrim (product.num (print_prod).prod_title)); 898 call ioa_ ("Marketing identifier ^a.", product.num (print_prod).MI); 899 900 call validate_macro /* now get source info */ 901 ((product.num (print_prod).source_path.dirname), 902 (product.num (print_prod).source_path.entryname), 903 (product.num (print_prod).prod_name)); 904 905 if code = 0 then do; 906 call ioa_ ("STI ^a.", Pnotice.source_STI); 907 call ioa_ ("Protection notice from ^a. ^/^a", 908 product.num (print_prod).source_path.entryname, 909 ltrim (rtrim (rtrim (Pnotice.source_C), QUOTE), QUOTE)); 910 end; 911 912 /* output object info long format */ 913 914 call validate_macro /* now get object info */ 915 ((product.num (print_prod).object_path.dirname), 916 (product.num (print_prod).object_path.entryname), 917 (product.num (print_prod).prod_name)); 918 919 if code = 0 then do; /* can't complain if not found */ 920 921 call ioa_ ("STI ^a.", Pnotice.object_STI); 922 call ioa_ ("Protection Notice from ^a ^/^a", 923 product.num (print_prod).object_path.entryname, Pnotice.object_C); 924 end; 925 926 927 call validate_macro /* now get executable info */ 928 ((product.num (print_prod).x_path.dirname), 929 (product.num (print_prod).x_path.entryname), 930 (product.num (print_prod).prod_name)); 931 932 if code = 0 then do; 933 call ioa_ ("STI ^a.", Pnotice.xecute_STI); 934 call ioa_ ("Protection Notice from ^a ^/^a", 935 product.num (print_prod).x_path.entryname, Pnotice.xecute_C); 936 937 end; 938 end; 939 940 else if copyw_flag then do; /* print the copyright */ 941 942 call validate_macro 943 ((product.num (print_prod).source_path.dirname), 944 (product.num (print_prod).source_path.entryname), 945 (product.num (print_prod).prod_name)); 946 947 if code = 0 then do; 948 949 call ioa_ ("Protection notice from ^a ^/^a", 950 product.num (print_prod).source_path.entryname, rtrim (Pnotice.source_C)); 951 end; 952 953 954 call validate_macro /* now do the object info */ 955 ((product.num (print_prod).object_path.dirname), 956 (product.num (print_prod).object_path.entryname), 957 (product.num (print_prod).prod_name)); 958 if code = 0 then do; 959 960 call ioa_ ("Protection notice from ^a ^/^a", 961 product.num (print_prod).object_path.entryname, rtrim (Pnotice.object_C)); 962 end; 963 964 call validate_macro /* now do the executable info */ 965 ((product.num (print_prod).x_path.dirname), 966 (product.num (print_prod).x_path.entryname), 967 (product.num (print_prod).prod_name)); 968 if code = 0 then do; 969 970 call ioa_ ("Protection notice from ^a ^/^a", 971 product.num (print_prod).x_path.entryname, rtrim (Pnotice.xecute_C)); 972 973 end; 974 end; 975 976 else if brief_flag then do; /* print only the STI */ 977 call ioa_ ("^/^a.", rtrim (product.num (print_prod).prod_title)); 978 call validate_macro 979 ((product.num (print_prod).source_path.dirname), 980 (product.num (print_prod).source_path.entryname), 981 (product.num (print_prod).prod_name)); 982 983 if code = 0 then 984 call ioa_ ("^a", Pnotice.source_STI); 985 986 987 988 /* now do for the object */ 989 call validate_macro 990 ((product.num (print_prod).object_path.dirname), 991 (product.num (print_prod).object_path.entryname), 992 (product.num (print_prod).prod_name)); 993 994 if code = 0 then call ioa_ ("^a", Pnotice.object_STI); 995 996 997 /* now do for the executable segment */ 998 call validate_macro 999 ((product.num (print_prod).x_path.dirname), 1000 (product.num (print_prod).x_path.entryname), 1001 (product.num (print_prod).prod_name)); 1002 1003 if code = 0 then call ioa_ ("^a", Pnotice.xecute_STI); 1004 1005 end; 1006 1007 return; 1008 end print_it; 1009 /* \014 */ 1010 1011 validate_macro: 1012 procedure (dirname, entryname, prod_name); 1013 1014 dcl dirname char (168); 1015 dcl entryname char (32); 1016 dcl prod_name char (24); 1017 1018 if dirname = "" & entryname = "" then do; 1019 code = -1; 1020 return; 1021 end; 1022 1023 call find_lib_info (dirname, entryname, prod_name); 1024 1025 1026 if code ^= 0 then do; 1027 1028 if code = error_table_$noentry then do; 1029 call com_err_ (code, prog_name, "^/^a not found.", 1030 pathname_ (dirname, entryname)); 1031 code = -1; 1032 return; 1033 end; 1034 1035 if code = error_table_$improper_data_format then do; 1036 call com_err_ (code, prog_name, 1037 "^/Could not get pnotice information from ^a.", 1038 pathname_ (dirname, entryname)); 1039 code = -1; 1040 return; 1041 end; 1042 1043 if code = error_table_$no_info then do; 1044 call com_err_ (code, prog_name, "^/You do not have access to read information from the datanet."); 1045 code = -1; 1046 return; 1047 end; 1048 1049 if code = error_table_$no_dir then do; 1050 call com_err_ (code, prog_name, "^/The path ^a not found installed.", dirname); 1051 code = -1; 1052 return; 1053 end; 1054 1055 else if code = error_table_$moderr then do; 1056 call com_err_ (code, prog_name, "^/The entry ^a", entryname); 1057 code = -1; 1058 return; 1059 end; 1060 else if code = error_table_$incorrect_access then do; 1061 call com_err_ (code, prog_name, "^/The entry ^a", entryname); 1062 code = -1; 1063 return; 1064 end; 1065 1066 else if code = error_table_$no_component then do; 1067 call com_err_ (code, prog_name, "^/archive ^a", 1068 pathname_ (dirname, entryname)); 1069 code = -1; 1070 return; 1071 end; 1072 1073 else if code = -1 then return; /* this is an fnp module */ 1074 1075 warn = "Error while finding library information for " 1076 ||rtrim (product.num (print_prod).object_path.entryname)||"."; 1077 1078 goto bummer; 1079 1080 end; 1081 end validate_macro; 1082 1083 1084 /* \014 */ 1085 janitor: proc; 1086 1087 dcl Ccode fixed bin (35); 1088 1089 1090 if Sptr ^= null then 1091 call release_temp_segment_ ((prog_name), Sptr, Ccode); 1092 /* release temp segment used for product structure */ 1093 1094 if datanet_infop ^= null then 1095 call release_temp_segment_ ((prog_name), datanet_infop, Ccode); 1096 /* release temp segment used for FNP info */ 1097 1098 1099 end janitor; 1100 1101 bad_arg: 1102 1103 code = error_table_$bad_arg; 1104 warn = arg; 1105 goto bummer; 1106 1107 1108 dup_arg: 1109 code = error_table_$inconsistent; 1110 warn = arg || " appears twice on the command line."; 1111 goto bummer; 1112 1113 1114 bummer: 1115 if af_flag then call active_fnc_err_ (code, prog_name, "^/^a", warn); 1116 else call com_err_ (code, prog_name, "^/^a", warn); 1117 call janitor; 1118 return; 1119 1120 fini: 1121 call janitor; 1122 return; 1123 1 1 /*********** Start of software_pnotice_info_.incl.pl1 *********/ 1 2 /* This file contains the structure used by the software information tools */ 1 3 /* -Written by R. Holmstedt 04/18/81 */ 1 4 1 5 1 6 dcl 01 product aligned based (SI_ptr), /* each PSP will have a entry */ 1 7 02 prod_number fixed bin, /* product count */ 1 8 02 num (0 refer (product.prod_number)), 1 9 03 MI char(7), /* marketing number of this product */ 1 10 03 prod_name char(20), /* generic name of the product */ 1 11 03 prod_title char(80), /* long explaination of the product */ 1 12 03 prod_STI char(12), /* software technical identifier */ 1 13 03 source_C (10) char(24), /* products copyright for source */ 1 14 03 object_C (10) char(24), /* products copyright for object */ 1 15 03 x_path, 1 16 04 dirname char(168), 1 17 04 entryname char(32), 1 18 03 source_path, 1 19 04 dirname char(168), 1 20 04 entryname char(32), 1 21 03 object_path, 1 22 04 dirname char(168), 1 23 04 entryname char(32), 1 24 03 prod_use(10) char(7); /* market number of many products 1 25* that make up this one MI */ 1 26 dcl SI_ptr ptr; 1 27 1 28 /*********** End of software_pnotice_info_.incl.pl1 *********/ 1124 2 1 /*********** Start of pnotice.incl.pl1 ***********/ 2 2 /* */ 2 3 /* This include file contains the structure of the protection notice */ 2 4 /* as it will appear in library archives and bound units */ 2 5 /* -Written by R. Holmstedt and J. Stansbury 05/13/81 */ 2 6 2 7 2 8 2 9 dcl 01 pnotice_sti aligned based (P_pnotice_sti), 2 10 02 Vpnotice_sti_1 fixed bin, /* version of the incl file */ 2 11 02 Npnotice fixed bin, /* number of pnotice templets used */ 2 12 02 Nsti fixed bin, /* number of STI' s */ 2 13 02 Lpnotice fixed bin, /* total char's of all the notice's */ 2 14 02 pnotice char (0 refer (pnotice_sti.Lpnotice)), /* NOTICE */ 2 15 02 STI (0 refer (pnotice_sti.Nsti)) char (12); /* product STI */ 2 16 2 17 dcl P_pnotice_sti ptr; 2 18 dcl Vpnotice_sti_1 fixed bin int static options (constant) init (1); 2 19 2 20 /*********** End of pnotice.incl.pl1 ***********/ 1125 3 1 /* BEGIN dn355_data.incl.pl1 */ 3 2 3 3 3 4 3 5 /****^ HISTORY COMMENTS: 3 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 3 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 3 8* Add data needed for the uncp multiplexer (DSA gateway) interface 3 9* implementation. 3 10* 2) change(89-03-20,Parisek), approve(89-06-06,MCR8110), 3 11* audit(89-10-09,Farley), install(89-10-25,MR12.3-1100): 3 12* Add support of protocol mpx. 3 13* END HISTORY COMMENTS */ 3 14 3 15 3 16 /* Date Last Modified and Reason 3 17* 3 18* Created 07/25/74 by R. B. Snyder for new ttydim. 3 19* Modified 06/23/77 by J. Stern to add channel_work_reqd and cwork_count 3 20* Modified 08/14/78 by Robert Coren to remove devx_tab and invent PCBs 3 21* Modified 79 May 14 by Art Beattie to add fnp_mem_size 3 22* Modified December 1979 by Robert Coren to add FNP queue lock 3 23* Modified January 1980 by Larry Johnson to increase max number of FNPs to 8 3 24* Modified 02/12/80 by Robert Coren to add dcw_list_array_ptr 3 25* Modified 03/06/80 by Robert Coren to add some metering info 3 26* Modified 12/10/80 by Robert Coren to add get_meters_waiting flag 3 27* Modified 83-12-16 BIM to use a chanid instead of iom/channel fb's. 3 28* Modified 1984-07-26 BIM for paged iom. 3 29* Modified in September 1985 for the DN7100 version interim. 3 30**/ 3 31 3 32 /* LOCKING RULES: A fnp is locked by its LCTE unless its LCTE is uninitialized. 3 33* In that case, the configuration_lock must be held. 3 34* if tty_lock$lock_lcte returns io_no_permission, then the caller must 3 35* lock$lock_fast the configuration lock and retry the LCTE lock. If 3 36* the lcte is now initialized, too bad. Otherwise, the config lock protects. 3 37* 3 38* Configuration locking is interesting to init_multiplexer and 3 39* all of fnp t&d and reconfiguration. The guts of the multiplexer 3 40* pay no attention to it. Thus, if the LCTE can be locked, it MUST be 3 41* locked before changing the io_manager_assigned flag. */ 3 42 3 43 /* format: style4,delnl,insnl,^ifthendo */ 3 44 3 45 dcl max_no_355s fixed bin int static init (8) options (constant); 3 46 /* max no of 355s we can handle (arbitrary) */ 3 47 dcl dn355_data$ external fixed bin; 3 48 3 49 dcl infop pointer; 3 50 dcl fnpp ptr; 3 51 3 52 dcl 1 datanet_info aligned based (infop), 3 53 2 configuration_lock aligned, 3 54 3 pid bit (36) aligned, 3 55 3 event bit (36) aligned, 3 56 3 flags aligned, 3 57 4 notify_sw bit (1) unaligned, 3 58 4 pad bit (35) aligned, 3 59 2 no_of_355s fixed bin, /* no. of FNP's */ 3 60 2 trace bit (1) aligned, /* watch events on console */ 3 61 2 debug_stop bit (1) aligned, /* crash on errors */ 3 62 2 uncp_bufp ptr, /* pointer to the circular buffer */ 3 63 2 protocol_datap ptr, /* pointer to protocol_mpx data */ 3 64 2 pad1 (6) bit (36) aligned, 3 65 2 per_datanet (max_no_355s) aligned like fnp_info; /* data per datanet */ 3 66 3 67 dcl 1 fnp_info aligned based (fnpp), /* structure for each FNP */ 3 68 2 mbx_pt pointer, /* pointer to mailbox NULL if not in config */ 3 69 2 pcb_array_ptr pointer, /* pointer to array of physical channel blocks */ 3 70 2 dcw_list_array_ptr pointer, /* pointer to array of space reserved for output DCW lists */ 3 71 2 no_of_channels fixed bin, /* number of channels on this FNP */ 3 72 2 fnp_id, 3 73 3 fnp_tag char (1) unaligned, /* letter identifying FNP */ 3 74 3 fnp_number fixed bin (9) unsigned unaligned, /* sequence number of FNP */ 3 75 3 padc bit (18) unaligned, 3 76 2 io_chanid char (8) aligned, 3 77 2 io_manager_chx fixed bin (35), /* devx for DIA on iom */ 3 78 2 lsla_idx (0:5) fixed bin aligned, /* index into PCB array for lsla lines */ 3 79 2 hsla_idx (0:2) fixed bin aligned, /* index into PCB array for hsla lines */ 3 80 2 count fixed bin, /* number of items in delay queue */ 3 81 2 cur_ptr fixed bin, /* offset in tty_buf of next delay queue element */ 3 82 2 last_ptr fixed bin, /* offset in tty_buf of last delay queue element */ 3 83 2 bleft_355 fixed bin, /* number of free buffers in this 355 */ 3 84 2 flags, 3 85 3 work_reqd bit (1) unaligned, /* mailbox messages queued up */ 3 86 3 bootloading bit (1) unaligned, /* currently being bootloaded */ 3 87 3 running bit (1) unaligned, /* this FNP is running */ 3 88 3 wired bit (1) unaligned, /* bootload buffer is wired */ 3 89 3 dump_patch_in_progress bit (1) unaligned, /* a dump or patch order is in progress */ 3 90 3 level_3_pending bit (1) unaligned, /* level 3 interrupt pending */ 3 91 3 level_7_pending bit (1) unaligned, /* level 7 interrupt pending */ 3 92 3 dump_patch_disabled bit (1) unaligned, /* dump & patch orders disabled because of timeout */ 3 93 3 t_and_d_in_progress bit (1) unaligned, /* T & D using FNP */ 3 94 3 t_and_d_lev_3_occurred bit (1) unaligned, /* A level 3 occurred */ 3 95 3 t_and_d_lev_7_occurred bit (1) unaligned, 3 96 3 t_and_d_notify_requested bit (1) unaligned, 3 97 3 t_and_d_assigned bit (1) unaligned, /* AS has given fnp to process */ 3 98 3 get_meters_waiting bit (1) unaligned, /* waiting for meter copy to complete */ 3 99 3 padb bit (7) unaligned, 3 100 3 active_dial unaligned, 3 101 4 active_bit (15) bit (1) unaligned, /* ON if the process is active */ 3 102 2 lcte_ptr ptr, /* pointer to this FNP's LCT entry */ 3 103 2 astep ptr, /* pointer to aste of wired bootload buffer */ 3 104 2 boot_ev_chan fixed bin (71), /* event channel over which to signal bootload completion */ 3 105 2 boot_process_id bit (36), /* process that initiated bootload */ 3 106 2 version char (4), /* version id of core image */ 3 107 2 fnp_mem_size fixed bin (18) unsigned, /* memory size of this FNP in 18-bit words */ 3 108 2 queue_lock bit (36) aligned, /* lock for interrupt queue */ 3 109 2 dump_patch_lock bit (36), /* lock for fnp_dump or _patch operation */ 3 110 2 q_entries_made fixed bin (35), /* count of delay queue entries made */ 3 111 2 input_reject_count fixed bin, /* number of times input rejected */ 3 112 2 processed_from_q fixed bin (35), /* number of interrupts processed from queue */ 3 113 2 fnp_channel_locked fixed bin (35), /* number of times dn355 found per-FNP lock locked */ 3 114 2 input_data_transactions fixed bin (35), /* number of mailbox transactions for input */ 3 115 2 output_data_transactions fixed bin (35), /* number of mailbox transactions for output */ 3 116 2 input_control_transactions fixed bin (35), /* number of mailbox transactions for inbound control info */ 3 117 2 output_control_transactions fixed bin (35), /* number of mailbox transactions for outbound control info */ 3 118 2 cumulative_mbx_in_use fixed bin (35), /* cumulative count of number of outbound mailboxes in use */ 3 119 2 max_mbx_in_use fixed bin, /* maximum number of mailboxes in use at any given time */ 3 120 2 mbx_in_use_updated fixed bin (35), /* number of increments to cumulative_mbx_in_use */ 3 121 2 mbx_unavailable fixed bin (35), /* number of times had to queue mailbox transaction because none available */ 3 122 2 free_size fixed bin (35), /* cumulative amount of bleft_355 */ 3 123 2 free_count fixed bin, /* number of adds to above */ 3 124 2 fnp_space_restricted_output fixed bin (35), /* number of times available FNP space restricted amount of output sent */ 3 125 2 tandd_pcbx fixed bin, /* index of PCB for COLTS channel */ 3 126 2 n_pages_wired fixed bin, /* pages wired for loading */ 3 127 2 config_flags aligned, 3 128 3 available bit (1) unaligned, /* reconfig says "yes" */ 3 129 3 io_manager_assigned bit (1) unaligned, /* We have channel assigned to us */ 3 130 3 pad bit (34) unaligned, 3 131 2 uncp_pcbx1 fixed bin (17) unaligned, /* For the DN7100 */ 3 132 2 uncp_pcbx2 fixed bin (17) unaligned, /* For the DN7100 */ 3 133 2 ptx fixed bin, /* page table index, used only at bootload */ 3 134 2 ptp pointer unaligned; /* page table for this FNP */ 3 135 3 136 /**** The following named constants are used to lay out the 3 137* iom page tables. Each FNP has to have its own page 3 138* table because there is not enough room to have eight different 3 139* bootload images of 32 K and > 64 K of tty_buf 3 140* 3 141* THE MAX TTY BUF LENGTH IS 192 K words. We could have another 16 K 3 142* easily, and then after that it would get hard. */ 3 143 3 144 /**** The layout 3 145* 3 146* Page I/O address Memory address Comments 3 147* ---- ------ -------------- -------- 3 148* 0 0 xxxxxx invalid PTW 3 149* 1 2000 2000 write-enabled (mailbox) 3 150* 2 4000 4000 write-enabled (mailbox) 3 151* 3 6000 6000 write-enabled (mailbox) 3 152* 4 10000 as needed bootload image segment page 0 3 153* .... .... .... .... 3 154* 35 110000 as needed bootload image segment page 31 3 155* 36 112000 xxxxxx invalid PTW 3 156* ... .... .... .... 3 157* 63 160000 .... invalid PTW 3 158* 64 200000 as needed tty_buf page 0 3 159* ... .... .... .... 3 160* 127 260000 as needed tty_buf page 63 3 161* 255 ...... ..... tty_buf page 191 3 162**/ 3 163 3 164 /**** We assume that the page table starts at all zeros. */ 3 165 3 166 declare FIRST_BOOTLOAD_PAGEX fixed bin init (4) int static options (constant); 3 167 declare FIRST_TTY_BUF_PAGEX fixed bin init (64) int static options (constant); 3 168 3 169 /* End include file dn355_data.incl.pl1 */ 1126 4 1 /* BEGIN INCLUDE FILE ... sdw.incl.pl1 ... last modified 12 May 1976 */ 4 2 4 3 dcl sdwp ptr; 4 4 4 5 dcl 1 sdw based (sdwp) aligned, /* Segment Descriptor Word */ 4 6 4 7 (2 add bit (24), /* main memory address of page table */ 4 8 2 (r1, r2, r3) bit (3), /* ring brackets for the segment */ 4 9 2 df bit (1), /* directed fault bit (0 => fault) */ 4 10 2 df_no bit (2), /* directed fault number */ 4 11 4 12 2 pad1 bit (1), 4 13 2 bound bit (14), /* boundary field (in 16 word blocks) */ 4 14 2 access, /* access bits */ 4 15 3 read bit (1), /* read permission bit */ 4 16 3 execute bit (1), /* execute permission bit */ 4 17 3 write bit (1), /* write permission bit */ 4 18 3 privileged bit (1), /* privileged bit */ 4 19 2 unpaged bit (1), /* segment is unpaged if this is 1 */ 4 20 2 entry_bound_sw bit (1), /* if this is 0 the entry bound is checked by hardware */ 4 21 2 cache bit (1), /* cache enable bit */ 4 22 2 entry_bound bit (14)) unaligned; /* entry bound */ 4 23 4 24 dcl 1 sdwa (0: 1) based (sdwp) aligned like sdw; /* SDW array (descriptor segment) */ 4 25 4 26 /* END INCLUDE FILE sdw.incl.pl1 */ 1127 5 1 /* Begin include file ..... debug_fnp_data.incl.pl1 */ 5 2 5 3 /* Describes various structures used by the debug_fnp command */ 5 4 5 5 /* Written February 1977 by Larry Johnson */ 5 6 5 7 /* Structures describing a symbol table used by the debug_fnp command, 5 8* to find values for common FNP symbols. */ 5 9 5 10 dcl db_fnp_symbols_$db_fnp_symbols_ ext; 5 11 5 12 dcl symbol_tablep ptr; 5 13 5 14 dcl 1 symbol_table aligned based (symbol_tablep), 5 15 2 cnt fixed bin, /* Number of entries */ 5 16 2 maxcnt fixed bin, /* Max count */ 5 17 2 entry (symbol_table.cnt) unal, 5 18 3 one_symbol like sym unal; 5 19 5 20 dcl symp ptr; /* Pointer to one symbol */ 5 21 5 22 dcl 1 sym unal based (symp), 5 23 2 name char (6), 5 24 2 value fixed bin (17), 5 25 2 len fixed bin (17), /* Number of words */ 5 26 2 reloc fixed bin (17), 5 27 2 type fixed bin (17), 5 28 2 flag_mem char (6), /* If non blank, name of word in which this is a flag */ 5 29 2 explain bit (18), /* Offset to explanation for symbol */ 5 30 2 pad bit (18); 5 31 5 32 dcl exptextp ptr; 5 33 5 34 dcl 1 exptext aligned based (exptextp), /* Symbol explanation entry */ 5 35 2 len fixed bin (8) unal, 5 36 2 data char (exptext.len) unal; 5 37 5 38 /* Values for sym.reloc, which is relocation required to find the symbol */ 5 39 5 40 dcl (reloc_abs init (0), /* Value is absolute */ 5 41 reloc_tib init (1), /* Value is relative to current tib addr */ 5 42 reloc_hwcm init (2), /* Value is relative to current hwcm */ 5 43 reloc_sfcm init (3), /* Value is relative to software comm region */ 5 44 reloc_meters init (4)) /* Value is relative to tib meters */ 5 45 int static options (constant); 5 46 5 47 /* Values for sym.type, which is the mode to be used in displaying symbol */ 5 48 5 49 dcl (type_oct init (0), /* Octal, default for most symbols */ 5 50 type_char init (1), /* Ascii characters */ 5 51 type_addr init (2), /* Address to be converted to mod|offset */ 5 52 type_clock init (3), /* Multics clock value */ 5 53 type_inst init (4), /* Machine instruction */ 5 54 type_op init (5), /* Interpreter opblock format */ 5 55 type_dec init (6), /* Decimal */ 5 56 type_bit init (7), /* In bits */ 5 57 type_ebcdic init (8)) /* 8-bit ebcdic characters */ 5 58 int static options (constant); 5 59 5 60 dcl long_type_names (0:8) char (12) int static options (constant) init ( 5 61 "octal", "character", "address", "clock", "instruction", "opblock", "decimal", "bit", "ebcdic"); 5 62 dcl short_type_names (0:8) char (4) int static options (constant) init ( 5 63 "oct", "ch", "addr", "ck", "inst", "op", "dec", "bit", "ebc"); 5 64 5 65 5 66 /* Structure of suplmental data used in evaluating expressions */ 5 67 5 68 dcl expr_infop ptr; 5 69 5 70 dcl 1 expr_info aligned based (expr_infop), 5 71 2 flags, 5 72 3 star_known bit (1) unal, /* Value of "*" is known */ 5 73 3 tib_known bit (1) unal, /* TIB addresses may be used */ 5 74 3 hwcm_known bit (1) unal, /* HWCM address may be used */ 5 75 3 sfcm_known bit (1) unal, /* SFCM address may be used */ 5 76 3 pad bit (32) unal, 5 77 2 star_addr fixed bin, /* Value of "*" */ 5 78 2 tib_addr fixed bin, /* Address of TIB */ 5 79 2 hwcm_addr fixed bin, /* Address of HWCM */ 5 80 2 sfcm_addr fixed bin, /* Address of SFCM */ 5 81 2 type fixed bin, /* Expression type (mode for printing) */ 5 82 2 len fixed bin, /* Implied length of expression */ 5 83 2 user_tablep ptr; /* Pointer to a user symbol table */ 5 84 5 85 5 86 /* Structure of opcode table of machine instructions */ 5 87 5 88 dcl db_fnp_opcodes_$ ext; 5 89 5 90 dcl optablep ptr; 5 91 5 92 dcl 1 optable aligned based (optablep), 5 93 2 cnt fixed bin, 5 94 2 entry (optable.cnt) unal, 5 95 3 one_op like op; 5 96 5 97 dcl opp ptr; 5 98 5 99 dcl 1 op unal based (opp), 5 100 2 name char (6), /* The mneumonic */ 5 101 2 code bit (12), /* The opcode */ 5 102 2 mask bit (12), /* Mask that says where the opcode is */ 5 103 2 type fixed bin (11), /* Type of display required */ 5 104 2 pad bit (18); 5 105 5 106 /* Values for op.type are: 5 107* 0 - storage reference 5 108* 1 - non-storage reference (immediate), 5 109* 2 - non-storage reference (iacxn only), 5 110* 3 - non-storage reference (shifts), 5 111* 4 - non-storage reference (no operands) */ 5 112 5 113 5 114 /* Stuctures used while parsing commands into operands */ 5 115 5 116 dcl cmd_infop ptr; 5 117 5 118 dcl 1 cmd_info aligned based (cmd_infop), 5 119 2 inbuf char (256), /* For reading lines */ 5 120 2 opbuf char (256), /* Used for operand in undoubling quotes */ 5 121 2 commandp ptr, /* Address of unparsed part of command */ 5 122 2 commandl fixed bin, /* Length of unparsed part */ 5 123 2 operandp ptr, /* Address of current operand */ 5 124 2 operandl fixed bin, /* And its length */ 5 125 2 error bit (1), /* Set if error parsing operand */ 5 126 2 endline bit (1), /* Set if no more operands on line */ 5 127 2 opstring bit (1), /* Set if operand was unquoted string */ 5 128 2 flush bit (1), /* If set, rest of input line will be ignored */ 5 129 2 envp ptr; /* Pointer to the debug_fnp environment structure */ 5 130 5 131 dcl command char (cmd_info.commandl) based (cmd_info.commandp); 5 132 dcl operand char (cmd_info.operandl) based (cmd_info.operandp); 5 133 5 134 /* The following structure describes the current debug_fnp environment. */ 5 135 /* It specifies whether we are working on a dump, fnp, core image, etc. */ 5 136 5 137 dcl envp ptr; 5 138 5 139 dcl 1 env aligned based (envp), 5 140 2 corep ptr, /* Ptr to current dump or core-image. Null means live FNP */ 5 141 2 fnp fixed bin, /* Current fnp number */ 5 142 2 dump_dir char (168) unal, /* Directory where dumps are found */ 5 143 2 dir char (168) unal, /* Directory for current dump or core image */ 5 144 2 ename char (32) unal, /* Ename for current dump or core image */ 5 145 2 tty_name char (32), /* Name of current channel */ 5 146 2 segp ptr, /* Pointer to base of current segment */ 5 147 2 flags unal, 5 148 3 fnps_configured bit (8), /* Says which FNP's appear in config deck */ 5 149 3 fnp_sw bit (1), /* 1 if currently working on fnp */ 5 150 3 image_sw bit (1), /* 1 if currently working on a core-image */ 5 151 3 dump_sw bit (1), /* 1 if current working on a dump */ 5 152 3 fdump_sw bit (1), /* 1 if current dump is a fdump */ 5 153 3 pad bit (24), 5 154 2 dump_time fixed bin (71); /* Clock time dump occured */ 5 155 5 156 /* Structure of data defining table of interpreter opblock names */ 5 157 5 158 dcl db_fnp_opblocks_$ ext; 5 159 5 160 dcl opblock_tablep ptr; 5 161 5 162 dcl 1 opblock_table aligned based (opblock_tablep), 5 163 2 cnt fixed bin, 5 164 2 name (0:opblock_table.cnt) char (6) unal; 5 165 5 166 /* End include file ..... debug_fnp_data.incl.pl1 */ 1128 1129 1130 end display_psp; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/25/89 1000.0 display_psp.pl1 >special_ldd>install>MR12.3-1100>display_psp.pl1 1124 1 03/27/82 0435.8 software_pnotice_info_.incl.pl1 >ldd>include>software_pnotice_info_.incl.pl1 1125 2 03/27/82 0435.8 pnotice.incl.pl1 >ldd>include>pnotice.incl.pl1 1126 3 10/25/89 0959.9 dn355_data.incl.pl1 >special_ldd>install>MR12.3-1100>dn355_data.incl.pl1 1127 4 09/14/76 0759.8 sdw.incl.pl1 >ldd>include>sdw.incl.pl1 1128 5 06/19/81 2115.0 debug_fnp_data.incl.pl1 >ldd>include>debug_fnp_data.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. Ccode 000100 automatic fixed bin(35,0) dcl 51 in procedure "display_psp" set ref 442* Ccode 000100 automatic fixed bin(35,0) dcl 1087 in procedure "janitor" set ref 1090* 1094* Lpnotice 3 based fixed bin(17,0) level 2 dcl 2-9 ref 512 518 519 548 549 554 MI 1 based char(7) array level 3 dcl 1-6 set ref 204 793 809 845 898* MI_name 000101 automatic char(9) packed unaligned dcl 52 set ref 291* 793 799 813 850 NL 010770 constant char(1) initial packed unaligned dcl 53 ref 480 519 549 Npnotice 1 based fixed bin(17,0) level 2 dcl 2-9 ref 516 547 Nsti 2 based fixed bin(17,0) level 2 dcl 2-9 ref 539 P_ark_bc 002706 automatic fixed bin(24,0) dcl 413 set ref 438* 453* 501* P_ark_ptr 002704 automatic pointer dcl 412 set ref 438* 442* 453* 501* 531 P_comp_bc 002712 automatic fixed bin(24,0) dcl 417 set ref 453* 460 501* P_comp_length 002707 automatic fixed bin(17,0) dcl 415 set ref 460* 464 467 469 477 478 480 480 484 491 493 P_comp_ptr 002710 automatic pointer dcl 416 set ref 453* 464 467 469 477 478 480 480 484 491 493 501* 509 P_comp_seg based char packed unaligned dcl 414 ref 464 467 469 477 478 480 480 484 491 493 P_pnotice_sti 002634 automatic pointer dcl 2-17 set ref 509* 512 516 518 519 531* 534 539 547 548 549 554 Pnotice 000104 automatic structure level 1 dcl 55 QUOTE constant char(1) initial packed unaligned dcl 62 ref 469 478 480 484 907 907 907 907 SI_ptr 002632 automatic pointer dcl 1-26 set ref 204 204 206 222 223 224 225 225 226 226 227 227 363* 388* 793 793 798 806 807 809 809 809 812 828 828 831 841 843 845 845 845 849 863 872 897 897 898 900 900 900 907 914 914 914 922 927 927 927 934 942 942 942 949 954 954 954 960 964 964 964 970 977 977 978 978 978 989 989 989 998 998 998 1075 STI based char(12) array level 2 dcl 2-9 ref 512 554 Sptr 002472 automatic pointer dcl 63 set ref 151* 357* 363 1090 1090* Tpointer 002713 automatic fixed bin(17,0) dcl 418 set ref 464* 467* 467 467 469 477* 477 477 478* 478 478 480 480 484* 484 484 491* 491 491 493 514* 518 519 521* 521 533* 548 549 551* 551 Vpnotice_sti_1 based fixed bin(17,0) level 2 dcl 2-9 ref 534 active_fnc_err_ 007062 constant entry external dcl 65 ref 1114 addr builtin function dcl 142 ref 569 569 573 586 637 640 647 647 661 661 716 716 721 721 729 729 730 730 741 764 764 af_flag 002475 automatic bit(1) initial packed unaligned dcl 66 set ref 66* 180* 194 213 234 1114 all_flag 002476 automatic bit(1) initial packed unaligned dcl 67 set ref 67* 256* 310 311* 323 329 archive_$get_component 007154 constant entry external dcl 419 ref 453 501 arg based char packed unaligned dcl 68 set ref 201* 201 204 207 222 223 224 225 226 227 229 268 270 270 276 277 280 286 288 291 294 294 299 299 304 309 309 1104 1110 arg_data_ptr parameter pointer dcl 699 ref 694 708 arg_fnp_len parameter fixed bin(17,0) dcl 698 ref 694 705 707 argl 002477 automatic fixed bin(21,0) dcl 69 set ref 194* 195* 201 201 204 207 213* 214* 222 223 224 225 226 227 229 265* 268 270 270 274* 276 277 280 284* 286 287 288 291 294 294 299 299 304 309 309 1104 1110 argno 002502 automatic fixed bin(17,0) dcl 71 set ref 262* 265* 273* 273 274* 283* 283 284* argp 002500 automatic pointer dcl 70 set ref 194* 195* 201 201 204 207 213* 214* 222 223 224 225 226 227 229 265* 268 270 270 274* 276 277 280 284* 286 288 291 294 294 299 299 304 309 309 1104 1110 baseno builtin function dcl 142 ref 764 764 before builtin function dcl 142 ref 469 bin builtin function dcl 142 ref 574 655 664 668 673 675 679 764 764 bound 1(01) based bit(14) level 2 packed packed unaligned dcl 4-5 ref 574 brief_flag 002503 automatic bit(1) initial packed unaligned dcl 72 set ref 72* 257* 295 296* 317 790* 976 call_type 000101 automatic fixed bin(17,0) dcl 701 set ref 706* 714 718* 723* 729 chain 002745 automatic structure level 1 dcl 626 set ref 661 661 chainloc 002736 automatic fixed bin(17,0) dcl 623 set ref 655* 660 661* 675* cl 002714 automatic fixed bin(17,0) dcl 421 set ref 518* 519 521 548* 549 551 cleanup 002576 stack reference condition dcl 146 ref 155 cnt based fixed bin(17,0) level 2 dcl 5-14 ref 639 code parameter fixed bin(35,0) dcl 632 in procedure "setup_module_table" set ref 620 647* 649 650 661* code 002504 automatic fixed bin(35,0) dcl 73 in procedure "display_psp" set ref 178* 180 185* 194* 195* 196 197* 208* 213* 214* 215 216* 230* 265* 266 274* 275 284* 285 318* 324* 330* 336* 357* 358 365* 366 388* 389 438* 439 440 445* 453* 456 501* 504 536* 541* 563* 564 578* 579 590* 591 592 607* 757* 759 764* 765 800* 814* 833* 851* 905 919 932 947 958 968 983 994 1003 1019* 1026 1028 1029* 1031* 1035 1036* 1039* 1043 1044* 1045* 1049 1050* 1051* 1055 1056* 1057* 1060 1061* 1062* 1066 1067* 1069* 1073 1101* 1108* 1114* 1116* code parameter fixed bin(35,0) dcl 702 in procedure "fnp_fetch" set ref 694 716* 721* 726* 729* 730* 732 734* 737 com_err_ 007064 constant entry external dcl 74 ref 1029 1036 1044 1050 1056 1061 1067 1116 convert builtin function dcl 142 ref 469 copyw_flag 002505 automatic bit(1) initial packed unaligned dcl 75 set ref 75* 305 306* 940 crmod 000010 internal static fixed bin(17,0) dcl 76 set ref 642* 647* cu_$af_arg_ptr 007070 constant entry external dcl 78 ref 194 213 cu_$af_return_arg 007066 constant entry external dcl 77 ref 178 cu_$arg_count 007072 constant entry external dcl 79 ref 181 253 cu_$arg_ptr 007074 constant entry external dcl 80 ref 195 214 265 274 284 data_ptr 2 002512 automatic pointer level 2 dcl 93 set ref 708* 741* 741 datanet_info based structure level 1 dcl 3-52 datanet_infop 000012 internal static pointer dcl 81 set ref 152* 365* 577 1094 1094* date 5 000017 internal static char(6) array level 4 in structure "fnptab" dcl 100 in procedure "display_psp" set ref 673* date 2 002745 automatic bit(6) array level 2 in structure "chain" packed packed unaligned dcl 626 in procedure "setup_module_table" set ref 673 db_fnp_symbols_$db_fnp_symbols_ 007152 external static fixed bin(17,0) dcl 5-10 set ref 637 ddata_sdw 002506 automatic fixed bin(71,0) dcl 82 set ref 569 569 573 dirname 311 based char(168) array level 4 in structure "product" dcl 1-6 in procedure "display_psp" ref 225 900 942 978 dirname 373 based char(168) array level 4 in structure "product" dcl 1-6 in procedure "display_psp" ref 226 914 954 989 dirname parameter char(168) packed unaligned dcl 1014 in procedure "validate_macro" set ref 1011 1018 1023* 1029* 1029* 1036* 1036* 1050* 1067* 1067* dirname parameter char(168) packed unaligned dcl 422 in procedure "find_lib_info" set ref 398 438* dirname 227 based char(168) array level 4 in structure "product" dcl 1-6 in procedure "display_psp" ref 227 927 964 998 divide builtin function dcl 142 ref 460 dn355_data_len 000016 internal static fixed bin(17,0) dcl 84 set ref 574* 578* dn355_datap 000014 internal static pointer dcl 83 set ref 153* 569* 578* dsegp 002510 automatic pointer dcl 85 set ref 563* 764 764 entry 2 based structure array level 2 packed packed unaligned dcl 5-14 set ref 640 entryname 363 based char(32) array level 4 in structure "product" dcl 1-6 in procedure "display_psp" set ref 225 900 907* 942 949* 978 entryname 445 based char(32) array level 4 in structure "product" dcl 1-6 in procedure "display_psp" set ref 226 914 922* 954 960* 989 1075 entryname parameter char(32) packed unaligned dcl 423 in procedure "find_lib_info" set ref 398 436 438* 450 498 528 560 596 entryname 301 based char(32) array level 4 in structure "product" dcl 1-6 in procedure "display_psp" set ref 227 927 934* 964 970* 998 entryname parameter char(32) packed unaligned dcl 1015 in procedure "validate_macro" set ref 1011 1018 1023* 1029* 1029* 1036* 1036* 1056* 1061* 1067* 1067* error_table_$bad_arg 007110 external static fixed bin(35,0) dcl 86 ref 208 230 800 814 833 851 1101 error_table_$improper_data_format 007104 external static fixed bin(35,0) dcl 86 ref 536 541 1035 error_table_$inconsistent 007112 external static fixed bin(35,0) dcl 86 ref 318 324 330 336 1108 error_table_$incorrect_access 007076 external static fixed bin(35,0) dcl 86 ref 1060 error_table_$moderr 007116 external static fixed bin(35,0) dcl 86 ref 592 650 726 1055 error_table_$no_component 007106 external static fixed bin(35,0) dcl 86 ref 1066 error_table_$no_dir 007102 external static fixed bin(35,0) dcl 86 ref 1049 error_table_$no_info 007120 external static fixed bin(35,0) dcl 86 ref 1043 error_table_$noarg 007122 external static fixed bin(35,0) dcl 86 ref 216 error_table_$noentry 007100 external static fixed bin(35,0) dcl 86 ref 1028 error_table_$segknown 007114 external static fixed bin(35,0) dcl 86 ref 440 error_table_$undefined_order_request 007126 external static fixed bin(35,0) dcl 86 ref 732 error_table_$wrong_no_of_args 007124 external static fixed bin(35,0) dcl 86 ref 185 197 flags 30 based structure level 2 dcl 3-67 fnp 002520 automatic fixed bin(17,0) dcl 98 set ref 585* 586 588* 596 596 600 600 600* 634 664 670 673 681 685 686 716* 729* fnp_addr 002512 automatic fixed bin(17,0) level 2 in structure "fnp_infos" dcl 93 in procedure "display_psp" set ref 709* 739* 739 fnp_addr parameter fixed bin(17,0) dcl 697 in procedure "fnp_fetch" ref 694 709 fnp_info based structure level 1 dcl 3-67 fnp_infos 002512 automatic structure level 1 dcl 93 set ref 716 716 721 721 729 729 730 730 fnp_len 000100 automatic fixed bin(17,0) dcl 700 in procedure "fnp_fetch" set ref 705* 712 713 742* 742 fnp_len 1 002512 automatic fixed bin(17,0) level 2 in structure "fnp_infos" dcl 93 in procedure "display_psp" set ref 707* 713* 739 741 742 fnp_mem based bit(18) array packed unaligned dcl 696 set ref 741 fnp_name 002521 automatic char(1) packed unaligned dcl 99 set ref 588* 600* 721* 730* fnpp 002640 automatic pointer dcl 3-50 set ref 586* 587 fnptab 000017 internal static structure level 1 dcl 100 generic_name 002522 automatic varying char(32) dcl 110 set ref 277* 828 832 get_fnp_name_ 007156 constant entry external dcl 424 ref 588 get_temp_segment_ 007130 constant entry external dcl 111 ref 357 365 hbound builtin function dcl 142 ref 660 hcs_$initiate_count 007160 constant entry external dcl 425 ref 438 hcs_$terminate_noname 007162 constant entry external dcl 427 ref 442 i 002734 automatic fixed bin(17,0) dcl 622 in procedure "setup_module_table" set ref 639* 640* 658* 660 663* 663 664 670 673 681 685 i 002715 automatic fixed bin(17,0) dcl 428 in procedure "find_lib_info" set ref 476* 516* 547* i 002533 automatic fixed bin(17,0) dcl 112 in procedure "display_psp" set ref 204* 204* 206 222 223 224 225 225 226 226 227 227 793* 793* 795 798 806 807 809 828* 828* 831 837 841 843 845 863* 868 872* ii 002770 automatic fixed bin(17,0) dcl 787 set ref 809* 809* 812 817 845* 845* 849 854 index builtin function dcl 142 ref 450 464 467 477 478 480 484 491 498 528 infop 002636 automatic pointer dcl 3-49 set ref 577* 578* 586 init_switches 000017 internal static structure array level 3 dcl 100 ioa_ 007132 constant entry external dcl 113 ref 234 600 650 897 898 906 907 921 922 933 934 949 960 970 977 983 994 1003 j 002735 automatic fixed bin(17,0) dcl 622 in procedure "setup_module_table" set ref 667* 668 668* 672* 673 673* 678* 679 679* j 002771 automatic fixed bin(17,0) dcl 787 in procedure "out_info" set ref 807* 807* 809* 843* 843* 845* length builtin function dcl 142 ref 436 560 linkage_error 000000 stack reference condition dcl 146 ref 715 717 720 722 725 long_flag 002534 automatic bit(1) initial packed unaligned dcl 114 set ref 114* 300 301* 317 790 894 ltrim builtin function dcl 142 ref 436 469 493 560 907 907 match_flag 002535 automatic bit(1) initial packed unaligned dcl 115 set ref 115* 281 282* 323 335 792 max_no_355s constant fixed bin(17,0) initial dcl 3-45 ref 3-52 585 message_out 002604 automatic varying char(80) dcl 176 set ref 222* 223* 224* 225* 226* 227* 234* 235 min builtin function dcl 142 ref 713 mod_name 002740 automatic char(8) packed unaligned dcl 624 set ref 666* 668* 670 mod_sti 002742 automatic char(12) packed unaligned dcl 625 set ref 677* 679* 681 modtab_init 000017 internal static bit(1) array level 4 packed packed unaligned dcl 100 set ref 634 686* name 0(18) 002745 automatic bit(6) array level 2 in structure "chain" packed packed unaligned dcl 626 in procedure "setup_module_table" set ref 668 name based char(6) level 2 in structure "sym" packed packed unaligned dcl 5-22 in procedure "display_psp" ref 641 name 2 000017 internal static char(6) array level 4 in structure "fnptab" dcl 100 in procedure "display_psp" set ref 596 600* 670* name_flag 002536 automatic bit(1) initial packed unaligned dcl 116 set ref 116* 271 272* 329 335 826 nargs 002537 automatic fixed bin(17,0) dcl 117 set ref 178* 181* 184 253* 255 262 next 002745 automatic bit(18) level 2 packed packed unaligned dcl 626 set ref 647 647 655 675 nmodules 1 000017 internal static fixed bin(17,0) array level 3 dcl 100 set ref 596 600 685* no_acc_sw 002474 automatic bit(1) initial packed unaligned dcl 64 set ref 64* 570 592* 761* 767* null builtin function dcl 142 ref 151 152 153 710 1090 1094 num 1 based structure array level 2 dcl 1-6 num_of_pnotice 002716 automatic fixed bin(17,0) dcl 429 set ref 469* 469 476 object_C 647 000104 automatic char(1680) initial level 2 dcl 55 set ref 55* 506* 519* 519 922* 960 960 object_STI 1513 000104 automatic char(12) initial level 2 dcl 55 set ref 55* 512* 921* 994* object_path 373 based structure array level 3 dcl 1-6 op based structure level 1 packed packed unaligned dcl 5-99 parse_pnotice_info_ 007134 constant entry external dcl 118 ref 388 pathname_ 007136 constant entry external dcl 119 ref 1029 1029 1036 1036 1067 1067 per_datanet 22 based structure array level 2 dcl 3-52 set ref 586 per_fnp 000017 internal static structure array level 2 dcl 100 per_module 2 000017 internal static structure array level 3 dcl 100 set ref 660 phcs_$tty_control 007142 constant entry external dcl 121 ref 721 730 phcs_$tty_order 007140 constant entry external dcl 120 ref 716 729 pnotice 4 based char level 2 dcl 2-9 ref 518 519 548 549 pnotice_sti based structure level 1 dcl 2-9 prev_data_ptr 4 002512 automatic pointer level 2 dcl 93 set ref 710* print_prod 002540 automatic fixed bin(17,0) dcl 122 set ref 795* 817* 837* 854* 868* 897 897 898 900 900 900 907 914 914 914 922 927 927 927 934 942 942 942 949 954 954 954 960 964 964 964 970 977 977 978 978 978 989 989 989 998 998 998 1075 prod_STI 34 based char(12) array level 3 dcl 1-6 ref 224 prod_name 3 based char(20) array level 3 in structure "product" dcl 1-6 in procedure "display_psp" ref 223 828 900 914 927 942 954 964 978 989 998 prod_name parameter char(24) packed unaligned dcl 1016 in procedure "validate_macro" set ref 1011 1023* prod_name parameter char(24) packed unaligned dcl 430 in procedure "find_lib_info" ref 398 453 501 prod_number based fixed bin(17,0) level 2 dcl 1-6 ref 204 206 793 798 809 812 828 831 845 849 863 prod_title 10 based char(80) array level 3 dcl 1-6 ref 222 897 897 977 977 prod_use 455 based char(7) array level 3 dcl 1-6 ref 806 807 809 841 843 845 872 product based structure level 1 dcl 1-6 prog_name 002541 automatic varying char(12) dcl 123 set ref 154* 177* 357 365 1029* 1036* 1044* 1050* 1056* 1061* 1067* 1090 1094 1114* 1116* rank builtin function dcl 142 ref 518 548 release_temp_segment_ 007144 constant entry external dcl 124 ref 1090 1094 ret based varying char dcl 125 set ref 235* retl 002545 automatic fixed bin(21,0) dcl 126 set ref 178* 235 retp 002546 automatic pointer dcl 127 set ref 178* 235 ring0_get_$segptr 007146 constant entry external dcl 128 ref 563 757 ring_zero_peek_ 007150 constant entry external dcl 129 ref 578 764 ring_zero_ptr parameter pointer dcl 753 set ref 749 757* 764 764 rtrim builtin function dcl 142 ref 225 226 227 436 453 469 480 501 519 549 560 588 670 897 897 907 907 907 907 949 949 960 960 970 970 977 977 1075 running 30(02) based bit(1) level 3 packed packed unaligned dcl 3-67 ref 587 sdw based structure level 1 dcl 4-5 ref 764 764 sdw_ptr parameter pointer dcl 754 set ref 749 764* sdwa based structure array level 1 dcl 4-24 set ref 764 764 sdwp 002642 automatic pointer dcl 4-3 set ref 573* 574 764 764 seg_name parameter char packed unaligned dcl 752 set ref 749 757* size builtin function dcl 142 ref 764 764 source_C 000104 automatic char(1680) initial level 2 dcl 55 set ref 55* 458* 480* 480 907 907 949 949 source_STI 644 000104 automatic char(12) initial level 2 dcl 55 set ref 55* 493* 906* 983* source_path 311 based structure array level 3 dcl 1-6 start 1(18) 002745 automatic bit(18) level 2 in structure "chain" packed packed unaligned dcl 626 in procedure "setup_module_table" set ref 664 start 4 000017 internal static fixed bin(17,0) array level 4 in structure "fnptab" dcl 100 in procedure "display_psp" set ref 664* state 000102 automatic fixed bin(17,0) dcl 703 set ref 716* 729* sti 7 000017 internal static char(12) array level 4 in structure "fnptab" dcl 100 in procedure "display_psp" set ref 600* 681* sti 3 002745 automatic bit(6) array level 2 in structure "chain" packed packed unaligned dcl 626 in procedure "setup_module_table" set ref 679 substr builtin function dcl 142 set ref 268 276 286 467 469 477 478 480 480 484 491 493 493 518 519 548 549 668* 673* 679* sym based structure level 1 packed packed unaligned dcl 5-22 symbol_table based structure level 1 dcl 5-14 symbol_tablep 002644 automatic pointer dcl 5-12 set ref 637* 639 640 symp 002646 automatic pointer dcl 5-20 set ref 640* 641 642 translate builtin function dcl 142 ref 201 670 true constant bit(1) initial packed unaligned dcl 130 ref 180 256 257 272 282 296 301 306 311 570 592 761 767 790 value 1(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 5-22 ref 642 warn 002550 automatic varying char(80) dcl 131 set ref 186* 198* 207* 217* 229* 288* 319* 325* 331* 337* 359* 367* 390* 565* 580* 760* 766* 799* 813* 832* 850* 1075* 1104* 1110* 1114* 1116* whitesp 000000 constant char(4) initial packed unaligned dcl 431 ref 469 469 493 x_path 227 based structure array level 3 dcl 1-6 xecute_C 1516 000104 automatic char(1680) initial level 2 dcl 55 set ref 55* 545* 549* 549 934* 970 970 xecute_STI 2362 000104 automatic char(12) initial level 2 dcl 55 set ref 55* 554* 933* 1003* xlate 000001 constant char(1) initial array packed unaligned dcl 132 ref 668 673 679 xx 002717 automatic fixed bin(17,0) dcl 434 set ref 596* 596* 600 600 600 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. FIRST_BOOTLOAD_PAGEX internal static fixed bin(17,0) initial dcl 3-166 FIRST_TTY_BUF_PAGEX internal static fixed bin(17,0) initial dcl 3-167 Vpnotice_sti_1 internal static fixed bin(17,0) initial dcl 2-18 cmd_info based structure level 1 dcl 5-118 cmd_infop automatic pointer dcl 5-116 command based char packed unaligned dcl 5-131 db_fnp_opblocks_$ external static fixed bin(17,0) dcl 5-158 db_fnp_opcodes_$ external static fixed bin(17,0) dcl 5-88 dn355_data$ external static fixed bin(17,0) dcl 3-47 env based structure level 1 dcl 5-139 envp automatic pointer dcl 5-137 expr_info based structure level 1 dcl 5-70 expr_infop automatic pointer dcl 5-68 exptext based structure level 1 dcl 5-34 exptextp automatic pointer dcl 5-32 long_type_names internal static char(12) initial array packed unaligned dcl 5-60 opblock_table based structure level 1 dcl 5-162 opblock_tablep automatic pointer dcl 5-160 operand based char packed unaligned dcl 5-132 opp automatic pointer dcl 5-97 optable based structure level 1 dcl 5-92 optablep automatic pointer dcl 5-90 reloc_abs internal static fixed bin(17,0) initial dcl 5-40 reloc_hwcm internal static fixed bin(17,0) initial dcl 5-40 reloc_meters internal static fixed bin(17,0) initial dcl 5-40 reloc_sfcm internal static fixed bin(17,0) initial dcl 5-40 reloc_tib internal static fixed bin(17,0) initial dcl 5-40 short_type_names internal static char(4) initial array packed unaligned dcl 5-62 type_addr internal static fixed bin(17,0) initial dcl 5-49 type_bit internal static fixed bin(17,0) initial dcl 5-49 type_char internal static fixed bin(17,0) initial dcl 5-49 type_clock internal static fixed bin(17,0) initial dcl 5-49 type_dec internal static fixed bin(17,0) initial dcl 5-49 type_ebcdic internal static fixed bin(17,0) initial dcl 5-49 type_inst internal static fixed bin(17,0) initial dcl 5-49 type_oct internal static fixed bin(17,0) initial dcl 5-49 type_op internal static fixed bin(17,0) initial dcl 5-49 NAMES DECLARED BY EXPLICIT CONTEXT. bad_arg 001776 constant label dcl 1101 set ref 266 268 275 276 285 286 309 bummer 002042 constant label dcl 1114 ref 187 199 209 218 231 289 320 326 332 338 360 368 391 566 581 801 815 834 852 1078 1105 1111 call_1_failed 005111 constant label dcl 720 ref 715 call_2_failed 005170 constant label dcl 725 ref 720 check_fetch_code 005270 constant label dcl 732 ref 719 724 command_args 002135 constant entry internal dcl 240 ref 157 describe_psp 001037 constant entry external dcl 164 display_psp 000767 constant entry external dcl 25 dup_arg 002013 constant label dcl 1108 ref 271 281 295 300 305 310 find_lib_info 002660 constant entry internal dcl 398 ref 1023 fini 002130 constant label dcl 1120 ref 161 236 fnp_fetch 004773 constant entry internal dcl 694 ref 647 661 get_info 002635 constant entry internal dcl 373 ref 159 191 get_sdw 005315 constant entry internal dcl 749 ref 569 janitor 010041 constant entry internal dcl 1085 ref 155 1117 1120 open_files 002525 constant entry internal dcl 345 ref 158 190 out_info 005432 constant entry internal dcl 775 ref 160 print_it 006116 constant entry internal dcl 881 ref 818 822 855 859 872 setup_module_table 004415 constant entry internal dcl 620 ref 590 validate_macro 007316 constant entry internal dcl 1011 ref 900 914 927 942 954 964 978 989 998 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 11440 20624 10776 11450 Length 21244 10776 7164 403 442 7052 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME display_psp 2049 external procedure is an external procedure. on unit on line 155 64 on unit command_args internal procedure shares stack frame of external procedure display_psp. open_files internal procedure shares stack frame of external procedure display_psp. get_info internal procedure shares stack frame of external procedure display_psp. find_lib_info internal procedure shares stack frame of external procedure display_psp. setup_module_table internal procedure shares stack frame of external procedure display_psp. fnp_fetch 100 internal procedure enables or reverts conditions. on unit on line 715 64 on unit on unit on line 720 64 on unit get_sdw internal procedure shares stack frame of external procedure display_psp. out_info internal procedure shares stack frame of external procedure display_psp. print_it internal procedure shares stack frame of external procedure display_psp. validate_macro internal procedure shares stack frame of external procedure display_psp. janitor 82 internal procedure is called by several nonquick procedures. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 crmod display_psp 000012 datanet_infop display_psp 000014 dn355_datap display_psp 000016 dn355_data_len display_psp 000017 fnptab display_psp STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME display_psp 000100 Ccode display_psp 000101 MI_name display_psp 000104 Pnotice display_psp 002472 Sptr display_psp 002474 no_acc_sw display_psp 002475 af_flag display_psp 002476 all_flag display_psp 002477 argl display_psp 002500 argp display_psp 002502 argno display_psp 002503 brief_flag display_psp 002504 code display_psp 002505 copyw_flag display_psp 002506 ddata_sdw display_psp 002510 dsegp display_psp 002512 fnp_infos display_psp 002520 fnp display_psp 002521 fnp_name display_psp 002522 generic_name display_psp 002533 i display_psp 002534 long_flag display_psp 002535 match_flag display_psp 002536 name_flag display_psp 002537 nargs display_psp 002540 print_prod display_psp 002541 prog_name display_psp 002545 retl display_psp 002546 retp display_psp 002550 warn display_psp 002604 message_out display_psp 002632 SI_ptr display_psp 002634 P_pnotice_sti display_psp 002636 infop display_psp 002640 fnpp display_psp 002642 sdwp display_psp 002644 symbol_tablep display_psp 002646 symp display_psp 002704 P_ark_ptr find_lib_info 002706 P_ark_bc find_lib_info 002707 P_comp_length find_lib_info 002710 P_comp_ptr find_lib_info 002712 P_comp_bc find_lib_info 002713 Tpointer find_lib_info 002714 cl find_lib_info 002715 i find_lib_info 002716 num_of_pnotice find_lib_info 002717 xx find_lib_info 002734 i setup_module_table 002735 j setup_module_table 002736 chainloc setup_module_table 002740 mod_name setup_module_table 002742 mod_sti setup_module_table 002745 chain setup_module_table 002770 ii out_info 002771 j out_info fnp_fetch 000100 fnp_len fnp_fetch 000101 call_type fnp_fetch 000102 state fnp_fetch janitor 000100 Ccode janitor THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry set_chars_eis index_chars_eis any_to_any_truncate_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. active_fnc_err_ archive_$get_component com_err_ cu_$af_arg_ptr cu_$af_return_arg cu_$arg_count cu_$arg_ptr get_fnp_name_ get_temp_segment_ hcs_$initiate_count hcs_$terminate_noname ioa_ parse_pnotice_info_ pathname_ phcs_$tty_control phcs_$tty_order release_temp_segment_ ring0_get_$segptr ring_zero_peek_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. db_fnp_symbols_$db_fnp_symbols_ error_table_$bad_arg error_table_$improper_data_format error_table_$inconsistent error_table_$incorrect_access error_table_$moderr error_table_$no_component error_table_$no_dir error_table_$no_info error_table_$noarg error_table_$noentry error_table_$segknown error_table_$undefined_order_request error_table_$wrong_no_of_args LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 55 000732 64 000754 66 000755 67 000756 72 000757 75 000760 114 000761 115 000762 116 000763 25 000766 151 000775 152 000777 153 001001 154 001002 155 001007 157 001031 158 001032 159 001033 160 001034 161 001035 164 001036 177 001045 178 001052 180 001067 181 001074 184 001103 185 001106 186 001111 187 001116 190 001117 191 001120 194 001121 195 001143 196 001162 197 001164 198 001167 199 001174 201 001175 204 001207 205 001230 206 001232 207 001235 208 001270 209 001274 213 001275 214 001317 215 001336 216 001340 217 001343 218 001350 222 001351 223 001372 224 001411 225 001430 226 001520 227 001611 228 001702 229 001703 230 001735 231 001741 234 001742 235 001764 236 001775 1101 001776 1104 002001 1105 002012 1108 002013 1110 002016 1111 002040 1114 002042 1116 002074 1117 002123 1118 002127 1120 002130 1122 002134 240 002135 253 002136 255 002145 256 002147 257 002151 258 002152 262 002153 265 002161 266 002176 268 002200 270 002205 271 002216 272 002220 273 002222 274 002223 275 002240 276 002242 277 002247 278 002257 280 002260 281 002264 282 002266 283 002270 284 002271 285 002306 286 002310 287 002315 288 002320 289 002351 291 002353 292 002356 294 002357 295 002367 296 002371 297 002373 299 002374 300 002404 301 002406 302 002410 304 002411 305 002415 306 002417 307 002421 309 002422 310 002432 311 002434 316 002436 317 002440 318 002444 319 002447 320 002454 323 002455 324 002461 325 002464 326 002471 329 002472 330 002476 331 002501 332 002506 335 002507 336 002513 337 002516 338 002523 342 002524 345 002525 357 002526 358 002557 359 002562 360 002567 363 002570 365 002572 366 002623 367 002626 368 002633 370 002634 373 002635 388 002636 389 002647 390 002651 391 002656 394 002657 398 002660 436 002662 438 002710 439 002754 440 002756 442 002761 443 002771 445 002772 450 002773 453 003003 456 003075 458 003101 460 003104 464 003107 467 003115 469 003141 476 003224 477 003235 478 003261 480 003305 484 003373 488 003420 491 003423 493 003450 495 003506 498 003510 501 003517 504 003601 506 003605 509 003610 512 003612 514 003625 516 003627 518 003637 519 003646 521 003706 522 003713 523 003715 528 003716 531 003725 533 003727 534 003731 536 003734 537 003737 539 003740 541 003744 542 003747 545 003750 547 003753 548 003763 549 003772 551 004032 552 004037 554 004041 555 004053 560 004054 563 004102 564 004131 565 004133 566 004140 569 004141 570 004170 573 004174 574 004176 577 004205 578 004207 579 004223 580 004225 581 004232 585 004233 586 004243 587 004247 588 004252 590 004300 591 004302 592 004304 593 004311 596 004312 598 004343 600 004345 606 004410 607 004412 613 004414 620 004415 634 004417 637 004427 639 004431 640 004441 641 004445 642 004451 644 004460 647 004462 649 004504 650 004507 652 004525 655 004526 658 004531 660 004532 661 004537 663 004560 664 004561 666 004575 667 004577 668 004605 669 004617 670 004621 672 004654 673 004664 674 004712 675 004714 677 004717 678 004722 679 004727 680 004741 681 004743 682 004760 685 004761 686 004767 687 004771 694 004772 705 005000 706 005003 707 005004 708 005006 709 005011 710 005013 712 005015 713 005020 714 005025 715 005027 716 005046 717 005105 718 005106 719 005110 720 005111 721 005130 722 005164 723 005165 724 005167 725 005170 726 005171 727 005175 729 005176 730 005236 732 005270 734 005275 735 005276 737 005277 739 005301 741 005304 742 005311 743 005313 745 005314 749 005315 757 005326 759 005355 760 005357 761 005364 762 005366 764 005367 765 005417 766 005421 767 005426 768 005430 770 005431 775 005432 790 005433 792 005437 793 005441 794 005460 795 005462 798 005464 799 005466 800 005510 801 005514 806 005515 807 005527 809 005554 810 005604 812 005606 813 005611 814 005633 815 005637 817 005640 818 005641 819 005642 820 005644 822 005645 824 005646 826 005647 828 005651 829 005671 831 005673 832 005676 833 005730 834 005734 837 005735 841 005736 843 005750 845 005774 846 006024 849 006026 850 006031 851 006053 852 006057 854 006060 855 006061 856 006062 857 006064 859 006065 861 006066 863 006067 868 006077 872 006100 874 006113 876 006115 881 006116 894 006117 897 006121 898 006172 900 006220 905 006243 906 006245 907 006265 910 006364 914 006365 919 006410 921 006412 922 006432 927 006463 932 006506 933 006510 934 006530 938 006561 940 006562 942 006564 947 006607 949 006611 951 006663 954 006664 958 006707 960 006711 962 006763 964 006764 968 007007 970 007011 973 007063 974 007064 976 007065 977 007067 978 007140 983 007164 989 007205 994 007230 998 007251 1003 007274 1007 007315 1011 007316 1018 007320 1019 007332 1020 007334 1023 007335 1026 007350 1028 007352 1029 007355 1031 007430 1032 007432 1035 007433 1036 007435 1039 007505 1040 007507 1043 007510 1044 007512 1045 007535 1046 007537 1049 007540 1050 007542 1051 007572 1052 007574 1055 007575 1056 007577 1057 007632 1058 007634 1060 007635 1061 007637 1062 007672 1063 007674 1066 007675 1067 007677 1069 007750 1070 007752 1073 007753 1075 007756 1078 010035 1081 010037 1085 010040 1090 010046 1094 010103 1099 010142 ----------------------------------------------------------- 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