COMPILATION LISTING OF SEGMENT uncp_util Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0929.1 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1988 * 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 /****^ HISTORY COMMENTS: 14* 1) change(88-06-13,Berno), approve(88-07-13,MCR7928), 15* audit(88-06-13,Parisek), install(88-07-19,MR12.2-1061): 16* Created to implement the uncp multiplexer interface. 17* END HISTORY COMMENTS */ 18 19 /* format: style4,delnl,insnl,^ifthendo */ 20 uncp_util: 21 procedure; 22 23 /* This procedure contains entries called through hphcs_ used to load and dump an 24* * FNP. The "wire" entry is used to wire the segment containing the core image so that 25* * DIA I/O will be possible; the "load" entry initiates the bootload I/O; the 26* * "release" entry releases the aste of the coreimage. 27* * The "fdump" entry dumps all of FNP memory into a segment supplied 28* * by the caller. 29* * 30* * Written 5/19/76 by Robert S. Coren 31* * Modified 10/28/76 by Robert S. Coren to save version number and report core image name 32* * Modified 04/15/77 by Robert S. Coren to correct bug in queue buffer freeing 33* * Modified 9/27/78 by J. Stern for multiplexing changes 34* * Modified 79 May 14 by Art Beattie to get memory size and FNP type from caller for fdump entry. 35* * Modified April 1981 by Chris Jones for io_manager conversion 36* * Modified February 1982 by C. Hornig for MR10 io_manager. 37* * Modified 830714 BIM to remove the release entrypoint. abort is suffcient. 38* * Modified 83-12-20 BIM for reconfiguration. 39* * Modified 84-05-18 BIM for better maintenance of io_manager_assigned bit. 40* * Modified 1984-08-02 BIM for code return from load. 41* * Modified 1984-07-26 BIM for paged I/O on loads. 42* * Modified 1985-01-29, BIM: fix dump_mpx to leave chn unassigned. 43* * Modified 1985-03-12, E. Swenson to fix unitialized timeout flag to 44* * prevent spurious timeout errors. 45* 46* * THE FOLLOWING HISTORY COMMENTS REFER TO UNCP IMPLEMENTATION, AS THIS 47* * WAS ORIGINALLY A COPY OF dn355_util. 48* 49* * Modified in September 1985 for MR11. 50* * Modified in December 1986 for DSA-compact. fd 51* * Modified in January 1987 for MR12.0 52* * Modified in June and July 1987 53* 54* * Date of the last modification 07/07/87. 55**/ 56 57 58 /* PARAMETERS */ 59 60 /* Added the DN7100 */ 61 dcl a_data_ptr ptr; 62 dcl cent fixed bin (15) unsigned init (1); /* DN7100 address modulo 128 */ 63 dcl un fixed bin (12) unsigned init (1); /* Transfer of a word */ 64 dcl a_devx fixed bin; /* ioam release param */ 65 dcl a_fnp_no fixed bin; 66 dcl a_fnp_mem_size fixed bin; /* FNP memory size in 1024 18-bit words */ 67 dcl a_fnp_type fixed bin; 68 dcl a_ptr ptr; 69 dcl a_count fixed bin; /* number of words to wire */ 70 dcl a_code fixed bin (35); /* OUTPUT */ 71 dcl a_ev_chan fixed bin (71); 72 dcl a_absadr fixed bin (24); /* OUTPUT from wire and info, INPUT to load */ 73 dcl norm_int_cell fixed bin; /* OUTPUT */ 74 dcl emergency_int_cell fixed bin; /* OUTPUT */ 75 dcl a_ints bit (2) aligned; /* OUTPUT rcvd interrupts */ 76 dcl a_level fixed bin (3); /* INPUT level on which to interrupt fnp */ 77 dcl a_fnp_addr fixed bin (15); /* INPUT data address in fnp */ 78 79 /* AUTOMATIC */ 80 81 dcl auto_absadr fixed bin (24); 82 dcl fnp_no fixed bin; 83 dcl fnp_mem_size fixed bin; 84 dcl fnp_type fixed bin; 85 dcl fnp_addr fixed bin (15); 86 dcl opcode bit (6) aligned; 87 dcl temp_fnp_name char (32); 88 dcl segptr ptr; 89 dcl nwords fixed bin; 90 dcl code fixed bin (35); 91 dcl devx fixed bin; 92 dcl abs_addr_string bit (24); /* representation of absolute address as bit string */ 93 dcl i fixed bin; 94 dcl abs_address fixed bin (26); 95 dcl data_ptr ptr; 96 dcl offset fixed bin; 97 dcl fnp_tally fixed bin; 98 dcl start_time fixed bin (71); 99 dcl version char (4); 100 dcl load_info_ptr ptr; 101 dcl locked bit (1) aligned init ("0"b); 102 dcl config_locked bit (1) aligned init ("0"b); 103 104 declare message fixed bin (71); 105 declare 1 auto_fnp_msg aligned like fnp_msg; 106 107 /* Ajoute pour le DN 7100 */ 108 109 110 /* BUILTINS */ 111 112 dcl (addr, addrel, addwordno, baseno, bin, bit, clock, divide, fixed, min, 113 null, segno, string, substr, unspec) builtin; 114 115 116 /* ENTRIES */ 117 118 dcl config_$find_2 entry (character (4) aligned, character (4) aligned, pointer); 119 dcl uncp_multiplexer$assign entry (fixed binary, fixed binary (35)); 120 dcl uncp_multiplexer$unassign entry (fixed binary, fixed binary (35)); 121 dcl uncp_multiplexer$fnp_lock entry (pointer, fixed binary (35)); 122 dcl uncp_multiplexer$fnp_unlock entry (pointer); 123 dcl get_fnp_name_ entry (fixed bin) returns (char (32)); 124 dcl ioam_$assign entry (fixed bin, entry, fixed bin (35)); 125 dcl ioam_$unassign entry (fixed bin, fixed bin (35)); 126 dcl priv_channel_manager$get_devx entry (char (*), fixed bin, fixed bin (35)); 127 dcl dn355_util$compute_parity entry (bit (36)) returns (bit (36)); 128 dcl absadr entry (ptr, fixed bin (35)) returns (fixed bin (24)); 129 dcl ioi_page_table$get entry (fixed binary (19), fixed binary, fixed binary (35)); 130 dcl ioi_page_table$ptx_to_ptp entry (fixed binary) returns (pointer); 131 dcl ioi_page_table$put entry (fixed binary, fixed binary (35)); 132 dcl pxss$notify entry (fixed bin); 133 dcl pxss$addevent entry (fixed bin); 134 dcl pxss$delevent entry (fixed bin); 135 dcl pxss$wait entry; 136 dcl pxss$ring_0_wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 137 dcl get_ptrs_$given_segno entry (fixed bin) returns (ptr); 138 dcl uncp$interrupt entry; 139 dcl uncp$send_global_wcd entry (ptr, fixed bin (8), fixed bin, bit (*) aligned); 140 dcl syserr entry options (variable); 141 dcl syserr$error_code entry options (variable); 142 dcl lock$wait entry (ptr, char (4) aligned, fixed bin (35)); 143 dcl lock$lock_fast entry (pointer); 144 dcl lock$unlock_fast entry (pointer); 145 dcl lock$unlock entry (ptr, char (4) aligned); 146 dcl pc_abs$wire_abs_contig entry (ptr, fixed bin, fixed bin, fixed bin (35)); 147 dcl pc_abs$unwire_abs entry (ptr, fixed bin, fixed bin); 148 149 /* EXTERNAL STATIC */ 150 151 dcl ( 152 error_table_$io_no_permission, 153 error_table_$invalid_state, 154 error_table_$bad_mpx_load_data, 155 error_table_$no_io_interrupt, 156 /* error_table_$rqover,*/ 157 error_table_$io_configured, 158 error_table_$io_not_configured, 159 error_table_$io_not_assigned, 160 error_table_$io_not_defined 161 ) fixed bin (35) ext static; 162 163 dcl pds$processid bit (36) ext static; 164 dcl pds$process_group_id char (32) ext static; 165 dcl tc_data$initializer_id bit (36) aligned external static; 166 dcl tty_buf$fnp_config_flags (1:8) bit (1) unaligned external static; 167 dcl tty_buf$lct_ptr pointer external static; 168 dcl sst$astsize fixed bin external; 169 dcl sys_info$page_size fixed bin external; 170 171 172 /* INTERNAL STATIC */ 173 174 dcl ( 175 FNP_DOWN init (2) 176 ) fixed bin int static options (constant); 177 dcl SIZE_1024 fixed bin int static options (constant) init (1024); 178 dcl NORM_CELL fixed bin int static options (constant) init (3); 179 dcl EMER_CELL fixed bin int static options (constant) init (7); 180 dcl SECONDS_30 fixed bin (35) int static options (constant) init (30000000); 181 dcl MIN_TALLY fixed bin int static options (constant) init (308); 182 dcl BIT_75 bit (6) int static options (constant) init ("75"b3); 183 dcl BIT_76 bit (6) int static options (constant) init ("76"b3); 184 dcl SIZE_256 fixed bin int static options (constant) init (256); 185 dcl LOW_MBX_PTW fixed bin int static options (constant) init (1); 186 dcl HIGH_MBX_PTW fixed bin int static options (constant) init (3); 187 dcl fdump_seg_event char (4) aligned init ("fnpd") static options (constant); 188 dcl cleanup condition; 189 190 191 /* BASED */ 192 193 dcl tally_words (fnp_tally) bit (36) aligned based; 194 195 dcl 1 dump_355_control aligned based (data_ptr), /* word used to supply 355 address and tally for fdump */ 196 2 address_mode bit (3) unaligned, /* always 36-bit addressing ("001"b) */ 197 2 fnp_address bit (15) unaligned, 198 2 tally fixed bin (17) unaligned; 199 200 dcl 1 dump_6670_control aligned based (data_ptr), /* word used to supply DN6670 address and tally for fdump */ 201 2 fnp_address fixed bin (18) unsigned unaligned, 202 2 unpaged bit (1) unaligned, 203 2 mbz bit (5) unaligned, 204 2 tally fixed bin (12) unsigned unaligned; 205 206 dcl 1 load_info aligned based (load_info_ptr), /* used to assign baud rates and line types at bootload time */ 207 2 ev_chan fixed bin (71), 208 2 no_entries fixed bin, 209 2 entries (0 refer (load_info.no_entries)), 210 3 devx fixed bin, 211 3 baud_rate fixed bin, 212 3 line_type fixed bin, 213 2 version char (4), /* version number of the DNS software */ 214 2 pointeur_image_dns ptr, /* pointer to the beginning of the segment */ 215 2 image fixed bin (24), /* memory size */ 216 2 etape fixed bin; /* Stages of loading */ 217 /* 1 - It is assumed that the Datanet is already loaded */ 218 /* 2 - It loads the Datanet from Multics */ 219 /* 3 - Loading the Datanet from diskette */ 220 221 /* Added for the DN7100 */ 222 dcl 1 d7100 aligned based (data_ptr), /* To give the address and size for clearing of the DN7100. */ 223 2 pcw, 224 3 adr_mode bit (3) unaligned init ("001"b), 225 3 fnp_address fixed bin (15) unsigned unaligned, /* DN7100 address to clear */ 226 3 poids_fort bit (1) unaligned init ("1"b), /* 1 = strong points (cad X 2**7 ) */ 227 3 pad3 bit (5) unaligned init ("00000"b), 228 3 tally fixed bin (12) unsigned unaligned, /* Dimension of the zone to clear */ 229 2 working_location (7) fixed bin (35) unaligned, 230 2 verrou_mot, 231 3 pad bit (35) unaligned, 232 3 verrou bit (1) unaligned, 233 2 control_information unaligned, 234 3 pad1 bit (1) unaligned, 235 3 administrative_header bit (4) unaligned, 236 3 node_type_ofresponder bit (4) unaligned, 237 3 pad2 bit (1) unaligned, 238 3 software_level_of_responder bit (8) unaligned, 239 3 node_ID_of_responder bit (18) unaligned, 240 3 Time_of_response bit (36) unaligned, 241 3 Node_ID_of_originator bit (18) unaligned, 242 3 pad3 bit (1) unaligned, 243 3 Origin_type bit (8) unaligned, 244 3 pad4 bit (1) unaligned, 245 3 Specific_origin bit (8) unaligned, 246 3 pad5 bit (1) unaligned, 247 3 RFU bit (8) unaligned, 248 3 pad6 bit (1) unaligned, 249 3 Type bit (8) unaligned, 250 3 pad7 bit (1) unaligned, 251 3 Class bit (8) unaligned, 252 3 pad8 bit (1) unaligned, 253 3 Code bit (8) unaligned, 254 3 pad8b bit (2) unaligned, 255 3 Length_of_commmand bit (16) unaligned, 256 3 pad9 bit (1) unaligned, 257 3 Format_of_response bit (8) unaligned, 258 3 pad10 bit (1) unaligned, 259 3 Importance_level bit (8) unaligned, 260 3 Length_of_response bit (18) unaligned, 261 3 S2_link_ident bit (18) unaligned; 262 263 /* This structure is used by the commands RIM, SIM. */ 264 /* 265*dcl 1 command_parameters aligned based (commandp), 266* 2 S2_link_identification bit (36) unaligned, 267* 2 Argument bit (18) unaligned, 268* 2 command_error unaligned, 269* 3 mode_4 bit (18) unaligned, 270* 3 error_code bit (18) unaligned; 271**/ 272 /* This structure is used by the command START NODE */ 273 /* 274*dcl 1 cmd_parameters aligned based (commandp), 275* 2 S2_link_identification bit (36) unaligned, 276* 2 Starting_address bit (36) unaligned, 277* 2 Option_string_length bit (18) unaligned, 278* 2 Option_string char (2) init ("GO") unaligned, 279* 2 cmd_error unaligned, 280* 3 mode_4 bit (18) unaligned, 281* 3 error_code bit (18) unaligned; 282* 283*dcl commandp pointer; 284* 285*dcl 1 format_32 based, 286* 2 rien bit (4) unaligned, 287* 2 bit8_32 (4) bit (8) unaligned; 288* 289*dcl 1 format_36 based, 290* 2 bit9 (4), 291* 3 bit0 bit (1) unaligned, 292* 3 bit8_36 bit (8) unaligned; 293**/ 294 295 load: 296 entry (a_fnp_no, a_data_ptr, a_code); /* For the DN7100 */ 297 298 299 300 /* entry to initiate bootload I/O for loading an FNP */ 301 302 fnp_no = a_fnp_no; 303 load_info_ptr = a_data_ptr; 304 call validate_fnp_ret ("load"); 305 call validate_assigned_ret ("load"); 306 307 if datanet_info.trace 308 then call syserr (ANNOUNCE, "uncp_util$load: FNP ^d ADDR ^o", fnp_no, auto_absadr); 309 310 call assign_interrupt (uncp$interrupt, code); 311 312 if fnp_info.bootloading 313 then do; /* we can't do it while it's already happening */ 314 code = error_table_$invalid_state; 315 call syserr (ANNOUNCE, "uncp_util$load: FNP load already in progress for FNP ^a.", fnp_info.fnp_tag); 316 go to load_return; 317 end; 318 319 320 if fnp_info.running 321 then do; 322 code = error_table_$invalid_state; 323 if datanet_info.trace 324 then call syserr (ANNOUNCE, "uncp_util$load: FNP ^a is running.", fnp_info.fnp_tag); 325 go to load_return; 326 end; 327 328 329 /* process the load_info data */ 330 331 if load_info.no_entries ^= fnp_info.no_of_channels 332 then do; 333 334 a_code = error_table_$bad_mpx_load_data; 335 go to load_return; 336 end; 337 338 n_pcbs = fnp_info.no_of_channels; 339 340 do i = 1 to load_info.no_entries; /* get baud rates to store in pcbs */ 341 pcbp = addr (fnp_info.pcb_array_ptr -> pcb_array (i)); 342 if load_info (i).devx ^= pcb.devx /* load_info does not match pcb_array */ 343 then do; 344 a_code = error_table_$bad_mpx_load_data; 345 go to load_return; 346 end; 347 pcb.baud_rate = load_info (i).baud_rate; 348 pcb.line_type = load_info (i).line_type; 349 350 351 end; 352 353 /* it's okay to try to load */ 354 355 version = " "; 356 357 fnp_info.boot_ev_chan = load_info.ev_chan; 358 fnp_info.boot_process_id = pds$processid; 359 fnp_info.version = version; 360 fnp_info.fnp_mem_size = fnp_mem_size * SIZE_1024; 361 fnp_info.bootloading = "1"b; 362 363 datanet_mbx.dia_pcw.command = ""b; /* last command */ 364 datanet_mbx.mailbox_requests = 0; /* clear fields in mbx for this load */ 365 datanet_mbx.term_inpt_mpx_wd = "0"b; 366 datanet_mbx.last_mbx_req_count = 0; 367 string (datanet_mbx.mbx_used_flags) = "0"b; 368 369 datanet_mbx.crash_data.fault_code = 0; 370 datanet_mbx.crash_data.ic = 0; 371 datanet_mbx.crash_data.iom_fault_status = 0; 372 datanet_mbx.crash_data.fault_word = 0; 373 374 375 ttybp = addr (tty_buf$); 376 fnp_dump_ptr = addr (fnp_dump_seg$); 377 378 379 deux_ten: 380 send_wcd: 381 382 call uncp$send_global_wcd (fnpp, init_complete, 0, ""b); 383 384 /* Sortie normale meme si l init_complete n a pas ete effective */ 385 386 code = 0; /* all is well so far */ 387 go to fin; 388 389 390 unwire_load_buffer: 391 call unwire_dump_seg; 392 restore_load_interrupt: 393 call assign_interrupt (uncp$interrupt, code); /* let uncp take over interrupts again */ 394 395 unlock_load_seg: 396 call lock$unlock (addr (fnp_dump_seg.lock), fdump_seg_event); 397 ret_bad_load_code: 398 fin: 399 a_code = code; 400 return; 401 402 load_return: 403 if code ^= 0 & (datanet_info.trace | datanet_info.debug_stop) 404 then do; 405 call syserr$error_code (ANNOUNCE, code, "uncp_util$load: Error loading FNP ^a.", fnp_info.fnp_tag); 406 call STOP_CHECK ("load"); 407 end; 408 a_code = code; 409 return; 410 411 412 info: 413 entry (a_fnp_no, a_absadr, norm_int_cell, emergency_int_cell, a_code); 414 415 /* entry called to return address of mailbox area and FNP interrupt cells */ 416 417 fnp_no = a_fnp_no; 418 call validate_fnp_ret ("info"); 419 420 a_absadr = absadr (fnp_info.mbx_pt, code); 421 if code = 0 422 then do; /* provided everything's ok */ 423 norm_int_cell = NORM_CELL; /* customary assignments */ 424 emergency_int_cell = EMER_CELL; 425 end; 426 427 a_code = code; 428 return; 429 430 fill_page_table: 431 entry (a_fnp_no, a_code); 432 433 fnp_no = a_fnp_no; 434 call validate_fnp_ret ("fill_page_table"); 435 call validate_assigned_ret ("fill_page_table"); 436 if fnp_info.ptx ^= -1 | fnp_info.ptp ^= null () 437 then do; 438 call syserr (ANNOUNCE, "uncp_util$fill_page_table: page table already assigned for FNP ^a.", 439 fnp_info.fnp_tag); 440 call STOP_CHECK ("fill_page_table"); 441 end; 442 call get_page_table (code); 443 if code ^= 0 & (datanet_info.trace | datanet_info.debug_stop) 444 then do; 445 call syserr$error_code (ANNOUNCE, code, "uncp_util$fill_page_table: ioi_page_table$get failed for FNP ^a.", 446 fnp_info.fnp_tag); 447 call STOP_CHECK ("fill_page_table"); 448 end; 449 a_code = code; 450 return; 451 452 free_page_table: 453 entry (a_fnp_no, a_code); 454 455 fnp_no = a_fnp_no; 456 call validate_fnp_ret ("free_page_table"); 457 if fnp_info.ptx = -1 458 then do; 459 call syserr (ANNOUNCE, "uncp_util$free_page_table: no page table assigned for FNP ^a.", fnp_info.fnp_tag); 460 go to ret_bad_code; 461 end; 462 call ioi_page_table$put (fnp_info.ptx, code); 463 fnp_info.ptx = -1; 464 fnp_info.ptp = null (); 465 a_code = code; 466 return; 467 468 469 /* RECONFIGURATION ENTRYPOINTS */ 470 471 /* Configure -- add a FNP to the available collection for assignment */ 472 473 /* This procedure is NOT REFERENCED by uncp software, but rather calls 474* fnp_util$configure. */ 475 476 configure: 477 entry (a_fnp_no, a_code); 478 479 fnp_no = a_fnp_no; 480 call validate_fnp_ret ("configure"); 481 call lock_fnp; 482 if fnp_info.available 483 then do; 484 code = error_table_$io_configured; 485 if datanet_info.trace | datanet_info.debug_stop 486 then call syserr (ANNOUNCE, "uncp_util$configure: FNP ^a already configured.", fnp_info.fnp_tag); 487 call STOP_CHECK ("configure"); 488 go to configure_return; 489 end; 490 fnp_info.available = "1"b; 491 fnp_info.io_manager_assigned = "0"b; /* clean up */ 492 fnp_info.flags = "0"b; /* state information */ 493 configure_return: 494 call unlock_fnp; 495 if code = 0 496 then do; 497 call config_$find_2 ("prph", "fnp" || fnp_info.fnp_tag, prph_fnp_cardp); 498 prph_fnp_card.state = "on"; 499 call syserr (ANNOUNCE, "uncp_util: FNP ^a added to configuration^[ by ^a^].", fnp_info.fnp_tag, 500 pds$processid ^= tc_data$initializer_id, pds$process_group_id); 501 end; 502 a_code = code; 503 return; 504 505 /**** Deconfigure -- remove from configuration. 506* This entrypoint causes a FNP crash for the selected FNP. 507**/ 508 509 /* This procedure is NOT REFERENCED by uncp software, but rather calls 510* fnp_util$deconfigure. */ 511 512 deconfigure: 513 entry (a_fnp_no, a_code); 514 515 fnp_no = a_fnp_no; 516 call validate_fnp_ret ("deconfigure"); 517 call lock_fnp; 518 519 if ^fnp_info.available 520 then do; 521 code = error_table_$io_not_configured; 522 go to deconfigure_return; 523 end; 524 525 fnp_info.available = "0"b; /* throttle init_multiplexer */ 526 527 if ^fnp_info.io_manager_assigned 528 then go to deconfigure_return; 529 530 /*** here is the interesting part. What we do depends on who is active */ 531 532 if fnp_info.t_and_d_in_progress 533 then do; 534 call unlock_fnp; /* must lock in correct order */ 535 call release_t_and_d; /* unassigns channel */ 536 go to deconfigure_return_unlocked; 537 end; 538 else do; 539 call mask_dia; /* stop it from writing to us or sending stuff */ 540 call uncp_multiplexer$unassign (fnp_no, (0));/* has to succeed, we are under lock */ 541 /*** turns off io_manager_assigned for us, nailing io_manager callers */ 542 auto_fnp_msg.fnp_no = fnp_info.fnp_number; 543 auto_fnp_msg.state = FNP_DOWN; 544 auto_fnp_msg.flags = "0"b; 545 auto_fnp_msg.deconfigured = "1"b; 546 unspec (message) = unspec (auto_fnp_msg); 547 call pxss$ring_0_wakeup (fnp_info.boot_process_id, fnp_info.boot_ev_chan, message, (0)); 548 end; 549 550 /*** all callers of io_manager must hold LCTE lock and check io_manager_assigned */ 551 552 deconfigure_return: 553 call unlock_fnp; 554 deconfigure_return_unlocked: 555 if code = 0 556 then do; 557 call config_$find_2 ("prph", "fnp" || fnp_info.fnp_tag, prph_fnp_cardp); 558 prph_fnp_card.state = "off"; 559 call syserr (ANNOUNCE, "uncp_util: FNP ^a deleted from configuration^[ by ^a^].", fnp_info.fnp_tag, 560 pds$processid ^= tc_data$initializer_id, pds$process_group_id); 561 end; 562 a_code = code; 563 return; 564 565 abort: 566 entry (a_fnp_no, a_code); 567 568 /* entry called to abort bootload */ 569 fnp_no = a_fnp_no; 570 call validate_fnp_ret ("abort"); 571 fnp_info.bootloading, fnp_info.running = "0"b; 572 a_code = code; 573 return; 574 575 576 fdump: 577 entry (a_fnp_no, a_fnp_type, a_fnp_mem_size, a_ptr, a_code); 578 579 /* entry to read in contents of FNP core for fdump_fnp_. It is passed a pointer 580* * to the segment in which the dump is supposed to be put. The one-page fnp_dump_seg 581* * is wired down, and FNP core is read into it in chunks. 582* * 583* * This entry had to be greatly modified for the clearing of the Datanet 7100. 584* * Called by the initializer command "dump_mpx" through uncp_multiplexer$hpriv_control 585* froma "dump" control order passed through hphcs_$tty_order -> priv_channel_manager -> cmtv. 586* This entry is currently NON-OPERATIONAL. 587* 588**/ 589 590 fnp_no = a_fnp_no; 591 fnp_type = a_fnp_type; 592 fnp_mem_size = a_fnp_mem_size; 593 segptr = a_ptr; 594 595 call validate_fnp_ret ("fdump"); 596 597 598 ttybp = addr (tty_buf$); 599 fnp_dump_ptr = addr (fnp_dump_seg$); 600 on cleanup 601 begin; 602 if fnp_dump_seg.lock = pds$processid 603 then call lock$unlock (addr (fnp_dump_seg.lock), fdump_seg_event); 604 end; 605 go to ret_bad_code; 606 /* 607* call lock$wait (addr (fnp_dump_seg.lock), fdump_seg_event, code); 608* if code ^= 0 609* then go to ret_bad_code; 610* call assign_interrupt (dump_interrupt, code); /* we will handle DIA interrupts for this * 611* if code ^= 0 612* then go to unlock_dump_seg; 613* 614* call wire_dump_seg; 615* if code ^= 0 616* then go to restore_interrupt; 617* 618* data_ptr = addr (fnp_dump_seg.data); 619* 620* 621* 622* fnp_size = fnp_mem_size * 512; /* size of FNP core in 36-bit words * 623* 624*/* before we start, set up handler for record-quota overflow * 625* 626* on record_quota_overflow 627* begin; 628* code = error_table_$rqover; 629* go to unwire_buffer; 630* end; 631* 632* 633*/* Subroutine to quiet the mmpo which we leave to clear the memory by blocks. 634* We have three minutes for the job. 635* 636* call init_mmpo; 637* if a_code ^= 0 638* then go to unwire_buffer; 639* 640* 641*/* loop reading chunks of FNP memory * 642*/* Go read blocks of 768 Multics words ( 512+256 ) * 643* 644*/* Address of the 7100 modulo 256. * 645* fnp_info.running = "0"b; /* It is no longer in running state * 646* fnp_addr, offset = 0; 647* fnp_tally = 768; 648* do while (fnp_tally > 0); 649* call setup_dump_ctl_word; 650* call fdump_seg_io ("75"b3); /* test data xfer * 651* if code ^= 0 652* then go to unwire_buffer; 653* 654*/* Now copy the data into the permanent seg * 655* 656* ptr (segptr, offset) -> tally_words = addr (fnp_dump_seg.data (2)) -> tally_words; 657* /* word 0 and 1 are control words * 658* offset = offset + 768; 659* fnp_tally = min (768, fnp_size - offset); 660* end; 661* 662*/* Ajouter pour le DN 7100 ************************ * 663* 664*/* The MMPO has to safeguard the first 100 words of memory in high memory 665* (address of the end of memory - 400). It must then replace this zone in 666* its place * 667* 668* offset = fnp_size - 512; /* start of the saved zone * 669* segpt1 = ptr (segptr, offset); 670* segptr = a_ptr; /* start of the segment * 671* fnp_tally = SIZE_128; /* cad 100 words hex of 16 bits expressed in L68 36 bit decimal words * 672* segptr -> tally_words = segpt1 -> tally_words; /* Yo! It's done * 673* 674*unwire_buffer: 675* call unwire_dump_seg; /* and unwire buffer * 676* 677*restore_interrupt: 678* call assign_interrupt (uncp$interrupt, code); 679**/ 680 681 682 unlock_dump_seg: 683 call lock$unlock (addr (fnp_dump_seg.lock), fdump_seg_event); 684 ret_bad_code: 685 a_code = code; 686 return; 687 688 689 fdump_seg_io: 690 proc (a_diaop); 691 692 dcl a_diaop bit (6) aligned; 693 694 start_time = clock (); 695 fnp_dump_seg.fdump = "1"b; /* so notify can be done */ 696 call pxss$addevent (tty_ev); 697 call connect_to_dia (a_diaop); 698 call pxss$wait; /* wait for interrupt */ 699 700 do while (fnp_dump_seg.fdump); /* when we get notify, make sure it's the right one */ 701 if clock () - start_time > SECONDS_30 /* if it's been more than 30 seconds */ 702 then do; /* punt */ 703 code = error_table_$no_io_interrupt; 704 return; 705 end; 706 707 call pxss$addevent (tty_ev); 708 if fnp_info.t_and_d_in_progress 709 then if fnp_info.t_and_d_lev_3_occurred | fnp_info.t_and_d_lev_7_occurred 710 then do; 711 code = 0; 712 return; 713 end; 714 if fnp_dump_seg.fdump /* it wasn't */ 715 then call pxss$wait; /* wait some more */ 716 else call pxss$delevent (tty_ev); /* otherwise we needn't have added event */ 717 end; 718 code = 0; 719 end fdump_seg_io; 720 721 dump_interrupt: 722 entry (a_fnp_no, a_level, a_dummy); 723 724 /* this is our temporary FNP interrupt handler while doing fdump i/o */ 725 726 dcl a_dummy bit (36) aligned parameter; 727 728 fnp_dump_ptr = addr (fnp_dump_seg$); 729 infop = addr (dn355_data$); 730 if datanet_info.trace 731 then call syserr (ANNOUNCE, 732 "uncp_util (dump_interrupt): Interrupt for FNP ^d level ^d. fnp_dump_seg.fdump = ""^b""b", a_fnp_no, 733 a_level, fnp_dump_seg.fdump); 734 if fnp_dump_seg.fdump /* if we're really interested in this one */ 735 then do; 736 fnp_dump_seg.fdump = "0"b; /* so we'll recognize notify */ 737 call pxss$notify (tty_ev); 738 end; 739 return; 740 741 742 743 744 745 /* This procedure is NOT REFERENCED by uncp software, but rather calls 746* fnp_util$fnp_tandd_setup. */ 747 748 fnp_tandd_setup: 749 entry (a_fnp_no, a_ev_chan, a_code); 750 751 fnp_no = a_fnp_no; 752 call validate_fnp_ret ("fnp_tandd_setup"); 753 754 /* Must set up lcte ptr first if not done already, or lock 755* won't work. Chicken/egg problem notwithstanding, this will 756* work, because other guy doing same thing. */ 757 758 temp_fnp_name = get_fnp_name_ (fnp_no); 759 if fnp_info.lcte_ptr = null 760 then do; 761 call priv_channel_manager$get_devx (temp_fnp_name, devx, code); 762 if code ^= 0 763 then go to ret_bad_code; 764 fnp_info.lcte_ptr = addr (tty_buf$lct_ptr -> lct.lcte_array (devx)); 765 end; 766 767 call lock_fnp; 768 769 if fnp_info.bootloading | fnp_info.running | fnp_info.t_and_d_in_progress 770 then do; 771 code = error_table_$invalid_state; 772 go to tandd_setup_loses_unlock; 773 end; 774 775 call uncp_multiplexer$assign (fnp_no, code); 776 if code ^= 0 777 then do; 778 call syserr$error_code (ANNOUNCE, code, "uncp_util: channel assignment failed for FNP ^a.", 779 fnp_info.fnp_tag); 780 go to tandd_setup_loses_unlock; 781 end; 782 783 call ioam_$assign ((fnp_info.io_manager_chx), fnp_tandd_release_handler, code); 784 if code ^= 0 785 then do; 786 call syserr$error_code (ANNOUNCE, code, "uncp_util: ioam_$assign failed for FNP ^a.", fnp_info.fnp_tag); 787 go to tandd_setup_loses_unlock; 788 end; 789 fnp_info.boot_process_id = pds$processid; 790 fnp_info.t_and_d_lev_3_occurred, fnp_info.t_and_d_lev_7_occurred = "0"b; 791 call syserr (ANNOUNCE, "uncp_util: assigned FNP ^a to ^a for T & D.", temp_fnp_name, pds$process_group_id); 792 fnp_info.t_and_d_in_progress = "1"b; 793 794 tandd_setup_loses_unlock: 795 if code = 0 796 then fnp_info.boot_ev_chan = a_ev_chan; 797 call unlock_fnp; 798 a_code = code; 799 return; 800 801 /* This procedure is NOT REFERENCED by uncp software, but rather calls 802* fnp_util$fnp_tandd_release_handler. */ 803 804 fnp_tandd_release_handler: 805 entry (a_devx, a_code); 806 807 devx = a_devx; 808 infop = addr (dn355_data$); 809 fnp_dump_ptr = addr (fnp_dump_seg$); 810 on cleanup 811 begin; 812 if fnp_dump_seg.lock = pds$processid 813 then call lock$unlock (addr (fnp_dump_seg.lock), fdump_seg_event); 814 end; 815 do fnp_no = 1 to datanet_info.no_of_355s; 816 fnpp = addr (datanet_info.per_datanet (fnp_no)); 817 if devx = fnp_info.io_manager_chx 818 then if fnp_info.t_and_d_in_progress 819 then call release_t_and_d; 820 end; 821 return; 822 823 /**** T and D does not have to worry about force deconfiguration, 824* since it is completely released at deconfigure time. 825* Validate_fnp_tandd_ret will generate an error code if 826* deconfiguration has stolen the FNP. */ 827 828 829 /* This procedure is NOT REFERENCED by uncp software, but rather calls 830* fnp_util$fnp_tandd_detach. */ 831 832 fnp_tandd_detach: 833 entry (a_fnp_no, a_code); 834 fnp_no = a_fnp_no; 835 836 call validate_fnp_tandd_ret ("fnp_tandd_detach"); 837 call lock_fnp; 838 call validate_assigned_ret ("fnp_tandd_detach"); 839 840 call mask_dia; 841 842 fnp_info.boot_process_id = "000000000000"b3; 843 fnp_info.t_and_d_in_progress = "0"b; 844 fnp_info.t_and_d_lev_3_occurred, fnp_info.t_and_d_lev_7_occurred = "0"b; 845 call ioam_$unassign ((fnp_info.io_manager_chx), (0)); 846 call uncp_multiplexer$unassign (fnp_no, code); 847 if code ^= 0 848 then call syserr$error_code (ANNOUNCE, code, "uncp_util: io channel unassignment failed for FNP ^a.", 849 fnp_info.fnp_tag); 850 call syserr (ANNOUNCE, "uncp_util: releasing FNP ^a from ^a", fnp_info.fnp_id.fnp_tag, pds$process_group_id); 851 call unlock_fnp; 852 a_code = 0; 853 return; 854 855 /* This procedure is NOT REFERENCED by uncp software, but rather calls 856* fnp_util$fnp_tandd_mask. */ 857 858 fnp_tandd_mask: 859 entry (a_fnp_no, a_code); 860 fnp_no = a_fnp_no; 861 call validate_fnp_tandd_ret ("fnp_tandd_mask"); 862 call lock_fnp; 863 call validate_assigned_ret ("fnp_tandd_mask"); 864 865 call mask_dia; 866 call unlock_fnp; 867 a_code = 0; 868 return; 869 870 /* This procedure is NOT REFERENCED by uncp software, but rather calls 871* fnp_util$fnp_tandd_send_int. */ 872 873 fnp_tandd_send_int: 874 entry (a_fnp_no, a_level, a_code); 875 fnp_no = a_fnp_no; 876 call validate_fnp_tandd_ret ("fnp_tandd_send_int"); 877 call lock_fnp; 878 call validate_assigned_ret ("fnp_tandd_send_int"); 879 880 fnp_info.t_and_d_lev_3_occurred, fnp_info.t_and_d_lev_7_occurred = "0"b; 881 call connect_to_dia ("71"b3); 882 call unlock_fnp; 883 884 a_code = 0; 885 return; 886 887 /* This procedure is NOT REFERENCED by uncp software, but rather calls 888* fnp_util$fnp_tandd_get_ints. */ 889 890 fnp_tandd_get_ints: 891 entry (a_fnp_no, a_ints, a_code); 892 fnp_no = a_fnp_no; 893 call validate_fnp_tandd_ret ("fnp_tandd_get_ints"); 894 call lock_fnp; 895 call validate_assigned_ret ("fnp_tandd_get_ints"); 896 a_ints = fnp_info.t_and_d_lev_3_occurred || fnp_info.t_and_d_lev_7_occurred; 897 fnp_info.t_and_d_lev_3_occurred, fnp_info.t_and_d_lev_7_occurred = "0"b; 898 call unlock_fnp; 899 a_code = 0; 900 return; 901 902 /* This procedure is NOT REFERENCED by uncp software, but rather calls 903* fnp_util$fnp_tandd_read. */ 904 905 fnp_tandd_read: 906 entry (a_fnp_no, a_ptr, a_count, a_fnp_addr, a_fnp_type, a_code); 907 opcode = BIT_75; 908 go to fnp_t_and_d_rw_merge; 909 910 /* This procedure is NOT REFERENCED by uncp software, but rather calls 911* fnp_util$fnp_tandd_write. */ 912 913 fnp_tandd_write: 914 entry (a_fnp_no, a_ptr, a_count, a_fnp_addr, a_fnp_type, a_code); 915 opcode = BIT_76; 916 fnp_t_and_d_rw_merge: 917 /**** To avoid LONG delays in deconfiguration, this does not lock 918* the LCTE lock except around the connects themselves. */ 919 fnp_no = a_fnp_no; 920 segptr = a_ptr; 921 nwords = a_count; 922 fnp_type = a_fnp_type; 923 fnp_addr = a_fnp_addr; 924 fnp_dump_ptr = addr (fnp_dump_seg$); 925 call validate_fnp_tandd_ret ("fnp_tandd_rw"); 926 927 on cleanup 928 begin; 929 if fnp_dump_seg.lock = pds$processid 930 then call lock$unlock (addr (fnp_dump_seg.lock), fdump_seg_event); 931 end; 932 933 data_ptr = addr (fnp_dump_seg.data); 934 935 call lock$wait (addr (fnp_dump_seg.lock), fdump_seg_event, code); 936 if code ^= 0 937 then go to ret_bad_code; 938 if fnp_type = DN6670 939 then dump_6670_control.unpaged = "1"b; 940 else dump_355_control.address_mode = "1"b3; 941 offset = 0; 942 do while (nwords > 0); 943 fnp_tally = min (MIN_TALLY, nwords); 944 nwords = nwords - fnp_tally; 945 call setup_dump_ctl_word; 946 if opcode = BIT_76 /* WRITE */ 947 then addr (fnp_dump_seg.data (2)) -> tally_words = addrel (segptr, offset) -> tally_words; 948 call wire_dump_seg; 949 if code ^= 0 950 then go to unlock_dump_seg; 951 fnp_info.t_and_d_lev_3_occurred, fnp_info.t_and_d_lev_7_occurred = "0"b; 952 fnp_info.t_and_d_notify_requested = "1"b; 953 954 call fdump_seg_io (opcode); 955 956 fnp_info.t_and_d_lev_3_occurred, fnp_info.t_and_d_lev_7_occurred = "0"b; 957 call unwire_dump_seg; 958 if code ^= 0 959 then go to unlock_dump_seg; 960 if opcode = BIT_75 /* READ */ 961 then addrel (segptr, offset) -> tally_words = addr (fnp_dump_seg.data (2)) -> tally_words; 962 963 offset = offset + fnp_tally; 964 end; 965 code = 0; 966 go to unlock_dump_seg; 967 968 969 validate_assigned_ret: 970 procedure (caller); 971 972 declare caller char (32); 973 974 if ^fnp_info.io_manager_assigned 975 then do; 976 code = error_table_$io_not_assigned; 977 if datanet_info.trace | datanet_info.debug_stop 978 then call syserr$error_code (ANNOUNCE, code, 979 "uncp_util$validate_assigned_ret (^a): IO manager assignment lacking.", caller); 980 call STOP_CHECK ("validate_assigned_ret"); 981 call unlock_fnp; 982 go to ret_bad_code; 983 end; 984 return; 985 end validate_assigned_ret; 986 987 988 validate_fnp_ret: 989 procedure (caller); 990 991 declare caller char (32); 992 993 /* internal procedure to ensure that FNP number is reasonable */ 994 995 infop = addr (dn355_data$); 996 997 if fnp_no <= 0 | fnp_no > max_no_355s 998 then do; 999 code = error_table_$io_not_defined; 1000 ERROR: 1001 if datanet_info.trace | datanet_info.debug_stop 1002 then call syserr$error_code (ANNOUNCE, code, "uncp_util$^a: Invalid call for FNP ^d.", caller, fnp_no); 1003 call STOP_CHECK (caller); 1004 go to ret_bad_code; 1005 end; 1006 1007 if ^tty_buf$fnp_config_flags (fnp_no) 1008 then do; 1009 fnpp = null; 1010 code = error_table_$io_not_defined; 1011 go to ERROR; 1012 end; 1013 1014 code = 0; 1015 fnpp = addr (datanet_info.per_datanet (fnp_no)); 1016 mbxp = fnp_info.mbx_pt; 1017 if datanet_info.trace 1018 then call syserr (ANNOUNCE, "uncp_util$^a: Tracing call for fnp ^a.", caller, fnp_info.fnp_tag); 1019 1020 return; 1021 1022 end validate_fnp_ret; 1023 1024 1025 1026 validate_fnp_tandd_ret: 1027 proc (caller); 1028 1029 declare caller char (32); 1030 1031 call validate_fnp_ret (caller); 1032 if ^fnp_info.t_and_d_in_progress 1033 then code = error_table_$invalid_state; 1034 else if fnp_info.boot_process_id ^= pds$processid 1035 then code = error_table_$io_no_permission; 1036 if code ^= 0 1037 then do; 1038 if (datanet_info.trace | datanet_info.debug_stop) 1039 then call syserr$error_code (ANNOUNCE, code, "uncp_util$^a: Invalid call.", caller); 1040 go to ret_bad_code; 1041 end; 1042 return; /* validate_fnp_ret did trace */ 1043 end validate_fnp_tandd_ret; 1044 1045 setup_dump_ctl_word: 1046 proc; 1047 1048 d7100.pcw.fnp_address = divide (2 * offset, SIZE_256, 14, 0); 1049 /* The DN7100 address is modulo 256 */ 1050 d7100.pcw.tally = fixed (fnp_tally, 11); /* Tally in L68 words */ 1051 1052 end; 1053 1054 wire_dump_seg: 1055 proc; 1056 1057 astep = get_ptrs_$given_segno (fixed (baseno (fnp_dump_ptr), 17)); 1058 call pc_abs$wire_abs_contig (astep, 0, 1, code); /* wire a page */ 1059 if code = 0 1060 then abs_address = absadr (fnp_dump_ptr, code); 1061 if code = 0 1062 then abs_addr_string = bit (fixed (abs_address + 2, 24), 24); 1063 /* fdump_seg_io needs this */ 1064 end; 1065 1066 unwire_dump_seg: 1067 proc; 1068 1069 astep = get_ptrs_$given_segno (fixed (baseno (fnp_dump_ptr), 17)); 1070 call pc_abs$unwire_abs (astep, 0, 1); 1071 return; 1072 end unwire_dump_seg; 1073 1074 1075 assign_interrupt: 1076 proc (handler, code); 1077 1078 /* internal procedure to set handler for IOM interrupt to our proc. */ 1079 1080 dcl handler entry; 1081 1082 dcl iom_code fixed bin (35); 1083 dcl code fixed bin (35); 1084 1085 call lock_fnp; /* discourage reconfiguration */ 1086 if ^fnp_info.io_manager_assigned /* already deconfigured? */ 1087 then if ^fnp_info.available /* already deconfigured! */ 1088 then do; 1089 code = error_table_$io_not_configured; 1090 return; 1091 end; 1092 1093 /**** It may already be unassigned, as in dump of down MPX */ 1094 1095 if fnp_info.io_manager_assigned 1096 then do; 1097 call io_manager$unassign (fnp_info.io_manager_chx, code); 1098 if code ^= 0 1099 then call syserr$error_code (CRASH, code, "uncp_util: Could not unassign FNP ^a at reassign_interrupt.", 1100 fnp_info.fnp_tag); 1101 fnp_info.io_manager_assigned = "0"b; 1102 end; /* now make new assignment */ 1103 1104 call io_manager$assign (fnp_info.io_manager_chx, fnp_info.io_chanid, handler, (fnp_no), (null ()), iom_code); 1105 call unlock_fnp; 1106 if code = 0 /* if there wasn't anything more interesting to report */ 1107 then do; 1108 code = iom_code; /* then report this */ 1109 fnp_info.io_manager_assigned = "1"b; 1110 end; 1111 1112 return; 1113 1114 end assign_interrupt; 1115 1116 /* unassign_interrupt: 1117* procedure; 1118* 1119* call io_manager$unassign (fnp_info.io_manager_chx, (0)); 1120* fnp_info.io_manager_assigned = "0"b; 1121* return; 1122* end unassign_interrupt; */ 1123 connect_to_dia: 1124 proc (cmd); 1125 1126 /* internal procedure to do DIA i/o */ 1127 1128 dcl cmd bit (6) aligned; 1129 dcl 1 ima aligned like io_manager_arg; 1130 1131 datanet_mbx.dia_pcw.zero = substr (abs_addr_string, 7, 18); 1132 /* lower 18 bits of 6180 address */ 1133 datanet_mbx.dia_pcw.mbx_no = substr (abs_addr_string, 1, 6); 1134 /* rest of it goes here */ 1135 datanet_mbx.dia_pcw.command = cmd; 1136 1137 /* parity on pcw (probably not necessary) */ 1138 1139 string (datanet_mbx.dia_pcw) = dn355_util$compute_parity (string (datanet_mbx.dia_pcw)); 1140 1141 ima.chx = fnp_info.io_manager_chx; 1142 ima.ptp = null (); 1143 call io_manager$connect_direct (ima); 1144 1145 return; 1146 end /* connect_to_dia */; /* */ 1147 mask_dia: 1148 procedure; 1149 call io_manager$mask (fnp_info.io_manager_chx); /* mask the channel to initialize it */ 1150 end mask_dia; 1151 1152 /* internal_unwire: 1153* procedure; 1154* 1155* declare px fixed bin; 1156* 1157* /* internal procedure to undo work of wire entry */ 1158 /* 1159* if fnpp = null 1160* then return; 1161* if ^fnp_info.wired 1162* then return; 1163* 1164* ioptp = fnp_info.ptp; 1165* if ioptp ^= null () 1166* then do px = FIRST_BOOTLOAD_PAGEX to FIRST_BOOTLOAD_PAGEX + fnp_info.n_pages_wired; 1167* unspec (page_table.ptw (px)) = ""b; /* as of next connect, no more references */ 1168 /* end; 1169* 1170* astep = fnp_info.astep; 1171* call pc_abs$unwire_abs (astep, 0, fnp_info.n_pages_wired); 1172* call grab_aste$release_io (astep); 1173* fnp_info.wired = "0"b; 1174* return; 1175* 1176* end internal_unwire; */ 1177 1178 release_t_and_d: 1179 procedure; 1180 1181 declare unlock_dump_seg bit (1) aligned; 1182 1183 call lock$wait (addr (fnp_dump_seg.lock), fdump_seg_event, code); 1184 /* wait for finish */ 1185 unlock_dump_seg = (code = 0); /* if user held lock for other reason, leave it locked ? */ 1186 call syserr (0, "uncp_util: force detaching FNP ^a from process ^w.", fnp_info.fnp_id.fnp_tag, 1187 fnp_info.boot_process_id); 1188 call lock_fnp; /* hold the LCTE lock (or the config lock) */ 1189 fnp_info.boot_process_id = "000000000000"b3; 1190 fnp_info.boot_ev_chan = 0; 1191 fnp_info.t_and_d_in_progress = "0"b; 1192 fnp_info.t_and_d_lev_3_occurred, fnp_info.t_and_d_lev_7_occurred = "0"b; 1193 call uncp_multiplexer$unassign (fnp_no, code); 1194 if code ^= 0 1195 then call syserr$error_code (ANNOUNCE, code, "uncp_util: io channel unassignment failed for FNP ^a.", 1196 fnp_info.fnp_tag); 1197 call unlock_fnp; 1198 if unlock_dump_seg 1199 then call lock$unlock (addr (fnp_dump_seg.lock), fdump_seg_event); 1200 return; 1201 end release_t_and_d; 1202 1203 1204 lock_fnp: 1205 procedure; 1206 1207 declare code fixed bin (35); 1208 1209 if locked | config_locked 1210 then call syserr (CRASH, "uncp_util: lock_fnp called with lock locked."); 1211 locked, config_locked = "0"b; 1212 1213 call lock$lock_fast (addr (datanet_info.configuration_lock)); 1214 config_locked = "1"b; /* LCTE cannot get initialized after this point */ 1215 if fnp_info.lcte_ptr = null () 1216 then return; /* that is the whole story */ 1217 else if ^fnp_info.lcte_ptr -> lcte.initialized /* no mpx in the house */ 1218 then return; /* and the config lock locks out T&D I/O */ 1219 1220 /*** here, there is a multiplexer, so we have to lock against it */ 1221 1222 call uncp_multiplexer$fnp_lock (fnpp, code); 1223 if code = 0 1224 then do; 1225 locked = "1"b; /* lcte was initialized, and we now own it */ 1226 call lock$unlock_fast (addr (datanet_info.configuration_lock)); 1227 /* if init_multiplexer finds the LCTE initialized, it aborts */ 1228 /* so all we are protecting against is ourselves */ 1229 config_locked = "0"b; 1230 end; 1231 return; 1232 1233 unlock_fnp: 1234 entry; 1235 1236 if locked 1237 then call uncp_multiplexer$fnp_unlock (fnpp); 1238 locked = "0"b; 1239 if config_locked 1240 then call lock$unlock_fast (addr (datanet_info.configuration_lock)); 1241 config_locked = "0"b; 1242 return; 1243 end lock_fnp; 1244 1245 1246 STOP_CHECK: 1247 procedure (Tracer); 1248 declare Tracer char (*); 1249 1250 if datanet_info.debug_stop 1251 then call syserr (CRASH, "uncp_util$^a: Debugging stop (type go to continue).", Tracer); 1252 return; 1253 end STOP_CHECK; 1254 1255 1256 get_page_table: 1257 procedure (code); 1258 1259 declare pagex fixed bin; 1260 declare px fixed bin; 1261 declare 1 seg_pt (0:255) aligned like l68_core_ptw based (ptp); 1262 declare ptp pointer; 1263 declare code fixed bin (35); 1264 1265 io_page_table_size = SIZE_256; /* always, for datanet */ 1266 call ioi_page_table$get (io_page_table_size * sys_info$page_size, fnp_info.ptx, code); 1267 /* Direct channel has no bounds check so we need all 256 */ 1268 if code ^= 0 1269 then return; 1270 fnp_info.ptp, ioptp = ioi_page_table$ptx_to_ptp (fnp_info.ptx); 1271 1272 unspec (page_table) = ""b; 1273 1274 /**** leave page zero invalid */ 1275 1276 /**** First, dn355_mailbox */ 1277 1278 do px = LOW_MBX_PTW to HIGH_MBX_PTW; 1279 io_ptwp = addr (page_table.ptw (px)); 1280 io_ptw.address = px; /* absolute page number */ 1281 io_ptw.write = "1"b; 1282 io_ptw.valid = "1"b; 1283 end; 1284 1285 /**** Now, tty_buf */ 1286 1287 astep = get_ptrs_$given_segno (segno (addr (tty_buf$))); 1288 pagex = FIRST_TTY_BUF_PAGEX; 1289 ptp = addwordno (astep, sst$astsize); 1290 do px = 0 to bin (aste.csl, 9) - 1; /* no null pages here */ 1291 io_ptwp = addr (page_table.ptw (pagex)); 1292 io_ptw.address = seg_pt (px).frame; 1293 io_ptw.write = "1"b; 1294 io_ptw.valid = "1"b; 1295 pagex = pagex + 1; 1296 end; /* tty_buf is now described to the channel */ 1297 return; 1298 1299 fill_bootload_page_table: 1300 entry; /* fill in io ptws for bootload segment */ 1301 1302 /**** astep is already set to the bootload image aste */ 1303 1304 pagex = FIRST_BOOTLOAD_PAGEX; 1305 ptp = addwordno (astep, sst$astsize); 1306 auto_absadr = pagex * sys_info$page_size; 1307 ioptp = fnp_info.ptp; 1308 1309 do px = 0 to fnp_info.n_pages_wired - 1; 1310 io_ptwp = addr (page_table.ptw (pagex)); 1311 io_ptw.address = seg_pt (px).frame; 1312 io_ptw.write = "0"b; 1313 io_ptw.valid = "1"b; 1314 pagex = pagex + 1; 1315 end; 1316 1317 if datanet_info.trace 1318 then do px = 0 to 255; 1319 if unspec (page_table.ptw (px)) ^= ""b 1320 then call syserr (ANNOUNCE, "uncp_util: ptw at ^4o = ^w", px, unspec (page_table.ptw (px))); 1321 end; 1322 1323 return; 1324 1325 end get_page_table; 1326 1327 1328 /* format: off */ 1329 1330 /* INCLUDE FILES */ 1331 /* BEGIN INCLUDE FILE ...aste.incl.pl1 ... */ 1 2 1 3 /* Template for an AST entry. Length = 12 words. */ 1 4 1 5 /* Words 0 to 7, and 11 are read by PC; they are read and modified by SC. 1 6* Words 8, 9 and 10 are modified by PC; they should never be modified without locking the PC lock */ 1 7 /* Modified January 1985 by Keith Loepere for multi_class. */ 1 8 1 9 dcl astep ptr; 1 10 1 11 dcl 1 aste based (astep) aligned, 1 12 1 13 (2 fp bit (18), /* forward used list rel pointer */ 1 14 2 bp bit (18), /* backward used list rel pointer */ 1 15 1 16 2 infl bit (18), /* ptr to NEXT in list of ASTE's of my brothers */ 1 17 2 infp bit (18), /* ptr to FIRST in list of ASTE's of my children */ 1 18 1 19 2 strp bit (18), /* rel pointer to process trailer */ 1 20 2 par_astep bit (18), /* rel pointer to parent aste */ 1 21 1 22 2 uid bit (36), /* segment unique id */ 1 23 1 24 2 msl bit (9), /* maximum segment length in 1024 word units */ 1 25 2 pvtx fixed bin (8), /* physical volume table index */ 1 26 2 vtocx fixed bin (17), /* vtoc entry index */ 1 27 1 28 2 usedf bit (1), /* ast entry is being used if non-zero */ 1 29 2 init bit (1), /* used bit - insure 1 lap */ 1 30 2 gtus bit (1), /* global transparent usage switch */ 1 31 2 gtms bit (1), /* global transparent modified switch */ 1 32 2 hc bit (1), /* hard core segment */ 1 33 2 hc_sdw bit (1), /* aste with sdw for hardcore seg if non-zero */ 1 34 2 any_access_on bit (1), /* any sdw allows access, unless write_access_on */ 1 35 2 write_access_on bit (1), /* any sdw allows write access */ 1 36 2 inhibit_cache bit (1), /* flag not to reset above bits */ 1 37 2 explicit_deact_ok bit (1), /* set if user can deactivate seg */ 1 38 2 deact_error bit (1), /* set if error occurred while deactivating */ 1 39 2 hc_part bit (1), /* set if pages are in a hardcore partition */ 1 40 2 fm_damaged bit (1), /* set if filemap checksum was ever bad */ 1 41 2 multi_class bit (1), /* set if page_control should watch state changes to this segment */ 1 42 2 pad1 bit (2), /* OO */ 1 43 2 dius bit (1), /* dumper in use switch */ 1 44 2 nid bit (1), /* if on prevents addtion to incremental dump map */ 1 45 2 dmpr_pad bit (1), 1 46 2 ehs bit (1), /* entry hold switch */ 1 47 2 nqsw bit (1), /* no quota switch - no checking for pages of this seg */ 1 48 2 dirsw bit (1), /* directory switch */ 1 49 2 master_dir bit (1), /* master dir - a root for the log volume */ 1 50 2 volmap_seg bit (1), /* volmap_seg for some volume */ 1 51 2 tqsw (0:1) bit (1), /* terminal quota switch - (0) for non dir pages */ 1 52 2 pad_ic bit (10), /* Used to be aste.ic */ 1 53 1 54 2 dtu bit (36), /* date and time segment last used */ 1 55 1 56 2 dtm bit (36), /* date and time segment last modified */ 1 57 1 58 1 59 2 quota (0:1) fixed bin (18) unsigned, /* sec storage quota - (0) for non dir pages */ 1 60 1 61 2 used (0:1) fixed bin (18) unsigned, /* sec storage used - (0) for non dir pages */ 1 62 1 63 2 csl bit (9), /* current segment length in 1024 words units */ 1 64 2 fmchanged bit (1), /* turned on by page if file map changed */ 1 65 2 fms bit (1), /* file modified switch */ 1 66 2 npfs bit (1), /* no page fault switch */ 1 67 2 gtpd bit (1), /* global transparent paging device switch */ 1 68 2 dnzp bit (1), /* don't null out if zero page switch */ 1 69 2 per_process bit (1), /* use master quota for this entry */ 1 70 2 ddnp bit (1), /* don't deposit nulled pages */ 1 71 2 pad2 bit (2), 1 72 2 records bit (9), /* number of records used by the seg in sec storage */ 1 73 2 np bit (9), /* number of pages in core */ 1 74 1 75 1 76 2 ht_fp bit (18), /* hash table forward rel pointer */ 1 77 2 fmchanged1 bit (1), /* value of "fmchanged" saved by pc$get_file_map */ 1 78 2 damaged bit (1), /* PC declared segment unusable */ 1 79 2 pack_ovfl bit (1), /* page fault on seg would cause pack overflow */ 1 80 2 synchronized bit (1), /* Data Management synchronized segment */ 1 81 2 pad3 bit (6), /* OOOOOOOOO */ 1 82 2 ptsi bit (2), /* page table size index */ 1 83 2 marker bit (6)) unaligned; /* marker to indicate last word of ASTE */ 1 84 1 85 1 86 dcl asta (0 : 8000) bit (36*12 /* sst-> sst.astsize */) based aligned; 1 87 1 88 1 89 dcl 1 aste_part aligned based (astep), 1 90 1 91 2 one bit (36) unaligned, /* fp and bp */ 1 92 2 two bit (36*11 - 8) unaligned, /* part that has to be zeroed when ASTE is freed */ 1 93 2 three bit (8) unaligned; /* ptsi and marker */ 1 94 1 95 1 96 dcl 1 seg_aste based (astep) aligned, /* Overlay because quota is only for dirs */ 1 97 2 pad1 bit (8*36), 1 98 2 usage fixed bin (35), /* page fault count: overlays quota */ 1 99 2 pad2 bit (3*36); 1 100 1 101 /* END INCLUDE FILE ... aste.incl.pl1 */ 1331 1332 /* BEGIN INCLUDE FILE ... config_prph_fnp_card.incl.pl1 BIM 1983 */ 2 2 /* format: style3 */ 2 3 2 4 dcl prph_fnp_cardp ptr; /* Pointer to a PRPH fnpx card. */ 2 5 2 6 dcl 1 prph_fnp_card based (prph_fnp_cardp) aligned, 2 7 /* PRPH fnpx card declaration */ 2 8 2 word char (4), /* "prph" */ 2 9 2 name char (4), /* "fnpX" */ 2 10 2 iom fixed bin (3), /* IOM number */ 2 11 2 chan fixed bin (8), /* channel number */ 2 12 2 model fixed bin, /* model number */ 2 13 2 state char (4) aligned, /* ON/OFF */ 2 14 2 pad (9) bit (36) aligned, 2 15 2 type_word aligned, 2 16 3 field_type (14) bit (2) unaligned, /* type of each field; see config_deck.incl.pl1 */ 2 17 3 pad1 bit (4) unaligned, 2 18 3 n_fields fixed bin (4) unsigned unaligned; 2 19 /* number of fields used on card */ 2 20 2 21 /* END INCLUDE FILE ... config_prph_fnp_card.incl.pl1 */ 1332 1333 /* BEGIN dn355_mailbox.incl.pl1 */ 3 2 3 3 /* Date Last Modified and Reason 3 4* Created 07/25/74 by R. B. Snyder for new ttydim. 3 5* Modified 08/20/75 by Mike Grady to prepare for multiple 355's 3 6* Modified 11/08/78 by Robert Coren to introduce FNP-controlled mailboxes 3 7* Modified 02/19/80 by Robert Coren to specify format of accept_input mailbox 3 8* Modified 04/23/80 by Robert Coren to replace lock with num_in_use 3 9* Modified 09/21/82 by Robert Coren to make subfields of crash_data be fixed bin (18) unsigned 3 10* */ 3 11 3 12 dcl 1 datanet_mbx aligned based (mbxp), /* declaration of 355 mailbox */ 3 13 2 dia_pcw aligned, /* Peripheral Control Word for DIA */ 3 14 3 zero bit (18) unaligned, 3 15 3 error bit (1) unaligned, /* set to "1"b if error on connect */ 3 16 3 pad1 bit (5) unaligned, 3 17 3 mbx_no bit (6) unaligned, /* number of submbx being sent to 355 */ 3 18 3 command bit (6) unaligned, /* always 71 (octal) */ 3 19 2 mailbox_requests fixed bin, /* 0 mod 256K cnt of mbx requests by 355 */ 3 20 2 term_inpt_mpx_wd bit (36) aligned, /* terminate interrupt multiplex word */ 3 21 2 last_mbx_req_count fixed bin, /* previous value of mailbox_requests */ 3 22 2 num_in_use fixed bin, /* number of submailboxes currently in use */ 3 23 2 mbx_used_flags, /* one bit for each mailbox */ 3 24 3 used (0:7) bit (1) unaligned, /* "1"b means this mbx is being used */ 3 25 3 pad2 bit (28) unaligned, 3 26 2 crash_data, /* data for 355 emergency interrupt */ 3 27 3 fault_code fixed bin (18) unal unsigned, 3 28 3 ic fixed bin (18) unal unsigned, 3 29 3 iom_fault_status fixed bin (18) unal unsigned, 3 30 3 fault_word fixed bin (18) unal unsigned, /* contains either faulting instruction or iomchannel no */ 3 31 2 dn355_sub_mbxes (0:7) aligned, /* 8 CS-initiated submailboxes */ 3 32 3 pad4 (8) fixed bin, /* eight words each */ 3 33 2 fnp_sub_mbxes (0:3) aligned, /* 4 FNP-initiated mailboxes */ 3 34 3 pad5 (28) fixed bin; /* 28 words each */ 3 35 3 36 dcl 1 sub_mbx aligned based (subp), /* declaration of a submailbox */ 3 37 2 dn355_no bit (3) unaligned, /* 355 number */ 3 38 2 pad1 bit (5) unaligned, 3 39 2 line_number unaligned, /* line number assigned by 355 */ 3 40 3 is_hsla bit (1) unaligned, /* on if hsla, off if lsla */ 3 41 3 la_no bit (3) unaligned, /* line adapter (high or low speed) number */ 3 42 3 slot_no bit (6) unaligned, /* physical slot/subchannel number */ 3 43 2 terminal_id bit (18) unaligned, /* not used */ 3 44 3 45 2 terminal_type bit (9) unaligned, /* unused */ 3 46 2 cmd_data_len fixed bin (8) unaligned, /* no. of 6 bit chars in command data */ 3 47 2 op_code fixed bin (8) unaligned, /* op code */ 3 48 2 io_cmd fixed bin (8) unaligned, /* i/o cmd */ 3 49 3 50 2 command_data (3) bit (36) unaligned, /* data associated with op code */ 3 51 3 52 2 address unal, /* dcw buffer or circular queue address */ 3 53 3 data_addr bit (18) unaligned, /* data address */ 3 54 3 word_cnt fixed bin (18) unsigned unaligned, /* data length */ 3 55 2 pad3 bit (72) unaligned; 3 56 3 57 /* The structure below defines the long form of submailbox used by the FNP. Note that 3 58* the declaration of command_data and input_data is that used for the input_in_mailbox 3 59* operation; other FNP-initiated operations use the command_data format described by 3 60* the above (short mailbox) structure 3 61**/ 3 62 3 63 dcl 1 fnp_sub_mbx aligned based (subp), /* format used for FNP-controlled mailbox */ 3 64 2 dn355_no bit (3) unaligned, /* as above */ 3 65 2 pad1 bit (5) unaligned, 3 66 2 line_number unaligned, /* as above */ 3 67 3 is_hsla bit (1) unaligned, 3 68 3 la_no bit (3) unaligned, 3 69 3 slot_no bit (6) unaligned, 3 70 2 n_free_buffers fixed bin (17) unaligned, /* number of free blocks in FNP at present */ 3 71 3 72 2 pad3 bit (9) unaligned, 3 73 2 n_chars fixed bin (9) unsigned unaligned, /* number of data characters (if input) */ 3 74 2 op_code fixed bin (9) unsigned unaligned, /* as above */ 3 75 2 io_cmd fixed bin (9) unsigned unaligned, /* as above */ 3 76 3 77 2 input_data char (100) unaligned, /* input characters for input_in_mailbox op */ 3 78 2 command_data bit (36) unaligned; /* shouldn't need more than one word */ 3 79 3 80 /* The structure below defines the format of a long submailbox used for an accept_input operation 3 81* when the data is too long to fit directly in the mailbox. command_data and n_chars occupy the same position as for input_in_mailbox, above. 3 82**/ 3 83 3 84 dcl 1 input_sub_mbx aligned based (subp), 3 85 2 pad1 bit (8) unaligned, 3 86 2 line_number unaligned like sub_mbx.line_number, 3 87 2 n_free_buffers fixed bin (17) unaligned, /* number of free blocks in FNP at present */ 3 88 3 89 2 n_chars fixed bin (17) unaligned, /* total number of data characters */ 3 90 2 op_code fixed bin (9) unsigned unaligned, 3 91 2 io_cmd fixed bin (9) unsigned unaligned, 3 92 3 93 2 n_buffers fixed bin, /* number of buffers in this input chain */ 3 94 2 dcw (24), /* "pseudo-DCWs" used to specify buffer addresses and tallies */ 3 95 3 abs_addr bit (24) unaligned, /* supplied by CS */ 3 96 3 tally fixed bin (12) unsigned unaligned, /* in characters, supplied by FNP */ 3 97 2 command_data bit (36) unaligned; /* as above */ 3 98 3 99 dcl subp pointer; 3 100 dcl mbxp pointer; 3 101 3 102 /* END dn355_mailbox.incl.pl1 */ 1333 1334 /* BEGIN mailbox_ops.incl.pl1 4 2* 4 3* Created 8/15/74 by F. A. Canali 4 4* Modified 12/01/75 by J. Goldman for dial out 4 5* Modified 8/24/76 by Robert Coren to add dont_accept_calls and blast 4 6* Modified 7/28/77 by J. Stern to add set_delay_table 4 7* Modified 2/6/78 by Robert Coren to add sync_msg_size 4 8* Modified 6/29/79 by B. Greenberg for FNP echo negotiation 4 9* Modified Oct. 1979 by Robert Coren to add oflow & iflow modes 4 10* Modified 1/21/80 by Robert Coren to add parity controls 4 11* Modified 12/10/80 by Robert Coren to add report_meters 4 12* */ 4 13 4 14 dcl ( /* declaration of submailbox io commands */ 4 15 4 16 rcd init (1), /* read control data */ 4 17 rtx init (2), /* read text */ 4 18 wcd init (3), /* write control data */ 4 19 wtx init (4) /* write text */ 4 20 4 21 ) fixed bin (8) int static options (constant); 4 22 4 23 4 24 dcl ( /* declaration of submailbox op codes sent by 6180 to 355 */ 4 25 4 26 terminal_accepted init (0), /* a dialed terminal has been accepted */ 4 27 disconnect_this_line init (1), /* hang up a line */ 4 28 disconnect_all_lines init (2), /* hang up all lines */ 4 29 dont_accept_calls init (3), /* the 6180 is no longer accepting terminals */ 4 30 accept_calls init (4), /* the 6180 is ready to accept terminals */ 4 31 input_accepted init (5), /* the 6180 will accept input and has reserved 4 32* space in its circular buffer */ 4 33 set_line_type init (6), /* set the line type */ 4 34 enter_receive init (7), /* give the line to the terminal */ 4 35 set_framing_chars init (8), /* set characters for block transfer */ 4 36 blast init (9), /* BOS blast message */ 4 37 accept_direct_output init (10), /* the 6180 has an output request */ 4 38 accept_last_output init (11), /* same as above but the 355 may 4 39* unlock the keyboard and accept input 4 40* when the output transmission is through */ 4 41 dial init (12), /* use command data to dial a phone number */ 4 42 reject_request_temp init (14), /* an input request can not be serviced */ 4 43 terminal_rejected init (16), /* a dial up has been rejected */ 4 44 disconnect_accepted init (17), /* the 6180 recognizes a disconnection */ 4 45 init_complete init (18), /* 6180 system initialization is complete */ 4 46 dump_mem init (19), /* dump 355 memory */ 4 47 patch_mem init (20), /* patch 355 memory */ 4 48 fnp_break init (21), /* to control fnp break points */ 4 49 line_control init (22), /* line control order to fnp */ 4 50 sync_msg_size init (23), /* set message size for sync line */ 4 51 set_echnego_break_table init (24), /* send over echo negotiation break table */ 4 52 start_negotiated_echo init (25), /* attempt to start FNP echoing for ech. nego. */ 4 53 stop_negotiated_echo init (26), /* 6180 wants FNP to stop negotiated echo */ 4 54 init_echo_negotiation init (27), /* synchronize echo negotiation ctrs. */ 4 55 break_acknowledged init (29), /* the 6180 recognizes a break for a terminal */ 4 56 input_fc_chars init (30), /* set input flow control chars */ 4 57 output_fc_chars init (31), /* set output flow control chars */ 4 58 alter_parameters init (34), /* request to alter 355 parms for a terminal */ 4 59 checksum_error init (35), /* submailbox has a checksum error */ 4 60 report_meters init (36), /* get meters from FNP */ 4 61 set_delay_table init (37) /* tells 355 to set new delay table for channel */ 4 62 ) fixed bin (8) int static options (constant); 4 63 4 64 4 65 dcl ( /* submailbox op codes sent from 355 to 6180 */ 4 66 4 67 accept_new_terminal init (64), /* a terminal has dialed up */ 4 68 disconnected_line init (65), /* a terminal has been hung up */ 4 69 input_in_mailbox init (66), /* this mailbox contains input */ 4 70 line_masked init (67), /* channel was masked for excessive interrupts */ 4 71 s6180_params init (68), /* return bcount */ 4 72 send_output init (69), /* I am ready to send to a terminal */ 4 73 ack_echnego_init init (70), /* I have zeroed my ech. nego. ctr. */ 4 74 ack_echnego_stop init (71), /* I have sent all that I have echoed. */ 4 75 connect_to_slave init (73), /* a dialup sequence has been completed */ 4 76 accept_direct_input init (74), /* HEY! here's some input for you */ 4 77 break_condition init (75), /* a break has been hit for a terminl */ 4 78 wru_timeout init (76), /* no answerback */ 4 79 error_message init (77), /* error message from the 355 */ 4 80 first_acu_op_code init (80), 4 81 acu_no_power init (80), /* power indicator of auto-call unit is off */ 4 82 acu_line_occupied init (81), /* auto-call unit's line is being used */ 4 83 acu_dial_failure init (82), /* dial out failed */ 4 84 acu_no_good init (83), /* invalid dial out attempt */ 4 85 last_acu_op_code init (83), 4 86 line_status init (84) /* line status reported by fnp */ 4 87 ) fixed bin (8) int static options (constant); 4 88 4 89 dcl ( /* declaration of sub operations for alter parameters */ 4 90 4 91 Breakchar init (1), /* specifies break character */ 4 92 Nocontrol init (2), /* enter/leave nocontrol mode */ 4 93 Fullduplex init (3), /* perform character echoing */ 4 94 Break init (4), /* send line break to terminal */ 4 95 Errormsg init (5), /* indicates error detected by 355 */ 4 96 Meter init (6), /* read metering info */ 4 97 Sensepos init (7), /* sense position of carrier */ 4 98 Crecho init (8), /* enter/leave crecho mode */ 4 99 Lfecho init (9), /* enter/leave line feed echo mode */ 4 100 Lock init (10), /* lock keyboard */ 4 101 Msg init (11), /* precanned msg for dialing terminals */ 4 102 Upstate init (12), /* are you up? */ 4 103 Dumpoutput init (13), /* throw away output */ 4 104 Tabecho init (14), /* echo tabs */ 4 105 Setbusy init (15), /* force dataset busy */ 4 106 Listen init (16), /* answer the phone */ 4 107 Hndlquit init (17), /* send newline on receipt of quit */ 4 108 Chngstring init (18), /* printer addressing string definition */ 4 109 Wru init (19), /* read answerback */ 4 110 Echoplex init (20), /* enter/leave echoplex mode */ 4 111 Xmit_hold init (21), /* start/stop transmit hold */ 4 112 Dumpinput init (22), /* throw away input */ 4 113 Replay init (23), /* replay interrupted input */ 4 114 Polite init (24), /* write only if at left margin */ 4 115 Block_xfer init (25), /* block transfer or "frame" mode */ 4 116 Set_buffer_size init (26), /* set input buffer size */ 4 117 Breakall init (27), /* break on all characters */ 4 118 Prefixnl init (28), /* prefix output with newlines if input present */ 4 119 Input_flow_control init (29), /* iflow mode */ 4 120 Output_flow_control init (30), /* oflow mode */ 4 121 Odd_parity init (31), /* generate odd parity */ 4 122 Eight_bit_in init (32), /* 8bit mode */ 4 123 Eight_bit_out init (33) /* no_outp mode */ 4 124 ) fixed bin (8) int static options (constant); 4 125 4 126 dcl global_opcodes (9) fixed bin (8) int static options (constant) init ( 4 127 2, /* disconnect_all_lines */ 4 128 3, /* dont_accept_calls */ 4 129 4, /* accept_calls */ 4 130 9, /* blast */ 4 131 19, /* dump_mem */ 4 132 20, /* patch_mem */ 4 133 21, /* fnp_break */ 4 134 36, /* report_meters */ 4 135 77); /* error_message */ 4 136 4 137 /* END of mailbox_ops.incl.pl1 */ 1334 1335 /* BEGIN INCLUDE FILE ... lct.incl.pl1 */ 5 2 5 3 /* Created by J. Stern 7/26/78 */ 5 4 /* Metering information added by C. Hornig, March 1980. */ 5 5 /* Unwired saved meters added by Robert Coren, December 1980 */ 5 6 5 7 dcl lctp ptr; /* ptr to logical channel table */ 5 8 dcl lctep ptr; /* ptr to logical channel table entry */ 5 9 dcl lct_size fixed bin; /* size of lcte_array when allocated */ 5 10 5 11 dcl 1 lct aligned based (lctp), /* logical channel table */ 5 12 2 max_no_lctes fixed bin, /* maximum number of lct entries */ 5 13 2 cur_no_lctes fixed bin, /* current number of lct entries used */ 5 14 2 lcnt_ptr ptr, /* ptr to logical channel name table */ 5 15 2 queue_lock bit (36), /* lock used to serialize queueing operations */ 5 16 2 pad (11) fixed bin, 5 17 2 lcte_array (lct_size refer (lct.max_no_lctes)) like lcte; /* lct entries */ 5 18 5 19 5 20 dcl 1 lcte aligned based (lctep), /* logical channel table entry */ 5 21 2 lock bit (36), /* channel lock */ 5 22 2 data_base_ptr ptr unal, /* ptr to channel data base */ 5 23 2 channel_type fixed bin (8) unal, /* identifies channel manager program */ 5 24 2 flags unal, 5 25 3 entry_in_use bit (1) unal, /* ON if this entry in use */ 5 26 3 initialized bit (1) unal, /* ON if this channel initialized */ 5 27 3 notify_reqd bit (1) unal, /* ON if must notify when unlocking this channel */ 5 28 3 locked_for_interrupt bit (1) unal, /* ON if lock set by interrupt handler */ 5 29 3 space_needed bit (1) unal, /* ON if this channel needs buffer space */ 5 30 3 special_lock bit (1) unal, /* ON if lock is managed by multiplexer */ 5 31 3 trace_force bit (1) unal, /* ON to trace based on next bit only */ 5 32 /* OFF to XOR next bit with tty_buf.default_tracing */ 5 33 3 trace bit (1) unal, /* ON to trace this channel */ 5 34 3 unused bit (1) unal, 5 35 2 physical_channel_devx fixed bin (17) unal, /* devx of physical chan from which logical chan is derived */ 5 36 2 major_channel_info, 5 37 3 major_channel_devx fixed bin unal, /* major channel device index */ 5 38 3 subchannel fixed bin (17) unal, /* subchannel id (or data ptr) wrt major channel */ 5 39 2 queue_entries, 5 40 3 queue_head bit (18) unal, /* ptr to first queue entry for this channel */ 5 41 3 queue_tail bit (18) unal, /* ptr to last queue entry for this channel */ 5 42 2 word_counts, 5 43 3 input_words fixed bin (17) unal, /* number of input words charged to this channel */ 5 44 3 output_words fixed bin (17) unal, /* number of output words charged to this channel */ 5 45 5 46 2 meters, 5 47 3 in_bytes fixed bin (35), 5 48 3 out_bytes fixed bin (35), 5 49 3 in, 5 50 4 calls fixed bin (35), 5 51 4 interrupts fixed bin (35), 5 52 4 call_time fixed bin (71), 5 53 4 interrupt_time fixed bin (71), 5 54 3 out like lcte.meters.in, 5 55 3 control like lcte.meters.in, 5 56 2 saved_meters_ptr ptr, /* pointer to unwired copy of meters saved at last dialup */ 5 57 5 58 2 timer_offset bit (18) aligned, /* Head of list of timers for this channel */ 5 59 5 60 2 pad (3) fixed bin (35); 5 61 5 62 5 63 dcl lcntp ptr; /* ptr to logical channel name table */ 5 64 5 65 dcl 1 lcnt aligned based (lcntp), /* logical channel name table */ 5 66 2 names (lct.max_no_lctes) char (32) unal; /* channel names */ 5 67 5 68 dcl 1 saved_meters aligned based like lcte.meters; /* meters saved at dialup, allocated in tty_area */ 5 69 5 70 5 71 /* END INCLUDE FILE ... lct.incl.pl1 */ 1335 1336 /* BEGIN dn355_data.incl.pl1 */ 6 2 6 3 6 4 6 5 /****^ HISTORY COMMENTS: 6 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 6 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 6 8* Add data needed for the uncp multiplexer (DSA gateway) interface 6 9* implementation. 6 10* 2) change(89-03-20,Parisek), approve(89-06-06,MCR8110), 6 11* audit(89-10-09,Farley), install(89-10-25,MR12.3-1100): 6 12* Add support of protocol mpx. 6 13* END HISTORY COMMENTS */ 6 14 6 15 6 16 /* Date Last Modified and Reason 6 17* 6 18* Created 07/25/74 by R. B. Snyder for new ttydim. 6 19* Modified 06/23/77 by J. Stern to add channel_work_reqd and cwork_count 6 20* Modified 08/14/78 by Robert Coren to remove devx_tab and invent PCBs 6 21* Modified 79 May 14 by Art Beattie to add fnp_mem_size 6 22* Modified December 1979 by Robert Coren to add FNP queue lock 6 23* Modified January 1980 by Larry Johnson to increase max number of FNPs to 8 6 24* Modified 02/12/80 by Robert Coren to add dcw_list_array_ptr 6 25* Modified 03/06/80 by Robert Coren to add some metering info 6 26* Modified 12/10/80 by Robert Coren to add get_meters_waiting flag 6 27* Modified 83-12-16 BIM to use a chanid instead of iom/channel fb's. 6 28* Modified 1984-07-26 BIM for paged iom. 6 29* Modified in September 1985 for the DN7100 version interim. 6 30**/ 6 31 6 32 /* LOCKING RULES: A fnp is locked by its LCTE unless its LCTE is uninitialized. 6 33* In that case, the configuration_lock must be held. 6 34* if tty_lock$lock_lcte returns io_no_permission, then the caller must 6 35* lock$lock_fast the configuration lock and retry the LCTE lock. If 6 36* the lcte is now initialized, too bad. Otherwise, the config lock protects. 6 37* 6 38* Configuration locking is interesting to init_multiplexer and 6 39* all of fnp t&d and reconfiguration. The guts of the multiplexer 6 40* pay no attention to it. Thus, if the LCTE can be locked, it MUST be 6 41* locked before changing the io_manager_assigned flag. */ 6 42 6 43 /* format: style4,delnl,insnl,^ifthendo */ 6 44 6 45 dcl max_no_355s fixed bin int static init (8) options (constant); 6 46 /* max no of 355s we can handle (arbitrary) */ 6 47 dcl dn355_data$ external fixed bin; 6 48 6 49 dcl infop pointer; 6 50 dcl fnpp ptr; 6 51 6 52 dcl 1 datanet_info aligned based (infop), 6 53 2 configuration_lock aligned, 6 54 3 pid bit (36) aligned, 6 55 3 event bit (36) aligned, 6 56 3 flags aligned, 6 57 4 notify_sw bit (1) unaligned, 6 58 4 pad bit (35) aligned, 6 59 2 no_of_355s fixed bin, /* no. of FNP's */ 6 60 2 trace bit (1) aligned, /* watch events on console */ 6 61 2 debug_stop bit (1) aligned, /* crash on errors */ 6 62 2 uncp_bufp ptr, /* pointer to the circular buffer */ 6 63 2 protocol_datap ptr, /* pointer to protocol_mpx data */ 6 64 2 pad1 (6) bit (36) aligned, 6 65 2 per_datanet (max_no_355s) aligned like fnp_info; /* data per datanet */ 6 66 6 67 dcl 1 fnp_info aligned based (fnpp), /* structure for each FNP */ 6 68 2 mbx_pt pointer, /* pointer to mailbox NULL if not in config */ 6 69 2 pcb_array_ptr pointer, /* pointer to array of physical channel blocks */ 6 70 2 dcw_list_array_ptr pointer, /* pointer to array of space reserved for output DCW lists */ 6 71 2 no_of_channels fixed bin, /* number of channels on this FNP */ 6 72 2 fnp_id, 6 73 3 fnp_tag char (1) unaligned, /* letter identifying FNP */ 6 74 3 fnp_number fixed bin (9) unsigned unaligned, /* sequence number of FNP */ 6 75 3 padc bit (18) unaligned, 6 76 2 io_chanid char (8) aligned, 6 77 2 io_manager_chx fixed bin (35), /* devx for DIA on iom */ 6 78 2 lsla_idx (0:5) fixed bin aligned, /* index into PCB array for lsla lines */ 6 79 2 hsla_idx (0:2) fixed bin aligned, /* index into PCB array for hsla lines */ 6 80 2 count fixed bin, /* number of items in delay queue */ 6 81 2 cur_ptr fixed bin, /* offset in tty_buf of next delay queue element */ 6 82 2 last_ptr fixed bin, /* offset in tty_buf of last delay queue element */ 6 83 2 bleft_355 fixed bin, /* number of free buffers in this 355 */ 6 84 2 flags, 6 85 3 work_reqd bit (1) unaligned, /* mailbox messages queued up */ 6 86 3 bootloading bit (1) unaligned, /* currently being bootloaded */ 6 87 3 running bit (1) unaligned, /* this FNP is running */ 6 88 3 wired bit (1) unaligned, /* bootload buffer is wired */ 6 89 3 dump_patch_in_progress bit (1) unaligned, /* a dump or patch order is in progress */ 6 90 3 level_3_pending bit (1) unaligned, /* level 3 interrupt pending */ 6 91 3 level_7_pending bit (1) unaligned, /* level 7 interrupt pending */ 6 92 3 dump_patch_disabled bit (1) unaligned, /* dump & patch orders disabled because of timeout */ 6 93 3 t_and_d_in_progress bit (1) unaligned, /* T & D using FNP */ 6 94 3 t_and_d_lev_3_occurred bit (1) unaligned, /* A level 3 occurred */ 6 95 3 t_and_d_lev_7_occurred bit (1) unaligned, 6 96 3 t_and_d_notify_requested bit (1) unaligned, 6 97 3 t_and_d_assigned bit (1) unaligned, /* AS has given fnp to process */ 6 98 3 get_meters_waiting bit (1) unaligned, /* waiting for meter copy to complete */ 6 99 3 padb bit (7) unaligned, 6 100 3 active_dial unaligned, 6 101 4 active_bit (15) bit (1) unaligned, /* ON if the process is active */ 6 102 2 lcte_ptr ptr, /* pointer to this FNP's LCT entry */ 6 103 2 astep ptr, /* pointer to aste of wired bootload buffer */ 6 104 2 boot_ev_chan fixed bin (71), /* event channel over which to signal bootload completion */ 6 105 2 boot_process_id bit (36), /* process that initiated bootload */ 6 106 2 version char (4), /* version id of core image */ 6 107 2 fnp_mem_size fixed bin (18) unsigned, /* memory size of this FNP in 18-bit words */ 6 108 2 queue_lock bit (36) aligned, /* lock for interrupt queue */ 6 109 2 dump_patch_lock bit (36), /* lock for fnp_dump or _patch operation */ 6 110 2 q_entries_made fixed bin (35), /* count of delay queue entries made */ 6 111 2 input_reject_count fixed bin, /* number of times input rejected */ 6 112 2 processed_from_q fixed bin (35), /* number of interrupts processed from queue */ 6 113 2 fnp_channel_locked fixed bin (35), /* number of times dn355 found per-FNP lock locked */ 6 114 2 input_data_transactions fixed bin (35), /* number of mailbox transactions for input */ 6 115 2 output_data_transactions fixed bin (35), /* number of mailbox transactions for output */ 6 116 2 input_control_transactions fixed bin (35), /* number of mailbox transactions for inbound control info */ 6 117 2 output_control_transactions fixed bin (35), /* number of mailbox transactions for outbound control info */ 6 118 2 cumulative_mbx_in_use fixed bin (35), /* cumulative count of number of outbound mailboxes in use */ 6 119 2 max_mbx_in_use fixed bin, /* maximum number of mailboxes in use at any given time */ 6 120 2 mbx_in_use_updated fixed bin (35), /* number of increments to cumulative_mbx_in_use */ 6 121 2 mbx_unavailable fixed bin (35), /* number of times had to queue mailbox transaction because none available */ 6 122 2 free_size fixed bin (35), /* cumulative amount of bleft_355 */ 6 123 2 free_count fixed bin, /* number of adds to above */ 6 124 2 fnp_space_restricted_output fixed bin (35), /* number of times available FNP space restricted amount of output sent */ 6 125 2 tandd_pcbx fixed bin, /* index of PCB for COLTS channel */ 6 126 2 n_pages_wired fixed bin, /* pages wired for loading */ 6 127 2 config_flags aligned, 6 128 3 available bit (1) unaligned, /* reconfig says "yes" */ 6 129 3 io_manager_assigned bit (1) unaligned, /* We have channel assigned to us */ 6 130 3 pad bit (34) unaligned, 6 131 2 uncp_pcbx1 fixed bin (17) unaligned, /* For the DN7100 */ 6 132 2 uncp_pcbx2 fixed bin (17) unaligned, /* For the DN7100 */ 6 133 2 ptx fixed bin, /* page table index, used only at bootload */ 6 134 2 ptp pointer unaligned; /* page table for this FNP */ 6 135 6 136 /**** The following named constants are used to lay out the 6 137* iom page tables. Each FNP has to have its own page 6 138* table because there is not enough room to have eight different 6 139* bootload images of 32 K and > 64 K of tty_buf 6 140* 6 141* THE MAX TTY BUF LENGTH IS 192 K words. We could have another 16 K 6 142* easily, and then after that it would get hard. */ 6 143 6 144 /**** The layout 6 145* 6 146* Page I/O address Memory address Comments 6 147* ---- ------ -------------- -------- 6 148* 0 0 xxxxxx invalid PTW 6 149* 1 2000 2000 write-enabled (mailbox) 6 150* 2 4000 4000 write-enabled (mailbox) 6 151* 3 6000 6000 write-enabled (mailbox) 6 152* 4 10000 as needed bootload image segment page 0 6 153* .... .... .... .... 6 154* 35 110000 as needed bootload image segment page 31 6 155* 36 112000 xxxxxx invalid PTW 6 156* ... .... .... .... 6 157* 63 160000 .... invalid PTW 6 158* 64 200000 as needed tty_buf page 0 6 159* ... .... .... .... 6 160* 127 260000 as needed tty_buf page 63 6 161* 255 ...... ..... tty_buf page 191 6 162**/ 6 163 6 164 /**** We assume that the page table starts at all zeros. */ 6 165 6 166 declare FIRST_BOOTLOAD_PAGEX fixed bin init (4) int static options (constant); 6 167 declare FIRST_TTY_BUF_PAGEX fixed bin init (64) int static options (constant); 6 168 6 169 /* End include file dn355_data.incl.pl1 */ 1336 1337 /* BEGIN INCLUDE FILE ... pcb.incl.pl1 */ 7 2 7 3 7 4 7 5 /****^ HISTORY COMMENTS: 7 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 7 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 7 8* Add data needed for the uncp multiplexer (DSA gateway) interface 7 9* implementation. 7 10* END HISTORY COMMENTS */ 7 11 7 12 7 13 /* Created 08/14/78 by Robert S. Coren */ 7 14 /* Modified 02/19/80 by Robert S. Coren to add read_first & read_last */ 7 15 /* Modified 12/10/80 by Robert S. Coren to add metering stuff */ 7 16 /* Modified May 1981 by Robert S.Coren to add tandd_attached flag */ 7 17 /* Modified in February 1982 to add: dumpout, turn, enter_receive_pending, 7 18* connection_type, send_lf, extra_nl,lfecho flags for DN7100 */ 7 19 7 20 /* Describes physical channel blocks for FNP channels */ 7 21 7 22 dcl n_pcbs fixed bin; 7 23 dcl pcbp ptr; 7 24 7 25 dcl 1 pcb_array (n_pcbs) based aligned like pcb; 7 26 7 27 dcl 1 pcb aligned based (pcbp), /* physical channel block declaration */ 7 28 2 channel_desc unaligned, 7 29 3 devx fixed bin (17), /* index of LCT entry */ 7 30 3 subchan fixed bin (7) unaligned, /* logical subchannel/lsla slot # correspondence */ 7 31 3 line_number unal, /* regular line number */ 7 32 4 is_hsla bit (1) unaligned, /* on if hsla, off if lsla */ 7 33 4 la_no bit (3) unaligned, /* line adapter (high or low speed) number */ 7 34 4 slot_no bit (6) unaligned, /* physical slot or subchannel number */ 7 35 2 write_first fixed bin (17) unaligned, /* offset of first buffer in output chain */ 7 36 2 write_last fixed bin (17) unaligned, /* offset of last buffer in output chain */ 7 37 2 baud_rate fixed bin (17) unaligned, /* baud rate of channel */ 7 38 2 line_type fixed bin (17) unaligned, /* line type */ 7 39 2 max_buf_size fixed bin (17) unaligned, /* largest buffer to be allocated for output */ 7 40 2 write_cnt fixed bin (17) unaligned, /* number of characters in write chain */ 7 41 2 flags unaligned, 7 42 3 listen bit (1), /* channel is ready for dialup */ 7 43 3 dialed bit (1), /* channel is dialed up or connected */ 7 44 3 send_output bit (1), /* channel is ready for output */ 7 45 3 high_speed bit (1), /* needs large send_out threshold */ 7 46 3 sync_line bit (1), /* synchronous channel */ 7 47 3 end_frame bit (1), /* channel is waiting for formfeed */ 7 48 3 hndlquit bit (1), /* channel in hndlquit mode */ 7 49 3 breakall_enabled bit (1), /* breakall mode allowed for this channel */ 7 50 3 output_mbx_pending bit (1), /* A wtx mbx has been sent, but not relinquished */ 7 51 3 copied_meters_ready bit (1), /* copy_meters operation has completed */ 7 52 3 get_meters_waiting bit (1), /* waiting for get_meters operation to complete */ 7 53 3 tandd_attached bit (1), /* this channel is in use by T & D */ 7 54 3 enter_receive_pending bit (1), /* enter_receive is waiting for send */ 7 55 3 turn bit (1), /* Multics owns the turn */ 7 56 3 extra_nl bit (1), /* add NL at end of buffer (read) */ 7 57 3 send_lf bit (1), /* send lf after read */ 7 58 3 lfecho bit (1), /* Validate lfecho mode */ 7 59 3 dumpout bit (1), /* To purge first write after special dial */ 7 60 3 buffer_flag bit (1), /* Utilisation of a buffer in place of the circular buffer. */ 7 61 3 connection_type bit (2), /* For full-duplex */ 7 62 3 padb bit (6), 7 63 3 uncp_pcbx fixed bin (9) unal uns, /* To manage the full duplex with the datanet 7100 */ 7 64 2 read_first fixed bin (18) unsigned unaligned, /* head of read chain (while reading from FNP) */ 7 65 2 read_last fixed bin (18) unsigned unaligned, /* tail of read chain (likewise) */ 7 66 2 saved_meters_ptr pointer unaligned, /* pointer to (unwired) copy of meters at last dialup */ 7 67 2 copied_meters_offset fixed bin (18) unsigned; /* offset in tty_buf of buffer meters copied to */ 7 68 7 69 /* END INCLUDE FILE ... pcb.incl.pl1 */ 1337 1338 /* BEGIN INCLUDE FILE ... fnp_dump_seg.incl.pl1 */ 8 2 8 3 /* Defines format of segment used for dumping and patching FNP memory */ 8 4 /* Created 2/27/76 by Robert S. Coren */ 8 5 8 6 dcl fnp_dump_ptr ptr; 8 7 8 8 dcl fnp_dump_seg$ ext static; 8 9 8 10 dcl 1 fnp_dump_seg aligned based (fnp_dump_ptr), 8 11 2 lock bit (36), /* to prevent multiple use */ 8 12 2 flags, 8 13 3 in_use bit (1) unaligned, /* turned off when transaction completed */ 8 14 3 fdump bit (1) unaligned, /* used during fdump i/o */ 8 15 3 pad bit (34) unaligned, 8 16 2 data (0:2043) bit (18) unaligned; /* place where dumped/patched words are placed */ 8 17 8 18 /* END INCLUDE FILE ... fnp_dump_seg.incl.pl1 */ 1338 1339 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 9 2 9 3 9 4 9 5 /****^ HISTORY COMMENTS: 9 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 9 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 9 8* Add data needed for the uncp multiplexer (DSA gateway) interface 9 9* implementation. 9 10* END HISTORY COMMENTS */ 9 11 9 12 9 13 /* Values for fnpe.type field */ 9 14 /* 9 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 9 16* Added in March 1982 - DN7100.fd. 9 17**/ 9 18 9 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 9 20 DN6600 init (2), /* a DataNet 6600 FNP */ 9 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 9 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 9 23 ) fixed bin internal static options (constant); 9 24 9 25 dcl fnp_types (4) char (8) int static options (constant) 9 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 9 27 9 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 9 29 init (355, 6600, 6670, 7100); 9 30 9 31 dcl supported_fnp (4) bit (1) int static options (constant) 9 32 init ("0"b, "0"b, "1"b, "1"b); 9 33 9 34 9 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 1339 1340 /* Begin include file io_manager_dcls.incl.pl1 */ 10 2 10 3 /* Written by Charles Hornig, late 1980 and early 1981 */ 10 4 /* Modified for MR10 interface, February 1982 */ 10 5 /* Channel reconfiguration entries added by Chris Jones, January 1984 */ 10 6 10 7 /* These entries are callable on unwired stacks. */ 10 8 10 9 /* call io_manager$assign (Chx, Channel, Handler, Index, Statusp, Code); */ 10 10 dcl io_manager$assign 10 11 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 10 12 fixed bin (35), ptr, fixed bin (35)); 10 13 10 14 /* call io_manager$assign_add (Chx, Channel, Handler, Index, Statusp, Code); */ 10 15 dcl io_manager$assign_add 10 16 entry (fixed bin (35), char (8) aligned, entry (fixed bin (35), fixed bin (3), bit (36) aligned), 10 17 fixed bin (35), ptr, fixed bin (35)); 10 18 10 19 /* call io_manager$unassign (Chx, Code); */ 10 20 dcl io_manager$unassign entry (fixed bin (35), fixed bin (35)); 10 21 10 22 /* call io_manager$unassign_delete (Chx, Code); */ 10 23 dcl io_manager$unassign_delete entry (fixed bin (35), fixed bin (35)); 10 24 10 25 /* call io_manager$connect (Io_manager_arg); */ 10 26 dcl io_manager$connect entry (1 aligned like io_manager_arg); 10 27 10 28 /* call io_manager$connect_abs (Io_manager_arg); */ 10 29 dcl io_manager$connect_abs entry (1 aligned like io_manager_arg); 10 30 10 31 /* call io_manager$connect_direct (Io_manager_arg); */ 10 32 dcl io_manager$connect_direct entry (1 aligned like io_manager_arg); 10 33 10 34 /* call io_manager$get_status (Chx, Io_status_entry_ptr); */ 10 35 dcl io_manager$get_status entry (fixed bin (35), ptr); 10 36 10 37 /* call io_manager$mask (Chx); */ 10 38 dcl io_manager$mask entry (fixed bin (35)); 10 39 10 40 /* call io_manager$ignore_interrupt (); */ 10 41 dcl io_manager$ignore_interrupt entry (fixed bin (35), fixed bin (3), bit (36) aligned); 10 42 10 43 /* call io_manager$data_tdcw (Io_manager_arg); 10 44* dcl io_manager$data_tdcw entry (1 aligned like io_manager_arg); 10 45* 10 46* /* call io_manager$workspace_tdcw (Io_manager_arg); */ 10 47 dcl io_manager$workspace_tdcw entry (1 aligned like io_manager_arg); 10 48 10 49 dcl io_manager_arg_ptr ptr; 10 50 dcl 1 io_manager_arg aligned based (io_manager_arg_ptr), 10 51 2 chx fixed bin (35), /* channel index from io_manager$assign */ 10 52 2 bound fixed bin (19), /* workspace size */ 10 53 2 pcw bit (36) aligned, /* or IDCW */ 10 54 2 listx fixed bin (18), /* DCW list offset */ 10 55 2 ptp ptr, /* page table pointer */ 10 56 2 listp ptr, /* DCW list pointer */ 10 57 2 dcw_pair_ptr ptr; /* DCW pair pointer */ 10 58 10 59 /* End include file io_manager_dcls.incl.pl1 */ 1340 1341 /* START OF: io_page_tables.incl.pl1 * * * * * * * * * * * * * * * * */ 11 2 11 3 /* Definition of the I/O page table segment. For details of how this is manipulated, see io_page_table.pl1. */ 11 4 /* Written April 1983 by Chris Jones */ 11 5 /* Modified 1985-01-02, BIM: removed include of hc_lock. */ 11 6 11 7 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 11 8 dcl io_page_table_seg$ external; 11 9 11 10 dcl io_page_table_seg_ptr ptr; 11 11 11 12 dcl 1 io_page_tables aligned based (io_page_table_seg_ptr), 11 13 2 lock like hc_fast_lock, /* (0) standard fast lock */ 11 14 2 free_64_ptx fixed bin (9) unsigned unaligned, 11 15 /* (3) index of first free 64 word pt */ 11 16 2 free_256_ptx fixed bin (9) unsigned unaligned, 11 17 /* (3) pointer to first free 256 word pt */ 11 18 2 n_pages_wired fixed bin (9) unsigned unaligned, 11 19 /* (3) how many pages are in use now */ 11 20 2 pad1 bit (9) unaligned, 11 21 2 pt_info (5:256), /* (4) one for each page table */ 11 22 3 size bit (1) unaligned, 11 23 3 in_use bit (1) unaligned, 11 24 3 pad1 bit (25) unaligned, 11 25 3 next_pt fixed bin (9) unsigned unaligned; 11 26 11 27 /* This include file requires hc_fast_lock.incl.pl1 */ 11 28 11 29 dcl ioptp ptr; 11 30 dcl io_page_table_size fixed bin; 11 31 11 32 dcl 1 page_table (0:io_page_table_size - 1) aligned based (ioptp), 11 33 2 ptw like io_ptw; 11 34 12 1 /* Begin include file io_ptw.incl.pl1 */ 12 2 12 3 dcl io_ptwp ptr; 12 4 dcl 1 io_ptw aligned based (io_ptwp), 12 5 2 pad1 bit (2) unaligned, 12 6 2 address uns fixed bin (16) unaligned, 12 7 2 pad2 bit (13) unaligned, 12 8 2 write bit (1) unaligned, 12 9 2 housekeeping bit (1) unaligned, 12 10 2 valid bit (1) unaligned, 12 11 2 pad3 bit (2) unaligned; 12 12 12 13 /* End include file io_ptw.incl.pl1 */ 11 35 11 36 11 37 dcl IO_PAGE_TABLE_LOCK_EVENT 11 38 char (4) static options (constant) init ("iopt"); 11 39 dcl MAX_IO_PAGE_TABLE_SEG_PAGES 11 40 fixed bin (9) static options (constant) init (16); 11 41 dcl PT_64_SIZE bit (1) static options (constant) init ("0"b); 11 42 dcl PT_256_SIZE bit (1) static options (constant) init ("1"b); 11 43 dcl PTS_PER_PAGE fixed bin static options (constant) init (16); 11 44 dcl SMALL_PT_SIZE fixed bin (19) static options (constant) init (65536); 11 45 11 46 /* END OF: io_page_tables.incl.pl1 * * * * * * * * * * * * * * * * */ 1341 1342 /* START OF: io_chnl_util_dcls.incl.pl1 * * * * * * * * * * * * * * * * */ 13 2 13 3 /* Written by Charles Hornig, 1st quarter 1981 */ 13 4 /* Canonicalization entry added by Chris Jones, January 1984 */ 13 5 13 6 /* chanid = canonicalize_chanid (chanid); */ 13 7 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 13 8 dcl io_chnl_util$canonicalize_chanid 13 9 entry (char (8) aligned) returns (char (8) aligned); 13 10 13 11 /* call iom_to_name (iomno, channo, name, code); */ 13 12 dcl io_chnl_util$iom_to_name 13 13 entry (fixed bin (3), fixed bin (7), char (8) aligned, fixed bin (35)); 13 14 13 15 /* call name_to_iom (name, iomno, channo, code); */ 13 16 dcl io_chnl_util$name_to_iom 13 17 entry (char (8) aligned, fixed bin (3), fixed bin (7), fixed bin (35)); 13 18 13 19 /* END OF: io_chnl_util_dcls.incl.pl1 * * * * * * * * * * * * * * * * */ 1342 1343 /* BEGIN INCLUDE FILE ... ptw.l68.incl.pl1 ... 02/26/81, for ADP conversion */ 14 2 /* Note: This include file has an ALM counterpart made with cif. Keep it up to date */ 14 3 14 4 dcl 1 l68_core_ptw aligned based (ptp), /* In-core page descriptor */ 14 5 2 frame fixed bin (14) unsigned unaligned, /* Core frame number */ 14 6 2 pad1 bit (4) unaligned, 14 7 2 flags unaligned like l68_ptw_flags; 14 8 14 9 dcl 1 l68_ptw aligned based (ptp), /* General declaration for out-of-core PTW */ 14 10 2 add bit (18) unaligned, 14 11 2 flags like l68_ptw_flags unaligned; 14 12 14 13 dcl 1 l68_special_ptw aligned based (ptp) like l68_ptw; /* Page is somewhere peculiar -- add_type = "01"b */ 14 14 dcl 1 l68_real_disk_ptw aligned based (ptp) like l68_ptw; /* PTW for page actually on disk -- add_type = "10"b */ 14 15 dcl 1 l68_null_disk_ptw aligned based (ptp) like l68_ptw; /* PTW for page not yet on disk -- add_type = "11"b */ 14 16 14 17 dcl 1 l68_ptw_flags unaligned based, /* Various software/hardware flags */ 14 18 (2 add_type bit (4), /* 0000=null, 1000=core, 0100=disk, 0010=pd, 0001=swap */ 14 19 2 first bit (1), /* the page has not yet been written out */ 14 20 2 er bit (1), /* error on last page I/O (also used by post-purge as temp) */ 14 21 14 22 2 pad1 bit (1), 14 23 2 unusable1 bit (1), /* can't be used because hardware resets this bit */ 14 24 2 phu bit (1), /* page has been used bit */ 14 25 14 26 2 phm1 bit (1), /* Cumulative OR of hardware phm's */ 14 27 2 nypd bit (1), /* must be moved to paging device */ 14 28 2 phm bit (1), /* page has been modified bit */ 14 29 14 30 2 phu1 bit (1), /* page has been used in the quantum */ 14 31 2 wired bit (1), /* page is to remain in core */ 14 32 2 os bit (1), /* page is out-of-service (I/O in progress) */ 14 33 2 valid bit (1), /* directed fault if this is 0 (page not in core) */ 14 34 2 df_no bit (2)) unaligned; /* directed fault number for page faults */ 14 35 14 36 /* END INCLUDE FILE ... ptw.l68.incl.pl1 */ 1343 1344 declare ptp pointer; 1345 /* BEGIN INCLUDE FILE syserr_constants.incl.pl1 ... 11/11/80 W. Olin Sibert */ 15 2 /* 85-02-12, EJ Sharpe - Added sorting class constants, removed AIM_MESSAGE, added new action code names. */ 15 3 /* 85-04-24, G. Palter - Renamed SYSERR_UNUSED_10 to SYSERR_RING1_ERROR to reflect its actual use. */ 15 4 15 5 /* This include file has an ALM version. Keep 'em in sync! */ 15 6 15 7 dcl ( 15 8 15 9 /* The following constants define the message action codes. This indicates 15 10*how a message is to be handled. */ 15 11 15 12 SYSERR_CRASH_SYSTEM init (1), 15 13 CRASH init (1), /* Crash the system, and bleat plaintively. */ 15 14 15 15 SYSERR_TERMINATE_PROCESS init (2), 15 16 TERMINATE_PROCESS init (2), /* Terminate the process, print the message, and beep. */ 15 17 15 18 SYSERR_PRINT_WITH_ALARM init (3), 15 19 BEEP init (3), /* Beep and print the message on the console. */ 15 20 15 21 SYSERR_PRINT_ON_CONSOLE init (0), 15 22 ANNOUNCE init (0), /* Just print the message on the console. */ 15 23 15 24 SYSERR_LOG_OR_PRINT init (4), 15 25 LOG init (4), /* Log the message, or print it if it can't be logged */ 15 26 15 27 SYSERR_LOG_OR_DISCARD init (5), 15 28 JUST_LOG init (5), /* Just try to log the message, and discard it if it can't be */ 15 29 15 30 15 31 /* The following constants are added to the normal severities to indicate 15 32*different sorting classes of messages. */ 15 33 15 34 SYSERR_SYSTEM_ERROR init (00), /* indicates a standard level system error */ 15 35 SYSERR_RING1_ERROR init (10), /* indicates an error detected in ring 1 (mseg_, RCP) */ 15 36 SYSERR_COVERT_CHANNEL init (20), /* indicates covert channel audit trail message */ 15 37 SYSERR_UNSUCCESSFUL_ACCESS init (30), /* indicates access denial audit trail message */ 15 38 SYSERR_SUCCESSFUL_ACCESS init (40) /* indicates access grant audit trail message */ 15 39 ) fixed bin internal static options (constant); 15 40 15 41 /* END INCLUDE FILE syserr_constants.incl.pl1 */ 1345 1346 /* BEGIN INCLUDE FILE ... tty_buf.incl.pl1 */ 16 2 16 3 /* Date Last Modified and Reason 16 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 16 5* Modified January 1978 by Robert Coren and Larry Johnson for variable-size buffers 16 6* Modified 2/6/78 by Robert Coren to make circular_queue size settable 16 7* Modified Aug 78 by J. Nicholls to move the buffer block format to a file of its own 16 8* and wtcb to its own plus other modification for ring 0 multiplexing, tty_buffer_block.incl.pl1 16 9* Modified 7/17/79 by B. Greenberg for echo negotiation meters. 16 10* Modified November 1979 by C. Hornig for MCS tracing. 16 11* Modified December 1979 by Robert Coren to add FNP channel lock meter 16 12* Modified February 1980 by Robert Coren to remove all references to circular buffer 16 13* Modified March 1980 by Robert Coren to reorganize metering information 16 14* Modified December 1980 by Robert Coren to add FNP-specific events 16 15* Modified 24 March 1982, W. Olin Sibert, to add mcs_timer support, recoverable_error_severity 16 16* Modified November 1984 by Robert Coren to add tty_area_lock 16 17**/ 16 18 16 19 dcl ttybp ptr, 16 20 tty_buf$ ext static, /* tty buffer segment */ 16 21 tty_ev fixed bin int static options (constant) init (57), /* event used for wait and notify */ 16 22 abs_buf_limit fixed bin (18) static options (constant) init (64), /* minimum number of words we will leave free */ 16 23 input_bpart fixed bin (18) static options (constant) init (2), /* fraction of bleft we will allow for input */ 16 24 output_bpart fixed bin (18) static options (constant) init (4); /* fraction of bleft we will allow for output */ 16 25 16 26 16 27 dcl qblock_size fixed bin int static options (constant) init (16); /* size in words of a delay queue block */ 16 28 dcl bsizec fixed bin int static options (constant) init (60); /* number of characters in smallest buffer */ 16 29 dcl buf_per_second fixed bin int static options (constant) init (10); /* for figuring out max. buffer size based on speed */ 16 30 16 31 dcl FNP_DUMP_PATCH_EVENT fixed bin int static options (constant) init (58); 16 32 dcl FNP_METER_EVENT fixed bin int static options (constant) init (59); 16 33 dcl TTY_AREA_LOCK_EVENT bit (36) aligned int static options (constant) init ("74"b3); 16 34 16 35 dcl 1 tty_buf aligned based (ttybp), /* declaration of tty buffer seg */ 16 36 2 slock bit (36), /* per system lock */ 16 37 2 absorig fixed bin (24), /* abs address of this seg */ 16 38 2 borig bit (18), /* index of start of buffer area */ 16 39 2 bleft fixed bin (18), /* words left in pool */ 16 40 2 free bit (18), /* pointer to start of free pool */ 16 41 2 fnp_config_flags (8) bit (1) unal, /* flag(i) ON if fnp(i) configured */ 16 42 2 padb1 bit (28) unaligned, 16 43 2 lct_ptr ptr, /* pointer to logical channel table */ 16 44 16 45 2 nrawread fixed bin (35), /* number of raw chars input, total */ 16 46 2 nrawwrite fixed bin (35), /* number of raw characters output */ 16 47 2 ninchars fixed bin (35), /* total input chars after conversion */ 16 48 2 noutchars fixed bin (35), /* total output chars before conversion */ 16 49 2 readblocked fixed bin (35), /* number of times go input blocked */ 16 50 2 nblocked fixed bin (35), /* number of times process output blocked */ 16 51 2 minbuf fixed bin (18), /* min output buffer size */ 16 52 2 totbuf fixed bin (35), /* divide by nblocked to get ave buffer size */ 16 53 16 54 2 preconverted fixed bin (35), /* number of converted chars held in tty_buf */ 16 55 2 input_restart fixed bin, /* number of times tty_read had to start over */ 16 56 2 output_restart fixed bin, /* number of times tty_write has had to start over */ 16 57 2 output_buffer_overflow fixed bin, /* number of times tty_write has run out of buffers */ 16 58 2 read_time fixed bin (71), /* total time spent in tty_read */ 16 59 2 write_time fixed bin (71), /* total time spent in tty_write */ 16 60 16 61 2 read_calls fixed bin (35), /* number of calls to tty_read */ 16 62 2 write_calls fixed bin (35), /* number of calls to tty_write */ 16 63 2 bfx fixed bin, /* used in calls to iobm */ 16 64 2 nquits fixed bin (35), /* number of quits */ 16 65 2 space_needed_data, 16 66 3 space_needed bit (1) unal, /* space_needed bit on in at least 1 lcte */ 16 67 3 space_needed_calls fixed bin (34) unal, /* meter of uses of this facility */ 16 68 2 space_lock_count fixed bin (35), /* count of times tty_buf.slock locked */ 16 69 2 space_lock_wait_count fixed bin (35), /* count of times necessary to loop to lock it */ 16 70 2 space_lock_wait_time fixed bin (35), /* total time looped trying to lock it */ 16 71 16 72 2 alloc_calls fixed bin (35), /* total number of allocations performed in tty_buf */ 16 73 2 free_calls fixed bin (35), /* total number of freeings in tty_buf */ 16 74 2 alloc_time fixed bin (35), /* time spent masked in tty_space_man$get entries */ 16 75 2 free_time fixed bin (35), /* time spent masked in tty_space_man$free entries */ 16 76 2 total_alloc_steps fixed bin (35), /* number of steps thru free chain while doing above */ 16 77 2 alloc_failures fixed bin (35), /* number of unsuccessful attempts to allocate space */ 16 78 2 cumulative_input_space fixed bin (71), /* cumulative amount of space allocated for input */ 16 79 16 80 2 cumulative_output_space fixed bin (71), /* cumulative amount of space allocated for output */ 16 81 2 cumulative_control_space fixed bin (71), /* cumulative amount of space allocated by tty_space_man$get_space */ 16 82 2 input_space_updates fixed bin (35), /* number of increments to cumulative_input_space */ 16 83 2 output_space_updates fixed bin (35), /* number of increments to cumulative_output_space */ 16 84 2 control_space_updates fixed bin (35), /* number of increments to cumulative_control_space */ 16 85 2 minimum_free_space fixed bin (18), /* smallest amount of free space ever available */ 16 86 16 87 2 current_input_space fixed bin (18), /* amount of space currently allocated for input */ 16 88 2 current_output_space fixed bin (18), /* amount of space currently allocated for output */ 16 89 2 current_control_space fixed bin (18), /* amount of space currently allocated by get_space */ 16 90 2 tty_lock_calls fixed bin (35), /* number of calls to tty_lock$lock entries */ 16 91 2 found_channel_locked fixed bin (35), /* number of times tty_lock found channel already locked */ 16 92 2 max_wait_time fixed bin (35), /* longest time waited for any channel lock */ 16 93 2 total_wait_time fixed bin (71), /* total amount of time spent waiting for channel locks */ 16 94 16 95 2 echo_neg_time fixed bin (71), /* cumulative time spent doing echo negotiation */ 16 96 2 echo_neg_interrupts fixed bin (35), /* Echo-negotiated shipments */ 16 97 2 echo_neg_r0_chars fixed bin (35), /* Chars echoed by ring 0 */ 16 98 2 echo_neg_mux_chars fixed bin (35), /* Chars echoed by mux */ 16 99 2 echo_neg_sndopt_restarts fixed bin (35), /* Echo reinits */ 16 100 2 echo_neg_mux_nonecho fixed bin (35), 16 101 2 echo_neg_entries fixed bin (35), /* Entries into negotiate */ 16 102 16 103 2 echo_neg_mux_inhibit bit (1) aligned, /* For testing */ 16 104 2 n_queued_interrupts fixed bin (35), /* number of interrupts queued by tty_lock */ 16 105 2 trace unaligned, /* tracing information */ 16 106 3 flags, 16 107 4 enable bit, /* global tracing control */ 16 108 4 default_mode bit, /* whether to trace channels by default */ 16 109 4 read bit, /* read */ 16 110 4 write bit, /* write */ 16 111 4 data bit, /* buffers on reads and writes */ 16 112 4 control bit, /* control, priv_control, and hpriv_control */ 16 113 4 modes bit, /* (get set check)_modes */ 16 114 4 interrupt bit, /* interrupt, interrupt_later */ 16 115 4 init bit, /* init_multiplexer, terminate_multiplexer */ 16 116 4 start bit, /* start, stop */ 16 117 4 shutdown bit, /* shutdown */ 16 118 4 space_man bit, /* tty_space_man$* */ 16 119 4 pad_flags bit (6), 16 120 3 data_offset bit (18), /* offset of tracing data */ 16 121 16 122 2 recoverable_error_severity fixed bin, /* Syserr severity for recoverable MCS errors */ 16 123 16 124 2 timer_lock bit (36) aligned, /* Lock owned by mcs_timer */ 16 125 2 next_timer_offset bit (18) aligned, /* Offset of next timer to come due */ 16 126 2 timer_count fixed bin, /* Number of timers outstanding */ 16 127 2 timer_process bit (36) aligned, /* Who is doing timers? */ 16 128 16 129 2 timer_ev_chn fixed bin (71), /* How get get him */ 16 130 2 timer_lock_wait_time fixed bin (71), /* CPU time spent spinning on timer lock */ 16 131 16 132 2 timer_lock_count fixed bin (35), /* Number of times timer lock locked */ 16 133 2 timer_lock_wait_count fixed bin (35), /* Number of times imer lock waited on */ 16 134 2 timer_call_time fixed bin (71), /* CPU time spent in call side timer operations */ 16 135 16 136 2 timer_polling_time fixed bin (71), /* CPU time spent polling (including channel_manager) */ 16 137 2 timer_set_calls fixed bin (35), /* Number of calls to mcs_timer$set, set_wired */ 16 138 2 timer_reset_calls fixed bin (35), /* Number of calls to mcs_timer$reset, reset_wired */ 16 139 16 140 2 timer_change_calls fixed bin (35), /* Number of calls to mcs_timer$change, change_wired */ 16 141 2 timer_poll_calls fixed bin (35), /* Number of calls to mcs_timer$poll */ 16 142 2 timer_error_calls fixed bin (35), /* Number of mcs_timer calls ending with recoverable errors */ 16 143 2 timer_duplicate_pollings fixed bin (35), /* Number of timer polling found in progress on other CPU */ 16 144 16 145 2 tty_area_lock like hc_fast_lock, /* to prevent contention in allocating/freeing in tty_area */ 16 146 16 147 2 pad2 (13) fixed bin (35), 16 148 16 149 2 free_space fixed bin; /* start of free space region */ 16 150 16 151 17 1 /* BEGIN INCLUDE FILE...hc_fast_lock.incl.pl1 */ 17 2 17 3 /* Created November 1984 by Robert Coren to replace hc_lock.incl.pl1 */ 17 4 17 5 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 17 6 17 7 /* format: style3 */ 17 8 17 9 declare lock_ptr pointer; 17 10 declare 1 hc_fast_lock aligned based (lock_ptr), 17 11 2 pid bit (36) aligned, /* holder of lock */ 17 12 2 event bit (36) aligned, /* event associated with lock */ 17 13 2 flags aligned, 17 14 3 notify_sw bit (1) unaligned, 17 15 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 17 16 17 17 /* END INCLUDE FILE...hc_fast_lock.incl.pl1 */ 16 152 16 153 16 154 /* END INCLUDE FILE ... tty_buf.incl.pl1 */ 1346 18 1 /* Begin include file fnp_mpx_msg_.incl.pl1 BIM 83-12-20 */ 18 2 /* Message from ring 0 fnp mpx to user ring mpx manager */ 18 3 /* format: style3 */ 18 4 18 5 dcl fnp_msg_ptr pointer; 18 6 dcl 1 fnp_msg aligned based (fnp_msg_ptr), 18 7 2 fnp_no fixed bin (17) unal, 18 8 2 state fixed bin (17) unal, 18 9 2 flags unaligned, 18 10 3 deconfigured bit, 18 11 3 pad bit (35); 18 12 18 13 /* End include file fnp_mpx_msg_.incl.pl1 */ 1347 1348 1349 1350 1351 1352 /* Begin message documentation invisible 1353* 1354* This message documentation is designated "invisible" and not in the normal 1355* format so it will not be assigned to the released set of message 1356* documentation. This software is not to be released for customer use. 1357* 1358* Message: 1359* Loading FNP X, CORE_IMAGE VERSION 1360* 1361* S: $info 1362* 1363* T: Answering service initialization and each subsequent FNP 1364* bootload. 1365* 1366* M: Loading of FNP X has begun with a core image named CORE_IMAGE 1367* (normally "mcs") of version number VERSION. 1368* 1369* A: $ignore 1370* 1371* 1372* Message: 1373* uncp_util$wire: FNP T already wired (trace) 1374* 1375* 1376* Message: 1377* uncp_util$wire: failed. REASON (trace) 1378* 1379* 1380* Message: 1381* uncp_util$load: FNP load already in progress for FNP T. 1382* 1383* 1384* Message: 1385* uncp_util$load: FNP T not wired. 1386* 1387* 1388* Message: 1389* uncp_util$load: FNP T is running. (trace) 1390* 1391* 1392* Message: 1393* uncp_util$load: FNP T is running T&D. 1394* 1395* 1396* Message: 1397* uncp_util$load: Error loading FNP T. REASON (trace) 1398* 1399* 1400* Message: 1401* uncp_util$unwire: Unwire failed for FNP T. REASON 1402* 1403* 1404* Message: 1405* uncp_util$configure: FNP T already configured. 1406* 1407* 1408* Message: 1409* uncp_util: FNP T added to configuration^[ by NAME^]. 1410* 1411* 1412* Message: 1413* FNP T deleted from configuration^[ by ^a^]. 1414* 1415* 1416* Message: 1417* uncp_util$fdump_seg_io: IO_OP for CALLER (trace) 1418* 1419* 1420* Message: 1421* uncp_util: channel assignment failed for FNP ^T REASON. (tandd) 1422* 1423* 1424* Message: 1425* uncp_util: ioam_$assign failed for FNP T. REASON (tandd) 1426* 1427* 1428* Message: 1429* uncp_util: assigned FNP T to NAME for T & D. 1430* 1431* 1432* 1433* Message: 1434* uncp_util: io channel unassignment failed for FNP T. (tandd) 1435* 1436* 1437* Message: 1438* uncp_util: releasing FNP T from NAME (tandd) 1439* 1440* 1441* Message: 1442* uncp_util$validate_assigned_ret (CALLER): IO manager assignment lacking. (trace) 1443* 1444* 1445* Message: 1446* uncp_util$ENTRY: Invalid call for FNP INDEX. (not in cdeck) 1447* 1448* 1449* Message: 1450* uncp_util$ENTRY: Tracing call for fnp T. 1451* 1452* 1453* Message: 1454* uncp_util$ENTRY: Invalid call. (trace) 1455* 1456* 1457* Message: 1458* uncp_util: Could not unassign FNP T at reassign_interrupt. 1459* 1460* 1461* Message: 1462* uncp_util: force detaching FNP T from process PID. 1463* 1464* 1465* Message: 1466* uncp_util: io channel unassignment failed for FNP T. (tandd) 1467* 1468* 1469* Message: 1470* uncp_util: lock_fnp called with lock locked. 1471* 1472* 1473* Message: 1474* uncp_util$ENTRY: Debugging stop (type go to continue). 1475* 1476* End message documentation invisible */ 1477 1478 1479 end uncp_util; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0827.2 uncp_util.pl1 >spec>install>1112>uncp_util.pl1 1331 1 01/30/85 1523.9 aste.incl.pl1 >ldd>include>aste.incl.pl1 1332 2 10/31/84 1315.5 config_prph_fnp_card.incl.pl1 >ldd>include>config_prph_fnp_card.incl.pl1 1333 3 10/20/82 0938.5 dn355_mailbox.incl.pl1 >ldd>include>dn355_mailbox.incl.pl1 1334 4 10/20/82 0938.6 mailbox_ops.incl.pl1 >ldd>include>mailbox_ops.incl.pl1 1335 5 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 1336 6 10/26/89 2011.9 dn355_data.incl.pl1 >ldd>include>dn355_data.incl.pl1 1337 7 07/21/88 2036.0 pcb.incl.pl1 >ldd>include>pcb.incl.pl1 1338 8 02/23/79 1435.2 fnp_dump_seg.incl.pl1 >ldd>include>fnp_dump_seg.incl.pl1 1339 9 07/21/88 2036.0 fnp_types.incl.pl1 >ldd>include>fnp_types.incl.pl1 1340 10 07/11/84 0937.3 io_manager_dcls.incl.pl1 >ldd>include>io_manager_dcls.incl.pl1 1341 11 01/06/85 1422.5 io_page_tables.incl.pl1 >ldd>include>io_page_tables.incl.pl1 11-35 12 05/13/82 1421.2 io_ptw.incl.pl1 >ldd>include>io_ptw.incl.pl1 1342 13 07/11/84 0937.3 io_chnl_util_dcls.incl.pl1 >ldd>include>io_chnl_util_dcls.incl.pl1 1343 14 03/27/82 0430.2 ptw.l68.incl.pl1 >ldd>include>ptw.l68.incl.pl1 1345 15 05/17/85 0615.7 syserr_constants.incl.pl1 >ldd>include>syserr_constants.incl.pl1 1346 16 01/06/85 1422.1 tty_buf.incl.pl1 >ldd>include>tty_buf.incl.pl1 16-152 17 01/06/85 1422.1 hc_fast_lock.incl.pl1 >ldd>include>hc_fast_lock.incl.pl1 1347 18 07/11/84 0937.3 fnp_mpx_msg_.incl.pl1 >ldd>include>fnp_mpx_msg_.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ANNOUNCE 000050 constant fixed bin(17,0) initial dcl 15-7 set ref 307* 315* 323* 405* 438* 445* 459* 485* 499* 559* 730* 778* 786* 791* 847* 850* 977* 1000* 1017* 1038* 1194* 1319* BIT_75 constant bit(6) initial packed unaligned dcl 182 ref 907 960 BIT_76 constant bit(6) initial packed unaligned dcl 183 ref 915 946 CRASH 000073 constant fixed bin(17,0) initial dcl 15-7 set ref 1098* 1209* 1250* DN6670 constant fixed bin(17,0) initial dcl 9-19 ref 938 EMER_CELL constant fixed bin(17,0) initial dcl 179 ref 424 FIRST_BOOTLOAD_PAGEX constant fixed bin(17,0) initial dcl 6-166 ref 1304 FIRST_TTY_BUF_PAGEX constant fixed bin(17,0) initial dcl 6-167 ref 1288 FNP_DOWN constant fixed bin(17,0) initial dcl 174 ref 543 HIGH_MBX_PTW constant fixed bin(17,0) initial dcl 186 ref 1278 LOW_MBX_PTW constant fixed bin(17,0) initial dcl 185 ref 1278 MIN_TALLY constant fixed bin(17,0) initial dcl 181 ref 943 NORM_CELL constant fixed bin(17,0) initial dcl 178 ref 423 SECONDS_30 000002 constant fixed bin(35,0) initial dcl 180 ref 701 SIZE_1024 constant fixed bin(17,0) initial dcl 177 ref 360 SIZE_256 constant fixed bin(17,0) initial dcl 184 ref 1048 1265 Tracer parameter char packed unaligned dcl 1248 set ref 1246 1250* a_absadr parameter fixed bin(24,0) dcl 72 set ref 412 420* a_code parameter fixed bin(35,0) dcl 70 set ref 295 334* 344* 397* 408* 412 427* 430 449* 452 465* 476 502* 512 562* 565 572* 576 684* 748 798* 804 832 852* 858 867* 873 884* 890 899* 905 913 a_count parameter fixed bin(17,0) dcl 69 ref 905 913 921 a_data_ptr parameter pointer dcl 61 ref 295 303 a_devx parameter fixed bin(17,0) dcl 64 ref 804 807 a_diaop parameter bit(6) dcl 692 set ref 689 697* a_dummy parameter bit(36) dcl 726 ref 721 a_ev_chan parameter fixed bin(71,0) dcl 71 ref 748 794 a_fnp_addr parameter fixed bin(15,0) dcl 77 ref 905 913 923 a_fnp_mem_size parameter fixed bin(17,0) dcl 66 ref 576 592 a_fnp_no parameter fixed bin(17,0) dcl 65 set ref 295 302 412 417 430 433 452 455 476 479 512 515 565 569 576 590 721 730* 748 751 832 834 858 860 873 875 890 892 905 913 916 a_fnp_type parameter fixed bin(17,0) dcl 67 ref 576 591 905 913 922 a_ints parameter bit(2) dcl 75 set ref 890 896* a_level parameter fixed bin(3,0) dcl 76 set ref 721 730* 873 a_ptr parameter pointer dcl 68 ref 576 593 905 913 920 abs_addr_string 000125 automatic bit(24) packed unaligned dcl 92 set ref 1061* 1131 1133 abs_address 000127 automatic fixed bin(26,0) dcl 94 set ref 1059* 1061 absadr 000034 constant entry external dcl 128 ref 420 1059 addr builtin function dcl 112 ref 341 375 376 395 395 598 599 602 602 682 682 728 729 764 808 809 812 812 816 924 929 929 933 935 935 946 960 995 1015 1183 1183 1198 1198 1213 1213 1226 1226 1239 1239 1279 1287 1287 1291 1310 addrel builtin function dcl 112 ref 946 960 address 0(02) based fixed bin(16,0) level 2 packed packed unsigned unaligned dcl 12-4 set ref 1280* 1292* 1311* address_mode based bit(3) level 2 packed packed unaligned dcl 195 set ref 940* addwordno builtin function dcl 112 ref 1289 1305 aste based structure level 1 dcl 1-11 astep 000156 automatic pointer dcl 1-9 set ref 1057* 1058* 1069* 1070* 1287* 1289 1290 1305 auto_absadr 000102 automatic fixed bin(24,0) dcl 81 set ref 307* 1306* auto_fnp_msg 000146 automatic structure level 1 dcl 105 set ref 546 available 66 based bit(1) level 3 packed packed unaligned dcl 6-67 set ref 482 490* 519 525* 1086 baseno builtin function dcl 112 ref 1057 1057 1069 1069 baud_rate 4 based fixed bin(17,0) array level 3 in structure "load_info" dcl 206 in procedure "uncp_util" ref 347 baud_rate 2 based fixed bin(17,0) level 2 in structure "pcb" packed packed unaligned dcl 7-27 in procedure "uncp_util" set ref 347* bin builtin function dcl 112 ref 1290 bit builtin function dcl 112 ref 1061 boot_ev_chan 36 based fixed bin(71,0) level 2 dcl 6-67 set ref 357* 547* 794* 1190* boot_process_id 40 based bit(36) level 2 dcl 6-67 set ref 358* 547* 789* 842* 1034 1186* 1189* bootloading 30(01) based bit(1) level 3 packed packed unaligned dcl 6-67 set ref 312 361* 571* 769 caller parameter char(32) packed unaligned dcl 1029 in procedure "validate_fnp_tandd_ret" set ref 1026 1031* 1038* caller parameter char(32) packed unaligned dcl 972 in procedure "validate_assigned_ret" set ref 969 977* caller parameter char(32) packed unaligned dcl 991 in procedure "validate_fnp_ret" set ref 988 1000* 1003* 1017* cent 000100 automatic fixed bin(15,0) initial unsigned dcl 62 set ref 62* channel_desc based structure level 2 packed packed unaligned dcl 7-27 chx 000310 automatic fixed bin(35,0) level 2 dcl 1129 set ref 1141* cleanup 000150 stack reference condition dcl 188 ref 600 810 927 clock builtin function dcl 112 ref 694 701 cmd parameter bit(6) dcl 1128 ref 1123 1135 code 000123 automatic fixed bin(35,0) dcl 90 in procedure "uncp_util" set ref 310* 314* 322* 386* 392* 397 402 405* 408 420* 421 427 442* 443 445* 449 462* 465 484* 495 502 521* 554 562 572 684 703* 711* 718* 761* 762 771* 775* 776 778* 783* 784 786* 794 798 846* 847 847* 935* 936 949 958 965* 976* 977* 999* 1000* 1010* 1014* 1032* 1034* 1036 1038* 1058* 1059 1059* 1061 1183* 1185 1193* 1194 1194* code parameter fixed bin(35,0) dcl 1263 in procedure "get_page_table" set ref 1256 1266* 1268 code 000346 automatic fixed bin(35,0) dcl 1207 in procedure "lock_fnp" set ref 1222* 1223 code parameter fixed bin(35,0) dcl 1083 in procedure "assign_interrupt" set ref 1075 1089* 1097* 1098 1098* 1106 1108* command 0(30) based bit(6) level 3 packed packed unaligned dcl 3-12 set ref 363* 1135* config_$find_2 000010 constant entry external dcl 118 ref 497 557 config_flags 66 based structure level 2 dcl 6-67 config_locked 000143 automatic bit(1) initial dcl 102 set ref 102* 1209 1211* 1214* 1229* 1239 1241* configuration_lock based structure level 2 dcl 6-52 set ref 1213 1213 1226 1226 1239 1239 crash_data 6 based structure level 2 dcl 3-12 csl 12 based bit(9) level 2 packed packed unaligned dcl 1-11 ref 1290 d7100 based structure level 1 dcl 222 data 2 based bit(18) array level 2 packed packed unaligned dcl 8-10 set ref 933 946 960 data_ptr 000130 automatic pointer dcl 95 set ref 933* 938 940 1048 1050 datanet_info based structure level 1 dcl 6-52 datanet_mbx based structure level 1 dcl 3-12 debug_stop 6 based bit(1) level 2 dcl 6-52 ref 402 443 485 977 1000 1038 1250 deconfigured 1 000146 automatic bit(1) level 3 packed packed unaligned dcl 105 set ref 545* devx 000124 automatic fixed bin(17,0) dcl 91 in procedure "uncp_util" set ref 761* 764 807* 817 devx based fixed bin(17,0) level 3 in structure "pcb" packed packed unaligned dcl 7-27 in procedure "uncp_util" ref 342 devx 3 based fixed bin(17,0) array level 3 in structure "load_info" dcl 206 in procedure "uncp_util" ref 342 dia_pcw based structure level 2 dcl 3-12 set ref 1139* 1139 1139 divide builtin function dcl 112 ref 1048 dn355_data$ 000142 external static fixed bin(17,0) dcl 6-47 set ref 729 808 995 dn355_util$compute_parity 000032 constant entry external dcl 127 ref 1139 dump_355_control based structure level 1 dcl 195 dump_6670_control based structure level 1 dcl 200 emergency_int_cell parameter fixed bin(17,0) dcl 74 set ref 412 424* entries 3 based structure array level 2 dcl 206 error_table_$bad_mpx_load_data 000110 external static fixed bin(35,0) dcl 151 ref 334 344 error_table_$invalid_state 000106 external static fixed bin(35,0) dcl 151 ref 314 322 771 1032 error_table_$io_configured 000114 external static fixed bin(35,0) dcl 151 ref 484 error_table_$io_no_permission 000104 external static fixed bin(35,0) dcl 151 ref 1034 error_table_$io_not_assigned 000120 external static fixed bin(35,0) dcl 151 ref 976 error_table_$io_not_configured 000116 external static fixed bin(35,0) dcl 151 ref 521 1089 error_table_$io_not_defined 000122 external static fixed bin(35,0) dcl 151 ref 999 1010 error_table_$no_io_interrupt 000112 external static fixed bin(35,0) dcl 151 ref 703 ev_chan based fixed bin(71,0) level 2 dcl 206 ref 357 fault_code 6 based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 3-12 set ref 369* fault_word 7(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 3-12 set ref 372* fdump 1(01) based bit(1) level 3 packed packed unaligned dcl 8-10 set ref 695* 700 714 730* 734 736* fdump_seg_event 000001 constant char(4) initial dcl 187 set ref 395* 602* 682* 812* 929* 935* 1183* 1198* fixed builtin function dcl 112 ref 1050 1057 1057 1061 1069 1069 flags 1 000146 automatic structure level 2 in structure "auto_fnp_msg" packed packed unaligned dcl 105 in procedure "uncp_util" set ref 544* flags 2(09) based structure level 2 in structure "lcte" packed packed unaligned dcl 5-20 in procedure "uncp_util" flags 1 based structure level 2 in structure "fnp_dump_seg" dcl 8-10 in procedure "uncp_util" flags 30 based structure level 2 in structure "fnp_info" dcl 6-67 in procedure "uncp_util" set ref 492* fnp_addr 000106 automatic fixed bin(15,0) dcl 85 set ref 923* fnp_address 0(03) based fixed bin(15,0) level 3 packed packed unsigned unaligned dcl 222 set ref 1048* fnp_dump_ptr 000174 automatic pointer dcl 8-6 set ref 376* 395 395 599* 602 602 602 682 682 695 700 714 728* 730 734 736 809* 812 812 812 924* 929 929 929 933 935 935 946 960 1057 1057 1059* 1069 1069 1183 1183 1198 1198 fnp_dump_seg based structure level 1 dcl 8-10 fnp_dump_seg$ 000144 external static fixed bin(17,0) dcl 8-8 set ref 376 599 728 809 924 fnp_id 7 based structure level 2 dcl 6-67 fnp_info based structure level 1 dcl 6-67 fnp_mem_size 000104 automatic fixed bin(17,0) dcl 83 in procedure "uncp_util" set ref 360 592* fnp_mem_size 42 based fixed bin(18,0) level 2 in structure "fnp_info" unsigned dcl 6-67 in procedure "uncp_util" set ref 360* fnp_msg based structure level 1 dcl 18-6 fnp_no 000103 automatic fixed bin(17,0) dcl 82 in procedure "uncp_util" set ref 302* 307* 417* 433* 455* 479* 515* 540* 569* 590* 751* 758* 775* 815* 816* 834* 846* 860* 875* 892* 916* 997 997 1000* 1007 1015 1104 1193* fnp_no 000146 automatic fixed bin(17,0) level 2 in structure "auto_fnp_msg" packed packed unaligned dcl 105 in procedure "uncp_util" set ref 542* fnp_number 7(09) based fixed bin(9,0) level 3 packed packed unsigned unaligned dcl 6-67 ref 542 fnp_tag 7 based char(1) level 3 packed packed unaligned dcl 6-67 set ref 315* 323* 405* 438* 445* 459* 485* 497 499* 557 559* 778* 786* 847* 850* 1017* 1098* 1186* 1194* fnp_tally 000133 automatic fixed bin(17,0) dcl 97 set ref 943* 944 946 960 963 1050 fnp_type 000105 automatic fixed bin(17,0) dcl 84 set ref 591* 922* 938 fnpp 000166 automatic pointer dcl 6-50 set ref 312 315 320 323 331 338 341 357 358 359 360 361 379* 405 420 436 436 438 445 457 459 462 463 464 482 485 490 491 492 497 499 519 525 527 532 542 547 547 557 559 571 571 708 708 708 759 764 769 769 769 778 783 786 789 790 790 792 794 816* 817 817 842 843 844 844 845 847 850 880 880 896 896 897 897 951 951 952 956 956 974 1009* 1015* 1016 1017 1032 1034 1086 1086 1095 1097 1098 1101 1104 1104 1109 1141 1149 1186 1186 1189 1190 1191 1192 1192 1194 1215 1217 1222* 1236* 1266 1270 1270 1307 1309 frame based fixed bin(14,0) array level 2 packed packed unsigned unaligned dcl 1261 ref 1292 1311 get_fnp_name_ 000022 constant entry external dcl 123 ref 758 get_ptrs_$given_segno 000056 constant entry external dcl 137 ref 1057 1069 1287 handler parameter entry variable dcl 1080 set ref 1075 1104* hc_fast_lock based structure level 1 dcl 17-10 i 000126 automatic fixed bin(17,0) dcl 93 set ref 340* 341 342 347 348* ic 6(18) based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 3-12 set ref 370* ima 000310 automatic structure level 1 dcl 1129 set ref 1143* in 10 based structure level 3 in structure "lcte" dcl 5-20 in procedure "uncp_util" in 2 based structure level 2 in structure "saved_meters" dcl 5-68 in procedure "uncp_util" in 30 based structure array level 4 in structure "lct" dcl 5-11 in procedure "uncp_util" infop 000164 automatic pointer dcl 6-49 set ref 307 323 402 402 443 443 485 485 729* 730 808* 815 816 977 977 995* 1000 1000 1015 1017 1038 1038 1213 1213 1226 1226 1239 1239 1250 1317 init_complete 000060 constant fixed bin(8,0) initial dcl 4-24 set ref 379* initialized 2(10) based bit(1) level 3 packed packed unaligned dcl 5-20 ref 1217 io_chanid 10 based char(8) level 2 dcl 6-67 set ref 1104* io_manager$assign 000146 constant entry external dcl 10-10 ref 1104 io_manager$connect_direct 000152 constant entry external dcl 10-32 ref 1143 io_manager$mask 000154 constant entry external dcl 10-38 ref 1149 io_manager$unassign 000150 constant entry external dcl 10-20 ref 1097 io_manager_arg based structure level 1 dcl 10-50 io_manager_assigned 66(01) based bit(1) level 3 packed packed unaligned dcl 6-67 set ref 491* 527 974 1086 1095 1101* 1109* io_manager_chx 12 based fixed bin(35,0) level 2 dcl 6-67 set ref 783 817 845 1097* 1104* 1141 1149* io_page_table_size 000200 automatic fixed bin(17,0) dcl 11-30 set ref 1265* 1266 1272 io_ptw based structure level 1 dcl 12-4 io_ptwp 000202 automatic pointer dcl 12-3 set ref 1279* 1280 1281 1282 1291* 1292 1293 1294 1310* 1311 1312 1313 ioam_$assign 000024 constant entry external dcl 124 ref 783 ioam_$unassign 000026 constant entry external dcl 125 ref 845 ioi_page_table$get 000036 constant entry external dcl 129 ref 1266 ioi_page_table$ptx_to_ptp 000040 constant entry external dcl 130 ref 1270 ioi_page_table$put 000042 constant entry external dcl 131 ref 462 iom_code 000300 automatic fixed bin(35,0) dcl 1082 set ref 1104* 1108 iom_fault_status 7 based fixed bin(18,0) level 3 packed packed unsigned unaligned dcl 3-12 set ref 371* ioptp 000176 automatic pointer dcl 11-29 set ref 1270* 1272 1279 1291 1307* 1310 1319 1319 1319 l68_core_ptw based structure level 1 dcl 14-4 l68_ptw based structure level 1 dcl 14-9 l68_ptw_flags based structure level 1 packed packed unaligned dcl 14-17 last_mbx_req_count 3 based fixed bin(17,0) level 2 dcl 3-12 set ref 366* lct based structure level 1 dcl 5-11 lcte based structure level 1 dcl 5-20 lcte_array 20 based structure array level 2 dcl 5-11 set ref 764 lcte_ptr 32 based pointer level 2 dcl 6-67 set ref 759 764* 1215 1217 line_number 0(08) based structure level 2 packed packed unaligned dcl 3-36 line_type 2(18) based fixed bin(17,0) level 2 in structure "pcb" packed packed unaligned dcl 7-27 in procedure "uncp_util" set ref 348* line_type 5 based fixed bin(17,0) array level 3 in structure "load_info" dcl 206 in procedure "uncp_util" ref 348 load_info based structure level 1 dcl 206 load_info_ptr 000140 automatic pointer dcl 100 set ref 303* 331 340 342 347 348 357 lock based bit(36) level 2 dcl 8-10 set ref 395 395 602 602 602 682 682 812 812 812 929 929 929 935 935 1183 1183 1198 1198 lock$lock_fast 000072 constant entry external dcl 143 ref 1213 lock$unlock 000076 constant entry external dcl 145 ref 395 602 682 812 929 1198 lock$unlock_fast 000074 constant entry external dcl 144 ref 1226 1239 lock$wait 000070 constant entry external dcl 142 ref 935 1183 locked 000142 automatic bit(1) initial dcl 101 set ref 101* 1209 1211* 1225* 1236 1238* mailbox_requests 1 based fixed bin(17,0) level 2 dcl 3-12 set ref 364* max_no_355s constant fixed bin(17,0) initial dcl 6-45 ref 6-52 997 mbx_no 0(24) based bit(6) level 3 packed packed unaligned dcl 3-12 set ref 1133* mbx_pt based pointer level 2 dcl 6-67 set ref 420* 1016 mbx_used_flags 5 based structure level 2 dcl 3-12 set ref 367* mbxp 000162 automatic pointer dcl 3-100 set ref 363 364 365 366 367 369 370 371 372 1016* 1131 1133 1135 1139 1139 1139 message 000144 automatic fixed bin(71,0) dcl 104 set ref 546* 547* meters 6 based structure level 2 in structure "lcte" dcl 5-20 in procedure "uncp_util" meters 26 based structure array level 3 in structure "lct" dcl 5-11 in procedure "uncp_util" min builtin function dcl 112 ref 943 n_pages_wired 65 based fixed bin(17,0) level 2 dcl 6-67 ref 1309 n_pcbs 000170 automatic fixed bin(17,0) dcl 7-22 set ref 338* no_entries 2 based fixed bin(17,0) level 2 dcl 206 ref 331 340 no_of_355s 4 based fixed bin(17,0) level 2 dcl 6-52 ref 815 no_of_channels 6 based fixed bin(17,0) level 2 dcl 6-67 ref 331 338 norm_int_cell parameter fixed bin(17,0) dcl 73 set ref 412 423* null builtin function dcl 112 ref 436 464 759 1009 1104 1142 1215 nwords 000122 automatic fixed bin(17,0) dcl 89 set ref 921* 942 943 944* 944 offset 000132 automatic fixed bin(17,0) dcl 96 set ref 941* 946 960 963* 963 1048 opcode 000107 automatic bit(6) dcl 86 set ref 907* 915* 946 954* 960 page_table based structure array level 1 dcl 11-32 set ref 1272* pagex 000364 automatic fixed bin(17,0) dcl 1259 set ref 1288* 1291 1295* 1295 1304* 1306 1310 1314* 1314 pc_abs$unwire_abs 000102 constant entry external dcl 147 ref 1070 pc_abs$wire_abs_contig 000100 constant entry external dcl 146 ref 1058 pcb based structure level 1 dcl 7-27 pcb_array based structure array level 1 dcl 7-25 set ref 341 pcb_array_ptr 2 based pointer level 2 dcl 6-67 ref 341 pcbp 000172 automatic pointer dcl 7-23 set ref 341* 342 347 348 pcw based structure level 2 dcl 222 pds$process_group_id 000126 external static char(32) packed unaligned dcl 164 set ref 499* 559* 791* 850* pds$processid 000124 external static bit(36) packed unaligned dcl 163 ref 358 499 559 602 789 812 929 1034 per_datanet 22 based structure array level 2 dcl 6-52 set ref 816 1015 priv_channel_manager$get_devx 000030 constant entry external dcl 126 ref 761 prph_fnp_card based structure level 1 dcl 2-6 prph_fnp_cardp 000160 automatic pointer dcl 2-4 set ref 497* 498 557* 558 ptp 4 000310 automatic pointer level 2 in structure "ima" dcl 1129 in procedure "connect_to_dia" set ref 1142* ptp 000366 automatic pointer dcl 1262 in procedure "get_page_table" set ref 1289* 1292 1305* 1311 ptp 71 based pointer level 2 in structure "fnp_info" packed packed unaligned dcl 6-67 in procedure "uncp_util" set ref 436 464* 1270* 1307 ptw based structure array level 2 dcl 11-32 set ref 1279 1291 1310 1319 1319 1319 ptx 70 based fixed bin(17,0) level 2 dcl 6-67 set ref 436 457 462* 463* 1266* 1270* px 000365 automatic fixed bin(17,0) dcl 1260 set ref 1278* 1279 1280* 1290* 1292* 1309* 1311* 1317* 1319 1319* 1319 1319* pxss$addevent 000046 constant entry external dcl 133 ref 696 707 pxss$delevent 000050 constant entry external dcl 134 ref 716 pxss$notify 000044 constant entry external dcl 132 ref 737 pxss$ring_0_wakeup 000054 constant entry external dcl 136 ref 547 pxss$wait 000052 constant entry external dcl 135 ref 698 714 running 30(02) based bit(1) level 3 packed packed unaligned dcl 6-67 set ref 320 571* 769 seg_pt based structure array level 1 dcl 1261 segno builtin function dcl 112 ref 1287 1287 segptr 000120 automatic pointer dcl 88 set ref 593* 920* 946 960 sst$astsize 000136 external static fixed bin(17,0) dcl 168 ref 1289 1305 start_time 000134 automatic fixed bin(71,0) dcl 98 set ref 694* 701 state 5 based char(4) level 2 in structure "prph_fnp_card" dcl 2-6 in procedure "uncp_util" set ref 498* 558* state 0(18) 000146 automatic fixed bin(17,0) level 2 in structure "auto_fnp_msg" packed packed unaligned dcl 105 in procedure "uncp_util" set ref 543* string builtin function dcl 112 set ref 367* 1139* 1139 1139 sub_mbx based structure level 1 dcl 3-36 substr builtin function dcl 112 ref 1131 1133 sys_info$page_size 000140 external static fixed bin(17,0) dcl 169 ref 1266 1306 syserr 000064 constant entry external dcl 140 ref 307 315 323 438 459 485 499 559 730 791 850 1017 1186 1209 1250 1319 syserr$error_code 000066 constant entry external dcl 141 ref 405 445 778 786 847 977 1000 1038 1098 1194 t_and_d_in_progress 30(08) based bit(1) level 3 packed packed unaligned dcl 6-67 set ref 532 708 769 792* 817 843* 1032 1191* t_and_d_lev_3_occurred 30(09) based bit(1) level 3 packed packed unaligned dcl 6-67 set ref 708 790* 844* 880* 896 897* 951* 956* 1192* t_and_d_lev_7_occurred 30(10) based bit(1) level 3 packed packed unaligned dcl 6-67 set ref 708 790* 844* 880* 896 897* 951* 956* 1192* t_and_d_notify_requested 30(11) based bit(1) level 3 packed packed unaligned dcl 6-67 set ref 952* tally 0(24) based fixed bin(12,0) level 3 packed packed unsigned unaligned dcl 222 set ref 1050* tally_words based bit(36) array dcl 193 set ref 946* 946 960* 960 tc_data$initializer_id 000130 external static bit(36) dcl 165 ref 499 559 temp_fnp_name 000110 automatic char(32) packed unaligned dcl 87 set ref 758* 761* 791* term_inpt_mpx_wd 2 based bit(36) level 2 dcl 3-12 set ref 365* trace 5 based bit(1) level 2 dcl 6-52 ref 307 323 402 443 485 730 977 1000 1017 1038 1317 tty_buf$ 000156 external static fixed bin(17,0) dcl 16-19 set ref 375 598 1287 1287 tty_buf$fnp_config_flags 000132 external static bit(1) array packed unaligned dcl 166 ref 1007 tty_buf$lct_ptr 000134 external static pointer dcl 167 ref 764 tty_ev 000000 constant fixed bin(17,0) initial dcl 16-19 set ref 696* 707* 716* 737* ttybp 000204 automatic pointer dcl 16-19 set ref 375* 598* un 000101 automatic fixed bin(12,0) initial unsigned dcl 63 set ref 63* uncp$interrupt 000060 constant entry external dcl 138 ref 310 310 392 392 uncp$send_global_wcd 000062 constant entry external dcl 139 ref 379 uncp_multiplexer$assign 000012 constant entry external dcl 119 ref 775 uncp_multiplexer$fnp_lock 000016 constant entry external dcl 121 ref 1222 uncp_multiplexer$fnp_unlock 000020 constant entry external dcl 122 ref 1236 uncp_multiplexer$unassign 000014 constant entry external dcl 120 ref 540 846 1193 unlock_dump_seg 000336 automatic bit(1) dcl 1181 set ref 1185* 1198 unpaged 0(18) based bit(1) level 2 packed packed unaligned dcl 200 set ref 938* unspec builtin function dcl 112 set ref 546* 546 1272* 1319 1319 1319 valid 0(33) based bit(1) level 2 packed packed unaligned dcl 12-4 set ref 1282* 1294* 1313* version 000136 automatic char(4) packed unaligned dcl 99 in procedure "uncp_util" set ref 355* 359 version 41 based char(4) level 2 in structure "fnp_info" dcl 6-67 in procedure "uncp_util" set ref 359* write 0(31) based bit(1) level 2 packed packed unaligned dcl 12-4 set ref 1281* 1293* 1312* zero based bit(18) level 3 packed packed unaligned dcl 3-12 set ref 1131* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. BEEP internal static fixed bin(17,0) initial dcl 15-7 Block_xfer internal static fixed bin(8,0) initial dcl 4-89 Break internal static fixed bin(8,0) initial dcl 4-89 Breakall internal static fixed bin(8,0) initial dcl 4-89 Breakchar internal static fixed bin(8,0) initial dcl 4-89 Chngstring internal static fixed bin(8,0) initial dcl 4-89 Crecho internal static fixed bin(8,0) initial dcl 4-89 DN355 internal static fixed bin(17,0) initial dcl 9-19 DN6600 internal static fixed bin(17,0) initial dcl 9-19 DN7100 internal static fixed bin(17,0) initial dcl 9-19 Dumpinput internal static fixed bin(8,0) initial dcl 4-89 Dumpoutput internal static fixed bin(8,0) initial dcl 4-89 Echoplex internal static fixed bin(8,0) initial dcl 4-89 Eight_bit_in internal static fixed bin(8,0) initial dcl 4-89 Eight_bit_out internal static fixed bin(8,0) initial dcl 4-89 Errormsg internal static fixed bin(8,0) initial dcl 4-89 FNP_DUMP_PATCH_EVENT internal static fixed bin(17,0) initial dcl 16-31 FNP_METER_EVENT internal static fixed bin(17,0) initial dcl 16-32 Fullduplex internal static fixed bin(8,0) initial dcl 4-89 Hndlquit internal static fixed bin(8,0) initial dcl 4-89 IO_PAGE_TABLE_LOCK_EVENT internal static char(4) initial packed unaligned dcl 11-37 Input_flow_control internal static fixed bin(8,0) initial dcl 4-89 JUST_LOG internal static fixed bin(17,0) initial dcl 15-7 LOG internal static fixed bin(17,0) initial dcl 15-7 Lfecho internal static fixed bin(8,0) initial dcl 4-89 Listen internal static fixed bin(8,0) initial dcl 4-89 Lock internal static fixed bin(8,0) initial dcl 4-89 MAX_IO_PAGE_TABLE_SEG_PAGES internal static fixed bin(9,0) initial dcl 11-39 Meter internal static fixed bin(8,0) initial dcl 4-89 Msg internal static fixed bin(8,0) initial dcl 4-89 Nocontrol internal static fixed bin(8,0) initial dcl 4-89 Odd_parity internal static fixed bin(8,0) initial dcl 4-89 Output_flow_control internal static fixed bin(8,0) initial dcl 4-89 PTS_PER_PAGE internal static fixed bin(17,0) initial dcl 11-43 PT_256_SIZE internal static bit(1) initial packed unaligned dcl 11-42 PT_64_SIZE internal static bit(1) initial packed unaligned dcl 11-41 Polite internal static fixed bin(8,0) initial dcl 4-89 Prefixnl internal static fixed bin(8,0) initial dcl 4-89 Replay internal static fixed bin(8,0) initial dcl 4-89 SMALL_PT_SIZE internal static fixed bin(19,0) initial dcl 11-44 SYSERR_COVERT_CHANNEL internal static fixed bin(17,0) initial dcl 15-7 SYSERR_CRASH_SYSTEM internal static fixed bin(17,0) initial dcl 15-7 SYSERR_LOG_OR_DISCARD internal static fixed bin(17,0) initial dcl 15-7 SYSERR_LOG_OR_PRINT internal static fixed bin(17,0) initial dcl 15-7 SYSERR_PRINT_ON_CONSOLE internal static fixed bin(17,0) initial dcl 15-7 SYSERR_PRINT_WITH_ALARM internal static fixed bin(17,0) initial dcl 15-7 SYSERR_RING1_ERROR internal static fixed bin(17,0) initial dcl 15-7 SYSERR_SUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 15-7 SYSERR_SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 15-7 SYSERR_TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 15-7 SYSERR_UNSUCCESSFUL_ACCESS internal static fixed bin(17,0) initial dcl 15-7 Sensepos internal static fixed bin(8,0) initial dcl 4-89 Set_buffer_size internal static fixed bin(8,0) initial dcl 4-89 Setbusy internal static fixed bin(8,0) initial dcl 4-89 TERMINATE_PROCESS internal static fixed bin(17,0) initial dcl 15-7 TTY_AREA_LOCK_EVENT internal static bit(36) initial dcl 16-33 Tabecho internal static fixed bin(8,0) initial dcl 4-89 Upstate internal static fixed bin(8,0) initial dcl 4-89 Wru internal static fixed bin(8,0) initial dcl 4-89 Xmit_hold internal static fixed bin(8,0) initial dcl 4-89 abs_buf_limit internal static fixed bin(18,0) initial dcl 16-19 accept_calls internal static fixed bin(8,0) initial dcl 4-24 accept_direct_input internal static fixed bin(8,0) initial dcl 4-65 accept_direct_output internal static fixed bin(8,0) initial dcl 4-24 accept_last_output internal static fixed bin(8,0) initial dcl 4-24 accept_new_terminal internal static fixed bin(8,0) initial dcl 4-65 ack_echnego_init internal static fixed bin(8,0) initial dcl 4-65 ack_echnego_stop internal static fixed bin(8,0) initial dcl 4-65 acu_dial_failure internal static fixed bin(8,0) initial dcl 4-65 acu_line_occupied internal static fixed bin(8,0) initial dcl 4-65 acu_no_good internal static fixed bin(8,0) initial dcl 4-65 acu_no_power internal static fixed bin(8,0) initial dcl 4-65 alter_parameters internal static fixed bin(8,0) initial dcl 4-24 asta based bit(432) array dcl 1-86 aste_part based structure level 1 dcl 1-89 blast internal static fixed bin(8,0) initial dcl 4-24 break_acknowledged internal static fixed bin(8,0) initial dcl 4-24 break_condition internal static fixed bin(8,0) initial dcl 4-65 bsizec internal static fixed bin(17,0) initial dcl 16-28 buf_per_second internal static fixed bin(17,0) initial dcl 16-29 checksum_error internal static fixed bin(8,0) initial dcl 4-24 connect_to_slave internal static fixed bin(8,0) initial dcl 4-65 dial internal static fixed bin(8,0) initial dcl 4-24 disconnect_accepted internal static fixed bin(8,0) initial dcl 4-24 disconnect_all_lines internal static fixed bin(8,0) initial dcl 4-24 disconnect_this_line internal static fixed bin(8,0) initial dcl 4-24 disconnected_line internal static fixed bin(8,0) initial dcl 4-65 dont_accept_calls internal static fixed bin(8,0) initial dcl 4-24 dump_mem internal static fixed bin(8,0) initial dcl 4-24 enter_receive internal static fixed bin(8,0) initial dcl 4-24 error_message internal static fixed bin(8,0) initial dcl 4-65 first_acu_op_code internal static fixed bin(8,0) initial dcl 4-65 fnp_break internal static fixed bin(8,0) initial dcl 4-24 fnp_models internal static fixed bin(17,0) initial array dcl 9-28 fnp_msg_ptr automatic pointer dcl 18-5 fnp_sub_mbx based structure level 1 dcl 3-63 fnp_types internal static char(8) initial array packed unaligned dcl 9-25 global_opcodes internal static fixed bin(8,0) initial array dcl 4-126 init_echo_negotiation internal static fixed bin(8,0) initial dcl 4-24 input_accepted internal static fixed bin(8,0) initial dcl 4-24 input_bpart internal static fixed bin(18,0) initial dcl 16-19 input_fc_chars internal static fixed bin(8,0) initial dcl 4-24 input_in_mailbox internal static fixed bin(8,0) initial dcl 4-65 input_sub_mbx based structure level 1 dcl 3-84 io_chnl_util$canonicalize_chanid 000000 constant entry external dcl 13-8 io_chnl_util$iom_to_name 000000 constant entry external dcl 13-12 io_chnl_util$name_to_iom 000000 constant entry external dcl 13-16 io_manager$assign_add 000000 constant entry external dcl 10-15 io_manager$connect 000000 constant entry external dcl 10-26 io_manager$connect_abs 000000 constant entry external dcl 10-29 io_manager$get_status 000000 constant entry external dcl 10-35 io_manager$ignore_interrupt 000000 constant entry external dcl 10-41 io_manager$unassign_delete 000000 constant entry external dcl 10-23 io_manager$workspace_tdcw 000000 constant entry external dcl 10-47 io_manager_arg_ptr automatic pointer dcl 10-49 io_page_table_seg$ external static fixed bin(17,0) dcl 11-8 io_page_table_seg_ptr automatic pointer dcl 11-10 io_page_tables based structure level 1 dcl 11-12 l68_null_disk_ptw based structure level 1 dcl 14-15 l68_real_disk_ptw based structure level 1 dcl 14-14 l68_special_ptw based structure level 1 dcl 14-13 last_acu_op_code internal static fixed bin(8,0) initial dcl 4-65 lcnt based structure level 1 dcl 5-65 lcntp automatic pointer dcl 5-63 lct_size automatic fixed bin(17,0) dcl 5-9 lctep automatic pointer dcl 5-8 lctp automatic pointer dcl 5-7 line_control internal static fixed bin(8,0) initial dcl 4-24 line_masked internal static fixed bin(8,0) initial dcl 4-65 line_status internal static fixed bin(8,0) initial dcl 4-65 lock_ptr automatic pointer dcl 17-9 output_bpart internal static fixed bin(18,0) initial dcl 16-19 output_fc_chars internal static fixed bin(8,0) initial dcl 4-24 patch_mem internal static fixed bin(8,0) initial dcl 4-24 ptp automatic pointer dcl 1344 qblock_size internal static fixed bin(17,0) initial dcl 16-27 rcd internal static fixed bin(8,0) initial dcl 4-14 reject_request_temp internal static fixed bin(8,0) initial dcl 4-24 report_meters internal static fixed bin(8,0) initial dcl 4-24 rtx internal static fixed bin(8,0) initial dcl 4-14 s6180_params internal static fixed bin(8,0) initial dcl 4-65 saved_meters based structure level 1 dcl 5-68 seg_aste based structure level 1 dcl 1-96 send_output internal static fixed bin(8,0) initial dcl 4-65 set_delay_table internal static fixed bin(8,0) initial dcl 4-24 set_echnego_break_table internal static fixed bin(8,0) initial dcl 4-24 set_framing_chars internal static fixed bin(8,0) initial dcl 4-24 set_line_type internal static fixed bin(8,0) initial dcl 4-24 start_negotiated_echo internal static fixed bin(8,0) initial dcl 4-24 stop_negotiated_echo internal static fixed bin(8,0) initial dcl 4-24 subp automatic pointer dcl 3-99 supported_fnp internal static bit(1) initial array packed unaligned dcl 9-31 sync_msg_size internal static fixed bin(8,0) initial dcl 4-24 terminal_accepted internal static fixed bin(8,0) initial dcl 4-24 terminal_rejected internal static fixed bin(8,0) initial dcl 4-24 tty_buf based structure level 1 dcl 16-35 wcd internal static fixed bin(8,0) initial dcl 4-14 wru_timeout internal static fixed bin(8,0) initial dcl 4-65 wtx internal static fixed bin(8,0) initial dcl 4-14 NAMES DECLARED BY EXPLICIT CONTEXT. ERROR 004241 constant label dcl 1000 ref 1011 STOP_CHECK 005340 constant entry internal dcl 1246 ref 406 440 447 487 980 1003 abort 002335 constant entry external dcl 565 assign_interrupt 004616 constant entry internal dcl 1075 ref 310 392 configure 001654 constant entry external dcl 476 configure_return 002023 constant label dcl 493 ref 488 connect_to_dia 004752 constant entry internal dcl 1123 ref 697 881 deconfigure 002122 constant entry external dcl 512 deconfigure_return 002236 constant label dcl 552 ref 522 527 deconfigure_return_unlocked 002237 constant label dcl 554 ref 536 deux_ten 001200 constant label dcl 379 dump_interrupt 002512 constant entry external dcl 721 fdump 002373 constant entry external dcl 576 fdump_seg_io 004032 constant entry internal dcl 689 ref 954 fill_bootload_page_table 005564 constant entry internal dcl 1299 fill_page_table 001405 constant entry external dcl 430 fin 001252 constant label dcl 397 ref 387 fnp_t_and_d_rw_merge 003622 constant label dcl 916 ref 908 fnp_tandd_detach 003215 constant entry external dcl 832 fnp_tandd_get_ints 003501 constant entry external dcl 890 fnp_tandd_mask 003373 constant entry external dcl 858 fnp_tandd_read 003561 constant entry external dcl 905 fnp_tandd_release_handler 003111 constant entry external dcl 804 ref 783 783 fnp_tandd_send_int 003432 constant entry external dcl 873 fnp_tandd_setup 002606 constant entry external dcl 748 fnp_tandd_write 003603 constant entry external dcl 913 free_page_table 001557 constant entry external dcl 452 get_page_table 005403 constant entry internal dcl 1256 ref 442 info 001332 constant entry external dcl 412 load 000701 constant entry external dcl 295 load_return 001255 constant label dcl 402 ref 316 325 335 345 lock_fnp 005203 constant entry internal dcl 1204 ref 481 517 767 837 862 877 894 1085 1188 mask_dia 005020 constant entry internal dcl 1147 ref 539 840 865 release_t_and_d 005032 constant entry internal dcl 1178 ref 535 817 restore_load_interrupt 001230 constant label dcl 392 ret_bad_code 002503 constant label dcl 684 ref 460 605 762 936 982 1004 1040 ret_bad_load_code 001252 constant label dcl 397 send_wcd 001200 constant label dcl 379 setup_dump_ctl_word 004456 constant entry internal dcl 1045 ref 945 tandd_setup_loses_unlock 003075 constant label dcl 794 ref 772 780 787 uncp_util 000666 constant entry external dcl 20 unlock_dump_seg 002470 constant label dcl 682 ref 949 958 966 unlock_fnp 005310 constant entry internal dcl 1233 ref 493 534 552 797 851 866 882 898 981 1105 1197 unlock_load_seg 001237 constant label dcl 395 unwire_dump_seg 004561 constant entry internal dcl 1066 ref 390 957 unwire_load_buffer 001227 constant label dcl 390 validate_assigned_ret 004147 constant entry internal dcl 969 ref 305 435 838 863 878 895 validate_fnp_ret 004226 constant entry internal dcl 988 ref 304 418 434 456 480 516 570 595 752 1031 validate_fnp_tandd_ret 004367 constant entry internal dcl 1026 ref 836 861 876 893 925 wire_dump_seg 004472 constant entry internal dcl 1054 ref 948 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 7000 7160 6007 7010 Length 10114 6007 160 717 771 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME uncp_util 708 external procedure is an external procedure. on unit on line 600 72 on unit fdump_seg_io internal procedure shares stack frame of external procedure uncp_util. on unit on line 810 72 on unit on unit on line 927 72 on unit validate_assigned_ret internal procedure shares stack frame of external procedure uncp_util. validate_fnp_ret internal procedure shares stack frame of external procedure uncp_util. validate_fnp_tandd_ret internal procedure shares stack frame of external procedure uncp_util. setup_dump_ctl_word internal procedure shares stack frame of external procedure uncp_util. wire_dump_seg internal procedure shares stack frame of external procedure uncp_util. unwire_dump_seg internal procedure shares stack frame of external procedure uncp_util. assign_interrupt internal procedure shares stack frame of external procedure uncp_util. connect_to_dia internal procedure shares stack frame of external procedure uncp_util. mask_dia internal procedure shares stack frame of external procedure uncp_util. release_t_and_d internal procedure shares stack frame of external procedure uncp_util. lock_fnp internal procedure shares stack frame of external procedure uncp_util. STOP_CHECK internal procedure shares stack frame of external procedure uncp_util. get_page_table internal procedure shares stack frame of external procedure uncp_util. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME uncp_util 000100 cent uncp_util 000101 un uncp_util 000102 auto_absadr uncp_util 000103 fnp_no uncp_util 000104 fnp_mem_size uncp_util 000105 fnp_type uncp_util 000106 fnp_addr uncp_util 000107 opcode uncp_util 000110 temp_fnp_name uncp_util 000120 segptr uncp_util 000122 nwords uncp_util 000123 code uncp_util 000124 devx uncp_util 000125 abs_addr_string uncp_util 000126 i uncp_util 000127 abs_address uncp_util 000130 data_ptr uncp_util 000132 offset uncp_util 000133 fnp_tally uncp_util 000134 start_time uncp_util 000136 version uncp_util 000140 load_info_ptr uncp_util 000142 locked uncp_util 000143 config_locked uncp_util 000144 message uncp_util 000146 auto_fnp_msg uncp_util 000156 astep uncp_util 000160 prph_fnp_cardp uncp_util 000162 mbxp uncp_util 000164 infop uncp_util 000166 fnpp uncp_util 000170 n_pcbs uncp_util 000172 pcbp uncp_util 000174 fnp_dump_ptr uncp_util 000176 ioptp uncp_util 000200 io_page_table_size uncp_util 000202 io_ptwp uncp_util 000204 ttybp uncp_util 000300 iom_code assign_interrupt 000310 ima connect_to_dia 000336 unlock_dump_seg release_t_and_d 000346 code lock_fnp 000364 pagex get_page_table 000365 px get_page_table 000366 ptp get_page_table THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as call_ext_out_desc call_ext_out return_mac enable_op ext_entry int_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. absadr config_$find_2 dn355_util$compute_parity get_fnp_name_ get_ptrs_$given_segno io_manager$assign io_manager$connect_direct io_manager$mask io_manager$unassign ioam_$assign ioam_$unassign ioi_page_table$get ioi_page_table$ptx_to_ptp ioi_page_table$put lock$lock_fast lock$unlock lock$unlock_fast lock$wait pc_abs$unwire_abs pc_abs$wire_abs_contig priv_channel_manager$get_devx pxss$addevent pxss$delevent pxss$notify pxss$ring_0_wakeup pxss$wait syserr syserr$error_code uncp$interrupt uncp$send_global_wcd uncp_multiplexer$assign uncp_multiplexer$fnp_lock uncp_multiplexer$fnp_unlock uncp_multiplexer$unassign THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. dn355_data$ error_table_$bad_mpx_load_data error_table_$invalid_state error_table_$io_configured error_table_$io_no_permission error_table_$io_not_assigned error_table_$io_not_configured error_table_$io_not_defined error_table_$no_io_interrupt fnp_dump_seg$ pds$process_group_id pds$processid sst$astsize sys_info$page_size tc_data$initializer_id tty_buf$ tty_buf$fnp_config_flags tty_buf$lct_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 62 000655 63 000657 101 000661 102 000662 20 000665 295 000674 302 000712 303 000715 304 000720 305 000725 307 000732 310 000764 312 000773 314 000777 315 001002 316 001025 320 001026 322 001031 323 001034 325 001062 331 001063 334 001067 335 001072 338 001073 340 001075 341 001105 342 001112 344 001122 345 001125 347 001126 348 001132 351 001134 355 001136 357 001140 358 001143 359 001146 360 001150 361 001153 363 001155 364 001157 365 001161 366 001162 367 001163 369 001164 370 001166 371 001170 372 001172 375 001174 376 001176 379 001200 386 001225 387 001226 390 001227 392 001230 395 001237 397 001252 400 001254 402 001255 405 001264 406 001315 408 001322 409 001324 412 001325 417 001343 418 001346 420 001353 421 001367 423 001371 424 001374 427 001376 428 001400 430 001401 433 001416 434 001421 435 001426 436 001433 438 001442 440 001466 442 001477 443 001501 445 001510 447 001541 449 001552 450 001554 452 001555 455 001570 456 001573 457 001600 459 001604 460 001630 462 001631 463 001642 464 001645 465 001647 466 001651 476 001652 479 001665 480 001670 481 001675 482 001676 484 001702 485 001705 487 001735 488 001744 490 001745 491 001747 492 001751 493 002023 495 002024 497 002026 498 002051 499 002054 502 002115 503 002117 512 002120 515 002133 516 002136 517 002143 519 002144 521 002150 522 002153 525 002154 527 002156 532 002161 534 002164 535 002165 536 002166 539 002167 540 002170 542 002202 543 002206 544 002210 545 002214 546 002216 547 002220 552 002236 554 002237 557 002241 558 002264 559 002267 562 002330 563 002332 565 002333 569 002346 570 002351 571 002356 572 002363 573 002365 576 002366 590 002410 591 002413 592 002415 593 002417 595 002422 598 002427 599 002432 600 002434 602 002450 604 002466 605 002467 682 002470 684 002503 686 002505 721 002506 728 002520 729 002523 730 002525 734 002564 736 002570 737 002572 739 002601 748 002602 751 002617 752 002622 758 002627 759 002640 761 002645 762 002666 764 002670 767 002700 769 002701 771 002705 772 002710 775 002711 776 002722 778 002724 780 002755 783 002756 784 003000 786 003002 787 003033 789 003034 790 003040 791 003044 792 003072 794 003075 797 003103 798 003104 799 003106 804 003107 807 003122 808 003125 809 003130 810 003132 812 003146 814 003164 815 003165 816 003175 817 003201 820 003210 821 003212 832 003213 834 003226 836 003231 837 003236 838 003237 840 003244 842 003245 843 003247 844 003251 845 003255 846 003271 847 003302 850 003335 851 003366 852 003367 853 003370 858 003371 860 003404 861 003407 862 003414 863 003415 865 003422 866 003423 867 003424 868 003425 873 003426 875 003443 876 003446 877 003453 878 003454 880 003461 881 003466 882 003472 884 003473 885 003474 890 003475 892 003512 893 003515 894 003522 895 003523 896 003530 897 003544 898 003550 899 003551 900 003552 905 003553 907 003576 908 003600 913 003601 915 003620 916 003622 920 003625 921 003630 922 003632 923 003634 924 003636 925 003641 927 003646 929 003662 931 003700 933 003701 935 003704 936 003721 938 003723 940 003731 941 003735 942 003736 943 003740 944 003744 945 003746 946 003747 948 003764 949 003765 951 003767 952 003774 954 003776 956 004000 957 004005 958 004006 960 004010 963 004025 964 004027 965 004030 966 004031 689 004032 694 004034 695 004036 696 004041 697 004050 698 004057 700 004064 701 004070 703 004077 704 004102 707 004103 708 004112 711 004121 712 004122 714 004123 716 004135 717 004144 718 004145 719 004146 969 004147 974 004151 976 004155 977 004160 980 004215 981 004223 982 004224 984 004225 988 004226 995 004230 997 004233 999 004237 1000 004241 1003 004302 1004 004313 1007 004314 1009 004321 1010 004323 1011 004325 1014 004326 1015 004327 1016 004332 1017 004334 1020 004366 1026 004367 1031 004371 1032 004377 1034 004407 1036 004415 1038 004417 1040 004454 1042 004455 1045 004456 1048 004457 1050 004466 1052 004471 1054 004472 1057 004473 1058 004510 1059 004530 1061 004547 1064 004560 1066 004561 1069 004562 1070 004577 1071 004615 1075 004616 1085 004620 1086 004621 1089 004632 1090 004636 1095 004637 1097 004641 1098 004653 1101 004707 1104 004712 1105 004740 1106 004741 1108 004744 1109 004746 1112 004751 1123 004752 1131 004754 1133 004760 1135 004764 1139 004770 1141 005003 1142 005006 1143 005010 1145 005017 1147 005020 1149 005021 1150 005031 1178 005032 1183 005033 1185 005050 1186 005053 1188 005105 1189 005106 1190 005110 1191 005112 1192 005114 1193 005120 1194 005131 1197 005164 1198 005165 1200 005202 1204 005203 1209 005204 1211 005230 1213 005232 1214 005243 1215 005245 1217 005253 1222 005260 1223 005271 1225 005273 1226 005275 1229 005306 1231 005307 1233 005310 1236 005311 1238 005322 1239 005323 1241 005336 1242 005337 1246 005340 1250 005351 1252 005402 1256 005403 1265 005405 1266 005407 1268 005426 1270 005432 1272 005450 1278 005460 1279 005467 1280 005471 1281 005475 1282 005477 1283 005501 1287 005503 1288 005522 1289 005524 1290 005531 1291 005543 1292 005546 1293 005554 1294 005556 1295 005560 1296 005561 1297 005563 1299 005564 1304 005565 1305 005567 1306 005574 1307 005577 1309 005602 1310 005613 1311 005616 1312 005624 1313 005626 1314 005630 1315 005631 1317 005633 1319 005643 1321 005675 1323 005677 ----------------------------------------------------------- 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