COMPILATION LISTING OF SEGMENT ws_packet_transmitter_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1118.09_Tue_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1987 * 6* * * 7* *********************************************************** */ 8 9 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 10 ws_packet_transmitter_: 11 proc (); 12 13 14 /* PROGRAM FUNCTION 15* 16*This procedure is responsible for the transmission of data to the PC. Such 17*data consists of all BG and FG data packets and supervisory packets. 18* 19*There are a number of means of entry into this procedure: one is through direct 20*procedure calls from a timeout handler, the packet receiver (for supervisory 21*packet transmission) and the I/O interface; also this procedure may be 22*required to block due to a data transmission window being full, in this case 23*then it awaits a wakeup on the event wait channel from the packet receiver 24*when the window has opened up. 25**/ 26 27 28 /* NOTES 29**/ 30 31 /****^ HISTORY COMMENTS: 32* 1) change(87-04-16,Flegel), approve(87-06-23,MCR7649), 33* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 34* Created. 35* 2) change(88-11-08,Flegel), approve(88-11-16,MCR8023), audit(88-12-12,Lee), 36* install(89-01-24,MR12.3-1012): 37* phx21215 - Added support for a foreground event channel upon which 38* events are transmitted when foreground data has finished 39* transmission. 40* END HISTORY COMMENTS */ 41 42 /* INPUT PARAMETERS */ 43 dcl p_type char (1) parameter; /* Packet type field */ 44 dcl p_open_struc_ptr ptr parameter; /* User specified control settings */ 45 dcl p_mio_data_ptr ptr parameter; /* mowse_io_data */ 46 dcl p_minor fixed bin parameter; /* Minor capability number */ 47 dcl p_channel fixed bin parameter; /* Channel type */ 48 dcl p_data_ptr ptr parameter; /* Data buffer pointer */ 49 dcl p_data_len fixed bin (21) parameter; /* Data length */ 50 51 /* OUTPUT PARAMETERS */ 52 dcl p_code fixed bin (35) parameter; 53 54 /* MISC VARIABLES */ 55 dcl psn fixed bin; /* Packet sequence number */ 56 dcl type char (1); /* Packet type */ 57 dcl i fixed bin (21); 58 dcl mio_data_ptr ptr; /* mowse_io_ data */ 59 60 /* STRUCTURES */ 61 dcl 01 mio_data like mowse_io_data based (mio_data_ptr); 62 63 /* SYSTEM CALLS */ 64 dcl hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 65 dcl ipc_$unmask_ev_calls entry (fixed bin (35)); 66 dcl ipc_$mask_ev_calls entry (fixed bin (35)); 67 dcl ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 68 dcl get_system_free_area_ entry () returns (ptr); 69 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 70 dcl hcs_$reset_ips_mask entry (bit (36) aligned, bit (36) aligned); 71 dcl iox_$put_chars entry (ptr, ptr, fixed bin (21), fixed bin (35)); 72 dcl hcs_$set_ips_mask entry (bit (36) aligned, bit (36) aligned); 73 74 /* SYSTEM CALL SUPPORT */ 75 76 /* EXTERNAL CALLS */ 77 dcl ws_debug_$line entry () options (variable); 78 dcl ws_channel_$call_wakeup entry (ptr, fixed bin (71)); 79 dcl ws_timer_$reset_reset entry options (variable); 80 dcl ws_timer_$reset_sender entry (fixed bin); 81 dcl ws_channel_$wait_block entry (ptr, ptr, char (*), ptr); 82 dcl ws_tools_$reset_data entry (ptr); 83 dcl ws_tools_$ars entry (fixed bin, fixed bin) returns (fixed bin); 84 dcl ws_tools_$check_length entry (fixed bin (21)) returns (char (1)); 85 dcl ws_tools_$crc_char entry (char (1), fixed bin) returns (fixed bin); 86 dcl ws_debug_$packet entry (char (*), ptr, fixed bin (21), ptr); 87 dcl ws_channel_$wait_wakeup entry (ptr, ptr); 88 89 /* EXTERNAL CALL SUPPORT */ 90 91 /* BUILTINS */ 92 dcl translate builtin; 93 dcl substr builtin; 94 dcl addr builtin; 95 dcl bool builtin; 96 dcl null builtin; 97 dcl unspec builtin; 98 dcl length builtin; 99 dcl rank builtin; 100 dcl mod builtin; 101 dcl byte builtin; 102 103 /* CONDITIONS */ 104 dcl mowse_io_error condition; 105 106 /* CONSTANTS */ 107 dcl EscKey (0:2) bit (9) int static options (constant) init ("100"b3, "200"b3, "300"b3); 108 dcl GrpEscIdx (0:7) fixed bin int static options (constant) init (0, -1, -1, 0, 2, 1, 1, 2); 109 dcl False bit (1) int static options (constant) init ("0"b); 110 dcl True bit (1) int static options (constant) init ("1"b); 111 dcl Null_Convert fixed bin (8) int static options (constant) init (20); 112 113 /* */ 114 115 /* INITIALIZATION */ 116 117 /* MAIN */ 118 119 return; 120 121 /* */ 122 123 124 125 /* INTERNAL ENTRIES */ 126 127 128 /* *** Entry: ack - Internal entry for ws_packet_transmitter_ *** */ 129 130 ack: 131 entry (p_channel, p_mio_data_ptr); 132 133 134 /* ENTRY FUNCTION 135* 136*Send an ack-packet to the remote. 137**/ 138 139 /* NOTES 140**/ 141 142 call setup_entry (); 143 144 type = byte ((p_channel * SeqCnt) + mio_data.s.nasn (p_channel) 145 + AckOff); 146 call send_packet (type, ""); 147 mio_data.s.lasn (p_channel) = mio_data.s.nasn (p_channel); 148 149 return; 150 151 /* */ 152 153 /* *** Entry: data - Internal entry for ws_packet_transmitter_ *** */ 154 155 data: 156 entry (p_mio_data_ptr, p_channel, p_data_ptr, p_data_len, p_minor); 157 158 159 /* ENTRY FUNCTION 160* 161*Transmit a data packet to the remote (PC). This includes inserting control 162*and maintaining transmit packet Queues. 163**/ 164 165 /* NOTES 166**/ 167 168 call setup_entry (); 169 170 call send_data (p_channel, p_data_ptr, p_data_len, p_minor); 171 172 /* MF - phx21215 - Send an event on the foreground channel to signal 173* * completion 174* */ 175 if p_channel = FG then do; 176 call hcs_$wakeup (mio_data.channel_info.process_id, 177 mio_data.channel_info.foreground.channel, 0, (0)); 178 end; 179 180 return; 181 182 /* */ 183 184 /* *** Entry: initialize - Internal entry for ws_packet_transmitter_ *** */ 185 186 initialize: 187 entry (p_mio_data_ptr, p_open_struc_ptr, p_code); 188 189 190 /* ENTRY FUNCTION 191* 192*Initialize all pertinent data in the mowse_io_data which is used by the 193*packet transmitter. 194**/ 195 196 /* NOTES 197**/ 198 199 call setup_entry (); 200 201 open_struc_ptr = p_open_struc_ptr; 202 203 /* Create a wait channel for blocking */ 204 205 mio_data.channel_info.packet_transmitter.channel = 0; 206 mio_data.channel_info.packet_transmitter.count = 0; 207 mio_data.channel_info.packet_transmitter.flags.transmitted = False; 208 call ipc_$create_ev_chn ( 209 mio_data.channel_info.packet_transmitter.channel, p_code); 210 if p_code ^= 0 then 211 return; 212 213 /* Initialize transmitter control variables */ 214 215 mio_data.r.asn (*) = 0; 216 217 if open_struc_ptr ^= null then 218 if open_struc.flags.network_sw then 219 mio_data.s.eop = CR; 220 else 221 mio_data.s.eop = LF; 222 223 mio_data.s.sop = SOH; 224 mio_data.s.esc (0) = ESC; 225 mio_data.s.esc (1) = SI; 226 mio_data.s.esc (2) = SO; 227 mio_data.s.psn (*) = 0; 228 mio_data.s.lasn (*) = 0; 229 mio_data.s.nasn (*) = 0; 230 mio_data.s.dat (*, *) = ""; 231 232 mio_data.s.escreq (*) = False; 233 mio_data.s.escreq (Null_Convert) = True; 234 mio_data.s.escreq (rank (SOH)) = True; 235 mio_data.s.escreq (rank (ESC)) = True; 236 mio_data.s.escreq (rank (SI)) = True; 237 mio_data.s.escreq (rank (SO)) = True; 238 mio_data.s.escreq (rank (mio_data.s.eop)) = True; 239 do i = 128 to 255; 240 mio_data.s.escreq (i) = True; 241 end; 242 if open_struc_ptr ^= null then 243 if open_struc.flags.escape_sw then 244 mio_data.s.escreq 245 = bool (mio_data.s.escreq, open_struc.escape.switches, 246 OR); 247 248 return; 249 250 /* */ 251 252 /* *** Entry: local_data - Internal entry for ws_packet_transmitter_ *** */ 253 254 local_data: 255 entry (p_mio_data_ptr, p_channel, p_data_ptr, p_data_len, p_minor); 256 257 258 /* ENTRY FUNCTION 259* 260*To queue data to send to the local system. 261**/ 262 263 /* NOTES 264* 265*Messages are stored in packet_size chunks as a linked list of pending packets. 266**/ 267 268 call setup_entry (); 269 270 call send_local_data (p_channel, p_data_ptr, p_data_len, p_minor); 271 272 return; 273 274 /* */ 275 276 /* *** Entry: nak - Internal entry for ws_packet_transmitter_ *** */ 277 278 nak: 279 entry (p_channel, p_mio_data_ptr); 280 281 282 /* ENTRY FUNCTION 283* 284*Send a Nak-packet to the remote. 285**/ 286 287 /* NOTES 288**/ 289 290 call setup_entry (); 291 292 type = byte ((p_channel * SeqCnt) + mio_data.s.nasn (p_channel) 293 + NakOff); 294 call send_packet (type, ""); 295 296 return; 297 298 /* */ 299 300 /* *** Entry: resend - Internal entry for ws_packet_transmitter_ *** */ 301 302 resend: 303 entry (p_mio_data_ptr, p_channel); 304 305 306 /* ENTRY FUNCTION 307* 308*Resend all unacknowledged packets on the specified channel. 309**/ 310 311 /* NOTES 312**/ 313 314 call setup_entry (); 315 316 /* For each of the packet numbers on the specified channel */ 317 318 do psn = mio_data.r.asn (p_channel) repeat mod (psn + 1, SeqCnt) 319 while (psn ^= mio_data.s.psn (p_channel)); 320 321 /* - Determine the type of the packet to be resent */ 322 323 if mio_data.debug_iocb_ptr ^= null then 324 call ws_debug_$line (mio_data.debug_iocb_ptr, "resend"); 325 326 type = byte ((((p_channel * SeqCnt) + psn) * SeqCnt) 327 + mio_data.s.nasn (p_channel) + DatOff); 328 329 /* - Send the packet again */ 330 331 call send_packet (type, mio_data.s.dat (p_channel, psn)); 332 mio_data.s.lasn (p_channel) = mio_data.s.nasn (p_channel); 333 call ws_timer_$reset_sender (p_channel); 334 end; 335 336 return; 337 338 /* */ 339 340 /* *** Entry: reset - Internal entry for ws_packet_transmitter_ *** */ 341 342 reset: 343 entry (p_mio_data_ptr); 344 345 346 /* ENTRY FUNCTION 347* 348*Send a reset packet. 349**/ 350 351 /* NOTES 352* 353*Reset will reset both foreground and background channels and block the sending 354*and receiving of data (except the reset confirm) until confirmation has been 355*received from the PC. 356**/ 357 358 mio_data_ptr = p_mio_data_ptr; 359 360 /* If currently resetting, ignore */ 361 362 if mio_data.rs_pending (1) | mio_data.rs_pending (2) then 363 return; 364 365 /* Send the reset request packet */ 366 367 mio_data.rs_pending (1) = True; 368 call ws_tools_$reset_data (mio_data_ptr); 369 call send_packet (byte (RstOff + Request), ""); 370 call ws_timer_$reset_reset (); 371 return; 372 373 /* */ 374 375 /* *** Entry: supervisory - Internal entry for ws_packet_transmitter_ *** */ 376 377 supervisory: 378 entry (p_mio_data_ptr, p_type); 379 380 381 /* ENTRY FUNCTION 382* 383*Given a packet type, send the packet to the remote. The packet contains NO 384*data and the type field is assumed to be valid for the complete packet. 385**/ 386 387 /* NOTES 388**/ 389 390 call setup_entry (); 391 392 call send_packet (p_type, ""); 393 394 return; 395 396 /* */ 397 398 /* *** Entry: terminate - Internal entry for ws_packet_transmitter_ *** */ 399 400 terminate: 401 entry (p_mio_data_ptr); 402 403 404 /* ENTRY FUNCTION 405* 406*Terminate all necessary items to the transmitter. 407**/ 408 409 /* NOTES 410**/ 411 412 call setup_entry (); 413 414 if mio_data.channel_info.packet_transmitter.channel ^= 0 then do; 415 call ipc_$delete_ev_chn ( 416 mio_data.channel_info.packet_transmitter.channel, (0)); 417 mio_data.channel_info.packet_transmitter.count = 0; 418 end; 419 420 return; 421 422 /* */ 423 424 425 426 /* INTERNAL PROCEDURES */ 427 428 429 /* *** Procedure: send_data - Internal proc for ws_packet_transmitter_ *** */ 430 431 send_data: 432 proc (p_channel, p_data_ptr, p_data_len, p_minor); 433 434 435 /* PROCEDURE FUNCTION 436* 437*To queue and send data to the remote. 438**/ 439 440 /* NOTES 441**/ 442 443 /* INPUT PARAMETERS */ 444 dcl p_channel fixed bin parameter; /* FG or BG channel */ 445 dcl p_data_ptr ptr parameter; /* Data */ 446 dcl p_data_len fixed bin (21) parameter; /* Data length */ 447 dcl p_minor fixed bin parameter; /* Minor capability of data */ 448 449 /* OUTPUT PARAMETERS */ 450 451 /* MISC VARIABLES */ 452 dcl type char (1); /* Packet type */ 453 dcl send_data_ptr ptr; /* Ptr to data packet */ 454 dcl send_psn fixed bin; /* Temporary send packet SN */ 455 dcl new_length fixed bin (21); /* New length of data */ 456 dcl i fixed bin (21); 457 dcl reset_write_flag bit (1); /* resetwrite state on entry */ 458 dcl minor fixed bin; /* Local copy of minor */ 459 460 /* STRUCTURES */ 461 dcl data char (p_data_len) based (p_data_ptr); 462 dcl out_data char (MaxDatLen) var based (send_data_ptr); /* Data to transmit */ 463 464 /* INITIALIZATION */ 465 minor = p_minor; 466 reset_write_flag = mio_data.switches.reset_write; 467 468 /* MAIN */ 469 470 /* Return if we are disconnecting */ 471 472 if mio_data.switches.disconnect_active then 473 return; 474 475 /* Wait while a reset is going on */ 476 477 do while (mio_data.switches.rs_pending (1) 478 | mio_data.switches.rs_pending (2)); 479 480 call ws_channel_$wait_block (mio_data_ptr, 481 addr (mio_data.channel_info.packet_transmitter), 482 "packet_transmitter (send_data-1)", 483 mio_data.debug_iocb_ptr); 484 end; 485 486 /* Build and send packets until all data is sent. */ 487 488 i = 0; 489 do while (i < p_data_len); 490 491 /* Resetwrite is tested, however, we can do nothing about it for now. This 492* section is left in case future development requires something to be done 493* with resetwrite */ 494 495 if mio_data.switches.reset_write & ^reset_write_flag 496 & (p_channel = FG) 497 then do; 498 mio_data.reset_write = False; 499 end; 500 501 /* If a break has started, then quit sending the current stream and return */ 502 503 if mio_data.brk_pending & p_channel = FG 504 & p_minor = FG_TERMINAL_DATA 505 then 506 return; 507 508 /* Determine amount of data to be sent in the next packet; it is the 509* smaller of what is left and MaxDatLen. */ 510 511 new_length = p_data_len - i; 512 if new_length > MaxDatLen then 513 new_length = MaxDatLen - 1; 514 515 /* If the send data queue is full we must wait until it opens before 516* making our new data visible by updating the packet sequence number. 517* - Block until something is read from tty_ */ 518 519 do while ( 520 mod (mio_data.s.psn (p_channel) - mio_data.r.asn (p_channel), 521 SeqCnt) >= SWS); 522 523 call ws_channel_$wait_block (mio_data_ptr, 524 addr (mio_data.channel_info.packet_transmitter), 525 "packet_transmitter (send_data-2)", 526 mio_data.debug_iocb_ptr); 527 end; 528 529 /* Save the data in the next slot of the send data queue. */ 530 531 call ipc_$mask_ev_calls ((0)); 532 533 send_psn = mio_data.s.psn (p_channel); 534 mio_data.s.psn (p_channel) = mod (send_psn + 1, SeqCnt); 535 536 send_data_ptr = addr (mio_data.s.dat (p_channel, send_psn)); 537 if minor = FG_CONTROL_MESSAGE | minor = FG_TERMINAL_DATA 538 | minor = FG_BREAK 539 then 540 out_data 541 = byte (minor) || substr (data, i + 1, new_length); 542 else 543 out_data = substr (data, i + 1, new_length); 544 545 i = i + new_length; 546 547 /* Send the data and reset the resend timer. */ 548 549 type = byte ((((p_channel * SeqCnt) + send_psn) * SeqCnt) + 550 mio_data.s.nasn (p_channel) + DatOff); 551 call send_packet (type, out_data); 552 mio_data.s.lasn (p_channel) = mio_data.s.nasn (p_channel); 553 554 call ipc_$unmask_ev_calls ((0)); 555 556 call ws_timer_$reset_sender (p_channel); 557 end; 558 559 /* Open up the blocking channel in case anything is awaiting */ 560 561 call ws_channel_$wait_wakeup (mio_data_ptr, 562 addr (mio_data.channel_info.packet_transmitter)); 563 564 end send_data; 565 566 /* */ 567 568 /* *** Procedure: send_local_data - Internal proc for ws_packet_transmitter_ *** */ 569 570 send_local_data: 571 proc (p_channel, p_data_ptr, p_data_len, p_minor); 572 573 574 /* PROCEDURE FUNCTION 575* 576*To queue data to send between local applications. 577**/ 578 579 /* NOTES 580**/ 581 582 /* INPUT PARAMETERS */ 583 dcl p_channel fixed bin parameter; /* Channel ID */ 584 dcl p_data_ptr ptr parameter; /* Data */ 585 dcl p_data_len fixed bin (21) parameter; /* Length of data */ 586 dcl p_minor fixed bin parameter; /* Minor capability number */ 587 588 /* OUTPUT PARAMETERS */ 589 590 /* MISC VARIABLES */ 591 dcl data_ptr ptr; 592 dcl p_data char (p_data_len) based (p_data_ptr); 593 dcl data char (p_data_len) based (data_ptr); /* Data descriptor */ 594 dcl node_ptr ptr; 595 dcl system_free_area_ptr ptr; 596 dcl system_free_area area based (system_free_area_ptr); 597 598 /* STRUCTURES */ 599 600 /* INITIALIZATION */ 601 system_free_area_ptr = get_system_free_area_ (); 602 603 /* MAIN */ 604 605 /* No data, return */ 606 607 if p_data_ptr = null | p_data_len <= 0 then 608 return; 609 610 /* Allocate a node for message */ 611 612 allocate local_data_node in (system_free_area) set (node_ptr); 613 node_ptr -> local_data_node.next = null; 614 615 /* Allocate space for data */ 616 617 allocate data in (system_free_area) set (data_ptr); 618 data = p_data; 619 node_ptr -> local_data_node.data_ptr = data_ptr; 620 node_ptr -> local_data_node.data_len = p_data_len; 621 622 /* Debugging info */ 623 624 if mio_data.debug_iocb_ptr ^= null then 625 call ws_debug_$packet ("S:L:DAT-->", 626 node_ptr -> local_data_node.data_ptr, p_data_len, 627 mio_data.debug_iocb_ptr); 628 629 /* Message queue currently empty? put at in_ptr position */ 630 631 if mio_data.l_dat (p_channel).in_ptr = null then do; 632 mio_data.l_dat (p_channel).in_ptr = node_ptr; 633 mio_data.l_dat (p_channel).out_ptr = node_ptr; 634 end; 635 636 /* Insert somewhere else in queue */ 637 638 else do; 639 mio_data.l_dat (p_channel).in_ptr -> local_data_node.next 640 = node_ptr; 641 mio_data.l_dat (p_channel).in_ptr = node_ptr; 642 end; 643 644 /* Process the message if there is NO background processing going on */ 645 646 if ^mio_data.task.active (BG_task) 647 & mio_data.l_dat (BG).out_ptr ^= null 648 then 649 call ws_channel_$call_wakeup (mio_data_ptr, 650 mio_data.channel_info.packet_dispatcher.async_channel); 651 652 end send_local_data; 653 654 /* */ 655 656 /* *** Procedure: send_modem_string - Internal proc for ws_packet_transmitter_ *** */ 657 658 send_modem_string: 659 proc (p_string_ptr, p_string_len); 660 661 662 /* PROCEDURE FUNCTION 663* 664*Send a string of characters to the remote. 665**/ 666 667 /* NOTES 668**/ 669 670 /* INPUT PARAMETERS */ 671 dcl p_string_ptr ptr parameter; /* String pointer to transmit */ 672 dcl p_string_len fixed bin (21) parameter; /* String length to transmit */ 673 674 /* OUTPUT PARAMETERS */ 675 676 /* MISC VARIABLES */ 677 dcl mask bit (36) aligned; /* IPS mask */ 678 dcl code fixed bin (35); 679 dcl buffer char (p_string_len); /* Conversion buffer for NULL converted */ 680 681 /* STRUCTURES */ 682 dcl packet_buffer char (p_string_len) based (p_string_ptr); 683 684 /* INITIALIZATION */ 685 686 /* MAIN */ 687 688 /* : Convert all NULL characters to another character as the PC is ignoring 689* these */ 690 691 buffer = translate (packet_buffer, byte (Null_Convert), byte (0)); 692 693 /* : Put the modem string out */ 694 695 call hcs_$set_ips_mask (""b, mask); 696 call iox_$put_chars (mio_data.iocb_ptr, addr (buffer), p_string_len, 697 code); 698 call hcs_$reset_ips_mask (mask, mask); 699 700 if code ^= 0 then do; 701 signal mowse_io_error; 702 return; 703 end; 704 end send_modem_string; 705 706 /* */ 707 708 /* *** Procedure: send_packet - Internal proc for ws_packet_transmitter_ *** */ 709 710 send_packet: 711 proc (p_type, p_data); 712 713 714 /* PROCEDURE FUNCTION 715* 716*To send a packet to the remote. 717**/ 718 719 /* NOTES 720* 721*The packet to be sent is built in the local buffer 'pkt' and then sent to 722*the remote all at once. The space required for this buffer could be saved 723*if the packet were sent to the remote a character at a time. This was not 724*done because the time to execute a call to the routine that sends data to 725*the remote is greater than that to add a character to a buffer, and because 726*to send the packet in pieces would require that interrupts be inhibited for 727*the duration of the execution of 'sndpkt' in order to prevent it from being 728*re-entered. 729* 730*Data outside the range ' ' through '_' for which the corresponding element 731*of 's_escreq' is set is replaced in the packet by a two character escape 732*sequence consisting of an element of the array "s_ESC" followed by a 733*printable ASCII character between ' ' and '_'. These two characters are 734*chosen such that the exclusive-or of the second with 64 times the ordinal 735*in 's_ESC' of the first yields the character they represent. 736* 737* eg. <\000> => < > 738* 739*The replacement of data characters via two character escape sequences has 740*no effect upon the checksum of the packet: The checksum is calculated 741*using the original data characters rather than those actually sent in the 742*data field of the packet. This allows the receiver of the packet to revert 743*escape sequences as soon as they are encountered. 744**/ 745 746 /* INPUT PARAMETERS */ 747 dcl p_type char (1) parameter; /* Packet type */ 748 dcl p_data char (*) var parameter; /* Packet data to be sent */ 749 750 /* OUTPUT PARAMETERS */ 751 752 /* MISC VARIABLES */ 753 dcl escidx fixed bin; /* Escape table index */ 754 dcl group fixed bin; /* Escape group number */ 755 dcl type fixed bin (8); /* Packet type converted */ 756 dcl i fixed bin (21); 757 dcl crc fixed bin; /* CRC control char */ 758 dcl chr fixed bin (8) unal; /* 8-bit character translations */ 759 dcl data_len fixed bin (21); /* Length of packet data */ 760 dcl packet_len fixed bin (21); /* Length of packet to send */ 761 dcl packet (0:MinPktLen + 2 * MaxDatLen - 1) char (1); /* Sending packet */ 762 763 /* STRUCTURES */ 764 765 /* INITIALIZATION */ 766 crc = 0; 767 768 /* MAIN */ 769 770 /* If disconnect is in progress and the packet type is not DisCon, don't 771* send the message */ 772 773 if (mio_data.ds_pending (1) | mio_data.ds_pending (2)) 774 & (rank (p_type) ^= DisCon + Request 775 & rank (p_type) ^= DisCon + Confirm) 776 then 777 return; 778 779 /* Assemble the packet. Insert escape sequences as required. */ 780 781 packet (0) = mio_data.s.sop; 782 packet (1) = p_type; 783 packet_len = 2; 784 crc = ws_tools_$crc_char (packet (0), INIT_CRC); 785 crc = ws_tools_$crc_char (packet (1), crc); 786 data_len = length (p_data); 787 788 /* For each character */ 789 790 do i = 1 to data_len; 791 792 /* - Build the checksum (make sure that the p_data character will fit into 793* 8 bits) */ 794 795 unspec (chr) = bool (unspec (substr (p_data, i, 1)), 796 "011111111"b, And); 797 crc = ws_tools_$crc_char (byte (chr), crc); 798 799 /* - Convert escape sequences */ 800 801 group = ws_tools_$ars ((chr), 5); 802 escidx = GrpEscIdx (group); 803 if escidx >= 0 & mio_data.s.escreq (chr) then do; 804 packet (packet_len) = mio_data.s.esc (escidx); 805 packet_len = packet_len + 1; 806 unspec (chr) = 807 bool (unspec (chr), EscKey (escidx), XOR); 808 end; 809 810 /* - Accumulate packet */ 811 812 packet (packet_len) = byte (chr); 813 packet_len = packet_len + 1; 814 end; 815 816 /* Delimit packet with control information */ 817 818 packet (packet_len) 819 = ws_tools_$check_length (packet_len + LenLen + ChkLen + EOPLen); 820 crc = ws_tools_$crc_char (packet (packet_len), crc); 821 packet_len = packet_len + 1; 822 packet (packet_len) = byte (crc + CONVERT_CRC); 823 packet_len = packet_len + 1; 824 packet (packet_len) = mio_data.s.eop; 825 packet_len = packet_len + 1; 826 827 if mio_data.debug_iocb_ptr ^= null then do; 828 type = rank (p_type); 829 if DatOff <= type & type < DatOff + DatCnt then 830 call ws_debug_$packet ("S:DAT---->", addr (packet), packet_len, mio_data.debug_iocb_ptr); 831 else if AckOff <= type & type < AckOff + AckCnt then 832 call ws_debug_$packet ("S:ACK---->", addr (packet), packet_len, mio_data.debug_iocb_ptr); 833 else if NakOff <= type & type < NakOff + NakCnt then 834 call ws_debug_$packet ("S:NAK---->", addr (packet), packet_len, mio_data.debug_iocb_ptr); 835 else if BrkOff <= type & type < BrkOff + BrkCnt - 2 then 836 call ws_debug_$packet ("S:DisCon->", addr (packet), packet_len, mio_data.debug_iocb_ptr); 837 else if BrkOff <= type & type < BrkOff + BrkCnt then 838 call ws_debug_$packet ("S:Brk---->", addr (packet), packet_len, mio_data.debug_iocb_ptr); 839 else if RstOff <= type & type < RstOff + RstCnt then 840 call ws_debug_$packet ("S:RST---->", addr (packet), packet_len, mio_data.debug_iocb_ptr); 841 end; 842 843 /* Send packet to the remote */ 844 845 call send_modem_string (addr (packet), packet_len); 846 847 end send_packet; 848 849 /* */ 850 851 /* *** Procedure: setup_entry - Internal proc for ws_packet_transmitter_ *** */ 852 853 setup_entry: 854 proc (); 855 856 857 /* PROCEDURE FUNCTION 858* 859*Initialize the necessary information for each of the entry points. 860**/ 861 862 /* NOTES 863**/ 864 865 /* MAIN */ 866 867 mio_data_ptr = p_mio_data_ptr; 868 869 end setup_entry; 870 871 /* */ 872 873 874 875 /* INCLUDE FILES */ 1 1 /* BEGIN INCLUDE FILE: mowse_io_structures.incl.pl1 * * * * * * * * * * * * */ 1 2 1 3 1 4 /****^ HISTORY COMMENTS: 1 5* 1) change(86-11-11,Flegel), approve(87-07-15,MCR7580), 1 6* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 7* Created from portion of mowse_io_data.incl.pl1 1 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 1 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 10* Approved. 1 11* END HISTORY COMMENTS */ 1 12 1 13 /* : Structure for local data linked list queue */ 1 14 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 1 15 dcl 01 local_data_node based, 1 16 02 data_ptr ptr, /* Local data */ 1 17 02 data_len fixed bin (21), /* Amount of data */ 1 18 02 next ptr; /* Next in line */ 1 19 1 20 /* : Structure for link list of sleeping applications */ 1 21 dcl 01 mowse_io_sleep_node based, 1 22 02 major fixed bin, /* Capability index of sleeper */ 1 23 02 mbz bit (36), 1 24 02 when fixed bin (71), /* Multics wakeup time */ 1 25 02 next ptr, /* Next node in list */ 1 26 02 last ptr; /* Last node in list */ 1 27 1 28 /* END INCLUDE FILE: mowse_io_structures.incl.pl1 * * * * * * * * * * * * */ 876 2 1 /* BEGIN INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-07-19,Smith), approve(87-07-15,MCR7580), 2 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 2 6* Created to define MOWSE information to be 2 7* placed into a temp segment. 2 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 2 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 2 10* Approved. 2 11* 3) change(87-02-25,Flegel), approve(87-02-25,MCR7580), 2 12* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 2 13* Added bit switches to the init_mowse_info structure as well as the force 2 14* flag. 2 15* 4) change(87-03-24,Flegel), approve(87-03-24,MCR7580), 2 16* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 2 17* Added open_struc for passing EOP and escape char info from attach_mowse 2 18* to mowse_io_. 2 19* END HISTORY COMMENTS */ 2 20 2 21 /* CAT index limits */ 2 22 2 23 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 2 24 dcl MINIMUM_CAT_ENTRY fixed bin int static options (constant) init (33); 2 25 dcl MAXIMUM_CAT_ENTRY fixed bin int static options (constant) init (64); 2 26 2 27 dcl CAPABILITY_NAME_LENGTH fixed bin int static options (constant) init (32); 2 28 2 29 /* Mowse information structure */ 2 30 2 31 dcl 01 mowse_info based aligned, 2 32 02 version char (8), 2 33 02 local_cat dimension (33:64), /* Multics CAT table */ 2 34 03 flags, 2 35 04 reset bit (1) unal, /* Reset in progress */ 2 36 04 suspended bit (1) unal, /* Suspended applciation */ 2 37 04 status bit (1) unal, /* Status pending */ 2 38 04 mbz1 bit (33) unal, 2 39 03 sleep_time fixed bin, /* Time application is sleeping */ 2 40 03 mcb_ptr ptr, /* Capability MCB */ 2 41 02 remote_cat dimension (33:64), /* PC CAT table */ 2 42 03 major_capability 2 43 fixed bin, /* Capability number */ 2 44 03 capability_name char (32), /* Name of capability */ 2 45 03 flags, 2 46 04 reset bit (1) unal, /* Reset in progress */ 2 47 04 suspended bit (1) unal, /* Suspended capability */ 2 48 04 sleep_time bit (1) unal, /* Application sleeping */ 2 49 04 mbz2 bit (33) unal, 2 50 02 message_manager_info, /* Info for processing messages */ 2 51 03 head_list_ptr ptr, /* Head of message list */ 2 52 03 tail_list_ptr ptr, /* Tail of message list */ 2 53 03 pending_messages 2 54 fixed bin, /* Number of pending messages */ 2 55 02 mowse_flags, 2 56 03 trace bit (1) unal, /* Message tracing facility active */ 2 57 03 debug bit (1) unal, /* Debugging packets facility active */ 2 58 03 error_handled bit (1) unal, /* In mowse_error_handler procedure */ 2 59 03 mbz1 bit (33) unal, 2 60 03 trace_file_iocb ptr, /* Trace file iocb */ 2 61 03 debug_file_iocb ptr, /* Debug file iocb */ 2 62 02 init_mowse_info_ptr 2 63 ptr; /* Initialization information */ 2 64 2 65 /* MOWSE initialization information */ 2 66 2 67 dcl init_mowse_info_ptr ptr; 2 68 dcl 01 init_mowse_info based (init_mowse_info_ptr), 2 69 02 version char (8), 2 70 02 flags, /* Bit switches */ 2 71 03 trace_sw bit (1) unal, 2 72 03 debug_sw bit (1) unal, 2 73 03 io_switch_sw bit (1) unal, 2 74 03 force_sw bit (1) unal, 2 75 03 start_up_sw bit (1) unal, 2 76 03 escape_sw bit (1) unal, 2 77 03 network_sw bit (1) unal, 2 78 03 pad bit (29) unal, 2 79 02 escape, 2 80 03 chars (0:255) bit (1) unal, /* Character escapes */ 2 81 03 pad bit (32) unal, 2 82 02 trace char (512) var, /* Trace file name */ 2 83 02 debug char (512) var, /* Debug file name */ 2 84 02 io_switch char (512) var, /* Io switch name of mowse_io_ attachment */ 2 85 02 startup (MAXIMUM_CAT_ENTRY - MINIMUM_CAT_ENTRY + 1) 2 86 char (168) var; /* Capability to be autoloaded */ 2 87 2 88 /* Open description structure (this is padded to character bounds as it 2 89* is a character overlay structure - passed as a character string) */ 2 90 2 91 dcl open_struc_ptr ptr; 2 92 dcl 01 open_struc based (open_struc_ptr), 2 93 02 flags, 2 94 03 network_sw bit (1) unal, 2 95 03 escape_sw bit (1) unal, 2 96 03 pad bit (7) unal, 2 97 02 escape, 2 98 03 switches (0:255) bit (1) unal, 2 99 03 pad bit (32) unal, 2 100 02 mbz bit (16) unal; 2 101 2 102 /* END INCLUDE FILE: mowse_info.incl.pl1 * * * * * * * * * * * * */ 877 3 1 /* BEGIN INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-05-17,Smith), approve(86-12-16,MCR7580), 3 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 6* Created to define MOWSE message formats. 3 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 3 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 3 9* Approved. 3 10* 3) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 3 11* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 3 12* Changes to support async call channels. 3 13* END HISTORY COMMENTS */ 3 14 3 15 /* Message Channels */ 3 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 3 17 dcl BG fixed bin int static options (constant) init (0); 3 18 /* Fore ground */ 3 19 dcl FG fixed bin int static options (constant) init (1); 3 20 /* Back ground */ 3 21 3 22 /* Message types: 3 23* 3 24*Each intersystem message is labelled with one of the following types. Upon 3 25*reciept of the message suitable action is undertaken. This scheme was 3 26*introduced to allow the transmission of messsages longer than the maximum 3 27*packet size. 3 28**/ 3 29 3 30 /* Templates for the various messages used throughout the mowse environment. 3 31* Non-allocatable */ 3 32 3 33 dcl message_len fixed bin init (6); 3 34 dcl message_ptr ptr; 3 35 3 36 /* expected format of message */ 3 37 3 38 dcl 01 input_message based (message_ptr), 3 39 02 header, 3 40 03 system char (1) unal, 3 41 03 major char (1) unal, 3 42 03 minor char (1) unal, 3 43 03 source_system char (1) unal, 3 44 03 source_major char (1) unal, 3 45 02 data char (message_len - 5) unal; 3 46 3 47 /* expected format of message to be handled by mowse internal execute command */ 3 48 3 49 dcl 01 execom_message based (message_ptr), 3 50 02 header, 3 51 03 system char (1) unal, 3 52 03 major char (1) unal, 3 53 03 minor char (1) unal, 3 54 03 source_system char (1) unal, 3 55 03 source_major char (1) unal, 3 56 02 data, 3 57 03 cmd_id fixed bin (17) unal, 3 58 03 command char (message_len - 7) unal; 3 59 3 60 /* expected format of message recieved when a request to alter a CAT table 3 61* is made by a remote system */ 3 62 3 63 dcl 01 alter_cat_message based (message_ptr), 3 64 02 header, 3 65 03 system char (1) unal, 3 66 03 major char (1) unal, 3 67 03 minor char (1) unal, 3 68 03 source_system char (1) unal, 3 69 03 source_major char (1) unal, 3 70 02 data, 3 71 03 major char unal, 3 72 03 major_name char (CAPABILITY_NAME_LENGTH) unal; 3 73 3 74 /* Template used to parse message recieved from some remote system. */ 3 75 3 76 dcl 01 event_message based (message_ptr), 3 77 02 header, 3 78 03 system char (1) unal, 3 79 03 major char (1) unal, 3 80 03 msg_type char (1) unal; 3 81 3 82 /* format of message of MORE type */ 3 83 3 84 dcl 01 request_more_message 3 85 based (message_ptr), 3 86 02 header, 3 87 03 system char (1) unal, 3 88 03 major char (1) unal, 3 89 03 more char (1) unal, 3 90 03 source_system char (1) unal, 3 91 03 source_major char (1) unal, 3 92 03 source_minor char (1) unal; 3 93 3 94 /* format of message of CONTINUE type */ 3 95 3 96 dcl 01 more_remaining_message 3 97 based (message_ptr), 3 98 02 header, 3 99 03 system char (1) unal, 3 100 03 major char (1) unal, 3 101 03 continue char (1) unal, 3 102 03 minor char (1) unal, 3 103 03 source_system char (1) unal, 3 104 03 source_major char (1) unal, 3 105 02 data, 3 106 03 data_buf char (message_len - 6) unal; 3 107 3 108 /* format of message of LAST type */ 3 109 3 110 dcl 01 last_message based (message_ptr), 3 111 02 header, 3 112 03 system char (1) unal, 3 113 03 major char (1) unal, 3 114 03 minor char (1) unal, 3 115 03 source_system char (1) unal, 3 116 03 source_major char (1) unal, 3 117 02 data, 3 118 03 data_buf char (message_len - 5) unal; 3 119 3 120 /* Execute_command_reply message format */ 3 121 3 122 dcl 01 execom_reply_msg based (message_ptr), 3 123 02 header, 3 124 03 system char (1) unal, 3 125 03 major char (1) unal, 3 126 03 minor char (1) unal, 3 127 03 source_system char (1) unal, 3 128 03 source_major char (1) unal, 3 129 02 data, 3 130 03 cmd_id fixed bin unal, 3 131 03 status char unal; 3 132 3 133 /* Used to manage partial messages destined for any application */ 3 134 3 135 dcl msg_node_ptr ptr; 3 136 dcl 01 message_node based (msg_node_ptr), 3 137 02 major fixed bin, 3 138 02 partial_msg_list_ptr 3 139 ptr, 3 140 02 next_node ptr, 3 141 02 prev_node ptr, 3 142 02 last_part_msg ptr; 3 143 3 144 dcl part_msg_ptr ptr; 3 145 dcl 01 partial_message based (part_msg_ptr), 3 146 02 msg_ptr ptr, 3 147 02 msg_len fixed bin, 3 148 02 next_msg ptr; 3 149 3 150 3 151 dcl part_msg_length fixed bin; 3 152 dcl part_msg char (part_msg_length) based; 3 153 3 154 /* Trace information structure */ 3 155 dcl 01 trace_message_info, 3 156 02 direction fixed bin, 3 157 02 from_system fixed bin, 3 158 02 from_major fixed bin, 3 159 02 dest_system fixed bin, 3 160 02 dest_major fixed bin, 3 161 02 dest_minor fixed bin, 3 162 02 msg_type fixed bin, 3 163 02 message char (PACKET_SIZE) var; 3 164 3 165 /* END INCLUDE FILE: mowse_messages.incl.pl1 * * * * * * * * * * * * */ 878 4 1 /* BEGIN INCLUDE FILE: mowse_io_constants.incl.pl1 * * * * * * * * * * * * */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(86-11-06,Flegel), approve(87-07-15,MCR7580), 4 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 6* Created. 4 7* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 4 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 4 9* Approved. 4 10* END HISTORY COMMENTS */ 4 11 4 12 /* Protocol constants */ 4 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 4 14 dcl INIT_CRC fixed bin int static options (constant) init (63); 4 15 dcl CONVERT_CRC fixed bin int static options (constant) init (32); 4 16 dcl REVPOLY fixed bin int static options (constant) init (101001b); /* Bit N is coeff of x**(5-N) of generator */ 4 17 dcl OR bit (4) int static options (constant) init ("0111"b); 4 18 dcl XOR bit (4) int static options (constant) init ("0110"b); 4 19 dcl And bit (4) int static options (constant) init ("0001"b); 4 20 4 21 /* Debugging Switches */ 4 22 dcl DBGPKTS bit (1) int static options (constant) init ("0"b); 4 23 /* show packets */ 4 24 dcl DBGREJS bit (1) int static options (constant) init ("1"b); 4 25 /* diagnose rejects */ 4 26 dcl DBGXCHRS bit (1) int static options (constant) init ("0"b); 4 27 /* show extraneous received chars */ 4 28 4 29 /* ASCII Control Characters */ 4 30 4 31 dcl CR char (1) int static options (constant) 4 32 init (" "); 4 33 dcl ESC char (1) int static options (constant) 4 34 init (""); 4 35 dcl LF char (1) int static options (constant) 4 36 init (" 4 37 "); 4 38 dcl SI char (1) int static options (constant) 4 39 init (""); 4 40 dcl SO char (1) int static options (constant) 4 41 init (""); 4 42 dcl SOH char (1) int static options (constant) 4 43 init (""); 4 44 4 45 /* Protocol Bit-field Constants */ 4 46 dcl ChnCnt fixed bin int static options (constant) init (2); 4 47 /* no. logical channels */ 4 48 dcl SeqFld fixed bin int static options (constant) init (2); 4 49 /* no. bits in seq. field */ 4 50 dcl SeqCnt fixed bin int static options (constant) init (4); 4 51 /* 2**SeqFld */ 4 52 dcl SeqMsk fixed bin int static options (constant) init (3); 4 53 /* SeqCnt-1 */ 4 54 4 55 /* Protocol Byte-field Constants */ 4 56 dcl MaxDatLen fixed bin int static options (constant) init (124); 4 57 /* Maximum packet length */ 4 58 dcl SOPLen fixed bin int static options (constant) init (1); 4 59 /* Characters in SOP field */ 4 60 dcl TypLen fixed bin int static options (constant) init (1); 4 61 /* Characters in type field */ 4 62 dcl ChkLen fixed bin int static options (constant) init (1); 4 63 /* Characters in check field */ 4 64 dcl LenLen fixed bin int static options (constant) init (1); 4 65 /* Characters in length field */ 4 66 dcl EOPLen fixed bin int static options (constant) init (1); 4 67 /* Characters in EOP field */ 4 68 dcl MinPktLen fixed bin int static options (constant) init (5); 4 69 /* SOPLen+TypLen+LenLen+ChkLen+EOPLen */ 4 70 dcl MaxPktLen fixed bin int static options (constant) init (129); 4 71 /* MinPktLen+MaxDatLen */ 4 72 4 73 /* Protocol Packet Type Constants */ 4 74 dcl RstOff fixed bin (8) int static options (constant) 4 75 init (32); /* */ 4 76 dcl Request fixed bin (8) int static options (constant) 4 77 init (0); 4 78 dcl Confirm fixed bin (8) int static options (constant) 4 79 init (1); 4 80 dcl RstCnt fixed bin (8) int static options (constant) 4 81 init (2); /* Confirm+1 */ 4 82 dcl FGBrk fixed bin (8) int static options (constant) 4 83 init (36); /* BrkOff+2*FG*/ 4 84 dcl DisCon fixed bin (8) int static options (constant) 4 85 init (34); /* BrkOff+2*BG */ 4 86 dcl FastDis fixed bin (8) int static options (constant) 4 87 init (86); /* NakOff+NakCnt */ 4 88 dcl BrkOff fixed bin (8) int static options (constant) 4 89 init (34); /* RstOff+RstCnt */ 4 90 dcl BrkCnt fixed bin (8) int static options (constant) 4 91 init (4); /* ChnCnt*(Confirm+1) */ 4 92 dcl DatOff fixed bin (8) int static options (constant) 4 93 init (38); /* BrkOff+BrkCnt */ 4 94 dcl DatCnt fixed bin (8) int static options (constant) 4 95 init (32); /* ChnCnt*SeqCnt*SeqCnt */ 4 96 dcl AckOff fixed bin (8) int static options (constant) 4 97 init (70); /* DatOff+DatCnt */ 4 98 dcl AckCnt fixed bin (8) int static options (constant) 4 99 init (8); /* ChnCnt*SeqCnt */ 4 100 dcl NakOff fixed bin (8) int static options (constant) 4 101 init (78); /* AckOff+AckCnt */ 4 102 dcl NakCnt fixed bin (8) int static options (constant) 4 103 init (8); /* ChnCnt*SeqCnt */ 4 104 4 105 /* Protocol Parameters */ 4 106 dcl RQS fixed bin int static options (constant) init (2); 4 107 /* rcvchr's queue size (upper bound of r_pkt) */ 4 108 dcl RWS fixed bin int static options (constant) init (3); 4 109 /* Receiver's window size (upper bound of r_dat */ 4 110 dcl SWS fixed bin int static options (constant) init (3); 4 111 /* Sender's window size (upper bound of s_dat */ 4 112 dcl Lim_r_timer fixed bin int static options (constant) init (7); 4 113 /* Limit for r_timer */ 4 114 dcl Lim_s_timer fixed bin int static options (constant) init (15); 4 115 /* Limit for s_timer */ 4 116 dcl Lim_p_timer fixed bin int static options (constant) init (30); 4 117 /* Limit for pending_timer */ 4 118 dcl Timer_Interval fixed bin (71) int static options (constant) 4 119 init (125000); /* Next wakeup of timer */ 4 120 4 121 /* Tasking priority values */ 4 122 dcl Modem_Reader_Task fixed bin int static options (constant) init (0); 4 123 /* Modem Reader */ 4 124 dcl FG_task fixed bin int static options (constant) init (1); 4 125 /* FG processing */ 4 126 dcl BG_task fixed bin int static options (constant) init (2); 4 127 /* BG processing */ 4 128 dcl Idle bit (1) int static options (constant) init ("0"b); 4 129 /* Task not executing */ 4 130 4 131 /* Capability constants */ 4 132 dcl NO_MINOR fixed bin int static options (constant) init (-1); 4 133 4 134 /* WSTERM modes string indices */ 4 135 4 136 dcl WST_INIT_PL fixed bin int static options (constant) init (23); 4 137 dcl WST_INIT_LL fixed bin int static options (constant) init (79); 4 138 4 139 dcl WST_HEADER_1 fixed bin int static options (constant) init (1); 4 140 dcl WST_HEADER_2 fixed bin int static options (constant) init (2); 4 141 dcl WST_HEADER_3 fixed bin int static options (constant) init (3); 4 142 dcl WST_LENGTH_HIGH fixed bin int static options (constant) init (4); 4 143 dcl WST_LENGTH_LOW fixed bin int static options (constant) init (5); 4 144 dcl WST_MODES fixed bin int static options (constant) init (6); 4 145 dcl WST_KILL fixed bin int static options (constant) init (7); 4 146 dcl WST_ERASE fixed bin int static options (constant) init (8); 4 147 dcl WST_ESCAPE fixed bin int static options (constant) init (9); 4 148 dcl WST_LINE_LENGTH fixed bin int static options (constant) init (10); 4 149 dcl WST_PAGE_LENGTH fixed bin int static options (constant) init (11); 4 150 4 151 /* END INCLUDE FILE: mowse_io_constants.incl.pl1 * * * * * * * * * * * * */ 879 5 1 /* BEGIN INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 5 2 5 3 /****^ HISTORY COMMENTS: 5 4* 1) change(86-09-17,Flegel), approve(86-12-16,MCR7580), 5 5* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 6* Created. 5 7* 2) change(86-10-03,Flegel), approve(86-12-16,MCR7580), 5 8* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 9* Combined mowse_minor_caps.incl.pl1 and 5 10* mowse.incl.pl1 so that programmer only needs include mowse.incl.pl1 5 11* 3) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 5 12* audit(86-12-15,Gilcrease), install(87-01-06,MR12.0-1255): 5 13* Approved. 5 14* 4) change(87-07-31,Flegel), approve(87-07-31,MCR7580), 5 15* audit(87-07-31,RBarstad), install(87-08-07,MR12.1-1075): 5 16* Changes to support async call channels. 5 17* END HISTORY COMMENTS */ 5 18 5 19 /* Name of MOWSE temp seg for data */ 5 20 5 21 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 5 22 dcl temp_seg_name char (6) init ("MOWSE_"); 5 23 5 24 /* Version number */ 5 25 5 26 dcl MOWSE_VERSION_ char (8) int static options (constant) init ("version1"); 5 27 5 28 /* System identification */ 5 29 5 30 dcl LOCAL_SYSTEM fixed bin int static options (constant) init (32); 5 31 dcl REMOTE_SYSTEM fixed bin int static options (constant) init (33); 5 32 5 33 /* Status request return codes */ 5 34 5 35 dcl STATUS_SUCCESS fixed bin (8) int static options (constant) 5 36 init (32); 5 37 dcl STATUS_FAILED fixed bin (8) int static options (constant) 5 38 init (33); 5 39 5 40 /* Input/output capability buffer size limits */ 5 41 5 42 dcl MINIMUM_BUFFER_SIZE fixed bin int static options (constant) init (128); 5 43 dcl MAXIMUM_BUFFER_SIZE fixed bin int static options (constant) init (65536); 5 44 dcl MAXIMUM_BG_SIZE fixed bin int static options (constant) init (512); 5 45 5 46 /* Packet size (communication) constants */ 5 47 5 48 dcl PACKET_SIZE fixed bin int static options (constant) init (124); 5 49 dcl MAXIMUM_PACKET_SIZE fixed bin int static options (constant) init (118); 5 50 5 51 /* Query message constants */ 5 52 5 53 dcl SEND_QUERY fixed bin int static options (constant) init (128); 5 54 dcl ACCEPT fixed bin int static options (constant) init (32); 5 55 dcl REJECT fixed bin int static options (constant) init (33); 5 56 5 57 /* Trace information constants */ 5 58 5 59 dcl RECEIVE fixed bin int static options (constant) init (1); 5 60 dcl SEND fixed bin int static options (constant) init (0); 5 61 5 62 /* Limits on dedicated minor capabilities */ 5 63 5 64 dcl MINIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (32); 5 65 dcl MAXIMUM_SYSTEM_MINOR fixed bin int static options (constant) init (63); 5 66 dcl MINIMUM_USER_MINOR fixed bin int static options (constant) init (64); 5 67 dcl MAXIMUM_USER_MINOR fixed bin int static options (constant) init (127); 5 68 5 69 /* Dedicated Minor Capabilities */ 5 70 5 71 dcl LAST fixed bin int static options (constant) init (0); 5 72 dcl EXECUTE_COMMAND_REPLY fixed bin int static options (constant) init (32); 5 73 dcl EXECUTE_CAPABILITY_REPLY 5 74 fixed bin int static options (constant) init (33); 5 75 dcl FAIL_CAPABILITY fixed bin int static options (constant) init (33); 5 76 dcl INTERNAL fixed bin int static options (constant) init (32); 5 77 dcl EXECUTE_COMMAND fixed bin int static options (constant) init (34); 5 78 dcl ADD_TO_REMOTE_CAT fixed bin int static options (constant) init (35); 5 79 dcl DELETE_FROM_REMOTE_CAT fixed bin int static options (constant) init (36); 5 80 dcl SUSPEND_APPLICATION fixed bin int static options (constant) init (37); 5 81 dcl RESUME_APPLICATION fixed bin int static options (constant) init (38); 5 82 dcl TERMINATE_APPLICATION fixed bin int static options (constant) init (39); 5 83 dcl RESET_APPLICATION fixed bin int static options (constant) init (40); 5 84 dcl RESET_REPLY fixed bin int static options (constant) init (41); 5 85 dcl WAKE_UP fixed bin int static options (constant) init (42); 5 86 dcl STATUS fixed bin int static options (constant) init (43); 5 87 dcl OVERFLOWED_BUFFER fixed bin int static options (constant) init (44); 5 88 dcl SYSTEM_ERROR fixed bin int static options (constant) init (45); 5 89 dcl QUERY_REPLY fixed bin int static options (constant) init (46); 5 90 dcl RESPONSE_CONNECT fixed bin int static options (constant) init (47); 5 91 dcl RESPONSE_DISCONNECT fixed bin int static options (constant) init (48); 5 92 dcl REQUEST_CONNECT fixed bin int static options (constant) init (49); 5 93 dcl REQUEST_DISCONNECT fixed bin int static options (constant) init (50); 5 94 dcl CONTINUE fixed bin int static options (constant) init (51); 5 95 dcl MORE fixed bin int static options (constant) init (52); 5 96 dcl SET_SLEEP_FLAG fixed bin int static options (constant) init (53); 5 97 dcl RESET_SLEEP_FLAG fixed bin int static options (constant) init (54); 5 98 dcl SET_SUSPEND fixed bin int static options (constant) init (55); 5 99 dcl RESET_SUSPEND fixed bin int static options (constant) init (56); 5 100 dcl STATUS_REPLY fixed bin int static options (constant) init (57); 5 101 5 102 /* Foreground */ 5 103 5 104 dcl FG_CONTROL_MESSAGE fixed bin int static options (constant) init (33); 5 105 dcl FG_BREAK fixed bin int static options (constant) init (34); 5 106 dcl FG_TERMINAL_DATA fixed bin int static options (constant) init (35); 5 107 dcl FG_MORE_DATA fixed bin int static options (constant) init (36); 5 108 dcl PUT_TO_BACKGROUND_BUFFER 5 109 fixed bin int static options (constant) init (37); 5 110 dcl PUT_TO_QUERY_MESSAGE_BUFFER 5 111 fixed bin int static options (constant) init (38); 5 112 5 113 /* END INCLUDE FILE: mowse.incl.pl1 * * * * * * * * * * * * */ 880 6 1 /* BEGIN INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 6 2 6 3 /****^ HISTORY COMMENTS: 6 4* 1) change(87-04-16,Flegel), approve(87-07-15,MCR7580), 6 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 6 6* Created. 6 7* 2) change(87-06-23,Flegel), approve(87-06-23,MCR7649), 6 8* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 6 9* Converted to support the use of event channels. 6 10* 3) change(88-10-06,Flegel), approve(88-11-16,MCR8023), audit(88-12-12,Lee), 6 11* install(89-01-24,MR12.3-1012): 6 12* phx21215 - Added mowse_io_data.channel_info.foreground to use to generate 6 13* events when something happens in the foreground. 6 14* END HISTORY COMMENTS */ 6 15 6 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 6 17 dcl mowse_io_data_ptr ptr; 6 18 dcl 01 mowse_io_data based (mowse_io_data_ptr), 6 19 02 open_descrip char (19) var, 6 20 02 iocb_ptr ptr aligned, /* mowse_tty iocb pointer */ 6 21 02 default_iocb_ptr ptr aligned, /* mowse_i/o iocb pointer */ 6 22 02 attach_descrip char (256) var, /* Attach description */ 6 23 02 old_modes char (256) unal, /* Modes on previous iocb */ 6 24 6 25 02 current_modes char (256) unal, /* Current mode settings */ 6 26 02 WSTERM_modes (11) char (1), /* Encoded modes for WSTERM */ 6 27 02 cv_trans_struc_ptr ptr, /* Conversion table pointer */ 6 28 6 29 02 info_ptr ptr, /* Application control info seg */ 6 30 02 mcb_ptr ptr, /* Internal MCB to MOWSE */ 6 31 02 sleepers ptr, /* Queue of sleeping applications */ 6 32 02 dozers fixed bin (35), /* Number of unhandled sleeper wakeups */ 6 33 6 34 02 ws, /* Vidoe system control */ 6 35 03 flags, 6 36 04 trace bit (1) unal, 6 37 04 debug bit (1) unal, 6 38 04 mark_set bit (1) unal, 6 39 04 video_mode bit (1) unal, /* State (on/off) of video */ 6 40 04 more_input bit (1) unal, /* Last read unfinished */ 6 41 04 pad bit (31) unal, 6 42 03 read_count fixed bin (17), /* count of unfinished read commands sent */ 6 43 03 ips_mask bit (36) aligned, 6 44 6 45 02 sus_data, /* sus_ information */ 6 46 03 sus_entry ptr, /* Saved sus_ signal handler */ 6 47 03 activated bit (1) unal, /* If sus_ has been signaled */ 6 48 03 pad bit (35) unal, 6 49 6 50 02 channel_info, /* Event channel info */ 6 51 03 process_id bit (36) aligned, /* This process */ 6 52 03 wake_info, 6 53 04 wake_map (0:127) bit (1) unal, /* Break chars */ 6 54 04 pad bit (16) unal, 6 55 03 user_input like wait_info, /* Input wait channel */ 6 56 03 packet_transmitter like wait_info, /* Write events */ 6 57 03 packet_receiver, /* hcs_ events */ 6 58 04 channel fixed bin (71), /* Channel id */ 6 59 03 packet_dispatcher, /* Dispatch channels */ 6 60 04 sync_channel fixed bin (71), /* Process when quiet */ 6 61 04 async_channel fixed bin (71), /* Process NOW! */ 6 62 03 foreground, /* MF - phx21215 - read/write_status, get_event_channel info */ 6 63 04 channel fixed bin (71), /* Event channel */ 6 64 6 65 02 debug_iocb_ptr ptr, /* Debug file IOCB */ 6 66 02 trace_iocb_ptr ptr, /* Trace file IOCB */ 6 67 6 68 02 timer_info (8), 6 69 03 wakeup fixed bin (71), /* Seconds from last in queue */ 6 70 03 timer_id fixed bin, /* Who owns this wakeup */ 6 71 6 72 02 switches, /* Control switches */ 6 73 03 quit_enable bit (1) unal, /* Quit processing state */ 6 74 03 reset_write bit (1) unal, /* resetwrite requested */ 6 75 03 disconnect_active bit (1) unal, /* Disconnection occuring */ 6 76 03 rs_pending (2) bit (1) unal, /* Reset occuring */ 6 77 03 ds_pending (2) bit (1) unal, /* Disconnect occuring */ 6 78 03 br_pending bit (1) unal, /* Break occurring */ 6 79 03 brk_pending bit (1) unal, /* Break occuring (quit) */ 6 80 03 info_stored bit (1) unal, /* Info segment stored */ 6 81 03 connect_active bit (1) unal, /* Connection in progress */ 6 82 03 start_issued bit (1) unal, /* Indicates start order pending */ 6 83 03 pad bit (24) unal, 6 84 6 85 02 task, 6 86 03 active (0:2) bit (1) unal, /* Tasks which are active */ 6 87 03 pad bit (33) unal, 6 88 6 89 02 user_input, /* User_i/o input data */ 6 90 03 in fixed bin (21), /* Next free slot in repository */ 6 91 03 out fixed bin (21), /* Head of data */ 6 92 03 queue (0:4095) char (1), /* Repository */ 6 93 6 94 02 l_dat (0:1), /* Local data message queue */ 6 95 03 in_ptr ptr, /* Incoming messages */ 6 96 03 out_ptr ptr, /* Outgoing messages */ 6 97 6 98 02 r, /* Receiver data */ 6 99 03 eop char (1), /* End of packet character */ 6 100 03 sop char (1), /* Start of packet character */ 6 101 03 esc (0:2) char (1), /* 3 escape characters */ 6 102 03 esc_count fixed bin, /* Number of escaped chars in received packet */ 6 103 03 asn (0:1) fixed bin (3), /* Acknowledge sequence number */ 6 104 03 dat (0:1, 0:3) char (124) var, /* Data queues */ 6 105 03 pkt (0:2) char (129) var, /* Packet queue */ 6 106 03 pktin fixed bin, /* Next packet character in */ 6 107 03 pktout fixed bin, /* Head of packet */ 6 108 03 psn (0:1) fixed bin, /* SN for each channel */ 6 109 03 esckey bit (9) unal, /* Decoding 2nd character escape */ 6 110 03 ignoring (0:1) bit (1) unal, /* Ignore data during synchronization */ 6 111 03 pad bit (25) unal, 6 112 6 113 02 s, /* Sender data */ 6 114 03 eop char (1), /* End of packet character */ 6 115 03 sop char (1), /* Start of packet character */ 6 116 03 esc (0:2) char (1), /* 3 escape characters */ 6 117 03 dat (0:1, 0:3) char (124) var, /* Data queue */ 6 118 03 psn (0:1) fixed bin (3), /* Packet sequence number */ 6 119 03 lasn (0:1) fixed bin (3), /* Last ack sent */ 6 120 03 nasn (0:1) fixed bin (3), /* Next ack to be sent */ 6 121 03 escreq (0:255) bit (1) unal, /* Characters to be escaped */ 6 122 03 pad bit (32) unal; 6 123 6 124 /* Wait channel control struncture */ 6 125 6 126 dcl 01 wait_info based, 6 127 02 channel fixed bin (71) aligned, /* Channel ID */ 6 128 02 count fixed bin, /* Waiting count */ 6 129 02 flags, 6 130 03 transmitted bit (1) unal, /* Wakeup already generated */ 6 131 03 pad bit (35) unal; 6 132 6 133 /* END INCLUDE FILE: mowse_io_data.incl.pl1 * * * * * * * * * * * * */ 881 882 883 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1118.1 ws_packet_transmitter_.pl1 >udd>sm>ds>w>ml>ws_packet_transmitter_.pl1 876 1 08/10/87 1435.9 mowse_io_structures.incl.pl1 >ldd>incl>mowse_io_structures.incl.pl1 877 2 08/10/87 1436.7 mowse_info.incl.pl1 >ldd>incl>mowse_info.incl.pl1 878 3 08/10/87 1435.9 mowse_messages.incl.pl1 >ldd>incl>mowse_messages.incl.pl1 879 4 08/10/87 1436.7 mowse_io_constants.incl.pl1 >ldd>incl>mowse_io_constants.incl.pl1 880 5 08/10/87 1436.7 mowse.incl.pl1 >ldd>incl>mowse.incl.pl1 881 6 01/25/89 1342.1 mowse_io_data.incl.pl1 >ldd>incl>mowse_io_data.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. AckCnt constant fixed bin(8,0) initial dcl 4-98 ref 831 AckOff constant fixed bin(8,0) initial dcl 4-96 ref 144 831 831 And constant bit(4) initial packed unaligned dcl 4-19 ref 795 BG constant fixed bin(17,0) initial dcl 3-17 ref 646 BG_task constant fixed bin(17,0) initial dcl 4-126 ref 646 BrkCnt constant fixed bin(8,0) initial dcl 4-90 ref 835 837 BrkOff constant fixed bin(8,0) initial dcl 4-88 ref 835 835 837 837 CAPABILITY_NAME_LENGTH internal static fixed bin(17,0) initial dcl 2-27 ref 3-63 CONVERT_CRC constant fixed bin(17,0) initial dcl 4-15 ref 822 CR constant char(1) initial packed unaligned dcl 4-31 ref 217 ChkLen constant fixed bin(17,0) initial dcl 4-62 ref 818 Confirm constant fixed bin(8,0) initial dcl 4-78 ref 773 DatCnt constant fixed bin(8,0) initial dcl 4-94 ref 829 DatOff constant fixed bin(8,0) initial dcl 4-92 ref 326 549 829 829 DisCon constant fixed bin(8,0) initial dcl 4-84 ref 773 773 EOPLen constant fixed bin(17,0) initial dcl 4-66 ref 818 ESC constant char(1) initial packed unaligned dcl 4-33 ref 224 235 EscKey 000011 constant bit(9) initial array packed unaligned dcl 107 ref 806 FG constant fixed bin(17,0) initial dcl 3-19 ref 175 495 503 FG_BREAK constant fixed bin(17,0) initial dcl 5-105 ref 537 FG_CONTROL_MESSAGE constant fixed bin(17,0) initial dcl 5-104 ref 537 FG_TERMINAL_DATA constant fixed bin(17,0) initial dcl 5-106 ref 503 537 False constant bit(1) initial packed unaligned dcl 109 ref 207 232 498 GrpEscIdx 000001 constant fixed bin(17,0) initial array dcl 108 ref 802 INIT_CRC 000000 constant fixed bin(17,0) initial dcl 4-14 set ref 784* LF constant char(1) initial packed unaligned dcl 4-35 ref 220 LenLen constant fixed bin(17,0) initial dcl 4-64 ref 818 MAXIMUM_CAT_ENTRY internal static fixed bin(17,0) initial dcl 2-25 ref 2-68 MINIMUM_CAT_ENTRY internal static fixed bin(17,0) initial dcl 2-24 ref 2-68 MaxDatLen constant fixed bin(17,0) initial dcl 4-56 ref 512 512 537 542 551 761 MinPktLen constant fixed bin(17,0) initial dcl 4-68 ref 761 NakCnt constant fixed bin(8,0) initial dcl 4-102 ref 833 NakOff constant fixed bin(8,0) initial dcl 4-100 ref 292 833 833 Null_Convert constant fixed bin(8,0) initial dcl 111 ref 233 691 OR constant bit(4) initial packed unaligned dcl 4-17 ref 242 242 PACKET_SIZE constant fixed bin(17,0) initial dcl 5-48 ref 3-155 Request constant fixed bin(8,0) initial dcl 4-76 ref 369 369 773 RstCnt constant fixed bin(8,0) initial dcl 4-80 ref 839 RstOff constant fixed bin(8,0) initial dcl 4-74 ref 369 369 839 839 SI constant char(1) initial packed unaligned dcl 4-38 ref 225 236 SO constant char(1) initial packed unaligned dcl 4-40 ref 226 237 SOH constant char(1) initial packed unaligned dcl 4-42 ref 223 234 SWS constant fixed bin(17,0) initial dcl 4-110 ref 519 SeqCnt 003010 constant fixed bin(17,0) initial dcl 4-50 ref 144 292 326 326 334 519 534 549 549 True constant bit(1) initial packed unaligned dcl 110 ref 233 234 235 236 237 238 240 367 XOR constant bit(4) initial packed unaligned dcl 4-18 ref 806 active 431 based bit(1) array level 3 packed packed unaligned dcl 61 ref 646 addr builtin function dcl 94 ref 480 480 523 523 536 561 561 696 696 829 829 831 831 833 833 835 835 837 837 839 839 845 845 asn 2447 based fixed bin(3,0) array level 3 dcl 61 set ref 215* 318 519 async_channel 360 based fixed bin(71,0) level 4 dcl 61 set ref 646* bool builtin function dcl 95 ref 242 795 806 brk_pending 430(08) based bit(1) level 3 packed packed unaligned dcl 61 ref 503 buffer 000102 automatic char packed unaligned dcl 679 set ref 691* 696 696 byte builtin function dcl 101 ref 144 292 326 369 369 537 549 691 691 797 797 812 822 channel 362 based fixed bin(71,0) level 4 in structure "mio_data" dcl 61 in procedure "ws_packet_transmitter_" set ref 176* channel 350 based fixed bin(71,0) level 4 in structure "mio_data" dcl 61 in procedure "ws_packet_transmitter_" set ref 205* 208* 414 415* channel_info 336 based structure level 2 unaligned dcl 61 chr 000105 automatic fixed bin(8,0) packed unaligned dcl 758 set ref 795* 797 797 801 803 806* 806 812 code 000101 automatic fixed bin(35,0) dcl 678 set ref 696* 700 count 352 based fixed bin(17,0) level 4 dcl 61 set ref 206* 417* crc 000104 automatic fixed bin(17,0) dcl 757 set ref 766* 784* 785* 785* 797* 797* 820* 820* 822 dat 3226 based varying char(124) array level 3 dcl 61 set ref 230* 331* 536 data based char packed unaligned dcl 593 in procedure "send_local_data" set ref 617 618* data based char packed unaligned dcl 461 in procedure "send_data" ref 537 542 data_len 2 based fixed bin(21,0) level 2 in structure "local_data_node" dcl 1-15 in procedure "ws_packet_transmitter_" set ref 620* data_len 000106 automatic fixed bin(21,0) dcl 759 in procedure "send_packet" set ref 786* 790 data_ptr 000152 automatic pointer dcl 591 in procedure "send_local_data" set ref 617* 618 619 data_ptr based pointer level 2 in structure "local_data_node" dcl 1-15 in procedure "ws_packet_transmitter_" set ref 619* 624* debug_iocb_ptr 364 based pointer level 2 dcl 61 set ref 323 323* 480* 523* 624 624* 827 829* 831* 833* 835* 837* 839* disconnect_active 430(02) based bit(1) level 3 packed packed unaligned dcl 61 ref 472 ds_pending 430(05) based bit(1) array level 3 packed packed unaligned dcl 61 ref 773 773 eop 3224 based char(1) level 3 packed packed unaligned dcl 61 set ref 217* 220* 238 824 esc 3224(18) based char(1) array level 3 packed packed unaligned dcl 61 set ref 224* 225* 226* 804 escape 0(09) based structure level 2 packed packed unaligned dcl 2-92 escape_sw 0(01) based bit(1) level 3 packed packed unaligned dcl 2-92 ref 242 escidx 000100 automatic fixed bin(17,0) dcl 753 set ref 802* 803 804 806 escreq 3634 based bit(1) array level 3 packed packed unaligned dcl 61 set ref 232* 233* 234* 235* 236* 237* 238* 240* 242* 242 803 flags based structure level 2 in structure "open_struc" packed packed unaligned dcl 2-92 in procedure "ws_packet_transmitter_" flags 353 based structure level 4 in structure "mio_data" packed packed unaligned dcl 61 in procedure "ws_packet_transmitter_" foreground 362 based structure level 3 unaligned dcl 61 get_system_free_area_ 000020 constant entry external dcl 68 ref 601 group 000101 automatic fixed bin(17,0) dcl 754 set ref 801* 802 hcs_$reset_ips_mask 000024 constant entry external dcl 70 ref 698 hcs_$set_ips_mask 000030 constant entry external dcl 72 ref 695 hcs_$wakeup 000010 constant entry external dcl 64 ref 176 i 000102 automatic fixed bin(21,0) dcl 57 in procedure "ws_packet_transmitter_" set ref 239* 240* i 000140 automatic fixed bin(21,0) dcl 456 in procedure "send_data" set ref 488* 489 511 537 542 545* 545 i 000103 automatic fixed bin(21,0) dcl 756 in procedure "send_packet" set ref 790* 795* in_ptr 2434 based pointer array level 3 dcl 61 set ref 631 632* 639 641* iocb_ptr 6 based pointer level 2 dcl 61 set ref 696* iox_$put_chars 000026 constant entry external dcl 71 ref 696 ipc_$create_ev_chn 000022 constant entry external dcl 69 ref 208 ipc_$delete_ev_chn 000016 constant entry external dcl 67 ref 415 ipc_$mask_ev_calls 000014 constant entry external dcl 66 ref 531 ipc_$unmask_ev_calls 000012 constant entry external dcl 65 ref 554 l_dat 2434 based structure array level 2 unaligned dcl 61 lasn 3630 based fixed bin(3,0) array level 3 dcl 61 set ref 147* 228* 332* 552* length builtin function dcl 98 ref 786 local_data_node based structure level 1 unaligned dcl 1-15 set ref 612 mask 000100 automatic bit(36) dcl 677 set ref 695* 698* 698* message_len 000110 automatic fixed bin(17,0) initial dcl 3-33 set ref 3-33* minor 000142 automatic fixed bin(17,0) dcl 458 set ref 465* 537 537 537 537 mio_data based structure level 1 unaligned dcl 61 mio_data_ptr 000104 automatic pointer dcl 58 set ref 144 147 147 176 176 205 206 207 208 215 217 220 223 224 225 226 227 228 229 230 232 233 234 235 236 237 238 238 240 242 242 292 318 318 323 323 326 331 332 332 358* 362 362 367 368* 414 415 417 466 472 477 477 480* 480 480 480 495 498 503 519 519 523* 523 523 523 533 534 536 549 552 552 561* 561 561 624 624 631 632 633 639 641 646 646 646* 646 696 773 773 781 803 804 824 827 829 831 833 835 837 839 867* mod builtin function dcl 100 ref 334 519 534 mowse_io_data based structure level 1 unaligned dcl 6-18 mowse_io_error 000000 stack reference condition dcl 104 ref 701 nasn 3632 based fixed bin(3,0) array level 3 dcl 61 set ref 144 147 229* 292 326 332 549 552 network_sw based bit(1) level 3 packed packed unaligned dcl 2-92 ref 217 new_length 000137 automatic fixed bin(21,0) dcl 455 set ref 511* 512 512* 537 542 545 next 4 based pointer level 2 dcl 1-15 set ref 613* 639* node_ptr 000154 automatic pointer dcl 594 set ref 612* 613 619 620 624 632 633 639 641 null builtin function dcl 96 ref 217 242 323 607 613 624 631 646 827 open_struc based structure level 1 packed packed unaligned dcl 2-92 open_struc_ptr 000106 automatic pointer dcl 2-91 set ref 201* 217 217 242 242 242 out_data based varying char dcl 462 set ref 537* 542* 551* out_ptr 2436 based pointer array level 3 dcl 61 set ref 633* 646 p_channel parameter fixed bin(17,0) dcl 47 in procedure "ws_packet_transmitter_" set ref 130 144 144 147 147 155 170* 175 254 270* 278 292 292 302 318 318 326 326 331 332 332 333* p_channel parameter fixed bin(17,0) dcl 583 in procedure "send_local_data" ref 570 631 632 633 639 641 p_channel parameter fixed bin(17,0) dcl 444 in procedure "send_data" set ref 431 495 503 519 519 533 534 536 549 549 552 552 556* p_code parameter fixed bin(35,0) dcl 52 set ref 186 208* 210 p_data based char packed unaligned dcl 592 in procedure "send_local_data" ref 618 p_data parameter varying char dcl 748 in procedure "send_packet" ref 710 786 795 p_data_len parameter fixed bin(21,0) dcl 585 in procedure "send_local_data" set ref 570 607 617 617 618 618 620 624* p_data_len parameter fixed bin(21,0) dcl 49 in procedure "ws_packet_transmitter_" set ref 155 170* 254 270* p_data_len parameter fixed bin(21,0) dcl 446 in procedure "send_data" ref 431 489 511 537 542 p_data_ptr parameter pointer dcl 48 in procedure "ws_packet_transmitter_" set ref 155 170* 254 270* p_data_ptr parameter pointer dcl 584 in procedure "send_local_data" ref 570 607 618 p_data_ptr parameter pointer dcl 445 in procedure "send_data" ref 431 537 542 p_minor parameter fixed bin(17,0) dcl 447 in procedure "send_data" ref 431 465 503 p_minor parameter fixed bin(17,0) dcl 586 in procedure "send_local_data" ref 570 p_minor parameter fixed bin(17,0) dcl 46 in procedure "ws_packet_transmitter_" set ref 155 170* 254 270* p_mio_data_ptr parameter pointer dcl 45 ref 130 155 186 254 278 302 342 358 377 400 867 p_open_struc_ptr parameter pointer dcl 44 ref 186 201 p_string_len parameter fixed bin(21,0) dcl 672 set ref 658 679 691 696* p_string_ptr parameter pointer dcl 671 ref 658 691 p_type parameter char(1) packed unaligned dcl 747 in procedure "send_packet" ref 710 773 773 782 828 p_type parameter char(1) packed unaligned dcl 43 in procedure "ws_packet_transmitter_" set ref 377 392* packet 000110 automatic char(1) array packed unaligned dcl 761 set ref 781* 782* 784* 785* 804* 812* 818* 820* 822* 824* 829 829 831 831 833 833 835 835 837 837 839 839 845 845 packet_buffer based char packed unaligned dcl 682 ref 691 packet_dispatcher 356 based structure level 3 unaligned dcl 61 packet_len 000107 automatic fixed bin(21,0) dcl 760 set ref 783* 804 805* 805 812 813* 813 818 818 820 821* 821 822 823* 823 824 825* 825 829* 831* 833* 835* 837* 839* 845* packet_transmitter 350 based structure level 3 unaligned dcl 61 set ref 480 480 523 523 561 561 process_id 336 based bit(36) level 3 dcl 61 set ref 176* psn 000100 automatic fixed bin(17,0) dcl 55 in procedure "ws_packet_transmitter_" set ref 318* 318* 326 331* 334 psn 3626 based fixed bin(3,0) array level 3 in structure "mio_data" dcl 61 in procedure "ws_packet_transmitter_" set ref 227* 318 519 533 534* r 2444 based structure level 2 unaligned dcl 61 rank builtin function dcl 99 ref 234 235 236 237 238 773 773 828 reset_write 430(01) based bit(1) level 3 packed packed unaligned dcl 61 set ref 466 495 498* reset_write_flag 000141 automatic bit(1) packed unaligned dcl 457 set ref 466* 495 rs_pending 430(03) based bit(1) array level 3 packed packed unaligned dcl 61 set ref 362 362 367* 477 477 s 3224 based structure level 2 unaligned dcl 61 send_data_ptr 000134 automatic pointer dcl 453 set ref 536* 537 542 551 send_psn 000136 automatic fixed bin(17,0) dcl 454 set ref 533* 534 536 549 sop 3224(09) based char(1) level 3 packed packed unaligned dcl 61 set ref 223* 781 substr builtin function dcl 93 ref 537 542 795 switches 0(09) based bit(1) array level 3 in structure "open_struc" packed packed unaligned dcl 2-92 in procedure "ws_packet_transmitter_" ref 242 switches 430 based structure level 2 in structure "mio_data" packed packed unaligned dcl 61 in procedure "ws_packet_transmitter_" system_free_area based area(1024) dcl 596 ref 612 617 system_free_area_ptr 000156 automatic pointer dcl 595 set ref 601* 612 617 task 431 based structure level 2 packed packed unaligned dcl 61 temp_seg_name 000112 automatic char(6) initial packed unaligned dcl 5-22 set ref 5-22* translate builtin function dcl 92 ref 691 transmitted 353 based bit(1) level 5 packed packed unaligned dcl 61 set ref 207* type 000102 automatic fixed bin(8,0) dcl 755 in procedure "send_packet" set ref 828* 829 829 831 831 833 833 835 835 837 837 839 839 type 000132 automatic char(1) packed unaligned dcl 452 in procedure "send_data" set ref 549* 551* type 000101 automatic char(1) packed unaligned dcl 56 in procedure "ws_packet_transmitter_" set ref 144* 146* 292* 294* 326* 331* unspec builtin function dcl 97 set ref 795* 795 806* 806 wait_info based structure level 1 unaligned dcl 6-126 ws_channel_$call_wakeup 000034 constant entry external dcl 78 ref 646 ws_channel_$wait_block 000042 constant entry external dcl 81 ref 480 523 ws_channel_$wait_wakeup 000056 constant entry external dcl 87 ref 561 ws_debug_$line 000032 constant entry external dcl 77 ref 323 ws_debug_$packet 000054 constant entry external dcl 86 ref 624 829 831 833 835 837 839 ws_timer_$reset_reset 000036 constant entry external dcl 79 ref 370 ws_timer_$reset_sender 000040 constant entry external dcl 80 ref 333 556 ws_tools_$ars 000046 constant entry external dcl 83 ref 801 ws_tools_$check_length 000050 constant entry external dcl 84 ref 818 ws_tools_$crc_char 000052 constant entry external dcl 85 ref 784 785 797 820 ws_tools_$reset_data 000044 constant entry external dcl 82 ref 368 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCEPT internal static fixed bin(17,0) initial dcl 5-54 ADD_TO_REMOTE_CAT internal static fixed bin(17,0) initial dcl 5-78 CONTINUE internal static fixed bin(17,0) initial dcl 5-94 ChnCnt internal static fixed bin(17,0) initial dcl 4-46 DBGPKTS internal static bit(1) initial packed unaligned dcl 4-22 DBGREJS internal static bit(1) initial packed unaligned dcl 4-24 DBGXCHRS internal static bit(1) initial packed unaligned dcl 4-26 DELETE_FROM_REMOTE_CAT internal static fixed bin(17,0) initial dcl 5-79 EXECUTE_CAPABILITY_REPLY internal static fixed bin(17,0) initial dcl 5-73 EXECUTE_COMMAND internal static fixed bin(17,0) initial dcl 5-77 EXECUTE_COMMAND_REPLY internal static fixed bin(17,0) initial dcl 5-72 FAIL_CAPABILITY internal static fixed bin(17,0) initial dcl 5-75 FGBrk internal static fixed bin(8,0) initial dcl 4-82 FG_MORE_DATA internal static fixed bin(17,0) initial dcl 5-107 FG_task internal static fixed bin(17,0) initial dcl 4-124 FastDis internal static fixed bin(8,0) initial dcl 4-86 INTERNAL internal static fixed bin(17,0) initial dcl 5-76 Idle internal static bit(1) initial packed unaligned dcl 4-128 LAST internal static fixed bin(17,0) initial dcl 5-71 LOCAL_SYSTEM internal static fixed bin(17,0) initial dcl 5-30 Lim_p_timer internal static fixed bin(17,0) initial dcl 4-116 Lim_r_timer internal static fixed bin(17,0) initial dcl 4-112 Lim_s_timer internal static fixed bin(17,0) initial dcl 4-114 MAXIMUM_BG_SIZE internal static fixed bin(17,0) initial dcl 5-44 MAXIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 5-43 MAXIMUM_PACKET_SIZE internal static fixed bin(17,0) initial dcl 5-49 MAXIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 5-65 MAXIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 5-67 MINIMUM_BUFFER_SIZE internal static fixed bin(17,0) initial dcl 5-42 MINIMUM_SYSTEM_MINOR internal static fixed bin(17,0) initial dcl 5-64 MINIMUM_USER_MINOR internal static fixed bin(17,0) initial dcl 5-66 MORE internal static fixed bin(17,0) initial dcl 5-95 MOWSE_VERSION_ internal static char(8) initial packed unaligned dcl 5-26 MaxPktLen internal static fixed bin(17,0) initial dcl 4-70 Modem_Reader_Task internal static fixed bin(17,0) initial dcl 4-122 NO_MINOR internal static fixed bin(17,0) initial dcl 4-132 OVERFLOWED_BUFFER internal static fixed bin(17,0) initial dcl 5-87 PUT_TO_BACKGROUND_BUFFER internal static fixed bin(17,0) initial dcl 5-108 PUT_TO_QUERY_MESSAGE_BUFFER internal static fixed bin(17,0) initial dcl 5-110 QUERY_REPLY internal static fixed bin(17,0) initial dcl 5-89 RECEIVE internal static fixed bin(17,0) initial dcl 5-59 REJECT internal static fixed bin(17,0) initial dcl 5-55 REMOTE_SYSTEM internal static fixed bin(17,0) initial dcl 5-31 REQUEST_CONNECT internal static fixed bin(17,0) initial dcl 5-92 REQUEST_DISCONNECT internal static fixed bin(17,0) initial dcl 5-93 RESET_APPLICATION internal static fixed bin(17,0) initial dcl 5-83 RESET_REPLY internal static fixed bin(17,0) initial dcl 5-84 RESET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 5-97 RESET_SUSPEND internal static fixed bin(17,0) initial dcl 5-99 RESPONSE_CONNECT internal static fixed bin(17,0) initial dcl 5-90 RESPONSE_DISCONNECT internal static fixed bin(17,0) initial dcl 5-91 RESUME_APPLICATION internal static fixed bin(17,0) initial dcl 5-81 REVPOLY internal static fixed bin(17,0) initial dcl 4-16 RQS internal static fixed bin(17,0) initial dcl 4-106 RWS internal static fixed bin(17,0) initial dcl 4-108 SEND internal static fixed bin(17,0) initial dcl 5-60 SEND_QUERY internal static fixed bin(17,0) initial dcl 5-53 SET_SLEEP_FLAG internal static fixed bin(17,0) initial dcl 5-96 SET_SUSPEND internal static fixed bin(17,0) initial dcl 5-98 SOPLen internal static fixed bin(17,0) initial dcl 4-58 STATUS internal static fixed bin(17,0) initial dcl 5-86 STATUS_FAILED internal static fixed bin(8,0) initial dcl 5-37 STATUS_REPLY internal static fixed bin(17,0) initial dcl 5-100 STATUS_SUCCESS internal static fixed bin(8,0) initial dcl 5-35 SUSPEND_APPLICATION internal static fixed bin(17,0) initial dcl 5-80 SYSTEM_ERROR internal static fixed bin(17,0) initial dcl 5-88 SeqFld internal static fixed bin(17,0) initial dcl 4-48 SeqMsk internal static fixed bin(17,0) initial dcl 4-52 TERMINATE_APPLICATION internal static fixed bin(17,0) initial dcl 5-82 Timer_Interval internal static fixed bin(71,0) initial dcl 4-118 TypLen internal static fixed bin(17,0) initial dcl 4-60 WAKE_UP internal static fixed bin(17,0) initial dcl 5-85 WST_ERASE internal static fixed bin(17,0) initial dcl 4-146 WST_ESCAPE internal static fixed bin(17,0) initial dcl 4-147 WST_HEADER_1 internal static fixed bin(17,0) initial dcl 4-139 WST_HEADER_2 internal static fixed bin(17,0) initial dcl 4-140 WST_HEADER_3 internal static fixed bin(17,0) initial dcl 4-141 WST_INIT_LL internal static fixed bin(17,0) initial dcl 4-137 WST_INIT_PL internal static fixed bin(17,0) initial dcl 4-136 WST_KILL internal static fixed bin(17,0) initial dcl 4-145 WST_LENGTH_HIGH internal static fixed bin(17,0) initial dcl 4-142 WST_LENGTH_LOW internal static fixed bin(17,0) initial dcl 4-143 WST_LINE_LENGTH internal static fixed bin(17,0) initial dcl 4-148 WST_MODES internal static fixed bin(17,0) initial dcl 4-144 WST_PAGE_LENGTH internal static fixed bin(17,0) initial dcl 4-149 alter_cat_message based structure level 1 packed packed unaligned dcl 3-63 event_message based structure level 1 packed packed unaligned dcl 3-76 execom_message based structure level 1 packed packed unaligned dcl 3-49 execom_reply_msg based structure level 1 packed packed unaligned dcl 3-122 init_mowse_info based structure level 1 unaligned dcl 2-68 init_mowse_info_ptr automatic pointer dcl 2-67 input_message based structure level 1 packed packed unaligned dcl 3-38 last_message based structure level 1 packed packed unaligned dcl 3-110 message_node based structure level 1 unaligned dcl 3-136 message_ptr automatic pointer dcl 3-34 more_remaining_message based structure level 1 packed packed unaligned dcl 3-96 mowse_info based structure level 1 dcl 2-31 mowse_io_data_ptr automatic pointer dcl 6-17 mowse_io_sleep_node based structure level 1 unaligned dcl 1-21 msg_node_ptr automatic pointer dcl 3-135 part_msg based char packed unaligned dcl 3-152 part_msg_length automatic fixed bin(17,0) dcl 3-151 part_msg_ptr automatic pointer dcl 3-144 partial_message based structure level 1 unaligned dcl 3-145 request_more_message based structure level 1 packed packed unaligned dcl 3-84 trace_message_info automatic structure level 1 unaligned dcl 3-155 NAMES DECLARED BY EXPLICIT CONTEXT. ack 000140 constant entry external dcl 130 data 000215 constant entry external dcl 155 initialize 000277 constant entry external dcl 186 local_data 000612 constant entry external dcl 254 nak 000646 constant entry external dcl 278 resend 000716 constant entry external dcl 302 reset 001054 constant entry external dcl 342 send_data 001223 constant entry internal dcl 431 ref 170 send_local_data 001610 constant entry internal dcl 570 ref 270 send_modem_string 001774 constant entry internal dcl 658 ref 845 send_packet 002114 constant entry internal dcl 710 ref 146 294 331 369 392 551 setup_entry 003001 constant entry internal dcl 853 ref 142 168 199 268 290 314 390 412 supervisory 001136 constant entry external dcl 377 terminate 001171 constant entry external dcl 400 ws_packet_transmitter_ 000125 constant entry external dcl 10 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3356 3436 3012 3366 Length 4010 3012 60 336 344 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ws_packet_transmitter_ 188 external procedure is an external procedure. send_data internal procedure shares stack frame of external procedure ws_packet_transmitter_. send_local_data internal procedure shares stack frame of external procedure ws_packet_transmitter_. send_modem_string 96 internal procedure uses auto adjustable storage. send_packet 108 internal procedure uses auto adjustable storage. setup_entry internal procedure shares stack frame of external procedure ws_packet_transmitter_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME send_modem_string 000100 mask send_modem_string 000101 code send_modem_string 000102 buffer send_modem_string send_packet 000100 escidx send_packet 000101 group send_packet 000102 type send_packet 000103 i send_packet 000104 crc send_packet 000105 chr send_packet 000106 data_len send_packet 000107 packet_len send_packet 000110 packet send_packet ws_packet_transmitter_ 000100 psn ws_packet_transmitter_ 000101 type ws_packet_transmitter_ 000102 i ws_packet_transmitter_ 000104 mio_data_ptr ws_packet_transmitter_ 000106 open_struc_ptr ws_packet_transmitter_ 000110 message_len ws_packet_transmitter_ 000112 temp_seg_name ws_packet_transmitter_ 000132 type send_data 000134 send_data_ptr send_data 000136 send_psn send_data 000137 new_length send_data 000140 i send_data 000141 reset_write_flag send_data 000142 minor send_data 000152 data_ptr send_local_data 000154 node_ptr send_local_data 000156 system_free_area_ptr send_local_data THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_le_a alloc_char_temp call_ext_out_desc call_ext_out call_int_this_desc call_int_other return_mac alloc_auto_adj mpfx2 mdfx1 signal_op shorten_stack ext_entry int_entry int_entry_desc set_chars_eis translate_3 op_alloc_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_system_free_area_ hcs_$reset_ips_mask hcs_$set_ips_mask hcs_$wakeup iox_$put_chars ipc_$create_ev_chn ipc_$delete_ev_chn ipc_$mask_ev_calls ipc_$unmask_ev_calls ws_channel_$call_wakeup ws_channel_$wait_block ws_channel_$wait_wakeup ws_debug_$line ws_debug_$packet ws_timer_$reset_reset ws_timer_$reset_sender ws_tools_$ars ws_tools_$check_length ws_tools_$crc_char ws_tools_$reset_data NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 3 33 000110 3 155 000112 5 22 000120 10 000124 119 000133 130 000134 142 000153 144 000154 146 000166 147 000203 149 000207 155 000210 168 000230 170 000231 175 000246 176 000251 180 000272 186 000273 199 000310 201 000311 205 000315 206 000320 207 000321 208 000323 210 000334 215 000337 217 000351 220 000365 223 000367 224 000371 225 000373 226 000375 227 000377 228 000411 229 000423 230 000435 232 000464 233 000501 234 000505 235 000512 236 000517 237 000524 238 000531 239 000536 240 000543 241 000547 242 000551 248 000607 254 000610 268 000625 270 000626 272 000643 278 000644 290 000661 292 000662 294 000674 296 000711 302 000712 314 000731 318 000732 323 000743 326 000766 331 001005 332 001027 333 001033 334 001042 336 001050 342 001051 358 001065 362 001070 367 001073 368 001075 369 001104 370 001124 371 001131 377 001132 390 001147 392 001150 394 001166 400 001167 412 001202 414 001203 415 001206 417 001220 420 001222 431 001223 465 001225 466 001227 472 001234 477 001240 480 001244 484 001274 488 001275 489 001276 495 001302 498 001315 503 001317 511 001331 512 001334 519 001340 523 001351 527 001401 531 001402 533 001412 534 001417 536 001423 537 001433 542 001473 545 001507 549 001511 551 001526 552 001545 554 001552 556 001562 557 001572 561 001573 564 001607 570 001610 601 001612 607 001621 612 001631 613 001636 617 001640 618 001650 619 001657 620 001660 624 001663 631 001720 632 001731 633 001734 634 001736 639 001737 641 001743 646 001745 652 001772 658 001773 679 002001 691 002011 695 002037 696 002052 698 002074 700 002104 701 002106 702 002111 704 002112 710 002113 761 002127 766 002137 773 002140 781 002161 782 002164 783 002167 784 002171 785 002202 786 002216 790 002222 795 002231 797 002245 801 002263 802 002303 803 002306 804 002317 805 002325 806 002326 812 002341 813 002352 814 002353 818 002355 820 002373 821 002407 822 002410 823 002421 824 002422 825 002430 827 002431 828 002435 829 002444 831 002506 833 002550 835 002613 837 002662 839 002724 845 002765 847 003000 853 003001 867 003002 869 003005 ----------------------------------------------------------- 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