COMPILATION LISTING OF SEGMENT sty_mpx 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 1005.7 mst Sat Options: optimize map 1 /****^ ****************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright (c) 1987 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* * Copyright (c) 1972 by Massachusetts Institute of * 9* * Technology and Honeywell Information Systems, Inc. * 10* * * 11* ****************************************************** */ 12 13 /* format: style4,delnl,insnl,ifthenstmt,indnoniterend */ 14 15 sty_mpx: 16 procedure; 17 18 /* Ring 0 multiplexer module for pseudo-TTY's. */ 19 /* Written by C. Hornig, March 1979. */ 20 /* Rewritten by C. Hornig, July 1981 */ 21 /* Fixed bug in answerback string mechanism, March 8, 1982 by Richard Lamson */ 22 /* Fixed bug in line_control control order, 22 April 1982 by Richard Lamson */ 23 /* Fixed EOP processing 24 April 1982 by Richard Lamson */ 24 /* Removed "standard" tty modes from the string retured as tty modes 25* 1 May 1982 by Richard Lamson */ 26 /* Fixed lost wakeup bug, December, 1982 by C. Hornig */ 27 /* Made to accept and ignore orders made by set_terminal_data so 28* set_term_type will work properly, December 1982 by J. Spencer Love */ 29 /* Made to handle (set get)_required_access_class orders, April 1983 by Robert Coren */ 30 /* Changed to free any allocated mode_info structures on hangup order, September 1984 by Robert Coren */ 31 /* Changed to use tty_area_manager entries to prevent collision of allocates and frees, November 1984 by Robert Coren */ 32 33 dcl ( 34 (Dp, Infop, Chainp, Miip) ptr, 35 Code fixed bin (35), 36 (Subchan, Devx) fixed bin, 37 More_sw bit aligned, 38 Mode_list ptr, 39 Modes character (*), 40 Order character (*) 41 ) parameter; 42 43 dcl (my_pdep, her_pdep) ptr; 44 dcl 1 my_pde aligned like pde based (my_pdep); 45 dcl 1 her_pde aligned like pde based (her_pdep); 46 47 dcl based_area area based; 48 dcl based_ev_chn fixed bin (71) based; 49 dcl based_access_class bit (72) aligned based; 50 51 dcl based_modes (currentsize (her_pde.mode_ptr -> mode_string_info)) fixed bin (35) based; 52 53 dcl infop pointer; 54 55 dcl 1 dial_out_info aligned based (infop), 56 2 len fixed bin (21), 57 2 destination char (dial_out_info.len); 58 59 dcl 1 rw_abort aligned based (infop), 60 2 (w, r) bit unaligned; 61 62 dcl 1 write_status aligned based (infop), 63 2 ev_chn fixed bin (71), 64 2 output_pending bit (1); 65 66 dcl based_line_status bit (72) aligned based (infop); 67 dcl line_status bit (72) aligned; 68 69 dcl ( 70 error_table_$undefined_order_request, 71 error_table_$inconsistent, 72 error_table_$null_info_ptr, 73 error_table_$unimplemented_version, 74 error_table_$bad_mode, 75 error_table_$ai_already_set, 76 error_table_$noalloc 77 ) fixed bin (35) external; 78 79 dcl tty_area$ area external; 80 81 dcl formline_ entry (fixed bin, fixed bin, ptr, fixed bin (21), fixed bin (1)); 82 dcl mode_string_$combine entry (ptr, ptr, char (*), fixed bin (35)); 83 dcl mode_string_$delete entry (ptr, (*) char (*), char (*), fixed bin (35)); 84 dcl mode_string_$parse entry (char (*), ptr, ptr, fixed bin (35)); 85 dcl tty_area_manager$allocate entry (fixed bin, ptr); 86 dcl tty_area_manager$free entry (fixed bin, ptr); 87 dcl tty_area_manager$lock_area entry (); 88 dcl tty_area_manager$unlock_area entry (); 89 90 dcl (sc, i) fixed; 91 dcl mode_error bit (1) aligned; 92 dcl blocko uns fixed bin (18); 93 dcl code fixed bin (35); 94 95 dcl FF_CR_LF char (3) static options (constant) init (" 96 "); /* FF, CR, LF */ 97 98 dcl (addr, binary, currentsize, divide, length, mod, null, pointer, rel, rtrim, size, substr, unspec) builtin; 99 100 dcl (area, cleanup) condition; 101 102 /* * * * * * * * * * CONTROL * * * * * * * * * */ 103 104 control: 105 entry (Dp, Subchan, Order, Infop, Code); 106 107 Code = 0; 108 infop = Infop; 109 call setup_subchan; 110 111 if /* case */ Order = "listen" then do; 112 my_pde.location = ""; 113 call bring_up_keep_ac; 114 end; 115 116 else if Order = "dial_out" then do; 117 if infop ^= null () then do; 118 call bring_up_keep_ac; 119 my_pde.location = dial_out_info.destination; 120 end; 121 else Code = error_table_$null_info_ptr; 122 end; 123 124 else if Order = "hangup" then do; 125 call channel_manager$interrupt_later (her_pde.devx, HANGUP, ""b); 126 call channel_manager$interrupt_later (my_pde.devx, HANGUP, ""b); 127 my_pde.access_class_set, /* clear out all access_class information */ 128 her_pde.access_class_set = "0"b; 129 my_pde.access_class, her_pde.access_class = "0"b; 130 call abort (my_pde); /* free buffers */ 131 call abort (her_pde); 132 if my_pde.mode_ptr ^= null () then call tty_area_manager$free (currentsize (my_pde.mode_ptr -> mode_string_info), my_pde.mode_ptr); 133 if her_pde.mode_ptr ^= null () then call tty_area_manager$free (currentsize (her_pde.mode_ptr -> mode_string_info), her_pde.mode_ptr); 134 my_pde.mode_ptr, her_pde.mode_ptr = null (); 135 my_pde.flags.listen, her_pde.flags.listen = "0"b; 136 end; 137 138 else if Order = "wru" then do; 139 my_pde.flags.wru = "1"b; 140 if her_pde.head = 0 then call channel_manager$interrupt_later (my_pde.devx, INPUT_AVAILABLE, ""b); 141 end; 142 143 else if Order = "abort" then do; 144 if infop ^= null () then do; 145 if rw_abort.w then call abort (my_pde); /* free chained buffers */ 146 if rw_abort.r then call abort (her_pde); 147 end; 148 else Code = error_table_$null_info_ptr; 149 end; 150 151 else if Order = "write_status" then do; 152 if infop ^= null () 153 then write_status.output_pending = (my_pde.head ^= 0); 154 /* anything on list? */ 155 else Code = error_table_$null_info_ptr; 156 end; 157 158 else if Order = "interrupt" then do; 159 her_pde.end_of_page = "0"b; 160 call channel_manager$interrupt_later (her_pde.devx, QUIT, ""b); 161 call send_output (her_pde); 162 end; 163 164 else if Order = "line_control" then do; 165 if infop = null () then do; 166 Code = error_table_$null_info_ptr; 167 return; 168 end; 169 line_status = based_line_status; 170 call channel_manager$interrupt_later (her_pde.devx, LINE_STATUS, line_status); 171 end; 172 173 else if Order = "printer_on" then call new_mode ("echo"); 174 175 else if Order = "printer_off" then call new_mode ("^echo"); 176 177 else if Order = "get_foreign_terminal_data" then do; 178 foreign_terminal_data_ptr = infop; 179 if foreign_terminal_data_ptr = null () then do; 180 Code = error_table_$null_info_ptr; 181 return; 182 end; 183 if foreign_terminal_data.version ^= FOREIGN_TERMINAL_DATA_VERSION_1 then do; 184 Code = error_table_$unimplemented_version; 185 return; 186 end; 187 foreign_terminal_data.mode_string_info_ptr = null (); 188 if her_pde.mode_ptr ^= null () then do; 189 on area goto noalloc; 190 allocate based_modes in (foreign_terminal_data.area_ptr -> based_area) 191 set (foreign_terminal_data.mode_string_info_ptr); 192 foreign_terminal_data.mode_string_info_ptr -> based_modes = her_pde.mode_ptr -> based_modes; 193 end; 194 her_pde.flags.notify_modes = "1"b; 195 end; 196 197 else if Order = "set_required_access_class" then do; 198 if infop = null () then Code = error_table_$null_info_ptr; 199 else if my_pde.access_class_set /* it's already been set */ 200 then if my_pde.access_class = infop -> based_access_class 201 /* but to the same thing */ 202 then Code = 0; /* so it's OK */ 203 else Code = error_table_$ai_already_set; 204 205 else do; /* not already set, do it now */ 206 my_pde.access_class, her_pde.access_class = infop -> based_access_class; 207 my_pde.access_class_set, her_pde.access_class_set = "1"b; 208 Code = 0; 209 end; 210 end; 211 212 else if Order = "get_required_access_class" then do; 213 if infop = null () 214 then Code = error_table_$null_info_ptr; 215 else do; 216 infop -> tty_access_class.access_class_set = my_pde.access_class_set; 217 if my_pde.access_class_set 218 then infop -> tty_access_class.access_class = my_pde.access_class; 219 else infop -> tty_access_class.access_class = "0"b; 220 /* for cleanliness */ 221 Code = 0; 222 end; 223 end; 224 225 else if Order = "input_flow_control_chars" then ; 226 else if Order = "output_flow_control_chars" then ; 227 else if Order = "set_delay" then ; 228 else if Order = "set_framing_chars" then ; 229 230 else Code = error_table_$undefined_order_request; 231 232 return; 233 234 /* * * * * * * * * * WRITE * * * * * * * * * */ 235 236 write: 237 entry (Dp, Subchan, Chainp, Code); 238 239 Code = 0; 240 call setup_subchan; 241 242 my_pde.flags.output_ready = "0"b; 243 244 if Chainp = null () then return; 245 246 if my_pde.end_of_page then return; /* No, No, you can't write right now... */ 247 248 if her_pde.end_of_page then do; /* Let other end send more output. */ 249 her_pde.end_of_page = "0"b; /* and take it out of EOP */ 250 call send_output (her_pde); 251 blockp = Chainp; 252 if (buffer.next = 0) /* only one buffer */ 253 & (buffer.tally <= 2) /* with not much in it */ 254 & (verify (substr (string (buffer.chars), 1, buffer.tally), FF_CR_LF) = 0) then do; 255 /* consisting exclusively of line-terminators */ 256 call tty_space_man$free_buffer (my_pde.devx, OUTPUT, Chainp); 257 /* throw it away */ 258 call send_output (my_pde); /* and send more */ 259 Chainp = null (); 260 return; 261 end; 262 end; 263 264 blockp = Chainp; 265 blocko = buffer.next; 266 do while (blocko ^= 0 & ^buffer.end_of_page); /* walk chain looking for EOP */ 267 blockp = pointer (addr (tty_buf$), blocko); 268 blocko = buffer.next; 269 end; 270 271 buffer.next = 0; /* Remove tail of this chain now. */ 272 buffer.flags.break = "1"b; /* set break flag in last buffer */ 273 my_pde.flags.end_of_page = buffer.end_of_page; /* note if we are at page break */ 274 if my_pde.head = 0 /* chain in the buffers */ 275 then do; /* new chain */ 276 my_pde.head = binary (rel (Chainp), 18); 277 my_pde.tail = binary (rel (blockp), 18); 278 call channel_manager$interrupt_later (her_pde.devx, INPUT_AVAILABLE, ""b); 279 /* and tell the other side */ 280 end; 281 282 else do; /* add to existing chain */ 283 pointer (addr (tty_buf$), my_pde.tail) -> buffer.next = binary (rel (Chainp), 18); 284 my_pde.tail = binary (rel (blockp), 18); 285 end; 286 287 if blocko = 0 288 then /* Are there any buffers after EOP? */ 289 Chainp = null (); /* No, we took it all */ 290 else Chainp = pointer (addr (tty_buf$), blocko); /* Get later buffers after clear EOP */ 291 return; 292 293 /* * * * * * * * * * READ * * * * * * * * * */ 294 295 read: 296 entry (Dp, Subchan, Chainp, More_sw, Code); 297 298 Code = 0; 299 Chainp = null (); 300 More_sw = "0"b; 301 call setup_subchan; 302 303 if /* case */ her_pde.head ^= 0 then do; /* if there is any data */ 304 Chainp = pointer (addr (tty_buf$), her_pde.head); 305 /* give it away */ 306 her_pde.head, her_pde.tail = 0; /* and forget it */ 307 call tty_space_man$switch_chain (her_pde.devx, my_pde.devx, OUTPUT, INPUT, Chainp); 308 call send_output (her_pde); /* solicit more */ 309 end; 310 311 else if my_pde.flags.wru then do; 312 call tty_space_man$get_buffer (my_pde.devx, 16, INPUT, blockp); 313 if blockp ^= null () then do; 314 my_pde.flags.wru = "0"b; 315 string (buffer.chars) = rtrim (her_pde.location) || " 316 " /* NL */; 317 buffer.tally = length (rtrim (string (buffer.chars))); 318 string (buffer.flags) = ""b; 319 buffer.flags.break = "1"b; 320 buffer.next = 0; 321 322 Chainp = blockp; 323 end; 324 end; 325 326 return; 327 328 /* * * * * * * * * * CHECK_MODES * * * * * * * * * */ 329 330 check_modes: 331 entry (Dp, Subchan, Mode_list, Code); 332 333 Code = 0; 334 call setup_subchan; 335 336 mclp = Mode_list; 337 if mcl.version ^= mcl_version_2 then do; 338 Code = error_table_$unimplemented_version; 339 return; 340 end; 341 342 mcl.ll_error, mcl.pl_error, mcl.can_type_error = "0"b; 343 344 do i = 1 to mcl.n_entries; 345 mcl.entries (i).flags.mpx_mode = "1"b; 346 mcl.entries (i).flags.error = "0"b; 347 end; 348 349 return; 350 351 /* * * * * * * * * * SET_MODES * * * * * * * * * */ 352 353 set_modes: 354 entry (Dp, Subchan, Mode_list, Code); 355 356 Code = 0; 357 call setup_subchan; 358 359 mclp = Mode_list; 360 if mcl.version ^= mcl_version_2 then do; 361 Code = error_table_$unimplemented_version; 362 return; 363 end; 364 365 if mcl.flags.init & (my_pde.mode_ptr ^= null ()) then do; 366 call tty_area_manager$free (currentsize (my_pde.mode_ptr -> mode_string_info), my_pde.mode_ptr); 367 my_pde.mode_ptr = null (); 368 end; 369 370 mcl.ll_error, mcl.pl_error, mcl.can_type_error = "0"b; 371 372 if mcl.line_len ^= -1 then do; 373 call new_mode ("ll=^d", mcl.line_len); 374 mcl.ll_error = mode_error; 375 end; 376 if mcl.page_len ^= -1 then do; 377 call new_mode ("pl=^d", mcl.page_len); 378 mcl.pl_error = mode_error; 379 end; 380 if mcl.can_type ^= -1 then do; 381 call new_mode ("can_type=^[overstrike^;replace^]", mcl.can_type); 382 mcl.can_type_error = mode_error; 383 end; 384 385 do i = 1 to mcl.n_entries; 386 if mcl.entries (i).mpx_mode then do; 387 call new_mode ("^[^^^]^a", ^mcl.entries (i).flags.mode_switch, mcl.entries (i).mode_name); 388 mcl.entries (i).flags.error = mode_error; 389 end; 390 end; 391 392 return; 393 394 /* * * * * * * * * * * * GET_MODES * * * * * * * * * */ 395 396 get_modes: 397 entry (Dp, Subchan, Modes, Code); 398 399 Code = 0; 400 Modes = ""; 401 call setup_subchan; 402 403 if my_pde.mode_ptr ^= null () then call mode_string_$delete (my_pde.mode_ptr, MODE_NAME, Modes, Code); 404 if substr (Modes, length (rtrim (Modes)), 1) = "." then substr (Modes, length (rtrim (Modes)), 1) = " "; 405 406 return; 407 408 /* * * * * * * * * * INIT_MULTIPLEXER * * * * * * * * * * */ 409 410 init_multiplexer: 411 entry (Devx, Miip, Dp, Code); 412 413 Code = 0; 414 lctp = addr (tty_buf$) -> tty_buf.lct_ptr; 415 416 miip = Miip; 417 sty_mpx_data_nchan = mux_init_info.no_channels; 418 if mod (sty_mpx_data_nchan, 2) ^= 0 then do; /* must come in pairs */ 419 Code = error_table_$inconsistent; 420 return; 421 end; 422 423 sty_mpx_data_ptr = null (); 424 on cleanup 425 begin; 426 if sty_mpx_data_ptr ^= null () then call tty_area_manager$free (currentsize (sty_mpx_data), sty_mpx_data_ptr); 427 end; 428 on area goto noalloc; 429 430 call tty_area_manager$allocate (size (sty_mpx_data), sty_mpx_data_ptr); 431 432 sty_mpx_data.n_channels = sty_mpx_data_nchan; /* tty_area_manager can't know to do this */ 433 sty_mpx_data.devx = Devx; 434 sty_mpx_data.n_pairs = divide (sty_mpx_data.n_channels, 2, 17, 0); 435 do sc = 1 to sty_mpx_data.n_channels; 436 my_pdep = addr (sty_mpx_data.pdes (sc)); 437 call reset (my_pde, "1"b); 438 my_pde.head, my_pde.tail = 0; 439 my_pde.devx = mux_init_info.devx (sc); 440 my_pde.mode_ptr = null (); 441 442 lct.lcte_array (my_pde.devx).subchannel = sc; 443 lct.lcte_array (my_pde.devx).physical_channel_devx = my_pde.devx; 444 end; 445 446 Dp = sty_mpx_data_ptr; 447 return; 448 449 noalloc: 450 Code = error_table_$noalloc; 451 return; 452 453 /* * * * * * * * * * * START * * * * * * * * * */ 454 455 start: 456 entry (Dp, Code); 457 458 Code = 0; 459 sty_mpx_data_ptr = Dp; 460 461 sty_mpx_data.flags.started = "1"b; 462 463 do i = 1 to sty_mpx_data.n_pairs; 464 my_pdep = addr (sty_mpx_data.pdes (i)); 465 if my_pde.flags.listen then do; 466 her_pdep = addr (sty_mpx_data.pdes (i + sty_mpx_data.n_pairs)); 467 call bring_up; 468 end; 469 end; 470 471 return; 472 473 /* * * * * * * * ** * STOP * * * * * * * * * */ 474 475 stop: 476 entry (Dp, Code); 477 478 Code = 0; 479 sty_mpx_data_ptr = Dp; 480 481 sty_mpx_data.flags.started = "0"b; 482 return; 483 484 /* * * * * * * * * * SHUTDOWN * * * * * * * * * * */ 485 486 shutdown: 487 entry (Dp, Code); 488 489 Code = 0; 490 sty_mpx_data_ptr = Dp; 491 492 do sc = 1 to sty_mpx_data.n_channels; 493 call channel_manager$interrupt_later (sty_mpx_data.pdes (sc).devx, CRASH, ""b); 494 sty_mpx_data.pdes (sc).listen = "0"b; 495 end; 496 497 return; 498 499 /* * * * * * * * * * * TERMINATE_MULTIPLEXER * * * * * * * * * */ 500 501 terminate_multiplexer: 502 entry (Dp, Code); 503 504 Code = 0; 505 sty_mpx_data_ptr = Dp; 506 507 do i = 1 to sty_mpx_data.n_channels; 508 my_pdep = addr (sty_mpx_data.pdes (i)); 509 call abort (my_pde); 510 if my_pde.mode_ptr ^= null () then call tty_area_manager$free (currentsize (my_pde.mode_ptr -> mode_string_info), my_pde.mode_ptr); 511 end; 512 513 call tty_area_manager$free (currentsize (sty_mpx_data), sty_mpx_data_ptr); 514 515 Dp = null (); 516 return; 517 518 /* * * * * * * * * * SETUP_SUBCHAN * * * * * * * * * */ 519 520 setup_subchan: 521 procedure; 522 523 sty_mpx_data_ptr = Dp; 524 525 my_pdep = addr (sty_mpx_data.pdes (Subchan)); 526 her_pdep = addr (sty_mpx_data.pdes (mod (Subchan - 1 + sty_mpx_data.n_pairs, sty_mpx_data.n_channels) + 1)); 527 return; 528 end setup_subchan; 529 530 /* * * * * * * * * ABORT * * * * * * * * * */ 531 532 abort: 533 procedure (Pde); 534 dcl 1 Pde aligned like pde; 535 536 Pde.end_of_page = "0"b; 537 if Pde.head ^= 0 then do; 538 call tty_space_man$free_chain (Pde.devx, OUTPUT, pointer (addr (tty_buf$), Pde.head)); 539 Pde.head, Pde.tail = 0; 540 end; 541 call send_output (Pde); 542 return; 543 end abort; 544 545 /* * * * * * * * * * NEW_MODE * * * * * * * * * */ 546 547 new_mode: 548 procedure options (variable); 549 550 dcl old_mode_ptr ptr; 551 dcl code fixed bin (35); 552 dcl this_mode char (32); 553 dcl combined_modes char (512); 554 555 mode_string_info_ptr = null (); 556 557 call formline_ (1, 2, addr (this_mode), length (this_mode), 1); 558 559 call tty_area_manager$lock_area (); 560 on cleanup call tty_area_manager$unlock_area (); 561 562 call mode_string_$parse (this_mode, addr (tty_area$), mode_string_info_ptr, code); 563 if code ^= 0 then goto bad_mode; 564 565 call mode_string_$combine (my_pde.mode_ptr, mode_string_info_ptr, combined_modes, code); 566 if code ^= 0 then goto bad_mode; 567 568 free mode_string_info in (tty_area$); 569 mode_string_info_ptr = null (); 570 571 call mode_string_$parse (combined_modes, addr (tty_area$), mode_string_info_ptr, code); 572 if code ^= 0 then goto bad_mode; 573 574 old_mode_ptr = my_pde.mode_ptr; 575 my_pde.mode_ptr = mode_string_info_ptr; 576 if old_mode_ptr ^= null () then free old_mode_ptr -> mode_string_info in (tty_area$); 577 call tty_area_manager$unlock_area (); 578 579 if my_pde.flags.notify_modes then do; 580 call channel_manager$interrupt_later (her_pde.devx, LINE_STATUS, ""b); 581 my_pde.flags.notify_modes = "0"b; 582 end; 583 584 mode_error = "0"b; 585 return; 586 587 bad_mode: 588 call tty_area_manager$unlock_area (); 589 mode_error = "1"b; 590 return; 591 end new_mode; 592 593 /* * * * * * * * * * BRING_UP * * * * * * * * * */ 594 595 bring_up: 596 procedure; 597 598 dcl reset_ac bit (1); 599 600 reset_ac = "1"b; 601 go to bring_up_join; 602 603 bring_up_keep_ac: 604 entry; 605 606 reset_ac = "0"b; 607 608 bring_up_join: 609 if sty_mpx_data.flags.started & her_pde.flags.listen then do; 610 /* is other side ready? */ 611 unspec (dialup_info) = ""b; /* yes, dial up */ 612 dialup_info.line_type = LINE_ASCII; 613 dialup_info.max_buf_size = 128; 614 call channel_manager$interrupt_later (her_pde.devx, DIALUP, unspec (dialup_info)); 615 call channel_manager$interrupt_later (my_pde.devx, DIALUP, unspec (dialup_info)); 616 617 call reset (her_pde, reset_ac); 618 call reset (my_pde, reset_ac); 619 call send_output (her_pde); 620 call send_output (my_pde); 621 end; 622 623 else my_pde.flags.listen = "1"b; /* maybe later */ 624 625 return; 626 end bring_up; 627 628 /* * * * * * * * * * RESET * * * * * * * * * */ 629 630 reset: 631 procedure (Pde, Reset_ac); 632 dcl 1 Pde aligned like pde; 633 dcl Reset_ac bit (1); 634 635 dcl old_ac_flag bit (1); 636 637 if ^Reset_ac then old_ac_flag = Pde.access_class_set; 638 string (Pde.flags) = ""b; 639 if ^Reset_ac then Pde.access_class_set = old_ac_flag; 640 Pde.location = ""; 641 if Reset_ac then Pde.access_class = "0"b; 642 643 return; 644 end reset; 645 646 /* * * * * * * * * * SEND_OUTPUT * * * * * * * * * */ 647 648 send_output: 649 procedure (Pde); 650 dcl 1 Pde aligned like pde; 651 652 if ^Pde.flags.output_ready & ^Pde.flags.end_of_page & (Pde.head = 0) then do; 653 Pde.flags.output_ready = "1"b; 654 call channel_manager$interrupt_later (Pde.devx, SEND_OUTPUT, ""b); 655 end; 656 return; 657 end send_output; 658 1 1 /* Begin include file sty_mpx_data.incl.pl1 */ 1 2 1 3 /* Written by Charlie Hornig (?) */ 1 4 /* Modified April 1983 by Robert Coren to add access_class information */ 1 5 1 6 /* format: style3 */ 1 7 dcl sty_mpx_data_ptr ptr; /* main database ptr */ 1 8 dcl sty_mpx_data_nchan fixed bin; /* number of multiplexed channels */ 1 9 dcl 1 sty_mpx_data aligned based (sty_mpx_data_ptr), 1 10 2 devx fixed bin, /* index of major channel */ 1 11 2 flags, 1 12 3 started bit (1) unaligned, /* we can accept dial_up's */ 1 13 2 n_channels fixed bin, 1 14 2 n_pairs fixed bin, 1 15 2 pdes (sty_mpx_data_nchan refer (sty_mpx_data.n_channels)) like pde; 1 16 1 17 dcl pdep ptr; 1 18 dcl 1 pde aligned based (pdep), /* for each PTY channel */ 1 19 2 devx fixed bin, /* this channel's devx */ 1 20 2 flags, 1 21 3 listen bit (1) unaligned, /* someone is interested */ 1 22 3 wru bit (1) unaligned, /* asked for answerback */ 1 23 3 end_of_page bit (1) unaligned, /* waiting for response to EOP */ 1 24 3 notify_modes bit (1) unaligned, /* wants to know if foreign modes change */ 1 25 3 output_ready bit (1) unaligned, /* we have sent SEND_OUTPUT */ 1 26 3 access_class_set bit (1) unaligned, /* access_class has been set by "set_required_access_class" order */ 1 27 2 words uns fixed bin (18), /* words we have queued */ 1 28 2 (head, tail) uns fixed bin (18), /* output queue */ 1 29 2 mode_ptr ptr, /* ptr to mode structure in tty_area */ 1 30 2 location char (64), /* answerback (from destination to dial_out */ 1 31 2 access_class bit (72) aligned; /* access class associated with channel (if access_class_set = "1"b) */ 1 32 1 33 /* End include file sty_mpx_data.incl.pl1 */ 659 2 1 /* Begin include file foreign_terminal.incl.pl1 */ 2 2 2 3 dcl foreign_terminal_data_ptr ptr; 2 4 dcl FOREIGN_TERMINAL_DATA_VERSION_1 char (8) aligned static options (constant) init ("ftd_1"); 2 5 dcl 1 foreign_terminal_data aligned based (foreign_terminal_data_ptr), 2 6 2 version char (8), /* (Input) version of this structure */ 2 7 2 area_ptr ptr, /* (Input) area in which to allocate modes */ 2 8 2 mode_string_info_ptr ptr; /* (Output) points to allocate mode_string_info */ 2 9 /* End of version 1 data */ 2 10 2 11 /* End include file foreign_terminal.incl.pl1 */ 660 3 1 /* BEGIN INCLUDE FILE ... mcs_interrupt_info.incl.pl1 */ 3 2 3 3 /* Defines constants and structures used by MCS interrupt handlers */ 3 4 3 5 /* Created 08/21/78 by Robert Coren */ 3 6 /* Echo negotiation types added sometime by Bernie Greenberg */ 3 7 /* TIMER and USER_INTERRUPT added in spring of 1982 by Olin Sibert */ 3 8 /* MASKED type added June 23, 1982, by Robert Coren */ 3 9 3 10 dcl DIALUP fixed bin int static options (constant) init (1); 3 11 dcl HANGUP fixed bin int static options (constant) init (2); 3 12 dcl CRASH fixed bin int static options (constant) init (3); 3 13 dcl SEND_OUTPUT fixed bin int static options (constant) init (4); 3 14 dcl INPUT_AVAILABLE fixed bin int static options (constant) init (5); 3 15 dcl ACCEPT_INPUT fixed bin int static options (constant) init (6); 3 16 dcl INPUT_REJECTED fixed bin int static options (constant) init (7); 3 17 dcl QUIT fixed bin int static options (constant) init (8); 3 18 dcl LINE_STATUS fixed bin int static options (constant) init (9); 3 19 dcl DIAL_STATUS fixed bin int static options (constant) init (10); 3 20 dcl WRU_TIMEOUT fixed bin int static options (constant) init (11); 3 21 dcl SPACE_AVAILABLE fixed bin int static options (constant) init (12); 3 22 dcl ACKNOWLEDGE_ECHNEGO_INIT fixed bin int static options (constant) init (13); 3 23 dcl ACKNOWLEDGE_ECHNEGO_STOP fixed bin int static options (constant) init (14); 3 24 dcl TIMER fixed bin int static options (constant) init (15); 3 25 dcl USER_INTERRUPT fixed bin int static options (constant) init (16); 3 26 dcl MASKED fixed bin int static options (constant) init (17); 3 27 3 28 dcl interrupt_info bit (72) aligned; 3 29 3 30 dcl 1 dialup_info aligned, /* for use with DIALUP interrupt */ 3 31 2 line_type fixed bin (9) unal uns, 3 32 2 buffer_pad fixed bin (9) unal uns, /* free space multiplexer would like in output bufs */ 3 33 2 baud_rate fixed bin (18) unal uns, 3 34 2 max_buf_size fixed bin (9) unal uns, 3 35 2 receive_mode_device bit (1) unal, /* device must be told to enter receive mode */ 3 36 2 pad bit (26) unal; 3 37 3 38 dcl 1 rtx_info aligned, /* for use with ACCEPT_INPUT interrupt */ 3 39 2 input_chain unaligned, 3 40 3 chain_head bit (18) unaligned, 3 41 3 chain_tail bit (18) unaligned, 3 42 2 input_count fixed bin (18) unal uns, 3 43 2 flags unaligned, 3 44 3 break_char bit (1), /* data contains a break character */ 3 45 3 output_in_fnp bit (1), /* there is output in the FNP */ 3 46 3 output_in_ring_0 bit (1), /* there is output in ring 0 */ 3 47 3 formfeed_present bit (1), /* input contains a formfeed character */ 3 48 3 pad bit (14); 3 49 3 50 dcl 1 timer_info aligned, /* Info supplied with TIMER interrupt */ 3 51 2 id bit (36) aligned, /* ID which was supplied in call to mcs_timer$set */ 3 52 2 subchan_idx fixed bin; /* Index of subchannel on whose behalf timer was set */ 3 53 3 54 /* END INCLUDE FILE ... mcs_interrupt_info.incl.pl1 */ 661 4 1 /* BEGIN INCLUDE FILE ... tty_buffer_block.incl.pl1 */ 4 2 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 4 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 4 8* Add data needed for the uncp multiplexer (DSA gateway) interface 4 9* implementation. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /* 4 14* Separated from tty_buf.incl.pl1 aug 78 by J. Nicholls 4 15* Modified May 1979 by Larry Johnson to add max_buffer_tally array and to use unsigned variables. 4 16* Reported in February 1982 the modifications to add the "turn" bit in flags. 4 17**/ 4 18 4 19 dcl blockp ptr; /* pointer which block entry is based on */ 4 20 dcl free_blockp ptr; /* pointer to head of free space chain */ 4 21 4 22 4 23 dcl 1 free_block aligned based (free_blockp), /* format of start of free block */ 4 24 2 next bit (18), /* foward pointer to next free block */ 4 25 2 size fixed bin; /* number of words in this block */ 4 26 4 27 4 28 dcl 1 buffer based (blockp) aligned, /* buffer definition */ 4 29 2 next fixed bin (18) unal uns, /* addr of next buffer */ 4 30 2 flags unaligned, 4 31 3 end_of_page bit (1) unaligned, /* buffer contains end of page */ 4 32 3 converted bit (1) unaligned, /* buffer contains converted input */ 4 33 3 break bit (1) unaligned, /* buffer contains break character */ 4 34 3 mark bit (1) unaligned, /* buffer contains first character after "mark" */ 4 35 3 turn bit (1) unaligned, /* ON if the turn must be sent */ 4 36 3 pad bit (1) unaligned, 4 37 2 size_code fixed bin (3) unal uns, /* (nwords/16) - 1 */ 4 38 2 tally fixed bin (9) unal uns, /* number of characters in buffer */ 4 39 2 chars (0:59) char (1) unaligned; /* room for 60 data characters */ 4 40 4 41 /* the following array, if indexed by buffer.size_code will give maximum number of characters permitted in that buffer */ 4 42 4 43 dcl max_buffer_tally (0:7) fixed bin int static options (constant) init (60, 124, 188, 252, 316, 380, 444, 508); 4 44 4 45 /* END INCLUDE FILE ... tty_buffer_block.incl.pl1 */ 662 5 1 /* BEGIN INCLUDE FILE ... channel_manager_dcls.incl.pl1 */ 5 2 5 3 /* Created 8/25/78 by J. Stern */ 5 4 5 5 5 6 /* call channel_manager$read (devx, chain_ptr, more_input_flag, code) */ 5 7 dcl channel_manager$read entry (fixed bin, ptr, bit (1) aligned, fixed bin (35)); 5 8 5 9 /* call channel_manager$write (devx, output_ptr, code) */ 5 10 dcl channel_manager$write entry (fixed bin, ptr, fixed bin (35)); 5 11 5 12 /* call channel_manager$control (devx, control_type, info_ptr, code) */ 5 13 dcl channel_manager$control entry (fixed bin, char (*), ptr, fixed bin (35)); 5 14 5 15 /* call channel_manager$set_modes (devx, mode_change_list_ptr, code) */ 5 16 dcl channel_manager$set_modes entry (fixed bin, ptr, fixed bin (35)); 5 17 5 18 /* call channel_manager$check_modes (devx, mode_change_list_ptr, code) */ 5 19 dcl channel_manager$check_modes entry (fixed bin, ptr, fixed bin (35)); 5 20 5 21 /* call channel_manager$get_modes (devx, modes, code) */ 5 22 dcl channel_manager$get_modes entry (fixed bin, char (*), fixed bin (35)); 5 23 5 24 /* call channel_manager$interrupt (devx, int_type, int_data) */ 5 25 dcl channel_manager$interrupt entry (fixed bin, fixed bin, bit (72) aligned); 5 26 5 27 /* call channel_manager$interrupt_later (devx, int_type, int_data) */ 5 28 dcl channel_manager$interrupt_later entry (fixed bin, fixed bin, bit (72) aligned); 5 29 5 30 /* call channel_manager$queued_interrupt (devx, int_type, int_data) */ 5 31 dcl channel_manager$queued_interrupt entry (fixed bin, fixed bin, bit (72) aligned); 5 32 5 33 5 34 /* END INCLUDE FILE ... channel_manager_dcls.incl.pl1 */ 663 6 1 /* BEGIN INCLUDE FILE ... mux_init_info.incl.pl1 */ 6 2 6 3 /* Created 8/2/78 by J. Stern */ 6 4 6 5 6 6 dcl miip ptr; /* ptr to mux_init_info structure */ 6 7 dcl mii_chan_count fixed bin; /* channel count when allocating mux_init_info */ 6 8 6 9 6 10 dcl 1 mux_init_info aligned based (miip), /* multiplexer initialization info */ 6 11 2 no_channels fixed bin, /* number of multiplexed channels */ 6 12 2 channels (mii_chan_count refer (mux_init_info.no_channels)), /* one entry per channel */ 6 13 3 name char (32) unal, /* channel name */ 6 14 3 devx fixed bin; /* device index for channel */ 6 15 6 16 6 17 /* END INCLUDE FILE ... mux_init_info.incl.pl1 */ 664 7 1 /* BEGIN INCLUDE FILE ... lct.incl.pl1 */ 7 2 7 3 /* Created by J. Stern 7/26/78 */ 7 4 /* Metering information added by C. Hornig, March 1980. */ 7 5 /* Unwired saved meters added by Robert Coren, December 1980 */ 7 6 7 7 dcl lctp ptr; /* ptr to logical channel table */ 7 8 dcl lctep ptr; /* ptr to logical channel table entry */ 7 9 dcl lct_size fixed bin; /* size of lcte_array when allocated */ 7 10 7 11 dcl 1 lct aligned based (lctp), /* logical channel table */ 7 12 2 max_no_lctes fixed bin, /* maximum number of lct entries */ 7 13 2 cur_no_lctes fixed bin, /* current number of lct entries used */ 7 14 2 lcnt_ptr ptr, /* ptr to logical channel name table */ 7 15 2 queue_lock bit (36), /* lock used to serialize queueing operations */ 7 16 2 pad (11) fixed bin, 7 17 2 lcte_array (lct_size refer (lct.max_no_lctes)) like lcte; /* lct entries */ 7 18 7 19 7 20 dcl 1 lcte aligned based (lctep), /* logical channel table entry */ 7 21 2 lock bit (36), /* channel lock */ 7 22 2 data_base_ptr ptr unal, /* ptr to channel data base */ 7 23 2 channel_type fixed bin (8) unal, /* identifies channel manager program */ 7 24 2 flags unal, 7 25 3 entry_in_use bit (1) unal, /* ON if this entry in use */ 7 26 3 initialized bit (1) unal, /* ON if this channel initialized */ 7 27 3 notify_reqd bit (1) unal, /* ON if must notify when unlocking this channel */ 7 28 3 locked_for_interrupt bit (1) unal, /* ON if lock set by interrupt handler */ 7 29 3 space_needed bit (1) unal, /* ON if this channel needs buffer space */ 7 30 3 special_lock bit (1) unal, /* ON if lock is managed by multiplexer */ 7 31 3 trace_force bit (1) unal, /* ON to trace based on next bit only */ 7 32 /* OFF to XOR next bit with tty_buf.default_tracing */ 7 33 3 trace bit (1) unal, /* ON to trace this channel */ 7 34 3 unused bit (1) unal, 7 35 2 physical_channel_devx fixed bin (17) unal, /* devx of physical chan from which logical chan is derived */ 7 36 2 major_channel_info, 7 37 3 major_channel_devx fixed bin unal, /* major channel device index */ 7 38 3 subchannel fixed bin (17) unal, /* subchannel id (or data ptr) wrt major channel */ 7 39 2 queue_entries, 7 40 3 queue_head bit (18) unal, /* ptr to first queue entry for this channel */ 7 41 3 queue_tail bit (18) unal, /* ptr to last queue entry for this channel */ 7 42 2 word_counts, 7 43 3 input_words fixed bin (17) unal, /* number of input words charged to this channel */ 7 44 3 output_words fixed bin (17) unal, /* number of output words charged to this channel */ 7 45 7 46 2 meters, 7 47 3 in_bytes fixed bin (35), 7 48 3 out_bytes fixed bin (35), 7 49 3 in, 7 50 4 calls fixed bin (35), 7 51 4 interrupts fixed bin (35), 7 52 4 call_time fixed bin (71), 7 53 4 interrupt_time fixed bin (71), 7 54 3 out like lcte.meters.in, 7 55 3 control like lcte.meters.in, 7 56 2 saved_meters_ptr ptr, /* pointer to unwired copy of meters saved at last dialup */ 7 57 7 58 2 timer_offset bit (18) aligned, /* Head of list of timers for this channel */ 7 59 7 60 2 pad (3) fixed bin (35); 7 61 7 62 7 63 dcl lcntp ptr; /* ptr to logical channel name table */ 7 64 7 65 dcl 1 lcnt aligned based (lcntp), /* logical channel name table */ 7 66 2 names (lct.max_no_lctes) char (32) unal; /* channel names */ 7 67 7 68 dcl 1 saved_meters aligned based like lcte.meters; /* meters saved at dialup, allocated in tty_area */ 7 69 7 70 7 71 /* END INCLUDE FILE ... lct.incl.pl1 */ 665 8 1 /* BEGIN INCLUDE FILE ... tty_buf.incl.pl1 */ 8 2 8 3 /* Date Last Modified and Reason 8 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 8 5* Modified January 1978 by Robert Coren and Larry Johnson for variable-size buffers 8 6* Modified 2/6/78 by Robert Coren to make circular_queue size settable 8 7* Modified Aug 78 by J. Nicholls to move the buffer block format to a file of its own 8 8* and wtcb to its own plus other modification for ring 0 multiplexing, tty_buffer_block.incl.pl1 8 9* Modified 7/17/79 by B. Greenberg for echo negotiation meters. 8 10* Modified November 1979 by C. Hornig for MCS tracing. 8 11* Modified December 1979 by Robert Coren to add FNP channel lock meter 8 12* Modified February 1980 by Robert Coren to remove all references to circular buffer 8 13* Modified March 1980 by Robert Coren to reorganize metering information 8 14* Modified December 1980 by Robert Coren to add FNP-specific events 8 15* Modified 24 March 1982, W. Olin Sibert, to add mcs_timer support, recoverable_error_severity 8 16* Modified November 1984 by Robert Coren to add tty_area_lock 8 17**/ 8 18 8 19 dcl ttybp ptr, 8 20 tty_buf$ ext static, /* tty buffer segment */ 8 21 tty_ev fixed bin int static options (constant) init (57), /* event used for wait and notify */ 8 22 abs_buf_limit fixed bin (18) static options (constant) init (64), /* minimum number of words we will leave free */ 8 23 input_bpart fixed bin (18) static options (constant) init (2), /* fraction of bleft we will allow for input */ 8 24 output_bpart fixed bin (18) static options (constant) init (4); /* fraction of bleft we will allow for output */ 8 25 8 26 8 27 dcl qblock_size fixed bin int static options (constant) init (16); /* size in words of a delay queue block */ 8 28 dcl bsizec fixed bin int static options (constant) init (60); /* number of characters in smallest buffer */ 8 29 dcl buf_per_second fixed bin int static options (constant) init (10); /* for figuring out max. buffer size based on speed */ 8 30 8 31 dcl FNP_DUMP_PATCH_EVENT fixed bin int static options (constant) init (58); 8 32 dcl FNP_METER_EVENT fixed bin int static options (constant) init (59); 8 33 dcl TTY_AREA_LOCK_EVENT bit (36) aligned int static options (constant) init ("74"b3); 8 34 8 35 dcl 1 tty_buf aligned based (ttybp), /* declaration of tty buffer seg */ 8 36 2 slock bit (36), /* per system lock */ 8 37 2 absorig fixed bin (24), /* abs address of this seg */ 8 38 2 borig bit (18), /* index of start of buffer area */ 8 39 2 bleft fixed bin (18), /* words left in pool */ 8 40 2 free bit (18), /* pointer to start of free pool */ 8 41 2 fnp_config_flags (8) bit (1) unal, /* flag(i) ON if fnp(i) configured */ 8 42 2 padb1 bit (28) unaligned, 8 43 2 lct_ptr ptr, /* pointer to logical channel table */ 8 44 8 45 2 nrawread fixed bin (35), /* number of raw chars input, total */ 8 46 2 nrawwrite fixed bin (35), /* number of raw characters output */ 8 47 2 ninchars fixed bin (35), /* total input chars after conversion */ 8 48 2 noutchars fixed bin (35), /* total output chars before conversion */ 8 49 2 readblocked fixed bin (35), /* number of times go input blocked */ 8 50 2 nblocked fixed bin (35), /* number of times process output blocked */ 8 51 2 minbuf fixed bin (18), /* min output buffer size */ 8 52 2 totbuf fixed bin (35), /* divide by nblocked to get ave buffer size */ 8 53 8 54 2 preconverted fixed bin (35), /* number of converted chars held in tty_buf */ 8 55 2 input_restart fixed bin, /* number of times tty_read had to start over */ 8 56 2 output_restart fixed bin, /* number of times tty_write has had to start over */ 8 57 2 output_buffer_overflow fixed bin, /* number of times tty_write has run out of buffers */ 8 58 2 read_time fixed bin (71), /* total time spent in tty_read */ 8 59 2 write_time fixed bin (71), /* total time spent in tty_write */ 8 60 8 61 2 read_calls fixed bin (35), /* number of calls to tty_read */ 8 62 2 write_calls fixed bin (35), /* number of calls to tty_write */ 8 63 2 bfx fixed bin, /* used in calls to iobm */ 8 64 2 nquits fixed bin (35), /* number of quits */ 8 65 2 space_needed_data, 8 66 3 space_needed bit (1) unal, /* space_needed bit on in at least 1 lcte */ 8 67 3 space_needed_calls fixed bin (34) unal, /* meter of uses of this facility */ 8 68 2 space_lock_count fixed bin (35), /* count of times tty_buf.slock locked */ 8 69 2 space_lock_wait_count fixed bin (35), /* count of times necessary to loop to lock it */ 8 70 2 space_lock_wait_time fixed bin (35), /* total time looped trying to lock it */ 8 71 8 72 2 alloc_calls fixed bin (35), /* total number of allocations performed in tty_buf */ 8 73 2 free_calls fixed bin (35), /* total number of freeings in tty_buf */ 8 74 2 alloc_time fixed bin (35), /* time spent masked in tty_space_man$get entries */ 8 75 2 free_time fixed bin (35), /* time spent masked in tty_space_man$free entries */ 8 76 2 total_alloc_steps fixed bin (35), /* number of steps thru free chain while doing above */ 8 77 2 alloc_failures fixed bin (35), /* number of unsuccessful attempts to allocate space */ 8 78 2 cumulative_input_space fixed bin (71), /* cumulative amount of space allocated for input */ 8 79 8 80 2 cumulative_output_space fixed bin (71), /* cumulative amount of space allocated for output */ 8 81 2 cumulative_control_space fixed bin (71), /* cumulative amount of space allocated by tty_space_man$get_space */ 8 82 2 input_space_updates fixed bin (35), /* number of increments to cumulative_input_space */ 8 83 2 output_space_updates fixed bin (35), /* number of increments to cumulative_output_space */ 8 84 2 control_space_updates fixed bin (35), /* number of increments to cumulative_control_space */ 8 85 2 minimum_free_space fixed bin (18), /* smallest amount of free space ever available */ 8 86 8 87 2 current_input_space fixed bin (18), /* amount of space currently allocated for input */ 8 88 2 current_output_space fixed bin (18), /* amount of space currently allocated for output */ 8 89 2 current_control_space fixed bin (18), /* amount of space currently allocated by get_space */ 8 90 2 tty_lock_calls fixed bin (35), /* number of calls to tty_lock$lock entries */ 8 91 2 found_channel_locked fixed bin (35), /* number of times tty_lock found channel already locked */ 8 92 2 max_wait_time fixed bin (35), /* longest time waited for any channel lock */ 8 93 2 total_wait_time fixed bin (71), /* total amount of time spent waiting for channel locks */ 8 94 8 95 2 echo_neg_time fixed bin (71), /* cumulative time spent doing echo negotiation */ 8 96 2 echo_neg_interrupts fixed bin (35), /* Echo-negotiated shipments */ 8 97 2 echo_neg_r0_chars fixed bin (35), /* Chars echoed by ring 0 */ 8 98 2 echo_neg_mux_chars fixed bin (35), /* Chars echoed by mux */ 8 99 2 echo_neg_sndopt_restarts fixed bin (35), /* Echo reinits */ 8 100 2 echo_neg_mux_nonecho fixed bin (35), 8 101 2 echo_neg_entries fixed bin (35), /* Entries into negotiate */ 8 102 8 103 2 echo_neg_mux_inhibit bit (1) aligned, /* For testing */ 8 104 2 n_queued_interrupts fixed bin (35), /* number of interrupts queued by tty_lock */ 8 105 2 trace unaligned, /* tracing information */ 8 106 3 flags, 8 107 4 enable bit, /* global tracing control */ 8 108 4 default_mode bit, /* whether to trace channels by default */ 8 109 4 read bit, /* read */ 8 110 4 write bit, /* write */ 8 111 4 data bit, /* buffers on reads and writes */ 8 112 4 control bit, /* control, priv_control, and hpriv_control */ 8 113 4 modes bit, /* (get set check)_modes */ 8 114 4 interrupt bit, /* interrupt, interrupt_later */ 8 115 4 init bit, /* init_multiplexer, terminate_multiplexer */ 8 116 4 start bit, /* start, stop */ 8 117 4 shutdown bit, /* shutdown */ 8 118 4 space_man bit, /* tty_space_man$* */ 8 119 4 pad_flags bit (6), 8 120 3 data_offset bit (18), /* offset of tracing data */ 8 121 8 122 2 recoverable_error_severity fixed bin, /* Syserr severity for recoverable MCS errors */ 8 123 8 124 2 timer_lock bit (36) aligned, /* Lock owned by mcs_timer */ 8 125 2 next_timer_offset bit (18) aligned, /* Offset of next timer to come due */ 8 126 2 timer_count fixed bin, /* Number of timers outstanding */ 8 127 2 timer_process bit (36) aligned, /* Who is doing timers? */ 8 128 8 129 2 timer_ev_chn fixed bin (71), /* How get get him */ 8 130 2 timer_lock_wait_time fixed bin (71), /* CPU time spent spinning on timer lock */ 8 131 8 132 2 timer_lock_count fixed bin (35), /* Number of times timer lock locked */ 8 133 2 timer_lock_wait_count fixed bin (35), /* Number of times imer lock waited on */ 8 134 2 timer_call_time fixed bin (71), /* CPU time spent in call side timer operations */ 8 135 8 136 2 timer_polling_time fixed bin (71), /* CPU time spent polling (including channel_manager) */ 8 137 2 timer_set_calls fixed bin (35), /* Number of calls to mcs_timer$set, set_wired */ 8 138 2 timer_reset_calls fixed bin (35), /* Number of calls to mcs_timer$reset, reset_wired */ 8 139 8 140 2 timer_change_calls fixed bin (35), /* Number of calls to mcs_timer$change, change_wired */ 8 141 2 timer_poll_calls fixed bin (35), /* Number of calls to mcs_timer$poll */ 8 142 2 timer_error_calls fixed bin (35), /* Number of mcs_timer calls ending with recoverable errors */ 8 143 2 timer_duplicate_pollings fixed bin (35), /* Number of timer polling found in progress on other CPU */ 8 144 8 145 2 tty_area_lock like hc_fast_lock, /* to prevent contention in allocating/freeing in tty_area */ 8 146 8 147 2 pad2 (13) fixed bin (35), 8 148 8 149 2 free_space fixed bin; /* start of free space region */ 8 150 8 151 9 1 /* BEGIN INCLUDE FILE...hc_fast_lock.incl.pl1 */ 9 2 9 3 /* Created November 1984 by Robert Coren to replace hc_lock.incl.pl1 */ 9 4 9 5 /* Lock format suitable for use with lock$lock_fast, unlock_fast */ 9 6 9 7 /* format: style3 */ 9 8 9 9 declare lock_ptr pointer; 9 10 declare 1 hc_fast_lock aligned based (lock_ptr), 9 11 2 pid bit (36) aligned, /* holder of lock */ 9 12 2 event bit (36) aligned, /* event associated with lock */ 9 13 2 flags aligned, 9 14 3 notify_sw bit (1) unaligned, 9 15 3 pad bit (35) unaligned; /* certain locks use this pad, like dirs */ 9 16 9 17 /* END INCLUDE FILE...hc_fast_lock.incl.pl1 */ 8 152 8 153 8 154 /* END INCLUDE FILE ... tty_buf.incl.pl1 */ 666 10 1 /* BEGIN INCLUDE FILE ... tty_space_man_dcls.incl.pl1 */ 10 2 10 3 /* This include file declares all the entries in tty_space_man and defines the constants 10 4** to be used for the flags argument 10 5** Modified 08/21/78 by Robert Coren to eliminate "masked" flag 10 6** Modified March 1981 by Robert Coren to add get_perm_space entry 10 7** Modified April 1981 by Robert Coren to add switch_chain entry 10 8**/ 10 9 10 10 dcl tty_space_man$get_space entry (fixed bin, ptr); 10 11 dcl tty_space_man$get_perm_space entry (fixed bin, ptr); 10 12 dcl tty_space_man$free_space entry (fixed bin, ptr); 10 13 dcl tty_space_man$get_buffer entry (fixed bin, fixed bin, bit (1), ptr); 10 14 dcl tty_space_man$free_buffer entry (fixed bin, bit (1), ptr); 10 15 dcl tty_space_man$get_chain entry (fixed bin, fixed bin, fixed bin, bit (1), ptr); 10 16 dcl tty_space_man$free_chain entry (fixed bin, bit (1), ptr); 10 17 dcl tty_space_man$switch_chain entry (fixed bin, fixed bin, bit (1), bit (1), ptr); 10 18 dcl tty_space_man$needs_space entry (fixed bin); 10 19 10 20 dcl INPUT bit (1) int static options (constant) init ("0"b); 10 21 dcl OUTPUT bit (1) int static options (constant) init ("1"b); 10 22 10 23 /* END INCLUDE FILE ... tty_space_man_dcls.incl.pl1 */ 667 11 1 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 11 2 11 3 /* Written November 10 1975 by Paul Green */ 11 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 11 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 11 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 11 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 11 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 11 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 11 10 11 11 11 12 /****^ HISTORY COMMENTS: 11 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 11 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 11 15* Add a DSA line type. 11 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 11 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 11 18* Add HASP_OPR to identify HASP workstation consoles with login service. 11 19* END HISTORY COMMENTS */ 11 20 11 21 11 22 declare (LINE_MC initial (-2), 11 23 LINE_TELNET initial (-1), 11 24 LINE_UNKNOWN initial (0), 11 25 LINE_ASCII initial (1), 11 26 LINE_1050 initial (2), 11 27 LINE_2741 initial (3), 11 28 LINE_ARDS initial (4), 11 29 LINE_SYNCH initial (5), 11 30 LINE_G115 initial (6), 11 31 LINE_BSC initial (7), 11 32 LINE_ETX initial (8), 11 33 LINE_VIP initial (9), 11 34 LINE_ASYNC1 initial (10), 11 35 LINE_ASYNC2 initial (11), 11 36 LINE_ASYNC3 initial (12), 11 37 LINE_SYNC1 initial (13), 11 38 LINE_SYNC2 initial (14), 11 39 LINE_SYNC3 initial (15), 11 40 LINE_POLLED_VIP initial (16), 11 41 LINE_X25LAP initial (17), 11 42 LINE_HDLC initial (18), 11 43 LINE_COLTS initial (19), 11 44 LINE_DSA initial (20), 11 45 LINE_HASP_OPR initial (21) 11 46 ) fixed bin internal static options (constant); 11 47 11 48 dcl max_line_type fixed bin int static options (constant) init (21); 11 49 11 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 11 51 11 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 11 53 11 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 11 55 "MC", /* -2 */ 11 56 "TELNET", /* -1 */ 11 57 "none", /* 0 */ 11 58 "ASCII", /* 1 */ 11 59 "1050", /* 2 */ 11 60 "2741", /* 3 */ 11 61 "ARDS", /* 4 */ 11 62 "Sync", /* 5 */ 11 63 "G115", /* 6 */ 11 64 "BSC", /* 7 */ 11 65 "202ETX", /* 8 */ 11 66 "VIP", /* 9 */ 11 67 "ASYNC1", /* 10 */ 11 68 "ASYNC2", /* 11 */ 11 69 "ASYNC3", /* 12 */ 11 70 "SYNC1", /* 13 */ 11 71 "SYNC2", /* 14 */ 11 72 "SYNC3", /* 15 */ 11 73 "POLLED_VIP", /* 16 */ 11 74 "X25LAP", /* 17 */ 11 75 "HDLC", /* 18 */ 11 76 "COLTS", /* 19 */ 11 77 "DSA", /* 20 */ 11 78 "HASP_OPR"); /* 21 */ 11 79 11 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 668 12 1 /* BEGIN INCLUDE FILE ... mcs_modes_change_list.incl.pl1 */ 12 2 12 3 /* Created 4/9/79 by J. Stern */ 12 4 /* Modified: 10 November 1980 by G. Palter to add can_type */ 12 5 12 6 12 7 dcl mclp ptr; 12 8 dcl mcl_version_2 fixed bin int static options (constant) init (2); 12 9 12 10 dcl 1 mcl aligned based (mclp), /* modes change list */ 12 11 2 version fixed bin, /* version number of this structure (Input) */ 12 12 2 n_entries fixed bin, /* number of mode change entries (Input) */ 12 13 2 line_len fixed bin, /* new line length (-1 => no change) (Input) */ 12 14 2 page_len fixed bin, /* new page length (-1 => no change) (Input) */ 12 15 2 can_type fixed binary, /* new canonicalization type (-1 => no change) (Input) */ 12 16 2 flags, 12 17 3 init bit (1) unal, /* ON if all modes to be reinitialized (Input) */ 12 18 3 ll_error bit (1) unal, /* ON if line length error detected (Output) */ 12 19 3 pl_error bit (1) unal, /* ON if page length error detected (Output) */ 12 20 3 can_type_error bit (1) unaligned, /* ON if can_type error detected (Output) */ 12 21 3 mbz bit (32) unal, 12 22 2 entries (36) like mcle; /* one entry per mode change */ 12 23 12 24 dcl mclep ptr; 12 25 12 26 dcl 1 mcle aligned based (mclep), /* mode change list entry */ 12 27 2 mode_name char (16) unal, /* name of mode to change (Input) */ 12 28 2 flags, 12 29 3 mode_switch bit (1) unal, /* ON to turn mode on, else OFF (Input) */ 12 30 3 force bit (1) unal, /* ON to ignore errors for this mode change (Input) */ 12 31 3 mpx_mode bit (1) unal, /* ON if mode recognized by multiplexer (Output) */ 12 32 3 error bit (1) unal, /* ON if mode change is in error (Output) */ 12 33 3 mbz bit (32) unal; 12 34 12 35 12 36 /* END INCLUDE FILE ... mcs_modes_change_list.incl.pl1 */ 669 13 1 /* BEGIN INCLUDE FILE mode_string_info.incl.pl1 */ 13 2 13 3 /* Structure for parse_mode_string_ JRDavis 20 October 1980 13 4* Last modified 12 January 1981 by J. Spencer Love for version 2, make char_value varying string */ 13 5 13 6 declare mode_value_ptr ptr, 13 7 number_of_modes fixed bin; 13 8 13 9 declare 1 mode_string_info aligned based (mode_string_info_ptr), 13 10 2 version fixed bin, 13 11 2 number fixed bin, 13 12 2 modes (number_of_modes refer (mode_string_info.number)) like mode_value; 13 13 13 14 declare mode_string_info_ptr ptr; 13 15 13 16 declare 1 mode_value aligned based (mode_value_ptr), 13 17 2 version fixed bin, 13 18 2 mode_name char (32) unaligned, 13 19 2 flags, 13 20 3 boolean_valuep bit (1) unaligned, 13 21 3 numeric_valuep bit (1) unaligned, 13 22 3 char_valuep bit (1) unaligned, 13 23 3 boolean_value bit (1) unaligned, 13 24 3 pad1 bit (32) unaligned, 13 25 2 numeric_value fixed bin (35), 13 26 2 char_value char (32) varying, 13 27 2 code fixed bin (35), 13 28 2 pad2 bit (36); 13 29 13 30 declare mode_string_info_version_2 fixed bin static options (constant) initial (2), 13 31 mode_value_version_3 fixed bin static options (constant) initial (3); 13 32 13 33 /* END INCLUDE FILE mode_string_info.incl.pl1 */ 670 14 1 /* BEGIN INCLUDE FILE ... tty_mode_names.incl.pl1 */ 14 2 14 3 /* Defines internal static character strings for all legal tty modes */ 14 4 /* Created 6/17/75 by Robert Coren */ 14 5 /* modified 4/10/79 by J. Stern to add MPX_MODES */ 14 6 /* modified 8/13/79 by Robert Coren to add iflow & oflow */ 14 7 /* modified 1/21/80 by Robert Coren to add no_outp, oddp, & 8bit */ 14 8 /* modified 03/30/82 by Richard Lamson to add "ll", "pl", and "can_type" 14 9* and to reorganize modestr to be defined on MODE_NAME */ 14 10 14 11 14 12 /****^ HISTORY COMMENTS: 14 13* 1) change(88-07-05,Parisek), approve(88-07-05,MCR7928), 14 14* audit(88-07-08,Beattie), install(88-07-19,MR12.2-1061): 14 15* Changed declaration of modestr to use the "simple defining" technique 14 16* thus fixing compilation errors resulting from the use of the "isub" 14 17* value within a "isub defining" technique (defining techniques as 14 18* described in Multics PL/I Reference Manual - AM83). 14 19* END HISTORY COMMENTS */ 14 20 14 21 14 22 dcl n_modes fixed bin int static init (29); /* number of valid modes */ 14 23 14 24 declare MODE_NAME (-2:29) character (8) internal static options (constant) initial 14 25 ("ll", "pl", "can_type", /* -2 : 0 */ 14 26 "edited", "tabs", "can", "esc", /* 1 : 4 */ 14 27 "erkl", "rawi", "rawo", "red", /* 5 : 8 */ 14 28 "vertsp", "crecho", "lfecho", "tabecho", /* 9 : 12 */ 14 29 "hndlquit", "fulldpx", "echoplex", "capo", /* 13 : 16 */ 14 30 "replay", "polite", "ctl_char", "blk_xfer", /* 17 : 20 */ 14 31 "breakall", "scroll", "prefixnl", "wake_tbl", /* 21 : 24 */ 14 32 "iflow", "oflow", "no_outp", "8bit", /* 25 : 28 */ 14 33 "oddp"); /* 29 : 29 */ 14 34 14 35 14 36 declare modestr (1:29) character (8) unaligned defined (MODE_NAME (1)); 14 37 14 38 /* MPX_MODES (i) = "1"b => modestr (i) must be implemented by a multiplexer */ 14 39 14 40 dcl MPX_MODES (29) bit (1) int static options (constant) init 14 41 ("0"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, /* edited -> red */ 14 42 "0"b, "1"b, "1"b, "1"b, "0"b, "1"b, "1"b, "0"b, /* vertsp -> capo */ 14 43 "1"b, "1"b, "0"b, "1"b, "1"b, "0"b, "1"b, "0"b, /* replay -> wake_tbl */ 14 44 "1"b, "1"b, "1"b, "1"b, "1"b); /* iflow -> oddp */ 14 45 14 46 14 47 /* END INCLUDE FILE ... tty_mode_names.incl.pl1 */ 671 15 1 /* BEGIN INCLUDE FILE...tty_access_class.incl.pl1 */ 15 2 15 3 15 4 15 5 /****^ HISTORY COMMENTS: 15 6* 1) change(85-07-29,Swenson), approve(86-08-13,MCR7512), 15 7* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 15 8* Modified to align an unaligned bit value to get around compiler's padded 15 9* reference bug. 15 10* END HISTORY COMMENTS */ 15 11 15 12 15 13 /* Defines structure used by "get_required_access_class" control order */ 15 14 15 15 /* History: 15 16* 1983-04-25, Robert Coren. 15 17**/ 15 18 15 19 dcl tty_access_class_ptr pointer; 15 20 15 21 dcl 1 tty_access_class aligned based (tty_access_class_ptr), 15 22 2 access_class bit (72), /* access class assigned to the channel */ 15 23 2 access_class_set bit (1) aligned; /* "1"b => there is an access class associated with the channel */ 15 24 15 25 /* NOTE: if access_class_set = "0"b, access_class field is meaningless */ 15 26 15 27 /* END INCLUDE FILE...tty_access_class.incl.pl1 */ 672 673 674 end sty_mpx; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0803.8 sty_mpx.pl1 >spec>install>1111>sty_mpx.pl1 659 1 09/21/83 1241.7 sty_mpx_data.incl.pl1 >ldd>include>sty_mpx_data.incl.pl1 660 2 03/29/82 1006.8 foreign_terminal_data.incl.pl1 >ldd>include>foreign_terminal_data.incl.pl1 661 3 10/20/82 0938.6 mcs_interrupt_info.incl.pl1 >ldd>include>mcs_interrupt_info.incl.pl1 662 4 07/21/88 2036.0 tty_buffer_block.incl.pl1 >ldd>include>tty_buffer_block.incl.pl1 663 5 05/06/80 0958.2 channel_manager_dcls.incl.pl1 >ldd>include>channel_manager_dcls.incl.pl1 664 6 02/23/79 1434.9 mux_init_info.incl.pl1 >ldd>include>mux_init_info.incl.pl1 665 7 11/08/82 1005.8 lct.incl.pl1 >ldd>include>lct.incl.pl1 666 8 01/06/85 1422.1 tty_buf.incl.pl1 >ldd>include>tty_buf.incl.pl1 8-152 9 01/06/85 1422.1 hc_fast_lock.incl.pl1 >ldd>include>hc_fast_lock.incl.pl1 667 10 06/18/81 0900.8 tty_space_man_dcls.incl.pl1 >ldd>include>tty_space_man_dcls.incl.pl1 668 11 08/06/87 0913.4 line_types.incl.pl1 >ldd>include>line_types.incl.pl1 669 12 03/19/81 1131.8 mcs_modes_change_list.incl.pl1 >ldd>include>mcs_modes_change_list.incl.pl1 670 13 03/19/81 1206.8 mode_string_info.incl.pl1 >ldd>include>mode_string_info.incl.pl1 671 14 07/21/88 2036.0 tty_mode_names.incl.pl1 >ldd>include>tty_mode_names.incl.pl1 672 15 09/18/86 1308.0 tty_access_class.incl.pl1 >ldd>include>tty_access_class.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. CRASH 000130 constant fixed bin(17,0) initial dcl 3-12 set ref 493* Chainp parameter pointer dcl 33 set ref 236 244 251 256* 259* 264 276 283 287* 290* 295 299* 304* 307* 322* Code parameter fixed bin(35,0) dcl 33 set ref 104 107* 121* 148* 155* 166* 180* 184* 198* 199* 203* 208* 213* 221* 230* 236 239* 295 298* 330 333* 338* 353 356* 361* 396 399* 403* 410 413* 419* 449* 455 458* 475 478* 486 489* 501 504* DIALUP 000124 constant fixed bin(17,0) initial dcl 3-10 set ref 614* 615* Devx parameter fixed bin(17,0) dcl 33 ref 410 433 Dp parameter pointer dcl 33 set ref 104 236 295 330 353 396 410 446* 455 459 475 479 486 490 501 505 515* 523 FF_CR_LF 000102 constant char(3) initial packed unaligned dcl 95 ref 252 FOREIGN_TERMINAL_DATA_VERSION_1 000100 constant char(8) initial dcl 2-4 ref 183 HANGUP 000127 constant fixed bin(17,0) initial dcl 3-11 set ref 125* 126* INPUT 000116 constant bit(1) initial packed unaligned dcl 10-20 set ref 307* 312* INPUT_AVAILABLE 000117 constant fixed bin(17,0) initial dcl 3-14 set ref 140* 278* Infop parameter pointer dcl 33 ref 104 108 LINE_ASCII constant fixed bin(17,0) initial dcl 11-22 ref 612 LINE_STATUS 000133 constant fixed bin(17,0) initial dcl 3-18 set ref 170* 580* MODE_NAME 000000 constant char(8) initial array packed unaligned dcl 14-24 set ref 403* Miip parameter pointer dcl 33 ref 410 416 Mode_list parameter pointer dcl 33 ref 330 336 353 359 Modes parameter char packed unaligned dcl 33 set ref 396 400* 403* 404 404 404 404* More_sw parameter bit(1) dcl 33 set ref 295 300* OUTPUT 000114 constant bit(1) initial packed unaligned dcl 10-21 set ref 256* 307* 538* Order parameter char packed unaligned dcl 33 ref 104 111 116 124 138 143 151 158 164 173 175 177 197 212 225 226 227 228 Pde parameter structure level 1 dcl 650 in procedure "send_output" set ref 648 Pde parameter structure level 1 dcl 534 in procedure "abort" set ref 532 541* Pde parameter structure level 1 dcl 632 in procedure "reset" set ref 630 QUIT 000120 constant fixed bin(17,0) initial dcl 3-17 set ref 160* Reset_ac parameter bit(1) packed unaligned dcl 633 ref 630 637 639 641 SEND_OUTPUT 000131 constant fixed bin(17,0) initial dcl 3-13 set ref 654* Subchan parameter fixed bin(17,0) dcl 33 ref 104 236 295 330 353 396 525 526 access_class 30 based bit(72) level 2 in structure "her_pde" dcl 45 in procedure "sty_mpx" set ref 129* 206* access_class based bit(72) level 2 in structure "tty_access_class" dcl 15-21 in procedure "sty_mpx" set ref 217* 219* access_class 30 based bit(72) level 2 in structure "my_pde" dcl 44 in procedure "sty_mpx" set ref 129* 199 206* 217 access_class 30 parameter bit(72) level 2 in structure "Pde" dcl 632 in procedure "reset" set ref 641* access_class_set 1(05) based bit(1) level 3 in structure "her_pde" packed packed unaligned dcl 45 in procedure "sty_mpx" set ref 127* 207* access_class_set 2 based bit(1) level 2 in structure "tty_access_class" dcl 15-21 in procedure "sty_mpx" set ref 216* access_class_set 1(05) parameter bit(1) level 3 in structure "Pde" packed packed unaligned dcl 632 in procedure "reset" set ref 637 639* access_class_set 1(05) based bit(1) level 3 in structure "my_pde" packed packed unaligned dcl 44 in procedure "sty_mpx" set ref 127* 199 207* 216 217 addr builtin function dcl 98 ref 267 283 290 304 414 436 464 466 508 525 526 538 538 557 557 562 562 571 571 area 000114 stack reference condition dcl 100 ref 189 428 area_ptr 2 based pointer level 2 dcl 2-5 ref 190 based_access_class based bit(72) dcl 49 ref 199 206 based_area based area(1024) dcl 47 ref 190 based_line_status based bit(72) dcl 66 ref 169 based_modes based fixed bin(35,0) array dcl 51 set ref 190 192* 192 binary builtin function dcl 98 ref 276 277 283 284 blocko 000113 automatic fixed bin(18,0) unsigned dcl 92 set ref 265* 266 267 268* 287 290 blockp 000140 automatic pointer dcl 4-19 set ref 251* 252 252 252 252 264* 265 266 267* 268 271 272 273 277 284 312* 313 315 317 317 318 319 320 322 break 0(20) based bit(1) level 3 packed packed unaligned dcl 4-28 set ref 272* 319* buffer based structure level 1 dcl 4-28 can_type 4 based fixed bin(17,0) level 2 dcl 12-10 set ref 380 381* can_type_error 5(03) based bit(1) level 3 packed packed unaligned dcl 12-10 set ref 342* 370* 382* channel_manager$interrupt_later 000046 constant entry external dcl 5-28 ref 125 126 140 160 170 278 493 580 614 615 654 channels 1 based structure array level 2 dcl 6-10 chars 1 based char(1) array level 2 packed packed unaligned dcl 4-28 set ref 252 315* 317 cleanup 000122 stack reference condition dcl 100 ref 424 560 code 000102 automatic fixed bin(35,0) dcl 551 set ref 562* 563 565* 566 571* 572 combined_modes 000113 automatic char(512) packed unaligned dcl 553 set ref 565* 571* currentsize builtin function dcl 98 ref 132 132 133 133 190 192 366 366 426 426 510 510 513 513 destination 1 based char level 2 dcl 55 ref 119 devx 4 based fixed bin(17,0) array level 3 in structure "sty_mpx_data" dcl 1-9 in procedure "sty_mpx" set ref 493* devx based fixed bin(17,0) level 2 in structure "sty_mpx_data" dcl 1-9 in procedure "sty_mpx" set ref 433* devx parameter fixed bin(17,0) level 2 in structure "Pde" dcl 650 in procedure "send_output" set ref 654* devx based fixed bin(17,0) level 2 in structure "my_pde" dcl 44 in procedure "sty_mpx" set ref 126* 140* 256* 307* 312* 439* 442 443 443 615* devx parameter fixed bin(17,0) level 2 in structure "Pde" dcl 534 in procedure "abort" set ref 538* devx based fixed bin(17,0) level 2 in structure "her_pde" dcl 45 in procedure "sty_mpx" set ref 125* 160* 170* 278* 307* 580* 614* devx 11 based fixed bin(17,0) array level 3 in structure "mux_init_info" dcl 6-10 in procedure "sty_mpx" ref 439 dial_out_info based structure level 1 dcl 55 dialup_info 000136 automatic structure level 1 dcl 3-30 set ref 611* 614 614 615 615 divide builtin function dcl 98 ref 434 end_of_page 1(02) parameter bit(1) level 3 in structure "Pde" packed packed unaligned dcl 650 in procedure "send_output" ref 652 end_of_page 1(02) based bit(1) level 3 in structure "my_pde" packed packed unaligned dcl 44 in procedure "sty_mpx" set ref 246 273* end_of_page 1(02) parameter bit(1) level 3 in structure "Pde" packed packed unaligned dcl 534 in procedure "abort" set ref 536* end_of_page 0(18) based bit(1) level 3 in structure "buffer" packed packed unaligned dcl 4-28 in procedure "sty_mpx" set ref 266 273 end_of_page 1(02) based bit(1) level 3 in structure "her_pde" packed packed unaligned dcl 45 in procedure "sty_mpx" set ref 159* 248 249* entries 6 based structure array level 2 dcl 12-10 error 12(03) based bit(1) array level 4 packed packed unaligned dcl 12-10 set ref 346* 388* error_table_$ai_already_set 000020 external static fixed bin(35,0) dcl 69 ref 203 error_table_$inconsistent 000012 external static fixed bin(35,0) dcl 69 ref 419 error_table_$noalloc 000022 external static fixed bin(35,0) dcl 69 ref 449 error_table_$null_info_ptr 000014 external static fixed bin(35,0) dcl 69 ref 121 148 155 166 180 198 213 error_table_$undefined_order_request 000010 external static fixed bin(35,0) dcl 69 ref 230 error_table_$unimplemented_version 000016 external static fixed bin(35,0) dcl 69 ref 184 338 361 flags 1 based structure level 2 in structure "her_pde" dcl 45 in procedure "sty_mpx" flags 5 based structure array level 3 in structure "sty_mpx_data" dcl 1-9 in procedure "sty_mpx" flags 0(18) based structure level 2 in structure "buffer" packed packed unaligned dcl 4-28 in procedure "sty_mpx" set ref 318* flags 1 parameter structure level 2 in structure "Pde" dcl 534 in procedure "abort" flags 5 based structure level 2 in structure "mcl" dcl 12-10 in procedure "sty_mpx" flags 12 based structure array level 3 in structure "mcl" dcl 12-10 in procedure "sty_mpx" flags 1 parameter structure level 2 in structure "Pde" dcl 632 in procedure "reset" set ref 638* flags 1 based structure level 2 in structure "my_pde" dcl 44 in procedure "sty_mpx" flags 1 based structure level 2 in structure "sty_mpx_data" dcl 1-9 in procedure "sty_mpx" flags 1 parameter structure level 2 in structure "Pde" dcl 650 in procedure "send_output" foreign_terminal_data based structure level 1 dcl 2-5 foreign_terminal_data_ptr 000134 automatic pointer dcl 2-3 set ref 178* 179 183 187 190 190 192 formline_ 000026 constant entry external dcl 81 ref 557 hc_fast_lock based structure level 1 dcl 9-10 head 3 parameter fixed bin(18,0) level 2 in structure "Pde" unsigned dcl 650 in procedure "send_output" ref 652 head 3 parameter fixed bin(18,0) level 2 in structure "Pde" unsigned dcl 534 in procedure "abort" set ref 537 538 538 539* head 3 based fixed bin(18,0) level 2 in structure "her_pde" unsigned dcl 45 in procedure "sty_mpx" set ref 140 303 304 306* head 3 based fixed bin(18,0) level 2 in structure "my_pde" unsigned dcl 44 in procedure "sty_mpx" set ref 152 274 276* 438* her_pde based structure level 1 dcl 45 set ref 131* 146* 161* 250* 308* 617* 619* her_pdep 000102 automatic pointer dcl 43 set ref 125 127 129 131 133 133 133 133 134 135 140 146 159 160 161 170 188 190 192 192 194 206 207 248 249 250 278 303 304 306 306 307 308 315 466* 526* 580 608 614 617 619 i 000111 automatic fixed bin(17,0) dcl 90 set ref 344* 345 346* 385* 386 387 387 388* 463* 464 466* 507* 508* in 2 based structure level 2 in structure "saved_meters" dcl 7-68 in procedure "sty_mpx" in 30 based structure array level 4 in structure "lct" dcl 7-11 in procedure "sty_mpx" in 10 based structure level 3 in structure "lcte" dcl 7-20 in procedure "sty_mpx" infop 000104 automatic pointer dcl 53 set ref 108* 117 119 119 144 145 146 152 152 165 169 178 198 199 206 213 216 217 219 init 5 based bit(1) level 3 packed packed unaligned dcl 12-10 ref 365 lct based structure level 1 dcl 7-11 lct_ptr 6 based pointer level 2 dcl 8-35 ref 414 lcte based structure level 1 dcl 7-20 lcte_array 20 based structure array level 2 dcl 7-11 lctp 000144 automatic pointer dcl 7-7 set ref 414* 442 443 len based fixed bin(21,0) level 2 dcl 55 ref 119 length builtin function dcl 98 ref 317 404 404 557 557 line_len 2 based fixed bin(17,0) level 2 dcl 12-10 set ref 372 373* line_status 000106 automatic bit(72) dcl 67 set ref 169* 170* line_type 000136 automatic fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-30 set ref 612* listen 5 based bit(1) array level 4 in structure "sty_mpx_data" packed packed unaligned dcl 1-9 in procedure "sty_mpx" set ref 494* listen 1 based bit(1) level 3 in structure "her_pde" packed packed unaligned dcl 45 in procedure "sty_mpx" set ref 135* 608 listen 1 based bit(1) level 3 in structure "my_pde" packed packed unaligned dcl 44 in procedure "sty_mpx" set ref 135* 465 623* ll_error 5(01) based bit(1) level 3 packed packed unaligned dcl 12-10 set ref 342* 370* 374* location 10 based char(64) level 2 in structure "her_pde" dcl 45 in procedure "sty_mpx" set ref 315 location 10 parameter char(64) level 2 in structure "Pde" dcl 632 in procedure "reset" set ref 640* location 10 based char(64) level 2 in structure "my_pde" dcl 44 in procedure "sty_mpx" set ref 112* 119* major_channel_info 23 based structure array level 3 dcl 7-11 max_buf_size 1 000136 automatic fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 3-30 set ref 613* mcl based structure level 1 dcl 12-10 mcl_version_2 constant fixed bin(17,0) initial dcl 12-8 ref 337 360 mcle based structure level 1 dcl 12-26 mclp 000146 automatic pointer dcl 12-7 set ref 336* 337 342 342 342 344 345 346 359* 360 365 370 370 370 372 373 374 376 377 378 380 381 382 385 386 387 387 388 meters 26 based structure array level 3 in structure "lct" dcl 7-11 in procedure "sty_mpx" meters 6 based structure level 2 in structure "lcte" dcl 7-20 in procedure "sty_mpx" miip 000142 automatic pointer dcl 6-6 set ref 416* 417 439 mod builtin function dcl 98 ref 418 526 mode_error 000112 automatic bit(1) dcl 91 set ref 374 378 382 388 584* 589* mode_name 6 based char(16) array level 3 packed packed unaligned dcl 12-10 set ref 387* mode_ptr 6 based pointer level 2 in structure "my_pde" dcl 44 in procedure "sty_mpx" set ref 132 132 132 132* 134* 365 366 366 366* 367* 403 403* 440* 510 510 510 510* 565* 574 575* mode_ptr 6 based pointer level 2 in structure "her_pde" dcl 45 in procedure "sty_mpx" set ref 133 133 133 133* 134* 188 190 192 192 mode_string_$combine 000030 constant entry external dcl 82 ref 565 mode_string_$delete 000032 constant entry external dcl 83 ref 403 mode_string_$parse 000034 constant entry external dcl 84 ref 562 571 mode_string_info based structure level 1 dcl 13-9 ref 132 132 133 133 190 192 366 366 510 510 568 576 mode_string_info_ptr 000150 automatic pointer dcl 13-14 in procedure "sty_mpx" set ref 555* 562* 565* 568 569* 571* 575 mode_string_info_ptr 4 based pointer level 2 in structure "foreign_terminal_data" dcl 2-5 in procedure "sty_mpx" set ref 187* 190* 192 mode_switch 12 based bit(1) array level 4 packed packed unaligned dcl 12-10 ref 387 mode_value based structure level 1 dcl 13-16 mpx_mode 12(02) based bit(1) array level 4 packed packed unaligned dcl 12-10 set ref 345* 386 mux_init_info based structure level 1 dcl 6-10 my_pde based structure level 1 dcl 44 set ref 130* 145* 258* 437* 509* 618* 620* my_pdep 000100 automatic pointer dcl 43 set ref 112 119 126 127 129 130 132 132 132 132 134 135 139 140 145 152 199 199 206 207 216 217 217 242 246 256 258 273 274 276 277 283 284 307 311 312 314 365 366 366 366 367 403 403 436* 437 438 438 439 440 442 443 443 464* 465 508* 509 510 510 510 510 525* 565 574 575 579 581 615 618 620 623 n_channels 2 based fixed bin(17,0) level 2 dcl 1-9 set ref 426 426 432* 434 435 492 507 513 513 526 n_entries 1 based fixed bin(17,0) level 2 dcl 12-10 ref 344 385 n_pairs 3 based fixed bin(17,0) level 2 dcl 1-9 set ref 434* 463 466 526 next based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 4-28 set ref 252 265 268 271* 283* 320* no_channels based fixed bin(17,0) level 2 dcl 6-10 ref 417 notify_modes 1(03) based bit(1) level 3 in structure "her_pde" packed packed unaligned dcl 45 in procedure "sty_mpx" set ref 194* notify_modes 1(03) based bit(1) level 3 in structure "my_pde" packed packed unaligned dcl 44 in procedure "sty_mpx" set ref 579 581* null builtin function dcl 98 ref 117 132 133 134 144 152 165 179 187 188 198 213 244 259 287 299 313 365 367 403 423 426 440 510 515 555 569 576 number 1 based fixed bin(17,0) level 2 dcl 13-9 ref 132 132 133 133 190 192 366 366 510 510 568 576 old_ac_flag 000216 automatic bit(1) packed unaligned dcl 635 set ref 637* 639 old_mode_ptr 000100 automatic pointer dcl 550 set ref 574* 576 576 output_pending 2 based bit(1) level 2 dcl 62 set ref 152* output_ready 1(04) based bit(1) level 3 in structure "my_pde" packed packed unaligned dcl 44 in procedure "sty_mpx" set ref 242* output_ready 1(04) parameter bit(1) level 3 in structure "Pde" packed packed unaligned dcl 650 in procedure "send_output" set ref 652 653* page_len 3 based fixed bin(17,0) level 2 dcl 12-10 set ref 376 377* pde based structure level 1 dcl 1-18 pdes 4 based structure array level 2 dcl 1-9 set ref 436 464 466 508 525 526 physical_channel_devx 22(18) based fixed bin(17,0) array level 3 packed packed unaligned dcl 7-11 set ref 443* pl_error 5(02) based bit(1) level 3 packed packed unaligned dcl 12-10 set ref 342* 370* 378* pointer builtin function dcl 98 ref 267 283 290 304 538 538 r 0(01) based bit(1) level 2 packed packed unaligned dcl 59 ref 146 rel builtin function dcl 98 ref 276 277 283 284 reset_ac 000206 automatic bit(1) packed unaligned dcl 598 set ref 600* 606* 617* 618* rtrim builtin function dcl 98 ref 315 317 404 404 rw_abort based structure level 1 dcl 59 sc 000110 automatic fixed bin(17,0) dcl 90 set ref 435* 436 439 442* 492* 493 494* size builtin function dcl 98 ref 430 430 started 1 based bit(1) level 3 packed packed unaligned dcl 1-9 set ref 461* 481* 608 sty_mpx_data based structure level 1 dcl 1-9 set ref 426 426 430 430 513 513 sty_mpx_data_nchan 000132 automatic fixed bin(17,0) dcl 1-8 set ref 417* 418 430 430 432 sty_mpx_data_ptr 000130 automatic pointer dcl 1-7 set ref 423* 426 426 426 426* 430 430 430* 432 433 434 434 435 436 446 459* 461 463 464 466 466 479* 481 490* 492 493 494 505* 507 508 513 513 513* 523* 525 526 526 526 608 subchannel 23(18) based fixed bin(17,0) array level 4 packed packed unaligned dcl 7-11 set ref 442* substr builtin function dcl 98 set ref 252 404 404* tail 4 based fixed bin(18,0) level 2 in structure "my_pde" unsigned dcl 44 in procedure "sty_mpx" set ref 277* 283 284* 438* tail 4 based fixed bin(18,0) level 2 in structure "her_pde" unsigned dcl 45 in procedure "sty_mpx" set ref 306* tail 4 parameter fixed bin(18,0) level 2 in structure "Pde" unsigned dcl 534 in procedure "abort" set ref 539* tally 0(27) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 4-28 set ref 252 252 317* this_mode 000103 automatic char(32) packed unaligned dcl 552 set ref 557 557 557 557 562* tty_access_class based structure level 1 dcl 15-21 tty_area$ 000024 external static area(1024) dcl 79 set ref 562 562 568 571 571 576 tty_area_manager$allocate 000036 constant entry external dcl 85 ref 430 tty_area_manager$free 000040 constant entry external dcl 86 ref 132 133 366 426 510 513 tty_area_manager$lock_area 000042 constant entry external dcl 87 ref 559 tty_area_manager$unlock_area 000044 constant entry external dcl 88 ref 560 577 587 tty_buf based structure level 1 dcl 8-35 tty_buf$ 000050 external static fixed bin(17,0) dcl 8-19 set ref 267 283 290 304 414 538 538 tty_space_man$free_buffer 000054 constant entry external dcl 10-14 ref 256 tty_space_man$free_chain 000056 constant entry external dcl 10-16 ref 538 tty_space_man$get_buffer 000052 constant entry external dcl 10-13 ref 312 tty_space_man$switch_chain 000060 constant entry external dcl 10-17 ref 307 unspec builtin function dcl 98 set ref 611* 614 614 615 615 version based char(8) level 2 in structure "foreign_terminal_data" dcl 2-5 in procedure "sty_mpx" ref 183 version based fixed bin(17,0) level 2 in structure "mcl" dcl 12-10 in procedure "sty_mpx" ref 337 360 w based bit(1) level 2 packed packed unaligned dcl 59 ref 145 write_status based structure level 1 dcl 62 wru 1(01) based bit(1) level 3 packed packed unaligned dcl 44 set ref 139* 311 314* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT_INPUT internal static fixed bin(17,0) initial dcl 3-15 ACKNOWLEDGE_ECHNEGO_INIT internal static fixed bin(17,0) initial dcl 3-22 ACKNOWLEDGE_ECHNEGO_STOP internal static fixed bin(17,0) initial dcl 3-23 DIAL_STATUS internal static fixed bin(17,0) initial dcl 3-19 FNP_DUMP_PATCH_EVENT internal static fixed bin(17,0) initial dcl 8-31 FNP_METER_EVENT internal static fixed bin(17,0) initial dcl 8-32 INPUT_REJECTED internal static fixed bin(17,0) initial dcl 3-16 LINE_1050 internal static fixed bin(17,0) initial dcl 11-22 LINE_2741 internal static fixed bin(17,0) initial dcl 11-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 11-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 11-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 11-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 11-22 LINE_BSC internal static fixed bin(17,0) initial dcl 11-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 11-22 LINE_DSA internal static fixed bin(17,0) initial dcl 11-22 LINE_ETX internal static fixed bin(17,0) initial dcl 11-22 LINE_G115 internal static fixed bin(17,0) initial dcl 11-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 11-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 11-22 LINE_MC internal static fixed bin(17,0) initial dcl 11-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 11-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 11-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 11-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 11-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 11-22 LINE_TELNET internal static fixed bin(17,0) initial dcl 11-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 11-22 LINE_VIP internal static fixed bin(17,0) initial dcl 11-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 11-22 MASKED internal static fixed bin(17,0) initial dcl 3-26 MPX_MODES internal static bit(1) initial array packed unaligned dcl 14-40 SPACE_AVAILABLE internal static fixed bin(17,0) initial dcl 3-21 TIMER internal static fixed bin(17,0) initial dcl 3-24 TTY_AREA_LOCK_EVENT internal static bit(36) initial dcl 8-33 USER_INTERRUPT internal static fixed bin(17,0) initial dcl 3-25 WRU_TIMEOUT internal static fixed bin(17,0) initial dcl 3-20 abs_buf_limit internal static fixed bin(18,0) initial dcl 8-19 based_ev_chn based fixed bin(71,0) dcl 48 bsizec internal static fixed bin(17,0) initial dcl 8-28 buf_per_second internal static fixed bin(17,0) initial dcl 8-29 channel_manager$check_modes 000000 constant entry external dcl 5-19 channel_manager$control 000000 constant entry external dcl 5-13 channel_manager$get_modes 000000 constant entry external dcl 5-22 channel_manager$interrupt 000000 constant entry external dcl 5-25 channel_manager$queued_interrupt 000000 constant entry external dcl 5-31 channel_manager$read 000000 constant entry external dcl 5-7 channel_manager$set_modes 000000 constant entry external dcl 5-16 channel_manager$write 000000 constant entry external dcl 5-10 code automatic fixed bin(35,0) dcl 93 error_table_$bad_mode external static fixed bin(35,0) dcl 69 free_block based structure level 1 dcl 4-23 free_blockp automatic pointer dcl 4-20 input_bpart internal static fixed bin(18,0) initial dcl 8-19 interrupt_info automatic bit(72) dcl 3-28 lcnt based structure level 1 dcl 7-65 lcntp automatic pointer dcl 7-63 lct_size automatic fixed bin(17,0) dcl 7-9 lctep automatic pointer dcl 7-8 line_types internal static char(16) initial array packed unaligned dcl 11-54 lock_ptr automatic pointer dcl 9-9 max_buffer_tally internal static fixed bin(17,0) initial array dcl 4-43 max_line_type internal static fixed bin(17,0) initial dcl 11-48 mclep automatic pointer dcl 12-24 mii_chan_count automatic fixed bin(17,0) dcl 6-7 mode_string_info_version_2 internal static fixed bin(17,0) initial dcl 13-30 mode_value_ptr automatic pointer dcl 13-6 mode_value_version_3 internal static fixed bin(17,0) initial dcl 13-30 modestr defined char(8) array packed unaligned dcl 14-36 n_modes internal static fixed bin(17,0) initial dcl 14-22 n_sync_line_types internal static fixed bin(17,0) initial dcl 11-50 number_of_modes automatic fixed bin(17,0) dcl 13-6 output_bpart internal static fixed bin(18,0) initial dcl 8-19 pdep automatic pointer dcl 1-17 qblock_size internal static fixed bin(17,0) initial dcl 8-27 rtx_info automatic structure level 1 dcl 3-38 saved_meters based structure level 1 dcl 7-68 sync_line_type internal static fixed bin(17,0) initial array dcl 11-52 timer_info automatic structure level 1 dcl 3-50 tty_access_class_ptr automatic pointer dcl 15-19 tty_ev internal static fixed bin(17,0) initial dcl 8-19 tty_space_man$free_space 000000 constant entry external dcl 10-12 tty_space_man$get_chain 000000 constant entry external dcl 10-15 tty_space_man$get_perm_space 000000 constant entry external dcl 10-11 tty_space_man$get_space 000000 constant entry external dcl 10-10 tty_space_man$needs_space 000000 constant entry external dcl 10-18 ttybp automatic pointer dcl 8-19 NAMES DECLARED BY EXPLICIT CONTEXT. abort 003141 constant entry internal dcl 532 ref 130 131 145 146 509 bad_mode 003473 constant label dcl 587 ref 563 566 572 bring_up 003504 constant entry internal dcl 595 ref 467 bring_up_join 003513 constant label dcl 608 ref 601 bring_up_keep_ac 003510 constant entry internal dcl 603 ref 113 118 check_modes 001730 constant entry external dcl 330 control 000322 constant entry external dcl 104 get_modes 002271 constant entry external dcl 396 init_multiplexer 002406 constant entry external dcl 410 new_mode 003205 constant entry internal dcl 547 ref 173 175 373 377 381 387 noalloc 002625 constant label dcl 449 ref 189 428 read 001537 constant entry external dcl 295 reset 003623 constant entry internal dcl 630 ref 437 617 618 send_output 003666 constant entry internal dcl 648 ref 161 250 258 308 541 619 620 set_modes 002010 constant entry external dcl 353 setup_subchan 003117 constant entry internal dcl 520 ref 109 240 301 334 357 401 shutdown 002732 constant entry external dcl 486 start 002635 constant entry external dcl 455 stop 002710 constant entry external dcl 475 sty_mpx 000307 constant entry external dcl 15 terminate_multiplexer 003011 constant entry external dcl 501 write 001263 constant entry external dcl 236 NAMES DECLARED BY CONTEXT OR IMPLICATION. string builtin function set ref 252 315* 317 318* 638* verify builtin function ref 252 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4542 4624 4130 4552 Length 5412 4130 62 551 411 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME sty_mpx 248 external procedure is an external procedure. on unit on line 189 64 on unit on unit on line 424 72 on unit on unit on line 428 64 on unit setup_subchan internal procedure shares stack frame of external procedure sty_mpx. abort internal procedure shares stack frame of external procedure sty_mpx. new_mode 246 internal procedure enables or reverts conditions, and is declared options(variable). on unit on line 560 64 on unit bring_up internal procedure shares stack frame of external procedure sty_mpx. reset internal procedure shares stack frame of external procedure sty_mpx. send_output internal procedure shares stack frame of external procedure sty_mpx. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME new_mode 000100 old_mode_ptr new_mode 000102 code new_mode 000103 this_mode new_mode 000113 combined_modes new_mode sty_mpx 000100 my_pdep sty_mpx 000102 her_pdep sty_mpx 000104 infop sty_mpx 000106 line_status sty_mpx 000110 sc sty_mpx 000111 i sty_mpx 000112 mode_error sty_mpx 000113 blocko sty_mpx 000130 sty_mpx_data_ptr sty_mpx 000132 sty_mpx_data_nchan sty_mpx 000134 foreign_terminal_data_ptr sty_mpx 000136 dialup_info sty_mpx 000140 blockp sty_mpx 000142 miip sty_mpx 000144 lctp sty_mpx 000146 mclp sty_mpx 000150 mode_string_info_ptr sty_mpx 000206 reset_ac bring_up 000216 old_ac_flag reset THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc return_mac tra_ext_1 mdfx1 enable_op shorten_stack ext_entry ext_entry_desc int_entry op_alloc_ op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. channel_manager$interrupt_later formline_ mode_string_$combine mode_string_$delete mode_string_$parse tty_area_manager$allocate tty_area_manager$free tty_area_manager$lock_area tty_area_manager$unlock_area tty_space_man$free_buffer tty_space_man$free_chain tty_space_man$get_buffer tty_space_man$switch_chain THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$ai_already_set error_table_$inconsistent error_table_$noalloc error_table_$null_info_ptr error_table_$undefined_order_request error_table_$unimplemented_version tty_area$ tty_buf$ LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 15 000306 104 000314 107 000342 108 000343 109 000347 111 000350 112 000357 113 000363 114 000364 116 000365 117 000371 118 000375 119 000376 120 000404 121 000405 122 000410 124 000411 125 000415 126 000432 127 000447 129 000454 130 000461 131 000467 132 000475 133 000520 134 000543 135 000550 136 000553 138 000554 139 000560 140 000563 141 000603 143 000604 144 000610 145 000614 146 000625 147 000636 148 000637 149 000642 151 000643 152 000647 155 000661 156 000664 158 000665 159 000671 160 000674 161 000711 162 000717 164 000720 165 000724 166 000730 167 000733 169 000734 170 000740 171 000753 173 000754 175 000773 177 001012 178 001016 179 001020 180 001024 181 001027 183 001030 184 001035 185 001040 187 001041 188 001043 189 001047 190 001066 192 001101 194 001112 195 001114 197 001115 198 001121 199 001131 203 001146 206 001152 207 001162 208 001166 210 001167 212 001170 213 001174 216 001204 217 001212 219 001221 221 001224 223 001225 225 001226 226 001233 227 001240 228 001245 230 001252 232 001255 236 001256 239 001275 240 001276 242 001277 244 001302 246 001307 248 001312 249 001316 250 001320 251 001326 252 001332 256 001356 258 001371 259 001377 260 001402 264 001403 265 001407 266 001412 267 001417 268 001424 269 001427 271 001430 272 001433 273 001435 274 001443 276 001445 277 001453 278 001456 280 001473 283 001474 284 001510 285 001513 287 001514 290 001522 291 001531 295 001532 298 001551 299 001552 300 001555 301 001556 303 001557 304 001562 306 001570 307 001572 308 001611 309 001617 311 001620 312 001624 313 001643 314 001647 315 001652 317 001702 318 001715 319 001717 320 001721 322 001723 326 001725 330 001726 333 001742 334 001743 336 001744 337 001750 338 001753 339 001756 342 001757 344 001765 345 001775 346 002001 347 002003 349 002005 353 002006 356 002022 357 002023 359 002024 360 002030 361 002033 362 002036 365 002037 366 002047 367 002065 370 002070 372 002077 373 002102 374 002120 376 002126 377 002131 378 002147 380 002155 381 002160 382 002177 385 002205 386 002215 387 002222 388 002251 390 002261 392 002263 396 002264 399 002311 400 002312 401 002320 403 002321 404 002355 406 002400 410 002401 413 002420 414 002421 416 002425 417 002431 418 002433 419 002436 420 002440 423 002441 424 002443 426 002457 427 002501 428 002502 430 002521 432 002536 433 002541 434 002544 435 002547 436 002557 437 002563 438 002575 439 002600 440 002604 442 002606 443 002615 444 002620 446 002622 447 002624 449 002625 451 002630 455 002631 458 002647 459 002650 461 002653 463 002655 464 002665 465 002671 466 002674 467 002702 469 002703 471 002705 475 002706 478 002722 479 002723 481 002726 482 002727 486 002730 489 002744 490 002745 492 002750 493 002757 494 002777 495 003004 497 003006 501 003007 504 003023 505 003024 507 003027 508 003037 509 003043 510 003051 511 003074 513 003076 515 003114 516 003116 520 003117 523 003120 525 003123 526 003130 527 003140 532 003141 536 003143 537 003146 538 003150 539 003170 541 003174 542 003203 547 003204 555 003212 557 003215 559 003245 560 003252 562 003273 563 003322 565 003324 566 003352 568 003354 569 003363 571 003366 572 003414 574 003416 575 003422 576 003425 577 003436 579 003443 580 003450 581 003465 584 003471 585 003472 587 003473 589 003500 590 003503 595 003504 600 003505 601 003507 603 003510 606 003511 608 003513 611 003522 612 003524 613 003526 614 003530 615 003545 617 003562 618 003572 619 003602 620 003610 621 003616 623 003617 625 003622 630 003623 637 003625 638 003642 639 003644 640 003653 641 003656 643 003665 648 003666 652 003670 653 003676 654 003700 656 003715 ----------------------------------------------------------- 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