COMPILATION LISTING OF SEGMENT tty_io_call_control_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-18_1155.40_Tue_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 /* This procedure sets up info structures to execute tty_ control orders on behalf of the 12* io_call command. */ 13 14 /* Written April 1976 by Larry Johnson */ 15 /* Modified May 1978 to add suppport for active function and new orders */ 16 /* Modified November 1980 by Benson I. Margulies for set_event_channel */ 17 /* Modified 1985-02-19, BIM: get_com_channel_info */ 18 19 /* format: style2 */ 20 tty_io_call_control_: 21 proc (iocbp, io_call_order, io_call_infop, code); 22 23 /* Parameters */ 24 25 dcl iocbp ptr; /* Pointer to the IOCB */ 26 dcl io_call_order char (*); /* Can be io_call or io_call_af */ 27 dcl code fixed bin (35); /* Standard system status code */ 28 29 /* Automatic storage */ 30 31 dcl not_open_sw bit (1); 32 dcl af_sw bit (1); /* Set if doing active function */ 33 dcl i fixed bin; 34 dcl temp_type char (16); 35 dcl new_id char (4); /* Info structure for storeid order */ 36 dcl (err, rpt) entry variable options (variable); 37 dcl caller char (32); 38 dcl order char (32); 39 dcl n_args fixed bin; 40 dcl line_length fixed bin (9); 41 dcl ev_channel fixed bin (71); 42 43 dcl 1 ascci aligned like as_com_channel_info; 44 dcl 1 read_status aligned like tty_read_status_info; 45 dcl 1 write_status aligned like tty_read_status_info; 46 dcl 1 info aligned like tty_info; 47 dcl new_type fixed bin (35); 48 49 dcl 1 modes aligned, 50 2 str_len fixed bin, 51 2 str char (512); 52 53 dcl 1 auto_terminal_info like terminal_info automatic; 54 dcl 1 auto_set_term_type_info 55 like set_term_type_info automatic; 56 57 /* External stuff */ 58 59 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 60 dcl convert_access_class_$to_string_short 61 entry (bit (72) aligned, char (*), fixed bin (35)); 62 dcl convert_access_class_$to_string_range_short 63 entry ((2) bit (72) aligned, char (*), fixed bin (35)); 64 dcl cv_dec_check_ entry (char (*), fixed bin) returns (fixed bin (35)); 65 dcl ioa_$rsnnl entry options (variable); 66 67 dcl ( 68 error_table_$badopt, 69 error_table_$noarg, 70 error_table_$bad_conversion, 71 error_table_$too_many_args, 72 error_table_$not_open, 73 error_table_$undefined_order_request 74 ) ext fixed bin (35); 75 76 /* internal static */ 77 /* orders that require info that we will not supply */ 78 79 dcl info_orders (27) char (32) int static options (constant) 80 init ("set_delay", "get_channel_info", "get_delay", "set_editing_chars", 81 "get_editing_chars", "set_input_translation", "set_input_conversion", 82 "set_output_translation", "set_output_conversion", "get_input_translation", 83 "get_input_conversion", "get_output_translation", "get_output_conversion", 84 "set_special", "get_special", "set_framing_chars", "get_framing_chars", 85 "send_initial_string", "set_default_modes", "set_input_message_size", 86 "get_input_message_size", "input_flow_control_chars", 87 "output_flow_control_chars", "get_echo_break_table", "set_wakeup_table", 88 "set_prompt", "hangup_proc"); 89 90 declare conversion condition; 91 92 /* builtins */ 93 94 dcl (addr, binary, character, hbound, lbound, length, null, rtrim, string, substr, translate, unspec) 95 builtin; 96 1 1 /* Begin include file as_com_channel_info.incl.pl1 */ 1 2 1 3 /* Created 1985-02-19 by BIM */ 1 4 /* Recreated 1985-02-22 by E. Swenson since the include file was lost. */ 1 5 1 6 /* format: style4 */ 1 7 1 8 dcl as_com_channel_info_ptr pointer; 1 9 dcl 1 as_com_channel_info aligned 1 10 based (as_com_channel_info_ptr), 1 11 2 version char (8), 1 12 2 channel_name char (32), 1 13 2 flags aligned, 1 14 3 access_control unaligned, 1 15 4 login bit (1), 1 16 4 dial_slave bit (1), 1 17 4 priv_attach bit (1), 1 18 4 dial_server bit (1), 1 19 4 dial_out bit (1), 1 20 3 attached_to_caller bit (1) unaligned, 1 21 3 user_authenticated bit (1) unaligned, 1 22 3 dialed_to_caller bit (1) unaligned, 1 23 3 pad bit (28) unaligned, 1 24 2 service_type fixed bin, 1 25 2 current_service_type fixed bin, 1 26 2 access_class (2) bit (72) aligned, 1 27 2 current_access_class bit (72) aligned, 1 28 2 auth_user_name char (32) unaligned; 1 29 1 30 declare AS_COM_CHANNEL_INFO_VERSION_1 char (8) aligned init ("ascci001") int static options (constant); 1 31 1 32 /* End include file as_com_channel_info.incl.pl1 */ 97 2 1 /* Begin include file ..... io_call_info.incl.pl1 */ 2 2 2 3 /* This include file defines the info_structure used by an I/O module to perform an "io_call" order 2 4* on behalf of the io_call command. */ 2 5 /* Coded April 1976 by Larry Johnson */ 2 6 /* Changed June 1977 by Larry Johnson for "io_call_af" order */ 2 7 2 8 dcl io_call_infop ptr; 2 9 2 10 dcl 1 io_call_info aligned based (io_call_infop), 2 11 2 version fixed bin, 2 12 2 caller_name char (32), /* Caller name for error messages */ 2 13 2 order_name char (32), /* Actual name of the order to be performed */ 2 14 2 report entry variable options (variable), 2 15 /* Entry to ioa_ like procedure to report results */ 2 16 2 error entry variable options (variable), 2 17 /* Entry to com_err_ like procedure to report results */ 2 18 2 af_returnp ptr, /* Pointer to return string if "io_call_af" order */ 2 19 2 af_returnl fixed bin, /* Length of string */ 2 20 2 fill (5) bit (36) aligned, 2 21 2 nargs fixed bin, /* Number of additional command arguments provided */ 2 22 2 max_arglen fixed bin, /* Length of longest argument (used to define array) */ 2 23 2 args (0 refer (io_call_info.nargs)) char (0 refer (io_call_info.max_arglen)) varying; 2 24 2 25 dcl io_call_af_ret char (io_call_info.af_returnl) based (io_call_info.af_returnp) varying; 2 26 /* Return string for active function */ 2 27 2 28 /* End include file ..... io_call_info.incl.pl1 */ 98 3 1 /* BEGIN INCLUDE FILE ... tty_read_status_info.incl.pl1 3 2* 3 3* control structure for the read_status and write_status orders to tty_ 3 4* 3 5* Modified 2/1/83 by Olin Sibert to add tty_write_status_info structure in 3 6* support of lap_simplex_ MPX. 3 7**/ 3 8 3 9 3 10 /****^ HISTORY COMMENTS: 3 11* 1) change(88-07-07,Beattie), approve(88-06-27,MCR7926), 3 12* audit(88-07-22,Brunelle), install(88-08-08,MR12.2-1082): 3 13* Prepared for installation. 3 14* END HISTORY COMMENTS */ 3 15 3 16 3 17 dcl 1 tty_read_status_info aligned based (tty_read_status_info_ptr), 3 18 2 event_channel fixed bin (71), 3 19 2 input_pending bit (1); 3 20 3 21 dcl tty_read_status_info_ptr ptr; 3 22 3 23 dcl 1 tty_write_status_info aligned based (tty_write_status_info_ptr), 3 24 2 event_channel fixed bin (71), 3 25 2 output_pending bit (1); 3 26 3 27 dcl tty_write_status_info_ptr ptr; 3 28 3 29 /* END INCLUDE FILE ... tty_read_status_info.incl.pl1 */ 99 4 1 /* BEGIN INCLUDE FILE ... tty_get_channel_info.incl.pl1 */ 4 2 4 3 /* for get_channel_info order to tty_ */ 4 4 4 5 dcl 1 tty_get_channel_info aligned based, 4 6 2 version fixed bin init (tty_get_channel_info_version), 4 7 2 devx fixed bin, 4 8 2 channel_name char (32); 4 9 4 10 dcl tty_get_channel_info_version fixed bin init (1) internal static options (constant); 4 11 4 12 /* END INCLUDE FILE ... tty_get_channel_info.incl.pl1 */ 100 5 1 /* START OF: tty_control_orders_info.incl.pl1 * * * * * * * * * * * * * * * * */ 5 2 /* format: style2 */ 5 3 5 4 dcl tty_old_type fixed bin based; /* terminal type number for set_type order */ 5 5 5 6 dcl 1 tty_send_initial_string_info 5 7 aligned based, /* info structure for send_initial_string order */ 5 8 2 version fixed bin, 5 9 2 initial_string char (512) varying; 5 10 5 11 dcl 1 tty_info aligned based, 5 12 2 id char (4), 5 13 2 baudrate fixed bin unal, 5 14 2 reserved bit (54) unal, 5 15 2 type fixed bin; 5 16 5 17 dcl 1 tty_modes_info based aligned, 5 18 2 mode_length fixed bin, 5 19 2 modes char (tty_modes_info.mode_length); 5 20 5 21 /* END OF: tty_control_orders_info.incl.pl1 * * * * * * * * * * * * * * * * */ 101 6 1 /* BEGIN INCLUDE FILE ... ttyp.incl.pl1 */ 6 2 6 3 dcl max_tty_type fixed bin static init (11); 6 4 6 5 dcl tty_dev_type (0:16) char (8) aligned int static init /* ASCII explanations of terminal type */ 6 6 ("Network", "1050", "2741", "TTY37", "TN300", "ARDS", "CORR2741", "TTY33", 6 7 "TTY38", "G115", "type10", "ASCII", "type12", "type13", "type14", "type15", "type16"); 6 8 6 9 /* Note that device type 0 is used for both absentee and network. Distingush some other way */ 6 10 6 11 /* END INCLUDE FILE ... ttyp.incl.pl1 */ 102 7 1 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 7 2 7 3 /* Created 5/25/77 by J. Stern */ 7 4 7 5 7 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 7 7 2 version fixed bin, /* version number of this sturcture */ 7 8 2 id char (4) unaligned, /* terminal id from answerback */ 7 9 2 term_type char (32) unaligned, /* terminal type name */ 7 10 2 line_type fixed bin, /* line type number */ 7 11 2 baud_rate fixed bin, 7 12 2 reserved (4) fixed bin; /* reserved for future use */ 7 13 7 14 7 15 dcl terminal_info_ptr ptr; 7 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 7 17 7 18 7 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 103 8 1 /* BEGIN INCLUDE FILE ... set_term_type_info.incl.pl1 */ 8 2 /* Created 7/18/77 by Robert Coren */ 8 3 /* Defines info structure for set_term_type order */ 8 4 8 5 dcl stti_version_1 fixed bin int static options (constant) init (1); 8 6 dcl sttip ptr; 8 7 8 8 dcl 1 set_term_type_info aligned based (sttip), 8 9 2 version fixed bin, 8 10 2 name char (32) unal, 8 11 2 flags unal, 8 12 3 send_initial_string bit (1), 8 13 3 set_modes bit (1), 8 14 3 ignore_line_type bit (1), 8 15 3 mbz bit (33); 8 16 8 17 /* END INCLUDE FILE ... set_term_type_info.incl.pl1 */ 104 9 1 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 9 2 9 3 /* Written November 10 1975 by Paul Green */ 9 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 9 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 9 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 9 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 9 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 9 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 9 10 9 11 9 12 /****^ HISTORY COMMENTS: 9 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 9 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 15* Add a DSA line type. 9 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 9 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 18* Add HASP_OPR to identify HASP workstation consoles with login service. 9 19* END HISTORY COMMENTS */ 9 20 9 21 9 22 declare (LINE_MC initial (-2), 9 23 LINE_TELNET initial (-1), 9 24 LINE_UNKNOWN initial (0), 9 25 LINE_ASCII initial (1), 9 26 LINE_1050 initial (2), 9 27 LINE_2741 initial (3), 9 28 LINE_ARDS initial (4), 9 29 LINE_SYNCH initial (5), 9 30 LINE_G115 initial (6), 9 31 LINE_BSC initial (7), 9 32 LINE_ETX initial (8), 9 33 LINE_VIP initial (9), 9 34 LINE_ASYNC1 initial (10), 9 35 LINE_ASYNC2 initial (11), 9 36 LINE_ASYNC3 initial (12), 9 37 LINE_SYNC1 initial (13), 9 38 LINE_SYNC2 initial (14), 9 39 LINE_SYNC3 initial (15), 9 40 LINE_POLLED_VIP initial (16), 9 41 LINE_X25LAP initial (17), 9 42 LINE_HDLC initial (18), 9 43 LINE_COLTS initial (19), 9 44 LINE_DSA initial (20), 9 45 LINE_HASP_OPR initial (21) 9 46 ) fixed bin internal static options (constant); 9 47 9 48 dcl max_line_type fixed bin int static options (constant) init (21); 9 49 9 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 9 51 9 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 9 53 9 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 9 55 "MC", /* -2 */ 9 56 "TELNET", /* -1 */ 9 57 "none", /* 0 */ 9 58 "ASCII", /* 1 */ 9 59 "1050", /* 2 */ 9 60 "2741", /* 3 */ 9 61 "ARDS", /* 4 */ 9 62 "Sync", /* 5 */ 9 63 "G115", /* 6 */ 9 64 "BSC", /* 7 */ 9 65 "202ETX", /* 8 */ 9 66 "VIP", /* 9 */ 9 67 "ASYNC1", /* 10 */ 9 68 "ASYNC2", /* 11 */ 9 69 "ASYNC3", /* 12 */ 9 70 "SYNC1", /* 13 */ 9 71 "SYNC2", /* 14 */ 9 72 "SYNC3", /* 15 */ 9 73 "POLLED_VIP", /* 16 */ 9 74 "X25LAP", /* 17 */ 9 75 "HDLC", /* 18 */ 9 76 "COLTS", /* 19 */ 9 77 "DSA", /* 20 */ 9 78 "HASP_OPR"); /* 21 */ 9 79 9 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 105 106 107 108 not_open_sw = ""b; 109 goto JOIN; 110 111 not_open: 112 entry (iocbp, io_call_order, io_call_infop, code); 113 not_open_sw = "1"b; 114 115 JOIN: 116 af_sw = (io_call_order = "io_call_af"); 117 err = io_call_info.error; 118 rpt = io_call_info.report; 119 order = io_call_info.order_name; 120 n_args = io_call_info.nargs; 121 caller = io_call_info.caller_name; 122 123 /* not_open orders first */ 124 /* set_event order */ 125 126 if order = "set_event" 127 then do; 128 if af_sw 129 then go to not_af; 130 if n_args = 0 131 then do; 132 call err (error_table_$noarg, caller, "Event channel."); 133 code = 0; 134 goto RETURN; 135 end; 136 if n_args > 1 137 then do; 138 call err (error_table_$too_many_args, caller, "Only an event channel may be given."); 139 code = 0; 140 goto RETURN; 141 end; 142 if substr (io_call_info.args (1), 1, 1) = "-" 143 then do; 144 call err (error_table_$badopt, caller, "^a", io_call_info.args (1)); 145 code = 0; 146 goto RETURN; 147 end; 148 on conversion 149 begin; /* cv_foo_check_ wont do 71 bits */ 150 call err (error_table_$bad_conversion, caller, "Bad event channel ^a.", 151 io_call_info.args (1)); 152 code = 0; 153 goto RETURN; 154 end; 155 ev_channel = binary (io_call_info.args (1)); 156 /* Default is 71, 0 */ 157 call iox_$control (iocbp, "set_event", addr (ev_channel), code); 158 goto RETURN; 159 end; 160 161 else if order = "get_event" 162 then do; 163 if n_args > 0 164 then do; 165 call err (error_table_$too_many_args, caller, "The get_event order takes no arguments."); 166 code = 0; 167 goto RETURN; 168 end; 169 call iox_$control (iocbp, "get_event", addr (ev_channel), code); 170 if code ^= 0 171 then do; 172 call err (code, caller, "No event channel info available."); 173 code = 0; 174 goto RETURN; 175 end; 176 if af_sw 177 then io_call_af_ret = character (ev_channel); 178 /* work in decimal for set_ev and ipc_call */ 179 else call rpt ("^a: Event channel=^d (decimal).", caller, ev_channel); 180 code = 0; 181 goto RETURN; 182 end; 183 184 else if order = "get_com_channel_info" 185 then do; 186 declare temp_acc char (32); 187 unspec (ascci) = ""b; 188 ascci.version = AS_COM_CHANNEL_INFO_VERSION_1; 189 call iox_$control (iocbp, "get_com_channel_info", addr (ascci), code); 190 if code = 0 191 then do; 192 call rpt ("^a:^20tchannel:^40t^a", caller, ascci.channel_name); 193 call rpt ("^20taccess_control.login:^40t^[on^;off^]", ascci.access_control.login); 194 195 call rpt ("^20taccess_control.dial_slave:^40t^[on^;off^]", ascci.access_control.dial_slave); 196 call rpt ("^20taccess_control.priv_attach:^40t^[on^;off^]", 197 ascci.access_control.priv_attach); 198 call rpt ("^20taccess_control.dial_server:^40t^[on^;off^]", 199 ascci.access_control.dial_server); 200 call rpt ("^20taccess_control.dial_out:^40t^[on^;off^]", ascci.access_control.dial_out); 201 call rpt ("^20tattached_to_caller:^40t^[on^;off^]", ascci.attached_to_caller); 202 call rpt ("^20tuser_authenticated:^40t^[on^;off^]", ascci.user_authenticated); 203 call rpt ("^20tdialed_to_caller:^40t^[on^;off^]", ascci.dialed_to_caller); 204 call rpt ("^20tservice_type:^40t^[ANS^;FTP^;MC^;SLAVE^;DIAL^;DIAL_OUT^;MPX^;TANDD^]", 205 ascci.service_type); 206 call rpt ( 207 "^20tcurrent_service_type:^40t^[ANS^;FTP^;MC^;SLAVE^;DIAL^;DIAL_OUT^;MPX^;TANDD^]", 208 ascci.current_service_type); 209 call convert_access_class_$to_string_range_short (ascci.access_class, temp_acc, (0)); 210 if temp_acc = "" 211 then temp_acc = "system_low"; 212 call rpt ("^20taccess_class:^40t^a", temp_acc); 213 call convert_access_class_$to_string_short (ascci.current_access_class, temp_acc, (0)); 214 if temp_acc = "" 215 then temp_acc = "system_low"; 216 call rpt ("^20tcurrent_access_class:^40t^a", temp_acc); 217 call rpt ("^20tauth_user_name:^40t^a", ascci.auth_user_name); 218 end; 219 end; 220 221 /* end of not_open orders */ 222 else if not_open_sw 223 then do; 224 code = error_table_$not_open; 225 call err (code, caller); 226 go to RETURN; 227 228 end; 229 230 /* Info order */ 231 232 else if order = "info" 233 then do; 234 call iox_$control (iocbp, "info", addr (info), code); 235 if code = 0 236 then do; 237 if info.type < lbound (tty_dev_type, 1) | info.type > hbound (tty_dev_type, 1) 238 then call ioa_$rsnnl ("type^d", temp_type, (0), info.type); 239 else temp_type = tty_dev_type (info.type); 240 241 if af_sw 242 then do; 243 if n_args = 0 244 then io_call_af_ret = rtrim (temp_type); 245 else if io_call_info.args (1) = "id" 246 then io_call_af_ret = rtrim (info.id); 247 else if io_call_info.args (1) = "baud" 248 then call ioa_$rsnnl ("^d", io_call_af_ret, (0), info.baudrate); 249 else if io_call_info.args (1) = "type" 250 then io_call_af_ret = rtrim (temp_type); 251 else call err (error_table_$badopt, caller, "^a", io_call_info.args (1)); 252 end; 253 else call rpt ("^a: Terminal id=""^a"", baud rate=^d, type=^a.", caller, info.id, 254 info.baudrate, temp_type); 255 end; 256 end; 257 258 /* Read_status order */ 259 260 else if order = "read_status" 261 then do; 262 call iox_$control (iocbp, "read_status", addr (read_status), code); 263 if code = 0 264 then do; 265 if af_sw 266 then if read_status.input_pending 267 then io_call_af_ret = "true"; 268 else io_call_af_ret = "false"; 269 else call rpt ("^a: Event channel=^24.3b, input is ^[^;not ^]available.", caller, 270 unspec (read_status.event_channel), read_status.input_pending); 271 end; 272 end; 273 274 /* Write_status order */ 275 276 else if order = "write_status" 277 then do; 278 call iox_$control (iocbp, "write_status", addr (write_status), code); 279 if code = 0 280 then do; 281 if af_sw 282 then if write_status.input_pending 283 then io_call_af_ret = "true"; 284 else io_call_af_ret = "false"; 285 else call rpt ("^a: Event channel=^24.3b, output is ^[^;not ^]pending.", caller, 286 unspec (write_status.event_channel), write_status.input_pending); 287 end; 288 end; 289 290 /* Store_id order */ 291 292 else if order = "store_id" 293 then do; 294 if af_sw 295 then do; 296 not_af: 297 call err (0, caller, "The ^a order is not valid as an active function.", order); 298 code = 0; 299 end; 300 if n_args ^> 0 301 then do; 302 call err (error_table_$noarg, caller, "ID."); 303 code = 0; 304 end; 305 else do; 306 new_id = io_call_info.args (1); 307 call iox_$control (iocbp, "store_id", addr (new_id), code); 308 end; 309 end; 310 311 /* Set_type order */ 312 313 else if order = "set_type" | order = "set_terminal_type" 314 then do; 315 if af_sw 316 then go to not_af; 317 if n_args ^> 0 318 then do; 319 call err (error_table_$noarg, caller, "Type."); 320 code = 0; 321 end; 322 else do; 323 new_type = cv_dec_check_ ((io_call_info.args (1)), i); 324 if i ^= 0 325 then do; 326 temp_type = 327 translate (io_call_info.args (1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 328 "abcdefghijklmnopqrstuvwxyz"); 329 do new_type = lbound (tty_dev_type, 1) to hbound (tty_dev_type, 1); 330 if tty_dev_type (new_type) = temp_type 331 then do; /* Got a match */ 332 call iox_$control (iocbp, "set_type", addr (new_type), code); 333 return; 334 end; 335 end; 336 call err (0, caller, "Invalid type: ^a", io_call_info.args (1)); 337 code = 0; 338 end; 339 else call iox_$control (iocbp, "set_type", addr (new_type), code); 340 end; 341 end; 342 343 /* Modes order */ 344 345 else if order = "modes" 346 then do; 347 if af_sw 348 then go to not_af; 349 if n_args ^> 0 350 then modes.str = ""; 351 else modes.str = io_call_info.args (1); 352 modes.str_len = length (modes.str); 353 call iox_$control (iocbp, "modes", addr (modes), code); 354 if code = 0 355 then call rpt ("^a: ^a", caller, modes.str); 356 end; 357 358 /* Set_line_type order */ 359 360 else if order = "set_line_type" 361 then do; 362 if af_sw 363 then go to not_af; 364 if n_args ^> 0 365 then do; 366 call err (error_table_$noarg, caller, "Line type."); 367 code = 0; 368 end; 369 else do; 370 temp_type = 371 translate (io_call_info.args (1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ", 372 "abcdefghijklmnopqrstuvwxyz"); 373 do new_type = lbound (line_types, 1) to hbound (line_types, 1); 374 if temp_type = line_types (new_type) 375 then go to set_line_type; 376 end; 377 new_type = cv_dec_check_ ((io_call_info.args (1)), i); 378 if i ^= 0 379 then do; 380 call err (0, caller, "Invalid line type: ^a", io_call_info.args (1)); 381 code = 0; 382 end; 383 else 384 set_line_type: 385 call iox_$control (iocbp, "set_line_type", addr (new_type), code); 386 end; 387 end; 388 389 /* Line length order */ 390 391 else if order = "line_length" 392 then do; 393 if af_sw 394 then go to not_af; 395 if n_args ^> 0 396 then do; 397 call err (error_table_$noarg, caller, "Line length."); 398 code = 0; 399 end; 400 else do; 401 line_length = cv_dec_check_ ((io_call_info.args (1)), i); 402 if i ^= 0 403 then do; 404 call err (0, caller, "Invalid line length: ^a", io_call_info.args (1)); 405 code = 0; 406 end; 407 else call iox_$control (iocbp, "line_length", addr (line_length), code); 408 end; 409 end; 410 411 /* Terminal info order */ 412 413 else if order = "terminal_info" 414 then do; 415 terminal_info_ptr = addr (auto_terminal_info); 416 terminal_info.version = 1; 417 call iox_$control (iocbp, "terminal_info", terminal_info_ptr, code); 418 if code = 0 419 then do; 420 if terminal_info.line_type < lbound (line_types, 1) 421 | terminal_info.line_type > hbound (line_types, 1) 422 then call ioa_$rsnnl ("^d", temp_type, (0), terminal_info.line_type); 423 else temp_type = line_types (terminal_info.line_type); 424 if af_sw 425 then do; 426 if n_args = 0 427 then io_call_af_ret = rtrim (terminal_info.term_type); 428 else if io_call_info.args (1) = "id" 429 then io_call_af_ret = rtrim (terminal_info.id); 430 else if io_call_info.args (1) = "baud" 431 then call ioa_$rsnnl ("^d", io_call_af_ret, (0), terminal_info.baud_rate); 432 else if io_call_info.args (1) = "terminal_type" 433 then io_call_af_ret = rtrim (terminal_info.term_type); 434 else if io_call_info.args (1) = "line_type" 435 then io_call_af_ret = rtrim (temp_type); 436 else call err (error_table_$badopt, caller, "^a", io_call_info.args (1)); 437 end; 438 else call rpt ("^a: Terminal id=""^a"", baud_rate=^d, term type=""^a"", line type=""^a"".", 439 caller, terminal_info.id, terminal_info.baud_rate, terminal_info.term_type, 440 temp_type); 441 end; 442 end; 443 444 /* Set_term_type order */ 445 446 else if order = "set_term_type" 447 then do; 448 if af_sw 449 then go to not_af; 450 sttip = addr (auto_set_term_type_info); 451 set_term_type_info.version = 1; 452 set_term_type_info.name = ""; 453 string (set_term_type_info.flags) = "0"b; 454 if n_args = 0 455 then do; 456 call err (error_table_$noarg, caller, "Terminal type."); 457 code = 0; 458 end; 459 else do; 460 set_term_type_info.name = io_call_info.args (1); 461 do i = 2 to n_args; 462 if io_call_info.args (i) = "-tabs" | io_call_info.args (i) = "-initial_string" 463 | io_call_info.args (i) = "-istr" 464 then set_term_type_info.send_initial_string = "1"b; 465 else if io_call_info.args (i) = "-modes" 466 then set_term_type_info.set_modes = "1"b; 467 else if io_call_info.args (i) = "-ignore_line_type" 468 then set_term_type_info.ignore_line_type = "1"b; 469 else do; 470 call err (error_table_$badopt, caller, "^a", io_call_info.args (i)); 471 code = 0; 472 end; 473 474 end; 475 call iox_$control (iocbp, "set_term_type", sttip, code); 476 end; 477 end; 478 479 480 /* All other orders */ 481 482 else if af_sw 483 then go to not_af; 484 else do; /* find out if it can just be passed on */ 485 do i = 1 to hbound (info_orders, 1) while (order ^= info_orders (i)); 486 end; 487 if i <= hbound (info_orders, 1) /* on the disapproved list */ 488 then do; 489 call err (error_table_$undefined_order_request, caller, order); 490 code = 0; 491 end; 492 else call iox_$control (iocbp, (order), null (), code); 493 end; 494 RETURN: 495 return; 496 497 end tty_io_call_control_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/18/00 1155.4 tty_io_call_control_.pl1 >udd>sm>ds>w>ml>tty_io_call_control_.pl1 97 1 03/08/85 0952.7 as_com_channel_info.incl.pl1 >ldd>incl>as_com_channel_info.incl.pl1 98 2 07/19/79 1647.1 io_call_info.incl.pl1 >ldd>incl>io_call_info.incl.pl1 99 3 08/11/88 2115.0 tty_read_status_info.incl.pl1 >ldd>incl>tty_read_status_info.incl.pl1 100 4 01/28/81 1023.4 tty_get_channel_info.incl.pl1 >ldd>incl>tty_get_channel_info.incl.pl1 101 5 06/22/81 1915.3 tty_control_orders_info.incl.pl1 >ldd>incl>tty_control_orders_info.incl.pl1 102 6 08/29/75 0938.6 ttyp.incl.pl1 >ldd>incl>ttyp.incl.pl1 103 7 06/29/77 1724.0 terminal_info.incl.pl1 >ldd>incl>terminal_info.incl.pl1 104 8 09/01/77 1459.3 set_term_type_info.incl.pl1 >ldd>incl>set_term_type_info.incl.pl1 105 9 08/06/87 1013.4 line_types.incl.pl1 >ldd>incl>line_types.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. AS_COM_CHANNEL_INFO_VERSION_1 000202 constant char(8) initial dcl 1-30 ref 188 access_class 15 000144 automatic bit(72) array level 2 dcl 43 set ref 209* access_control 12 000144 automatic structure level 3 packed packed unaligned dcl 43 addr builtin function dcl 94 ref 157 157 169 169 189 189 234 234 262 262 278 278 307 307 332 332 339 339 353 353 383 383 407 407 415 450 af_returnl 34 based fixed bin(17,0) level 2 dcl 2-10 ref 176 243 245 247 249 265 268 281 284 426 428 430 432 434 af_returnp 32 based pointer level 2 dcl 2-10 ref 176 243 245 247 249 265 268 281 284 426 428 430 432 434 af_sw 000101 automatic bit(1) packed unaligned dcl 32 set ref 115* 128 176 241 265 281 294 315 347 362 393 424 448 482 args 44 based varying char array level 2 dcl 2-10 set ref 142 144* 150* 155 245 247 249 251* 306 323 326 336* 351 370 377 380* 401 404* 428 430 432 434 436* 460 462 462 462 465 467 470* as_com_channel_info based structure level 1 dcl 1-9 ascci 000144 automatic structure level 1 dcl 43 set ref 187* 189 189 attached_to_caller 12(05) 000144 automatic bit(1) level 3 packed packed unaligned dcl 43 set ref 201* auth_user_name 23 000144 automatic char(32) level 2 packed packed unaligned dcl 43 set ref 217* auto_set_term_type_info 000435 automatic structure level 1 unaligned dcl 54 set ref 450 auto_terminal_info 000415 automatic structure level 1 unaligned dcl 53 set ref 415 baud_rate 13 based fixed bin(17,0) level 2 dcl 7-6 set ref 430* 438* baudrate 1 000207 automatic fixed bin(17,0) level 2 packed packed unaligned dcl 46 set ref 247* 253* binary builtin function dcl 94 ref 155 caller 000120 automatic char(32) packed unaligned dcl 37 set ref 121* 132* 138* 144* 150* 165* 172* 179* 192* 225* 251* 253* 269* 285* 296* 302* 319* 336* 354* 366* 380* 397* 404* 436* 438* 456* 470* 489* caller_name 1 based char(32) level 2 dcl 2-10 ref 121 channel_name 2 000144 automatic char(32) level 2 dcl 43 set ref 192* character builtin function dcl 94 ref 176 code parameter fixed bin(35,0) dcl 27 set ref 20 111 133* 139* 145* 152* 157* 166* 169* 170 172* 173* 180* 189* 190 224* 225* 234* 235 262* 263 278* 279 298* 303* 307* 320* 332* 337* 339* 353* 354 367* 381* 383* 398* 405* 407* 417* 418 457* 471* 475* 490* 492* conversion 000450 stack reference condition dcl 90 ref 148 convert_access_class_$to_string_range_short 000014 constant entry external dcl 62 ref 209 convert_access_class_$to_string_short 000012 constant entry external dcl 60 ref 213 current_access_class 21 000144 automatic bit(72) level 2 dcl 43 set ref 213* current_service_type 14 000144 automatic fixed bin(17,0) level 2 dcl 43 set ref 206* cv_dec_check_ 000016 constant entry external dcl 64 ref 323 377 401 dial_out 12(04) 000144 automatic bit(1) level 4 packed packed unaligned dcl 43 set ref 200* dial_server 12(03) 000144 automatic bit(1) level 4 packed packed unaligned dcl 43 set ref 198* dial_slave 12(01) 000144 automatic bit(1) level 4 packed packed unaligned dcl 43 set ref 195* dialed_to_caller 12(07) 000144 automatic bit(1) level 3 packed packed unaligned dcl 43 set ref 203* err 000110 automatic entry variable dcl 36 set ref 117* 132 138 144 150 165 172 225 251 296 302 319 336 366 380 397 404 436 456 470 489 error 26 based entry variable level 2 dcl 2-10 ref 117 error_table_$bad_conversion 000026 external static fixed bin(35,0) dcl 67 set ref 150* error_table_$badopt 000022 external static fixed bin(35,0) dcl 67 set ref 144* 251* 436* 470* error_table_$noarg 000024 external static fixed bin(35,0) dcl 67 set ref 132* 302* 319* 366* 397* 456* error_table_$not_open 000032 external static fixed bin(35,0) dcl 67 ref 224 error_table_$too_many_args 000030 external static fixed bin(35,0) dcl 67 set ref 138* 165* error_table_$undefined_order_request 000034 external static fixed bin(35,0) dcl 67 set ref 489* ev_channel 000142 automatic fixed bin(71,0) dcl 41 set ref 155* 157 157 169 169 176 179* event_channel 000200 automatic fixed bin(71,0) level 2 in structure "read_status" dcl 44 in procedure "tty_io_call_control_" set ref 269 269 event_channel 000204 automatic fixed bin(71,0) level 2 in structure "write_status" dcl 45 in procedure "tty_io_call_control_" set ref 285 285 flags 11 based structure level 2 in structure "set_term_type_info" packed packed unaligned dcl 8-8 in procedure "tty_io_call_control_" set ref 453* flags 12 000144 automatic structure level 2 in structure "ascci" dcl 43 in procedure "tty_io_call_control_" hbound builtin function dcl 94 ref 237 329 373 420 485 487 i 000102 automatic fixed bin(17,0) dcl 33 set ref 323* 324 377* 378 401* 402 461* 462 462 462 465 467 470* 485* 485* 487 id 000207 automatic char(4) level 2 in structure "info" dcl 46 in procedure "tty_io_call_control_" set ref 245 253* id 1 based char(4) level 2 in structure "terminal_info" packed packed unaligned dcl 7-6 in procedure "tty_io_call_control_" set ref 428 438* ignore_line_type 11(02) based bit(1) level 3 packed packed unaligned dcl 8-8 set ref 467* info 000207 automatic structure level 1 dcl 46 set ref 234 234 info_orders 000204 constant char(32) initial array packed unaligned dcl 79 ref 485 485 487 input_pending 2 000200 automatic bit(1) level 2 in structure "read_status" dcl 44 in procedure "tty_io_call_control_" set ref 265 269* input_pending 2 000204 automatic bit(1) level 2 in structure "write_status" dcl 45 in procedure "tty_io_call_control_" set ref 281 285* io_call_af_ret based varying char dcl 2-25 set ref 176* 243* 245* 247* 249* 265* 268* 281* 284* 426* 428* 430* 432* 434* io_call_info based structure level 1 dcl 2-10 io_call_infop parameter pointer dcl 2-8 ref 20 111 117 118 119 120 121 142 144 150 155 176 176 243 243 245 245 245 247 247 247 249 249 249 251 265 265 268 268 281 281 284 284 306 323 326 336 351 370 377 380 401 404 426 426 428 428 428 430 430 430 432 432 432 434 434 434 436 460 462 462 462 465 467 470 io_call_order parameter char packed unaligned dcl 26 ref 20 111 115 ioa_$rsnnl 000020 constant entry external dcl 65 ref 237 247 420 430 iocbp parameter pointer dcl 25 set ref 20 111 157* 169* 189* 234* 262* 278* 307* 332* 339* 353* 383* 407* 417* 475* 492* iox_$control 000010 constant entry external dcl 59 ref 157 169 189 234 262 278 307 332 339 353 383 407 417 475 492 lbound builtin function dcl 94 ref 237 329 373 420 length builtin function dcl 94 ref 352 line_length 000141 automatic fixed bin(9,0) dcl 40 set ref 401* 407 407 line_type 12 based fixed bin(17,0) level 2 dcl 7-6 set ref 420 420 420* 423 line_types 000000 constant char(16) initial array packed unaligned dcl 9-54 ref 373 373 374 420 420 423 login 12 000144 automatic bit(1) level 4 packed packed unaligned dcl 43 set ref 193* max_arglen 43 based fixed bin(17,0) level 2 dcl 2-10 ref 142 142 144 144 144 150 150 150 155 155 245 245 247 247 249 249 251 251 251 306 306 323 323 326 326 336 336 336 351 351 370 370 377 377 380 380 380 401 401 404 404 404 428 428 430 430 432 432 434 434 436 436 436 460 460 462 462 462 462 462 462 465 465 467 467 470 470 470 modes 000214 automatic structure level 1 dcl 49 set ref 353 353 n_args 000140 automatic fixed bin(17,0) dcl 39 set ref 120* 130 136 163 243 300 317 349 364 395 426 454 461 name 1 based char(32) level 2 packed packed unaligned dcl 8-8 set ref 452* 460* nargs 42 based fixed bin(17,0) level 2 dcl 2-10 ref 120 new_id 000107 automatic char(4) packed unaligned dcl 35 set ref 306* 307 307 new_type 000213 automatic fixed bin(35,0) dcl 47 set ref 323* 329* 330 332 332* 339 339 373* 374* 377* 383 383 not_open_sw 000100 automatic bit(1) packed unaligned dcl 31 set ref 108* 113* 222 null builtin function dcl 94 ref 492 492 order 000130 automatic char(32) packed unaligned dcl 38 set ref 119* 126 161 184 232 260 276 292 296* 313 313 345 360 391 413 446 485 489* 492 order_name 11 based char(32) level 2 dcl 2-10 ref 119 priv_attach 12(02) 000144 automatic bit(1) level 4 packed packed unaligned dcl 43 set ref 196* read_status 000200 automatic structure level 1 dcl 44 set ref 262 262 report 22 based entry variable level 2 dcl 2-10 ref 118 rpt 000114 automatic entry variable dcl 36 set ref 118* 179 192 193 195 196 198 200 201 202 203 204 206 212 216 217 253 269 285 354 438 rtrim builtin function dcl 94 ref 243 245 249 426 428 432 434 send_initial_string 11 based bit(1) level 3 packed packed unaligned dcl 8-8 set ref 462* service_type 13 000144 automatic fixed bin(17,0) level 2 dcl 43 set ref 204* set_modes 11(01) based bit(1) level 3 packed packed unaligned dcl 8-8 set ref 465* set_term_type_info based structure level 1 dcl 8-8 str 1 000214 automatic char(512) level 2 dcl 49 set ref 349* 351* 352 354* str_len 000214 automatic fixed bin(17,0) level 2 dcl 49 set ref 352* string builtin function dcl 94 set ref 453* sttip 000460 automatic pointer dcl 8-6 set ref 450* 451 452 453 460 462 465 467 475* substr builtin function dcl 94 ref 142 temp_acc 000462 automatic char(32) packed unaligned dcl 186 set ref 209* 210 210* 212* 213* 214 214* 216* temp_type 000103 automatic char(16) packed unaligned dcl 34 set ref 237* 239* 243 249 253* 326* 330 370* 374 420* 423* 434 438* term_type 2 based char(32) level 2 packed packed unaligned dcl 7-6 set ref 426 432 438* terminal_info based structure level 1 dcl 7-6 terminal_info_ptr 000456 automatic pointer dcl 7-15 set ref 415* 416 417* 420 420 420 423 426 428 430 432 438 438 438 translate builtin function dcl 94 ref 326 370 tty_dev_type 000140 constant char(8) initial array dcl 6-5 ref 237 237 239 329 329 330 tty_info based structure level 1 dcl 5-11 tty_read_status_info based structure level 1 dcl 3-17 type 3 000207 automatic fixed bin(17,0) level 2 dcl 46 set ref 237 237 237* 239 unspec builtin function dcl 94 set ref 187* 269 269 285 285 user_authenticated 12(06) 000144 automatic bit(1) level 3 packed packed unaligned dcl 43 set ref 202* version based fixed bin(17,0) level 2 in structure "set_term_type_info" dcl 8-8 in procedure "tty_io_call_control_" set ref 451* version based fixed bin(17,0) level 2 in structure "terminal_info" dcl 7-6 in procedure "tty_io_call_control_" set ref 416* version 000144 automatic char(8) level 2 in structure "ascci" dcl 43 in procedure "tty_io_call_control_" set ref 188* write_status 000204 automatic structure level 1 dcl 45 set ref 278 278 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. LINE_1050 internal static fixed bin(17,0) initial dcl 9-22 LINE_2741 internal static fixed bin(17,0) initial dcl 9-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 9-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 9-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 9-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 9-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 9-22 LINE_BSC internal static fixed bin(17,0) initial dcl 9-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 9-22 LINE_DSA internal static fixed bin(17,0) initial dcl 9-22 LINE_ETX internal static fixed bin(17,0) initial dcl 9-22 LINE_G115 internal static fixed bin(17,0) initial dcl 9-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 9-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 9-22 LINE_MC internal static fixed bin(17,0) initial dcl 9-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 9-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 9-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 9-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 9-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 9-22 LINE_TELNET internal static fixed bin(17,0) initial dcl 9-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 9-22 LINE_VIP internal static fixed bin(17,0) initial dcl 9-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 9-22 as_com_channel_info_ptr automatic pointer dcl 1-8 max_line_type internal static fixed bin(17,0) initial dcl 9-48 max_tty_type internal static fixed bin(17,0) initial dcl 6-3 n_sync_line_types internal static fixed bin(17,0) initial dcl 9-50 stti_version_1 internal static fixed bin(17,0) initial dcl 8-5 sync_line_type internal static fixed bin(17,0) initial array dcl 9-52 terminal_info_version internal static fixed bin(17,0) initial dcl 7-16 tty_get_channel_info based structure level 1 dcl 4-5 tty_get_channel_info_version internal static fixed bin(17,0) initial dcl 4-10 tty_modes_info based structure level 1 dcl 5-17 tty_old_type based fixed bin(17,0) dcl 5-4 tty_read_status_info_ptr automatic pointer dcl 3-21 tty_send_initial_string_info based structure level 1 dcl 5-6 tty_write_status_info based structure level 1 dcl 3-23 tty_write_status_info_ptr automatic pointer dcl 3-27 NAMES DECLARED BY EXPLICIT CONTEXT. JOIN 001473 constant label dcl 115 ref 109 RETURN 005705 constant label dcl 494 ref 134 140 146 153 158 167 174 181 226 not_af 003566 constant label dcl 296 ref 128 315 347 362 393 448 482 not_open 001456 constant entry external dcl 111 set_line_type 004473 constant label dcl 383 ref 374 tty_io_call_control_ 001437 constant entry external dcl 20 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 6302 6340 6112 6312 Length 6740 6112 36 363 167 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tty_io_call_control_ 538 external procedure is an external procedure. on unit on line 148 92 on unit STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tty_io_call_control_ 000100 not_open_sw tty_io_call_control_ 000101 af_sw tty_io_call_control_ 000102 i tty_io_call_control_ 000103 temp_type tty_io_call_control_ 000107 new_id tty_io_call_control_ 000110 err tty_io_call_control_ 000114 rpt tty_io_call_control_ 000120 caller tty_io_call_control_ 000130 order tty_io_call_control_ 000140 n_args tty_io_call_control_ 000141 line_length tty_io_call_control_ 000142 ev_channel tty_io_call_control_ 000144 ascci tty_io_call_control_ 000200 read_status tty_io_call_control_ 000204 write_status tty_io_call_control_ 000207 info tty_io_call_control_ 000213 new_type tty_io_call_control_ 000214 modes tty_io_call_control_ 000415 auto_terminal_info tty_io_call_control_ 000435 auto_set_term_type_info tty_io_call_control_ 000456 terminal_info_ptr tty_io_call_control_ 000460 sttip tty_io_call_control_ 000462 temp_acc tty_io_call_control_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp call_ent_var_desc call_ext_out_desc return_mac tra_ext_1 enable_op shorten_stack ext_entry_desc int_entry any_to_any_truncate_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_access_class_$to_string_range_short convert_access_class_$to_string_short cv_dec_check_ ioa_$rsnnl iox_$control THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$bad_conversion error_table_$badopt error_table_$noarg error_table_$not_open error_table_$too_many_args error_table_$undefined_order_request LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 001432 108 001452 109 001453 111 001454 113 001471 115 001473 117 001503 118 001511 119 001515 120 001520 121 001522 126 001525 128 001531 130 001533 132 001535 133 001564 134 001566 136 001567 138 001571 139 001615 140 001617 142 001620 144 001624 145 001656 146 001660 148 001661 150 001675 152 001736 153 001741 155 001744 157 001757 158 002012 161 002013 163 002017 165 002021 166 002045 167 002047 169 002050 170 002103 172 002106 173 002131 174 002133 176 002134 179 002161 180 002204 181 002206 184 002207 187 002213 188 002216 189 002220 190 002251 192 002254 193 002302 195 002321 196 002342 198 002363 200 002404 201 002425 202 002446 203 002467 204 002510 206 002527 209 002546 210 002570 212 002577 213 002621 214 002643 216 002652 217 002671 219 002710 222 002711 224 002713 225 002716 226 002732 232 002733 234 002737 235 002767 237 002772 239 003027 241 003034 243 003036 245 003065 247 003117 249 003161 251 003210 252 003242 253 003243 256 003276 260 003277 262 003303 263 003336 265 003341 268 003362 269 003376 272 003427 276 003430 278 003434 279 003466 281 003471 284 003512 285 003526 288 003557 292 003560 294 003564 296 003566 298 003615 300 003617 302 003621 303 003644 304 003646 306 003647 307 003655 309 003705 313 003706 315 003716 317 003720 319 003722 320 003745 321 003747 323 003750 324 004001 326 004004 329 004021 330 004027 332 004036 333 004067 335 004070 336 004075 337 004136 338 004140 339 004141 341 004172 345 004173 347 004177 349 004201 351 004207 352 004213 353 004215 354 004245 356 004272 360 004273 362 004277 364 004301 366 004303 367 004331 368 004333 370 004334 373 004346 374 004355 376 004363 377 004370 378 004424 380 004427 381 004470 382 004472 383 004473 387 004530 391 004531 393 004535 395 004537 397 004541 398 004567 399 004571 401 004572 402 004625 404 004630 405 004671 406 004673 407 004674 409 004727 413 004730 415 004734 416 004736 417 004740 418 004772 420 004775 423 005034 424 005042 426 005044 428 005074 430 005127 432 005172 434 005222 436 005251 437 005303 438 005304 442 005343 446 005344 448 005350 450 005352 451 005354 452 005356 453 005361 454 005362 456 005364 457 005413 458 005415 460 005416 461 005422 462 005431 465 005471 467 005502 470 005513 471 005546 474 005550 475 005552 477 005605 482 005606 485 005610 486 005623 487 005625 489 005630 490 005650 491 005652 492 005653 494 005705 ----------------------------------------------------------- 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