COMPILATION LISTING OF SEGMENT tty_modes Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 0936.6 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /* format: style4,delnl,insnl,^ifthendo */ 14 15 tty_modes: 16 proc (pm_wtcbp, pm_modes_infop, pm_code); 17 18 /* A procedure to handle modes changing and related trivia. */ 19 20 /* Coded 4/9/79 by J. Stern */ 21 /* Modified: 11 November 1980 by G. Palter to handle can_type and implement MCS suggestions #64 and #65 */ 22 /* Modified: 16 November 1981 by G. Palter to fix bug in interaction of init and can_type modes */ 23 /* Modified: 9/14/84 by John Mills to fix bug in enteraction of can_type and can modes */ 24 /* Modified: 9/25/84 by Robert Coren to enforce the requirement that flow control 25* characters must be set before the modes can be turned on, and to remove prefixnl from the list 26* of modes turned on by "default" mode */ 27 28 29 /****^ HISTORY COMMENTS: 30* 1) change(86-06-19,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 31* install(86-10-09,MR12.0-1181): 32* Changed to support the new tty event message format declared in 33* net_event_message.incl.pl1 which replaces tty_event_message.incl.pl1. 34* END HISTORY COMMENTS */ 35 36 37 /* Parameters */ 38 39 dcl pm_code fixed bin (35); /* error code */ 40 dcl pm_modes_infop ptr; /* ptr to modes_info structure */ 41 dcl pm_wtcbp ptr; /* ptr to wtcb of channel to which modes change applies */ 42 43 44 /* Automatic */ 45 46 dcl code fixed bin (35); 47 dcl force_sw bit (1); 48 dcl i fixed bin; 49 dcl j fixed bin; 50 dcl idx fixed bin; 51 dcl lock_keyboard bit (1) aligned; 52 dcl mclx fixed bin; 53 dcl mode_name char (32) varying; 54 dcl 1 modes_change_list aligned like mcl; 55 dcl modes_infop ptr; 56 dcl modes_len fixed bin; 57 dcl mpx_only_sw bit (1); 58 dcl off_modes (36) bit (1); 59 dcl on_modes (36) bit (1); 60 dcl saved_force_sw bit (1); 61 dcl saved_ll fixed bin; 62 dcl saved_modes bit (36); 63 dcl saved_mpx_modes char (192); 64 dcl saved_pl fixed bin; 65 dcl saved_can_type fixed bin; 66 dcl send_delay_table_sw bit (1); 67 dcl sw bit (1); 68 dcl temp_modes char (576) varying; 69 70 71 /* Based */ 72 73 dcl 1 modes_info aligned based (modes_infop), 74 2 len fixed bin, 75 2 str char (0 refer (modes_info.len)); 76 77 78 /* Constants */ 79 80 dcl NUL char (1) int static options (constant) init (""); 81 82 83 /* External static */ 84 85 dcl error_table_$bad_mode fixed bin (35) ext; 86 dcl error_table_$bigarg fixed bin (35) ext; 87 dcl error_table_$improper_data_format fixed bin (35) ext; 88 dcl error_table_$smallarg fixed bin (35) ext; 89 90 91 /* Builtins */ 92 93 dcl (addr, after, bin, hbound, index, lbound, length, ltrim, reverse, rtrim, string, substr, verify) builtin; 94 95 96 /* Entries */ 97 98 dcl pxss$ring_0_wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 99 dcl tty_index$printer_on_off entry (ptr, bit (1)); 100 dcl tty_index$send_delays entry (ptr); 101 1 1 /* BEGIN INCLUDE FILE ... mcs_modes_change_list.incl.pl1 */ 1 2 1 3 /* Created 4/9/79 by J. Stern */ 1 4 /* Modified: 10 November 1980 by G. Palter to add can_type */ 1 5 1 6 1 7 dcl mclp ptr; 1 8 dcl mcl_version_2 fixed bin int static options (constant) init (2); 1 9 1 10 dcl 1 mcl aligned based (mclp), /* modes change list */ 1 11 2 version fixed bin, /* version number of this structure (Input) */ 1 12 2 n_entries fixed bin, /* number of mode change entries (Input) */ 1 13 2 line_len fixed bin, /* new line length (-1 => no change) (Input) */ 1 14 2 page_len fixed bin, /* new page length (-1 => no change) (Input) */ 1 15 2 can_type fixed binary, /* new canonicalization type (-1 => no change) (Input) */ 1 16 2 flags, 1 17 3 init bit (1) unal, /* ON if all modes to be reinitialized (Input) */ 1 18 3 ll_error bit (1) unal, /* ON if line length error detected (Output) */ 1 19 3 pl_error bit (1) unal, /* ON if page length error detected (Output) */ 1 20 3 can_type_error bit (1) unaligned, /* ON if can_type error detected (Output) */ 1 21 3 mbz bit (32) unal, 1 22 2 entries (36) like mcle; /* one entry per mode change */ 1 23 1 24 dcl mclep ptr; 1 25 1 26 dcl 1 mcle aligned based (mclep), /* mode change list entry */ 1 27 2 mode_name char (16) unal, /* name of mode to change (Input) */ 1 28 2 flags, 1 29 3 mode_switch bit (1) unal, /* ON to turn mode on, else OFF (Input) */ 1 30 3 force bit (1) unal, /* ON to ignore errors for this mode change (Input) */ 1 31 3 mpx_mode bit (1) unal, /* ON if mode recognized by multiplexer (Output) */ 1 32 3 error bit (1) unal, /* ON if mode change is in error (Output) */ 1 33 3 mbz bit (32) unal; 1 34 1 35 1 36 /* END INCLUDE FILE ... mcs_modes_change_list.incl.pl1 */ 102 103 2 1 /* BEGIN INCLUDE FILE ... tty_mode_names.incl.pl1 */ 2 2 2 3 /* Defines internal static character strings for all legal tty modes */ 2 4 /* Created 6/17/75 by Robert Coren */ 2 5 /* modified 4/10/79 by J. Stern to add MPX_MODES */ 2 6 /* modified 8/13/79 by Robert Coren to add iflow & oflow */ 2 7 /* modified 1/21/80 by Robert Coren to add no_outp, oddp, & 8bit */ 2 8 /* modified 03/30/82 by Richard Lamson to add "ll", "pl", and "can_type" 2 9* and to reorganize modestr to be defined on MODE_NAME */ 2 10 2 11 2 12 /****^ HISTORY COMMENTS: 2 13* 1) change(88-07-05,Parisek), approve(88-07-05,MCR7928), 2 14* audit(88-07-08,Beattie), install(88-07-19,MR12.2-1061): 2 15* Changed declaration of modestr to use the "simple defining" technique 2 16* thus fixing compilation errors resulting from the use of the "isub" 2 17* value within a "isub defining" technique (defining techniques as 2 18* described in Multics PL/I Reference Manual - AM83). 2 19* END HISTORY COMMENTS */ 2 20 2 21 2 22 dcl n_modes fixed bin int static init (29); /* number of valid modes */ 2 23 2 24 declare MODE_NAME (-2:29) character (8) internal static options (constant) initial 2 25 ("ll", "pl", "can_type", /* -2 : 0 */ 2 26 "edited", "tabs", "can", "esc", /* 1 : 4 */ 2 27 "erkl", "rawi", "rawo", "red", /* 5 : 8 */ 2 28 "vertsp", "crecho", "lfecho", "tabecho", /* 9 : 12 */ 2 29 "hndlquit", "fulldpx", "echoplex", "capo", /* 13 : 16 */ 2 30 "replay", "polite", "ctl_char", "blk_xfer", /* 17 : 20 */ 2 31 "breakall", "scroll", "prefixnl", "wake_tbl", /* 21 : 24 */ 2 32 "iflow", "oflow", "no_outp", "8bit", /* 25 : 28 */ 2 33 "oddp"); /* 29 : 29 */ 2 34 2 35 2 36 declare modestr (1:29) character (8) unaligned defined (MODE_NAME (1)); 2 37 2 38 /* MPX_MODES (i) = "1"b => modestr (i) must be implemented by a multiplexer */ 2 39 2 40 dcl MPX_MODES (29) bit (1) int static options (constant) init 2 41 ("0"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, "0"b, /* edited -> red */ 2 42 "0"b, "1"b, "1"b, "1"b, "0"b, "1"b, "1"b, "0"b, /* vertsp -> capo */ 2 43 "1"b, "1"b, "0"b, "1"b, "1"b, "0"b, "1"b, "0"b, /* replay -> wake_tbl */ 2 44 "1"b, "1"b, "1"b, "1"b, "1"b); /* iflow -> oddp */ 2 45 2 46 2 47 /* END INCLUDE FILE ... tty_mode_names.incl.pl1 */ 104 105 3 1 /* BEGIN INCLUDE FILE ... tty_can_types.incl.pl1 */ 3 2 /* Created: 10 November 1980 by G. Palter */ 3 3 3 4 dcl (CAN_TYPE_OVERSTRIKE initial (1), 3 5 CAN_TYPE_REPLACE initial (2)) 3 6 fixed binary static options (constant); 3 7 3 8 dcl CAN_TYPE_NAMES (2) character (32) aligned static options (constant) initial 3 9 ("can_type=overstrike", "can_type=replace"); 3 10 3 11 /* END INCLUDE FILE ... tty_can_types.incl.pl1 */ 106 107 4 1 /* BEGIN INCLUDE FILE ... wtcb.incl.pl1 */ 4 2 4 3 4 4 /****^ HISTORY COMMENTS: 4 5* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 4 6* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 4 7* Add data needed for the uncp multiplexer (DSA gateway) interface 4 8* implementation. 4 9* END HISTORY COMMENTS */ 4 10 4 11 4 12 /* 4 13* Moved from tty_buf.incl.pl1 Aug 78 by J. Nicholls plus changes for ring 0 demultiplexing 4 14* Error code added Nov. 1982 by Robert Coren 4 15* Modified December 1984 by Robert Coren to invent "more_flags" structure and 4 16* its first flag, line_status_disabled 4 17* Reported modifications for the DN7100 interim in August 85. 4 18**/ 4 19 4 20 dcl wtcbp ptr; /* pointer to head of wtcb */ 4 21 4 22 dcl 1 wtcb based (wtcbp) aligned, /* wired terminal control block */ 4 23 2 hevent fixed bin (71) aligned, /* event channel for hangup/dialup signal */ 4 24 2 event fixed bin (71) aligned, /* users event channel, for uproc */ 4 25 4 26 2 line_status bit (72) aligned, /* actual line status sent by fnp */ 4 27 4 28 2 tcb_ptr ptr unal, /* pointer to tcb */ 4 29 2 pad1 fixed bin (35), /* formerly time dialedup */ 4 30 4 31 2 hproc bit (36) aligned, /* boss processid */ 4 32 2 uproc bit (36) aligned, /* tty user processid */ 4 33 4 34 2 baud_rate fixed bin (18) unal uns, /* baud rate of this line */ 4 35 2 line_type fixed bin (18) unal uns, /* line type for line protocol */ 4 36 4 37 2 flags unaligned, 4 38 3 listen bit (1) unaligned, /* if on, listen for dialups */ 4 39 3 dialed bit (1) unaligned, /* if on, line is dialed up */ 4 40 3 send_output bit (1) unaligned, /* on if DN355 requested more output */ 4 41 4 42 3 qenable bit (1) unaligned, /* if on, signal quits */ 4 43 3 qflag bit (1) unaligned, /* on after quit, causes writes to be ignored */ 4 44 3 end_frame bit (1) unaligned, /* write chain fills ards frame */ 4 45 4 46 3 notify_reqd bit (1) unaligned, /* if on, do notify after unlocking lock */ 4 47 3 work_reqd bit (1) unaligned, /* if on, call dn355 before returning */ 4 48 3 dialing bit (1) unaligned, /* if on, 355 is dialing a phone number */ 4 49 4 50 3 dial_status_valid bit (1) unaligned, /* if on, dial_status_code is valid */ 4 51 3 input_available bit (1) unaligned, /* input for this device is waiting in wired space */ 4 52 3 tcb_initialized bit (1) unaligned, /* if on, tcb has been initialized */ 4 53 4 54 3 wflag bit (1) unaligned, /* process blocked on output */ 4 55 3 rflag bit (1) unaligned, /* process blocked on input */ 4 56 3 wru bit (1) unaligned, /* reading answerback */ 4 57 4 58 3 hndlquit bit (1) unaligned, /* on if in hndlquit mode */ 4 59 3 count_lines bit (1) unaligned, /* on if tcb.linemax > 0 */ 4 60 3 line_status_present bit (1) unaligned, /* fnp has sent line status */ 4 61 4 62 3 sync_line bit (1) unaligned, /* channel is synchronous line type */ 4 63 3 breakall bit (1) unaligned, /* channel is in breakall mode */ 4 64 3 scroll bit (1) unaligned, /* channel is in scroll mode */ 4 65 4 66 3 negotiating_echo bit (1) unaligned, /* ring zero to echo chars. */ 4 67 3 wake_tbl bit (1) unaligned, /* on if in wake_tbl mode */ 4 68 3 allow_wakeup bit (1) unaligned, /* on to allow input wakeup in wake_tbl mode */ 4 69 4 70 3 receive_mode_device bit (1) unaligned, /* device must be told to enter receive mode */ 4 71 3 mark_set bit (1) unal, /* write_with_mark call outstanding */ 4 72 3 masked bit (1) unal, /* channel masked by FNP */ 4 73 4 74 2 dial_status_code fixed bin (8) unaligned, /* code returned by 355 after dialing a phone number */ 4 75 4 76 2 fblock fixed bin (17) unaligned, /* oldest read pointer, block */ 4 77 2 lblock fixed bin (17) unaligned, /* newest read block */ 4 78 4 79 2 fchar fixed bin (9) unsigned unaligned, /* first block char index */ 4 80 2 actline fixed bin (9) unsigned unaligned, /* line number of current line */ 4 81 2 actcol fixed bin (9) unsigned unaligned, /* tty column position */ 4 82 2 nramsgs fixed bin (9) unsigned unaligned, /* current number of read-ahead msgs */ 4 83 4 84 2 write_first fixed bin (17) unaligned, /* first write block */ 4 85 2 write_last fixed bin (17) unaligned, /* last write block */ 4 86 2 write_cnt fixed bin (17) unaligned, /* count of chars in write chain */ 4 87 2 white_col fixed bin (17) unaligned, /* column position resulting from trailing white space */ 4 88 4 89 2 max_buf_size fixed bin (9) unal uns, /* maximum-size buffer to be allocated for this channel */ 4 90 2 buffer_pad fixed bin (9) unal uns, /* amount of pad to be left in output buffers */ 4 91 2 devx fixed bin (17) unaligned, /* index into lct of channel's entry */ 4 92 2 echdp bit (18) unaligned, /* echo negotiation data ptr */ 4 93 2 waketp bit (18) unaligned, /* wakeup table offset */ 4 94 2 prompt_len fixed bin (8) unaligned, /* number of chars in prompt string */ 4 95 2 prompt char (3) unaligned, /* text of prompt message */ 4 96 2 line_delimiter char (1) unal, /* line delimiter for tty_read parse */ 4 97 2 more_flags unaligned, /* in addition to flags (above) */ 4 98 3 line_status_disabled bit (1) unaligned, /* "1"b => don't relay line_status interrupts */ 4 99 2 send_turn bit (1) unal, /* For the Dn7100 interim */ 4 100 2 pad bit (25) unal, 4 101 2 error_code fixed bin (35), /* error code returned by channel_manager to tty_interrupt */ 4 102 2 pad2 bit (36); 4 103 4 104 /* Ends on doubleword boundary */ 4 105 4 106 /* END INCLUDE FILE ... wtcb.incl.pl1 */ 108 109 5 1 /* BEGIN INCLUDE FILE ... tcb.incl.pl1 */ 5 2 5 3 /* Date Last Modified and Reason 5 4* Created 04/19/77 by J. Stern (from part of tty.incl.pl1) 5 5* Modified 2/6/78 by Robert Coren to add input_msg_size 5 6* Modified 4/18/78 by Robert Coren to add framing_chars 5 7* Modified 8/31/78 by J. Nicholls to add scroll mode 5 8* Extracted 9/12/78 by J. Stern from tty_data.incl.pl1 5 9* Modified Oct.1979 by Robert Coren to expand to 36 possible modes 5 10* Modified 1/21/80 by Robert Coren to add no_outp, oddp, & eight_bit modes 5 11* Modified 10/08/80 by Robert Coren to add meters for tty_read & tty_write 5 12* Modified: 10 November 1980 by G. Palter to add can_type and explicit padding 5 13* Modified 12/04/80 by Robert Coren to add saved copy of meters 5 14* Modified 2/24/81 by Robert Coren to add time spent in tty_read and _write 5 15* Modified April 1981 by Robert Coren to add time last dialed up 5 16**/ 5 17 5 18 dcl tcbp ptr; 5 19 5 20 dcl 1 tcb based (tcbp) aligned, /* declaration of per terminal control block */ 5 21 5 22 2 terminal_type char (32) unaligned, /* terminal type name */ 5 23 2 tables, 5 24 3 input_mvtrp bit (18) unaligned, /* rel pointer to current input mvt table */ 5 25 3 output_mvtrp bit (18) unaligned, /* rel pointer to current output mvt table */ 5 26 3 input_tctrp bit (18) unaligned, /* rel pointer to current input tct table */ 5 27 3 output_tctrp bit (18) unaligned, /* rel pointer to current output tct table */ 5 28 3 specialrp bit (18) unaligned, /* rel pointer to current special chars table */ 5 29 3 delayrp bit (18) unaligned, /* rel pointer to current delay table */ 5 30 2 default_tables, 5 31 3 df_input_mvtrp bit (18) unaligned, /* rel pointer to default input mvt table */ 5 32 3 df_output_mvtrp bit (18) unaligned, /* rel pointer to default output mvt table */ 5 33 3 df_input_tctrp bit (18) unaligned, /* rel pointer to default input tct table */ 5 34 3 df_output_tctrp bit (18) unaligned, /* rel pointer to default output tct table */ 5 35 3 df_specialrp bit (18) unaligned, /* rel pointer to default special chars table */ 5 36 3 df_delayrp bit (18) unaligned, /* rel pointer to default delay table */ 5 37 2 special_input_chars unaligned, 5 38 3 erase char (1) unaligned, /* erase character */ 5 39 3 kill char (1) unaligned, /* kill character */ 5 40 2 old_type fixed bin (17) unaligned, /* old terminal type number */ 5 41 5 42 2 modes unaligned, /* modes set by order call */ 5 43 3 edited bit (1) unaligned, /* edited output mode */ 5 44 3 tabm bit (1) unaligned, /* insert output tabs mode */ 5 45 3 canm bit (1) unaligned, /* do canonical form conversion */ 5 46 5 47 3 escm bit (1) unaligned, /* do input escape conversions */ 5 48 3 erklm bit (1) unaligned, /* do erase kill processing */ 5 49 3 rawim bit (1) unaligned, /* don't convert input */ 5 50 5 51 3 rawom bit (1) unaligned, /* don't convert output */ 5 52 3 redm bit (1) unaligned, /* has red-shift function */ 5 53 3 vertsp bit (1) unaligned, /* send real ff's and vt's if on, else escape them */ 5 54 5 55 3 echo_cr bit (1) unaligned, /* echo carriage returns */ 5 56 3 echo_lf bit (1) unaligned, /* echo line feeds */ 5 57 3 echo_tab bit (1) unaligned, /* echo tabs */ 5 58 5 59 3 hndlquit bit (1) unaligned, /* cr's on quit */ 5 60 3 full_duplex bit (1) unaligned, /* xmit and receive simultaneously */ 5 61 3 echoplex bit (1) unaligned, /* echo input characters on terminal */ 5 62 5 63 3 upper_case bit (1) unaligned, /* map lower-case output into upper-case */ 5 64 3 replay bit (1) unaligned, /* replay interrupted input */ 5 65 3 polite bit (1) unaligned, /* output must start at left margin */ 5 66 5 67 3 control bit (1) unaligned, /* accept control characters */ 5 68 3 blk_xfer bit (1) unaligned, /* block transfer or "frame" mode */ 5 69 3 breakall bit (1) unaligned, /* break on all characters */ 5 70 5 71 3 scroll bit (1) unaligned, /* scroll mode for crt terminals */ 5 72 3 prefixnl bit (1) unaligned, /* prefix output iwth nl when input interrupted */ 5 73 3 wake_tbl bit (1) unaligned, /* input wakeups determined by wakeup table */ 5 74 5 75 3 iflow bit (1) unaligned, /* input flow control */ 5 76 3 oflow bit (1) unaligned, /* output flow control */ 5 77 3 no_outp bit (1) unaligned, /* don't generate output parity */ 5 78 5 79 3 eight_bit bit (1) unaligned, /* don't strip input parity */ 5 80 3 odd_parity bit (1) unaligned, /* generate odd parity (if any) */ 5 81 5 82 3 modes_pad bit (7) unaligned, 5 83 5 84 2 id char (4) unaligned, /* terminal id */ 5 85 5 86 2 colmax fixed bin (8) unaligned, /* current maximum number of columns */ 5 87 2 linemax fixed bin (8) unaligned, /* current maximum number of lines/frame */ 5 88 2 wrt_lchar fixed bin (17) unaligned, /* char within last write block */ 5 89 5 90 2 input_msg_size fixed bin, /* maximum input message size in chars */ 5 91 2 framing_chars unaligned, 5 92 3 frame_begin char (1) unaligned, /* frame-begin character */ 5 93 3 frame_end char (1) unaligned, /* frame-end character */ 5 94 2 max_output_block fixed bin (18) unsigned unaligned, /* maximum size of output block in block_acknowledge */ 5 95 5 96 2 input_suspend_seq unaligned, /* sequence for input suspension */ 5 97 3 count fixed bin (9) unsigned, 5 98 3 chars char (3), 5 99 2 input_resume_seq unaligned, /* likewise for input resumption */ 5 100 3 count fixed bin (9) unsigned, 5 101 3 chars char (3), 5 102 5 103 2 output_suspend_etb_seq unaligned, /* sequence for output suspension or end_of_block */ 5 104 3 count fixed bin (9) unsigned, 5 105 3 chars char (3), 5 106 2 output_resume_ack_seq unaligned, /* likewise for resumption or ack */ 5 107 3 count fixed bin (9) unsigned, 5 108 3 chars char (3), 5 109 5 110 2 flags unaligned, /* tty dim flag bits */ 5 111 3 breakall_enabled bit (1) unaligned, /* channel is permitted to use breakall mode */ 5 112 3 dont_count_next bit (1) unaligned, /* next output character is escaped */ 5 113 3 keyboard_locking bit (1) unaligned, /* ON if doing keybd locking for ASCIi line type */ 5 114 3 no_printer_off bit (1) unaligned, /* reject printer_off/printer_on orders */ 5 115 3 break_char_pending bit (1) unaligned, /* break character is in preconverted buffer */ 5 116 3 uproc_attached bit (1) unaligned, /* user process has attached device */ 5 117 3 block_acknowledge bit (1) unaligned, /* block acknowledgement output protocol */ 5 118 3 flags_pad bit (27) unaligned, 5 119 5 120 2 actshift bit (2) unaligned, /* tty shift, 00 none, 01 lower, 10 upper, 11 unknown */ 5 121 5 122 2 cumulative_meters, /* continuously running meters */ 5 123 3 read_calls fixed bin (35), /* number of calls to tty_read */ 5 124 3 write_calls fixed bin (35), /* number of calls to tty_write */ 5 125 3 read_chars fixed bin (35), /* after conversion */ 5 126 3 write_chars fixed bin (35), /* before conversion */ 5 127 3 read_time fixed bin (71), /* total time spent in tty_read */ 5 128 3 write_time fixed bin (71), /* total time spent in tty_write */ 5 129 2 saved_meters like tcb.cumulative_meters, /* meters saved at last dialup */ 5 130 5 131 2 can_type fixed binary (9) unaligned unsigned, /* type of canonicalization to use on this channel */ 5 132 2 pad1 bit (27) unaligned, /* to word boundary */ 5 133 2 time_dialed fixed bin (71); /* clock time of last copy_meters order */ 5 134 5 135 /* END INCLUDE FILE ... tcb.incl.pl1 */ 110 111 6 1 /* BEGIN INCLUDE FILE ... net_event_message.incl.pl1 */ 6 2 6 3 /****^ HISTORY COMMENTS: 6 4* 1) change(86-07-30,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 6 5* install(86-10-09,MR12.0-1181): 6 6* This include file was formerly tty_event_message.incl.pl1. It has been 6 7* updated with different fields and new constants, and renamed to 6 8* net_event_message.incl.pl1 6 9* 2) change(87-04-20,GDixon), approve(87-07-13,MCR7694), 6 10* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 6 11* Add NETWORK_TYPE_VALUES array. 6 12* END HISTORY COMMENTS */ 6 13 6 14 /* describes event message passed with wakeups from the tty DIM */ 6 15 /* Created 5/24/76 by Robert S. Coren */ 6 16 6 17 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 6 18 6 19 dcl net_event_message_arg fixed bin (71); /* For calling IPC */ 6 20 dcl NET_EVENT_MESSAGE_VERSION_1 bit (2) internal static options (constant) init ("10"b); 6 21 6 22 dcl 1 net_event_message aligned based (addr (net_event_message_arg)), 6 23 2 version bit (2) unaligned, /* Currently version 1 */ 6 24 2 reason bit (16) unaligned, /* Additional info about the event */ 6 25 2 pad bit (6) unaligned, /* Must be zero */ 6 26 2 network_type fixed bin (4) unsigned unaligned, 6 27 /* See below for constants */ 6 28 2 type fixed bin (8) unsigned unaligned, 6 29 /* Type of interrupt, see below */ 6 30 2 handle fixed bin (35) aligned;/* Caller's handle (devx for MCS, handle for DSA) */ 6 31 6 32 /* Network type constants */ 6 33 6 34 dcl MCS_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (0); 6 35 dcl DSA_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (1); 6 36 dcl MOWSE_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (2); 6 37 6 38 dcl NETWORK_TYPE_VALUES (0:2) char(8) varying int static options(constant) init( 6 39 "MCS", 6 40 "DSA", 6 41 "MOWSE"); 6 42 6 43 6 44 /* MCS event message type constants */ 6 45 6 46 dcl MAX_MCS_EVENT_MSG_TYPE fixed bin internal static options (constant) init (8); 6 47 6 48 dcl MCS_UNSPECIFIED_MSG fixed bin internal static options (constant) init (0); 6 49 /* used for "start" order, etc. */ 6 50 dcl MCS_DIALUP_MSG fixed bin internal static options (constant) init (1); 6 51 /* dialup */ 6 52 dcl MCS_HANGUP_MSG fixed bin internal static options (constant) init (2); 6 53 /* hangup */ 6 54 dcl MCS_DIALOUT_MSG fixed bin internal static options (constant) init (3); 6 55 /* dialout status returned */ 6 56 dcl MCS_QUIT_MSG fixed bin internal static options (constant) init (4); 6 57 /* quit */ 6 58 dcl MCS_READ_MSG fixed bin internal static options (constant) init (5); 6 59 /* input arrived */ 6 60 dcl MCS_WRITE_MSG fixed bin internal static options (constant) init (6); 6 61 /* output completed */ 6 62 dcl MCS_LINE_STATUS_MSG fixed bin internal static options (constant) init (7); 6 63 /* control tables sent status */ 6 64 dcl MCS_MASKED_MSG fixed bin internal static options (constant) init (8); 6 65 /* channel masked by FNP */ 6 66 6 67 dcl MCS_MSG_TYPE_TO_PNAME (0:8) char (20) internal static options (constant) init ("unspecified", 6 68 /* 0 */ 6 69 "dialup", /* 1 */ 6 70 "hangup", /* 2 */ 6 71 "dialout status", /* 3 */ 6 72 "quit", /* 4 */ 6 73 "read", /* 5 */ 6 74 "write", /* 6 */ 6 75 "line status", /* 7 */ 6 76 "masked"); /* 8 */ 6 77 6 78 /* DSA event message type constants */ 6 79 6 80 dcl MAX_DSA_EVENT_MSG_TYPE fixed bin internal static options (constant) init (19); 6 81 6 82 dcl DSA_UNSPECIFIED_MSG fixed bin (8) uns internal static options (constant) init (0); 6 83 dcl DSA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (1); 6 84 dcl DSA_DATA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (2); 6 85 dcl DSA_DEMAND_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (3); 6 86 dcl DSA_DEMAND_TURN_MSG fixed bin (8) uns internal static options (constant) init (4); 6 87 dcl DSA_DEMAND_TURN_ACK_MSG fixed bin (8) uns internal static options (constant) init (5); 6 88 dcl DSA_PURGE_MSG fixed bin (8) uns internal static options (constant) init (6); 6 89 dcl DSA_RECOVER_MSG fixed bin (8) uns internal static options (constant) init (7); 6 90 dcl DSA_RECOVER_ACK_MSG fixed bin (8) uns internal static options (constant) init (8); 6 91 dcl DSA_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (9); 6 92 dcl DSA_RESUME_MSG fixed bin (8) uns internal static options (constant) init (10); 6 93 dcl DSA_RESUME_ACK_MSG fixed bin (8) uns internal static options (constant) init (11); 6 94 dcl DSA_SUSPEND_MSG fixed bin (8) uns internal static options (constant) init (12); 6 95 dcl DSA_SUSPEND_ACK_MSG fixed bin (8) uns internal static options (constant) init (13); 6 96 dcl DSA_TERM_ABNORMAL_MSG fixed bin (8) uns internal static options (constant) init (14); 6 97 dcl DSA_ESTABLISHMENT_MSG fixed bin (8) uns internal static options (constant) init (15); 6 98 dcl DSA_TERMINATED_MSG fixed bin (8) uns internal static options (constant) init (16); 6 99 dcl DSA_USER_UNASSIGN_MSG fixed bin (8) uns internal static options (constant) init (17); 6 100 dcl DSA_DATA_INPUT_MSG fixed bin (8) uns internal static options (constant) init (18); 6 101 dcl DSA_DATA_OUTPUT_MSG fixed bin (8) uns internal static options (constant) init (19); 6 102 6 103 dcl DSA_MSG_TYPE_TO_PNAME (0:19) char (20) internal static options (constant) init ("unspecified", 6 104 /* 0 */ 6 105 "attention", /* 1 */ 6 106 "data_attention", /* 2 */ 6 107 "demand_release_sru", /* 3 */ 6 108 "demand_turn", /* 4 */ 6 109 "demand_turn_ack", /* 5 */ 6 110 "purge", /* 6 */ 6 111 "recover", /* 7 */ 6 112 "recover_ack", /* 8 */ 6 113 "release_sru", /* 9 */ 6 114 "resume", /* 10 */ 6 115 "resume_ack", /* 11 */ 6 116 "suspend", /* 12 */ 6 117 "suspend_ack", /* 13 */ 6 118 "terminate_abnormal", /* 14 */ 6 119 "establishment", /* 15 */ 6 120 "terminated", /* 16 */ 6 121 "user_unassign", /* 17 */ 6 122 "data input", /* 18 */ 6 123 "data output"); /* 19 */ 6 124 6 125 /* END INCLUDE FILE ... net_event_message.incl.pl1 */ 112 113 7 1 /* BEGIN INCLUDE FILE ... channel_manager_dcls.incl.pl1 */ 7 2 7 3 /* Created 8/25/78 by J. Stern */ 7 4 7 5 7 6 /* call channel_manager$read (devx, chain_ptr, more_input_flag, code) */ 7 7 dcl channel_manager$read entry (fixed bin, ptr, bit (1) aligned, fixed bin (35)); 7 8 7 9 /* call channel_manager$write (devx, output_ptr, code) */ 7 10 dcl channel_manager$write entry (fixed bin, ptr, fixed bin (35)); 7 11 7 12 /* call channel_manager$control (devx, control_type, info_ptr, code) */ 7 13 dcl channel_manager$control entry (fixed bin, char (*), ptr, fixed bin (35)); 7 14 7 15 /* call channel_manager$set_modes (devx, mode_change_list_ptr, code) */ 7 16 dcl channel_manager$set_modes entry (fixed bin, ptr, fixed bin (35)); 7 17 7 18 /* call channel_manager$check_modes (devx, mode_change_list_ptr, code) */ 7 19 dcl channel_manager$check_modes entry (fixed bin, ptr, fixed bin (35)); 7 20 7 21 /* call channel_manager$get_modes (devx, modes, code) */ 7 22 dcl channel_manager$get_modes entry (fixed bin, char (*), fixed bin (35)); 7 23 7 24 /* call channel_manager$interrupt (devx, int_type, int_data) */ 7 25 dcl channel_manager$interrupt entry (fixed bin, fixed bin, bit (72) aligned); 7 26 7 27 /* call channel_manager$interrupt_later (devx, int_type, int_data) */ 7 28 dcl channel_manager$interrupt_later entry (fixed bin, fixed bin, bit (72) aligned); 7 29 7 30 /* call channel_manager$queued_interrupt (devx, int_type, int_data) */ 7 31 dcl channel_manager$queued_interrupt entry (fixed bin, fixed bin, bit (72) aligned); 7 32 7 33 7 34 /* END INCLUDE FILE ... channel_manager_dcls.incl.pl1 */ 114 115 8 1 /* BEGIN INCLUDE FILE mcs_echo_neg_sys.incl.pl1 Bernard Greenberg 1/20/79 */ 8 2 8 3 /* Modified 6/29/79 by BSG for FNP echo negotiation */ 8 4 8 5 8 6 /****^ HISTORY COMMENTS: 8 7* 1) change(86-04-23,Coren), approve(86-04-23,MCR7300), 8 8* audit(86-05-19,Beattie), install(86-07-08,MR12.0-1089): 8 9* To increase size of break table and to add named constants for the size. 8 10* END HISTORY COMMENTS */ 8 11 8 12 8 13 /* This include file defines the wired structure for MCS echo negotiation */ 8 14 8 15 dcl echo_datap ptr; /* Wired echo data ptr */ 8 16 dcl WIRED_ECHO_BREAK_SIZE fixed bin internal static options (constant) init (255); 8 17 dcl WORDS_IN_ECHO_BREAK_TABLE fixed bin internal static options (constant) init (8); 8 18 8 19 dcl 1 echo_data based (echo_datap) aligned, /* Wired echo data */ 8 20 2 break (0: 255) bit (1) unaligned, /* 1 = break on this character */ 8 21 2 synchronized bit (1) unal, /* Mux echo negotiation is synchronized */ 8 22 2 mux_will_echnego bit (1) unal, /* Multiplexer accepted start_neg_echnego */ 8 23 2 echo_start_pending_sndopt bit (1) unal, /* Send start_n_e when SEND_OUTPUT comes */ 8 24 2 awaiting_start_sync bit (1) unal, /* Awaiting mux reply ACK for start */ 8 25 2 awaiting_stop_sync bit (1) unal, /* Awaiting mux reply ACK for stop */ 8 26 2 pad bit (27) unaligned, 8 27 2 sync_ctr fixed bin (35), /* Protocol ctr for MUX echo neg */ 8 28 2 chars_echoed fixed bin (9) unsigned unaligned, /* Count of chars echoed */ 8 29 2 horiz_room_left fixed bin (9) unsigned unaligned, /* Room left on line */ 8 30 2 rubout_trigger_chars (2) unaligned, /* Characters that cause rubout action */ 8 31 3 char char (1) unaligned, 8 32 2 rubout_sequence_length fixed bin (4) unsigned unaligned, /* Length of rubout sequence, output */ 8 33 2 rubout_pad_count fixed bin (4) unsigned unaligned, /* Count of pads needed */ 8 34 2 buffer_rubouts bit (1) unaligned, /* 1 = put rubouts and rubbed out in buffer */ 8 35 2 rubout_sequence char (12) unaligned; /* Actual rubout sequence */ 8 36 8 37 /* END INCLUDE FILE mcs_echo_neg_sys.incl.pl1 */ 116 117 118 mpx_only_sw = "0"b; 119 go to join; 120 121 122 /* for this entry, modes are merely forwarded to the multiplexer 123* no local action is taken and no old modes are returned 124**/ 125 126 mpx_only: 127 entry (pm_wtcbp, pm_modes_infop, pm_code); 128 129 mpx_only_sw = "1"b; 130 131 join: 132 pm_code = 0; 133 wtcbp = pm_wtcbp; 134 tcbp = wtcb.tcb_ptr; 135 modes_infop = pm_modes_infop; 136 137 saved_modes = string (tcb.modes); /* save current modes */ 138 saved_ll = tcb.colmax; 139 saved_pl = tcb.linemax; 140 saved_can_type = tcb.can_type; 141 142 /* initialize modes change list */ 143 144 mclp = addr (modes_change_list); 145 mcl.version = mcl_version_2; 146 mcl.n_entries = 0; 147 mcl.line_len = -1; 148 mcl.page_len = -1; 149 mcl.can_type = -1; 150 string (mcl.flags) = ""b; 151 152 /* parse the modes string */ 153 154 modes_len = length (rtrim (modes_info.str)); 155 if modes_len > 0 156 then if substr (modes_info.str, modes_len, 1) = "." 157 then modes_len = modes_len - 1; 158 159 if modes_len <= 0 160 then do; 161 if mpx_only_sw 162 then return; 163 call get_mpx_modes; 164 go to build_old_modes; 165 end; 166 167 if index (substr (modes_info.str, 1, modes_len), ".") ^= 0 168 /* imbedded period */ 169 | index (substr (modes_info.str, 1, modes_len), " ") ^= 0 170 /* imbedded space */ 171 then go to bad_format; 172 173 force_sw = "0"b; 174 mclx = 0; 175 i = 1; 176 do while (i <= modes_len); /* scan modes string until reaching the end */ 177 j = index (substr (modes_info.str, i), ",") - 1; 178 /* find next mode boundary */ 179 if j = -1 /* end of string */ 180 then j = modes_len - (i - 1); 181 if j <= 0 /* skinny mode */ 182 then go to bad_format; 183 184 if substr (modes_info.str, i, 1) = "^" /* OFF indicator */ 185 then do; 186 i = i + 1; 187 j = j - 1; 188 if j <= 0 189 then go to bad_format; 190 sw = "0"b; 191 end; 192 else sw = "1"b; /* if not OFF, then ON */ 193 194 mode_name = substr (modes_info.str, i, j); 195 if j > length (mode_name) 196 then go to bad_mode; 197 if mode_name = "init" 198 then do; 199 if ^sw 200 then go to bad_mode; 201 mcl.init = "1"b; 202 mcl.line_len = 50; 203 mcl.page_len = 0; 204 mcl.can_type = CAN_TYPE_OVERSTRIKE; 205 end; 206 else if mode_name = "force" 207 then force_sw = sw; 208 else if mode_name = "default" 209 then do; 210 if ^sw 211 then go to bad_mode; 212 saved_force_sw = force_sw; 213 force_sw = "1"b; /* force all default modes */ 214 do mode_name = "esc", "can", "erkl"; /* add default ON modes */ 215 call add_mode_change; 216 end; 217 sw = "0"b; 218 do mode_name = "rawi", "rawo", "breakall", "wake_tbl"; 219 /* add default OFF modes */ 220 call add_mode_change; 221 end; 222 force_sw = saved_force_sw; 223 end; 224 else if substr (mode_name, 1, 2) = "ll" 225 then mcl.line_len = convert_len (); 226 else if substr (mode_name, 1, 2) = "pl" 227 then mcl.page_len = convert_len (); 228 else if length (mode_name) > 9 /* to ensure validity of substr */ 229 & (substr (mode_name, 1, 9) = "can_type=") 230 then do; 231 if ^sw 232 then go to bad_mode; 233 mcl.can_type = -1; /* about to get a new value */ 234 do idx = lbound (CAN_TYPE_NAMES, 1) to hbound (CAN_TYPE_NAMES, 1) while (mcl.can_type = -1); 235 if (mode_name = CAN_TYPE_NAMES (idx)) 236 then mcl.can_type = idx; /* found it */ 237 end; 238 if (mcl.can_type = -1) 239 then /* don't recognize the user's canonicalization type */ 240 go to bad_mode; 241 end; 242 else call add_mode_change; 243 244 i = i + j + 1; /* skip to next mode */ 245 end; 246 mcl.n_entries = mclx; /* fill in mode change count */ 247 248 /* let multiplexer check mode changes */ 249 250 call channel_manager$check_modes ((wtcb.devx), mclp, code); 251 if code ^= 0 252 then if code ^= error_table_$bad_mode /* if bad_mode, look for more errors before returning */ 253 then do; 254 pm_code = code; 255 return; 256 end; 257 258 /* find modes that we must change rather than multiplexer */ 259 260 send_delay_table_sw = "0"b; 261 on_modes (*) = "0"b; 262 off_modes (*) = "0"b; 263 if mcl.init 264 then off_modes (*) = "1"b; 265 266 do mclx = 1 to mcl.n_entries; 267 mclep = addr (mcl.entries (mclx)); 268 do i = 1 to n_modes while (modestr (i) ^= mcle.mode_name); 269 end; 270 if i <= n_modes /* this is a standard mode */ 271 then do; 272 if MPX_MODES (i) & ^mcle.mpx_mode /* need multiplexer help for this mode */ 273 then do; 274 if mcle.mode_switch ^= substr (saved_modes, i, 1) 275 /* this is a real change */ 276 then if ^mcle.force 277 then go to mode_error; 278 end; 279 else do; 280 281 if substr (saved_modes, i, 1) = mcle.mode_switch & ^mpx_only_sw & ^mcl.init 282 /* this is not a change */ 283 then mcle.mpx_mode = "0"b; /* so make sure multiplexer doesn't try to do it */ 284 285 else if mcle.mode_switch 286 then do; /* be careful when turning on certain modes */ 287 if mcle.mode_name = "echoplex" | mcle.mode_name = "crecho" | mcle.mode_name = "lfecho" 288 then send_delay_table_sw = "1"b; 289 else if mcle.mode_name = "blk_xfer" 290 then do; 291 if tcb.frame_end = NUL 292 then go to mode_error; 293 end; 294 295 else if mcle.mode_name = "oflow" 296 then do; /* make sure characters have been set */ 297 if tcb.output_suspend_etb_seq.count = 0 | tcb.output_resume_ack_seq.count = 0 298 then go to mode_error; 299 end; 300 301 else if mcle.mode_name = "iflow" 302 then do; /* as above */ 303 if tcb.input_suspend_seq.count = 0 | tcb.input_resume_seq.count = 0 304 then go to mode_error; 305 end; 306 307 else if mcle.mode_name = "wake_tbl" 308 then do; 309 if wtcb.waketp = ""b 310 then go to mode_error; 311 end; 312 end; 313 314 on_modes (i) = mcle.mode_switch; 315 off_modes (i) = ^mcle.mode_switch; 316 end; 317 end; 318 else if ^mcle.mpx_mode /* nobody knows this mode */ 319 then do; 320 if ^mcle.force 321 then do; 322 mode_error: 323 mcle.error = "1"b; 324 code = error_table_$bad_mode; 325 end; 326 end; 327 end; 328 if code ^= 0 329 then go to mcl_error; /* take care of all accumulated mode errors */ 330 331 /* now go change the modes */ 332 333 if ^mpx_only_sw 334 then call get_mpx_modes; 335 336 call channel_manager$set_modes ((wtcb.devx), mclp, code); 337 if code ^= 0 338 then do; 339 if code = error_table_$bad_mode 340 then go to mcl_error; 341 pm_code = code; 342 return; 343 end; 344 if mpx_only_sw 345 then return; 346 347 if send_delay_table_sw 348 then call tty_index$send_delays (wtcbp); 349 350 do j = 1 to n_modes; /* we've checked the mode string, now implement it */ 351 if on_modes (j) 352 then sw = "1"b; 353 else if off_modes (j) 354 then sw = "0"b; 355 else go to end_of_mode; 356 if substr (saved_modes, j, 1) = sw /* no change to this mode */ 357 then go to end_of_mode; 358 359 substr (string (tcb.modes), j, 1) = sw; 360 go to set_modes (j); 361 362 set_modes (13): /* hndlquit */ 363 wtcb.flags.hndlquit = sw; 364 365 set_modes (14): /* full_duplex */ 366 if tcb.keyboard_locking 367 then do; /* turn keyboard locking on/off if appropriate */ 368 lock_keyboard = ^sw; /* fulldpx ON => unlock keyboard and vice versa */ 369 call channel_manager$control ((wtcb.devx), "lock", addr (lock_keyboard), code); 370 end; 371 go to end_of_mode; 372 373 set_modes (15): /* echoplex */ 374 call tty_index$printer_on_off (wtcbp, ^sw); 375 go to end_of_mode; 376 377 set_modes (21): /* breakall */ 378 wtcb.flags.breakall = sw; 379 if sw = "0"b 380 then do; /* Turn off echnego */ 381 wtcb.negotiating_echo = "0"b; 382 if wtcb.echdp ^= "000000"b3 383 then do; 384 echo_datap = ptr (wtcbp, wtcb.echdp); 385 echo_data.synchronized = "0"b; 386 end; 387 end; 388 go to end_of_mode; 389 390 set_modes (22): /* scroll */ 391 wtcb.flags.scroll = sw; 392 go to end_of_mode; 393 394 set_modes (24): /* wake_tbl */ 395 wtcb.flags.wake_tbl = sw; 396 wtcb.allow_wakeup = "0"b; 397 if wtcb.rflag & (wtcb.fblock ^= 0) /* waiting for wakeup and has input */ 398 then do; /* play it safe, send wakeup now */ 399 unspec (net_event_message) = "0"b; 400 net_event_message.version = NET_EVENT_MESSAGE_VERSION_1; 401 net_event_message.network_type = MCS_NETWORK_TYPE; 402 net_event_message.handle = wtcb.devx; 403 net_event_message.type = MCS_READ_MSG; 404 call pxss$ring_0_wakeup (wtcb.uproc, wtcb.event, net_event_message_arg, code); 405 end; 406 go to end_of_mode; 407 408 set_modes (1): 409 set_modes (2): 410 set_modes (3): 411 set_modes (4): 412 set_modes (5): 413 set_modes (6): 414 set_modes (7): 415 set_modes (8): 416 set_modes (9): 417 set_modes (10): 418 set_modes (11): 419 set_modes (12): 420 set_modes (16): 421 set_modes (17): 422 set_modes (18): 423 set_modes (19): 424 set_modes (20): 425 set_modes (23): 426 set_modes (25): 427 set_modes (26): 428 set_modes (27): 429 set_modes (28): 430 set_modes (29): 431 end_of_mode: 432 end; 433 434 if mcl.line_len ^= -1 435 then tcb.colmax = mcl.line_len; 436 if mcl.page_len ^= -1 437 then do; 438 tcb.linemax = mcl.page_len; 439 wtcb.count_lines = (mcl.page_len ^= 0); 440 end; 441 if mcl.can_type ^= -1 442 then tcb.can_type = mcl.can_type; 443 444 445 /* build string of old modes to return */ 446 447 build_old_modes: 448 temp_modes = ""; 449 call append_ll (saved_ll); 450 call append_pl (saved_pl); 451 call append_can_type (saved_can_type); 452 453 do i = 1 to n_modes; 454 call append_mode ((modestr (i)), substr (saved_modes, i, 1)); 455 end; 456 457 if saved_mpx_modes ^= "" 458 then temp_modes = temp_modes || "," || rtrim (saved_mpx_modes); 459 temp_modes = temp_modes || "."; 460 461 modes_info.str = temp_modes; 462 if length (temp_modes) > modes_info.len 463 then do; /* doesn't fit: truncate to last complete mode */ 464 idx = modes_info.len - index (reverse (modes_info.str), ",") + 1; 465 if (idx = modes_info.len + 1) 466 then modes_info.str = ""; /* not even the first mode fits */ 467 else substr (modes_info.str, idx) = "."; /* truncate mode string at last comma */ 468 pm_code = error_table_$smallarg; 469 end; 470 471 return; 472 473 474 475 bad_format: 476 pm_code = error_table_$improper_data_format; 477 return; 478 479 bad_mode: 480 pm_code = error_table_$bad_mode; 481 if sw 482 then modes_info.str = mode_name; 483 else modes_info.str = "^" || mode_name; 484 return; 485 486 mcl_error: 487 pm_code = error_table_$bad_mode; 488 temp_modes = ""; 489 if mcl.flags.ll_error 490 then call append_ll (mcl.line_len); 491 if mcl.flags.pl_error 492 then call append_pl (mcl.page_len); 493 if mcl.flags.can_type_error 494 then call append_can_type (mcl.can_type); 495 do i = 1 to mcl.n_entries; 496 mclep = addr (mcl.entries (i)); 497 if mcle.error 498 then call append_mode (mcle.mode_name, mcle.mode_switch); 499 end; 500 modes_info.str = temp_modes; 501 return; 502 503 error_exit: 504 return; 505 506 /* subroutine to add an entry to the mode change list */ 507 508 add_mode_change: 509 proc; 510 511 dcl i fixed bin; 512 513 /* avoid duplicate entries for the same mode */ 514 515 do i = 1 to mclx while (mcl.entries (i).mode_name ^= mode_name); 516 end; 517 if i > mclx /* not a repeat */ 518 then do; 519 mclx = i; 520 if mclx > hbound (modes_change_list.entries, 1) 521 then do; 522 pm_code = error_table_$bigarg; 523 go to error_exit; 524 end; 525 end; 526 527 mclep = addr (mcl.entries (i)); 528 if mclx = i /* first time for this mode */ 529 then do; 530 mcle.mode_name = mode_name; 531 string (mcle.flags) = ""b; 532 end; 533 mcle.mode_switch = sw; 534 mcle.force = force_sw; 535 536 end; 537 538 539 540 /* subroutine to get multiplexer modes */ 541 542 get_mpx_modes: 543 proc; 544 545 call channel_manager$get_modes ((wtcb.devx), saved_mpx_modes, code); 546 if code ^= 0 547 then do; 548 pm_code = code; 549 go to error_exit; 550 end; 551 552 end; 553 554 /* subroutine to convert from chars to fixed bin */ 555 556 convert_len: 557 proc returns (fixed bin); 558 559 dcl len fixed bin; 560 dcl size condition; 561 562 if ^sw 563 then do; 564 if length (mode_name) > 2 565 then go to bad_mode; 566 return (0); 567 end; 568 569 if length (mode_name) < 3 570 then go to bad_mode; 571 if verify (substr (mode_name, 3), "0123456789") ^= 0 572 then go to bad_mode; 573 574 on size go to bad_mode; 575 len = bin (substr (mode_name, 3), 17); 576 revert size; 577 if len ^= 0 578 then if len < 5 | len > 255 579 then go to bad_mode; 580 581 return (len); 582 end; 583 584 585 586 /* subroutine to append mode to mode string */ 587 588 append_mode: 589 proc (name, switch); 590 591 dcl name char (*); 592 dcl switch bit (1); 593 594 if length (temp_modes) > 0 595 then temp_modes = temp_modes || ","; 596 if ^switch 597 then temp_modes = temp_modes || "^"; 598 temp_modes = temp_modes || rtrim (name); 599 600 return; 601 end; 602 603 604 605 /* subroutine to append can_type mode to mode string */ 606 607 append_can_type: 608 procedure (P_can_type); 609 610 dcl P_can_type fixed binary parameter; 611 612 if length (temp_modes) > 0 613 then temp_modes = temp_modes || ","; 614 615 if (P_can_type < lbound (CAN_TYPE_NAMES, 1)) | (P_can_type > hbound (CAN_TYPE_NAMES, 1)) 616 then temp_modes = temp_modes || rtrim (CAN_TYPE_NAMES (lbound (CAN_TYPE_NAMES, 1))); 617 else temp_modes = temp_modes || rtrim (CAN_TYPE_NAMES (P_can_type)); 618 619 return; 620 621 end append_can_type; 622 623 /* subroutine to append line length to mode string */ 624 625 append_ll: 626 proc (ll); 627 628 dcl ll fixed bin; 629 dcl pic999 picture "999"; 630 631 if length (temp_modes) > 0 632 then temp_modes = temp_modes || ","; 633 if ll = 0 634 then temp_modes = temp_modes || "^ll"; 635 else do; 636 pic999 = ll; 637 temp_modes = temp_modes || "ll" || ltrim (pic999, "0"); 638 end; 639 640 end; 641 642 643 644 /* subroutine to append page length to mode string */ 645 646 append_pl: 647 proc (pl); 648 649 dcl pl fixed bin; 650 dcl pic999 picture "999"; 651 652 if length (temp_modes) > 0 653 then temp_modes = temp_modes || ","; 654 if pl = 0 655 then temp_modes = temp_modes || "^pl"; 656 else do; 657 pic999 = pl; 658 temp_modes = temp_modes || "pl" || ltrim (pic999, "0"); 659 end; 660 end; 661 662 663 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0826.9 tty_modes.pl1 >spec>install>1112>tty_modes.pl1 102 1 03/19/81 1131.8 mcs_modes_change_list.incl.pl1 >ldd>include>mcs_modes_change_list.incl.pl1 104 2 07/21/88 2036.0 tty_mode_names.incl.pl1 >ldd>include>tty_mode_names.incl.pl1 106 3 03/19/81 1206.8 tty_can_types.incl.pl1 >ldd>include>tty_can_types.incl.pl1 108 4 07/21/88 2036.0 wtcb.incl.pl1 >ldd>include>wtcb.incl.pl1 110 5 06/18/81 0900.8 tcb.incl.pl1 >ldd>include>tcb.incl.pl1 112 6 08/06/87 0913.5 net_event_message.incl.pl1 >ldd>include>net_event_message.incl.pl1 114 7 05/06/80 0958.2 channel_manager_dcls.incl.pl1 >ldd>include>channel_manager_dcls.incl.pl1 116 8 07/10/86 2015.0 mcs_echo_neg_sys.incl.pl1 >ldd>include>mcs_echo_neg_sys.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. CAN_TYPE_NAMES 000035 constant char(32) initial array dcl 3-8 ref 234 234 235 615 615 615 615 617 CAN_TYPE_OVERSTRIKE constant fixed bin(17,0) initial dcl 3-4 ref 204 MCS_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 6-34 ref 401 MCS_READ_MSG constant fixed bin(17,0) initial dcl 6-58 ref 403 MODE_NAME 000056 constant char(8) initial array packed unaligned dcl 2-24 ref 268 268 454 454 MPX_MODES 000055 constant bit(1) initial array packed unaligned dcl 2-40 ref 272 NET_EVENT_MESSAGE_VERSION_1 constant bit(2) initial packed unaligned dcl 6-20 ref 400 NUL constant char(1) initial packed unaligned dcl 80 ref 291 P_can_type parameter fixed bin(17,0) dcl 610 ref 607 615 615 617 addr builtin function dcl 93 ref 144 267 369 369 399 400 401 402 403 496 527 allow_wakeup 13(23) based bit(1) level 3 packed packed unaligned dcl 4-22 set ref 396* bin builtin function dcl 93 ref 575 breakall 13(19) based bit(1) level 3 packed packed unaligned dcl 4-22 set ref 377* can_type 4 based fixed bin(17,0) level 2 in structure "mcl" dcl 1-10 in procedure "tty_modes" set ref 149* 204* 233* 234 235* 238 441 441 493* can_type 52 based fixed bin(9,0) level 2 in structure "tcb" packed packed unsigned unaligned dcl 5-20 in procedure "tty_modes" set ref 140 441* can_type_error 5(03) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 493 channel_manager$check_modes 000032 constant entry external dcl 7-19 ref 250 channel_manager$control 000026 constant entry external dcl 7-13 ref 369 channel_manager$get_modes 000034 constant entry external dcl 7-22 ref 545 channel_manager$set_modes 000030 constant entry external dcl 7-16 ref 336 code 000100 automatic fixed bin(35,0) dcl 46 set ref 250* 251 251 254 324* 328 336* 337 339 341 369* 404* 545* 546 548 colmax 21 based fixed bin(8,0) level 2 packed packed unaligned dcl 5-20 set ref 138 434* count 26 based fixed bin(9,0) level 3 in structure "tcb" packed packed unsigned unaligned dcl 5-20 in procedure "tty_modes" ref 297 count 25 based fixed bin(9,0) level 3 in structure "tcb" packed packed unsigned unaligned dcl 5-20 in procedure "tty_modes" ref 303 count 24 based fixed bin(9,0) level 3 in structure "tcb" packed packed unsigned unaligned dcl 5-20 in procedure "tty_modes" ref 303 count 27 based fixed bin(9,0) level 3 in structure "tcb" packed packed unsigned unaligned dcl 5-20 in procedure "tty_modes" ref 297 count_lines 13(16) based bit(1) level 3 packed packed unaligned dcl 4-22 set ref 439* cumulative_meters 32 based structure level 2 dcl 5-20 devx 20(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 4-22 ref 250 336 369 402 545 echdp 21 based bit(18) level 2 packed packed unaligned dcl 4-22 ref 382 384 echo_data based structure level 1 dcl 8-19 echo_datap 000742 automatic pointer dcl 8-15 set ref 384* 385 entries 6 000120 automatic structure array level 2 in structure "modes_change_list" dcl 54 in procedure "tty_modes" set ref 520 entries 6 based structure array level 2 in structure "mcl" dcl 1-10 in procedure "tty_modes" set ref 267 496 527 error 4(03) based bit(1) level 3 packed packed unaligned dcl 1-26 set ref 322* 497 error_table_$bad_mode 000010 external static fixed bin(35,0) dcl 85 ref 251 324 339 479 486 error_table_$bigarg 000012 external static fixed bin(35,0) dcl 86 ref 522 error_table_$improper_data_format 000014 external static fixed bin(35,0) dcl 87 ref 475 error_table_$smallarg 000016 external static fixed bin(35,0) dcl 88 ref 468 event 2 based fixed bin(71,0) level 2 dcl 4-22 set ref 404* fblock 14 based fixed bin(17,0) level 2 packed packed unaligned dcl 4-22 ref 397 flags 30 based structure level 2 in structure "tcb" packed packed unaligned dcl 5-20 in procedure "tty_modes" flags 5 based structure level 2 in structure "mcl" dcl 1-10 in procedure "tty_modes" set ref 150* flags 4 based structure level 2 in structure "mcle" dcl 1-26 in procedure "tty_modes" set ref 531* flags 13 based structure level 2 in structure "wtcb" packed packed unaligned dcl 4-22 in procedure "tty_modes" force 4(01) based bit(1) level 3 packed packed unaligned dcl 1-26 set ref 274 320 534* force_sw 000101 automatic bit(1) packed unaligned dcl 47 set ref 173* 206* 212 213* 222* 534 frame_end 23(09) based char(1) level 3 packed packed unaligned dcl 5-20 ref 291 framing_chars 23 based structure level 2 packed packed unaligned dcl 5-20 handle 1 based fixed bin(35,0) level 2 dcl 6-22 set ref 402* hbound builtin function dcl 93 ref 234 520 615 hndlquit 13(15) based bit(1) level 3 packed packed unaligned dcl 4-22 set ref 362* i 000764 automatic fixed bin(17,0) dcl 511 in procedure "add_mode_change" set ref 515* 515* 517 519 527 528 i 000102 automatic fixed bin(17,0) dcl 48 in procedure "tty_modes" set ref 175* 176 177 179 184 186* 186 194 244* 244 268* 268* 270 272 274 281 314 315 453* 454 454 454* 495* 496* idx 000104 automatic fixed bin(17,0) dcl 50 set ref 234* 235 235* 464* 465 467 index builtin function dcl 93 ref 167 167 177 464 init 5 based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 201* 263 281 input_resume_seq 25 based structure level 2 packed packed unaligned dcl 5-20 input_suspend_seq 24 based structure level 2 packed packed unaligned dcl 5-20 j 000103 automatic fixed bin(17,0) dcl 49 set ref 177* 179 179* 181 187* 187 188 194 195 244 350* 351 353 356 359 360* keyboard_locking 30(02) based bit(1) level 3 packed packed unaligned dcl 5-20 ref 365 lbound builtin function dcl 93 ref 234 615 615 len 000100 automatic fixed bin(17,0) dcl 559 in procedure "convert_len" set ref 575* 577 577 577 581 len based fixed bin(17,0) level 2 in structure "modes_info" dcl 73 in procedure "tty_modes" ref 154 155 167 167 177 184 194 461 462 464 464 465 465 467 481 483 500 length builtin function dcl 93 ref 154 195 228 462 564 569 594 612 631 652 line_len 2 based fixed bin(17,0) level 2 dcl 1-10 set ref 147* 202* 224* 434 434 489* linemax 21(09) based fixed bin(8,0) level 2 packed packed unaligned dcl 5-20 set ref 139 438* ll parameter fixed bin(17,0) dcl 628 ref 625 633 636 ll_error 5(01) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 489 lock_keyboard 000105 automatic bit(1) dcl 51 set ref 368* 369 369 ltrim builtin function dcl 93 ref 637 658 mcl based structure level 1 dcl 1-10 mcl_version_2 constant fixed bin(17,0) initial dcl 1-8 ref 145 mcle based structure level 1 dcl 1-26 mclep 000732 automatic pointer dcl 1-24 set ref 267* 268 272 274 274 281 281 285 287 287 287 289 295 301 307 314 315 318 320 322 496* 497 497 497 527* 530 531 533 534 mclp 000730 automatic pointer dcl 1-7 set ref 144* 145 146 147 148 149 150 201 202 203 204 224 226 233 234 235 238 246 250* 263 266 267 281 336* 434 434 436 438 439 441 441 489 489 491 491 493 493 495 496 515 527 mclx 000106 automatic fixed bin(17,0) dcl 52 set ref 174* 246 266* 267* 515 517 519* 520 528 mode_name 000107 automatic varying char(32) dcl 53 in procedure "tty_modes" set ref 194* 195 197 206 208 214* 218* 224 226 228 228 235 481 483 515 530 564 569 571 575 mode_name 6 based char(16) array level 3 in structure "mcl" packed packed unaligned dcl 1-10 in procedure "tty_modes" set ref 515 mode_name based char(16) level 2 in structure "mcle" packed packed unaligned dcl 1-26 in procedure "tty_modes" set ref 268 287 287 287 289 295 301 307 497* 530* mode_switch 4 based bit(1) level 3 packed packed unaligned dcl 1-26 set ref 274 281 285 314 315 497* 533* modes 17 based structure level 2 packed packed unaligned dcl 5-20 ref 137 359 modes_change_list 000120 automatic structure level 1 dcl 54 set ref 144 modes_info based structure level 1 dcl 73 modes_infop 000412 automatic pointer dcl 55 set ref 135* 154 155 167 167 177 184 194 461 462 464 464 465 465 467 481 483 500 modes_len 000414 automatic fixed bin(17,0) dcl 56 set ref 154* 155 155 155* 155 159 167 167 176 179 modestr defined char(8) array packed unaligned dcl 2-36 ref 268 454 mpx_mode 4(02) based bit(1) level 3 packed packed unaligned dcl 1-26 set ref 272 281* 318 mpx_only_sw 000415 automatic bit(1) packed unaligned dcl 57 set ref 118* 129* 161 281 333 344 n_entries 1 based fixed bin(17,0) level 2 dcl 1-10 set ref 146* 246* 266 495 n_modes constant fixed bin(17,0) initial dcl 2-22 ref 268 270 350 453 name parameter char packed unaligned dcl 591 ref 588 598 negotiating_echo 13(21) based bit(1) level 3 packed packed unaligned dcl 4-22 set ref 381* net_event_message based structure level 1 dcl 6-22 set ref 399* net_event_message_arg 000740 automatic fixed bin(71,0) dcl 6-19 set ref 399 400 401 402 403 404* network_type 0(24) based fixed bin(4,0) level 2 packed packed unsigned unaligned dcl 6-22 set ref 401* off_modes 000416 automatic bit(1) array packed unaligned dcl 58 set ref 262* 263* 315* 353 on_modes 000417 automatic bit(1) array packed unaligned dcl 59 set ref 261* 314* 351 output_resume_ack_seq 27 based structure level 2 packed packed unaligned dcl 5-20 output_suspend_etb_seq 26 based structure level 2 packed packed unaligned dcl 5-20 page_len 3 based fixed bin(17,0) level 2 dcl 1-10 set ref 148* 203* 226* 436 438 439 491* pic999 001016 automatic picture(3) packed unaligned dcl 629 in procedure "append_ll" set ref 636* 637 pic999 001026 automatic picture(3) packed unaligned dcl 650 in procedure "append_pl" set ref 657* 658 pl parameter fixed bin(17,0) dcl 649 ref 646 654 657 pl_error 5(02) based bit(1) level 3 packed packed unaligned dcl 1-10 set ref 491 pm_code parameter fixed bin(35,0) dcl 39 set ref 15 126 131* 254* 341* 468* 475* 479* 486* 522* 548* pm_modes_infop parameter pointer dcl 40 ref 15 126 135 pm_wtcbp parameter pointer dcl 41 ref 15 126 133 pxss$ring_0_wakeup 000020 constant entry external dcl 98 ref 404 reverse builtin function dcl 93 ref 464 rflag 13(13) based bit(1) level 3 packed packed unaligned dcl 4-22 ref 397 rtrim builtin function dcl 93 ref 154 457 598 615 617 saved_can_type 000504 automatic fixed bin(17,0) dcl 65 set ref 140* 451* saved_force_sw 000420 automatic bit(1) packed unaligned dcl 60 set ref 212* 222 saved_ll 000421 automatic fixed bin(17,0) dcl 61 set ref 138* 449* saved_modes 000422 automatic bit(36) packed unaligned dcl 62 set ref 137* 274 281 356 454 454 saved_mpx_modes 000423 automatic char(192) packed unaligned dcl 63 set ref 457 457 545* saved_pl 000503 automatic fixed bin(17,0) dcl 64 set ref 139* 450* scroll 13(20) based bit(1) level 3 packed packed unaligned dcl 4-22 set ref 390* send_delay_table_sw 000505 automatic bit(1) packed unaligned dcl 66 set ref 260* 287* 347 size 000102 stack reference condition dcl 560 ref 574 576 str 1 based char level 2 dcl 73 set ref 154 155 167 167 177 184 194 461* 464 465* 467* 481* 483* 500* string builtin function dcl 93 set ref 137 150* 359 531* substr builtin function dcl 93 set ref 155 167 167 177 184 194 224 226 228 274 281 356 359* 454 454 467* 571 575 sw 000506 automatic bit(1) packed unaligned dcl 67 set ref 190* 192* 199 206 210 217* 231 351* 353* 356 359 362 368 373 377 379 390 394 481 533 562 switch parameter bit(1) packed unaligned dcl 592 ref 588 596 synchronized 7(04) based bit(1) level 2 packed packed unaligned dcl 8-19 set ref 385* tcb based structure level 1 dcl 5-20 tcb_ptr 6 based pointer level 2 packed packed unaligned dcl 4-22 ref 134 tcbp 000736 automatic pointer dcl 5-18 set ref 134* 137 138 139 140 291 297 297 303 303 359 365 434 438 441 temp_modes 000507 automatic varying char(576) dcl 68 set ref 447* 457* 457 459* 459 461 462 488* 500 594 594* 594 596* 596 598* 598 612 612* 612 615* 615 617* 617 631 631* 631 633* 633 637* 637 652 652* 652 654* 654 658* 658 tty_index$printer_on_off 000022 constant entry external dcl 99 ref 373 tty_index$send_delays 000024 constant entry external dcl 100 ref 347 type 0(28) based fixed bin(8,0) level 2 packed packed unsigned unaligned dcl 6-22 set ref 403* uproc 11 based bit(36) level 2 dcl 4-22 set ref 404* verify builtin function dcl 93 ref 571 version based fixed bin(17,0) level 2 in structure "mcl" dcl 1-10 in procedure "tty_modes" set ref 145* version based bit(2) level 2 in structure "net_event_message" packed packed unaligned dcl 6-22 in procedure "tty_modes" set ref 400* wake_tbl 13(22) based bit(1) level 3 packed packed unaligned dcl 4-22 set ref 394* waketp 21(18) based bit(18) level 2 packed packed unaligned dcl 4-22 ref 309 wtcb based structure level 1 dcl 4-22 wtcbp 000734 automatic pointer dcl 4-20 set ref 133* 134 250 309 336 347* 362 369 373* 377 381 382 384 384 390 394 396 397 397 402 404 404 439 545 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. CAN_TYPE_REPLACE internal static fixed bin(17,0) initial dcl 3-4 DSA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 6-83 DSA_DATA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 6-84 DSA_DATA_INPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 6-100 DSA_DATA_OUTPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 6-101 DSA_DEMAND_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 6-85 DSA_DEMAND_TURN_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 6-87 DSA_DEMAND_TURN_MSG internal static fixed bin(8,0) initial unsigned dcl 6-86 DSA_ESTABLISHMENT_MSG internal static fixed bin(8,0) initial unsigned dcl 6-97 DSA_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 6-103 DSA_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 6-35 DSA_PURGE_MSG internal static fixed bin(8,0) initial unsigned dcl 6-88 DSA_RECOVER_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 6-90 DSA_RECOVER_MSG internal static fixed bin(8,0) initial unsigned dcl 6-89 DSA_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 6-91 DSA_RESUME_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 6-93 DSA_RESUME_MSG internal static fixed bin(8,0) initial unsigned dcl 6-92 DSA_SUSPEND_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 6-95 DSA_SUSPEND_MSG internal static fixed bin(8,0) initial unsigned dcl 6-94 DSA_TERMINATED_MSG internal static fixed bin(8,0) initial unsigned dcl 6-98 DSA_TERM_ABNORMAL_MSG internal static fixed bin(8,0) initial unsigned dcl 6-96 DSA_UNSPECIFIED_MSG internal static fixed bin(8,0) initial unsigned dcl 6-82 DSA_USER_UNASSIGN_MSG internal static fixed bin(8,0) initial unsigned dcl 6-99 MAX_DSA_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 6-80 MAX_MCS_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 6-46 MCS_DIALOUT_MSG internal static fixed bin(17,0) initial dcl 6-54 MCS_DIALUP_MSG internal static fixed bin(17,0) initial dcl 6-50 MCS_HANGUP_MSG internal static fixed bin(17,0) initial dcl 6-52 MCS_LINE_STATUS_MSG internal static fixed bin(17,0) initial dcl 6-62 MCS_MASKED_MSG internal static fixed bin(17,0) initial dcl 6-64 MCS_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 6-67 MCS_QUIT_MSG internal static fixed bin(17,0) initial dcl 6-56 MCS_UNSPECIFIED_MSG internal static fixed bin(17,0) initial dcl 6-48 MCS_WRITE_MSG internal static fixed bin(17,0) initial dcl 6-60 MOWSE_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 6-36 NETWORK_TYPE_VALUES internal static varying char(8) initial array dcl 6-38 WIRED_ECHO_BREAK_SIZE internal static fixed bin(17,0) initial dcl 8-16 WORDS_IN_ECHO_BREAK_TABLE internal static fixed bin(17,0) initial dcl 8-17 after builtin function dcl 93 channel_manager$interrupt 000000 constant entry external dcl 7-25 channel_manager$interrupt_later 000000 constant entry external dcl 7-28 channel_manager$queued_interrupt 000000 constant entry external dcl 7-31 channel_manager$read 000000 constant entry external dcl 7-7 channel_manager$write 000000 constant entry external dcl 7-10 NAMES DECLARED BY EXPLICIT CONTEXT. add_mode_change 002156 constant entry internal dcl 508 ref 215 220 242 append_can_type 002512 constant entry internal dcl 607 ref 451 493 append_ll 002612 constant entry internal dcl 625 ref 449 489 append_mode 002424 constant entry internal dcl 588 ref 454 497 append_pl 002726 constant entry internal dcl 646 ref 450 491 bad_format 002003 constant label dcl 475 ref 167 181 188 bad_mode 002010 constant label dcl 479 ref 195 199 210 231 238 564 569 571 574 577 build_old_modes 001610 constant label dcl 447 ref 164 convert_len 002300 constant entry internal dcl 556 ref 224 226 end_of_mode 001554 constant label dcl 408 ref 353 356 371 375 388 392 406 error_exit 002155 constant label dcl 503 ref 523 549 get_mpx_modes 002242 constant entry internal dcl 542 ref 163 333 join 000262 constant label dcl 131 ref 119 mcl_error 002046 constant label dcl 486 ref 328 339 mode_error 001241 constant label dcl 322 ref 274 291 297 303 309 mpx_only 000253 constant entry external dcl 126 set_modes 000000 constant label array(29) dcl 362 ref 360 tty_modes 000242 constant entry external dcl 15 NAMES DECLARED BY CONTEXT OR IMPLICATION. ptr builtin function ref 384 unspec builtin function ref 399 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 3474 3532 3304 3504 Length 4100 3304 36 331 167 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tty_modes 600 external procedure is an external procedure. add_mode_change internal procedure shares stack frame of external procedure tty_modes. get_mpx_modes internal procedure shares stack frame of external procedure tty_modes. convert_len 232 internal procedure enables or reverts conditions. on unit on line 574 64 on unit append_mode internal procedure shares stack frame of external procedure tty_modes. append_can_type internal procedure shares stack frame of external procedure tty_modes. append_ll internal procedure shares stack frame of external procedure tty_modes. append_pl internal procedure shares stack frame of external procedure tty_modes. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME convert_len 000100 len convert_len tty_modes 000100 code tty_modes 000101 force_sw tty_modes 000102 i tty_modes 000103 j tty_modes 000104 idx tty_modes 000105 lock_keyboard tty_modes 000106 mclx tty_modes 000107 mode_name tty_modes 000120 modes_change_list tty_modes 000412 modes_infop tty_modes 000414 modes_len tty_modes 000415 mpx_only_sw tty_modes 000416 off_modes tty_modes 000417 on_modes tty_modes 000420 saved_force_sw tty_modes 000421 saved_ll tty_modes 000422 saved_modes tty_modes 000423 saved_mpx_modes tty_modes 000503 saved_pl tty_modes 000504 saved_can_type tty_modes 000505 send_delay_table_sw tty_modes 000506 sw tty_modes 000507 temp_modes tty_modes 000730 mclp tty_modes 000732 mclep tty_modes 000734 wtcbp tty_modes 000736 tcbp tty_modes 000740 net_event_message_arg tty_modes 000742 echo_datap tty_modes 000764 i add_mode_change 001016 pic999 append_ll 001026 pic999 append_pl THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this return_mac tra_ext_1 enable_op shorten_stack ext_entry int_entry any_to_any_truncate_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. channel_manager$check_modes channel_manager$control channel_manager$get_modes channel_manager$set_modes pxss$ring_0_wakeup tty_index$printer_on_off tty_index$send_delays THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_mode error_table_$bigarg error_table_$improper_data_format error_table_$smallarg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 15 000236 118 000247 119 000250 126 000251 129 000260 131 000262 133 000264 134 000267 135 000271 137 000274 138 000276 139 000301 140 000305 144 000310 145 000312 146 000314 147 000315 148 000317 149 000320 150 000321 154 000322 155 000335 159 000344 161 000346 163 000350 164 000351 167 000352 173 000375 174 000376 175 000377 176 000401 177 000405 179 000423 181 000430 184 000432 186 000436 187 000437 188 000441 190 000443 191 000444 192 000445 194 000447 195 000457 197 000462 199 000467 201 000471 202 000474 203 000476 204 000477 205 000501 206 000502 208 000512 210 000517 212 000521 213 000523 214 000525 215 000533 216 000534 217 000553 218 000554 220 000562 221 000563 222 000611 223 000613 224 000614 226 000631 228 000643 231 000652 233 000654 234 000657 235 000671 237 000704 238 000706 241 000712 242 000713 244 000714 245 000720 246 000721 250 000724 251 000744 254 000751 255 000753 260 000754 261 000755 262 000770 263 001002 266 001020 267 001031 268 001035 269 001054 270 001056 272 001061 274 001071 278 001100 281 001101 285 001123 287 001125 289 001144 291 001150 293 001156 295 001157 297 001163 299 001172 301 001173 303 001177 305 001206 307 001207 309 001213 314 001217 315 001222 317 001231 318 001232 320 001236 322 001241 324 001243 327 001246 328 001250 333 001252 336 001255 337 001275 339 001277 341 001302 342 001304 344 001305 347 001307 350 001320 351 001327 353 001336 356 001343 359 001347 360 001353 362 001354 365 001362 368 001365 369 001370 371 001426 373 001427 375 001443 377 001444 379 001452 381 001454 382 001456 384 001461 385 001464 388 001466 390 001467 392 001475 394 001476 396 001504 397 001506 399 001514 400 001516 401 001522 402 001526 403 001532 404 001536 406 001553 408 001554 434 001556 436 001565 438 001570 439 001573 441 001602 447 001610 449 001611 450 001613 451 001615 453 001617 454 001627 455 001643 457 001645 459 001717 461 001727 462 001735 464 001740 465 001755 467 001765 468 001776 471 002002 475 002003 477 002007 479 002010 481 002014 483 002025 484 002044 486 002046 488 002052 489 002053 491 002065 493 002077 495 002111 496 002121 497 002125 499 002144 500 002146 501 002154 503 002155 508 002156 515 002157 516 002177 517 002201 519 002204 520 002205 522 002207 523 002213 527 002214 528 002220 530 002223 531 002227 533 002230 534 002234 536 002241 542 002242 545 002243 546 002271 548 002273 549 002275 552 002276 556 002277 562 002305 564 002310 566 002316 569 002321 571 002327 574 002350 575 002367 576 002402 577 002403 581 002420 588 002424 594 002435 596 002446 598 002463 600 002511 607 002512 612 002514 615 002525 617 002557 619 002611 625 002612 631 002614 633 002625 636 002642 637 002653 638 002724 640 002725 646 002726 652 002730 654 002741 657 002756 658 002767 659 003040 660 003041 ----------------------------------------------------------- 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