COMPILATION LISTING OF SEGMENT ws_packet_receiver_ Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/17/90 0815.3 mdt Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Bull Inc., 1987 * 8* * * 9* *********************************************************** */ 10 11 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 12 ws_packet_receiver_: 13 proc (); 14 15 16 /* PROGRAM FUNCTION 17* 18*This routine is responsible for the receipt of data from the remote (PC). 19*It's ONLY entry is through the immediate call event channel mechanism 20*released with MR12.0. An event is signalled on the channel when tty_ 21*(hcs_) has received the EOP character from the remote (PC) and wake up 22*immediately to process the packet. 23**/ 24 25 26 /* NOTES 27* 28*Certain situations require that this be recursively called in order that 29*events for which a previous invocation of this call handler is waiting 30*can be received. Such is performed by the calls to ipc_$resetev_call_chn 31**/ 32 33 /****^ HISTORY COMMENTS: 34* 1) change(87-04-20,Flegel), approve(87-06-23,MCR7649), 35* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 36* Created. 37* 2) change(87-09-02,RBarstad), approve(87-09-02,PBF7649), 38* audit(87-09-02,LJAdams), install(87-09-02,MR12.1-1096): 39* Fixed to wrap mio_data.user_input.queue at (0) and not (1). 40* 3) change(88-11-08,Flegel), approve(88-11-16,MCR8023), audit(88-12-12,Lee), 41* install(89-01-24,MR12.3-1012): 42* phx21215 - Added support for a foreground event channel upon which 43* events are transmitted when foreground data has been 44* received. 45* 4) change(90-09-20,Bubric), approve(90-10-01,MCR8211), audit(90-10-01,Itani), 46* install(90-10-17,MR12.4-1044): 47* Have the calls to the routine 'nothing' changed to calls to 48* 'null_entry_'. 49* END HISTORY COMMENTS */ 50 51 /* INPUT PARAMETERS */ 52 dcl p_open_struc_ptr ptr parameter; /* User control info */ 53 dcl p_mio_data_ptr ptr parameter; /* mowse_io_ data */ 54 55 /* OUTPUT PARAMETERS */ 56 dcl p_code fixed bin (35) parameter; 57 58 /* MISC VARIABLES */ 59 dcl input_ready bit (1); /* Data from the PC */ 60 dcl i fixed bin; 61 62 /* STATIC */ 63 dcl mio_data_ptr ptr int static init (null);/* mowse_io_ data */ 64 65 /* STRUCTURES */ 66 dcl fixedbin21 fixed bin (21) based; 67 dcl 01 cond_info like condition_info aligned automatic; 68 dcl 01 mio_data like mowse_io_data based (mio_data_ptr); 69 70 /* SYSTEM CALLS */ 71 dcl hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 72 dcl ipc_$reset_ev_call_chn entry (fixed bin (71), fixed bin (35)); 73 dcl signal_ entry () options (variable); 74 dcl null_entry_ entry options (variable); 75 dcl ipc_$create_event_channel entry (ptr, fixed bin (71), fixed bin (35)); 76 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 77 dcl iox_$modes entry (ptr, char (*), char (*), fixed bin (35)); 78 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 79 dcl ipc_$unmask_ev_calls entry (fixed bin (35)); 80 dcl ipc_$mask_ev_calls entry (fixed bin (35)); 81 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 82 dcl sct_manager_$call_handler entry (ptr, char (*), ptr, ptr, bit (1) aligned); 83 dcl find_condition_info_ entry (ptr, ptr, fixed bin (35)); 84 dcl sct_manager_$set entry (fixed bin, ptr, fixed bin (35)); 85 dcl iox_$get_chars entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 86 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 87 88 /* SYSTEM CALL SUPPORT */ 89 dcl error_table_$line_status_pending fixed bin (35) ext static; 90 91 /* EXTERNAL CALLS */ 92 dcl ws_debug_$line entry () options (variable); 93 dcl ws_channel_$call_wakeup entry (ptr, fixed bin (71)); 94 dcl ws_tools_$getdat entry (ptr, fixed bin, ptr, fixed bin (21)) returns (fixed bin (21)); 95 dcl ws_packet_transmitter_$data entry (ptr, fixed bin, ptr, fixed bin (21), fixed bin); 96 dcl ws_timer_$reset_disconnect entry options (variable); 97 dcl ws_timer_$reset_break entry options (variable); 98 dcl ws_packet_transmitter_$ack entry (fixed bin, ptr); 99 dcl ws_packet_transmitter_$resend entry (ptr, fixed bin); 100 dcl ws_packet_transmitter_$supervisory entry (ptr, char (1)); 101 dcl ws_tools_$reset_data entry (ptr); 102 dcl ws_packet_transmitter_$nak entry (fixed bin, ptr); 103 dcl ws_tools_$ars entry (fixed bin, fixed bin) returns (fixed bin); 104 dcl ws_tools_$check_length entry (fixed bin (21)) returns (char (1)); 105 dcl ws_tools_$crc_char entry (char (1), fixed bin) returns (fixed bin); 106 dcl ws_debug_$packet entry (char (*), ptr, fixed bin (21), ptr); 107 dcl ws_channel_$wait_wakeup entry (ptr, ptr); 108 109 /* EXTERNAL CALL SUPPORT */ 110 111 /* BUILTINS */ 112 dcl unspec builtin; 113 dcl length builtin; 114 dcl hbound builtin; 115 dcl bool builtin; 116 dcl byte builtin; 117 dcl mod builtin; 118 dcl substr builtin; 119 dcl rank builtin; 120 dcl null builtin; 121 dcl convert builtin; 122 dcl addr builtin; 123 124 /* CONDITIONS */ 125 dcl cleanup condition; 126 dcl mowse_io_error condition; 127 128 /* CONSTANTS */ 129 dcl False bit (1) int static options (constant) init ("0"b); 130 dcl True bit (1) int static options (constant) init ("1"b); 131 132 /* */ 133 134 /* INITIALIZATION */ 135 136 /* MAIN */ 137 138 /* Debugging information */ 139 140 if mio_data.debug_iocb_ptr ^= null then do; 141 call ws_debug_$line (mio_data.debug_iocb_ptr, 142 " tasks:^[Modem ^]^[FG ^]^[BG^]", 143 mio_data.task.active (0), mio_data.task.active (1), 144 mio_data.task.active (2)); 145 end; 146 147 /* Process all interrupts, even those which occurred while this processing 148* occurred */ 149 150 if ^mio_data.task.active (Modem_Reader_Task) then do; 151 mio_data.task.active (Modem_Reader_Task) = ^Idle; 152 153 input_ready = True; 154 do while (input_ready); 155 call modem_reader (); 156 input_ready = prime_tty (); 157 end; 158 159 mio_data.task.active (Modem_Reader_Task) = Idle; 160 end; 161 162 /* Allow recursive calls and schedule all data that has arrived */ 163 164 call ipc_$reset_ev_call_chn ( 165 mio_data.channel_info.packet_receiver.channel, (0)); 166 call scheduler (); 167 168 /* Keep the receive windows active (if they are close to being full, then 169* send an ack to open them */ 170 171 do i = 0 to ChnCnt - 1; 172 if mod (mio_data.r.psn (i) - mio_data.s.lasn (i), SeqCnt) 173 >= RWS - 1 174 then 175 call ws_packet_transmitter_$ack (i, mio_data_ptr); 176 end; 177 178 return; 179 180 /* */ 181 182 183 184 /* INTERNAL ENTRIES */ 185 186 187 /* *** Entry: initialize - Internal entry for ws_packet_receiver_ *** */ 188 189 initialize: 190 entry (p_mio_data_ptr, p_open_struc_ptr, p_code); 191 192 193 /* ENTRY FUNCTION 194* 195*Initialize the packet receiver. 196**/ 197 198 /* NOTES 199**/ 200 mio_data_ptr = p_mio_data_ptr; 201 open_struc_ptr = p_open_struc_ptr; 202 203 if open_struc_ptr ^= null then 204 if open_struc.flags.network_sw then 205 mio_data.r.eop = CR; 206 else 207 mio_data.r.eop = LF; 208 209 mio_data.r.sop = SOH; 210 mio_data.r.esc (0) = ESC; 211 mio_data.r.esc (1) = SI; 212 mio_data.r.esc (2) = SO; 213 mio_data.r.esc_count = 0; 214 mio_data.r.asn (*) = 0; 215 mio_data.r.dat (*, *) = ""; 216 mio_data.r.esckey = ""b; 217 mio_data.r.ignoring (*) = False; 218 mio_data.r.pkt (*) = " "; 219 mio_data.r.pktin = 0; 220 mio_data.r.pktout = 0; 221 mio_data.r.psn (*) = 0; 222 223 call setup_wakeup (p_code); 224 return; 225 226 /* */ 227 228 /* *** Entry: sus_handler - Internal entry for ws_packet_receiver_ *** */ 229 230 sus_handler: 231 entry (); 232 233 234 /* ENTRY FUNCTION 235* 236*This entry is invoked whenever the process receives a sus_signal. This is 237*in order for mowse_io_ to detect that the process has been detached from the 238*terminal in which case future talks to the terminal are impossible. 239**/ 240 241 /* NOTES 242* 243*All that is done is that a flag (sus_data.activated) is set, alarms are turned 244*off, and then control is passed on to the sus_signal_handler_ that existed 245*before MOWSE was attached. 246**/ 247 248 mio_data.sus_data.activated = True; 249 250 call ws_debug_$line (mio_data.debug_iocb_ptr, 251 "===== SUS Activated ====="); 252 253 call sct_manager_$set (susp_sct_index, mio_data.sus_data.sus_entry, 254 (0)); 255 cond_info.version = condition_info_version_1; 256 call find_condition_info_ (null, addr (cond_info), (0)); 257 call sct_manager_$call_handler (cond_info.mc_ptr, "sus_", null, null, 258 ("0"b)); 259 260 return; 261 262 /* */ 263 264 /* *** Entry: terminate - Internal entry for ws_packet_receiver_ *** */ 265 266 terminate: 267 entry (p_code); 268 269 270 /* ENTRY FUNCTION 271* 272*Perform the necessary functions to turn off the receiver wakeups. 273**/ 274 275 /* NOTES 276**/ 277 278 call reset_wakeup (p_code); 279 return; 280 281 /* */ 282 283 284 285 /* INTERNAL PROCEDURES */ 286 287 288 /* *** Procedure: accept_ack - Internal proc for ws_packet_receiver_ *** */ 289 290 accept_ack: 291 proc (p_channel, p_asn) returns (bit (1)); 292 293 294 /* PROCEDURE FUNCTION 295* 296*Update the flow control with the provided acknowledge sequence number. 297**/ 298 299 /* NOTES 300**/ 301 302 /* INPUT PARAMETERS */ 303 dcl p_channel fixed bin parameter; /* Channel ID */ 304 dcl p_asn fixed bin parameter; /* Ack sequenc number */ 305 306 /* OUTPUT PARAMETERS */ 307 308 /* MISC VARIABLES */ 309 dcl asn_valid bit (1); /* Sequence number validation */ 310 311 /* STRUCTURES */ 312 313 /* INITIALIZATION */ 314 315 /* MAIN */ 316 317 /* If the acknowledgement sequence number is invalid, reject the packet. */ 318 319 if mio_data.r.asn (p_channel) <= mio_data.s.psn (p_channel) then 320 asn_valid = 321 (mio_data.r.asn (p_channel) <= p_asn 322 & p_asn <= mio_data.s.psn (p_channel)); 323 else 324 asn_valid = 325 (mio_data.r.asn (p_channel) <= p_asn 326 | p_asn <= mio_data.s.psn (p_channel)); 327 328 if ^asn_valid then 329 return (False); 330 331 /* Save the new acknowledgement sequence number */ 332 333 mio_data.r.asn (p_channel) = p_asn; 334 335 /* Generate a wakeup to something which may be waiting for a send queue to 336* open (which is done when an ack is received) */ 337 338 call ws_channel_$wait_wakeup (mio_data_ptr, 339 addr (mio_data.channel_info.packet_transmitter)); 340 341 /* Indicate packet was valid */ 342 343 return (True); 344 345 end accept_ack; 346 347 /* */ 348 349 /* *** Procedure: approve_packet - Internal proc for ws_packet_receiver_ *** */ 350 351 approve_packet: 352 proc (p_packet_ptr, p_packet_len); 353 354 355 /* PROCEDURE FUNCTION 356* 357*Approve a packet. If the packet appears to valid, dispatch it to the 358*appropriate parser for further analysis, otherwise reject it. 359**/ 360 361 /* NOTES 362**/ 363 364 /* INPUT PARAMETERS */ 365 dcl p_packet_len fixed bin (21) parameter; /* Packet length */ 366 dcl p_packet_ptr ptr parameter; /* Packet to be approved */ 367 368 /* OUTPUT PARAMETERS */ 369 370 /* MISC VARIABLES */ 371 dcl type fixed bin (8); /* Type character */ 372 dcl chkidx fixed bin; /* Index of chkcrc character */ 373 dcl lenidx fixed bin; /* Index of chklen character */ 374 375 /* STRUCTURES */ 376 dcl 01 packet based (p_packet_ptr), 377 02 length fixed bin (21) aligned, 378 02 data char (p_packet_len) unal; 379 380 /* INITIALIZATION */ 381 382 383 /* MAIN */ 384 385 /* If packet is too short or too long, reject it. */ 386 387 if packet.length < MinPktLen | packet.length > MaxPktLen then do; 388 if mio_data.debug_iocb_ptr ^= null then 389 call ws_debug_$packet ("---R:PKT/SIZ-->", 390 addr (packet.data), packet.length, 391 mio_data.debug_iocb_ptr); 392 return; 393 end; 394 395 /* If check-length is incorrect, reject it */ 396 397 lenidx = packet.length - EOPLen - ChkLen - LenLen + 1; 398 if ws_tools_$check_length (packet.length + mio_data.r.esc_count) 399 ^= substr (packet.data, lenidx, LenLen) 400 then do; 401 if mio_data.debug_iocb_ptr ^= null then 402 call ws_debug_$packet ("---R:PKT/LEN-->", 403 addr (packet.data), packet.length, 404 mio_data.debug_iocb_ptr); 405 return; 406 end; 407 408 /* If CRC is incorrect, reject packet. */ 409 410 chkidx = lenidx + ChkLen; 411 if check_crc (addr (packet.data), chkidx - 1) 412 ^= substr (packet.data, chkidx, ChkLen) 413 then do; 414 if mio_data.debug_iocb_ptr ^= null then 415 call ws_debug_$packet ("---R:PKT/CRC-->", 416 addr (packet.data), packet.length, 417 mio_data.debug_iocb_ptr); 418 return; 419 end; 420 421 /* If packet type is valid, dispatch accordingly; else reject packet. */ 422 423 type = rank (substr (packet.data, SOPLen + 1, 1)); 424 if ^mio_data.rs_pending (1) & ^mio_data.rs_pending (2) then do; 425 if DatOff <= type & type < DatOff + DatCnt then 426 call parse_data (p_packet_ptr, p_packet_len); 427 else if AckOff <= type & type < AckOff + AckCnt then 428 call parse_ack (p_packet_ptr, p_packet_len); 429 else if NakOff <= type & type < NakOff + NakCnt then 430 call parse_nak (p_packet_ptr, p_packet_len); 431 else if BrkOff <= type & type < BrkOff + BrkCnt then 432 call parse_break (p_packet_ptr, p_packet_len); 433 else if RstOff <= type & type < RstOff + RstCnt then 434 call parse_reset (p_packet_ptr, p_packet_len); 435 else if FastDis = type then 436 call remote_disconnect (True); 437 else do; 438 call ws_debug_$packet ("---R:TYPE-->", 439 addr (packet.data), packet.length, 440 mio_data.debug_iocb_ptr); 441 end; 442 end; 443 else if RstOff <= type & type < RstOff + RstCnt then 444 call parse_reset (p_packet_ptr, p_packet_len); 445 446 end approve_packet; 447 448 /* */ 449 450 /* *** Procedure: check_crc - Internal proc for ws_packet_receiver_ *** */ 451 452 check_crc: 453 proc (p_packet_ptr, p_packet_len) returns (char (1)); 454 455 456 /* PROCEDURE FUNCTION 457* 458*Calculate the printable ascii character of the CRC that should have been used 459*on this packet data 460**/ 461 462 /* NOTES 463**/ 464 465 /* RETURNS 466* 467*The desired CRC character. 468**/ 469 470 /* INPUT PARAMETERS */ 471 dcl p_packet_ptr ptr parameter; /* Packet */ 472 dcl p_packet_len fixed bin (21) parameter; /* length of packet */ 473 474 /* MISC VARIABLES */ 475 dcl string (0:p_packet_len - 1) char (1) unal based (p_packet_ptr); /* String overlay */ 476 dcl i fixed bin; 477 dcl crc fixed bin; /* Accumulated CRC */ 478 479 /* INITIALIZATION */ 480 481 /* MAIN */ 482 483 /* Sum the ranks of the characters in the string. */ 484 485 crc = INIT_CRC; 486 do i = 0 to p_packet_len - 1; 487 crc = ws_tools_$crc_char (string (i), crc); 488 end; 489 490 /* Return a printable ASCII character between ' ' and '~'. */ 491 492 return (byte (crc + 32)); 493 494 end check_crc; 495 496 /* */ 497 498 /* *** Procedure: get_channel - Internal proc for ws_packet_receiver_ *** */ 499 500 get_channel: 501 proc (p_channel_id, p_type, p_handler, p_code); 502 503 504 /* PROCEDURE FUNCTION 505* 506*Get ahold of a channel of the specified type. 507**/ 508 509 /* NOTES 510**/ 511 512 /* INPUT PARAMETERS */ 513 dcl p_handler variable entry (ptr); /* Call handler */ 514 dcl p_type fixed bin parameter; /* Channel type */ 515 516 /* OUTPUT PARAMETERS */ 517 dcl p_channel_id fixed bin (71) aligned parameter; /* Channel gotten */ 518 dcl p_code fixed bin (35) parameter; 519 520 /* MISC VARIABLES */ 521 522 /* STRUCTURES */ 523 dcl 01 ipc_arg like ipc_create_arg_structure aligned automatic; 524 525 /* INITIALIZATION */ 526 p_code = 0; 527 528 /* MAIN */ 529 530 ipc_arg.version = ipc_create_arg_structure_v1; 531 ipc_arg.channel_type = p_type; 532 ipc_arg.call_entry = ws_packet_receiver_; 533 ipc_arg.call_data_ptr = null; 534 ipc_arg.call_priority = 0; 535 call ipc_$create_event_channel (addr (ipc_arg), p_channel_id, 536 p_code); 537 538 end get_channel; 539 540 /* */ 541 542 /* *** Procedure: handle_fg_break - Internal proc for ws_packet_receiver_ *** */ 543 544 handle_fg_break: 545 proc (); 546 547 548 /* PROCEDURE FUNCTION 549* 550*Perform the necessary functions to signal a break on the foreground channel. 551**/ 552 553 /* NOTES 554**/ 555 556 /* INPUT PARAMETERS */ 557 558 /* OUTPUT PARAMETERS */ 559 560 /* MISC VARIABLES */ 561 dcl message char (5); /* FG_BREAK data */ 562 563 /* STRUCTURES */ 564 565 /* INITIALIZATION */ 566 mio_data.switches.brk_pending = False; 567 message = "BRK"; 568 569 /* MAIN */ 570 571 /* If quits have been disabled, return */ 572 573 if ^mio_data.switches.quit_enable then 574 return; 575 576 /* Send a data message to the remote with the FG_BREAK minor cap number */ 577 578 call ws_packet_transmitter_$data (mio_data_ptr, FG, addr (message), 579 convert (fixedbin21, MinPktLen), FG_BREAK); 580 581 /* Clear user buffer and signal quit */ 582 583 mio_data.user_input.out = mio_data.user_input.in; 584 call signal_ ("quit", null (), null (), null ()); 585 586 end handle_fg_break; 587 588 /* */ 589 590 /* *** Procedure: modem_reader - Internal proc for ws_packet_receiver_ *** */ 591 592 modem_reader: 593 proc (); 594 595 596 /* PROCEDURE FUNCTION 597* 598*Read data from tty_. 599**/ 600 601 /* NOTES 602**/ 603 604 /* INPUT PARAMETERS */ 605 606 /* OUTPUT PARAMETERS */ 607 608 /* MISC VARIABLES */ 609 dcl line_status_info bit (72) aligned; 610 dcl input_buffer (1024) char (1); /* Input packet */ 611 dcl i fixed bin (21); 612 dcl n_chars_read fixed bin (21); 613 dcl code fixed bin (35); 614 615 /* STRUCTURES */ 616 dcl 01 read_status_info like tty_read_status_info aligned automatic; 617 618 /* INITIALIZATION */ 619 620 /* MAIN */ 621 622 /* See if there really is data */ 623 624 code = error_table_$line_status_pending; 625 do while (code = error_table_$line_status_pending); 626 call iox_$control (mio_data.iocb_ptr, "read_status", 627 addr (read_status_info), code); 628 if code = error_table_$line_status_pending then 629 call iox_$control (mio_data.iocb_ptr, "line_status", 630 addr (line_status_info), (0)); 631 end; 632 if code ^= 0 then 633 signal mowse_io_error; 634 635 /* NO, then lets forget it */ 636 637 if ^read_status_info.input_pending then 638 return; 639 640 /* Yes, then process it a character at a time */ 641 642 call iox_$get_chars (mio_data.iocb_ptr, addr (input_buffer), 643 hbound (input_buffer, 1), n_chars_read, code); 644 if code ^= 0 then 645 signal mowse_io_error; 646 647 /* Process each of the characters received */ 648 649 do i = 1 to n_chars_read; 650 call receive_char (input_buffer (i)); 651 end; 652 653 end modem_reader; 654 655 /* */ 656 657 /* *** Procedure: parse_ack - Internal proc for ws_packet_receiver_ *** */ 658 659 parse_ack: 660 proc (p_packet_ptr, p_packet_len); 661 662 663 /* PROCEDURE FUNCTION 664* 665*Parse an Ack-packet. If the packet is valid, flow control information is 666*updated accordingly 667**/ 668 669 /* NOTES 670**/ 671 672 /* INPUT PARAMETERS */ 673 dcl p_packet_ptr ptr parameter; /* Packet */ 674 dcl p_packet_len fixed bin (21) parameter; /* Length of packet */ 675 676 /* OUTPUT PARAMETERS */ 677 678 /* MISC VARIABLES */ 679 dcl channel fixed bin; /* Channel number */ 680 dcl asn fixed bin; /* Acknowledge sequence number */ 681 dcl fields fixed bin; /* Packet type */ 682 683 /* STRUCTURES */ 684 dcl 01 packet based (p_packet_ptr), 685 02 length fixed bin (21) aligned, 686 02 data char (p_packet_len) unal; 687 688 /* INITIALIZATION */ 689 690 /* MAIN */ 691 692 /* If packet length incorrect, reject packet. */ 693 694 if p_packet_len ^= MinPktLen then 695 return; 696 697 /* Extract the acknowledgement sequence number and the channel number. */ 698 699 fields = rank (substr (packet.data, SOPLen + 1, 1)) - AckOff; 700 asn = mod (fields, SeqCnt); 701 channel = ws_tools_$ars (fields, SeqFld); 702 703 /* Accept the ack sequence number */ 704 705 if ^accept_ack (channel, asn) then do; 706 if mio_data.debug_iocb_ptr ^= null then 707 call ws_debug_$packet ("---R:ACK/PSN-->", 708 addr (packet.data), packet.length, 709 mio_data.debug_iocb_ptr); 710 711 return; 712 end; 713 714 if mio_data.debug_iocb_ptr ^= null then 715 call ws_debug_$packet ("R:ACK---->", addr (packet.data), 716 packet.length, mio_data.debug_iocb_ptr); 717 718 end parse_ack; 719 720 /* */ 721 722 /* *** Procedure: parse_break - Internal proc for ws_packet_receiver_ *** */ 723 724 parse_break: 725 proc (p_packet_ptr, p_packet_len); 726 727 728 /* PROCEDURE FUNCTION 729* 730*Parse a break packet and perform the associated functions. 731**/ 732 733 /* NOTES 734**/ 735 736 /* INPUT PARAMETERS */ 737 dcl p_packet_ptr ptr parameter; /* Packet */ 738 dcl p_packet_len fixed bin (21) parameter; /* Packet length */ 739 740 /* OUTPUT PARAMETERS */ 741 742 /* MISC VARIABLES */ 743 744 /* STRUCTURES */ 745 dcl 01 packet based (p_packet_ptr), 746 02 length fixed bin (21) aligned, 747 02 data char (p_packet_len) unal; 748 749 /* INITIALIZATION */ 750 751 /* MAIN */ 752 753 /* If a foreground break */ 754 755 if rank (substr (packet.data, SOPLen + 1, 1)) = FGBrk + Request 756 then do; 757 if mio_data.debug_iocb_ptr ^= null then 758 call ws_debug_$packet ("R:FGBrk-->", 759 addr (packet.data), packet.length, 760 mio_data.debug_iocb_ptr); 761 762 /* - Send the confirmation */ 763 764 call ws_timer_$reset_break (); 765 call ws_packet_transmitter_$supervisory (mio_data_ptr, 766 byte (FGBrk + Confirm)); 767 768 /* - Set the appropriate flags indicating a break is pending */ 769 770 mio_data.br_pending = True; 771 mio_data.brk_pending = True; 772 end; 773 774 /* Else if receiving FG break confirmation confirmation 775* - clear pending flag */ 776 777 else if rank (substr (packet.data, SOPLen + 1, 1)) = FGBrk + Confirm 778 then do; 779 mio_data.br_pending = False; 780 if mio_data.debug_iocb_ptr ^= null then 781 call ws_debug_$packet ("R:FGBrk-C>", 782 addr (packet.data), packet.length, 783 mio_data.debug_iocb_ptr); 784 end; 785 786 /* Else if receiving Disconnect confirmation */ 787 788 else if rank (substr (packet.data, SOPLen + 1, 1)) = DisCon + Confirm 789 then do; 790 if mio_data.debug_iocb_ptr ^= null then 791 call ws_debug_$packet ("R:DisCn-C>", 792 addr (packet.data), packet.length, 793 mio_data.debug_iocb_ptr); 794 795 /* - Set flag */ 796 797 mio_data.ds_pending (1) = False; 798 799 /* - If remote initiated, then handle accordingly */ 800 801 if mio_data.ds_pending (2) then 802 call remote_disconnect (False); 803 end; 804 805 /* Else if PC originated disconnect */ 806 807 else if rank (substr (packet.data, SOPLen + 1, 1)) = DisCon + Request 808 then do; 809 810 if mio_data.debug_iocb_ptr ^= null then 811 call ws_debug_$packet ("R:DisCon-R-->", 812 addr (packet.data), packet.length, 813 mio_data.debug_iocb_ptr); 814 815 /* - Set flag and send a confirmation */ 816 817 mio_data.ds_pending (2) = True; 818 call ws_timer_$reset_disconnect (); 819 call ws_packet_transmitter_$supervisory (mio_data_ptr, 820 byte (DisCon + Confirm)); 821 end; 822 823 end parse_break; 824 825 /* */ 826 827 /* *** Procedure: parse_data - Internal proc for ws_packet_receiver_ *** */ 828 829 parse_data: 830 proc (p_packet_ptr, p_packet_len); 831 832 833 /* PROCEDURE FUNCTION 834* 835*Parse a data packet. If the packet is valid, the data is stored in the 836*receive data queue for extraction at an appropriate time. 837**/ 838 839 /* NOTES 840**/ 841 842 /* INPUT PARAMETERS */ 843 dcl p_packet_ptr ptr parameter; /* Packet */ 844 dcl p_packet_len fixed bin (21) parameter; /* Length of packet */ 845 846 /* OUTPUT PARAMETERS */ 847 848 /* MISC VARIABLES */ 849 dcl data_len fixed bin (21); /* Length of data */ 850 dcl psn fixed bin; /* Packet sequence number */ 851 dcl asn fixed bin; /* Ack sequence number */ 852 dcl channel fixed bin; /* Channel ID of packet */ 853 dcl fields fixed bin; /* Packet type */ 854 855 /* STRUCTURES */ 856 dcl 01 packet based (p_packet_ptr) unal, 857 02 length fixed bin (21) aligned, 858 02 data char (p_packet_len) unal; 859 860 /* INITIALIZATION */ 861 862 /* MAIN */ 863 864 /* Extract the acknowledgement sequence number, packet sequence number and 865* channel number from the type char. */ 866 867 fields = rank (substr (packet.data, SOPLen + 1, 1)) - DatOff; 868 asn = mod (fields, SeqCnt); 869 psn = mod (ws_tools_$ars (fields, SeqFld), SeqCnt); 870 channel = ws_tools_$ars (fields, SeqFld + SeqFld); 871 872 /* Accept the acknowledge sequence number */ 873 874 if ^accept_ack (channel, asn) then do; 875 if mio_data.debug_iocb_ptr ^= null then 876 call ws_debug_$packet ("---R:DAT/ASN-->", 877 addr (packet.data), packet.length, 878 mio_data.debug_iocb_ptr); 879 880 return; 881 end; 882 883 /* If we are disconnecting, then ignore the data */ 884 885 if mio_data.ds_pending (1) | mio_data.ds_pending (2) then 886 return; 887 888 /* If the send sequence number is not the one we expect, send a Nak-packet, 889* (unless one has already been sent) and ignore this packet. */ 890 891 if psn ^= mio_data.r.psn (channel) then do; 892 if mio_data.debug_iocb_ptr ^= null then 893 call ws_debug_$packet ("---R:DAT/PSN-->", 894 addr (packet.data), packet.length, 895 mio_data.debug_iocb_ptr); 896 897 if ^mio_data.r.ignoring (channel) then do; 898 call ws_packet_transmitter_$nak (channel, mio_data_ptr); 899 mio_data.r.ignoring (channel) = True; 900 end; 901 902 return; 903 end; 904 905 /* Accept the data. */ 906 907 data_len = packet.length - MinPktLen; 908 mio_data.r.dat (channel, psn) = 909 substr (packet.data, SOPLen + TypLen + 1, data_len); 910 mio_data.r.ignoring (channel) = False; 911 mio_data.r.psn (channel) = mod (psn + 1, SeqCnt); 912 if mio_data.debug_iocb_ptr ^= null then 913 call ws_debug_$packet ("R:DAT---->", addr (packet.data), 914 packet.length, mio_data.debug_iocb_ptr); 915 916 end parse_data; 917 918 /* */ 919 920 /* *** Procedure: parse_nak - Internal proc for ws_packet_receiver_ *** */ 921 922 parse_nak: 923 proc (p_packet_ptr, p_packet_len); 924 925 926 /* PROCEDURE FUNCTION 927* 928*Parse a Nak-packet. If the packet is valid, any data packets that have been 929*sent but have not been acknowledged by this Nak are resent. 930**/ 931 932 /* NOTES 933**/ 934 935 /* INPUT PARAMETERS */ 936 dcl p_packet_ptr ptr parameter; /* Packet */ 937 dcl p_packet_len fixed bin (21) parameter; /* Packet_length */ 938 939 /* OUTPUT PARAMETERS */ 940 941 /* MISC VARIABLES */ 942 dcl channel fixed bin; /* Channel ID */ 943 dcl asn fixed bin; /* Acknowledge sequence number */ 944 dcl fields fixed bin; /* Packet type */ 945 946 /* STRUCTURES */ 947 dcl 01 packet based (p_packet_ptr), 948 02 length fixed bin (21) aligned, 949 02 data char (p_packet_len) unal; 950 951 /* INITIALIZATION */ 952 953 /* MAIN */ 954 955 /* If packet length is incorrect, reject the packet. */ 956 957 if packet.length ^= MinPktLen then 958 return; 959 960 /* Extract field information (sequence number, channel number, etc.) */ 961 962 fields = rank (substr (packet.data, SOPLen + 1, 1)) - NakOff; 963 asn = mod (fields, SeqCnt); 964 channel = ws_tools_$ars (fields, SeqFld); 965 966 /* Accept the acked sequence number in the nak packet */ 967 968 if ^accept_ack (channel, asn) then do; 969 if mio_data.debug_iocb_ptr ^= null then 970 call ws_debug_$packet ("---R:NAK/PSN-->", 971 addr (packet.data), packet.length, 972 mio_data.debug_iocb_ptr); 973 return; 974 end; 975 976 if mio_data.debug_iocb_ptr ^= null then 977 call ws_debug_$packet ("R:NAK---->", addr (packet.data), 978 packet.length, mio_data.debug_iocb_ptr); 979 980 /* Resend any data in the send data queue. */ 981 982 call ws_packet_transmitter_$resend (mio_data_ptr, channel); 983 984 end parse_nak; 985 986 /* */ 987 988 /* *** Procedure: parse_reset - Internal proc for ws_packet_receiver_ *** */ 989 990 parse_reset: 991 proc (p_packet_ptr, p_packet_len); 992 993 994 /* PROCEDURE FUNCTION 995* 996*Parse a reset packet and handle accordingly. 997**/ 998 999 /* NOTES 1000**/ 1001 1002 /* INPUT PARAMETERS */ 1003 dcl p_packet_ptr ptr parameter; /* Packet */ 1004 dcl p_packet_len fixed bin (21) parameter; /* Packet length */ 1005 1006 /* OUTPUT PARAMETERS */ 1007 1008 /* MISC VARIABLES */ 1009 1010 /* STRUCTURES */ 1011 dcl 01 packet based (p_packet_ptr), 1012 02 length fixed bin (21) aligned, 1013 02 data char (p_packet_len) unal; 1014 1015 /* INITIALIZATION */ 1016 1017 /* MAIN */ 1018 1019 /* If in process of disconnecting, then ignore reset */ 1020 1021 if mio_data.ds_pending (1) | mio_data.ds_pending (2) then 1022 return; 1023 1024 /* If PC requested reset: reset and send confirmation */ 1025 1026 if rank (substr (packet.data, SOPLen + 1, 1)) = RstOff + Request 1027 then do; 1028 if mio_data.debug_iocb_ptr ^= null then 1029 call ws_debug_$packet ("R:RST-R-->", addr (packet.data), 1030 packet.length, mio_data.debug_iocb_ptr); 1031 1032 mio_data.rs_pending (2) = True; 1033 call ws_tools_$reset_data (mio_data_ptr); 1034 mio_data.r.pktin = 1; 1035 call ws_packet_transmitter_$supervisory (mio_data_ptr, 1036 byte (RstOff + Confirm)); 1037 end; 1038 1039 /* Else if Confirmation */ 1040 1041 else if rank (substr (packet.data, SOPLen + 1, 1)) = RstOff + Confirm 1042 then do; 1043 if mio_data.debug_iocb_ptr ^= null then 1044 call ws_debug_$packet ("R:RST-C-->", addr (packet.data), 1045 packet.length, mio_data.debug_iocb_ptr); 1046 1047 /* - Send the confirmation */ 1048 1049 if mio_data.rs_pending (1) then 1050 call ws_packet_transmitter_$supervisory (mio_data_ptr, 1051 byte (RstOff + Confirm)); 1052 mio_data.rs_pending (*) = False; 1053 end; 1054 1055 end parse_reset; 1056 1057 /* */ 1058 1059 /* *** Procedure: prime_tty - Internal proc for ws_packet_receiver_ *** */ 1060 1061 prime_tty: 1062 proc () returns (bit (1)); 1063 1064 1065 /* PROCEDURE FUNCTION 1066* 1067*Perform a read status control order to tty_ in order to pprime it for the 1068*next event. 1069**/ 1070 1071 /* NOTES 1072**/ 1073 1074 /* INPUT PARAMETERS */ 1075 1076 /* OUTPUT PARAMETERS */ 1077 1078 /* MISC VARIABLES */ 1079 1080 /* STRUCTURES */ 1081 dcl 01 read_status_info like tty_read_status_info aligned automatic; 1082 1083 /* INITIALIZATION */ 1084 1085 /* MAIN */ 1086 1087 call iox_$control (mio_data.iocb_ptr, "read_status", 1088 addr (read_status_info), (0)); 1089 return (read_status_info.input_pending); 1090 1091 end prime_tty; 1092 1093 /* */ 1094 1095 /* *** Procedure: receive_char - Internal proc for ws_packet_receiver_ *** */ 1096 1097 receive_char: 1098 proc (p_chr); 1099 1100 1101 /* PROCEDURE FUNCTION 1102* 1103*To receive the next character detected by the interrupt handler for input from 1104*the remote. If the character is valid, it is added to the packet currently 1105*being assembled. 1106**/ 1107 1108 /* NOTES 1109**/ 1110 1111 /* INPUT PARAMETERS */ 1112 dcl p_chr char (1) parameter; /* character received */ 1113 1114 /* OUTPUT PARAMETERS */ 1115 1116 /* MISC VARIABLES */ 1117 dcl nextin fixed bin; /* Next packet in */ 1118 dcl test_ds (2) bit (1); /* Testing disconnect status */ 1119 dcl packet char (MaxDatLen) var based (packet_ptr); /* Packet to be built */ 1120 dcl packet_ptr ptr; /* Building packet pointer */ 1121 1122 /* STRUCTURES */ 1123 1124 /* INITIALIZATION */ 1125 1126 /* MAIN */ 1127 1128 /* Assemble the packet in the next slot of the receive packet queue. */ 1129 1130 packet_ptr = addr (mio_data.r.pkt (mio_data.r.pktin)); 1131 1132 /* If the received char is the SOP char, start a new packet. */ 1133 1134 if p_chr = mio_data.r.sop then do; 1135 mio_data.r.esckey = "000"b3; 1136 packet = p_chr; 1137 end; 1138 1139 /* Else if we are not assembling a packet, discard the received char. */ 1140 1141 else if length (packet) = 0 then 1142 return; 1143 1144 /* Else if the received char is the EOP char, append it to the packet. If 1145* there is room in the received packet queue, make the packet visible (by 1146* updating the "in" pointer); otherwise flush the packet. */ 1147 1148 else if p_chr = mio_data.r.eop then do; 1149 packet = packet || p_chr; 1150 1151 if mio_data.r.pktin < RQS then 1152 nextin = mio_data.r.pktin + 1; 1153 else 1154 nextin = 0; 1155 1156 if nextin ^= mio_data.r.pktout then do; 1157 mio_data.r.pktin = nextin; 1158 mio_data.r.pkt (nextin) = ""; 1159 end; 1160 else 1161 packet = ""; 1162 end; 1163 1164 /* Else append the character (or what it stands for if it was preceded 1165* by an escape character) to the buffer, unless it is an escape 1166* character. If this fills the packet (in which case there will be 1167* no room for the EOP character), flush the packet. */ 1168 1169 else do; 1170 if mio_data.r.esckey ^= "000"b3 then do; 1171 unspec (p_chr) = 1172 bool (unspec (p_chr), mio_data.r.esckey, XOR); 1173 mio_data.r.esckey = "000"b3; 1174 end; 1175 else if p_chr = mio_data.r.esc (0) then do; 1176 mio_data.r.esc_count = mio_data.r.esc_count + 1; 1177 mio_data.r.esckey = "100"b3; 1178 end; 1179 else if p_chr = mio_data.r.esc (1) then do; 1180 mio_data.r.esc_count = mio_data.r.esc_count + 1; 1181 mio_data.r.esckey = "200"b3; 1182 end; 1183 else if p_chr = mio_data.r.esc (2) then do; 1184 mio_data.r.esc_count = mio_data.r.esc_count + 1; 1185 mio_data.r.esckey = "300"b3; 1186 end; 1187 1188 if mio_data.r.esckey = "000"b3 then do; 1189 if length (packet) < MaxPktLen then 1190 packet = packet || p_chr; 1191 else 1192 packet = ""; 1193 end; 1194 end; 1195 1196 /* Approve completed packets and handle accordingly */ 1197 1198 do while (mio_data.r.pktin ^= mio_data.r.pktout); 1199 test_ds = mio_data.ds_pending; 1200 call approve_packet (addr (mio_data.r.pkt (mio_data.r.pktout)), 1201 length (mio_data.r.pkt (mio_data.r.pktout))); 1202 mio_data.r.esc_count = 0; 1203 if mio_data.r.pktout < RQS then 1204 mio_data.r.pktout = mio_data.r.pktout + 1; 1205 else 1206 mio_data.r.pktout = 0; 1207 if test_ds (2) then 1208 call remote_disconnect (False); 1209 end; 1210 1211 end receive_char; 1212 1213 /* */ 1214 1215 /* *** Procedure: receive_fg - Internal proc for ws_packet_receiver_ *** */ 1216 1217 receive_fg: 1218 proc (); 1219 1220 1221 /* PROCEDURE FUNCTION 1222* 1223*Extract all Foreground data from the protocol queues and insert into 1224*the user_input queues for extraction through iox_$get_(line chars). 1225**/ 1226 1227 /* NOTES 1228**/ 1229 1230 /* INPUT PARAMETERS */ 1231 1232 /* OUTPUT PARAMETERS */ 1233 1234 /* MISC VARIABLES */ 1235 dcl fixedbin21 fixed bin (21) based; 1236 dcl data (MaxDatLen) char (1); /* Message buffer */ 1237 dcl i fixed bin (21); 1238 dcl data_len fixed bin (21); /* Message length */ 1239 1240 /* STRUCTURES */ 1241 1242 /* INITIALIZATION */ 1243 1244 /* MAIN */ 1245 1246 /* Initiate the processing FG loop, if no data then return */ 1247 1248 data_len 1249 = ws_tools_$getdat (mio_data_ptr, FG, addr (data), 1250 convert (fixedbin21, MaxDatLen)); 1251 1252 /* Process pending foreground channel packets */ 1253 1254 do while (data_len > 0); 1255 do i = 2 to data_len; 1256 mio_data.user_input.queue (mio_data.user_input.in) 1257 = data (i); 1258 1259 if mio_data.user_input.in 1260 < hbound (mio_data.user_input.queue, 1) 1261 then 1262 mio_data.user_input.in = mio_data.user_input.in + 1; 1263 else 1264 mio_data.user_input.in = 0; /* hcom 2. */ 1265 end; 1266 1267 data_len 1268 = ws_tools_$getdat (mio_data_ptr, FG, addr (data), 1269 convert (fixedbin21, MaxDatLen)); 1270 end; 1271 1272 /* Wakeup blocked procedure on user_input */ 1273 1274 call ws_channel_$wait_wakeup (mio_data_ptr, 1275 addr (mio_data.channel_info.user_input)); 1276 1277 /* MF - phx21215 - Send a signal on the foreground event channel that data 1278* * has arrived 1279* */ 1280 call hcs_$wakeup (mio_data.channel_info.process_id, 1281 mio_data.channel_info.foreground.channel, 0, (0)); 1282 1283 end receive_fg; 1284 1285 /* */ 1286 1287 /* *** Procedure: remote_disconnect - Internal proc for ws_packet_receiver_ *** */ 1288 1289 remote_disconnect: 1290 proc (p_fast); 1291 1292 1293 /* PROCEDURE FUNCTION 1294* 1295*This is a null routine which will be used to implement mowse_io_ detachment 1296*at the request of the PC. 1297**/ 1298 1299 /* NOTES 1300**/ 1301 1302 /* INPUT PARAMETERS */ 1303 dcl p_fast bit (1) parameter; /* Fast (non-confirmed) request */ 1304 1305 /* OUTPUT PARAMETERS */ 1306 1307 /* MISC VARIABLES */ 1308 1309 /* STRUCTURES */ 1310 1311 /* INITIALIZATION */ 1312 1313 /* MAIN */ 1314 1315 mio_data.ds_pending (*) = False; 1316 1317 end remote_disconnect; 1318 1319 /* */ 1320 1321 /* *** Procedure: reset_wakeup - Internal proc for ws_packet_receiver_ *** */ 1322 1323 reset_wakeup: 1324 proc (p_code); 1325 1326 1327 /* PROCEDURE FUNCTION 1328* 1329*Reset the wakeup mechanism for the packet_receiver. 1330**/ 1331 1332 /* NOTES 1333**/ 1334 1335 /* INPUT PARAMETERS */ 1336 1337 /* OUTPUT PARAMETERS */ 1338 dcl p_code fixed bin (35) parameter; 1339 1340 /* MISC VARIABLES */ 1341 dcl input_pending bit (1); /* Data arrived */ 1342 dcl tty_channel fixed bin (71) aligned; /* tty_channel to install */ 1343 dcl mask bit (36) aligned; 1344 1345 /* STRUCTURES */ 1346 dcl 01 wake_info like swt_info aligned automatic; 1347 1348 /* INITIALIZATION */ 1349 p_code = 0; 1350 1351 /* If we came in from a sus_ signal, then get the heck out */ 1352 1353 if mio_data.sus_data.activated then 1354 return; 1355 1356 /* Have we really initialized ? */ 1357 1358 if mio_data.channel_info.packet_receiver.channel = 0 then 1359 return; 1360 1361 /* Mask the world according to Multics */ 1362 1363 call hcs_$set_ips_mask (""b, mask); 1364 call ipc_$mask_ev_calls (p_code); 1365 if p_code ^= 0 then 1366 goto EXIT_RESET_WAKEUP; 1367 1368 /* MAIN */ 1369 1370 /* Turn wakeups off */ 1371 1372 call iox_$modes (mio_data.iocb_ptr, "^wake_tbl", "", p_code); 1373 if p_code ^= 0 then 1374 goto EXIT_RESET_WAKEUP; 1375 1376 wake_info.version = swt_info_version_1; 1377 wake_info.new_table = mio_data.channel_info.wake_info; 1378 call iox_$control (mio_data.iocb_ptr, "set_wakeup_table", 1379 addr (wake_info), p_code); 1380 if p_code ^= 0 then 1381 goto EXIT_RESET_WAKEUP_MODES; 1382 1383 /* Restore the tty event channel with a fast channel. If can't get a 1384* fast channel, then try for a wait channel */ 1385 1386 call get_channel (tty_channel, FAST_EVENT_CHANNEL_TYPE, 1387 null_entry_, p_code); 1388 if p_code ^= 0 then 1389 call get_channel (tty_channel, WAIT_EVENT_CHANNEL_TYPE, 1390 null_entry_, p_code); 1391 1392 call iox_$control (mio_data.iocb_ptr, "set_event_channel", 1393 addr (tty_channel), p_code); 1394 if p_code ^= 0 then 1395 goto EXIT_RESET_WAKEUP_RESTORE; 1396 1397 /* Delete the old channel */ 1398 1399 call ipc_$delete_ev_chn ( 1400 mio_data.channel_info.packet_receiver.channel, (0)); 1401 mio_data.channel_info.packet_receiver.channel = 0; 1402 goto EXIT_RESET_WAKEUP; 1403 1404 EXIT_RESET_WAKEUP_RESTORE: 1405 1406 wake_info.new_table.wake_map (*) = "0"b; 1407 wake_info.new_table.wake_map (rank (mio_data.r.eop)) = "1"b; 1408 call iox_$control (mio_data.iocb_ptr, "set_wakeup_table", 1409 addr (wake_info), (0)); 1410 1411 EXIT_RESET_WAKEUP_MODES: 1412 1413 call iox_$modes (mio_data.iocb_ptr, "wake_tbl", "", p_code); 1414 1415 EXIT_RESET_WAKEUP: 1416 1417 call ipc_$unmask_ev_calls ((0)); 1418 call hcs_$reset_ips_mask (mask, mask); 1419 1420 /* tty_ needs to be primed due to the event channel change */ 1421 1422 input_pending = prime_tty (); 1423 1424 end reset_wakeup; 1425 1426 /* */ 1427 1428 /* *** Procedure: scheduler - Internal proc for ws_packet_receiver_ *** */ 1429 1430 scheduler: 1431 proc (); 1432 1433 1434 /* PROCEDURE FUNCTION 1435* 1436*Process any received data. 1437**/ 1438 1439 /* NOTES 1440**/ 1441 1442 /* INPUT PARAMETERS */ 1443 1444 /* OUTPUT PARAMETERS */ 1445 1446 /* MISC VARIABLES */ 1447 1448 /* STRUCTURES */ 1449 1450 /* INITIALIZATION */ 1451 1452 /* MAIN */ 1453 1454 /* Check for input from the PC on the foreground channel */ 1455 1456 if ^mio_data.task.active (FG_task) then do; 1457 on cleanup mio_data.task.active (FG_task) = Idle; 1458 mio_data.task.active (FG_task) = ^Idle; 1459 call receive_fg (); 1460 mio_data.task.active (FG_task) = Idle; 1461 revert cleanup; 1462 end; 1463 1464 /* Check for input on the background channel, local or remote */ 1465 1466 if ^mio_data.task.active (BG_task) then do; 1467 if mio_data.l_dat (BG).out_ptr ^= null 1468 | mio_data.r.psn (BG) ^= mio_data.s.nasn (BG) 1469 then 1470 call ws_channel_$call_wakeup (mio_data_ptr, 1471 mio_data.channel_info.packet_dispatcher.async_channel); 1472 end; 1473 1474 /* Process any break requests */ 1475 1476 if ^mio_data.task.active (BG_task) & mio_data.switches.brk_pending then do; 1477 call handle_fg_break (); 1478 end; 1479 1480 end scheduler; 1481 1482 /* */ 1483 1484 /* *** Procedure: setup_wakeup - Internal proc for ws_packet_receiver_ *** */ 1485 1486 setup_wakeup: 1487 proc (p_code); 1488 1489 1490 /* PROCEDURE FUNCTION 1491* 1492*Set up the appropriate functions to have the packet_receiver_ awaken properly. 1493**/ 1494 1495 /* NOTES 1496**/ 1497 1498 /* INPUT PARAMETERS */ 1499 1500 /* OUTPUT PARAMETERS */ 1501 dcl p_code fixed bin (35) parameter; 1502 1503 /* MISC VARIABLES */ 1504 dcl input_pending bit (1); /* Data arrived from PC */ 1505 dcl tty_channel fixed bin (71) aligned; /* Old tty channel */ 1506 dcl mask bit (36) aligned; /* IPS mask */ 1507 1508 /* STRUCTURES */ 1509 dcl 01 wake_info like swt_info aligned automatic; 1510 1511 /* INITIALIZATION */ 1512 p_code = 0; 1513 call hcs_$set_ips_mask (""b, mask); 1514 call ipc_$mask_ev_calls (p_code); 1515 if p_code ^= 0 then 1516 goto EXIT_SETUP_WAKEUP; 1517 1518 mio_data.channel_info.packet_receiver.channel = 0; 1519 call iox_$control (mio_data.iocb_ptr, "get_event_channel", 1520 addr (tty_channel), (0)); 1521 1522 /* MAIN */ 1523 1524 /* Create an event call channel and attach it so that we get the wakeups 1525* on the call channel */ 1526 1527 call get_channel (mio_data.channel_info.packet_receiver.channel, 1528 ASYNC_CALL_EVENT_CHANNEL_TYPE, ws_packet_receiver_, p_code); 1529 if p_code ^= 0 then 1530 goto EXIT_SETUP_WAKEUP; 1531 1532 call iox_$control (mio_data.iocb_ptr, "set_event_channel", 1533 addr (mio_data.channel_info.packet_receiver.channel), p_code); 1534 if p_code ^= 0 then 1535 goto EXIT_SETUP_WAKEUP_DELETE; 1536 1537 /* Delete the old tty_channel as it is no longer valid */ 1538 1539 call ipc_$delete_ev_chn (tty_channel, (0)); 1540 1541 /* Set the wakeup table to be the EOP character */ 1542 1543 call iox_$modes (mio_data.iocb_ptr, "^wake_tbl", "", p_code); 1544 if p_code ^= 0 then 1545 goto EXIT_SETUP_WAKEUP_RESTORE; 1546 1547 wake_info.version = swt_info_version_1; 1548 wake_info.new_table.wake_map (*) = "0"b; 1549 wake_info.new_table.wake_map (rank (mio_data.r.eop)) = "1"b; 1550 wake_info.new_table.mbz = ""b; 1551 call iox_$control (mio_data.iocb_ptr, "set_wakeup_table", 1552 addr (wake_info), p_code); 1553 mio_data.channel_info.wake_info = wake_info.old_table; 1554 if p_code ^= 0 then 1555 goto EXIT_SETUP_WAKEUP_RESTORE; 1556 1557 call iox_$modes (mio_data.iocb_ptr, "wake_tbl", "", p_code); 1558 call iox_$modes (mio_data.default_iocb_ptr, "wake_tbl", "", (0)); 1559 if p_code = 0 then 1560 goto EXIT_SETUP_WAKEUP; 1561 1562 EXIT_SETUP_WAKEUP_MODES: 1563 1564 call iox_$modes (mio_data.iocb_ptr, "^wake_tbl", "", (0)); 1565 call iox_$modes (mio_data.default_iocb_ptr, "^wake_tbl", "", (0)); 1566 1567 EXIT_SETUP_WAKEUP_RESTORE: 1568 1569 call get_channel (tty_channel, FAST_EVENT_CHANNEL_TYPE, 1570 null_entry_, (0)); 1571 call iox_$control (mio_data.iocb_ptr, "set_event_channel", 1572 addr (tty_channel), (0)); 1573 1574 EXIT_SETUP_WAKEUP_DELETE: 1575 1576 call ipc_$delete_ev_chn ( 1577 mio_data.channel_info.packet_receiver.channel, (0)); 1578 mio_data.channel_info.packet_receiver.channel = 0; 1579 1580 EXIT_SETUP_WAKEUP: 1581 1582 /* Turn events back on */ 1583 1584 call ipc_$unmask_ev_calls ((0)); 1585 call hcs_$reset_ips_mask (mask, mask); 1586 1587 /* tty_ needs to be primed due to the event channel change */ 1588 1589 input_pending = prime_tty (); 1590 1591 end setup_wakeup; 1592 1593 /* */ 1594 1595 1596 1597 /* INCLUDE FILES */ 1 1 /* BEGIN INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-09-17,Flegel), approve(86-12-16,MCR7580), 1 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 1 6* Created. 1 7* 2) change(86-10-03,Flegel), approve(86-12-16,MCR7580), 1 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 1 9* Combined mowse_minor_caps.incl.pl1 and 1 10* mowse.incl.pl1 so that programmer only needs include mowse.incl.pl1 1 11* 3) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 1 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 1 13* Approved. 1 14* 4) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 1 15* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 1 16* Changes to support async call channels. 1 17* END HISTORY COMMENTS */ 1 18 1 19 /* Name of MOWSE temp seg for data */ 1 20 1 21 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 1 22 dcl temp_seg_name char (6) init ("MOWSE_"); 1 23 1 24 /* Version number */ 1 25 1 26 dcl MOWSE_VERSION_ char (8) int static options (constant) init ("version1"); 1 27 1 28 /* System identification */ 1 29 1 30 dcl LOCAL_SYSTEM fixed bin int static options (constant) init (32); 1 31 dcl REMOTE_SYSTEM fixed bin int static options (constant) init (33); 1 32 1 33 /* Status request return codes */ 1 34 1 35 dcl STATUS_SUCCESS fixed bin (8) int static options (constant) 1 36 init (32); 1 37 dcl STATUS_FAILED fixed bin (8) int static options (constant) 1 38 init (33); 1 39 1 40 /* Input/output capability buffer size limits */ 1 41 1 42 dcl MINIMUM_BUFFER_SIZE fixed bin int static options (constant) init (128); 1 43 dcl MAXIMUM_BUFFER_SIZE fixed bin int static options (constant) init (65536); 1 44 dcl MAXIMUM_BG_SIZE fixed bin int static options (constant) init (512); 1 45 1 46 /* Packet size (communication) constants */ 1 47 1 48 dcl PACKET_SIZE fixed bin int static options (constant) init (124); 1 49 dcl MAXIMUM_PACKET_SIZE fixed bin int static options (constant) init (118); 1 50 1 51 /* Query message constants */ 1 52 1 53 dcl SEND_QUERY fixed bin int static options (constant) init (128); 1 54 dcl ACCEPT fixed bin int static options (constant) init (32); 1 55 dcl REJECT fixed bin int static options (constant) init (33); 1 56 1 57 /* Trace information constants */ 1 58 1 59 dcl RECEIVE fixed bin int static options (constant) init (1); 1 60 dcl SEND fixed bin int static options (constant) init (0); 1 61 1 62 /* Limits on dedicated minor capabilities */ 1 63 1 64 dcl MINIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (32); 1 65 dcl MAXIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (63); 1 66 dcl MINIMUM_USER_MINOR fixed bin int static options (constant) init (64); 1 67 dcl MAXIMUM_USER_MINOR fixed bin int static options (constant) init (127); 1 68 1 69 /* Dedicated Minor Capabilities */ 1 70 1 71 dcl LAST fixed bin int static options (constant) init (0); 1 72 dcl EXECUTE_COMMAND_REPLY fixed bin int static options (constant) init (32); 1 73 dcl EXECUTE_CAPABILITY_REPLY 1 74 fixed bin int static options (constant) init (33); 1 75 dcl FAIL_CAPABILITY fixed bin int static options (constant) init (33); 1 76 dcl INTERNAL fixed bin int static options (constant) init (32); 1 77 dcl EXECUTE_COMMAND fixed bin int static options (constant) init (34); 1 78 dcl ADD_TO_REMOTE_CAT fixed bin int static options (constant) init (35); 1 79 dcl DELETE_FROM_REMOTE_CAT fixed bin int static options (constant) init (36); 1 80 dcl SUSPEND_APPLICATION fixed bin int static options (constant) init (37); 1 81 dcl RESUME_APPLICATION fixed bin int static options (constant) init (38); 1 82 dcl TERMINATE_APPLICATION fixed bin int static options (constant) init (39); 1 83 dcl RESET_APPLICATION fixed bin int static options (constant) init (40); 1 84 dcl RESET_REPLY fixed bin int static options (constant) init (41); 1 85 dcl WAKE_UP fixed bin int static options (constant) init (42); 1 86 dcl STATUS fixed bin int static options (constant) init (43); 1 87 dcl OVERFLOWED_BUFFER fixed bin int static options (constant) init (44); 1 88 dcl SYSTEM_ERROR fixed bin int static options (constant) init (45); 1 89 dcl QUERY_REPLY fixed bin int static options (constant) init (46); 1 90 dcl RESPONSE_CONNECT fixed bin int static options (constant) init (47); 1 91 dcl RESPONSE_DISCONNECT fixed bin int static options (constant) init (48); 1 92 dcl REQUEST_CONNECT fixed bin int static options (constant) init (49); 1 93 dcl REQUEST_DISCONNECT fixed bin int static options (constant) init (50); 1 94 dcl CONTINUE fixed bin int static options (constant) init (51); 1 95 dcl MORE fixed bin int static options (constant) init (52); 1 96 dcl SET_SLEEP_FLAG fixed bin int static options (constant) init (53); 1 97 dcl RESET_SLEEP_FLAG fixed bin int static options (constant) init (54); 1 98 dcl SET_SUSPEND fixed bin int static options (constant) init (55); 1 99 dcl RESET_SUSPEND fixed bin int static options (constant) init (56); 1 100 dcl STATUS_REPLY fixed bin int static options (constant) init (57); 1 101 1 102 /* Foreground */ 1 103 1 104 dcl FG_CONTROL_MESSAGE fixed bin int static options (constant) init (33); 1 105 dcl FG_BREAK fixed bin int static options (constant) init (34); 1 106 dcl FG_TERMINAL_DATA fixed bin int static options (constant) init (35); 1 107 dcl FG_MORE_DATA fixed bin int static options (constant) init (36); 1 108 dcl PUT_TO_BACKGROUND_BUFFER 1 109 fixed bin int static options (constant) init (37); 1 110 dcl PUT_TO_QUERY_MESSAGE_BUFFER 1 111 fixed bin int static options (constant) init (38); 1 112 1 113 /* END INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 1598 2 1 /* BEGIN INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-05-17,Smith), approve(86-12-16,MCR7580), 2 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 2 6* Created to define MOWSE message formats. 2 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 2 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 2 9* Approved. 2 10* 3) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 2 11* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 2 12* Changes to support async call channels. 2 13* END HISTORY COMMENTS */ 2 14 2 15 /* Message Channels */ 2 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 2 17 dcl BG fixed bin int static options (constant) init (0); 2 18 /* Fore ground */ 2 19 dcl FG fixed bin int static options (constant) init (1); 2 20 /* Back ground */ 2 21 2 22 /* Message types: 2 23* 2 24*Each intersystem message is labelled with one of the following types. Upon 2 25*reciept of the message suitable action is undertaken. This scheme was 2 26*introduced to allow the transmission of messsages longer than the maximum 2 27*packet size. 2 28**/ 2 29 2 30 /* Templates for the various messages used throughout the mowse environment. 2 31* Non-allocatable */ 2 32 2 33 dcl message_len fixed bin init (6); 2 34 dcl message_ptr ptr; 2 35 2 36 /* expected format of message */ 2 37 2 38 dcl 01 input_message based (message_ptr), 2 39 02 header, 2 40 03 system char (1) unal, 2 41 03 major char (1) unal, 2 42 03 minor char (1) unal, 2 43 03 source_system char (1) unal, 2 44 03 source_major char (1) unal, 2 45 02 data char (message_len - 5) unal; 2 46 2 47 /* expected format of message to be handled by mowse internal execute command */ 2 48 2 49 dcl 01 execom_message based (message_ptr), 2 50 02 header, 2 51 03 system char (1) unal, 2 52 03 major char (1) unal, 2 53 03 minor char (1) unal, 2 54 03 source_system char (1) unal, 2 55 03 source_major char (1) unal, 2 56 02 data, 2 57 03 cmd_id fixed bin (17) unal, 2 58 03 command char (message_len - 7) unal; 2 59 2 60 /* expected format of message recieved when a request to alter a CAT table 2 61* is made by a remote system */ 2 62 2 63 dcl 01 alter_cat_message based (message_ptr), 2 64 02 header, 2 65 03 system char (1) unal, 2 66 03 major char (1) unal, 2 67 03 minor char (1) unal, 2 68 03 source_system char (1) unal, 2 69 03 source_major char (1) unal, 2 70 02 data, 2 71 03 major char unal, 2 72 03 major_name char (CAPABILITY_NAME_LENGTH) unal; 2 73 2 74 /* Template used to parse message recieved from some remote system. */ 2 75 2 76 dcl 01 event_message based (message_ptr), 2 77 02 header, 2 78 03 system char (1) unal, 2 79 03 major char (1) unal, 2 80 03 msg_type char (1) unal; 2 81 2 82 /* format of message of MORE type */ 2 83 2 84 dcl 01 request_more_message 2 85 based (message_ptr), 2 86 02 header, 2 87 03 system char (1) unal, 2 88 03 major char (1) unal, 2 89 03 more char (1) unal, 2 90 03 source_system char (1) unal, 2 91 03 source_major char (1) unal, 2 92 03 source_minor char (1) unal; 2 93 2 94 /* format of message of CONTINUE type */ 2 95 2 96 dcl 01 more_remaining_message 2 97 based (message_ptr), 2 98 02 header, 2 99 03 system char (1) unal, 2 100 03 major char (1) unal, 2 101 03 continue char (1) unal, 2 102 03 minor char (1) unal, 2 103 03 source_system char (1) unal, 2 104 03 source_major char (1) unal, 2 105 02 data, 2 106 03 data_buf char (message_len - 6) unal; 2 107 2 108 /* format of message of LAST type */ 2 109 2 110 dcl 01 last_message based (message_ptr), 2 111 02 header, 2 112 03 system char (1) unal, 2 113 03 major char (1) unal, 2 114 03 minor char (1) unal, 2 115 03 source_system char (1) unal, 2 116 03 source_major char (1) unal, 2 117 02 data, 2 118 03 data_buf char (message_len - 5) unal; 2 119 2 120 /* Execute_command_reply message format */ 2 121 2 122 dcl 01 execom_reply_msg based (message_ptr), 2 123 02 header, 2 124 03 system char (1) unal, 2 125 03 major char (1) unal, 2 126 03 minor char (1) unal, 2 127 03 source_system char (1) unal, 2 128 03 source_major char (1) unal, 2 129 02 data, 2 130 03 cmd_id fixed bin unal, 2 131 03 status char unal; 2 132 2 133 /* Used to manage partial messages destined for any application */ 2 134 2 135 dcl msg_node_ptr ptr; 2 136 dcl 01 message_node based (msg_node_ptr), 2 137 02 major fixed bin, 2 138 02 partial_msg_list_ptr 2 139 ptr, 2 140 02 next_node ptr, 2 141 02 prev_node ptr, 2 142 02 last_part_msg ptr; 2 143 2 144 dcl part_msg_ptr ptr; 2 145 dcl 01 partial_message based (part_msg_ptr), 2 146 02 msg_ptr ptr, 2 147 02 msg_len fixed bin, 2 148 02 next_msg ptr; 2 149 2 150 2 151 dcl part_msg_length fixed bin; 2 152 dcl part_msg char (part_msg_length) based; 2 153 2 154 /* Trace information structure */ 2 155 dcl 01 trace_message_info, 2 156 02 direction fixed bin, 2 157 02 from_system fixed bin, 2 158 02 from_major fixed bin, 2 159 02 dest_system fixed bin, 2 160 02 dest_major fixed bin, 2 161 02 dest_minor fixed bin, 2 162 02 msg_type fixed bin, 2 163 02 message char (PACKET_SIZE) var; 2 164 2 165 /* END INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 1599 3 1 /* BEGIN INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-07-19,Smith), approve(87-07-15,MCR7580), 3 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 6* Created to define MOWSE information to be 3 7* placed into a temp segment. 3 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 3 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 10* Approved. 3 11* 3) change(87-02-25,Flegel), approve(87-02-25,MCR7580), 3 12* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 13* Added bit switches to the init_mowse_info structure as well as the force 3 14* flag. 3 15* 4) change(87-03-24,Flegel), approve(87-03-24,MCR7580), 3 16* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 3 17* Added open_struc for passing EOP and escape char info from attach_mowse 3 18* to mowse_io_. 3 19* END HISTORY COMMENTS */ 3 20 3 21 /* CAT index limits */ 3 22 3 23 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 3 24 dcl MINIMUM_CAT_ENTRY fixed bin int static options (constant) init (33); 3 25 dcl MAXIMUM_CAT_ENTRY fixed bin int static options (constant) init (64); 3 26 3 27 dcl CAPABILITY_NAME_LENGTH fixed bin int static options (constant) init (32); 3 28 3 29 /* Mowse information structure */ 3 30 3 31 dcl 01 mowse_info based aligned, 3 32 02 version char (8), 3 33 02 local_cat dimension (33:64), /* Multics CAT table */ 3 34 03 flags, 3 35 04 reset bit (1) unal, /* Reset in progress */ 3 36 04 suspended bit (1) unal, /* Suspended applciation */ 3 37 04 status bit (1) unal, /* Status pending */ 3 38 04 mbz1 bit (33) unal, 3 39 03 sleep_time fixed bin, /* Time application is sleeping */ 3 40 03 mcb_ptr ptr, /* Capability MCB */ 3 41 02 remote_cat dimension (33:64), /* PC CAT table */ 3 42 03 major_capability 3 43 fixed bin, /* Capability number */ 3 44 03 capability_name char (32), /* Name of capability */ 3 45 03 flags, 3 46 04 reset bit (1) unal, /* Reset in progress */ 3 47 04 suspended bit (1) unal, /* Suspended capability */ 3 48 04 sleep_time bit (1) unal, /* Application sleeping */ 3 49 04 mbz2 bit (33) unal, 3 50 02 message_manager_info, /* Info for processing messages */ 3 51 03 head_list_ptr ptr, /* Head of message list */ 3 52 03 tail_list_ptr ptr, /* Tail of message list */ 3 53 03 pending_messages 3 54 fixed bin, /* Number of pending messages */ 3 55 02 mowse_flags, 3 56 03 trace bit (1) unal, /* Message tracing facility active */ 3 57 03 debug bit (1) unal, /* Debugging packets facility active */ 3 58 03 error_handled bit (1) unal, /* In mowse_error_handler procedure */ 3 59 03 mbz1 bit (33) unal, 3 60 03 trace_file_iocb ptr, /* Trace file iocb */ 3 61 03 debug_file_iocb ptr, /* Debug file iocb */ 3 62 02 init_mowse_info_ptr 3 63 ptr; /* Initialization information */ 3 64 3 65 /* MOWSE initialization information */ 3 66 3 67 dcl init_mowse_info_ptr ptr; 3 68 dcl 01 init_mowse_info based (init_mowse_info_ptr), 3 69 02 version char (8), 3 70 02 flags, /* Bit switches */ 3 71 03 trace_sw bit (1) unal, 3 72 03 debug_sw bit (1) unal, 3 73 03 io_switch_sw bit (1) unal, 3 74 03 force_sw bit (1) unal, 3 75 03 start_up_sw bit (1) unal, 3 76 03 escape_sw bit (1) unal, 3 77 03 network_sw bit (1) unal, 3 78 03 pad bit (29) unal, 3 79 02 escape, 3 80 03 chars (0:255) bit (1) unal, /* Character escapes */ 3 81 03 pad bit (32) unal, 3 82 02 trace char (512) var, /* Trace file name */ 3 83 02 debug char (512) var, /* Debug file name */ 3 84 02 io_switch char (512) var, /* Io switch name of mowse_io_ attachment */ 3 85 02 startup (MAXIMUM_CAT_ENTRY - MINIMUM_CAT_ENTRY + 1) 3 86 char (168) var; /* Capability to be autoloaded */ 3 87 3 88 /* Open description structure (this is padded to character bounds as it 3 89* is a character overlay structure - passed as a character string) */ 3 90 3 91 dcl open_struc_ptr ptr; 3 92 dcl 01 open_struc based (open_struc_ptr), 3 93 02 flags, 3 94 03 network_sw bit (1) unal, 3 95 03 escape_sw bit (1) unal, 3 96 03 pad bit (7) unal, 3 97 02 escape, 3 98 03 switches (0:255) bit (1) unal, 3 99 03 pad bit (32) unal, 3 100 02 mbz bit (16) unal; 3 101 3 102 /* END INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 1600 4 1 /*----------BEGIN ipc_create_arg.incl.pl1------------------------------------*/ 4 2 4 3 /* 4 4* This include file declares the structure which is the input argument to 4 5* ipc_$create_event_channel. 4 6**/ 4 7 4 8 /****^ HISTORY COMMENTS: 4 9* 1) change(86-08-12,Kissel), approve(86-08-12,MCR7479), 4 10* audit(86-10-08,Fawcett), install(86-11-03,MR12.0-1206): 4 11* New include file added to support async event channels. 4 12* END HISTORY COMMENTS */ 4 13 4 14 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 4 15 4 16 dcl ipc_create_arg_structure_ptr ptr; 4 17 dcl ipc_create_arg_structure_v1 char (8) internal static options (constant) init ("ipcarg01"); 4 18 4 19 dcl 1 ipc_create_arg_structure aligned based (ipc_create_arg_structure_ptr), 4 20 2 version char (8) unaligned, /* From above. */ 4 21 2 channel_type fixed bin, /* See constants below. */ 4 22 2 call_entry variable entry (ptr), /* For event call channels -- who to call. */ 4 23 2 call_data_ptr ptr, /* For event call channels -- something to tell them. */ 4 24 2 call_priority fixed bin (17); /* For event call channels -- who's first? */ 4 25 4 26 /* Constants for the event channel type. */ 4 27 4 28 dcl FAST_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (1); 4 29 dcl WAIT_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (2); 4 30 dcl CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (3); 4 31 dcl ASYNC_CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (4); 4 32 4 33 dcl ANY_CALL_EVENT_CHANNEL_TYPE fixed bin internal static options (constant) init (10); 4 34 4 35 /*----------END ipc_create_arg.incl.pl1--------------------------------------*/ 1601 5 1 /* BEGIN INCLUDE FILE ... set_wakeup_table_info.incl.pl1 */ 5 2 5 3 /* Created 3/1/79 by J. Stern */ 5 4 5 5 5 6 dcl swt_infop ptr; 5 7 dcl swt_info_version_1 fixed bin static options (constant) init (1); 5 8 5 9 dcl 1 swt_info aligned based (swt_infop), /* info structure for set_wakeup_table control order */ 5 10 2 version fixed bin, /* version number of this structure */ 5 11 2 new_table like wakeup_table, /* wakeup table to set */ 5 12 2 old_table like wakeup_table; /* previous wakeup table */ 5 13 5 14 dcl wakeup_tablep ptr; 5 15 5 16 dcl 1 wakeup_table aligned based (wakeup_tablep), 5 17 2 wake_map (0:127) bit (1) unal, /* bit i ON if ith char is wakeup char */ 5 18 2 mbz bit (16) unal; 5 19 5 20 5 21 /* END INCLUDE FILE ... set_wakeup_table_info.incl.pl1 */ 1602 6 1 /* BEGIN INCLUDE FILE static_handlers.incl.pl1 */ 6 2 6 3 /* format: style4,indattr,ifthenstmt,ifthen,idind33,^indcomtxt */ 6 4 6 5 /* HISTORY: 6 6*Written by S. H. Webber, 06/20/75. 6 7*Modified: 6 8*12/15/83 by Benson Margulies: added undefined_pointer_sct_index and 6 9* pgt_sct_index. 6 10*06/11/84 by Lee A. Newcomb: added dm_shutdown_warning_sct_index and 6 11* dm_user_shutdown_sct_index for handling of Data Management 6 12* shutdown. 6 13*08/22/84 by R. Michael Tague: Removed dm_shutdown_warning_sct_index and 6 14* dm_user_shutdown_sct_index. Added 6 15* system_shutdown_scheduled_sct_index and 6 16* dm_shutdown_scheduled_sct_index. 6 17**/ 6 18 6 19 6 20 /****^ HISTORY COMMENTS: 6 21* 1) change(85-11-13,Herbst), approve(87-07-21,MCR7697), 6 22* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 6 23* Add system_message_sct_index. 6 24* END HISTORY COMMENTS */ 6 25 6 26 6 27 dcl ( 6 28 shutdown_sct_index init (0), 6 29 store_sct_index init (1), 6 30 mme1_sct_index init (2), 6 31 fault_tag_1_sct_index init (3), 6 32 timer_runout_sct_index init (4), 6 33 command_sct_index init (5), 6 34 derail_sct_index init (6), 6 35 lockup_sct_index init (7), 6 36 connect_sct_index init (8), 6 37 parity_sct_index init (9), 6 38 illegal_procedure_sct_index init (10), 6 39 op_not_complete_sct_index init (11), 6 40 startup_sct_index init (12), 6 41 ovrflo_sct_index init (13), 6 42 zerodivide_sct_index init (14), 6 43 execute_sct_index init (15), 6 44 seg_fault_error_sct_index init (16), 6 45 page_fault_error_sct_index init (17), 6 46 directed_fault_2_sct_index init (18), 6 47 directed_fault_3_sct_index init (19), 6 48 accessviolation_sct_index init (20), 6 49 mme2_sct_index init (21), 6 50 mme3_sct_index init (22), 6 51 mme4_sct_index init (23), 6 52 linkage_error_sct_index init (24), 6 53 fault_tag_3_sct_index init (25), 6 54 undefined_fault_sct_index init (26), 6 55 trouble_sct_index init (31), 6 56 illegal_opcode_sct_index init (32), 6 57 simfault_000000_sct_index init (33), 6 58 illegal_modifier_sct_index init (34), 6 59 illegal_ring_order_sct_index init (35), 6 60 not_in_execute_bracket_sct_index init (36), 6 61 no_execute_permission_sct_index init (37), 6 62 not_in_read_bracket_sct_index init (38), 6 63 no_read_permission_sct_index init (39), 6 64 not_in_write_bracket_sct_index init (40), 6 65 no_write_permission_sct_index init (41), 6 66 not_a_gate_sct_index init (42), 6 67 not_in_call_bracket_sct_index init (43), 6 68 outward_call_sct_index init (44), 6 69 bad_outward_call_sct_index init (45), 6 70 inward_return_sct_index init (46), 6 71 cross_ring_transfer_sct_index init (47), 6 72 ring_alarm_fault_sct_index init (48), 6 73 am_fault_sct_index init (49), 6 74 out_of_bounds_sct_index init (50), 6 75 fixedoverflow_sct_index init (51), 6 76 overflow_sct_index init (52), 6 77 underflow_sct_index init (53), 6 78 stringsize_sct_index init (54), 6 79 other_illegal_proc_sct_index init (55), 6 80 storage_sct_index init (56), 6 81 packed_pointer_fault_sct_index init (57), 6 82 lot_fault_sct_index init (58), 6 83 isot_fault_sct_index init (59), 6 84 system_packed_pointer_sct_index init (60), 6 85 quit_sct_index init (61), 6 86 alrm_sct_index init (62), 6 87 cput_sct_index init (63), 6 88 record_quota_overflow_sct_index init (64), 6 89 size_sct_index init (65), 6 90 neti_sct_index init (66), 6 91 other_command_sct_index init (67), 6 92 susp_sct_index init (68), 6 93 term_sct_index init (69), 6 94 wkp_sct_index init (70), 6 95 undefined_pointer_sct_index init (71), 6 96 pgt_sct_index init (72), 6 97 system_shutdown_scheduled_sct_index 6 98 init (73), 6 99 dm_shutdown_scheduled_sct_index init (74), 6 100 system_message_sct_index init (75) 6 101 ) fixed bin (17) int static options (constant); 6 102 6 103 /* END INCLUDE FILE static_handlers.incl.pl1 */ 1603 7 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 7 2 7 3 /* Structure for find_condition_info_. 7 4* 7 5* Written 1-Mar-79 by M. N. Davidoff. 7 6**/ 7 7 7 8 /* automatic */ 7 9 7 10 declare condition_info_ptr pointer; 7 11 7 12 /* based */ 7 13 7 14 declare 1 condition_info aligned based (condition_info_ptr), 7 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 7 16 2 version fixed binary, /* Must be 1 */ 7 17 2 condition_name char (32) varying, /* name of condition */ 7 18 2 info_ptr pointer, /* pointer to the condition data structure */ 7 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 7 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 7 21 2 flags unaligned, 7 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 7 23 3 pad1 bit (35), 7 24 2 pad2 bit (36), 7 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 7 26 2 pad3 (4) bit (36); 7 27 7 28 /* internal static */ 7 29 7 30 declare condition_info_version_1 7 31 fixed binary internal static options (constant) initial (1); 7 32 7 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 1604 8 1 /* BEGIN INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 8 2 8 3 /****^ HISTORY COMMENTS: 8 4* 1) change(87-04-16,Flegel), approve(87-07-15,MCR7580), 8 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 8 6* Created. 8 7* 2) change(87-06-23,Flegel), approve(87-06-23,MCR7649), 8 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 8 9* Converted to support the use of event channels. 8 10* 3) change(88-10-06,Flegel), approve(88-11-16,MCR8023), audit(88-12-12,Lee), 8 11* install(89-01-24,MR12.3-1012): 8 12* phx21215 - Added mowse_io_data.channel_info.foreground to use to generate 8 13* events when something happens in the foreground. 8 14* END HISTORY COMMENTS */ 8 15 8 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 8 17 dcl mowse_io_data_ptr ptr; 8 18 dcl 01 mowse_io_data based (mowse_io_data_ptr), 8 19 02 open_descrip char (19) var, 8 20 02 iocb_ptr ptr aligned, /* mowse_tty iocb pointer */ 8 21 02 default_iocb_ptr ptr aligned, /* mowse_i/o iocb pointer */ 8 22 02 attach_descrip char (256) var, /* Attach description */ 8 23 02 old_modes char (256) unal, /* Modes on previous iocb */ 8 24 8 25 02 current_modes char (256) unal, /* Current mode settings */ 8 26 02 WSTERM_modes (11) char (1), /* Encoded modes for WSTERM */ 8 27 02 cv_trans_struc_ptr ptr, /* Conversion table pointer */ 8 28 8 29 02 info_ptr ptr, /* Application control info seg */ 8 30 02 mcb_ptr ptr, /* Internal MCB to MOWSE */ 8 31 02 sleepers ptr, /* Queue of sleeping applications */ 8 32 02 dozers fixed bin (35), /* Number of unhandled sleeper wakeups */ 8 33 8 34 02 ws, /* Vidoe system control */ 8 35 03 flags, 8 36 04 trace bit (1) unal, 8 37 04 debug bit (1) unal, 8 38 04 mark_set bit (1) unal, 8 39 04 video_mode bit (1) unal, /* State (on/off) of video */ 8 40 04 more_input bit (1) unal, /* Last read unfinished */ 8 41 04 pad bit (31) unal, 8 42 03 read_count fixed bin (17), /* count of unfinished read commands sent */ 8 43 03 ips_mask bit (36) aligned, 8 44 8 45 02 sus_data, /* sus_ information */ 8 46 03 sus_entry ptr, /* Saved sus_ signal handler */ 8 47 03 activated bit (1) unal, /* If sus_ has been signaled */ 8 48 03 pad bit (35) unal, 8 49 8 50 02 channel_info, /* Event channel info */ 8 51 03 process_id bit (36) aligned, /* This process */ 8 52 03 wake_info, 8 53 04 wake_map (0:127) bit (1) unal, /* Break chars */ 8 54 04 pad bit (16) unal, 8 55 03 user_input like wait_info, /* Input wait channel */ 8 56 03 packet_transmitter like wait_info, /* Write events */ 8 57 03 packet_receiver, /* hcs_ events */ 8 58 04 channel fixed bin (71), /* Channel id */ 8 59 03 packet_dispatcher, /* Dispatch channels */ 8 60 04 sync_channel fixed bin (71), /* Process when quiet */ 8 61 04 async_channel fixed bin (71), /* Process NOW! */ 8 62 03 foreground, /* MF - phx21215 - read/write_status, get_event_channel info */ 8 63 04 channel fixed bin (71), /* Event channel */ 8 64 8 65 02 debug_iocb_ptr ptr, /* Debug file IOCB */ 8 66 02 trace_iocb_ptr ptr, /* Trace file IOCB */ 8 67 8 68 02 timer_info (8), 8 69 03 wakeup fixed bin (71), /* Seconds from last in queue */ 8 70 03 timer_id fixed bin, /* Who owns this wakeup */ 8 71 8 72 02 switches, /* Control switches */ 8 73 03 quit_enable bit (1) unal, /* Quit processing state */ 8 74 03 reset_write bit (1) unal, /* resetwrite requested */ 8 75 03 disconnect_active bit (1) unal, /* Disconnection occuring */ 8 76 03 rs_pending (2) bit (1) unal, /* Reset occuring */ 8 77 03 ds_pending (2) bit (1) unal, /* Disconnect occuring */ 8 78 03 br_pending bit (1) unal, /* Break occurring */ 8 79 03 brk_pending bit (1) unal, /* Break occuring (quit) */ 8 80 03 info_stored bit (1) unal, /* Info segment stored */ 8 81 03 connect_active bit (1) unal, /* Connection in progress */ 8 82 03 start_issued bit (1) unal, /* Indicates start order pending */ 8 83 03 pad bit (24) unal, 8 84 8 85 02 task, 8 86 03 active (0:2) bit (1) unal, /* Tasks which are active */ 8 87 03 pad bit (33) unal, 8 88 8 89 02 user_input, /* User_i/o input data */ 8 90 03 in fixed bin (21), /* Next free slot in repository */ 8 91 03 out fixed bin (21), /* Head of data */ 8 92 03 queue (0:4095) char (1), /* Repository */ 8 93 8 94 02 l_dat (0:1), /* Local data message queue */ 8 95 03 in_ptr ptr, /* Incoming messages */ 8 96 03 out_ptr ptr, /* Outgoing messages */ 8 97 8 98 02 r, /* Receiver data */ 8 99 03 eop char (1), /* End of packet character */ 8 100 03 sop char (1), /* Start of packet character */ 8 101 03 esc (0:2) char (1), /* 3 escape characters */ 8 102 03 esc_count fixed bin, /* Number of escaped chars in received packet */ 8 103 03 asn (0:1) fixed bin (3), /* Acknowledge sequence number */ 8 104 03 dat (0:1, 0:3) char (124) var, /* Data queues */ 8 105 03 pkt (0:2) char (129) var, /* Packet queue */ 8 106 03 pktin fixed bin, /* Next packet character in */ 8 107 03 pktout fixed bin, /* Head of packet */ 8 108 03 psn (0:1) fixed bin, /* SN for each channel */ 8 109 03 esckey bit (9) unal, /* Decoding 2nd character escape */ 8 110 03 ignoring (0:1) bit (1) unal, /* Ignore data during synchronization */ 8 111 03 pad bit (25) unal, 8 112 8 113 02 s, /* Sender data */ 8 114 03 eop char (1), /* End of packet character */ 8 115 03 sop char (1), /* Start of packet character */ 8 116 03 esc (0:2) char (1), /* 3 escape characters */ 8 117 03 dat (0:1, 0:3) char (124) var, /* Data queue */ 8 118 03 psn (0:1) fixed bin (3), /* Packet sequence number */ 8 119 03 lasn (0:1) fixed bin (3), /* Last ack sent */ 8 120 03 nasn (0:1) fixed bin (3), /* Next ack to be sent */ 8 121 03 escreq (0:255) bit (1) unal, /* Characters to be escaped */ 8 122 03 pad bit (32) unal; 8 123 8 124 /* Wait channel control struncture */ 8 125 8 126 dcl 01 wait_info based, 8 127 02 channel fixed bin (71) aligned, /* Channel ID */ 8 128 02 count fixed bin, /* Waiting count */ 8 129 02 flags, 8 130 03 transmitted bit (1) unal, /* Wakeup already generated */ 8 131 03 pad bit (35) unal; 8 132 8 133 /* END INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 1605 9 1 /* BEGIN INCLUDE FILE: mowse_io_constants.incl.pl1 * * * * * * * * * * * * */ 9 2 9 3 /****^ HISTORY COMMENTS: 9 4* 1) change(86-11-06,Flegel), approve(87-07-15,MCR7580), 9 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 9 6* Created. 9 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 9 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 9 9* Approved. 9 10* END HISTORY COMMENTS */ 9 11 9 12 /* Protocol constants */ 9 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 9 14 dcl INIT_CRC fixed bin int static options (constant) init (63); 9 15 dcl CONVERT_CRC fixed bin int static options (constant) init (32); 9 16 dcl REVPOLY fixed bin int static options (constant) init (101001b); /* Bit N is coeff of x**(5-N) of generator */ 9 17 dcl OR bit (4) int static options (constant) init ("0111"b); 9 18 dcl XOR bit (4) int static options (constant) init ("0110"b); 9 19 dcl And bit (4) int static options (constant) init ("0001"b); 9 20 9 21 /* Debugging Switches */ 9 22 dcl DBGPKTS bit (1) int static options (constant) init ("0"b); 9 23 /* show packets */ 9 24 dcl DBGREJS bit (1) int static options (constant) init ("1"b); 9 25 /* diagnose rejects */ 9 26 dcl DBGXCHRS bit (1) int static options (constant) init ("0"b); 9 27 /* show extraneous received chars */ 9 28 9 29 /* ASCII Control Characters */ 9 30 9 31 dcl CR char (1) int static options (constant) 9 32 init (" "); 9 33 dcl ESC char (1) int static options (constant) 9 34 init (""); 9 35 dcl LF char (1) int static options (constant) 9 36 init (" 9 37 "); 9 38 dcl SI char (1) int static options (constant) 9 39 init (""); 9 40 dcl SO char (1) int static options (constant) 9 41 init (""); 9 42 dcl SOH char (1) int static options (constant) 9 43 init (""); 9 44 9 45 /* Protocol Bit-field Constants */ 9 46 dcl ChnCnt fixed bin int static options (constant) init (2); 9 47 /* no. logical channels */ 9 48 dcl SeqFld fixed bin int static options (constant) init (2); 9 49 /* no. bits in seq. field */ 9 50 dcl SeqCnt fixed bin int static options (constant) init (4); 9 51 /* 2**SeqFld */ 9 52 dcl SeqMsk fixed bin int static options (constant) init (3); 9 53 /* SeqCnt-1 */ 9 54 9 55 /* Protocol Byte-field Constants */ 9 56 dcl MaxDatLen fixed bin int static options (constant) init (124); 9 57 /* Maximum packet length */ 9 58 dcl SOPLen fixed bin int static options (constant) init (1); 9 59 /* Characters in SOP field */ 9 60 dcl TypLen fixed bin int static options (constant) init (1); 9 61 /* Characters in type field */ 9 62 dcl ChkLen fixed bin int static options (constant) init (1); 9 63 /* Characters in check field */ 9 64 dcl LenLen fixed bin int static options (constant) init (1); 9 65 /* Characters in length field */ 9 66 dcl EOPLen fixed bin int static options (constant) init (1); 9 67 /* Characters in EOP field */ 9 68 dcl MinPktLen fixed bin int static options (constant) init (5); 9 69 /* SOPLen+TypLen+LenLen+ChkLen+EOPLen */ 9 70 dcl MaxPktLen fixed bin int static options (constant) init (129); 9 71 /* MinPktLen+MaxDatLen */ 9 72 9 73 /* Protocol Packet Type Constants */ 9 74 dcl RstOff fixed bin (8) int static options (constant) 9 75 init (32); /* */ 9 76 dcl Request fixed bin (8) int static options (constant) 9 77 init (0); 9 78 dcl Confirm fixed bin (8) int static options (constant) 9 79 init (1); 9 80 dcl RstCnt fixed bin (8) int static options (constant) 9 81 init (2); /* Confirm+1 */ 9 82 dcl FGBrk fixed bin (8) int static options (constant) 9 83 init (36); /* BrkOff+2*FG*/ 9 84 dcl DisCon fixed bin (8) int static options (constant) 9 85 init (34); /* BrkOff+2*BG */ 9 86 dcl FastDis fixed bin (8) int static options (constant) 9 87 init (86); /* NakOff+NakCnt */ 9 88 dcl BrkOff fixed bin (8) int static options (constant) 9 89 init (34); /* RstOff+RstCnt */ 9 90 dcl BrkCnt fixed bin (8) int static options (constant) 9 91 init (4); /* ChnCnt*(Confirm+1) */ 9 92 dcl DatOff fixed bin (8) int static options (constant) 9 93 init (38); /* BrkOff+BrkCnt */ 9 94 dcl DatCnt fixed bin (8) int static options (constant) 9 95 init (32); /* ChnCnt*SeqCnt*SeqCnt */ 9 96 dcl AckOff fixed bin (8) int static options (constant) 9 97 init (70); /* DatOff+DatCnt */ 9 98 dcl AckCnt fixed bin (8) int static options (constant) 9 99 init (8); /* ChnCnt*SeqCnt */ 9 100 dcl NakOff fixed bin (8) int static options (constant) 9 101 init (78); /* AckOff+AckCnt */ 9 102 dcl NakCnt fixed bin (8) int static options (constant) 9 103 init (8); /* ChnCnt*SeqCnt */ 9 104 9 105 /* Protocol Parameters */ 9 106 dcl RQS fixed bin int static options (constant) init (2); 9 107 /* rcvchr's queue size (upper bound of r_pkt) */ 9 108 dcl RWS fixed bin int static options (constant) init (3); 9 109 /* Receiver's window size (upper bound of r_dat */ 9 110 dcl SWS fixed bin int static options (constant) init (3); 9 111 /* Sender's window size (upper bound of s_dat */ 9 112 dcl Lim_r_timer fixed bin int static options (constant) init (7); 9 113 /* Limit for r_timer */ 9 114 dcl Lim_s_timer fixed bin int static options (constant) init (15); 9 115 /* Limit for s_timer */ 9 116 dcl Lim_p_timer fixed bin int static options (constant) init (30); 9 117 /* Limit for pending_timer */ 9 118 dcl Timer_Interval fixed bin (71) int static options (constant) 9 119 init (125000); /* Next wakeup of timer */ 9 120 9 121 /* Tasking priority values */ 9 122 dcl Modem_Reader_Task fixed bin int static options (constant) init (0); 9 123 /* Modem Reader */ 9 124 dcl FG_task fixed bin int static options (constant) init (1); 9 125 /* FG processing */ 9 126 dcl BG_task fixed bin int static options (constant) init (2); 9 127 /* BG processing */ 9 128 dcl Idle bit (1) int static options (constant) init ("0"b); 9 129 /* Task not executing */ 9 130 9 131 /* Capability constants */ 9 132 dcl NO_MINOR fixed bin int static options (constant) init (-1); 9 133 9 134 /* WSTERM modes string indices */ 9 135 9 136 dcl WST_INIT_PL fixed bin int static options (constant) init (23); 9 137 dcl WST_INIT_LL fixed bin int static options (constant) init (79); 9 138 9 139 dcl WST_HEADER_1 fixed bin int static options (constant) init (1); 9 140 dcl WST_HEADER_2 fixed bin int static options (constant) init (2); 9 141 dcl WST_HEADER_3 fixed bin int static options (constant) init (3); 9 142 dcl WST_LENGTH_HIGH fixed bin int static options (constant) init (4); 9 143 dcl WST_LENGTH_LOW fixed bin int static options (constant) init (5); 9 144 dcl WST_MODES fixed bin int static options (constant) init (6); 9 145 dcl WST_KILL fixed bin int static options (constant) init (7); 9 146 dcl WST_ERASE fixed bin int static options (constant) init (8); 9 147 dcl WST_ESCAPE fixed bin int static options (constant) init (9); 9 148 dcl WST_LINE_LENGTH fixed bin int static options (constant) init (10); 9 149 dcl WST_PAGE_LENGTH fixed bin int static options (constant) init (11); 9 150 9 151 /* END INCLUDE FILE: mowse_io_constants.incl.pl1 * * * * * * * * * * * * */ 1606 10 1 /* BEGIN INCLUDE FILE ... tty_read_status_info.incl.pl1 10 2* 10 3* control structure for the read_status and write_status orders to tty_ 10 4* 10 5* Modified 2/1/83 by Olin Sibert to add tty_write_status_info structure in 10 6* support of lap_simplex_ MPX. 10 7**/ 10 8 10 9 10 10 /****^ HISTORY COMMENTS: 10 11* 1) change(88-07-07,Beattie), approve(88-06-27,MCR7926), 10 12* audit(88-07-22,Brunelle), install(88-08-08,MR12.2-1082): 10 13* Prepared for installation. 10 14* END HISTORY COMMENTS */ 10 15 10 16 10 17 dcl 1 tty_read_status_info aligned based (tty_read_status_info_ptr), 10 18 2 event_channel fixed bin (71), 10 19 2 input_pending bit (1); 10 20 10 21 dcl tty_read_status_info_ptr ptr; 10 22 10 23 dcl 1 tty_write_status_info aligned based (tty_write_status_info_ptr), 10 24 2 event_channel fixed bin (71), 10 25 2 output_pending bit (1); 10 26 10 27 dcl tty_write_status_info_ptr ptr; 10 28 10 29 /* END INCLUDE FILE ... tty_read_status_info.incl.pl1 */ 1607 1608 1609 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/17/90 0815.3 ws_packet_receiver_.pl1 >spec>install>1044>ws_packet_receiver_.pl1 1598 1 08/10/87 1436.7 mowse.incl.pl1 >ldd>include>mowse.incl.pl1 1599 2 08/10/87 1435.9 mowse_messages.incl.pl1 >ldd>include>mowse_messages.incl.pl1 1600 3 08/10/87 1436.7 mowse_info.incl.pl1 >ldd>include>mowse_info.incl.pl1 1601 4 11/07/86 1650.3 ipc_create_arg.incl.pl1 >ldd>include>ipc_create_arg.incl.pl1 1602 5 04/27/79 1715.0 set_wakeup_table_info.incl.pl1 >ldd>include>set_wakeup_table_info.incl.pl1 1603 6 08/06/87 1013.5 static_handlers.incl.pl1 >ldd>include>static_handlers.incl.pl1 1604 7 06/28/79 1304.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 1605 8 01/25/89 1342.1 mowse_io_data.incl.pl1 >ldd>include>mowse_io_data.incl.pl1 1606 9 08/10/87 1436.7 mowse_io_constants.incl.pl1 >ldd>include>mowse_io_constants.incl.pl1 1607 10 08/11/88 2115.0 tty_read_status_info.incl.pl1 >ldd>include>tty_read_status_info.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. ASYNC_CALL_EVENT_CHANNEL_TYPE 000034 constant fixed bin(17,0) initial dcl 4-31 set ref 1527* AckCnt constant fixed bin(8,0) initial dcl 9-98 ref 427 AckOff constant fixed bin(8,0) initial dcl 9-96 ref 427 427 699 BG constant fixed bin(17,0) initial dcl 2-17 ref 1467 1467 1467 BG_task constant fixed bin(17,0) initial dcl 9-126 ref 1466 1476 BrkCnt constant fixed bin(8,0) initial dcl 9-90 ref 431 BrkOff constant fixed bin(8,0) initial dcl 9-88 ref 431 431 CR constant char(1) initial packed unaligned dcl 9-31 ref 203 ChkLen constant fixed bin(17,0) initial dcl 9-62 ref 397 410 411 ChnCnt constant fixed bin(17,0) initial dcl 9-46 ref 171 Confirm constant fixed bin(8,0) initial dcl 9-78 ref 765 765 777 788 819 819 1035 1035 1041 1049 1049 DatCnt constant fixed bin(8,0) initial dcl 9-94 ref 425 DatOff constant fixed bin(8,0) initial dcl 9-92 ref 425 425 867 DisCon constant fixed bin(8,0) initial dcl 9-84 ref 788 807 819 819 EOPLen constant fixed bin(17,0) initial dcl 9-66 ref 397 ESC constant char(1) initial packed unaligned dcl 9-33 ref 210 FAST_EVENT_CHANNEL_TYPE 000037 constant fixed bin(17,0) initial dcl 4-28 set ref 1386* 1567* FG 000037 constant fixed bin(17,0) initial dcl 2-19 set ref 578* 1248* 1267* FGBrk constant fixed bin(8,0) initial dcl 9-82 ref 755 765 765 777 FG_BREAK 000035 constant fixed bin(17,0) initial dcl 1-105 set ref 578* FG_task constant fixed bin(17,0) initial dcl 9-124 ref 1456 1457 1458 1460 False constant bit(1) initial packed unaligned dcl 129 set ref 217 328 566 779 797 801* 910 1052 1207* 1315 FastDis constant fixed bin(8,0) initial dcl 9-86 ref 435 INIT_CRC constant fixed bin(17,0) initial dcl 9-14 ref 485 Idle constant bit(1) initial packed unaligned dcl 9-128 ref 151 159 1457 1458 1460 LF constant char(1) initial packed unaligned dcl 9-35 ref 206 LenLen constant fixed bin(17,0) initial dcl 9-64 ref 397 398 MAXIMUM_CAT_ENTRY internal static fixed bin(17,0) initial dcl 3-25 ref 3-68 MINIMUM_CAT_ENTRY internal static fixed bin(17,0) initial dcl 3-24 ref 3-68 MaxDatLen constant fixed bin(17,0) initial dcl 9-56 ref 1136 1149 1160 1189 1191 1236 1248 1248 1267 1267 MaxPktLen constant fixed bin(17,0) initial dcl 9-70 ref 387 1189 MinPktLen constant fixed bin(17,0) initial dcl 9-68 ref 387 578 578 694 907 957 Modem_Reader_Task constant fixed bin(17,0) initial dcl 9-122 ref 150 151 159 NakCnt constant fixed bin(8,0) initial dcl 9-102 ref 429 NakOff constant fixed bin(8,0) initial dcl 9-100 ref 429 429 962 PACKET_SIZE internal static fixed bin(17,0) initial dcl 1-48 ref 2-155 RQS constant fixed bin(17,0) initial dcl 9-106 ref 1151 1203 RWS constant fixed bin(17,0) initial dcl 9-108 ref 172 Request constant fixed bin(8,0) initial dcl 9-76 ref 755 807 1026 RstCnt constant fixed bin(8,0) initial dcl 9-80 ref 433 443 RstOff constant fixed bin(8,0) initial dcl 9-74 ref 433 433 443 443 1026 1035 1035 1041 1049 1049 SI constant char(1) initial packed unaligned dcl 9-38 ref 211 SO constant char(1) initial packed unaligned dcl 9-40 ref 212 SOH constant char(1) initial packed unaligned dcl 9-42 ref 209 SOPLen constant fixed bin(17,0) initial dcl 9-58 ref 423 699 755 777 788 807 867 908 962 1026 1041 SeqCnt 000034 constant fixed bin(17,0) initial dcl 9-50 ref 172 700 868 869 911 963 SeqFld 000040 constant fixed bin(17,0) initial dcl 9-48 set ref 701* 869* 870 870 964* True constant bit(1) initial packed unaligned dcl 130 set ref 153 248 343 435* 770 771 817 899 1032 TypLen constant fixed bin(17,0) initial dcl 9-60 ref 908 WAIT_EVENT_CHANNEL_TYPE 000040 constant fixed bin(17,0) initial dcl 4-29 set ref 1388* XOR constant bit(4) initial packed unaligned dcl 9-18 ref 1171 activated 334 based bit(1) level 3 packed packed unaligned dcl 68 set ref 248* 1353 active 431 based bit(1) array level 3 packed packed unaligned dcl 68 set ref 141* 141* 141* 150 151* 159* 1456 1457* 1458* 1460* 1466 1476 addr builtin function dcl 122 ref 256 256 338 338 388 388 401 401 411 411 414 414 438 438 535 535 578 578 626 626 628 628 642 642 706 706 714 714 757 757 780 780 790 790 810 810 875 875 892 892 912 912 969 969 976 976 1028 1028 1043 1043 1087 1087 1130 1200 1200 1248 1248 1267 1267 1274 1274 1378 1378 1392 1392 1408 1408 1519 1519 1532 1532 1551 1551 1571 1571 asn 2447 based fixed bin(3,0) array level 3 in structure "mio_data" dcl 68 in procedure "ws_packet_receiver_" set ref 214* 319 319 323 333* asn 000706 automatic fixed bin(17,0) dcl 851 in procedure "parse_data" set ref 868* 874* asn 000665 automatic fixed bin(17,0) dcl 680 in procedure "parse_ack" set ref 700* 705* asn 000721 automatic fixed bin(17,0) dcl 943 in procedure "parse_nak" set ref 963* 968* asn_valid 000156 automatic bit(1) packed unaligned dcl 309 set ref 319* 323* 328 async_channel 360 based fixed bin(71,0) level 4 dcl 68 set ref 1467* bool builtin function dcl 115 ref 1171 br_pending 430(07) based bit(1) level 3 packed packed unaligned dcl 68 set ref 770* 779* brk_pending 430(08) based bit(1) level 3 packed packed unaligned dcl 68 set ref 566* 771* 1476 byte builtin function dcl 116 ref 492 765 765 819 819 1035 1035 1049 1049 call_data_ptr 10 000212 automatic pointer level 2 dcl 523 set ref 533* call_entry 4 000212 automatic entry variable level 2 dcl 523 set ref 532* call_priority 12 000212 automatic fixed bin(17,0) level 2 dcl 523 set ref 534* channel 354 based fixed bin(71,0) level 4 in structure "mio_data" dcl 68 in procedure "ws_packet_receiver_" set ref 164* 1358 1399* 1401* 1518* 1527* 1532 1532 1574* 1578* channel 000720 automatic fixed bin(17,0) dcl 942 in procedure "parse_nak" set ref 964* 968* 982* channel 000664 automatic fixed bin(17,0) dcl 679 in procedure "parse_ack" set ref 701* 705* channel 000707 automatic fixed bin(17,0) dcl 852 in procedure "parse_data" set ref 870* 874* 891 897 898* 899 908 910 911 channel 362 based fixed bin(71,0) level 4 in structure "mio_data" dcl 68 in procedure "ws_packet_receiver_" set ref 1280* channel_info 336 based structure level 2 unaligned dcl 68 channel_type 2 000212 automatic fixed bin(17,0) level 2 dcl 523 set ref 531* chkidx 000167 automatic fixed bin(17,0) dcl 372 set ref 410* 411 411 cleanup 000000 stack reference condition dcl 125 ref 1457 1461 code 000640 automatic fixed bin(35,0) dcl 613 set ref 624* 625 626* 628 632 642* 644 cond_info 000102 automatic structure level 1 dcl 67 set ref 256 256 condition_info based structure level 1 dcl 7-14 condition_info_version_1 constant fixed bin(17,0) initial dcl 7-30 ref 255 convert builtin function dcl 121 ref 578 578 1248 1248 1267 1267 crc 000201 automatic fixed bin(17,0) dcl 477 set ref 485* 487* 487* 492 dat 2451 based varying char(124) array level 3 dcl 68 set ref 215* 908* data 1 based char level 2 in structure "packet" packed packed unaligned dcl 376 in procedure "approve_packet" set ref 388 388 398 401 401 411 411 411 414 414 423 438 438 data 000100 automatic char(1) array packed unaligned dcl 1236 in procedure "receive_fg" set ref 1248 1248 1256 1267 1267 data 1 based char level 2 in structure "packet" packed packed unaligned dcl 947 in procedure "parse_nak" set ref 962 969 969 976 976 data 1 based char level 2 in structure "packet" packed packed unaligned dcl 684 in procedure "parse_ack" set ref 699 706 706 714 714 data 1 based char level 2 in structure "packet" packed packed unaligned dcl 745 in procedure "parse_break" set ref 755 757 757 777 780 780 788 790 790 807 810 810 data 1 based char level 2 in structure "packet" packed packed unaligned dcl 856 in procedure "parse_data" set ref 867 875 875 892 892 908 912 912 data 1 based char level 2 in structure "packet" packed packed unaligned dcl 1011 in procedure "parse_reset" set ref 1026 1028 1028 1041 1043 1043 data_len 000704 automatic fixed bin(21,0) dcl 849 in procedure "parse_data" set ref 907* 908 data_len 000101 automatic fixed bin(21,0) dcl 1238 in procedure "receive_fg" set ref 1248* 1254 1255 1267* debug_iocb_ptr 364 based pointer level 2 dcl 68 set ref 140 141* 250* 388 388* 401 401* 414 414* 438* 706 706* 714 714* 757 757* 780 780* 790 790* 810 810* 875 875* 892 892* 912 912* 969 969* 976 976* 1028 1028* 1043 1043* default_iocb_ptr 10 based pointer level 2 dcl 68 set ref 1558* 1565* ds_pending 430(05) based bit(1) array level 3 packed packed unaligned dcl 68 set ref 797* 801 817* 885 885 1021 1021 1199 1315* eop 2444 based char(1) level 3 packed packed unaligned dcl 68 set ref 203* 206* 1148 1407 1549 error_table_$line_status_pending 000052 external static fixed bin(35,0) dcl 89 ref 624 625 628 esc 2444(18) based char(1) array level 3 packed packed unaligned dcl 68 set ref 210* 211* 212* 1175 1179 1183 esc_count 2446 based fixed bin(17,0) level 3 dcl 68 set ref 213* 398 1176* 1176 1180* 1180 1184* 1184 1202* esckey 3223 based bit(9) level 3 packed packed unaligned dcl 68 set ref 216* 1135* 1170 1171 1173* 1177* 1181* 1185* 1188 fields 000722 automatic fixed bin(17,0) dcl 944 in procedure "parse_nak" set ref 962* 963 964* fields 000666 automatic fixed bin(17,0) dcl 681 in procedure "parse_ack" set ref 699* 700 701* fields 000710 automatic fixed bin(17,0) dcl 853 in procedure "parse_data" set ref 867* 868 869* 870* find_condition_info_ 000042 constant entry external dcl 83 ref 256 fixedbin21 based fixed bin(21,0) dcl 66 in procedure "ws_packet_receiver_" ref 578 578 fixedbin21 based fixed bin(21,0) dcl 1235 in procedure "receive_fg" ref 1248 1248 1267 1267 flags based structure level 2 packed packed unaligned dcl 3-92 foreground 362 based structure level 3 unaligned dcl 68 hbound builtin function dcl 114 ref 642 642 1259 hcs_$reset_ips_mask 000024 constant entry external dcl 76 ref 1418 1585 hcs_$set_ips_mask 000030 constant entry external dcl 78 ref 1363 1513 hcs_$wakeup 000012 constant entry external dcl 71 ref 1280 i 000101 automatic fixed bin(17,0) dcl 60 in procedure "ws_packet_receiver_" set ref 171* 172 172 172* i 000636 automatic fixed bin(21,0) dcl 611 in procedure "modem_reader" set ref 649* 650* i 000100 automatic fixed bin(21,0) dcl 1237 in procedure "receive_fg" set ref 1255* 1256* i 000200 automatic fixed bin(17,0) dcl 476 in procedure "check_crc" set ref 486* 487* ignoring 3223(09) based bit(1) array level 3 packed packed unaligned dcl 68 set ref 217* 897 899* 910* in 432 based fixed bin(21,0) level 3 dcl 68 set ref 583 1256 1259 1259* 1259 1263* input_buffer 000236 automatic char(1) array packed unaligned dcl 610 set ref 642 642 642 642 650* input_pending 2 000742 automatic bit(1) level 2 in structure "read_status_info" dcl 1081 in procedure "prime_tty" set ref 1089 input_pending 001024 automatic bit(1) packed unaligned dcl 1504 in procedure "setup_wakeup" set ref 1589* input_pending 2 000642 automatic bit(1) level 2 in structure "read_status_info" dcl 616 in procedure "modem_reader" set ref 637 input_pending 000776 automatic bit(1) packed unaligned dcl 1341 in procedure "reset_wakeup" set ref 1422* input_ready 000100 automatic bit(1) packed unaligned dcl 59 set ref 153* 154 156* iocb_ptr 6 based pointer level 2 dcl 68 set ref 626* 628* 642* 1087* 1372* 1378* 1392* 1408* 1411* 1519* 1532* 1543* 1551* 1557* 1562* 1571* iox_$control 000050 constant entry external dcl 86 ref 626 628 1087 1378 1392 1408 1519 1532 1551 1571 iox_$get_chars 000046 constant entry external dcl 85 ref 642 iox_$modes 000026 constant entry external dcl 77 ref 1372 1411 1543 1557 1558 1562 1565 ipc_$create_event_channel 000022 constant entry external dcl 75 ref 535 ipc_$delete_ev_chn 000036 constant entry external dcl 81 ref 1399 1539 1574 ipc_$mask_ev_calls 000034 constant entry external dcl 80 ref 1364 1514 ipc_$reset_ev_call_chn 000014 constant entry external dcl 72 ref 164 ipc_$unmask_ev_calls 000032 constant entry external dcl 79 ref 1415 1580 ipc_arg 000212 automatic structure level 1 dcl 523 set ref 535 535 ipc_create_arg_structure based structure level 1 dcl 4-19 ipc_create_arg_structure_v1 000002 constant char(8) initial packed unaligned dcl 4-17 ref 530 l_dat 2434 based structure array level 2 unaligned dcl 68 lasn 3630 based fixed bin(3,0) array level 3 dcl 68 ref 172 length based fixed bin(21,0) level 2 in structure "packet" dcl 856 in procedure "parse_data" set ref 875* 892* 907 912* length based fixed bin(21,0) level 2 in structure "packet" dcl 745 in procedure "parse_break" set ref 757* 780* 790* 810* length based fixed bin(21,0) level 2 in structure "packet" dcl 1011 in procedure "parse_reset" set ref 1028* 1043* length builtin function dcl 113 in procedure "ws_packet_receiver_" ref 1141 1189 1200 1200 length based fixed bin(21,0) level 2 in structure "packet" dcl 947 in procedure "parse_nak" set ref 957 969* 976* length based fixed bin(21,0) level 2 in structure "packet" dcl 376 in procedure "approve_packet" set ref 387 387 388* 397 398 401* 414* 438* length based fixed bin(21,0) level 2 in structure "packet" dcl 684 in procedure "parse_ack" set ref 706* 714* lenidx 000170 automatic fixed bin(17,0) dcl 373 set ref 397* 398 410 line_status_info 000234 automatic bit(72) dcl 609 set ref 628 628 mask 001002 automatic bit(36) dcl 1343 in procedure "reset_wakeup" set ref 1363* 1418* 1418* mask 001030 automatic bit(36) dcl 1506 in procedure "setup_wakeup" set ref 1513* 1585* 1585* mbz 4(20) 001031 automatic bit(16) level 3 packed packed unaligned dcl 1509 set ref 1550* mc_ptr 000102 automatic pointer level 2 dcl 67 set ref 257* message 000106 automatic char(5) packed unaligned dcl 561 set ref 567* 578 578 message_len 000136 automatic fixed bin(17,0) initial dcl 2-33 set ref 2-33* mio_data based structure level 1 unaligned dcl 68 mio_data_ptr 000010 internal static pointer initial dcl 63 set ref 140 141 141 141 141 150 151 159 164 172 172 172* 200* 203 206 209 210 211 212 213 214 215 216 217 218 219 220 221 248 250 253 319 319 319 319 323 323 333 338* 338 338 388 388 398 401 401 414 414 424 424 438 566 573 578* 583 583 626 628 642 706 706 714 714 757 757 765* 770 771 779 780 780 790 790 797 801 810 810 817 819* 875 875 885 885 891 892 892 897 898* 899 908 910 911 912 912 969 969 976 976 982* 1021 1021 1028 1028 1032 1033* 1034 1035* 1043 1043 1049 1049* 1052 1087 1130 1130 1134 1135 1148 1151 1151 1156 1157 1158 1170 1171 1173 1175 1176 1176 1177 1179 1180 1180 1181 1183 1184 1184 1185 1188 1198 1198 1199 1200 1200 1200 1200 1200 1200 1200 1200 1202 1203 1203 1203 1205 1248* 1256 1256 1259 1259 1259 1259 1263 1267* 1274* 1274 1274 1280 1280 1315 1353 1358 1372 1377 1378 1392 1399 1401 1407 1408 1411 1456 1457 1458 1460 1466 1467 1467 1467 1467* 1467 1476 1476 1518 1519 1527 1532 1532 1532 1543 1549 1551 1553 1557 1558 1562 1565 1571 1574 1578 mod builtin function dcl 117 ref 172 700 868 869 911 963 mowse_io_data based structure level 1 unaligned dcl 8-18 mowse_io_error 000000 stack reference condition dcl 126 ref 632 644 n_chars_read 000637 automatic fixed bin(21,0) dcl 612 set ref 642* 649 nasn 3632 based fixed bin(3,0) array level 3 dcl 68 ref 1467 network_sw based bit(1) level 3 packed packed unaligned dcl 3-92 ref 203 new_table 1 001031 automatic structure level 2 in structure "wake_info" dcl 1509 in procedure "setup_wakeup" new_table 1 001003 automatic structure level 2 in structure "wake_info" dcl 1346 in procedure "reset_wakeup" set ref 1377* nextin 000754 automatic fixed bin(17,0) dcl 1117 set ref 1151* 1153* 1156 1157 1158 null builtin function dcl 120 ref 140 203 256 256 257 257 257 257 388 401 414 533 584 584 584 584 584 584 706 714 757 780 790 810 875 892 912 969 976 1028 1043 1467 null_entry_ 000020 constant entry external dcl 74 ref 1386 1386 1388 1388 1567 1567 old_table 5 001031 automatic structure level 2 dcl 1509 set ref 1553 open_struc based structure level 1 packed packed unaligned dcl 3-92 open_struc_ptr 000140 automatic pointer dcl 3-91 set ref 201* 203 203 out 433 based fixed bin(21,0) level 3 dcl 68 set ref 583* out_ptr 2436 based pointer array level 3 dcl 68 ref 1467 p_asn parameter fixed bin(17,0) dcl 304 ref 290 319 319 323 323 333 p_channel parameter fixed bin(17,0) dcl 303 ref 290 319 319 319 319 323 323 333 p_channel_id parameter fixed bin(71,0) dcl 517 set ref 500 535* p_chr parameter char(1) packed unaligned dcl 1112 set ref 1097 1134 1136 1148 1149 1171* 1171 1175 1179 1183 1189 p_code parameter fixed bin(35,0) dcl 518 in procedure "get_channel" set ref 500 526* 535* p_code parameter fixed bin(35,0) dcl 1338 in procedure "reset_wakeup" set ref 1323 1349* 1364* 1365 1372* 1373 1378* 1380 1386* 1388 1388* 1392* 1394 1411* p_code parameter fixed bin(35,0) dcl 1501 in procedure "setup_wakeup" set ref 1486 1512* 1514* 1515 1527* 1529 1532* 1534 1543* 1544 1551* 1554 1557* 1559 p_code parameter fixed bin(35,0) dcl 56 in procedure "ws_packet_receiver_" set ref 189 223* 266 278* p_fast parameter bit(1) packed unaligned dcl 1303 ref 1289 p_handler parameter entry variable dcl 513 ref 500 p_mio_data_ptr parameter pointer dcl 53 ref 189 200 p_open_struc_ptr parameter pointer dcl 52 ref 189 201 p_packet_len parameter fixed bin(21,0) dcl 738 in procedure "parse_break" ref 724 755 757 757 777 780 780 788 790 790 807 810 810 p_packet_len parameter fixed bin(21,0) dcl 1004 in procedure "parse_reset" ref 990 1026 1028 1028 1041 1043 1043 p_packet_len parameter fixed bin(21,0) dcl 844 in procedure "parse_data" ref 829 867 875 875 892 892 908 912 912 p_packet_len parameter fixed bin(21,0) dcl 937 in procedure "parse_nak" ref 922 962 969 969 976 976 p_packet_len parameter fixed bin(21,0) dcl 472 in procedure "check_crc" ref 452 486 p_packet_len parameter fixed bin(21,0) dcl 674 in procedure "parse_ack" ref 659 694 699 706 706 714 714 p_packet_len parameter fixed bin(21,0) dcl 365 in procedure "approve_packet" set ref 351 388 388 398 401 401 411 411 411 414 414 423 425* 427* 429* 431* 433* 438 438 443* p_packet_ptr parameter pointer dcl 366 in procedure "approve_packet" set ref 351 387 387 388 388 388 397 398 398 401 401 401 411 411 411 414 414 414 423 425* 427* 429* 431* 433* 438 438 438 443* p_packet_ptr parameter pointer dcl 737 in procedure "parse_break" ref 724 755 757 757 757 777 780 780 780 788 790 790 790 807 810 810 810 p_packet_ptr parameter pointer dcl 1003 in procedure "parse_reset" ref 990 1026 1028 1028 1028 1041 1043 1043 1043 p_packet_ptr parameter pointer dcl 843 in procedure "parse_data" ref 829 867 875 875 875 892 892 892 907 908 912 912 912 p_packet_ptr parameter pointer dcl 471 in procedure "check_crc" ref 452 487 p_packet_ptr parameter pointer dcl 673 in procedure "parse_ack" ref 659 699 706 706 706 714 714 714 p_packet_ptr parameter pointer dcl 936 in procedure "parse_nak" ref 922 957 962 969 969 969 976 976 976 p_type parameter fixed bin(17,0) dcl 514 ref 500 531 packet based structure level 1 unaligned dcl 684 in procedure "parse_ack" packet based varying char dcl 1119 in procedure "receive_char" set ref 1136* 1141 1149* 1149 1160* 1189 1189* 1189 1191* packet based structure level 1 unaligned dcl 745 in procedure "parse_break" packet based structure level 1 unaligned dcl 856 in procedure "parse_data" packet based structure level 1 unaligned dcl 1011 in procedure "parse_reset" packet based structure level 1 unaligned dcl 947 in procedure "parse_nak" packet based structure level 1 unaligned dcl 376 in procedure "approve_packet" packet_dispatcher 356 based structure level 3 unaligned dcl 68 packet_ptr 000756 automatic pointer dcl 1120 set ref 1130* 1136 1141 1149 1149 1160 1189 1189 1189 1191 packet_receiver 354 based structure level 3 unaligned dcl 68 packet_transmitter 350 based structure level 3 unaligned dcl 68 set ref 338 338 pkt 3051 based varying char(129) array level 3 dcl 68 set ref 218* 1130 1158* 1200 1200 1200 1200 pktin 3217 based fixed bin(17,0) level 3 dcl 68 set ref 219* 1034* 1130 1151 1151 1157* 1198 pktout 3220 based fixed bin(17,0) level 3 dcl 68 set ref 220* 1156 1198 1200 1200 1200 1200 1203 1203* 1203 1205* process_id 336 based bit(36) level 3 dcl 68 set ref 1280* psn 3221 based fixed bin(17,0) array level 3 in structure "mio_data" dcl 68 in procedure "ws_packet_receiver_" set ref 172 221* 891 911* 1467 psn 3626 based fixed bin(3,0) array level 3 in structure "mio_data" dcl 68 in procedure "ws_packet_receiver_" ref 319 319 323 psn 000705 automatic fixed bin(17,0) dcl 850 in procedure "parse_data" set ref 869* 891 908 911 queue 434 based char(1) array level 3 packed packed unaligned dcl 68 set ref 1256* 1259 quit_enable 430 based bit(1) level 3 packed packed unaligned dcl 68 ref 573 r 2444 based structure level 2 unaligned dcl 68 rank builtin function dcl 119 ref 423 699 755 777 788 807 867 962 1026 1041 1407 1549 read_status_info 000742 automatic structure level 1 dcl 1081 in procedure "prime_tty" set ref 1087 1087 read_status_info 000642 automatic structure level 1 dcl 616 in procedure "modem_reader" set ref 626 626 rs_pending 430(03) based bit(1) array level 3 packed packed unaligned dcl 68 set ref 424 424 1032* 1049 1052* s 3224 based structure level 2 unaligned dcl 68 sct_manager_$call_handler 000040 constant entry external dcl 82 ref 257 sct_manager_$set 000044 constant entry external dcl 84 ref 253 signal_ 000016 constant entry external dcl 73 ref 584 sop 2444(09) based char(1) level 3 packed packed unaligned dcl 68 set ref 209* 1134 string based char(1) array packed unaligned dcl 475 set ref 487* substr builtin function dcl 118 ref 398 411 423 699 755 777 788 807 867 908 962 1026 1041 sus_data 332 based structure level 2 unaligned dcl 68 sus_entry 332 based pointer level 3 dcl 68 set ref 253* susp_sct_index 000000 constant fixed bin(17,0) initial dcl 6-27 set ref 253* switches 430 based structure level 2 packed packed unaligned dcl 68 swt_info based structure level 1 dcl 5-9 swt_info_version_1 constant fixed bin(17,0) initial dcl 5-7 ref 1376 1547 task 431 based structure level 2 packed packed unaligned dcl 68 temp_seg_name 000134 automatic char(6) initial packed unaligned dcl 1-22 set ref 1-22* test_ds 000755 automatic bit(1) array packed unaligned dcl 1118 set ref 1199* 1207 tty_channel 001026 automatic fixed bin(71,0) dcl 1505 in procedure "setup_wakeup" set ref 1519 1519 1539* 1567* 1571 1571 tty_channel 001000 automatic fixed bin(71,0) dcl 1342 in procedure "reset_wakeup" set ref 1386* 1388* 1392 1392 tty_read_status_info based structure level 1 dcl 10-17 type 000166 automatic fixed bin(8,0) dcl 371 set ref 423* 425 425 427 427 429 429 431 431 433 433 435 443 443 unspec builtin function dcl 112 set ref 1171* 1171 user_input 344 based structure level 3 in structure "mio_data" unaligned dcl 68 in procedure "ws_packet_receiver_" set ref 1274 1274 user_input 432 based structure level 2 in structure "mio_data" unaligned dcl 68 in procedure "ws_packet_receiver_" version 2 000102 automatic fixed bin(17,0) level 2 in structure "cond_info" dcl 67 in procedure "ws_packet_receiver_" set ref 255* version 001031 automatic fixed bin(17,0) level 2 in structure "wake_info" dcl 1509 in procedure "setup_wakeup" set ref 1547* version 001003 automatic fixed bin(17,0) level 2 in structure "wake_info" dcl 1346 in procedure "reset_wakeup" set ref 1376* version 000212 automatic char(8) level 2 in structure "ipc_arg" packed packed unaligned dcl 523 in procedure "get_channel" set ref 530* wait_info based structure level 1 unaligned dcl 8-126 wake_info 001003 automatic structure level 1 dcl 1346 in procedure "reset_wakeup" set ref 1378 1378 1408 1408 wake_info 001031 automatic structure level 1 dcl 1509 in procedure "setup_wakeup" set ref 1551 1551 wake_info 337 based structure level 3 in structure "mio_data" packed packed unaligned dcl 68 in procedure "ws_packet_receiver_" set ref 1377 1553* wake_map 1 001003 automatic bit(1) array level 3 in structure "wake_info" packed packed unaligned dcl 1346 in procedure "reset_wakeup" set ref 1404* 1407* wake_map 1 001031 automatic bit(1) array level 3 in structure "wake_info" packed packed unaligned dcl 1509 in procedure "setup_wakeup" set ref 1548* 1549* wakeup_table based structure level 1 dcl 5-16 ws_channel_$call_wakeup 000056 constant entry external dcl 93 ref 1467 ws_channel_$wait_wakeup 000112 constant entry external dcl 107 ref 338 1274 ws_debug_$line 000054 constant entry external dcl 92 ref 141 250 ws_debug_$packet 000110 constant entry external dcl 106 ref 388 401 414 438 706 714 757 780 790 810 875 892 912 969 976 1028 1043 ws_packet_transmitter_$ack 000070 constant entry external dcl 98 ref 172 ws_packet_transmitter_$data 000062 constant entry external dcl 95 ref 578 ws_packet_transmitter_$nak 000100 constant entry external dcl 102 ref 898 ws_packet_transmitter_$resend 000072 constant entry external dcl 99 ref 982 ws_packet_transmitter_$supervisory 000074 constant entry external dcl 100 ref 765 819 1035 1049 ws_timer_$reset_break 000066 constant entry external dcl 97 ref 764 ws_timer_$reset_disconnect 000064 constant entry external dcl 96 ref 818 ws_tools_$ars 000102 constant entry external dcl 103 ref 701 869 870 964 ws_tools_$check_length 000104 constant entry external dcl 104 ref 398 ws_tools_$crc_char 000106 constant entry external dcl 105 ref 487 ws_tools_$getdat 000060 constant entry external dcl 94 ref 1248 1267 ws_tools_$reset_data 000076 constant entry external dcl 101 ref 1033 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT internal static fixed bin(17,0) initial dcl 1-54 ADD_TO_REMOTE_CAT internal static fixed bin(17,0) initial dcl 1-78 ANY_CALL_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 4-33 And internal static bit(4) initial packed unaligned dcl 9-19 CALL_EVENT_CHANNEL_TYPE internal static fixed bin(17,0) initial dcl 4-30 CAPABILITY_NAME_LENGTH internal static fixed bin(17,0) initial dcl 3-27 CONTINUE internal static fixed bin(17,0) initial dcl 1-94 CONVERT_CRC internal static fixed bin(17,0) initial dcl 9-15 DBGPKTS internal static bit(1) initial packed unaligned dcl 9-22 DBGREJS internal static bit(1) initial packed unaligned dcl 9-24 DBGXCHRS internal static bit(1) initial packed unaligned dcl 9-26 DELETE_FROM_REMOTE_CAT internal static fixed bin(17,0) initial dcl 1-79 EXECUTE_CAPABILITY_REPLY internal static fixed bin(17,0) initial dcl 1-73 EXECUTE_COMMAND internal static fixed bin(17,0) initial dcl 1-77 EXECUTE_COMMAND_REPLY internal static fixed bin(17,0) initial dcl 1-72 FAIL_CAPABILITY internal static fixed bin(17,0) initial dcl 1-75 FG_CONTROL_MESSAGE internal static fixed bin(17,0) initial dcl 1-104 FG_MORE_DATA internal static fixed bin(17,0) initial dcl 1-107 FG_TERMINAL_DATA internal static fixed bin(17,0) initial dcl 1-106 INTERNAL internal static fixed bin(17,0) initial dcl 1-76 LAST internal static fixed bin(17,0) initial dcl 1-71 LOCAL_SYSTEM internal static fixed bin(17,0) initial dcl 1-30 Lim_p_timer internal static fixed bin(17,0) initial dcl 9-116 Lim_r_timer internal static fixed bin(17,0) initial dcl 9-112 Lim_s_timer internal static fixed bin(17,0) initial dcl 9-114 MAXIMUM_BG_SIZE internal static fixed bin(17,0) initial dcl 1-44 MAXIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 1-43 MAXIMUM_PACKET_SIZE internal static fixed bin(17,0) initial dcl 1-49 MAXIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 1-65 MAXIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 1-67 MINIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 1-42 MINIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 1-64 MINIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 1-66 MORE internal static fixed bin(17,0) initial dcl 1-95 MOWSE_VERSION_ internal static char(8) initial packed unaligned dcl 1-26 NO_MINOR internal static fixed bin(17,0) initial dcl 9-132 OR internal static bit(4) initial packed unaligned dcl 9-17 OVERFLOWED_BUFFER internal static fixed bin(17,0) initial dcl 1-87 PUT_TO_BACKGROUND_BUFFER internal static fixed bin(17,0) initial dcl 1-108 PUT_TO_QUERY_MESSAGE_BUFFER internal static fixed bin(17,0) initial dcl 1-110 QUERY_REPLY internal static fixed bin(17,0) initial dcl 1-89 RECEIVE internal static fixed bin(17,0) initial dcl 1-59 REJECT internal static fixed bin(17,0) initial dcl 1-55 REMOTE_SYSTEM internal static fixed bin(17,0) initial dcl 1-31 REQUEST_CONNECT internal static fixed bin(17,0) initial dcl 1-92 REQUEST_DISCONNECT internal static fixed bin(17,0) initial dcl 1-93 RESET_APPLICATION internal static fixed bin(17,0) initial dcl 1-83 RESET_REPLY internal static fixed bin(17,0) initial dcl 1-84 RESET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 1-97 RESET_SUSPEND internal static fixed bin(17,0) initial dcl 1-99 RESPONSE_CONNECT internal static fixed bin(17,0) initial dcl 1-90 RESPONSE_DISCONNECT internal static fixed bin(17,0) initial dcl 1-91 RESUME_APPLICATION internal static fixed bin(17,0) initial dcl 1-81 REVPOLY internal static fixed bin(17,0) initial dcl 9-16 SEND internal static fixed bin(17,0) initial dcl 1-60 SEND_QUERY internal static fixed bin(17,0) initial dcl 1-53 SET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 1-96 SET_SUSPEND internal static fixed bin(17,0) initial dcl 1-98 STATUS internal static fixed bin(17,0) initial dcl 1-86 STATUS_FAILED internal static fixed bin(8,0) initial dcl 1-37 STATUS_REPLY internal static fixed bin(17,0) initial dcl 1-100 STATUS_SUCCESS internal static fixed bin(8,0) initial dcl 1-35 SUSPEND_APPLICATION internal static fixed bin(17,0) initial dcl 1-80 SWS internal static fixed bin(17,0) initial dcl 9-110 SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 1-88 SeqMsk internal static fixed bin(17,0) initial dcl 9-52 TERMINATE_APPLICATION internal static fixed bin(17,0) initial dcl 1-82 Timer_Interval internal static fixed bin(71,0) initial dcl 9-118 WAKE_UP internal static fixed bin(17,0) initial dcl 1-85 WST_ERASE internal static fixed bin(17,0) initial dcl 9-146 WST_ESCAPE internal static fixed bin(17,0) initial dcl 9-147 WST_HEADER_1 internal static fixed bin(17,0) initial dcl 9-139 WST_HEADER_2 internal static fixed bin(17,0) initial dcl 9-140 WST_HEADER_3 internal static fixed bin(17,0) initial dcl 9-141 WST_INIT_LL internal static fixed bin(17,0) initial dcl 9-137 WST_INIT_PL internal static fixed bin(17,0) initial dcl 9-136 WST_KILL internal static fixed bin(17,0) initial dcl 9-145 WST_LENGTH_HIGH internal static fixed bin(17,0) initial dcl 9-142 WST_LENGTH_LOW internal static fixed bin(17,0) initial dcl 9-143 WST_LINE_LENGTH internal static fixed bin(17,0) initial dcl 9-148 WST_MODES internal static fixed bin(17,0) initial dcl 9-144 WST_PAGE_LENGTH internal static fixed bin(17,0) initial dcl 9-149 accessviolation_sct_index internal static fixed bin(17,0) initial dcl 6-27 alrm_sct_index internal static fixed bin(17,0) initial dcl 6-27 alter_cat_message based structure level 1 packed packed unaligned dcl 2-63 am_fault_sct_index internal static fixed bin(17,0) initial dcl 6-27 bad_outward_call_sct_index internal static fixed bin(17,0) initial dcl 6-27 command_sct_index internal static fixed bin(17,0) initial dcl 6-27 condition_info_ptr automatic pointer dcl 7-10 connect_sct_index internal static fixed bin(17,0) initial dcl 6-27 cput_sct_index internal static fixed bin(17,0) initial dcl 6-27 cross_ring_transfer_sct_index internal static fixed bin(17,0) initial dcl 6-27 derail_sct_index internal static fixed bin(17,0) initial dcl 6-27 directed_fault_2_sct_index internal static fixed bin(17,0) initial dcl 6-27 directed_fault_3_sct_index internal static fixed bin(17,0) initial dcl 6-27 dm_shutdown_scheduled_sct_index internal static fixed bin(17,0) initial dcl 6-27 event_message based structure level 1 packed packed unaligned dcl 2-76 execom_message based structure level 1 packed packed unaligned dcl 2-49 execom_reply_msg based structure level 1 packed packed unaligned dcl 2-122 execute_sct_index internal static fixed bin(17,0) initial dcl 6-27 fault_tag_1_sct_index internal static fixed bin(17,0) initial dcl 6-27 fault_tag_3_sct_index internal static fixed bin(17,0) initial dcl 6-27 fixedoverflow_sct_index internal static fixed bin(17,0) initial dcl 6-27 illegal_modifier_sct_index internal static fixed bin(17,0) initial dcl 6-27 illegal_opcode_sct_index internal static fixed bin(17,0) initial dcl 6-27 illegal_procedure_sct_index internal static fixed bin(17,0) initial dcl 6-27 illegal_ring_order_sct_index internal static fixed bin(17,0) initial dcl 6-27 init_mowse_info based structure level 1 unaligned dcl 3-68 init_mowse_info_ptr automatic pointer dcl 3-67 input_message based structure level 1 packed packed unaligned dcl 2-38 inward_return_sct_index internal static fixed bin(17,0) initial dcl 6-27 ipc_create_arg_structure_ptr automatic pointer dcl 4-16 isot_fault_sct_index internal static fixed bin(17,0) initial dcl 6-27 last_message based structure level 1 packed packed unaligned dcl 2-110 linkage_error_sct_index internal static fixed bin(17,0) initial dcl 6-27 lockup_sct_index internal static fixed bin(17,0) initial dcl 6-27 lot_fault_sct_index internal static fixed bin(17,0) initial dcl 6-27 message_node based structure level 1 unaligned dcl 2-136 message_ptr automatic pointer dcl 2-34 mme1_sct_index internal static fixed bin(17,0) initial dcl 6-27 mme2_sct_index internal static fixed bin(17,0) initial dcl 6-27 mme3_sct_index internal static fixed bin(17,0) initial dcl 6-27 mme4_sct_index internal static fixed bin(17,0) initial dcl 6-27 more_remaining_message based structure level 1 packed packed unaligned dcl 2-96 mowse_info based structure level 1 dcl 3-31 mowse_io_data_ptr automatic pointer dcl 8-17 msg_node_ptr automatic pointer dcl 2-135 neti_sct_index internal static fixed bin(17,0) initial dcl 6-27 no_execute_permission_sct_index internal static fixed bin(17,0) initial dcl 6-27 no_read_permission_sct_index internal static fixed bin(17,0) initial dcl 6-27 no_write_permission_sct_index internal static fixed bin(17,0) initial dcl 6-27 not_a_gate_sct_index internal static fixed bin(17,0) initial dcl 6-27 not_in_call_bracket_sct_index internal static fixed bin(17,0) initial dcl 6-27 not_in_execute_bracket_sct_index internal static fixed bin(17,0) initial dcl 6-27 not_in_read_bracket_sct_index internal static fixed bin(17,0) initial dcl 6-27 not_in_write_bracket_sct_index internal static fixed bin(17,0) initial dcl 6-27 op_not_complete_sct_index internal static fixed bin(17,0) initial dcl 6-27 other_command_sct_index internal static fixed bin(17,0) initial dcl 6-27 other_illegal_proc_sct_index internal static fixed bin(17,0) initial dcl 6-27 out_of_bounds_sct_index internal static fixed bin(17,0) initial dcl 6-27 outward_call_sct_index internal static fixed bin(17,0) initial dcl 6-27 overflow_sct_index internal static fixed bin(17,0) initial dcl 6-27 ovrflo_sct_index internal static fixed bin(17,0) initial dcl 6-27 packed_pointer_fault_sct_index internal static fixed bin(17,0) initial dcl 6-27 page_fault_error_sct_index internal static fixed bin(17,0) initial dcl 6-27 parity_sct_index internal static fixed bin(17,0) initial dcl 6-27 part_msg based char packed unaligned dcl 2-152 part_msg_length automatic fixed bin(17,0) dcl 2-151 part_msg_ptr automatic pointer dcl 2-144 partial_message based structure level 1 unaligned dcl 2-145 pgt_sct_index internal static fixed bin(17,0) initial dcl 6-27 quit_sct_index internal static fixed bin(17,0) initial dcl 6-27 record_quota_overflow_sct_index internal static fixed bin(17,0) initial dcl 6-27 request_more_message based structure level 1 packed packed unaligned dcl 2-84 ring_alarm_fault_sct_index internal static fixed bin(17,0) initial dcl 6-27 seg_fault_error_sct_index internal static fixed bin(17,0) initial dcl 6-27 shutdown_sct_index internal static fixed bin(17,0) initial dcl 6-27 simfault_000000_sct_index internal static fixed bin(17,0) initial dcl 6-27 size_sct_index internal static fixed bin(17,0) initial dcl 6-27 startup_sct_index internal static fixed bin(17,0) initial dcl 6-27 storage_sct_index internal static fixed bin(17,0) initial dcl 6-27 store_sct_index internal static fixed bin(17,0) initial dcl 6-27 stringsize_sct_index internal static fixed bin(17,0) initial dcl 6-27 swt_infop automatic pointer dcl 5-6 system_message_sct_index internal static fixed bin(17,0) initial dcl 6-27 system_packed_pointer_sct_index internal static fixed bin(17,0) initial dcl 6-27 system_shutdown_scheduled_sct_index internal static fixed bin(17,0) initial dcl 6-27 term_sct_index internal static fixed bin(17,0) initial dcl 6-27 timer_runout_sct_index internal static fixed bin(17,0) initial dcl 6-27 trace_message_info automatic structure level 1 unaligned dcl 2-155 trouble_sct_index internal static fixed bin(17,0) initial dcl 6-27 tty_read_status_info_ptr automatic pointer dcl 10-21 tty_write_status_info based structure level 1 dcl 10-23 tty_write_status_info_ptr automatic pointer dcl 10-27 undefined_fault_sct_index internal static fixed bin(17,0) initial dcl 6-27 undefined_pointer_sct_index internal static fixed bin(17,0) initial dcl 6-27 underflow_sct_index internal static fixed bin(17,0) initial dcl 6-27 wakeup_tablep automatic pointer dcl 5-14 wkp_sct_index internal static fixed bin(17,0) initial dcl 6-27 zerodivide_sct_index internal static fixed bin(17,0) initial dcl 6-27 NAMES DECLARED BY EXPLICIT CONTEXT. EXIT_RESET_WAKEUP 004552 constant label dcl 1415 ref 1365 1373 1402 EXIT_RESET_WAKEUP_MODES 004521 constant label dcl 1411 ref 1380 EXIT_RESET_WAKEUP_RESTORE 004446 constant label dcl 1404 ref 1394 EXIT_SETUP_WAKEUP 005505 constant label dcl 1580 set ref 1515 1529 1559 EXIT_SETUP_WAKEUP_DELETE 005466 constant label dcl 1574 ref 1534 EXIT_SETUP_WAKEUP_MODES 005335 constant label dcl 1562 EXIT_SETUP_WAKEUP_RESTORE 005423 constant label dcl 1567 ref 1544 1554 accept_ack 000764 constant entry internal dcl 290 ref 705 874 968 approve_packet 001045 constant entry internal dcl 351 ref 1200 check_crc 001472 constant entry internal dcl 452 ref 411 get_channel 001536 constant entry internal dcl 500 ref 1386 1388 1527 1567 handle_fg_break 001573 constant entry internal dcl 544 ref 1477 initialize 000417 constant entry external dcl 189 modem_reader 001665 constant entry internal dcl 592 ref 155 parse_ack 002054 constant entry internal dcl 659 ref 427 parse_break 002224 constant entry internal dcl 724 ref 431 parse_data 002542 constant entry internal dcl 829 ref 425 parse_nak 003065 constant entry internal dcl 922 ref 429 parse_reset 003247 constant entry internal dcl 990 ref 433 443 prime_tty 003461 constant entry internal dcl 1061 ref 156 1422 1589 receive_char 003525 constant entry internal dcl 1097 ref 650 receive_fg 003754 constant entry internal dcl 1217 ref 1459 remote_disconnect 004124 constant entry internal dcl 1289 ref 435 801 1207 reset_wakeup 004145 constant entry internal dcl 1323 ref 278 scheduler 004576 constant entry internal dcl 1430 ref 166 setup_wakeup 004723 constant entry internal dcl 1486 ref 223 sus_handler 000612 constant entry external dcl 230 terminate 000744 constant entry external dcl 266 ws_packet_receiver_ 000233 constant entry external dcl 12 ref 532 1527 1527 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6310 6424 5646 6320 Length 7200 5646 114 537 442 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ws_packet_receiver_ 910 external procedure is an external procedure. accept_ack internal procedure shares stack frame of external procedure ws_packet_receiver_. approve_packet internal procedure shares stack frame of external procedure ws_packet_receiver_. check_crc internal procedure shares stack frame of external procedure ws_packet_receiver_. get_channel internal procedure shares stack frame of external procedure ws_packet_receiver_. handle_fg_break internal procedure shares stack frame of internal procedure scheduler. modem_reader internal procedure shares stack frame of external procedure ws_packet_receiver_. parse_ack internal procedure shares stack frame of external procedure ws_packet_receiver_. parse_break internal procedure shares stack frame of external procedure ws_packet_receiver_. parse_data internal procedure shares stack frame of external procedure ws_packet_receiver_. parse_nak internal procedure shares stack frame of external procedure ws_packet_receiver_. parse_reset internal procedure shares stack frame of external procedure ws_packet_receiver_. prime_tty internal procedure shares stack frame of external procedure ws_packet_receiver_. receive_char internal procedure shares stack frame of external procedure ws_packet_receiver_. receive_fg 86 internal procedure uses auto adjustable storage. remote_disconnect internal procedure shares stack frame of external procedure ws_packet_receiver_. reset_wakeup internal procedure shares stack frame of external procedure ws_packet_receiver_. scheduler 124 internal procedure enables or reverts conditions. on unit on line 1457 64 on unit setup_wakeup internal procedure shares stack frame of external procedure ws_packet_receiver_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 mio_data_ptr ws_packet_receiver_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME receive_fg 000100 data receive_fg 000100 i receive_fg 000101 data_len receive_fg scheduler 000106 message handle_fg_break ws_packet_receiver_ 000100 input_ready ws_packet_receiver_ 000101 i ws_packet_receiver_ 000102 cond_info ws_packet_receiver_ 000134 temp_seg_name ws_packet_receiver_ 000136 message_len ws_packet_receiver_ 000140 open_struc_ptr ws_packet_receiver_ 000156 asn_valid accept_ack 000166 type approve_packet 000167 chkidx approve_packet 000170 lenidx approve_packet 000200 i check_crc 000201 crc check_crc 000212 ipc_arg get_channel 000234 line_status_info modem_reader 000236 input_buffer modem_reader 000636 i modem_reader 000637 n_chars_read modem_reader 000640 code modem_reader 000642 read_status_info modem_reader 000664 channel parse_ack 000665 asn parse_ack 000666 fields parse_ack 000704 data_len parse_data 000705 psn parse_data 000706 asn parse_data 000707 channel parse_data 000710 fields parse_data 000720 channel parse_nak 000721 asn parse_nak 000722 fields parse_nak 000742 read_status_info prime_tty 000754 nextin receive_char 000755 test_ds receive_char 000756 packet_ptr receive_char 000776 input_pending reset_wakeup 001000 tty_channel reset_wakeup 001002 mask reset_wakeup 001003 wake_info reset_wakeup 001024 input_pending setup_wakeup 001026 tty_channel setup_wakeup 001030 mask setup_wakeup 001031 wake_info setup_wakeup THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_le_a r_ge_a call_ext_out_desc call_ext_out call_int_this call_int_other return_mac alloc_auto_adj mdfx1 signal_op enable_op ext_entry int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. find_condition_info_ hcs_$reset_ips_mask hcs_$set_ips_mask hcs_$wakeup iox_$control iox_$get_chars iox_$modes ipc_$create_event_channel ipc_$delete_ev_chn ipc_$mask_ev_calls ipc_$reset_ev_call_chn ipc_$unmask_ev_calls null_entry_ sct_manager_$call_handler sct_manager_$set signal_ ws_channel_$call_wakeup ws_channel_$wait_wakeup ws_debug_$line ws_debug_$packet ws_packet_transmitter_$ack ws_packet_transmitter_$data ws_packet_transmitter_$nak ws_packet_transmitter_$resend ws_packet_transmitter_$supervisory ws_timer_$reset_break ws_timer_$reset_disconnect ws_tools_$ars ws_tools_$check_length ws_tools_$crc_char ws_tools_$getdat ws_tools_$reset_data THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$line_status_pending LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 22 000224 2 33 000226 12 000232 140 000241 141 000247 150 000304 151 000313 153 000321 154 000323 155 000327 156 000330 157 000332 159 000333 164 000341 166 000352 171 000356 172 000365 176 000410 178 000412 189 000413 200 000430 201 000435 203 000440 206 000453 209 000455 210 000457 211 000461 212 000463 213 000465 214 000466 215 000500 216 000527 217 000531 218 000550 219 000566 220 000567 221 000570 223 000602 224 000610 230 000611 248 000620 250 000624 253 000643 255 000660 256 000662 257 000702 260 000740 266 000741 278 000755 279 000763 290 000764 319 000766 323 001005 328 001015 333 001023 338 001025 343 001037 351 001045 387 001047 388 001055 392 001115 397 001116 398 001120 401 001145 405 001204 410 001205 411 001210 414 001226 418 001265 423 001266 424 001274 425 001301 427 001317 429 001336 431 001355 433 001374 435 001413 438 001421 442 001453 443 001454 446 001471 452 001472 485 001474 486 001476 487 001505 488 001522 492 001524 500 001536 526 001540 530 001541 531 001543 532 001545 533 001551 534 001553 535 001554 538 001572 544 001573 566 001574 567 001600 573 001602 578 001606 583 001630 584 001634 586 001664 592 001665 624 001666 625 001671 626 001676 628 001730 631 001770 632 001771 637 001776 642 002001 644 002025 649 002032 650 002041 651 002051 653 002053 659 002054 694 002056 699 002062 700 002073 701 002076 705 002111 706 002116 711 002160 714 002161 718 002223 724 002224 755 002226 757 002241 764 002301 765 002306 770 002322 771 002326 772 002330 777 002331 779 002334 780 002340 784 002375 788 002376 790 002401 797 002441 801 002445 803 002452 807 002453 810 002456 817 002515 818 002521 819 002525 823 002541 829 002542 867 002544 868 002555 869 002560 870 002577 874 002614 875 002621 880 002663 885 002664 891 002672 892 002676 897 002736 898 002745 899 002755 902 002763 907 002764 908 002771 910 003015 911 003021 912 003026 916 003064 922 003065 957 003067 962 003074 963 003104 964 003107 968 003122 969 003127 973 003171 976 003172 982 003235 984 003246 990 003247 1021 003251 1026 003257 1028 003272 1032 003327 1033 003333 1034 003341 1035 003345 1037 003360 1041 003361 1043 003364 1049 003422 1052 003442 1055 003460 1061 003461 1087 003463 1089 003517 1097 003525 1130 003527 1134 003535 1135 003546 1136 003550 1137 003560 1141 003561 1148 003564 1149 003570 1151 003577 1153 003605 1156 003606 1157 003611 1158 003612 1159 003614 1160 003615 1162 003616 1170 003617 1171 003623 1173 003637 1174 003641 1175 003642 1176 003647 1177 003650 1178 003652 1179 003653 1180 003657 1181 003660 1182 003662 1183 003663 1184 003667 1185 003670 1188 003672 1189 003675 1191 003710 1198 003711 1199 003717 1200 003723 1202 003733 1203 003736 1205 003743 1207 003744 1209 003751 1211 003752 1217 003753 1236 003761 1248 003770 1254 004012 1255 004014 1256 004023 1259 004032 1263 004037 1265 004040 1267 004042 1270 004065 1274 004066 1280 004102 1283 004123 1289 004124 1315 004126 1317 004144 1323 004145 1349 004147 1353 004150 1358 004156 1363 004161 1364 004173 1365 004203 1372 004206 1373 004240 1376 004243 1377 004245 1378 004266 1380 004320 1386 004323 1388 004344 1392 004370 1394 004423 1399 004426 1401 004441 1402 004445 1404 004446 1407 004460 1408 004467 1411 004521 1415 004552 1418 004562 1422 004572 1424 004574 1430 004575 1456 004603 1457 004611 1458 004633 1459 004644 1460 004651 1461 004657 1466 004660 1467 004665 1476 004707 1477 004721 1480 004722 1486 004723 1512 004725 1513 004726 1514 004741 1515 004751 1518 004754 1519 004760 1527 005014 1529 005037 1532 005042 1534 005075 1539 005100 1543 005112 1544 005145 1547 005150 1548 005152 1549 005164 1550 005173 1551 005175 1553 005227 1554 005250 1557 005253 1558 005301 1559 005332 1562 005335 1565 005370 1567 005423 1571 005433 1574 005466 1578 005501 1580 005505 1585 005515 1589 005525 1591 005527 ----------------------------------------------------------- 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